Commits

Michael Jimenez committed beadd6c

a few fixes so that OPL can comply with some Digitus NAS (with the help of Thinner), removed obsoletes language files and added 'Filipino' language file

Comments (0)

Files changed (31)

 LOADER_OBJS = obj/loader.o \
 		obj/alt_loader.o obj/elfldr.o obj/kpatch_10K.o obj/imgdrv.o obj/eesync.o \
 		obj/usb_cdvdman.o obj/usb_4Ksectors_cdvdman.o obj/smb_cdvdman.o obj/smb_pcmcia_cdvdman.o obj/hdd_cdvdman.o obj/hdd_pcmcia_cdvdman.o \
-		obj/cdvdfsv.o obj/usbd_ps2.o obj/usbd_ps3.o obj/usbhdfsd.o obj/cddev.o eeload_patches/eeload_patches.o \
+		obj/cdvdfsv.o obj/usbd_ps2.o obj/usbd_ps3.o obj/usbhdfsd.o obj/cddev.o \
 		obj/ps2dev9.o obj/smsutils.o obj/smstcpip.o obj/ingame_smstcpip.o obj/smsmap.o obj/smbman.o obj/discid.o \
 		obj/ps2atad.o obj/poweroff.o obj/ps2hdd.o obj/genvmc.o obj/hdldsvr.o obj/udptty.o obj/iomanx.o obj/filexio.o \
 		obj/ps2fs.o obj/util.o obj/ioptrap.o obj/ps2link.o

eeload_patches/eeload_patches.o

Binary file removed.

include/menusys.h

 void menuPrevH();
 void menuNextV();
 void menuPrevV();
+void menuNextPage();
+void menuPrevPage();
+void menuFirstPage();
+void menuLastPage();
 struct menu_item_t* menuGetCurrent();
 GSTEXTURE* menuGetCurrentArt();
 void menuItemExecButton(void (*execActionButton)(struct menu_item_t *self, int id));

include/supportbase.h

 } base_game_info_t;
 
 int sbIsSameSize(const char* prefix, int prevSize);
-void sbReadList(base_game_info_t **list, const char* prefix, const char* sep, int *fsize, int* gamecount);
+void sbReadList(base_game_info_t **list, const char* prefix, int *fsize, int* gamecount);
 int sbPrepare(base_game_info_t* game, int mode, char* isoname, int size_cdvdman, void** cdvdman_irx, int* patchindex);
 void sbDelete(base_game_info_t **list, const char* prefix, const char* sep, int gamecount, int id);
 void sbRename(base_game_info_t **list, const char* prefix, const char* sep, int gamecount, int id, char* newname);
 int getFileSize(int fd);
 int openFile(char* path, int mode);
 void* readFile(char* path, int align, int* size);
+void checkCreateDir(char* path);
 int listDir(char* path, char* separator, int maxElem,
 		int (*readEntry)(int index, char *path, char* separator, char* name, unsigned int mode));
 

lng/lang_Bulgarian.lng

-# translation by Savov, updated by Vsub
+# translation by vsub
 Bulgarian
                Добре дошли в OPEN PS2 LOADER. Кодът е базиран на  HD PROJECT <http://psx-scene.com> Адаптация на USB ADVANCE формата и инсталатора от IFCARO <http://ps2dev.ifcaro.net> Ядрото на програмата е от JIMMIKAELKAEL. Интерфейс от VOLCA. Благодарим ви, че ползвате програмата ни
 Open PS2 Loader %s
-Конфигурация на изглед
-IP конфигурация
-Запази промени
+Запамети промените
 O Назад
-Бавно меню
-Бързо меню
-Много бързо меню
-Динамично меню
-Статично меню
-Настройка на изглед
-Настройка на мрежата
-Избор на език
-Няма игри
-Не е налично
-Настройките са запазени...
-Грешка при запис!
+Настроики на мрежата
+<no values>
+Настроиките са запаметени...
+Грешка при запаметяване на настоиките
 Изход
-Настройки
-Игри от ЮСБ
-Игри от Хард Диск
-Игри от Мрежа
+Настроики
+USB Игри
+HDD Игри
+Игри по мрежата
 Програми
-Теми
+Скин
 Език
-Език: Български
-Стартирай мрежа
-Зареждане на мрежа:
-Грешка при зареждане на мрежа
-Автоматично стартиране на мрежа
+Грешка при стартирване на мрежата
 Включено
 Изключено
 Ок
-Настройка на съвместимост
-Изтриване на всички настройки
-Изтриване на игрови настройки
-Скорост на скролиране
-Вид на менюто
+Настроики за играта
+Премахни всички настроики
+Премахни всички настоики за играта
+Скролиране
 Бавно
+Нормално
 Бързо
-Много бързо
-Статично
-Динамично
-Меню при старт
+Лист при стартирване
 Зареди от диска
 Моля изчакаите
-Грешка при заредането на Game ID
-Използваи хард диска
-Автоматично стартиране на хард диска
-Стартираи хард диска
-Автоматично сортиране
+Грешка при зареждане на ИД на играта
+Автоматично сортирване
 Грешка при зареждането на езиковия фаил
-Изключи Debug цветовете
-Няма свързан контролер...
-Включи Cover Art
-Широк екран
+Изключи дебуг цветовете
+Не е открит геимпад
+Ползваи обложки
+Широк екран
+Изкючи конзолата
+Зареждане на настроиките
+Запаметяване на настроиките
+Стартираи устроиството
+USB - режим на стартиране
+HDD - режим на стартиране
+ETH - режим на стартиране
+Програми - режим на стартиране
+Автоматично
+Ръчно
+Стартираи HDL сървъра
+HDL се стартирва...
+HDL сървъра работи... Задръжте [O] за да го спрете
+Задръжте [X] за да изключите HDL сървъра
+HDL сървъра се изключва...
+При изход,стартираи
+Цвят на фона
+Цвят на текста
+IP
+Mask
+Gateway
+Порт
+Шерната папка
+Юзър
+Парола
+<не е нагласено>
+X Потвърди
+Играта/фаила ще бъде необратимо изтрит, съгласни ли сте ?
+Преименуваи
+Изтрии
+Стартираи
+Настройки на дисплея
+Ползваи опциите триене и преименуване
+Проверяваи USB играта за фрагментация
+Запомни последната стартирана игра
+Грешка, играта е фрагментирана
+Грешка при опит за стартирване
+Тестваи
+Остави празно за достъп тип гост
+Зареди алтернаивно ядро
+Алтернативан начин на четене
+Unhook Syscalls
+Без PSS видеота
+Изключи DVD-DL поддържката
+Изключи IGR
+Намали cdvdfsv буфера
+Скрии dev9 модула
+Алтернативно IGR комбо
+Ако премените размера ще форматирате VMC
+Създаи
+Промени
+Отказ
+Реинициализира
+Ползваи стандартна VMC
+Нагласи VMC
+Име
+Размер
+Статус
+Прогрес
+VMC фаила съществува
+Неправилно име на VMC фаила, размера е неправилен
+VMC трябва да се създаде
+Грешка със VMC фаила, продължи със физическата MC ?

lng/lang_Czech.lng

-Czech
-               VITEJTE V PROGRAMU OPEN PS2 LOADER. ZALOZENO NA ZDROJ. KODECH PROJEKTU HD PROJECT <http://psx-scene.com> ADAPTACE NA USB ADVANCE FORMAT A PRVOTNI GUI STVORIL IFCARO <http://ps2dev.ifcaro.net> VETSINU KODU LOADERU SEPSAL JIMMIKAELKAEL. PRIDAVNE PRACE NA GUI PROVEDL VOLCA. DEKUJEME ZE POUZIVATE TENTO PROGRAM ^^
-Open PS2 Loader %s
-Nastaveni vzhledu
-IP configuration
-Ulozit zmeny
-O Zpet
-Posuv Pomaly
-Posuv Stredni
-Posuv Rychly
-Dynamicke Menu
-Staticke Menu
-Nastaveni vzhledu
-Nastaveni site
-Volba jazyka
-Zadne Polozky
-Neni doposud k dispozici
-Nastaveni ulozeno...
-Chyba Pri ukladani zmen!
-Konec
-Nastaveni
-USB Hry
-HDD Hry
-Sitove Hry
-Aplikace
-Vzhled
-Jazyk
-Language: Czech
-Spustit sit
-Nacitani site: %d
-Chyba pri spousteni site
-Automaticke spusteni site
-Zap
-Vyp
-Ok
-Nastaveni kompatibility
-Odstranit vsechna nastaveni
-Vsechna nastaveni hry odstranena
-Posuv
-Typ menu
-Pomalu
-Stredne
-Rychle
-Staticke
-Dynamicke
-Vychozi nabidka
-Nacist z disku
-Prosim cekejte
-Chyba pri nacitani Game ID
-Pouzivat Pevny Disk
-Automaticky spoustet HDD
-Start HDD
-Automaticke razeni
-Chyba pri nacitani lokalizace

lng/lang_Dutch.lng

-Dutch
-               WELKOM BIJ DE OPEN PS2 LOADER. BASIS CODE GEBASEERD OP DE SOURCE CODES VAN HD PROJECT <http://psx-scene.com> TOEVOEGING VAN USB ADVANCE FORMAAT EN HET BEGIN VAN DE GUI GEMAAKT DOOR IFCARO <http://ps2dev.ifcaro.net> HET MEESTE VAN DE LAAD CORE IS GEMAAKT DOOR JIMMIKAELKAEL. ALLE GUI VERBETERINGEN ZIJN GEMAAKT DOOR VOLCA. BEDANKT DAT JE ONS PROGRAMMA GEBRUIKT ^^
-Open PS2 Loader %s
-Thema configuratie
-IP configuratie
-Bewaar veranderingen
-O Terug
-Scroll Langzaam
-Scroll Normaal
-Scroll Snel
-Dynamisch Menu
-Statisch Menu
-Configureer thema
-Netwerk configuratie
-Selecteer taal
-Geen Items
-Nog niet beschikbaar
-Instellingen bewaard...
-Fout bij schrijven van instellingen!
-Sluiten
-Instellingen
-USB Spellen
-HDD Spellen
-Netwerk Spellen
-Applicaties
-Thema
-Taal
-Taal: Nederlands
-Start netwerk
-Netwerk laden: %d
-Netwerk start fout
-Netwerk automatisch laden
-Aan
-Uit
-Ok
-Compatibiliteit instellingen
-Verwijder alle instellingen
-Alle keys voor de spellen verwijderd
-Scrollen
-Menu type
-Langzaam
-Normaal
-Snel
-Statisch
-Dynamisch
-Standard menu
-Laad van Disc
-Even Wachten
-Fout bij laden van de Game ID

lng/lang_Filipino.lng

+# translation by Ceed Lorenzo <Ceedlorenzo@yahoo.com>
+Filipino
+               MALIGAYANG PAGGAMIT NG OPEN PS2 LOADER. MAIN CODE AY BASE SA SOURCE CODE NG HD PROJECT <http://psx-scene.com> ADAPTATION SA FORMAT NG USB ADVANCE AT PANGUNAHING GUI NI IFCARO <http://ps2dev.ifcaro.net> KARAMIHAN SA LOADER CORE AY GAWA NI JIMMIKAELKAEL. LAHAT NG PAGBABAGO SA GUI AY GAWA NI VOLCA. MARAMING SALAMAT SA PAGGAMIT NG AMING PROGRAM ^^
+Open PS2 Loader %s
+I-save ang mga pagbabago
+O Bumalik
+Network config
+<walang laman>
+Settings ay Nai-save...
+Error sa pagsulat ng Settings!
+Lamabas
+Settings
+Laro sa USB
+Laro sa HDD
+Laro sa Network
+Apps
+Tema
+Wika
+Error sa Pagsisimula ng Network
+On
+Off
+Ok
+Setting ng Game
+Tangalin lahat ng Settings
+Tangalin lahat ng keys para sa Laro
+Scrolling
+Mabagal
+Katamtaman
+Mabilis
+Default na menu
+Kunin galing sa disc
+Maghintay ng Sandali
+Error sa Pagkuha ng Game ID
+Automatikong Pagsasaayos
+Error sa pagload ng file para sa wika
+Huwag paganahin ang Debug Colors
+Walang napansing controller, naghihintay...
+Paganahin ang Cover Art
+Wide screen
+Patayin
+Niloload ang config
+sini-save config
+Simulan ang Aparato
+Mode para simulan ang USB Device
+Mode para simulan ang HDD Device
+Mode para simulan ang ETH Device
+Mode sa pagsisimula ng Application
+Auto
+Manual
+Simulan ang HDL Server
+HDL Server ay nagsisimula...
+HDL Server ay tumatakbo... Pindutin ang [O] para itigil
+pindutin ang [X] para patayin ang HDL server
+HDL Server ay tinatangal...
+Lamabas sa 
+Kulay ng Background
+Kulay ng Texto
+IP
+Mask
+Gateway
+Port
+Share
+User
+Password
+<hindi nakatakda>
+X Tangapin
+Item ay permanenteng buburahin, magpatuloy ?
+palitan ang pangalan
+Burahin
+Patakbuhin
+Setting ng Display
+Paganhin ang pagbubura at pagpapalit ng pangalan
+Alamin ang fragmentation ng Laro sa USB
+Alalahanin ang huling nalaro
+Error, ang laro ay fragmented
+Error, ang item ay hindi maitakbo
+Subukan
+Iwanang walang laman para sa GUEST auth.
+Load alternate core
+Kapalit na data read method
+Unhook Syscalls
+0 PSS mode
+Huwag paganahin ang DVD-DL
+Huwag paganahin ang IGR
+Bawasan ang cdvdfsv buffer
+Itago ang dev9 module
+Kapalit na IGR combo
+Pagpalit ng laki ay magrereformat ng VMC
+Gumawa
+Baguhin
+Iurong
+Reset
+Gumamit ng generic
+IConfigure ang VMC
+Pangalan
+Laki
+Katayuan
+Progreso
+Mayroon ng VMC file
+Maling VMC file, hindi tama ang laki
+Kailangang magawan ng VMC file
+Error sa VMC file, magpatuloy sa pisikal na MC ?

lng/lang_German.lng

-German
-               WILLKOMMEN BEIM OPEN PS2 LOADER. DAS HAUPTPROGRAMM BASIERT AUF DEM QUELLCODE DES HD PROJEKTS <http://psx-scene.com> PORTIERUNG IN DAS USB ADVANCE FORMAT UND STANDARD GUI BY IFCARO <http://ps2dev.ifcaro.net> DAS MEISTE DES LOADER PROGRAMMS IST VON JIMMIKAELKAEL PROGRAMMIERT. ALLE GUI ERWEITERUNGEN WURDEN VON VOLCA ERSTELLT. DANKE FÜR DAS BENUTZEN UNSERES PROGRAMMS ^^
-Open PS2 Loader %s
-Anderungen speichern
-O Zurück
-Netzwerk Einstellungen
-Keine Items
-Einstellungen gespeichert...
-Fehler beim speichern der Einstellungen!
-Ausgang
-Einstellungen
-USB Spiele
-HDD Spiele
-Netzwerk Spiele
-Programme
-Theme
-Sprache
-Fehler beim starten des Netzwerks
-An
-Aus
-Ok
-Kompatibilitäts Einstellungen
-Entferne alle Einstellungen
-Alle Einstellungen des Spiels entfernt
-Scrolling
-Langsam
-Normal
-Schnell
+# translation by the ps3-tools.de community  
+Deutsch
+               WILLKOMMEN BEIM OPEN PS2 LOADER. DER MAIN CODE BASIERT AUF DEM SOURCE CODE VOM HD PROJECT <http://psx-scene.com> ANGEPASST AUF DAS USB ADVANCE FORMAT UND ERSTEM GUI BY IFCARO <http://ps2dev.ifcaro.net> DER GRÖSSTE ANTEIL VOM LOADER CORE IST VON JIMMIKAELKAEL GESCHRIEBEN. ALLE VERBESSRUNGEN AN DEM GUI WURDEN VON VOLCA VORGENOMMEN. VIELEN DANK DAS DU UNSER PROGRAMM NUTZT ^^
+Open PS2 Loader %s
+Änderungen Speichern
+O Zurück
+Netzwerk Einstellungen
+<kein Wert>
+Änderungen gespeichert...
+Fehler beim speichern der Einstellungen
+Ausgang
+Einstellungen
+USB Spiele
+HDD Spiele
+Network Spiele
+Programme
+Theme
+Sprache
+Fehler beim Starten des Netzwerkes
+An
+Aus
+Ok
+Spiele Einstellungen
+Verwerfe alle Einstellungen
+Entferne alle Einstellungen des Spiels
+Scrollen
+Langsam
+Mittel
+Schnell
+Grundeinstellungen
+Von Disk laden
+Bitte warten
+Fehler beim Laden der Spiel ID
+Automatisches Scrollen
+Fehler beim Laden des Sprachfiles
+Debug Farben ausschalten
+Kein Controler gefunden, ich warte...
+Aktiviere Cover Art
+Wide Screen
+Ausschalten
+Konfiguration laden
+Konfiguration speichern
+Starte Gerät
+USB Geräte Start Modus
+Interne Festplatte Start Modus
+Netzwerk Start Modus
+Programm Start Modus
+Automatisch
+Anleitung
+Starte HDL Server
+HDL Server startet...
+HDL Server läuft... Drücke [O] um zu stoppen
+Druecke [X] um den HDL Server zu schließen
+HDL Server wird gestoppt...
+Verlassen zu
+Hintergrundfarbe
+Textfarbe
+IP Adresse
+Netzwerkmaske
+Gateway
+Port
+Share
+User
+Passwort
+<keine Eingabe>
+X Bestätigen
+Das Item wird endgültig gelöscht ! fortfahren ?
+Umbennnen
+Löschen
+Starten
+Display Einstellungen
+Löschen und umbennen aktivieren
+USB Spiel Fragmentierung überprüfen
+Zuletzt gespieltes Spiel merken
+Fehler ! Das Spiel ist fragmentiert
+Fehler ! kann das Item nicht starten
+Test
+Frei lassen für Gäste Modus.
+Alternativen Kern laden
+Alternativer Daten Lese Modus
+Syscalls entladen
+0 PSS mode
+Deaktiviere DVD-DL
+Deaktiviere IGR
+Verkleinere cdvdfsv buffer
+Verstecke dev9 Module
+Alternative IGR Combo
+Durch das Verändern der Größe wird die VMC erneut formatiert
+Erstellen
+Verändern
+Abbrechen
+Reset
+Benutze generic
+Konfiguriere VMC
+Name
+Größe
+Status
+Fortschritt
+VMC File vorhanden
+Defekter VMC File, die Größe ist falsch
+VMC File muss erstellt werden
+Fehler mit dem VMC File ? mit echter MC fortfahren ?

lng/lang_Indonesian.lng

+# translation by Satrio Bahar
 Indonesian
                SELAMAT DATANG DI OPEN PS2 LOADER. KODE UTAMA BERDASARKAN SUMBER KODE DARI HD PROJECT <http://psx-scene.com> DI ADAPTASI UNTUK FORMAT USB ADVANCE DAN GUI UTAMA DIBUAT OLEH IFCARO <http://ps2dev.ifcaro.net> SEBAGIAN BESAR CORE DIBUAT OLEH JIMMIKAELKAEL. SEMUA PERBAIKAN GUI DIBUAT OLEH VOLCA. TERIMA KASIH TELAH MENGGUNAKAN PROGRAM KAMI ^^
 Open PS2 Loader %s
-Konfigurasi tema
-Konfigurasi IP
 Simpan perubahan
 O Kembali
-Gulung Lambat
-Gulung Normal
-Gulung Cepat
-Menu Dinamis
-Menu Statis
-Mengatur tema
 Konfigurasi jaringan
-Pilih bahasa
-Tidak ada data
-Belum tersedia
+<kosong>
 Pengaturan disimpan...
 Gagal menulis pengaturan!
 Keluar
 Pengaturan
-Game-Game USB
-Game-Game HDD
-Game-Game Jaringan
-Aplikasi
+Daftar game USB
+Daftar game HDD
+Daftar game jaringan
+Daftar Aplikasi
 Tema
 Bahasa
-Bahasa: Bahasa Indonesia
-Mulai Jaringan
-Memuat jaringan: %d
-Gagal memulai jaringan
-jaringan memulai otomatis
-On
-Off
+Kesalahan memulai jaringan
+Aktif
+Tidak aktif
 Oke
-Pengaturan kompatibilitas
+Pengaturan game
 Hapus semua pengaturan
-Hapus semua pengaturan gamee
+Hapus semua pengaturan game
 Perputaran
-Tipe menu
 Lambat
-Normal
+Sedang
 Cepat
-Statis
-Dinamis
+Menu pertama
+Baca dari piringan
+Silahkan tunggu
+Kesalahan saat memuat ID game
+Penyortiran otomatis
+Kesalahan memuat file bahasa
+Matikan warna debug
+Tidak ada kontrol dideteksi, Menunggu...
+Memungkinkan tampil sampul game
+Layar lebar
+Matikan PS2
+Memuat konfigurasi
+Menyimpan konfigurasi
+Memulai perangkat
+Pola memulai perangkat USB
+Pola memulai perangkat HDD
+Pola memulai perangkat ETH
+Pola memulai Aplikasi
+Otomatis
+Manual
+Memulai HDL Server
+HDL Server dimulai...
+HDL Server berjalan... Tekan [O] untuk berhenti
+Tekan [X] tuk mengakhiri HDL server
+HDL Server Unloading...
+Keluar ke
+Warna latar
+Warna tulisan
+IP
+Mask
+Gateway
+Port
+Share
+User
+Password
+<Tidak terpakai>
+X Setuju
+Item akan dihapus selamanya, Lanjutkan ?
+Ubah nama
+Hapus
+Main
+Pengaturan tampilan
+Memungkinkan operasi hapus dan ubah nama item
+Periksa fragmentasi game USB
+Ingat game yang terakhir dimainkan
+Kesalahan, Game terfragmentasi
+Kesalahan, Item tidak bisa jalan
+Coba
+Biarkan kosong untuk penulis TAMU
+Memuat alternatif inti
+Metode alternatif membaca data
+Lepaskan Syscalls
+0 PSS mode
+Matikan DVD_DL
+Matikan IGR
+Kurangi buffer cdvdfsv
+Sembunyikan modul Dev9
+IGR combo pengganti
+Rubah ukuran format kembali VMC
+Ciptakan
+Modifikasi
+Batalkan
+Ulangi
+Gunakan yang umum
+Konfigurasi VMC
+Nama
+Ukuran
+Status
+Kemajuan
+VMC ada
+VMC Cacat, ukuran yang salah
+VMC perlu diciptakan
+Kesalahan pada VMC, lanjutkan dengan MC fisik ?

lng/lang_Italian.lng

-# translation by jimmikaelkael, updated by 0NullChAr0
+# translation by 0NullChAr0
 Italian
                WELCOME TO OPEN PS2 LOADER. MAIN CODE BASED ON SOURCE CODE OF HD PROJECT <http://psx-scene.com> ADAPTATION TO USB ADVANCE FORMAT AND INITIAL GUI BY IFCARO <http://ps2dev.ifcaro.net> MOST OF LOADER CORE IS MADE BY JIMMIKAELKAEL. ALL THE GUI IMPROVEMENTS ARE MADE BY VOLCA. THANKS FOR USING OUR PROGRAM ^^
 Open PS2 Loader %s
 Attivato
 Disattivato
 OK
-Impostazioni compatibilita'
+Impostazioni Gioco
 Rimuovi tutte le impostazioni
 Tutte le impostazioni del gioco sono state rimosse
 Scorrimento
 L'oggetto sara' cancellato definitivamente, continuare?
 Rinomina
 Cancella
-Avvia
+Avvia
+Impostazioni Schermo
+Abilita operazioni di Elimina e Rinomina
+Controlla frammentazione Gioco USB
+Ricorda ultimo gioco Avviato
+Errore, il gioco e' frammentato
+Errore, impossibile avviare l'oggetto
+Testa
+Lasciare vuoto per Autorizzazioni GUEST
+Carica Nucleo Alternativo
+Metodo lettura data alternativo
+Sgancia chiamate Sistema
+PSS Disabilitati
+Disabilita DVD-DL
+Disabilita IGR
+Riduci buffer cdvdfsv
+Nascondi modulo dev9
+Combo IGR alternato
+Cambiare le dimensioni della VMC
+Creare
+Modifica
+Annulla
+Resetta
+Usa generico
+Configura VMC
+Nome
+Dimensione
+Stato
+Progresso
+File VMC esiste
+File VMC invalido, la dimensione non e' corretta
+File VMC deve essere creato
+Errore con il File VMC, continuare con MC fisica ?

lng/lang_Norwegian.lng

-Norvegian
-               VELKOMMEN TIL OPEN PS2 LOADER. HOVEDPROGRAMMET ER BASERT PÅ KILDEKODE FRA HD PROJECT <http://psx-scene.com> TILPASSING TIL USB ADVANCE FORMAT OG FØRSTE BRUKERGRENSESNITT AV IFCARO <http://ps2dev.ifcaro.net> DET MESTE AV OPEN PS2 LOADERS KJERNE ER LAGET AV JIMMIKAELKAEL. ALLE BRUKERGRENSESNITTFORBEDRINGENE ER LAGET AV VOLCA. TAKK FOR AT DU BRUKER VÅRT PROGRAM ^^
-Open PS2 Loader %s
-Tema oppsett
-IP oppsett
-Lagre endringer
-O Tilbake
-Rull sakte
-Rull middels
-Rull raskt
-Dynamisk meny
-Statisk meny
-Velg tema
-Nettverksinstillinger
-Velg språk
-No Items
-Ikke tilgjengelig enda
-Oppsett lagret...
-Feil ved lagring av oppsett!
-Avslutt
-Oppsett
-USB Spill
-HDD Spill
-Nettverksspill
-Programmer
-Temaer
-Språk
-Språk: Norsk
-Start nettverk
-Nettverk lastes: %d
-Nettverk lastings feilet
-Nettverk starter automatisk
-På
-Av
-Ok
-Kompatibilitetsoppsett
-Fjern alle instillinge
-Fjernet alle instillinger fra spillet
-Rulling
-Meny type
-Sakte
-Middels
-Raskt
-Statisk
-Dynamisk

lng/lang_Polish.lng

-# translation by Berion
+# translation by loki7777
 Polish
                WITAMY W PROGRAMIE OPEN PS2 LOADER. GŁÓWNY KOD OPARTY ZOSTAŁ NA KODZIE ŹRÓDŁOWYM HD PROJECT <http://psx-scene.com> IMPLEMENTACJE FORMATU USB ADVANCE I GUI PRZEZ IFCARO <http://ps2dev.ifcaro.net> WIĘKSZOŚĆ JĄDRA LOADERA WYKONANA PRZEZ JIMMIKAELKAEL. WSZYSTKIE ULEPSZENIA GUI WYKONANE PRZEZ VOLCA. DZIĘKUJEMY ZA SKORZYSTANIE Z NASZEJ APLIKACJI. ^^
 Open PS2 Loader %s
-Ustawienia skórki
-Ustawienia IP
-Zapisz zmiany
+"X" Zapisz zmiany
 "O" Powrót
-Wolne przewijanie
-Normalne przewijanie
-Szybkie przewijanie
-Dynamiczne menu
-Statyczne menu
-Konfiguruj skórkę
-Ustawienia sieci
-Wybierz język
-Nie znaleziono gier
-Jeszcze niedostępne
+Konfiguracja sieci
+<brak wartości>
 Ustawienia zostały zapisane...
-Wystapił błąd przy zapisie ustawień!
+Błąd przy zapisywaniu ustawień!
 Wyjście
 Ustawienia
 Gry z USB
 Gry z HDD
 Gry przez sieć
 Programy
-Skórka
+Skórki
 Język
-Język : Polski
-Uruchom Sieć
-Ładowanie z sieci: %d
 Błąd podczas uruchamiania sieci
-Automatyczne uruchamianie sieci
 Włączone
 Wyłączone
 Ok
 Usuń wszystkie ustawienia
 Usunięto wszystkie klucze dla gry
 Przewijanie
-Rodzaj menu
 Powoli
 Normalnie
 Szybko
-Statycznie
-Dynamicznie
 Domyślne menu
 Uruchom z płyty
-Proszę czekać
+Proszę czekać...
 Błąd podczas odczytywania Game ID
-Użyj twardego dysku
-Autostart twardego dysku
-Uruchom twardy dysk
 Automatyczne sortowanie
 Wystąpił błąd podczas wczytywania pliku językowego
 Wyłącz kolory Debug
 Nie wykryto podłączonego kontrolera, oczekiwanie...
-Włącz Cover Arty
-Szerokokątny ekran
+Włącz pokazywanie okładek (Cover Art)
+Szerokokątny ekran
+Wyłącz zasilanie
+Wczytywanie ustawień
+Zapisywanie ustawień
+Uruchom urządzenie
+Tryb uruchamiania urządzeń USB
+Tryb uruchamiania dysku twardego
+Tryb uruchamiania sieci
+Tryb uruchamiania programów
+Automatyczny
+Ręczny
+Uruchom serwer HDL
+Uruchamianie serwera HDL...
+Serwer HDL Uruchomiony... Wciśnij "O" by zatrzymać
+Wciśnij "X" aby zakończyć serwer HDL
+Wyłączanie serwera HDL...
+Wyjście do
+Kolor tła
+Kolor tekstu
+IP
+Maska
+Brama
+Port
+Udostępnij
+Użytkownik
+Hasło
+<nie wybrane>
+"X" Zatwierdź
+Wybrana gra będzie usunięta, kontynuować ?
+Zmień nazwę
+Usuń
+Uruchom
+Ustawienia ekranu
+Pozwól na usuwanie i zmianę nazwy
+Sprawdź fragmentację dysku USB
+Zapamiętaj ostatnio uruchomioną grę
+Błąd: Gra jest zdefragmentowana
+Błąd: Nie można uruchomić gry
+Test
+Zostaw puste dla autoryzacji konta GOŚĆ.
+Załaduj alternatywne jądro
+Alternatywny sposób odczytu danych
+Uwolnij Syscalls
+0 PSS mode
+Wyłącz obsługę DVD-DL
+Wyłącz IGR
+Zmniejsz bufor cdvdfsv
+Ukryj moduł dev9
+Alternatywna kombinacja IGR
+Zmiana rozmiaru wymusi ponowne formatowanie VMC
+Stwórz
+Modyfikuj
+Anuluj
+Resetuj
+Użyj domyślnych
+Konfiguruj VMC
+Nazwa
+Rozmiar
+Stan
+Postęp
+Plik VMC już istnieje
+Niewłaściwy plik VMC, nieprawidłowy rozmiar
+Plik VMC musi zostać utworzony
+Błąd z plikiem VMC, kontynuować z fizyczną karta pamięci ?

lng/lang_Portuguese.lng

+# translation by cegazza <ceg85@bol.com.br>
 Portuguese
-               BEM-VINDO AO OPEN PS2 LOADER. CÓDIGO PRINCIPAL BASEADO NO CÓDIGO FONTE DO HD PROJECT <http://psx-scene.com> ADAPTAÇÃO PARA O FORMATO USB ADVANCE E INTERFACE GRÁFICA INICIAL POR IFCARO <http://ps2dev.ifcaro.net> GRANDE PARTE DO NÚCLEO DO PROGRAMA É FEITO POR JIMMIKAELKAEL. TODOS INCREMENTOS DA INTERFACE GRÁFICA SÃO FEITOS POR VOLCA. OBRIGADO POR UTILIZAR NOSSO PROGRAMA ^^
+               BEM VINDO AO OPEN PS2 LOADER. CÓDIGO PRINCIPAL BASEADO NO CÓDIGO FONTE DO HD PROJECT <http://psx-scene.com> ADAPTADO AO FORMATO USB ADVANCE E INTERFACE GRÁFICA INICIAL POR IFCARO <http://ps2dev.ifcaro.net> A MAIOR PARTE DO NÚCLEO DO CARREGADOR FOI FEITA POR JIMMIKAELKAEL. TODAS AS MELHORAS NA INTERFACE FORAM FEITAS POR VOLCA. OBRIGADO POR USAR NOSSO PROGRAMA.
 Open PS2 Loader %s
-Configuração de IP
-Salvar alterações
-O Voltar
+Salvar mudanças
+O Volta
 Configurar rede
-Sem Items
-Opções salvas...
-Erro guardando opções!
+<sem valores>
+Definições salvadas...
+Erro ao salvar definições!
 Sair
-Opções
-Jogos via USB
-Jogos via HDD
-Jogos via rede
+Definições
+Jogos por USB
+Jogos por HDD
+Jogos por Rede
 Aplicativos
-Tema
+Temas
 Idioma
 Erro ao iniciar rede
-Ligado
-Desligado
-Ok
-Opções de compatibilidade
-Remover todas configurações
-Todas entradas do jogo removidas
+Ativado
+Desativado
+Aceitar
+Definições do jogo
+Remover todas as definições
+Removidas todas as definições para o jogo
 Rolagem
 Lento
 Médio
 Rápido
+Menu padrão
+Carregar do disco
+Por favor espere
+Erro ao carregar a ID do jogo
+Ordenar automaticamente
+Erro ao carregar arquivo de idioma
+Desativar depuração de cores
+Controle não detectado, esperando...
+Habilitar arte de capas (Cover art)
+Wide screen
+Desligar PS2
+Carregando configurações
+Salvando configurações
+Iniciar dispositivo
+Modo de inicio para dispositivos USB
+Modo de inicio para dispositivos HDD
+Modo de inicio para dispositivos ETH
+Modo de inicio para Aplicativos
+Automático
+Manual
+Iniciar servidor HDL
+Servidor HDL iniciando...
+Servidor HDL conectado...Aperte [O] para parar
+Aperte[X] para fechar o servidor HDL
+Fechando servidor HDL
+Sair para
+Cor de fundo
+Cor de texto
+Endereço IP
+Máscara de sub rede
+Gateway padrão
+Porta
+Compartilhar
+Usuário
+Senha
+<não usado>
+X Confirmar
+O item será permanentemente apagado, continuar?
+Renomear
+Deletar
+Iniciar
+Definições de tela
+Habilitar operações Deletar e Renomear
+Checar fragmentação em jogos USB
+Lembrar último jogo jogado
+Erro, o jogo está fragmentado
+Erro, não foi possível iniciar o item
+Teste
+Deixar vazio para identificação como convidado (GUEST)
+Carregar núcleo alternativo
+Método alternativo de leitura de dados
+Desativar chamadas do sistema
+Pular videos PSS
+Desabilitar suporte à DVD-DL
+Desabilitar IGR
+Buffer cdvdfsv reduzido
+Esconder módulo dev9
+Combinação IGR alternativa
+Alterar o tamanho irá reformatar o VMC
+Criar
+Modificar
+Abortar
+Resetar
+Usar genérico
+Configurar VMC
+Nome
+Tamanho
+Estado
+Progresso
+Arquivo VMC já existe
+Arquivo VMC inválido, o tamanho está incorreto
+Arquivo VMC precisa ser criado
+Erro com arquivo VMC, continuar com MC físico?

lng/lang_Russian.lng

-Russian
-               Добро пожаловать в программу OPEN PS2 LOADER. Основной код базирован на исходном коде программы HD Project <http://psx-scene.com> Адаптация к формату USB ADVANCE и начальный графический интерфейс выполнены IFCARO <http://ps2dev.ifcaro.net> Большинство кода написанно JIMMIKAELKAEL. Все графические улучшения проделаны VOLCA. Спасибо Вам за использование нашей программы!
-Open PS2 Loader %s
-Настройка темы
-Настройка протокола IP
-Сохранить изменения
-O Назад
-Медленный скроллинг
-Нормальный скроллинг
-Быстрый скроллинг
-Динамическое меню
-Статическое меню
-Настроить тему
-Настройки сети
-Выбрать язык
-Контент отсутствует
-Пока недоступно
-Настройки сохранены успешно...
-Ошибка записи настроек!
-Выход
-Настройки
-Игры с USB - накопителя
-игры с HDD
-Игры с сетевого хранилища
-Приложения
-Тема
-Язык
-Язык: Русский
-Запуск сети
-Загрузка сети: %d
-Ошибка запуска сети
-Автоматический запуск сети
-Включить
-Выключить
-OK
-Настройки совместимости
-Очистить все настройки
-Убрать все настройки для игры
-Прокрутка
-Тип меню
-Медленный
-Средний
-Быстрый
-Статическое
-Динамическое
+# translation by RUT Dark Ronin 
+Russian
+               Добро пожаловать в программу OPEN PS2 LOADER. Основной код проекта выполнен на основе HD Project <http://psx-scene.com> Адаптирование к формату USB Advance и первичный интерфейс выполнены IFCARO <http://ps2dev.ifcaro.net> Большая часть кода ядра написана гением - JIMMIKAELKAEL. Все улучшения по части интерфейса, структуры и внешнего вида выполнены VOLCA. Благодарим Вас за внимание и использование нашей программы ^^
+Open PS2 Loader %s
+Сохранение настроек
+O Назад
+Настройка сети
+<пусто>
+Сохранение настроек...
+Ошибка записи настроек!
+Выход
+Настройки
+Игры с USB - носителя
+Игры с внутреннего жесткого диска
+Игры с сетевого сервера
+Приложения
+Темы
+Язык
+Ошибка запуска сети
+Включено
+Выключено
+Ok
+Настройки совместимости
+Очистить все настройки
+Все настройки для игры очищены!
+Прокрутка
+Медленная
+Нормальная
+Быстрая
+Меню по-умолчанию
+Загрузка с диска
+Пожалуйста, подождите
+Ошибка загрузки ID игры
+Автоматическая сортировка
+Ошибка загрузки языкового файла
+Отключить дебаг-цвета при загрузке
+Контроллер не найден, ожидайте...
+Задействовать обложки к играм
+Широкий экран
+Выключение консоли
+Загрузка настроек
+Сохранение настроек
+Запуск устройства
+Зежим запуска USB
+Режим запуска HDD
+Режим запуска сети
+Режим запуска приложений
+Автоматически
+Вручную
+Запуск сервера HDL
+Сервер HDL запускается...
+Сервер HDL работает... Нажмите [O] для остановки
+Нажмите [X] , чтобы выключить HDL-сервер
+Сервер HDL выгружается...
+Выход в
+Цвет заднего фона
+Цвет текста
+IP адрес
+Маска подсети
+Основной шлюз
+Порт
+Имя общего ресурса
+Пользователь
+Пароль
+<Не установлено>
+X Подтвердить
+Объект будет немедленно удален. Продолжить?
+Переименовать
+Удалить
+Запустить
+Настройки экрана
+Задействовать переименование и удаление
+Проверять фрагментированность игр с USB
+Запоминать последнюю игру
+Ошибка, игра фрагментирована!
+Ошибка, объект не может быть запущен!
+Проверка
+Оставьте пустым для гостевого доступа.
+Загрузка альтернативного ядра
+Альтернативный метод чтения
+Анхук вызовов системных функций
+Режим 0 PSS
+Выключить поддержку DVD-DL
+Выключить IGR
+Уменьшеный cdvdfsv-буфер
+Спрятать модуль dev9
+Альтернативная комбинация IGR
+При изменении размера, VMC переформатируется 
+Создать
+Изменить
+Отменить
+Сбросить
+Использовать общее
+Настройка VMC (Виртуальная карта памяти)
+Имя
+Размер
+Состояние
+Прогрессия
+Файл VMC существует
+Ошибочный файл VMC, неправильный размер 
+Необходимо создать VMC-файл
+Ошибка в работе VMC, продолжить с реальной картой памяти?

lng/lang_Spanish.lng

 # translation by El_Patas <el_patas69@hotmail.com>
 Spanish
-               BIENVENIDO A OPEN PS2 LOADER. EL CÓDIGO PRINCIPAL ESTA BASADO EN EL DE HD PROJECT <http://psx-scene.com> ADAPTADO AL FORMATO DE USB ADVANCE E INTERFAZ GRÁFICA INICIAL POR IFCARO <http://ps2dev.ifcaro.net> LA MAYOR PARTE DEL NÚCLEO DEL CARGADOR ES REALIZADA POR JIMMIKAELKAEL. TODAS LAS MEJORAS EN LA INTERFAZ SON REALIZADAS POR VOLCA. GRACIAS POR USAR NUESTRO PROGRAMA ^^
+               BIENVENIDO AL OPEN PS2 LOADER. EL CÓDIGO PRINCIPAL ESTA BASADO EN EL DEL HD PROJECT <http://psx-scene.com> ADAPTADO AL FORMATO DEL USB ADVANCE E INTERFAZ GRÁFICA INICIAL POR IFCARO <http://ps2dev.ifcaro.net> LA MAYOR PARTE DEL NÚCLEO DEL CARGADOR ES REALIZADA POR JIMMIKAELKAEL. TODAS LAS MEJORAS EN LA INTERFAZ SON REALIZADAS POR VOLCA. GRACIAS POR USAR NUESTRO PROGRAMA ^^
 Open PS2 Loader %s
 Guardar cambios
 O Atrás
 Activado
 Desactivado
 Aceptar
-Opciones de compatibilidad
-Borrar todas las opciones
-Opciones para el juego borradas
+Preferencias juego
+Borrar todas las preferencias
+Preferencias para el juego borradas
 Desplazamiento
 Lento
 Medio
 Manual
 Iniciar servidor HDL
 Iniciando servidor HDL...
-Servidor HDL conectado... [O][X] Para desconectar
-Pulsa [X] para cerrar HDL...
+Servidor HDL conectado... Pulsa [O] para desconectar
+Pulsa [X] para cerrar servidor HDL...
 Cerrando servidor HDL...
 Salida hacia
 Color de fondo 
 Unidad o carpeta compartida
 Cuenta de usuario compartida
 Contraseña
-<sin definir>
+<sin definir>
+X Aceptar
+El objeto se borrará definitivamente, ¿continuar?
+Renombrar
+Borrar
+Iniciar
+Preferencias de pantalla
+Mostrar las operaciones de Borrar y Renombrar
+Comprobar fragmentación de juego USB
+Recordar último juego jugado
+Error, el juego está fragmentado
+Error, no se pudo iniciar el objeto
+Test
+Dejar vacío para autentificar como GUEST
+Cargar núcleo alternativo
+Método de lectura de datos alternativo
+Remover llamadas del sistema
+Saltar lectura archivos PSS
+Sin soporte DVD-DL
+Sin soporte IGR
+Buffer cdvdfsv reducido
+Ocultar módulo dev9
+Combinación de IGR alternativa
+Cambiar el tamaño reformateará la VMC
+Crear
+Modificar
+Abortar
+Reiniciar
+Usar genérica
+Configurar VMC
+Nombre
+Tamaño
+Estado
+Progreso
+Archivo VMC ya existe
+Archivo VMC inválido, el tamaño es incorrecto
+El archivo VMC debe ser creado
+Error con el archivo VMC, ¿continuar con la MC física?

modules/iopcore/cdvdman/cdvdman.c

 	// zero pad the string to be sure it does not overflow
 	g_pc_share[32] = '\0';
 
-	// Then open a session and a tree connect on the share resource
+	// open a session
+	smb_SessionSetupAndX();
+
+	// Then tree connect on the share resource
 	sprintf(tmp_str, "\\\\%s\\%s", g_pc_ip, g_pc_share);
-	smb_SessionSetupTreeConnect(tmp_str);
+	smb_TreeConnectAndX(tmp_str);
 
 	char *path_str = "%s.%02x";
 	char *game_name = NULL;

modules/iopcore/cdvdman/smb.c

 	u8	smbWordcount;		// 36
 	u16	ByteCount;		// 37
 	u8	DialectFormat;		// 39
-	char	DialectName[64];	// 40
+	char	DialectName[0];		// 40
 } __attribute__((packed));
 
 struct NegociateProtocolResponse_t {
 	u32	reserved;		// 55
 	u32	Capabilities;		// 59
 	u16	ByteCount;		// 63
-	u8	ByteField[1024];	// 65
+	u8	ByteField[0];		// 65
 } __attribute__((packed));
 
 struct SessionSetupAndXResponse_t {
 	u16	smbAndxOffset;		// 39
 	u16	Action;			// 41
 	u16	ByteCount;		// 43
-	u8	ByteField[1024];	// 45
+	u8	ByteField[0];		// 45
 } __attribute__((packed));
 
-struct TreeConnectRequest_t {
-	u8	smbWordcount;
-	u8	smbAndxCmd;
-	u8	smbAndxReserved;
-	u16	smbAndxOffset;
-	u16	Flags;
-	u16	PasswordLength;
-	u16	ByteCount;
-	u8	ByteField[1024];
+struct TreeConnectAndXRequest_t {
+	struct SMBHeader_t smbH;	// 0
+	u8	smbWordcount;		// 36
+	u8	smbAndxCmd;		// 37
+	u8	smbAndxReserved;	// 38
+	u16	smbAndxOffset;		// 39
+	u16	Flags;			// 41
+	u16	PasswordLength;		// 43
+	u16	ByteCount;		// 45
+	u8	ByteField[0];		// 47
+} __attribute__((packed));
+
+struct TreeConnectAndXResponse_t {
+	struct SMBHeader_t smbH;	// 0
+	u8	smbWordcount;		// 36
+	u8	smbAndxCmd;		// 37
+	u8	smbAndxReserved;	// 38
+	u16	smbAndxOffset;		// 39
+	u16	OptionalSupport;	// 41
+	u16	ByteCount;		// 43
 } __attribute__((packed));
 
 struct OpenAndXRequest_t {
 	u32	AllocationSize;		// 55
 	u32	reserved[2];		// 59
 	u16	ByteCount;		// 67
-	u8	Name[1024];		// 69
+	u8	ByteField[0];		// 69
 } __attribute__((packed));
 
 struct OpenAndXResponse_t {
 }
 
 //-------------------------------------------------------------------------
-int smb_SessionSetupTreeConnect(char *share_name)
+int smb_SessionSetupAndX(void)
 {
 	struct SessionSetupAndXRequest_t *SSR = (struct SessionSetupAndXRequest_t *)SMB_buf;
-	register int i, offset, ss_size, CF;
+	register int i, offset, CF;
 	int AuthType = NTLM_AUTH;
 	int password_len = 0;
 
-lbl_sstc:
+lbl_session_setup:
 	mips_memset(SMB_buf, 0, sizeof(SMB_buf));
 
 	CF = server_specs.StringsCF;
 	if (CF == 2)
 		SSR->smbH.Flags2 |= SMB_FLAGS2_UNICODE_STRING;
 	SSR->smbWordcount = 13;
+	SSR->smbAndxCmd = SMB_COM_NONE;		// no ANDX command
 	SSR->MaxBufferSize = server_specs.MaxBufferSize > 65535 ? 65535 : (u16)server_specs.MaxBufferSize;
 	SSR->MaxMpxCount = server_specs.MaxMpxCount >= 2 ? 2 : (u16)server_specs.MaxMpxCount;
 	SSR->VCNumber = 1;
 
 	SSR->ByteCount = offset;
 
-	SSR->smbAndxCmd = SMB_COM_TREE_CONNECT_ANDX;
-	SSR->smbAndxOffset = 61 + offset;
-	ss_size = offset;
+	rawTCP_SetSessionHeader(61+offset);
+	GetSMBServerReply();
 
-	struct TreeConnectRequest_t *TCR = (struct TreeConnectRequest_t *)&SSR->ByteField[offset];
+	struct SessionSetupAndXResponse_t *SSRsp = (struct SessionSetupAndXResponse_t *)SMB_buf;
+
+	// check sanity of SMB header
+	if (SSRsp->smbH.Magic != SMB_MAGIC)
+		return -1;
+
+	// check there's no auth failure
+	if ((server_specs.SecurityMode == SERVER_USER_SECURITY_LEVEL)
+		&& ((SSRsp->smbH.Eclass | (SSRsp->smbH.Ecode << 16)) == STATUS_LOGON_FAILURE)
+		&& (AuthType == NTLM_AUTH)) {
+		AuthType = LM_AUTH;
+		goto lbl_session_setup;
+	}
+
+	// check there's no error (NT STATUS error type!)
+	if ((SSRsp->smbH.Eclass | SSRsp->smbH.Ecode) != STATUS_SUCCESS)
+		return -1000;
+
+	// keep UID
+	UID = SSRsp->smbH.UID;
+
+	return 1;
+}
+
+//-------------------------------------------------------------------------
+int smb_TreeConnectAndX(char *ShareName)
+{
+	struct TreeConnectAndXRequest_t *TCR = (struct TreeConnectAndXRequest_t *)SMB_buf;
+	register int i, offset, CF;
+	int AuthType = NTLM_AUTH;
+	int password_len = 0;
+
+	mips_memset(SMB_buf, 0, sizeof(SMB_buf));
+
+	CF = server_specs.StringsCF;
+
+	TCR->smbH.Magic = SMB_MAGIC;
+	TCR->smbH.Cmd = SMB_COM_TREE_CONNECT_ANDX;
+	TCR->smbH.Flags = SMB_FLAGS_CASELESS_PATHNAMES;
+	TCR->smbH.Flags2 = SMB_FLAGS2_KNOWS_LONG_NAMES | SMB_FLAGS2_32BIT_STATUS;
+	if (CF == 2)
+		TCR->smbH.Flags2 |= SMB_FLAGS2_UNICODE_STRING;
+	TCR->smbH.UID = UID;
 	TCR->smbWordcount = 4;
-	TCR->smbAndxCmd = SMB_COM_NONE;
+	TCR->smbAndxCmd = SMB_COM_NONE;		// no ANDX command
 
 	// Fill ByteField
 	offset = 0;
 	if ((CF == 2) && (!(password_len & 1)))
 		offset += 1;				// pad needed only for unicode as aligment fix is password len is even
 
-	for (i = 0; i < strlen(share_name); i++) {
-		TCR->ByteField[offset] = share_name[i];	// add Share name
+	for (i = 0; i < strlen(ShareName); i++) {
+		TCR->ByteField[offset] = ShareName[i];	// add Share name
 		offset += CF;
 	}
 	offset += CF;					// null terminator
 
 	TCR->ByteCount = offset;
 
-	rawTCP_SetSessionHeader(72+ss_size+offset);
+	rawTCP_SetSessionHeader(43+offset);
 	GetSMBServerReply();
 
-	struct SessionSetupAndXResponse_t *SSRsp = (struct SessionSetupAndXResponse_t *)SMB_buf;
+	struct TreeConnectAndXResponse_t *TCRsp = (struct TreeConnectAndXResponse_t *)SMB_buf;
 
 	// check sanity of SMB header
-	if (SSRsp->smbH.Magic != SMB_MAGIC)
+	if (TCRsp->smbH.Magic != SMB_MAGIC)
 		return -1;
 
-	// check there's no auth failure
-	if ((server_specs.SecurityMode == SERVER_USER_SECURITY_LEVEL)
-		&& ((SSRsp->smbH.Eclass | (SSRsp->smbH.Ecode << 16)) == STATUS_LOGON_FAILURE)
-		&& (AuthType == NTLM_AUTH)) {
-		AuthType = LM_AUTH;
-		goto lbl_sstc;
-	}
-
 	// check there's no error (NT STATUS error type!)
-	if ((SSRsp->smbH.Eclass | SSRsp->smbH.Ecode) != STATUS_SUCCESS)
+	if ((TCRsp->smbH.Eclass | TCRsp->smbH.Ecode) != STATUS_SUCCESS)
 		return -1000;
 
-	// keep UID & TID
-	UID = SSRsp->smbH.UID;
-	TID = SSRsp->smbH.TID;
+	// keep TID
+	TID = TCRsp->smbH.TID;
 
 	return 1;
 }
 int smb_OpenAndX(char *filename, u16 *FID, int Write)
 {
 	struct OpenAndXRequest_t *OR = (struct OpenAndXRequest_t *)SMB_buf;
-	register int length;
+	register int i, offset, CF;
 
 	WAITIOSEMA(io_sema);
 
 	mips_memset(SMB_buf, 0, sizeof(SMB_buf));
 
+	CF = server_specs.StringsCF;
+
 	OR->smbH.Magic = SMB_MAGIC;
 	OR->smbH.Cmd = SMB_COM_OPEN_ANDX;
 	OR->smbH.Flags = SMB_FLAGS_CANONICAL_PATHNAMES; //| SMB_FLAGS_CASELESS_PATHNAMES;
 	OR->smbH.Flags2 = SMB_FLAGS2_KNOWS_LONG_NAMES;
+	if (CF == 2)
+		OR->smbH.Flags2 |= SMB_FLAGS2_UNICODE_STRING;
 	OR->smbH.UID = UID;
 	OR->smbH.TID = TID;
 	OR->smbWordcount = 15;
 	OR->AccessMask = (Write && (SMBWRITE)) ? 2 : 0;
 	OR->FileAttributes = (Write && (SMBWRITE)) ? EXT_ATTR_NORMAL : EXT_ATTR_READONLY;
 	OR->CreateOptions = 1;
-	length = strlen(filename);
-	OR->ByteCount = length+1;
-	strcpy((char *)OR->Name, filename);
 
-	rawTCP_SetSessionHeader(66+length);
+	offset = 0;
+	if (CF == 2)
+		offset++;				// pad needed only for unicode as aligment fix
+
+	for (i = 0; i < strlen(filename); i++) {
+		OR->ByteField[offset] = filename[i];	// add filename
+		offset += CF;
+	}
+	offset += CF;
+
+	OR->ByteCount = offset;
+
+	rawTCP_SetSessionHeader(66+offset);
 	GetSMBServerReply();
 
 	struct OpenAndXResponse_t *ORsp = (struct OpenAndXResponse_t *)SMB_buf;

modules/iopcore/cdvdman/smb.h

 int rawTCP_GetSessionHeader(void); 	// Read Session Service header
 
 int smb_NegociateProtocol(char *SMBServerIP, int SMBServerPort, char *Username, char *Password); // process a Negociate Procotol message
-int smb_SessionSetupTreeConnect(char *share_name); 			// process a Session Setup message, for NT LM 0.12 dialect, Non Extended Security negociated
+int smb_SessionSetupTreeConnect(char *share_name); 
+int smb_SessionSetupAndX(void);	// process a Session Setup message, for NT LM 0.12 dialect, Non Extended Security negociated
+int smb_TreeConnectAndX(char *ShareName);
 int smb_OpenAndX(char *filename, u16 *FID, int Write); 					// process a Open AndX message
 int smb_ReadFile(u16 FID, u32 offsetlow, u32 offsethigh, void *readbuf, u16 nbytes);
 int smb_WriteFile(u16 FID, u32 offsetlow, u32 offsethigh, void *writebuf, u16 nbytes);

modules/network/smbman/smb.c

 	u32	ImpersonationLevel;	// 80
 	u8	SecurityFlags;		// 84
 	u16	ByteCount;		// 85
-	char	Name[0];		// 87
+	char	ByteField[0];		// 87
 } __attribute__((packed));
 
 struct NTCreateAndXResponse_t {		// size = 107
 	u32	AllocationSize;		// 55
 	u32	reserved[2];		// 59
 	u16	ByteCount;		// 67
-	u8	Name[0];		// 69
+	u8	ByteField[0];		// 69
 } __attribute__((packed));
 
 struct OpenAndXResponse_t {
 int smb_NTCreateAndX(int UID, int TID, char *filename, s64 *filesize, int mode)
 {
 	struct NTCreateAndXRequest_t *NTCR = (struct NTCreateAndXRequest_t *)SMB_buf;
-	register int r, length;
+	register int r, i, offset, length, CF;
 
 	memset(SMB_buf, 0, sizeof(SMB_buf));
 
+	CF = server_specs.StringsCF;
+
 	NTCR->smbH.Magic = SMB_MAGIC;
 	NTCR->smbH.Cmd = SMB_COM_NT_CREATE_ANDX;
 	NTCR->smbH.Flags = SMB_FLAGS_CANONICAL_PATHNAMES; //| SMB_FLAGS_CASELESS_PATHNAMES;
 	NTCR->smbH.Flags2 = SMB_FLAGS2_KNOWS_LONG_NAMES;
+	if (CF == 2)
+		NTCR->smbH.Flags2 |= SMB_FLAGS2_UNICODE_STRING;
 	NTCR->smbH.UID = (u16)UID;
 	NTCR->smbH.TID = (u16)TID;
 	NTCR->smbWordcount = 24;
 	NTCR->smbAndxCmd = SMB_COM_NONE;	// no ANDX command
-	length = strlen(filename);
-	NTCR->NameLength = length;
 	NTCR->AccessMask = ((mode & O_RDWR) == O_RDWR || (mode & O_WRONLY)) ? 0x2019f : 0x20089;
 	NTCR->FileAttributes = ((mode & O_RDWR) == O_RDWR || (mode & O_WRONLY)) ? EXT_ATTR_NORMAL : EXT_ATTR_READONLY;
 	NTCR->ShareAccess = 0x01; // Share in read mode only
 		NTCR->CreateDisposition = 0x05;
 	NTCR->ImpersonationLevel = 2;
 	NTCR->SecurityFlags = 0x03;
-	NTCR->ByteCount = length+1;
-	strcpy(NTCR->Name, filename);
 
-	rawTCP_SetSessionHeader(84+length);
+	offset = 0;
+	if (CF == 2)
+		offset++;				// pad needed only for unicode as aligment fix
+
+	length = strlen(filename);
+	for (i = 0; i < length; i++) {
+		NTCR->ByteField[offset] = filename[i];	// add filename
+		offset += CF;
+	}
+	offset += CF;
+
+	NTCR->NameLength = length;
+	if (CF == 2)
+		NTCR->NameLength = NTCR->NameLength << 1;
+	NTCR->ByteCount = offset;
+
+	rawTCP_SetSessionHeader(84+offset);
 	r = GetSMBServerReply();
 	if (r <= 0)
 		return -3;
 	// NT SMB commands set.
 
 	struct OpenAndXRequest_t *OR = (struct OpenAndXRequest_t *)SMB_buf;
-	register int r, length;
+	register int r, i, offset, CF;
 
 	if (server_specs.SupportsNTSMB)
 		return smb_NTCreateAndX(UID, TID, filename, filesize, mode);
 
 	memset(SMB_buf, 0, sizeof(SMB_buf));
 
+	CF = server_specs.StringsCF;
+
 	OR->smbH.Magic = SMB_MAGIC;
 	OR->smbH.Cmd = SMB_COM_OPEN_ANDX;
 	OR->smbH.Flags = SMB_FLAGS_CANONICAL_PATHNAMES; //| SMB_FLAGS_CASELESS_PATHNAMES;
 	OR->smbH.Flags2 = SMB_FLAGS2_KNOWS_LONG_NAMES;
+	if (CF == 2)
+		OR->smbH.Flags2 |= SMB_FLAGS2_UNICODE_STRING;
 	OR->smbH.UID = (u16)UID;
 	OR->smbH.TID = (u16)TID;
 	OR->smbWordcount = 15;
 		OR->CreateOptions |= 0x02;
 	else
 		OR->CreateOptions |= 0x01;
-	length = strlen(filename);
-	OR->ByteCount = length+1;
-	strcpy((char *)OR->Name, filename);
-	
-	rawTCP_SetSessionHeader(66+length);
+
+	offset = 0;
+	if (CF == 2)
+		offset++;				// pad needed only for unicode as aligment fix
+
+	for (i = 0; i < strlen(filename); i++) {
+		OR->ByteField[offset] = filename[i];	// add filename
+		offset += CF;
+	}
+	offset += CF;
+
+	OR->ByteCount = offset;
+
+	rawTCP_SetSessionHeader(66+offset);
 	r = GetSMBServerReply();
 	if (r <= 0)
 		return -3;

modules/network/smbman/smb_fio.c

    		r = -EIO;
 		goto io_unlock;
 	}
-	if (!info.IsDirectory) {
+	if (!(info.FileAttributes & EXT_ATTR_DIRECTORY)) {
 		r = -ENOTDIR;
 		goto io_unlock;
 	}
 		goto io_unlock;
 	}
 
-	if (!info.IsDirectory) {
+	if (!(info.FileAttributes & EXT_ATTR_DIRECTORY)) {
    		r = -ENOTDIR;
 		goto io_unlock;
 	}
 		fh->position = 0;
 
 		strncpy(fh->name, path, 255);
+		if (fh->name[strlen(fh->name)-1] != '\\')
+			strcat(fh->name, "\\");
 		strcat(fh->name, "*");
 
 		r = 0;	
 			goto io_unlock;
 		}
 
-		if (!info.IsDirectory) {
+		if (!(info.FileAttributes & EXT_ATTR_DIRECTORY)) {
 	   		r = -ENOTDIR;
 			goto io_unlock;
 		}
 #include "include/gui.h"
 #include "include/supportbase.h"
 #include "include/ethsupport.h"
+#include "include/util.h"
 #include "include/themes.h"
 #include "include/textures.h"
 #include "include/ioman.h"
+#include "include/system.h"
 #include "include/smbman.h"
-#include "include/system.h"
 
 extern void *smb_cdvdman_irx;
 extern int size_smb_cdvdman_irx;
 
 	// update Themes
 	char path[32];
-	sprintf(path, "%s\\THM\\", ethPrefix);
+	sprintf(path, "%sTHM", ethPrefix);
 	thmAddElements(path, "\\");
+
+#ifdef VMC
+	sprintf(path, "%sVMC", ethPrefix);
+	checkCreateDir(path);
+#endif
 }
 
 void ethInit(void) {
 		fio_stat_t stat;
 		char path[64];
 
-		snprintf(path, 64, "%sCD\\", ethPrefix);
+		snprintf(path, 64, "%sCD", ethPrefix);
 		fioGetstat(path, &stat);
 		if (memcmp(ethModifiedCDPrev, stat.mtime, 8)) {
 			memcpy(ethModifiedCDPrev, stat.mtime, 8);
 			result = 1;
 		}
 
-		snprintf(path, 64, "%sDVD\\", ethPrefix);
+		snprintf(path, 64, "%sDVD", ethPrefix);
 		fioGetstat(path, &stat);
 		if (memcmp(ethModifiedDVDPrev, stat.mtime, 8)) {
 			memcpy(ethModifiedDVDPrev, stat.mtime, 8);
 	if (gNetworkStartup != 0)
 		return 0;
 	
-	sbReadList(&ethGames, ethPrefix, "\\", &ethULSizePrev, &ethGameCount);
+	sbReadList(&ethGames, ethPrefix, &ethULSizePrev, &ethGameCount);
 	return ethGameCount;
 }
 
 	configGetVMC(game->startup, vmc[0], ETH_MODE, 0);
 	configGetVMC(game->startup, vmc[1], ETH_MODE, 1);
 
-	if(!vmc[0][0] && !vmc[1][0]) return 0;  // skip if both empty
+	for(i=0; i<2; i++) {
+		if(!vmc[i][0]) // skip if empty
+			continue;
 
-	for(i=0; i<2; i++) {
 		memset(&smb_vmc_infos, 0, sizeof(smb_vmc_infos_t));
 		memset(&vmc_superblock, 0, sizeof(vmc_superblock_t));
 
 
 static int ethGetArt(char* name, GSTEXTURE* resultTex, const char* type, short psm) {
 	char path[64];
-	sprintf(path, "%sART\\\\%s_%s", ethPrefix, name, type);
+	sprintf(path, "%sART\\%s_%s", ethPrefix, name, type);
 	return texDiscoverLoad(resultTex, path, -1, psm);
 }
 
 	} else if(getKey(KEY_DOWN)){
 		menuNextV();
 	} else if(getKey(KEY_L1)) {
-		int i;
-		for (i = 0; i < gTheme->displayedItems; ++i)
-			menuPrevV();
+		menuPrevPage();
 	} else if(getKey(KEY_R1)){
-		int i;
-		for (i = 0; i < gTheme->displayedItems; ++i)
-			menuNextV();
+		menuNextPage();
+	} else if (getKeyOn(KEY_L2)) { // home
+		menuFirstPage();
+	} else if (getKeyOn(KEY_R2)) { // end
+		menuLastPage();
 	}
 
 	struct menu_item_t* cur = menuGetCurrent();
 		// reinit main menu - show/hide items valid in the active context
 		guiInitMainMenu();
 		screenHandlerTarget = &menuScreenHandler;
-	} else if (getKeyOn(KEY_L2)) { // home
-		cur->current = cur->submenu;
-	} else if (getKeyOn(KEY_R2)) { // end
-		if (!cur->current)
-			cur->current = cur->submenu;
-			
-		if (cur->current)
-			while (cur->current->next)
-				cur->current = cur->current->next;
 	} else if(getKeyOn(KEY_CROSS)){
 		menuItemExecButton(cur->execCross);
 	} else if(getKeyOn(KEY_TRIANGLE)){
 		} else if (id == 3) {
 			// ipconfig
 			guiShowIPConfig();
-		} else if (id == 7) { // TODO: (Volca) As Izdubar points out, there ought be MNU_ID_something instead of this cryptic numerals...
+		} else if (id == 7) {
 			saveConfig(CONFIG_OPL, 1);
-		} else if (id == 9) { // TODO: should we call opl.shutdown first ?
+		} else if (id == 9) {
 			guiExecExit();
-		} else if (id == 11) { // TODO: should we call opl.shutdown first ?
+		} else if (id == 11) {
 			sysPowerOff();
 		} else {
 			if (gMenuExecHook)
 #include "include/gui.h"
 #include "include/supportbase.h"
 #include "include/hddsupport.h"
+#include "include/util.h"
+#include "include/themes.h"
 #include "include/textures.h"
-#include "include/themes.h"
 #include "include/ioman.h"
 #include "include/system.h"
 
 
 	// update Themes
 	char path[32];
-	sprintf(path, "%sTHM/", hddPrefix);
+	sprintf(path, "%sTHM", hddPrefix);
 	thmAddElements(path, "/");
+
+#ifdef VMC
+	sprintf(path, "%sVMC", hddPrefix);
+	checkCreateDir(path);
+#endif
 }
 
 void hddLoadModules(void) {
 
 	fileXioMount(hddPrefix, oplPart, FIO_MT_RDWR); // if this fails, something is really screwed up
 	for(i=0; i<2; i++) {
+		if(!vmc[i][0]) // skip if empty
+			continue;
+
 		memset(&vmc_superblock, 0, sizeof(vmc_superblock_t));
 		hdd_vmc_infos.active = 0;
 
 void menuPrevV() {
 	if (!selected_item)
 		return;
-	
+
 	struct submenu_list_t *cur = selected_item->item->current;
 
 	// if the current item is on the page start, move the page start one page up before moving the item
 		if (selected_item->item->pagestart == cur) {
 			int itms = gTheme->displayedItems + 1; // +1 because the selection will move as well
 
-			while (--itms && selected_item->item->pagestart->prev) {
-				selected_item->item->pagestart = selected_item->item->pagestart->prev;	
-			}
+			while (--itms && selected_item->item->pagestart->prev)
+				selected_item->item->pagestart = selected_item->item->pagestart->prev;
 		}
 	} else
 		selected_item->item->pagestart = cur;
-	
+
 	if(cur && cur->prev) {
 		selected_item->item->current = cur->prev;
 	}
 }
 
+void menuNextPage() {
+	if (!selected_item)
+		return;
+
+	struct submenu_list_t *cur = selected_item->item->pagestart;
+
+	if (cur) {
+		int itms = gTheme->displayedItems + 1;
+		while (--itms && cur->next)
+			cur = cur->next;
+
+		selected_item->item->current = cur;
+	}
+}
+
+void menuPrevPage() {
+	if (!selected_item)
+		return;
+
+	struct submenu_list_t *cur = selected_item->item->pagestart;
+
+	if (cur) {
+		int itms = gTheme->displayedItems + 1;
+		while (--itms && cur->prev)
+			cur = cur->prev;
+
+		selected_item->item->current = cur;
+		selected_item->item->pagestart = cur;
+	}
+}
+
+void menuFirstPage() {
+	if (!selected_item)
+		return;
+
+	selected_item->item->current = selected_item->item->submenu;
+}
+
+void menuLastPage() {
+	if (!selected_item)
+		return;
+
+	struct submenu_list_t *cur = selected_item->item->current;
+
+	if (cur) {
+		while (cur->next)
+			cur = cur->next; // go to end
+
+		selected_item->item->current = cur;
+
+		int itms = gTheme->displayedItems;
+		while (--itms && cur->prev) // and move back to have a full page
+			cur = cur->prev;
+
+		selected_item->item->pagestart = cur;
+	}
+}
+
 struct menu_item_t* menuGetCurrent() {
 	if (!selected_item)
 		return NULL;

src/supportbase.c

 	return count;
 }
 
-void sbReadList(base_game_info_t **list, const char* prefix, const char* sep, int *fsize, int* gamecount) {
+void sbReadList(base_game_info_t **list, const char* prefix, int *fsize, int* gamecount) {
 	int fd, size, id = 0;
 	size_t count = 0;
 	char path[64];
 	struct game_list_t *dlist_head = NULL;
 	
 	// count iso games in "cd" directory
-	snprintf(path, 64, "%sCD%s", prefix, sep);
+	snprintf(path, 64, "%sCD", prefix);
 	count += scanForISO(path, 0x12, &dlist_head);
 
 	// count iso games in "dvd" directory
-	snprintf(path, 64, "%sDVD%s", prefix, sep);
+	snprintf(path, 64, "%sDVD", prefix);
 	count += scanForISO(path, 0x14, &dlist_head);
         
         
 extern void *usbd_irx;
 extern int size_usbd_irx;
 
-extern void eeload_patches;
-extern int size_eeload_patches;
-
 #define MAX_MODULES	32
 static void *g_sysLoadedModBuffer[MAX_MODULES];
 
 	*size_irx = size_cdvdfsv_irx;
 }
 
+static void restoreSyscallHandler(void)
+{
+	__asm__ __volatile__ (
+		"addiu 	$a0, $zero, 8\n\t"
+		"lui 	$a1, 0x8000\n\t"
+		"ori 	$a1, $a1, 0x0280\n\t"
+		"addiu 	$v1, $zero, 0x0e\n\t"
+		"syscall\n\t"
+		"nop\n\t"
+	);	
+}
+
 #ifdef VMC
 #define IRX_NUM 11
 #else
 #else
 static void sendIrxKernelRAM(int size_cdvdman_irx, void **cdvdman_irx) { // Send IOP modules that core must use to Kernel RAM
 #endif
+
+	restoreSyscallHandler();
+
 	void *irxtab = (void *)0x80030010;
 	void *irxptr = (void *)0x80030100;
 	irxptr_t irxptr_tab[IRX_NUM];
 	DIntr();
 	ee_kmode_enter();
 
-	*(u32 *)0x80030000 = 0x80030100;
+	*(u32 *)0x80030000 = 0x80030010;
 
 	for (i = 0; i < IRX_NUM; i++) {
 		curIrxSize = irxptr_tab[i].irxsize;
 
 	ee_kmode_exit();
 	EIntr();
-
-	memcpy((void *)(0x000bd000), &eeload_patches, size_eeload_patches);
-	FlushCache(0);
-	FlushCache(2);
-	void (*EELOAD_patch1)()=(void *)(0x000bd1b8);
-	void (*EELOAD_patch2)()=(void *)(0x000bd000);
-	EELOAD_patch1();
-	FlushCache(0);
-	FlushCache(2);
-	EELOAD_patch2();
 }
 
 #ifdef VMC
 		memcpy(currTheme->name, name + 4, length);
 		currTheme->name[length - 1] = '\0';
 
-		length = strlen(path) + 1 + strlen(name) + 1;
+		length = strlen(path) + 1 + strlen(name) + 1 + 1;
 		currTheme->filePath = (char*) malloc(length * sizeof(char));
-		sprintf(currTheme->filePath, "%s%s%s", path, name, separator);
+		sprintf(currTheme->filePath, "%s%s%s%s", path, separator, name, separator);
 
 		LOG("Theme found: %s\n", currTheme->filePath);
 
 	// initialize default internal
 	thmLoad(NULL);
 
-	char path[32];
-	sprintf(path, "%s/", gBaseMCDir);
-	thmAddElements(path, "/");
+	thmAddElements(gBaseMCDir, "/");
 }
 
 char* thmGetValue() {
 }
 
 static void usbInitModules(void) {
-
 	usbLoadModules();
 
 	// update Themes
 	usbFindPartition(usbPrefix, "ul.cfg");
 	char path[32];
-	sprintf(path, "%sTHM/", usbPrefix);
+	sprintf(path, "%sTHM", usbPrefix);
 	thmAddElements(path, "/");
+
+#ifdef VMC
+	sprintf(path, "%sVMC", usbPrefix);
+	checkCreateDir(path);
+#endif
 }
 
 void usbLoadModules(void) {
 
 static int usbUpdateGameList(void) {
 	usbFindPartition(usbPrefix, "ul.cfg");
-	sbReadList(&usbGames, usbPrefix, "/", &usbULSizePrev, &usbGameCount);
+	sbReadList(&usbGames, usbPrefix, &usbULSizePrev, &usbGameCount);