#!/bin/bash

# Répertoire absolu du fichier
RELPAT="$(dirname $0)"

#Fonction pour faire une pause comme sous Widnows, Ouuaaaa !
function pause {
	echo "Appuyer la touche <Entrée> pour continuer..."
	read touche
}

function menup {
	clear
	PS3="Choisissez (1-5)"
	echo "#####################################################"
	echo "#                   Menu Principal                  #"
	echo "#####################################################"
	select select_menup in "Quitter" "TI-nSpire CAS" "TI-nSpire" "Fichier bin" "Aide"
	do
		break
	done
}

function cas {
	clear	
	PS3="Choisissez (1-5)"
	echo "#####################################################"
	echo "#                Menu TI-nSpire CAS                 #"
	echo "#####################################################"
	select select_cas in "Retour" "Extraire le boot2" "Créer une ROM" "Lancer une ROM sur le boot1" "Lancer une ROM sur le boot2"
	do
		break
	done
}

function noncas {
	clear	
	PS3="Choisissez (1-7)"
	echo "#####################################################"
	echo "#                  Menu TI-nSpire                   #"
	echo "#####################################################"
	select select_noncas in "Retour" "Extraire le boot2" "Créer une ROM" "Lancer une ROM sur le boot1" "Lancer une ROM en mode 84+ sur le boot1" "Lancer une ROM sur le boot2" "Lancer une ROM en mode 84+ sur le boot2"
	do
		break
	done
}

function binrun {
	clear
	echo "#####################################################"
	echo "#              Lancer un fichier *.bin              #"
	echo "#####################################################"
	read -p "Entrez le nom du fichier *.bin à utiliser (sans extension) : " -e binfile
	"$RELPAT"/nspire_emu /B="$binfile".bin
	pause
}

function extboot2 {
	clear
	echo "#####################################################"
	echo "#           Extraire le Boot2 de boot2.img          #"
	echo "#####################################################"
	wine "$RELPAT"/imgdump.exe boot2.img
	pause
}

function romnoncas {
	clear
	echo "#####################################################"
	echo "#             Créer une ROM TI-nSpire               #"
	echo "#####################################################"
	read -p "Entrez le nom de la ROM à creer *.rom (sans extension) : " -e rom
	read -p "Entrez le nom de l'OS à utiliser *.tno (sans extension) : " -e os
	"$RELPAT"/nspire_emu /F="$rom".rom /N /PB=boot2.img /PO="$os".tno
	pause
}

function romcas {
	clear
	echo "#####################################################"
	echo "#            Créer une ROM TI-nSpire CAS            #"
	echo "#####################################################"
	read -p "Entrez le nom de la ROM à creer *.rom (sans extension) : " -e rom
	read -p "Entrez le nom de l'OS à utiliser *.tnc (sans extension) : " -e os
	"$RELPAT"/nspire_emu /F="$rom".rom /N /PB=boot2.img /PO="$os".tnc /C
	pause
}

function runnoncasb1 {
	clear
	echo "#####################################################"
	echo "#       Lancer une ROM TI-nSpire sur le boot1       #"
	echo "#####################################################"
	read -p "Entrez le nom de la ROM à utiliser *.rom (sans extension) : " -e rom
	read -p "Entrez le nom du boot1 à utiliser *.img (sans extension) : " -e boot1
	"$RELPAT"/nspire_emu /F="$rom".rom /1="$boot1".img
	pause
}

function runnoncas84b1 {
	clear
	echo "#####################################################"
	echo "# Lancer une ROM TI-nSpire en mode 84+ sur le boot1 #"
	echo "#####################################################"
	read -p "Entrez le nom de la ROM à utiliser *.rom (sans extension) : " -e rom
	read -p "Entrez le nom du boot1 à utiliser *.img (sans extension) : " -e boot1
	"$RELPAT"/nspire_emu /F="$rom".rom /1="$boot1".img /K
	pause
}

function runcasb1 {
	clear
	echo "#####################################################"
	echo "#     Lancer une ROM TI-nSpire CAS sur le boot1     #"
	echo "#####################################################"
	read -p "Entrez le nom de la ROM à utiliser *.rom (sans extension) : " -e rom
	read -p "Entrez le nom du boot1 à utiliser *.img (sans extension) : " -e boot1
	"$RELPAT"/nspire_emu /F="$rom".rom /1="$boot1".img /C
	pause
}

function runnoncasb2 {
	clear
	echo "#####################################################"
	echo "#       Lancer une ROM TI-nSpire sur le boot2       #"
	echo "#####################################################"
	read -p "Entrez le nom de la ROM à utiliser *.rom (sans extension) : " -e rom
	"$RELPAT"/nspire_emu /F="$rom".rom /B=boot2.img.raw
	pause
}

function runnoncas84b2 {
	clear
	echo "#####################################################"
	echo "# Lancer une ROM TI-nSpire en mode 84+ sur le boot2 #"
	echo "#####################################################"
	read -p "Entrez le nom de la ROM à utiliser *.rom (sans extension) : " -e rom
	"$RELPAT"/nspire_emu /F="$rom".rom /B=boot2.img.raw /K
	pause
}

function runcasb2 {
	clear
	echo "#####################################################"
	echo "#     Lancer une ROM TI-nSpire CAS sur le boot2     #"
	echo "#####################################################"
	read -p "Entrez le nom de la ROM à utiliser *.rom (sans extension) : " -e rom
	"$RELPAT"/nspire_emu /F="$rom".rom /B=boot2.img.raw /C
	pause
}

function aide {
	clear
	echo "#####################################################"
	echo "#                      Aide                         #"
	echo "#                   ----------                     ##"
	echo "##    sur l'utilisation de l'emulateur en boot2    ##"
	echo "#####################################################"
	echo "- Recuperez le fichier de mise a jour TI (*.tnc/*.tno) en le telechargeant  "
	echo "  depuis le site de TI ou sur TI-bank, qui lui ressence une grande partie "
	echo "  des OS ayant existes."
	echo "- Copiez ce fichier dans la racine du dossier de l'emulateur."
	echo "- Le renommer pour plus de simplicite (ex : 17.tnc) !"
	echo "- L'assimiler a un format *.zip."
	echo "- Ouvrir l'archive et en extraire 'boot2.img' et le placer dans la racine"
	echo "  du dossier de l'emulateur."
	echo "- Retablir l'extension du fichier de mise a jour TI (*.tnc/*.tno)."
	echo "- Grace a ce fichier batch, decryptez le 'boot2.img'."
	echo "- Grace a ce fichier batch, lancez l'emulation."
	echo "### Pour regarder ce tutoriel en video : http://vimeo.com/8884626"
	pause
}

while [  "$select_menup" != "Quitter"  ]; do
	menup
	if [ "$select_menup" = "TI-nSpire CAS" ]; then
		while [ "$select_cas" != "Retour" ]; do		
			cas		
			if [ "$select_cas" = "Extraire le boot2" ]; then
				extboot2
			elif [ "$select_cas" = "Créer une ROM" ]; then
				romcas
			elif [ "$select_cas" = "Lancer une ROM sur le boot1" ]; then
				runcasb1
			elif [ "$select_cas" = "Lancer une ROM sur le boot2" ]; then
				runcasb2
			fi
		done
	select_cas=$"none"
	elif [ "$select_menup" = "TI-nSpire" ]; then
		while [ "$select_noncas" != "Retour" ]; do			
			noncas
			if [ "$select_noncas" = "Extraire le boot2" ]; then
				extboot2
			elif [ "$select_noncas" = "Créer une ROM" ]; then
				romnoncas
			elif [ "$select_noncas" = "Lancer une ROM sur le boot1" ]; then
				runnoncasb1
			elif [ "$select_noncas" = "Lancer une ROM en mode 84+ sur le boot1" ]; then
				runnoncas84b1
			elif [ "$select_noncas" = "Lancer une ROM sur le boot2" ]; then
				runnoncasb2
			elif [ "$select_noncas" = "Lancer une ROM en mode 84+ sur le boot2" ]; then
				runnoncas84b2
			fi
		done
	select_noncas=$"none"
	elif [ "$select_menup" = "Fichier bin" ]; then
		binrun	
	elif [ "$select_menup" = "Aide" ]; then
		aide	
	fi
done

# Credits
clear
echo "Merci d'avoir utilisé ce shell Bash réalisé par Levak"
echo "Un grand merci à Goplat pour son émulateur et à xspire pour son skin !"
echo ""
pause
clear
