VTi Portable 2.5 Beta 5 Development Test 2

OliverK's picture
Submitted by OliverK on September 30, 2008 - 3:11pm

Application:VTi
Category:Education
Description: The popular TI calculator packaged to go as a portable app. Please realize that if you do not have Administrative rights, the application cannot function, and will alert you. The source is included, so if you could manage to fix that, we'd all be really really rea... thankful

You will need roms. Two LEGAL roms available for download from the Ti Education website. Note: I know these work, if you wish to use the other roms, you will need to dig up older versions then are currently on the website. If I find them, I'll link them. Place the roms under Data\roms\

  • TI-92 Plus
  • TI-89 OS Do not use the Titanium rom- it will not function.
  • I was able to get ahold of the TI-83+ by emailing. Ask for TI-84 Plus OS 1.03
  • I found this online. It or the TI-83+ ROM image

I located the source for the project and included it under Other\Source\vtisrc.zip

Download VTi Portable 2.5.0.5 Development Test 2
Download VTi Portable from Nascent Project Mirror
[1.32 MB download / 1.5 MB installed]
(MD5: 9a72d4d1e6eb89ce0c9f946b125d22dd)

Release Notes:

Development Test 1 (2008-09-30): Initial release

Development Test 2 (2008-10-2): REQUIRED UPDATE!


( categories: )

any reason why the needed

any reason why the needed legal ROM's are not included in the application?

To stay away from licensing

To stay away from licensing issues- I'd rather not worry about them, plus then I'd have to get permission from TI. You can actually just download the Operating Systems for the calculator, then put them in data\roms.

Good gracious! There goes a kangaroo. I must have a practice with me boomerang- Now then, slowly back
If you throw that thing at me, I'll jump right on your head.
Innit marvellous? Got a land full of kangaroos and I had to pick that one.

What about other calculators?

Can one use the TI-83 or 84 ROMs with this? Also, how would I install apps or programs (if it's even possible)?

When life hands you lemons, make lemonade!

Check out forums.brighthand.com and look for me (as the same username).

Why do I say "huzzah"? Play this and see! http://www.miraigamer.net/cavestory/

You would need to get the

You would need to get the roms for those. If you can find a TI-84 operating system versions 1.03 or somewhere, put that under Data\roms. Any OS's/ROMS should be placed in that directory.

Installing apps requires older linking cables. Right click anywhere on the calculator and you'll get a display of the options.

I'm working on the getting the launcher to allow multiple luanches, so that you can also do the virtual link.

Good gracious! There goes a kangaroo. I must have a practice with me boomerang- Now then, slowly back
If you throw that thing at me, I'll jump right on your head.
Innit marvellous? Got a land full of kangaroos and I had to pick that one.

ROMs

If I download a ROM from the TI web page, then what do I do? Those ROMs are for uploading to a calculator. Any help?

I'm going to assume that its

I'm going to assume that its installed to the PortableApps Directory and has been run at least once.

You will have the following folder directory style

PortableApps
---VTiPortable
------App
---------DefualtData
---------VTi
------Data
---------settings
---------roms
------------TI-89.89u
------------(Whatever other os's you managed to find)
------Other

Download the OS/roms. Put them in the roms folder. Yes, they are for uploading to the calculator, however, VTi will use them for the calculator.

I hope this answers your question.

Good gracious! There goes a kangaroo. I must have a practice with me boomerang- Now then, slowly back
If you throw that thing at me, I'll jump right on your head.
Innit marvellous? Got a land full of kangaroos and I had to pick that one.

ROMs

Thank you.

No Problem. General

No Problem.

General Announcement: Be looking for a update in a couple of hours

Good gracious! There goes a kangaroo. I must have a practice with me boomerang- Now then, slowly back
If you throw that thing at me, I'll jump right on your head.
Innit marvellous? Got a land full of kangaroos and I had to pick that one.

Skins Directory

I had actually written a launcher for it awhile back which allowed for a roms directory, a settings directory, and a skins directory. It would be nice if you could also have a folder under the data directory for the skins too, it makes the program much more usable. If you want I can post my launcher here, it's pretty rough so I'm sure you can find a better way to do it. Let me know.

Sure, go ahead and post the

Sure, go ahead and post the source code.

Right now, there's no file movement, something I'd prefer to keep.

Good gracious! There goes a kangaroo. I must have a practice with me boomerang- Now then, slowly back
If you throw that thing at me, I'll jump right on your head.
Innit marvellous? Got a land full of kangaroos and I had to pick that one.

It's Pretty Rough

It's pretty rough, and the code could probably be cleaned up a bit, but here it is:

;Copyright (C) 2004-2008 John T. Haller
;Copyright (C) 2008 Devo

;Website: http://PortableApps.com/Development/test

;This software is OSI Certified Open Source Software.
;OSI Certified is a certification mark of the Open Source Initiative.

;This program is free software; you can redistribute it and/or
;modify it under the terms of the GNU General Public License
;as published by the Free Software Foundation; either version 2
;of the License, or (at your option) any later version.

;This program is distributed in the hope that it will be useful,
;but WITHOUT ANY WARRANTY; without even the implied warranty of
;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;GNU General Public License for more details.

;You should have received a copy of the GNU General Public License
;along with this program; if not, write to the Free Software
;Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

!define PORTABLEAPPNAME "VirtualTI Portable"
!define NAME "VirtualTIPortable"
!define APPNAME "VirtualTI"
!define VER "2.5.0.5"
!define WEBSITE "http://www.ticalc.org/archives/files/fileinfo/84/8442.html"
!define DEFAULTEXE "Vti.exe"
!define DEFAULTAPPDIR "virtualti"
!define DEFAULTSETTINGSPATH "settings"

;=== Program Details
Name "${PORTABLEAPPNAME}"
OutFile "..\..\${NAME}.exe"
Caption "${PORTABLEAPPNAME} | PortableApps.com"
VIProductVersion "${VER}"
VIAddVersionKey ProductName "${PORTABLEAPPNAME}"
VIAddVersionKey Comments "Allows ${APPNAME} to be run from a removable drive.  For additional details, visit ${WEBSITE}"
VIAddVersionKey CompanyName "PortableApps.com"
VIAddVersionKey LegalCopyright "John T. Haller"
VIAddVersionKey FileDescription "${PORTABLEAPPNAME}"
VIAddVersionKey FileVersion "${VER}"
VIAddVersionKey ProductVersion "${VER}"
VIAddVersionKey InternalName "${PORTABLEAPPNAME}"
VIAddVersionKey LegalTrademarks "PortableApps.com is a Trademark of Rare Ideas, LLC."
VIAddVersionKey OriginalFilename "${NAME}.exe"
;VIAddVersionKey PrivateBuild ""
;VIAddVersionKey SpecialBuild ""

;=== Runtime Switches
CRCCheck On
WindowIcon Off
SilentInstall Silent
AutoCloseWindow True
RequestExecutionLevel user

; Best Compression
SetCompress Auto
SetCompressor /SOLID lzma
SetCompressorDictSize 32
SetDatablockOptimize On

;=== Include
!include "Registry.nsh"
!include "GetParameters.nsh"
!include "MUI.nsh"

;=== Program Icon
Icon "..\..\App\AppInfo\appicon.ico"

;=== Icon & Stye ===
!define MUI_ICON "..\..\App\AppInfo\appicon.ico"

;=== Languages
!insertmacro MUI_LANGUAGE "English"

LangString LauncherFileNotFound ${LANG_ENGLISH} "${PORTABLEAPPNAME} cannot be started. You may wish to re-install to fix this issue. (ERROR: $MISSINGFILEORPATH could not be found)"
LangString LauncherAlreadyRunning ${LANG_ENGLISH} "Another instance of ${APPNAME} is already running. Please close other instances of ${APPNAME} before launching ${PORTABLEAPPNAME}."
LangString LauncherAskCopyLocal ${LANG_ENGLISH} "${PORTABLEAPPNAME} appears to be running from a location that is read-only. Would you like to temporarily copy it to the local hard drive and run it from there?$\n$\nPrivacy Note: If you say Yes, your personal data within ${PORTABLEAPPNAME} will be temporarily copied to a local drive. Although this copy of your data will be deleted when you close ${PORTABLEAPPNAME}, it may be possible for someone else to access your data later."
LangString LauncherNoReadOnly ${LANG_ENGLISH} "${PORTABLEAPPNAME} can not run directly from a read-only location and will now close."

Var PROGRAMDIRECTORY
Var SETTINGSDIRECTORY
Var ADDITIONALPARAMETERS
Var EXECSTRING
Var PROGRAMEXECUTABLE
Var INIPATH
Var DISABLESPLASHSCREEN
Var ISDEFAULTDIRECTORY
Var SECONDARYLAUNCH
Var FAILEDTORESTOREKEY
Var MISSINGFILEORPATH


Section "Main"
	;=== Check if already running
	System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${NAME}2") i .r1 ?e'
	Pop $0
	StrCmp $0 0 CheckForINI
		StrCpy $SECONDARYLAUNCH "true"

	CheckForINI:
	;=== Find the INI file, if there is one
		IfFileExists "$EXEDIR\${NAME}.ini" "" NoINI
			StrCpy "$INIPATH" "$EXEDIR"
			Goto ReadINI

	ReadINI:
		;=== Read the parameters from the INI file
		ReadINIStr $0 "$INIPATH\${NAME}.ini" "${NAME}" "${APPNAME}Directory"
		StrCpy "$PROGRAMDIRECTORY" "$EXEDIR\$0"
		ReadINIStr $0 "$INIPATH\${NAME}.ini" "${NAME}" "SettingsDirectory"
		StrCpy "$SETTINGSDIRECTORY" "$EXEDIR\$0"

		;=== Check that the above required parameters are present
		IfErrors NoINI

		ReadINIStr $0 "$INIPATH\${NAME}.ini" "${NAME}" "AdditionalParameters"
		StrCpy "$ADDITIONALPARAMETERS" $0
		ReadINIStr $0 "$INIPATH\${NAME}.ini" "${NAME}" "${APPNAME}Executable"
		StrCpy "$PROGRAMEXECUTABLE" $0
		ReadINIStr $0 "$INIPATH\${NAME}.ini" "${NAME}" "DisableSplashScreen"
		StrCpy "$DISABLESPLASHSCREEN" $0

	;CleanUpAnyErrors:
		;=== Any missing unrequired INI entries will be an empty string, ignore associated errors
		ClearErrors

		;=== Correct PROGRAMEXECUTABLE if blank
		StrCmp $PROGRAMEXECUTABLE "" "" CheckForProgramINI
			StrCpy "$PROGRAMEXECUTABLE" "${DEFAULTEXE}"
			Goto CheckForProgramINI
			
	CheckForProgramINI:
		IfFileExists "$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE" FoundProgramEXE NoProgramEXE

	NoINI:
		;=== No INI file, so we'll use the defaults
		StrCpy "$ADDITIONALPARAMETERS" ""
		StrCpy "$PROGRAMEXECUTABLE" "${DEFAULTEXE}"
		StrCpy "$DISABLESPLASHSCREEN" "false"

		IfFileExists "$EXEDIR\App\${DEFAULTAPPDIR}\${DEFAULTEXE}" "" NoProgramEXE
			StrCpy "$PROGRAMDIRECTORY" "$EXEDIR\App\${DEFAULTAPPDIR}"
			StrCpy "$SETTINGSDIRECTORY" "$EXEDIR\Data\${DEFAULTSETTINGSPATH}"
			StrCpy "$ISDEFAULTDIRECTORY" "true"
			GoTo FoundProgramEXE

	NoProgramEXE:
		;=== Program executable not where expected
		StrCpy $MISSINGFILEORPATH $PROGRAMEXECUTABLE
		MessageBox MB_OK|MB_ICONEXCLAMATION `$(LauncherFileNotFound)`
		Abort
		
	FoundProgramEXE:
		;=== Check if already running
		StrCmp $SECONDARYLAUNCH "true" CheckForSettings
		FindProcDLL::FindProc "$PROGRAMEXECUTABLE"                 
		StrCmp $R0 "1" WarnAnotherInstance CheckForSettings

	WarnAnotherInstance:
		MessageBox MB_OK|MB_ICONINFORMATION `$(LauncherAlreadyRunning)`
		Abort
	
	CheckForSettings:
		IfFileExists "$SETTINGSDIRECTORY\*.*" SettingsFound
		;=== No settings found
		StrCmp $ISDEFAULTDIRECTORY "true" CopyDefaultSettings
		CreateDirectory $SETTINGSDIRECTORY
		Goto SettingsFound
	
	CopyDefaultSettings:
		CreateDirectory "$EXEDIR\Data"
		CreateDirectory "$EXEDIR\Data\settings"
		CreateDirectory "$EXEDIR\Data\roms"
		CreateDirectory "$EXEDIR\Data\skins"
		CopyFiles /SILENT $EXEDIR\App\DefaultData\settings\*.* $EXEDIR\Data\settings
		CopyFiles /SILENT $EXEDIR\App\DefaultData\skins\*.* $EXEDIR\Data\skins
		Goto SettingsFound

	SettingsFound:
		StrCmp $DISABLESPLASHSCREEN "true" GetPassedParameters
			;=== Show the splash screen before processing the files
			InitPluginsDir
			File /oname=$PLUGINSDIR\splash.jpg "${NAME}.jpg"	
			newadvsplash::show /NOUNLOAD 1500 200 0 -1 /L $PLUGINSDIR\splash.jpg

	GetPassedParameters:
		;=== Get any passed parameters
		Call GetParameters
		Pop $0
		StrCmp "'$0'" "''" "" LaunchProgramParameters

		;=== No parameters
		StrCpy $EXECSTRING `"$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE"`
		Goto AdditionalParameters

	LaunchProgramParameters:
		StrCpy $EXECSTRING `"$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE" $0`

	AdditionalParameters:
		StrCmp $ADDITIONALPARAMETERS "" RegistryBackup

		;=== Additional Parameters
		StrCpy $EXECSTRING `$EXECSTRING $ADDITIONALPARAMETERS`

	RegistryBackup:
		StrCmp $SECONDARYLAUNCH "true" LaunchAndExit
		;=== Backup the registry
		${registry::KeyExists} "HKEY_LOCAL_MACHINE\SOFTWARE\ACZ-BackupByVirtualTIPortable" $R0
		StrCmp $R0 "0" RestoreTheKey
		${registry::KeyExists} "HKEY_LOCAL_MACHINE\SOFTWARE\ACZ" $R0
		StrCmp $R0 "-1" RestoreTheKey
		${registry::MoveKey} "HKEY_LOCAL_MACHINE\SOFTWARE\ACZ" "HKEY_LOCAL_MACHINE\SOFTWARE\ACZ-BackupByVirtualTIPortable" $R0
		Sleep 100
		
	RestoreTheKey:
		IfFileExists "$SETTINGSDIRECTORY\virtualti.reg" "" LaunchNow
	
		IfFileExists "$WINDIR\system32\reg.exe" "" RestoreTheKey9x
			nsExec::ExecToStack `"$WINDIR\system32\reg.exe" import "$SETTINGSDIRECTORY\virtualti.reg"`
			Pop $R0
			StrCmp $R0 '0' LaunchNow ;successfully restored key

	RestoreTheKey9x:
		${registry::RestoreKey} "$SETTINGSDIRECTORY\virtualti.reg" $R0
		StrCmp $R0 '0' LaunchNow ;successfully restored key
		StrCpy $FAILEDTORESTOREKEY "true"
	
	LaunchNow:
		CopyFiles /SILENT $EXEDIR\Data\roms\*.* $EXEDIR\App\${DEFAULTAPPDIR}
		CopyFiles /SILENT $EXEDIR\Data\skins\*.* $EXEDIR\App\${DEFAULTAPPDIR}
		SetOutPath $PROGRAMDIRECTORY
		Sleep 100
		ExecWait $EXECSTRING
		
	CheckRunning:
		Sleep 1000
		FindProcDLL::FindProc "${DEFAULTEXE}"                  
		StrCmp $R0 "1" CheckRunning
		
		StrCmp $FAILEDTORESTOREKEY "true" SetOriginalKeyBack
		${registry::SaveKey} "HKEY_LOCAL_MACHINE\SOFTWARE\ACZ" "$SETTINGSDIRECTORY\virtualti.reg" "" $0
		Sleep 100
	
	SetOriginalKeyBack:
		${registry::DeleteKey} "HKEY_LOCAL_MACHINE\SOFTWARE\ACZ" $R0
		Sleep 100
		${registry::KeyExists} "HKEY_LOCAL_MACHINE\SOFTWARE\ACZ-BackupByVirtualTIPortable" $R0
		StrCmp $R0 "-1" TheEnd
		${registry::MoveKey} "HKEY_LOCAL_MACHINE\SOFTWARE\ACZ-BackupByVirtualTIPortable" "HKEY_LOCAL_MACHINE\SOFTWARE\ACZ" $R0
		Sleep 100
		Goto TheEnd
	
	LaunchAndExit:
		SetOutPath $PROGRAMDIRECTORY
		Sleep 100
		Exec $EXECSTRING
	
	TheEnd:
		CopyFiles /SILENT $EXEDIR\App\${DEFAULTAPPDIR}\*.rom $EXEDIR\Data\roms
		CopyFiles /SILENT $EXEDIR\App\${DEFAULTAPPDIR}\*.sav $EXEDIR\Data\roms
		CopyFiles /SILENT $EXEDIR\App\${DEFAULTAPPDIR}\*.9xu $EXEDIR\Data\roms
		CopyFiles /SILENT $EXEDIR\App\${DEFAULTAPPDIR}\*.89u $EXEDIR\Data\roms
		CopyFiles /SILENT $EXEDIR\App\${DEFAULTAPPDIR}\*.skn $EXEDIR\Data\skins
		Delete "$PROGRAMDIRECTORY\*.rom"
		Delete "$PROGRAMDIRECTORY\*.sav"
		Delete "$PROGRAMDIRECTORY\*.9xu"
		Delete "$PROGRAMDIRECTORY\*.89u"
		Delete "$PROGRAMDIRECTORY\*.skn"
		${registry::Unload}
		newadvsplash::stop /WAIT
SectionEnd

I had the skins in the DefaultData folder since they're included with the zip file from the ticalc.org website. I have found other places that have modified skins, but those were the default. TheEnd section needs to be cleaned up, as I've just thrown all the movement of files back to the Data directory there.

NEW VERSION This is a

NEW VERSION
This is a required update- the template I was using missed some code, and I didn't think about it, so :( for me.

Also, this removes the limit that you can only run of of the programs. I thought, and there was no good way to get around it. You have the option of a virtual link, so the new version allows you to run multiple VTi instances.

Good gracious! There goes a kangaroo. I must have a practice with me boomerang- Now then, slowly back
If you throw that thing at me, I'll jump right on your head.
Innit marvellous? Got a land full of kangaroos and I had to pick that one.