diff --git a/Languages/czech.lang b/Languages/czech.lang
index 30588fea..9b99a1d9 100644
--- a/Languages/czech.lang
+++ b/Languages/czech.lang
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-21 17:05+0200\n"
+"POT-Creation-Date: 2009-09-02 02:36-0400\n"
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: David Jelinek (djelinek@hotmail.com) \n"
"Language-Team: r713 - last version on http://djelinek.sweb.cz/czech.lang \n"
@@ -205,6 +205,9 @@ msgstr "Zjištuji dostupné aktualiazce"
msgid "Click to Download Covers"
msgstr "Kliknete pro stažení obalu"
+msgid "Click to change game ID"
+msgstr ""
+
msgid "Clock"
msgstr "Hodiny"
diff --git a/Languages/danish.lang b/Languages/danish.lang
index 143d688e..3e545536 100644
--- a/Languages/danish.lang
+++ b/Languages/danish.lang
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-21 17:05+0200\n"
+"POT-Creation-Date: 2009-09-02 02:36-0400\n"
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -205,6 +205,9 @@ msgstr "Leder efter opdateringer"
msgid "Click to Download Covers"
msgstr "Klik for at downloade covers"
+msgid "Click to change game ID"
+msgstr ""
+
msgid "Clock"
msgstr "Ur"
diff --git a/Languages/dutch.lang b/Languages/dutch.lang
index 987a016e..0ef18855 100644
--- a/Languages/dutch.lang
+++ b/Languages/dutch.lang
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-21 17:05+0200\n"
+"POT-Creation-Date: 2009-09-02 02:36-0400\n"
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: tj_cool\n"
"Language-Team: \n"
@@ -205,6 +205,9 @@ msgstr "Controleren op updates"
msgid "Click to Download Covers"
msgstr "Klik om hoesjes te downloaden"
+msgid "Click to change game ID"
+msgstr ""
+
msgid "Clock"
msgstr "Klok"
diff --git a/Languages/english.lang b/Languages/english.lang
index f108205e..da8bdbb9 100644
--- a/Languages/english.lang
+++ b/Languages/english.lang
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-21 04:07+0200\n"
+"POT-Creation-Date: 2009-09-02 02:36-0400\n"
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -205,6 +205,9 @@ msgstr ""
msgid "Click to Download Covers"
msgstr ""
+msgid "Click to change game ID"
+msgstr ""
+
msgid "Clock"
msgstr ""
diff --git a/Languages/finnish.lang b/Languages/finnish.lang
index b566fabe..72d0b109 100644
--- a/Languages/finnish.lang
+++ b/Languages/finnish.lang
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-21 04:07+0200\n"
+"POT-Creation-Date: 2009-09-02 02:36-0400\n"
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -205,6 +205,9 @@ msgstr ""
msgid "Click to Download Covers"
msgstr "Klikkaa ladataksesi kansia"
+msgid "Click to change game ID"
+msgstr ""
+
msgid "Clock"
msgstr "Kello"
diff --git a/Languages/french.lang b/Languages/french.lang
index fab2668f..f3ba1a2f 100644
--- a/Languages/french.lang
+++ b/Languages/french.lang
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-21 04:07+0200\n"
+"POT-Creation-Date: 2009-09-02 02:36-0400\n"
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: Kin8\n"
"Language-Team: Badablek, Amour, ikya, OuahOuah, dj_skual & Kin8\n"
@@ -205,6 +205,9 @@ msgstr "Recherche de Mise à Jour"
msgid "Click to Download Covers"
msgstr "Téléchargement des jaquettes"
+msgid "Click to change game ID"
+msgstr ""
+
msgid "Clock"
msgstr "Horloge"
diff --git a/Languages/german.lang b/Languages/german.lang
index 55a53d39..8f27e2b6 100644
--- a/Languages/german.lang
+++ b/Languages/german.lang
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-21 04:07+0200\n"
+"POT-Creation-Date: 2009-09-02 02:36-0400\n"
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -205,6 +205,9 @@ msgstr "Suche nach Aktualisierung"
msgid "Click to Download Covers"
msgstr "Klicken zum Coverdownloaden"
+msgid "Click to change game ID"
+msgstr ""
+
msgid "Clock"
msgstr "Uhr"
diff --git a/Languages/hungarian.lang b/Languages/hungarian.lang
index 00225679..b6d674ae 100644
--- a/Languages/hungarian.lang
+++ b/Languages/hungarian.lang
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-21 04:07+0200\n"
+"POT-Creation-Date: 2009-09-02 02:36-0400\n"
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: Tusk\n"
"Language-Team: \n"
@@ -205,6 +205,9 @@ msgstr "Frissitések Keresése"
msgid "Click to Download Covers"
msgstr "Kattints, hogy letöltsd a borítókat"
+msgid "Click to change game ID"
+msgstr ""
+
msgid "Clock"
msgstr "Óra"
diff --git a/Languages/italian.lang b/Languages/italian.lang
index 7ab0049a..d3c66f4e 100644
--- a/Languages/italian.lang
+++ b/Languages/italian.lang
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-21 04:07+0200\n"
+"POT-Creation-Date: 2009-09-02 02:36-0400\n"
"PO-Revision-Date: 2009-08-05 10:00+0200\n"
"Last-Translator: Cambo \n"
"Language-Team: FoxeJoe & Cambo\n"
@@ -205,6 +205,9 @@ msgstr "Verifica Aggiornamenti"
msgid "Click to Download Covers"
msgstr "Premi per scaricare le Copertine"
+msgid "Click to change game ID"
+msgstr ""
+
msgid "Clock"
msgstr "Orologio"
diff --git a/Languages/japanese.lang b/Languages/japanese.lang
index 8a246506..253e83f0 100644
--- a/Languages/japanese.lang
+++ b/Languages/japanese.lang
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-21 04:07+0200\n"
+"POT-Creation-Date: 2009-09-02 02:36-0400\n"
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -205,6 +205,9 @@ msgstr "最新版を確認中"
msgid "Click to Download Covers"
msgstr "クリックでカバーをダウンロード"
+msgid "Click to change game ID"
+msgstr ""
+
msgid "Clock"
msgstr "時計"
diff --git a/Languages/korean.lang b/Languages/korean.lang
index 652d065f..77b1ea72 100644
--- a/Languages/korean.lang
+++ b/Languages/korean.lang
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-21 04:07+0200\n"
+"POT-Creation-Date: 2009-09-02 02:36-0400\n"
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -205,6 +205,9 @@ msgstr ""
msgid "Click to Download Covers"
msgstr "표지를 다운하려면 클릭하세요"
+msgid "Click to change game ID"
+msgstr ""
+
msgid "Clock"
msgstr "시계"
diff --git a/Languages/norwegian.lang b/Languages/norwegian.lang
index 8372e521..87040c6e 100644
--- a/Languages/norwegian.lang
+++ b/Languages/norwegian.lang
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-21 17:05+0200\n"
+"POT-Creation-Date: 2009-09-02 02:36-0400\n"
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -205,6 +205,9 @@ msgstr "Søker etter oppdateringer"
msgid "Click to Download Covers"
msgstr "Klikk for å laste ned cover"
+msgid "Click to change game ID"
+msgstr ""
+
msgid "Clock"
msgstr "Klokke"
diff --git a/Languages/polish.lang b/Languages/polish.lang
index b5b819ba..1e602ade 100644
--- a/Languages/polish.lang
+++ b/Languages/polish.lang
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-21 04:07+0200\n"
+"POT-Creation-Date: 2009-09-02 02:36-0400\n"
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: ziom666 (zadania_prog@vp.pl)\n"
"Language-Team: \n"
@@ -205,6 +205,9 @@ msgstr "Sprawdzanie aktualizacji"
msgid "Click to Download Covers"
msgstr "Kliknij aby pobrac okladki"
+msgid "Click to change game ID"
+msgstr ""
+
msgid "Clock"
msgstr "Zegar"
diff --git a/Languages/portuguese_br.lang b/Languages/portuguese_br.lang
index 68c0b3a8..d02e14fa 100644
--- a/Languages/portuguese_br.lang
+++ b/Languages/portuguese_br.lang
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-21 17:05+0200\n"
+"POT-Creation-Date: 2009-09-02 02:36-0400\n"
"PO-Revision-Date: 2009-08-11 19:45\n"
"Last-Translator: boto12\n"
"Language-Team: \n"
@@ -205,6 +205,9 @@ msgstr "Procurando Atualizações"
msgid "Click to Download Covers"
msgstr "Aperte para baixar capas"
+msgid "Click to change game ID"
+msgstr ""
+
msgid "Clock"
msgstr "Relógio"
@@ -1169,4 +1172,3 @@ msgstr "de"
msgid "seconds left"
msgstr "segundos restantes"
-
diff --git a/Languages/portuguese_pt.lang b/Languages/portuguese_pt.lang
index ed19b595..696dbb90 100644
--- a/Languages/portuguese_pt.lang
+++ b/Languages/portuguese_pt.lang
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-21 17:05+0200\n"
+"POT-Creation-Date: 2009-09-02 02:36-0400\n"
"PO-Revision-Date: 2009-08-11 12:25\n"
"Last-Translator: Sky8000\n"
"Language-Team: \n"
@@ -205,6 +205,9 @@ msgstr "Procurando Actualizações"
msgid "Click to Download Covers"
msgstr "Carregue para descarregar capas"
+msgid "Click to change game ID"
+msgstr ""
+
msgid "Clock"
msgstr "Relógio"
diff --git a/Languages/russian.lang b/Languages/russian.lang
index 1613e8ed..b75cb2c2 100644
--- a/Languages/russian.lang
+++ b/Languages/russian.lang
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-21 17:05+0200\n"
+"POT-Creation-Date: 2009-09-02 02:36-0400\n"
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: Kir\n"
"Language-Team: Kir\n"
@@ -205,6 +205,9 @@ msgstr "Проверяю обновления"
msgid "Click to Download Covers"
msgstr "Нажми, чтобы скачать обложки"
+msgid "Click to change game ID"
+msgstr ""
+
msgid "Clock"
msgstr "Часы"
diff --git a/Languages/schinese.lang b/Languages/schinese.lang
index 0b2f079f..aba61d43 100644
--- a/Languages/schinese.lang
+++ b/Languages/schinese.lang
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-21 04:07+0200\n"
+"POT-Creation-Date: 2009-09-02 02:36-0400\n"
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -205,6 +205,9 @@ msgstr ""
msgid "Click to Download Covers"
msgstr "点击下载封面"
+msgid "Click to change game ID"
+msgstr ""
+
msgid "Clock"
msgstr "时钟"
diff --git a/Languages/spanish.lang b/Languages/spanish.lang
index f9c7ce9b..33d770f0 100644
--- a/Languages/spanish.lang
+++ b/Languages/spanish.lang
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-21 17:05+0200\n"
+"POT-Creation-Date: 2009-09-02 02:36-0400\n"
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -205,6 +205,9 @@ msgstr "Verificando Actualizaciones"
msgid "Click to Download Covers"
msgstr "Click para bajar Carátulas"
+msgid "Click to change game ID"
+msgstr ""
+
msgid "Clock"
msgstr "Reloj"
diff --git a/Languages/swedish.lang b/Languages/swedish.lang
index 098f66ac..d8e83467 100644
--- a/Languages/swedish.lang
+++ b/Languages/swedish.lang
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-21 17:05+0200\n"
+"POT-Creation-Date: 2009-09-02 02:36-0400\n"
"PO-Revision-Date: 2009-08-02 12:20+0200\n"
"Last-Translator: Katsurou\n"
"Language-Team: Katsurou, pirateX\n"
@@ -205,6 +205,9 @@ msgstr "Letar efter uppdateringar"
msgid "Click to Download Covers"
msgstr "Klicka för att ladda ner omslag"
+msgid "Click to change game ID"
+msgstr ""
+
msgid "Clock"
msgstr "Klocka"
diff --git a/Languages/tchinese.lang b/Languages/tchinese.lang
index f3a65b45..3f51edce 100644
--- a/Languages/tchinese.lang
+++ b/Languages/tchinese.lang
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-21 17:05+0200\n"
+"POT-Creation-Date: 2009-09-02 02:36-0400\n"
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -205,6 +205,9 @@ msgstr "正在檢查更新"
msgid "Click to Download Covers"
msgstr "點擊進行封面下載"
+msgid "Click to change game ID"
+msgstr ""
+
msgid "Clock"
msgstr "時鐘"
diff --git a/Languages/turkish.lang b/Languages/turkish.lang
index 8fb90b42..95f90910 100644
--- a/Languages/turkish.lang
+++ b/Languages/turkish.lang
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-21 04:07+0200\n"
+"POT-Creation-Date: 2009-09-02 02:36-0400\n"
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -205,6 +205,9 @@ msgstr ""
msgid "Click to Download Covers"
msgstr "Kapaklari Indirmek için Tiklayin"
+msgid "Click to change game ID"
+msgstr ""
+
msgid "Clock"
msgstr "Saat"
diff --git a/gui.pnproj b/gui.pnproj
index 9c8c1fea..dc46785d 100644
--- a/gui.pnproj
+++ b/gui.pnproj
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/source/libwbfs/libwbfs.c b/source/libwbfs/libwbfs.c
index cd1c5a9a..382fd7c2 100644
--- a/source/libwbfs/libwbfs.c
+++ b/source/libwbfs/libwbfs.c
@@ -394,96 +394,96 @@ static void free_block(wbfs_t *p,int bl)
u32 v = wbfs_ntohl(p->freeblks[i]);
p->freeblks[i] = wbfs_htonl(v | 1<wbfs_sec_sz_s-p->wii_sec_sz_s);
- wiidisc_t *d = 0;
- u8 *used = 0;
- wbfs_disc_info_t *info = 0;
- u8* copy_buffer = 0;
- used = wbfs_malloc(p->n_wii_sec_per_disc);
- if(!used)
- ERROR("unable to alloc memory");
- if(!copy_1_1)
- {
- d = wd_open_disc(read_src_wii_disc,callback_data);
- if(!d)
- ERROR("unable to open wii disc");
- wd_build_disc_usage(d,sel,used);
- wd_close_disc(d);
- d = 0;
- }
-
-
- for(i=0;imax_disc;i++)// find a free slot.
- if(p->head->disc_table[i]==0)
- break;
- if(i==p->max_disc)
- ERROR("no space left on device (table full)");
- p->head->disc_table[i] = 1;
- discn = i;
- load_freeblocks(p);
-
- // build disc info
- info = wbfs_ioalloc(p->disc_info_sz);
- read_src_wii_disc(callback_data,0,0x100,info->disc_header_copy);
-
- copy_buffer = wbfs_ioalloc(p->wii_sec_sz);
- if(!copy_buffer)
- ERROR("alloc memory");
- tot=0;
- cur=0;
- if(spinner){
- // count total number to write for spinner
- for(i=0; in_wbfs_sec_per_disc;i++)
- if(copy_1_1 || block_used(used,i,wii_sec_per_wbfs_sect)) tot += wii_sec_per_wbfs_sect;
- spinner(0,tot);
- }
- for(i=0; in_wbfs_sec_per_disc;i++){
- u16 bl = 0;
- if(copy_1_1 || block_used(used,i,wii_sec_per_wbfs_sect)) {
- u16 j;
-
- bl = alloc_block(p);
- if (bl==0xffff)
- ERROR("no space left on device (disc full)");
- for(j=0; jwbfs_sec_sz>>2)) + (j*(p->wii_sec_sz>>2));
-
- read_src_wii_disc(callback_data,offset,p->wii_sec_sz,copy_buffer);
-
- //fix the partition table
- if(offset == (0x40000>>2))
- wd_fix_partition_table(d, sel, copy_buffer);
- p->write_hdsector(p->callback_data,p->part_lba+bl*(p->wbfs_sec_sz/p->hd_sec_sz)+j*(p->wii_sec_sz/p->hd_sec_sz),
- p->wii_sec_sz/p->hd_sec_sz,copy_buffer);
- cur++;
- if(spinner)
- spinner(cur,tot);
- }
- }
- info->wlba_table[i] = wbfs_htons(bl);
- }
- // write disc info
- int disc_info_sz_lba = p->disc_info_sz>>p->hd_sec_sz_s;
- p->write_hdsector(p->callback_data,p->part_lba+1+discn*disc_info_sz_lba,disc_info_sz_lba,info);
- wbfs_sync(p);
-error:
- if(d)
- wd_close_disc(d);
- if(used)
- wbfs_free(used);
- if(info)
- wbfs_iofree(info);
- if(copy_buffer)
- wbfs_iofree(copy_buffer);
- // init with all free blocks
-
- return 0;
-}
+u32 wbfs_add_disc(wbfs_t*p,read_wiidisc_callback_t read_src_wii_disc,
+ void *callback_data,progress_callback_t spinner,partition_selector_t sel,int copy_1_1)
+{
+ int i,discn;
+ u32 tot,cur;
+ u32 wii_sec_per_wbfs_sect = 1<<(p->wbfs_sec_sz_s-p->wii_sec_sz_s);
+ wiidisc_t *d = 0;
+ u8 *used = 0;
+ wbfs_disc_info_t *info = 0;
+ u8* copy_buffer = 0;
+ used = wbfs_malloc(p->n_wii_sec_per_disc);
+ if(!used)
+ ERROR("unable to alloc memory");
+ if(!copy_1_1)
+ {
+ d = wd_open_disc(read_src_wii_disc,callback_data);
+ if(!d)
+ ERROR("unable to open wii disc");
+ wd_build_disc_usage(d,sel,used);
+ wd_close_disc(d);
+ d = 0;
+ }
+
+
+ for(i=0;imax_disc;i++)// find a free slot.
+ if(p->head->disc_table[i]==0)
+ break;
+ if(i==p->max_disc)
+ ERROR("no space left on device (table full)");
+ p->head->disc_table[i] = 1;
+ discn = i;
+ load_freeblocks(p);
+
+ // build disc info
+ info = wbfs_ioalloc(p->disc_info_sz);
+ read_src_wii_disc(callback_data,0,0x100,info->disc_header_copy);
+
+ copy_buffer = wbfs_ioalloc(p->wii_sec_sz);
+ if(!copy_buffer)
+ ERROR("alloc memory");
+ tot=0;
+ cur=0;
+ if(spinner){
+ // count total number to write for spinner
+ for(i=0; in_wbfs_sec_per_disc;i++)
+ if(copy_1_1 || block_used(used,i,wii_sec_per_wbfs_sect)) tot += wii_sec_per_wbfs_sect;
+ spinner(0,tot);
+ }
+ for(i=0; in_wbfs_sec_per_disc;i++){
+ u16 bl = 0;
+ if(copy_1_1 || block_used(used,i,wii_sec_per_wbfs_sect)) {
+ u16 j;
+
+ bl = alloc_block(p);
+ if (bl==0xffff)
+ ERROR("no space left on device (disc full)");
+ for(j=0; jwbfs_sec_sz>>2)) + (j*(p->wii_sec_sz>>2));
+
+ read_src_wii_disc(callback_data,offset,p->wii_sec_sz,copy_buffer);
+
+ //fix the partition table
+ if(offset == (0x40000>>2))
+ wd_fix_partition_table(d, sel, copy_buffer);
+ p->write_hdsector(p->callback_data,p->part_lba+bl*(p->wbfs_sec_sz/p->hd_sec_sz)+j*(p->wii_sec_sz/p->hd_sec_sz),
+ p->wii_sec_sz/p->hd_sec_sz,copy_buffer);
+ cur++;
+ if(spinner)
+ spinner(cur,tot);
+ }
+ }
+ info->wlba_table[i] = wbfs_htons(bl);
+ }
+ // write disc info
+ int disc_info_sz_lba = p->disc_info_sz>>p->hd_sec_sz_s;
+ p->write_hdsector(p->callback_data,p->part_lba+1+discn*disc_info_sz_lba,disc_info_sz_lba,info);
+ wbfs_sync(p);
+error:
+ if(d)
+ wd_close_disc(d);
+ if(used)
+ wbfs_free(used);
+ if(info)
+ wbfs_iofree(info);
+ if(copy_buffer)
+ wbfs_iofree(copy_buffer);
+ // init with all free blocks
+
+ return 0;
+}
u32 wbfs_rm_disc(wbfs_t*p, u8* discid)
{
@@ -525,6 +525,22 @@ u32 wbfs_ren_disc(wbfs_t*p, u8* discid, u8* newname)
return 0;
}
+u32 wbfs_rID_disc(wbfs_t*p, u8* discid, u8* newID)
+{
+ wbfs_disc_t *d = wbfs_open_disc(p,discid);
+ int disc_info_sz_lba = p->disc_info_sz>>p->hd_sec_sz_s;
+
+ if(!d)
+ return 1;
+
+ memset(d->header->disc_header_copy, 0, 0x10);
+ strncpy((char *) d->header->disc_header_copy, (char *) newID, 0x9);
+
+ p->write_hdsector(p->callback_data,p->part_lba+1+d->i*disc_info_sz_lba,disc_info_sz_lba,d->header);
+ wbfs_close_disc(d);
+ return 0;
+}
+
// trim the file-system to its minimum size
u32 wbfs_trim(wbfs_t*p);
@@ -557,64 +573,64 @@ u32 wbfs_extract_disc(wbfs_disc_t*d, rw_sector_callback_t write_dst_wii_sector,v
error:
return 1;
}
-u32 wbfs_extract_file(wbfs_disc_t*d, char *path);
-
-float wbfs_estimate_disc
-(
- wbfs_t *p, read_wiidisc_callback_t read_src_wii_disc,
- void *callback_data,
- partition_selector_t sel)
-{
- u8 *b;
- int i;
- u32 tot;
- u32 wii_sec_per_wbfs_sect = 1 << (p->wbfs_sec_sz_s-p->wii_sec_sz_s);
- wiidisc_t *d = 0;
- u8 *used = 0;
- wbfs_disc_info_t *info = 0;
-
- tot = 0;
-
- used = wbfs_malloc(p->n_wii_sec_per_disc);
- if (!used)
- {
- ERROR("unable to alloc memory");
- }
-
- d = wd_open_disc(read_src_wii_disc, callback_data);
- if (!d)
- {
- ERROR("unable to open wii disc");
- }
-
- wd_build_disc_usage(d,sel,used);
- wd_close_disc(d);
- d = 0;
-
- info = wbfs_ioalloc(p->disc_info_sz);
- b = (u8 *)info;
- read_src_wii_disc(callback_data, 0, 0x100, info->disc_header_copy);
-
- //fprintf(stderr, "estimating %c%c%c%c%c%c %s...\n",b[0], b[1], b[2], b[3], b[4], b[5], b + 0x20);
-
- for (i = 0; i < p->n_wbfs_sec_per_disc; i++)
- {
- if (block_used(used, i, wii_sec_per_wbfs_sect))
- {
- tot++;
- }
- }
- //memcpy(header, b,0x100);
-
-error:
- if (d)
- wd_close_disc(d);
-
- if (used)
- wbfs_free(used);
-
- if (info)
- wbfs_iofree(info);
-
- return tot * (((p->wbfs_sec_sz*1.0) / p->hd_sec_sz) * 512);
+u32 wbfs_extract_file(wbfs_disc_t*d, char *path);
+
+float wbfs_estimate_disc
+(
+ wbfs_t *p, read_wiidisc_callback_t read_src_wii_disc,
+ void *callback_data,
+ partition_selector_t sel)
+{
+ u8 *b;
+ int i;
+ u32 tot;
+ u32 wii_sec_per_wbfs_sect = 1 << (p->wbfs_sec_sz_s-p->wii_sec_sz_s);
+ wiidisc_t *d = 0;
+ u8 *used = 0;
+ wbfs_disc_info_t *info = 0;
+
+ tot = 0;
+
+ used = wbfs_malloc(p->n_wii_sec_per_disc);
+ if (!used)
+ {
+ ERROR("unable to alloc memory");
+ }
+
+ d = wd_open_disc(read_src_wii_disc, callback_data);
+ if (!d)
+ {
+ ERROR("unable to open wii disc");
+ }
+
+ wd_build_disc_usage(d,sel,used);
+ wd_close_disc(d);
+ d = 0;
+
+ info = wbfs_ioalloc(p->disc_info_sz);
+ b = (u8 *)info;
+ read_src_wii_disc(callback_data, 0, 0x100, info->disc_header_copy);
+
+ //fprintf(stderr, "estimating %c%c%c%c%c%c %s...\n",b[0], b[1], b[2], b[3], b[4], b[5], b + 0x20);
+
+ for (i = 0; i < p->n_wbfs_sec_per_disc; i++)
+ {
+ if (block_used(used, i, wii_sec_per_wbfs_sect))
+ {
+ tot++;
+ }
+ }
+ //memcpy(header, b,0x100);
+
+error:
+ if (d)
+ wd_close_disc(d);
+
+ if (used)
+ wbfs_free(used);
+
+ if (info)
+ wbfs_iofree(info);
+
+ return tot * (((p->wbfs_sec_sz*1.0) / p->hd_sec_sz) * 512);
}
diff --git a/source/menu.cpp b/source/menu.cpp
index bab516f4..bde6b3a1 100644
--- a/source/menu.cpp
+++ b/source/menu.cpp
@@ -593,13 +593,30 @@ int MenuDiscList() {
DownloadBtn.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
DownloadBtn.SetPosition(THEME.cover_x,THEME.cover_y);
+ GuiTooltip IDBtnTT(tr("Click to change game ID"));
+ if (Settings.wsprompt == yes)
+ IDBtnTT.SetWidescreen(CFG.widescreen);
+ IDBtnTT.SetAlpha(THEME.tooltipAlpha);
+ GuiButton idBtn(0,0);
+ idBtn.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
+ idBtn.SetPosition(THEME.id_x,THEME.id_y);
+
+
+
if (Settings.godmode == 1) {//only make the button have trigger & tooltip if in godmode
DownloadBtn.SetSoundOver(&btnSoundOver);
DownloadBtn.SetTrigger(&trigA);
DownloadBtn.SetTrigger(&trig1);
DownloadBtn.SetToolTip(&DownloadBtnTT,205,-30);
+
+ idBtn.SetSoundOver(&btnSoundOver);
+ idBtn.SetTrigger(&trigA);
+ idBtn.SetToolTip(&IDBtnTT,205,-30);
} else
+ {
DownloadBtn.SetRumble(false);
+ idBtn.SetRumble(false);
+ }
GuiGameBrowser * gameBrowser = NULL;
GuiGameGrid * gameGrid = NULL;
@@ -645,6 +662,7 @@ int MenuDiscList() {
w.Append(&homeBtn);
w.Append(&settingsBtn);
w.Append(&DownloadBtn);
+ w.Append(&idBtn);
w.Append(&favoriteBtn);
w.Append(&abcBtn);
w.Append(&countBtn);
@@ -1014,7 +1032,6 @@ int MenuDiscList() {
if (choice==2)
homeBtn.SetState(STATE_CLICKED);
}
-
if (Settings.gameDisplay==grid) {
int selectimg;
DownloadBtn.SetSize(0,0);
@@ -1034,6 +1051,7 @@ int MenuDiscList() {
//Get selected game under cursor
int selectimg;
DownloadBtn.SetSize(160,224);
+ idBtn.SetSize(100,40);
selectimg = gameBrowser->GetSelectedOption();
gameSelected = gameBrowser->GetClickedOption();
@@ -1051,7 +1069,7 @@ int MenuDiscList() {
w.Remove(&DownloadBtn);
if (GameIDTxt) {
- w.Remove(GameIDTxt);
+ w.Remove(&idBtn);
delete GameIDTxt;
GameIDTxt = NULL;
}
@@ -1120,9 +1138,10 @@ int MenuDiscList() {
if ((Settings.sinfo == GameID) || (Settings.sinfo == Both)) {
GameIDTxt = new GuiText(IDfull, 22, (GXColor) {THEME.info_r, THEME.info_g, THEME.info_b, 255});
GameIDTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
- GameIDTxt->SetPosition(THEME.id_x,THEME.id_y);
- GameIDTxt->SetEffect(EFFECT_FADE, 20);
- w.Append(GameIDTxt);
+ //GameIDTxt->SetPosition(THEME.id_x,THEME.id_y);
+ idBtn.SetEffect(EFFECT_FADE, 20);
+ idBtn.SetLabel(GameIDTxt);
+ w.Append(&idBtn);
}
if ((Settings.sinfo == GameRegion) || (Settings.sinfo == Both)) {
@@ -1134,6 +1153,22 @@ int MenuDiscList() {
}
}
}
+
+ if (idBtn.GetState() == STATE_CLICKED) {
+ struct discHdr * header = &gameList[gameBrowser->GetSelectedOption()];
+ //enter new game ID
+ char entered[10];
+ snprintf(entered, sizeof(entered), "%s", IDfull);
+ //entered[9] = '\0';
+ int result = OnScreenKeyboard(entered, 7,0);
+ if (result == 1) {
+ WBFS_ReIDGame(header->id, entered);
+ //__Menu_GetEntries();
+ menu = MENU_DISCLIST;
+ }
+
+ idBtn.ResetState();
+ }
}
if ((gameSelected >= 0) && (gameSelected < (s32)gameCnt)) {
diff --git a/source/usbloader/wbfs.c b/source/usbloader/wbfs.c
index 673992d0..f84d2fe1 100644
--- a/source/usbloader/wbfs.c
+++ b/source/usbloader/wbfs.c
@@ -476,6 +476,19 @@ s32 WBFS_RenameGame(u8 *discid, const void *newname) {
return 0;
}
+s32 WBFS_ReIDGame(u8 *discid, const void *newID) {
+ s32 ret;
+
+ /* No USB device open */
+ if (!hdd)
+ return -1;
+ ret = wbfs_rID_disc(hdd, discid,(u8*)newID);
+ if (ret < 0)
+ return ret;
+
+ return 0;
+}
+
f32 WBFS_EstimeGameSize(void) {
return wbfs_estimate_disc(hdd, __WBFS_ReadDVD, NULL, ONLY_GAME_PARTITION);
diff --git a/source/usbloader/wbfs.h b/source/usbloader/wbfs.h
index a942de11..4846f310 100644
--- a/source/usbloader/wbfs.h
+++ b/source/usbloader/wbfs.h
@@ -32,6 +32,7 @@ extern "C" {
s32 WBFS_GameSize(u8 *, f32 *);
s32 WBFS_DiskSpace(f32 *, f32 *);
s32 WBFS_RenameGame(u8 *, const void *);
+ s32 WBFS_ReIDGame(u8 *discid, const void *newID);
f32 WBFS_EstimeGameSize(void);
s32 __WBFS_ReadUSB(void *fp, u32 lba, u32 count, void *iobuf);