@echo off
cls
rem Dit programma gebruikt YSmenu om een AceKard 2 firmware te genereren.
rem YSMenu moet handmatig gedownload worden vanwege licenties.
rem Het programma moet uitgaan van een inputbestand in de vorm van YSMenu0805222222.zip en vervolgens automatisch de goede bestanden aanmaken en de onnodige verwijderen.
rem Tegenwoordig heet het bestand YSMenu0810211800.zip.
rem Deze versie ondersteunt een configuratiebestand.
rem Als dit bestand wordt gevonden moet het draaien als een batchbestand.
if exist config.cfg copy config.cfg config.bat
if exist config.cfg echo. >> tmp.cfg
if exist config.bat call config.bat
if exist tmp.cfg del tmp.cfg
if exist config.bat del config.bat
rem Voordat we beginnen moet gekeken worden of er niet al eerder een firmware is gemaakt.
rem Maar het eerste wat dit scriptje doet is vragen om een taal.
if exist autonl.cfg goto begin
if exist autoen.cfg goto beginen
cls
echo Press any key to customize YSMenu for Acekard 2 v4.07a15?
pause
goto beginen

:begin
if exist ak2_custom_release-ak2_407a15.zip goto stap0
rem Als dat niet zo is gaan we verder.
goto stap1

:beginen
if exist ak2_custom_release-ak2_407a15.zip goto stap0en
rem Als dat niet zo is gaan we verder.
goto stap1en

:stap0
cls
if exist delrls.cfg goto stap1
cls
echo Let op! Het bestand ak2_custom_release.zip is al gevonden!
echo Dit bestand zal gedurende het aanmaken van het custom AceKard 2 firmware verloren gaan!
echo Weet je zeker dat je door wilt gaan?
set INPUT=
Set /P INPUT=Ja/Nee:
if "%input%" =="" goto stap0
if "%input%" =="J" goto stap1
if "%input%" =="N" goto end
if "%input%" =="Ja" goto stap1
if "%input%" =="Nee" goto end
if "%input%" =="Y" goto stap1
if "%input%" =="Yes" goto stap1
if "%input%" =="No" goto end
if "%input%" =="j" goto stap1
if "%input%" =="n" goto end
if "%input%" =="ja" goto stap1
if "%input%" =="nee" goto end
if "%input%" =="y" goto stap1
if "%input%" =="yes" goto stap1
if "%input%" =="no" goto end

:stap0en
cls
if exist delrls.cfg goto stap1en
cls
echo Warning! The file ak2_custom_release-ak2_407a15.zip already exists!
echo This file will be deleted when making the custom AceKard 2 firmware!
echo Are you sure you want to continue?
set INPUT=
Set /P INPUT=Yes/No:
if "%input%" =="" goto stap0en
if "%input%" =="J" goto stap1en
if "%input%" =="N" goto end
if "%input%" =="Ja" goto stap1en
if "%input%" =="Nee" goto end
if "%input%" =="Y" goto stap1en
if "%input%" =="Yes" goto stap1en
if "%input%" =="No" goto end
if "%input%" =="j" goto stap1en
if "%input%" =="n" goto end
if "%input%" =="ja" goto stap1en
if "%input%" =="nee" goto end
if "%input%" =="y" goto stap1en
if "%input%" =="yes" goto stap1en
if "%input%" =="no" goto end

:stap1
rem 1. Opdracht geven om YSMenu0810211800.zip te downloaden indien niet aanwezig
echo Controleren op aanwezigheid van YSMenu...
if exist YSMenu0903211700.zip goto stap2
cls
echo Er is een fout opgetreden! YSMenu0810211800.zip is niet gevonden.
echo YSMenu kan vanwege licentieproblemen niet worden meegeleverd. Download het bestand dus handmatig vanaf http://home.usay.jp/pc/etc/nds/ .
echo Als je YSMenu al hebt gedownload moet je controleren of het zip-bestand de juiste naam heeft.
echo Dit programma wordt nu afgesloten.
pause
goto end

:stap1en
rem 1. Opdracht geven om YSMenu0810211800.zip te downloaden indien niet aanwezig
echo Controleren op aanwezigheid van YSMenu...
if exist YSMenu0903211700.zip goto stap2en
cls
echo An error has occured! YSMenu0903211700.zip could not be found.
echo Yasu, the author of YSMenu, does not want this file redistributed.
echo Therefore, it has to be downloaded manually. You can download it from http://home.usay.jp/pc/etc/nds/ .
echo If you already downloaded this file, please check if it has the correct filename.
echo This program will now close.
pause
goto end

:stap2
cls
rem Goed, we gaan ervanuit dat het bestand aanwezig is.
rem 2. Het bestand uitpakken!
rem Hiervoor gebruikt ik 7z, dat wordt meegeleverd.
echo Bestanden worden uitgepakt...
7za.exe e YSMenu0903211700.zip
cls
rem Nu controleer ik of alle bestanden zijn uitgepakt.
rem Als een bestand ontbreekt wordt een foutmelding gegeven.
if not exist akextract.exe goto stap2f
if not exist ttextract.exe goto stap2f
if not exist YSMenu.ini goto stap2f
if not exist YSMenu.nds goto stap2f
if not exist YSMenu.txt goto stap2f
if not exist YSMenu_eng.txt goto stap2f
rem Alles bestaat? Mooi, tijd voor stap 3.
goto stap3

:stap2en
cls
rem Goed, we gaan ervanuit dat het bestand aanwezig is.
rem 2. Het bestand uitpakken!
rem Hiervoor gebruikt ik 7z, dat wordt meegeleverd.
echo Extracting files...
7za.exe e YSMenu0903211700.zip
cls
rem Nu controleer ik of alle bestanden zijn uitgepakt.
rem Als een bestand ontbreekt wordt een foutmelding gegeven.
if not exist akextract.exe goto stap2fen
if not exist ttextract.exe goto stap2fen
if not exist YSMenu.ini goto stap2fen
if not exist YSMenu.nds goto stap2fen
if not exist YSMenu.txt goto stap2fen
if not exist YSMenu_eng.txt goto stap2fen
rem Alles bestaat? Mooi, tijd voor stap 3.
goto stap3en

:stap2f
cls
echo Er is een fout opgetreden bij het uitpakken van de benodigde bestanden.
echo Controleer of er genoeg schijfruimte is en of het programma toegang heeft tot de schijf.
echo Dit programma wordt nu afgesloten.
pause
goto end

:stap2fen
cls
echo An error has occured when extracting the neccesary files.
echo Please check if there is enough free disk space and if the program has access to the disk.
echo This program will now close.
pause
goto end

:stap3
rem YSMenu moet nu met DLDI gepatcht worden.
rem Ik gebruik het meegeleverde dlditool.exe en de meegeleverde originele AceKard 2 DLDI
dlditool.exe ak2_sd.dldi YSMenu.nds
rem Ik heb geen enkele betrouwbare manier om te controleren of de patch heeft plaatsgevonden, dus ga ik ervanuit dat dit goed gaat.
goto stap4

:stap3en
rem YSMenu moet nu met DLDI gepatcht worden.
rem Ik gebruik het meegeleverde dlditool.exe en de meegeleverde originele AceKard 2 DLDI
dlditool.exe ak2_sd.dldi YSMenu.nds
rem Ik heb geen enkele betrouwbare manier om te controleren of de patch heeft plaatsgevonden, dus ga ik ervanuit dat dit goed gaat.
goto stap4en

:stap4
rem 4. Verwijder ttextract.exe dat eerder werd uitgepakt
del ttextract.exe
goto stap5

:stap4en
rem 4. Verwijder ttextract.exe dat eerder werd uitgepakt
del ttextract.exe
goto stap5en

:stap5
cls
rem Ik heb ervoor gekozen het AceKard 2 firmware mee te leveren.
rem Het staat in een apart zip-bestand genaamd ak2.7z.
rem Dit bestand kan altijd worden vervangen in een toekomstige versie. Dit kan eventueel handmatig.
rem Ik wil wel de keuze geven een ander firmware te gebruiken zonder dat het is ingepakt in 7z.
rem Dit gebeurt via de map ak2. Hier kan een willekeurig AceKard 2 firmware staan.
rem Om te beginnen controleer ik of in de map ak2 een firmware staat.
if exist ak2\akmenu4.nds goto stap6
rem Vanaf stap 6 ga ik ervanuit dat in de map dstt een firmware staat. Nu ga ik het bestand ak2.7z uitpakken naar de map voor het geval geen firmware in de map wordt gezet.
rem Eerst maak ik de map aan, of die nu bestaat of niet maakt verder niet uit.
md ak2
cls
copy 7za.exe ak2
copy ak2.7z ak2
cd ak2
7za.exe x ak2.7z
del 7za.exe
del ak2.7z
cd ..
rem Nu staat alles op z'n plaats en kan ik naar stap 6.
goto stap6

:stap5en
cls
rem Ik heb ervoor gekozen het AceKard 2 firmware mee te leveren.
rem Het staat in een apart zip-bestand genaamd ak2.7z.
rem Dit bestand kan altijd worden vervangen in een toekomstige versie. Dit kan eventueel handmatig.
rem Ik wil wel de keuze geven een ander firmware te gebruiken zonder dat het is ingepakt in 7z.
rem Dit gebeurt via de map ak2. Hier kan een willekeurig AceKard 2 firmware staan.
rem Om te beginnen controleer ik of in de map ak2 een firmware staat.
if exist ak2\akmenu4.nds goto stap6en
rem Vanaf stap 6 ga ik ervanuit dat in de map dstt een firmware staat. Nu ga ik het bestand ak2.7z uitpakken naar de map voor het geval geen firmware in de map wordt gezet.
rem Eerst maak ik de map aan, of die nu bestaat of niet maakt verder niet uit.
md ak2
cls
copy 7za.exe ak2
copy ak2.7z ak2
cd ak2
7za.exe x ak2.7z
del 7za.exe
del ak2.7z
cd ..
rem Nu staat alles op z'n plaats en kan ik naar stap 6.
goto stap6en

:stap6
cls
rem Nu verplaats ik akmenu4.nds naar de hoofdmap. Alleen dit bestand is nodig.
copy ak2\akmenu4.nds
rem De oude bestanden mogen weg.
rd ak2 /s /q
cls
goto stap7

:stap6en
cls
rem Nu verplaats ik akmenu4.nds naar de hoofdmap. Alleen dit bestand is nodig.
copy ak2\akmenu4.nds
rem De oude bestanden mogen weg.
rd ak2 /s /q
cls
goto stap7en

:stap7
rem Dit is makkelijk, ik draai gewoon:
akextract.exe
rem En ik verwijder 'm meteen.
del akextract.exe
rem Het originele firmware is nu ook overbodig.
del akmenu4.nds
cls
rem Er wordt nu eerst een map YSMenu gemaakt zodat het skingedeelte zonder aanpassingen kan draaien.
md YSMenu
cls
goto stap8

:stap7en
rem Dit is makkelijk, ik draai gewoon:
akextract.exe
rem En ik verwijder 'm meteen.
del akextract.exe
rem Het originele firmware is nu ook overbodig.
del akmenu4.nds
cls
rem Er wordt nu eerst een map YSMenu gemaakt zodat het skingedeelte zonder aanpassingen kan draaien.
md YSMenu
cls
goto stap8en

:skin
rem Via dit toegevoegde script is het mogelijk een skin te laden. Eerst moet worden bevestigd dat alle bestanden aanwezig zijn.
if not exist skin\bckgrd_1.bmp goto skinf
if not exist skin\bckgrd_2.bmp goto skinf
rem Nu wordt een bestand "skin.tmp" aangemaakt zodat het script weet dat de skin al eerder is gevonden.
echo skin >> skin.tmp
cls
if exist skinj.cfg goto skinj
if exist skinn.cfg goto skinn
cls
echo Er is een skin gevonden in de map "skin".
echo Deze skin bevat de benodigde bestanden.
if exist skin\gbaframe.bmp echo Ook het optionele gbaframe.bmp is gevonden.
echo Moet deze skin worden gebruikt?
set INPUT=
Set /P INPUT=Ja/Nee:
if "%input%" =="" goto skin
if "%input%" =="J" goto skinj
if "%input%" =="N" goto skinn
if "%input%" =="Ja" goto skinj
if "%input%" =="Nee" goto skinn
if "%input%" =="Y" goto skinj
if "%input%" =="Yes" goto skinj
if "%input%" =="No" goto skinn
if "%input%" =="j" goto skinj
if "%input%" =="n" goto skinn
if "%input%" =="ja" goto skinj
if "%input%" =="nee" goto skinn
if "%input%" =="y" goto skinj
if "%input%" =="yes" goto skinj
if "%input%" =="no" goto skinn
goto skin

:skinen
rem Via dit toegevoegde script is het mogelijk een skin te laden. Eerst moet worden bevestigd dat alle bestanden aanwezig zijn.
if not exist skin\bckgrd_1.bmp goto skinf
if not exist skin\bckgrd_2.bmp goto skinf
rem Nu wordt een bestand "skin.tmp" aangemaakt zodat het script weet dat de skin al eerder is gevonden.
echo skin >> skin.tmp
cls
if exist skinj.cfg goto skinjen
if exist skinn.cfg goto skinnen
cls
echo A skin was found in the directory "skin".
echo This skin has all the neccesary files.
if exist skin\gbaframe.bmp echo The optional gbaframe.bmp was also found.
echo Should this skin be used?
set INPUT=
Set /P INPUT=Yes/No:
if "%input%" =="" goto skinen
if "%input%" =="J" goto skinjen
if "%input%" =="N" goto skinnen
if "%input%" =="Ja" goto skinjen
if "%input%" =="Nee" goto skinnen
if "%input%" =="Y" goto skinjen
if "%input%" =="Yes" goto skinjen
if "%input%" =="No" goto skinnen
if "%input%" =="j" goto skinjen
if "%input%" =="n" goto skinnen
if "%input%" =="ja" goto skinjen
if "%input%" =="nee" goto skinnen
if "%input%" =="y" goto skinjen
if "%input%" =="yes" goto skinjen
if "%input%" =="no" goto skinnen
goto skinen

:skinj
cls
echo De aanwezige skin zal nu gebruikt worden.
copy skin\bckgrd_1.bmp YSMenu\YSMenu1.bmp
copy skin\bckgrd_2.bmp YSMenu\YSMenu2.bmp
if exist skin\gbaframe.bmp copy skin\gbaframe.bmp YSMenu\gbaframe.bmp
cls
echo De skin is nu gekopieerd.
goto stap8

:skinjen
cls
echo The skin will now be used.
copy skin\bckgrd_1.bmp YSMenu\YSMenu1.bmp
copy skin\bckgrd_2.bmp YSMenu\YSMenu2.bmp
if exist skin\gbaframe.bmp copy skin\gbaframe.bmp YSMenu\gbaframe.bmp
cls
echo The skin has been copied.
goto stap8en

:skinn
cls
echo De skin wordt niet gebruikt.
goto stap8

:skinnen
cls
echo The skin will not be used.
goto stap8en

:skinf
cls
echo De map "skin" is aanwezig, maar bevat niet de benodigde bestanden voor een skin!
echo.
echo Indien de skin gebruikt moet worden, controleer dan of de volgende bestanden in ieder geval in de map aanwezig zijn:
echo bckgrd_1.bmp
echo bckgrd_2.bmp
echo Eventueel kan ook gbaframe.bmp gebruikt worden.
echo.
echo Als de skin niet gebruikt moet worden, verwijder of hernoem de map "skin" dan nu.
pause
goto stap8

:skinfen
cls
echo The directory "skin" is present, but the neccesary files could not be found!
echo.
echo If this skin should be used, make sure these files are available:
echo bckgrd_1.bmp
echo bckgrd_2.bmp
echo The file gbaframe.bmp is optional.
echo.
echo If the skin should not be used, please rename or delete the directory now.
pause
goto stap8en

:stap8
rem Dit is een goed moment om een eventuele skin te laden.
rem Als de skin al is geselecteerd moet dit gedeelte worden overgeslagen.
if exist skin.tmp goto stap8s
if exist skin goto skin
goto stap8s

:stap8en
rem Dit is een goed moment om een eventuele skin te laden.
rem Als de skin al is geselecteerd moet dit gedeelte worden overgeslagen.
if exist skin.tmp goto stap8sen
if exist skin goto skinen
goto stap8sen

:stap8s
rem Het tijdelijke bestand voor de skin mag nu weg.
del skin.tmp
rem YSmenu.ini moet bewerkt worden om 'm Engels te maken, maar ik vervang 'm gewoon.
rem Het meegeleverde, van tevoren aangemaakte bestand "en" wordt hiervoor gebruikt.
rem Er is nu ook een keuze om een Nederlands taalbestand te gebruiken, vandaar dit menu.
del YSMenu.ini
7za.exe e lang.7z
cls
if exist ysen.cfg goto stap8a
if exist ysnl.cfg goto stap8b
if exist ysfr.cfg goto stap8c
if exist ysja.cfg goto stap8d
cls
echo YSMenu kan worden geïnstalleerd in het Engels, Frans, Nederlands of Japans.
echo Welke taal moet worden gebruikt?
set INPUT=
Set /P INPUT=EN/NL/FR/JA:
if "%input%" =="" goto stap8
if "%input%" =="EN" goto stap8a
if "%input%" =="en" goto stap8a
if "%input%" =="En" goto stap8a
if "%input%" =="NL" goto stap8b
if "%input%" =="nl" goto stap8b
if "%input%" =="Nl" goto stap8b
if "%input%" =="FR" goto stap8c
if "%input%" =="fr" goto stap8c
if "%input%" =="Fr" goto stap8c
if "%input%" =="JA" goto stap8d
if "%input%" =="ja" goto stap8d
if "%input%" =="Ja" goto stap8d
goto stap8s

:stap8sen
rem Het tijdelijke bestand voor de skin mag nu weg.
del skin.tmp
rem YSmenu.ini moet bewerkt worden om 'm Engels te maken, maar ik vervang 'm gewoon.
rem Het meegeleverde, van tevoren aangemaakte bestand "en" wordt hiervoor gebruikt.
rem Er is nu ook een keuze om een Nederlands taalbestand te gebruiken, vandaar dit menu.
del YSMenu.ini
7za.exe e lang.7z
cls
if exist ysen.cfg goto stap8aen
if exist ysnl.cfg goto stap8ben
if exist ysfr.cfg goto stap8cen
if exist ysja.cfg goto stap8den
cls
echo YSMenu can be installed in English, French, Dutch or Japanese.
echo Which language should be used?
set INPUT=
Set /P INPUT=EN/NL/FR/JA:
if "%input%" =="" goto stap8en
if "%input%" =="EN" goto stap8aen
if "%input%" =="en" goto stap8aen
if "%input%" =="En" goto stap8aen
if "%input%" =="NL" goto stap8ben
if "%input%" =="nl" goto stap8ben
if "%input%" =="Nl" goto stap8ben
if "%input%" =="FR" goto stap8cen
if "%input%" =="fr" goto stap8cen
if "%input%" =="Fr" goto stap8cen
if "%input%" =="JA" goto stap8den
if "%input%" =="ja" goto stap8den
if "%input%" =="Ja" goto stap8den
goto stap8sen

:stap8a
cls
copy en YSMenu.ini
cls
goto stap9

:stap8aen
cls
copy en YSMenu.ini
cls
goto stap9en

:stap8b
cls
echo Deze Nederlandse vertaling van YSMenu is gemaakt door Maikel Steneker.
if not exist ysnl.cfg pause
copy nl YSMenu.ini
cls
goto stap9

:stap8ben
cls
echo This Dutch translation of YSMenu was made by Maikel Steneker.
if not exist ysnl.cfg pause
copy nl YSMenu.ini
cls
goto stap9en

:stap8c
cls
echo Deze Franse vertaling van YSMenu is gemaakt door http://supercard-france.info.
if not exist ysfr.cfg pause
copy fr YSMenu.ini
cls
goto stap9

:stap8cen
cls
echo This French translation of YSMenu was nade by http://supercard-france.info.
if not exist ysfr.cfg pause
copy fr YSMenu.ini
cls
goto stap9en

:stap8d
cls
copy ja YSMenu.ini
cls
goto stap9

:stap8den
cls
copy ja YSMenu.ini
cls
goto stap9en

:stap9
rem YSMenu moet nu nog hernoemd worden.
ren YSMenu.nds akmenu4.nds
cls
goto stap10

:stap9en
rem YSMenu moet nu nog hernoemd worden.
ren YSMenu.nds akmenu4.nds
cls
goto stap10en

:stap10
rem In dit geval dient stap 10 om de benodigde lettertypen uit te pakken. Deze zijn afkomstig van het DSTT firmware en staan in font.7z
7za.exe e font.7z
goto stap11

:stap10en
rem In dit geval dient stap 10 om de benodigde lettertypen uit te pakken. Deze zijn afkomstig van het DSTT firmware en staan in font.7z
7za.exe e font.7z
goto stap11en

:stap11
rem Alles is nu klaar, maar het is nog niet duidelijk welke bestanden gekopieerd moeten worden naar het SD-kaartje.
rem Ik zal nu 7z gebruiken om het geheel in een zip-bestand te zetten dat verwijderd wordt als het al bestaat.
if exist ak2_custom_release-ak2_407a15.zip del ak2_custom_release-ak2_407a15.zip
rem Eerst moet er een map worden aangemaakt waarin de benodigde bestanden van YSMenu staan. Alleen akmenu4.nds blijft los over.
md YSMenu
copy akloader.nds YSMenu
copy system.ank YSMenu
copy system.fon YSMenu
copy system.l2u YSMenu
copy system.u2l YSMenu
copy USRCHEAT.DAT YSMenu
copy YSMenu.ini YSMenu
rem Vervolgens zip ik het geheel...
cls
7za.exe a ak2_custom_release-ak2_407a15.zip YSMenu akmenu4.nds
cls
rem En verwijder ik alles wat er niet hoort.
echo Bezig met het verwijderen van de tijdelijke bestanden...
del en
del fr
del nl
del ja
del akloader.nds
del akmenu4.nds
del system.ank
del system.fon
del system.l2u
del system.u2l
del YSMenu.ini
del YSMenu.txt
del YSMenu_eng.txt
rd YSMenu /s /q
cls
echo Het custom AceKard 2 firmware is nu klaar.
echo De benodigde bestanden zijn in het bestand ak2_custom_release.zip gezet.
echo Installeer deze op je SD-kaartje zoals je dat gewend bent.
pause
goto end

:stap11en
rem Alles is nu klaar, maar het is nog niet duidelijk welke bestanden gekopieerd moeten worden naar het SD-kaartje.
rem Ik zal nu 7z gebruiken om het geheel in een zip-bestand te zetten dat verwijderd wordt als het al bestaat.
if exist ak2_custom_release-ak2_407a15.zip del ak2_custom_release-ak2_407a15.zip
rem Enkele bestanden kunnen beter in de map YSMenu staan.
copy akloader.nds YSMenu
copy system.ank YSMenu
copy system.fon YSMenu
copy system.l2u YSMenu
copy system.u2l YSMenu
copy USRCHEAT.DAT YSMenu
copy YSMenu.ini YSMenu
rem Vervolgens zip ik het geheel...
cls
7za.exe a ak2_custom_release-ak2_407a15.zip YSMenu akmenu4.nds
cls
rem En verwijder ik alles wat er niet hoort.
echo Deleting temporary files...
del en
del fr
del nl
del ja
del akloader.nds
del akmenu4.nds
del system.ank
del system.fon
del system.l2u
del system.u2l
del YSMenu.ini
del YSMenu.txt
del YSMenu_eng.txt
rd YSMenu /s /q
rd font /s /q
cls
echo The custom AceKard 2 firmware is now ready.
echo All of the neccesary files are in the file 
echo  \/            \/            \/
echo ak2_custom_release-ak2_407a15.zip.
echo  /\            /\            /\
echo Install these files to your SD-card as normal.
pause
goto end

:end
del autonl.cfg
del autoen.cfg
del delrls.cfg
del skinj.cfg
del skinn.cfg
del ysen.cfg
del ysnl.cfg
del ysfr.cfg
del ysja.cfg
cls
exit