Classic99 is an incomplete emulator - therefore it's currently a manual process to get it to load
something. Here's what you do.

TI Console ROMS
---------------
It is not necessary to provide console ROMs anymore - they are built in! The system will automatically
start with Classic99, and you may choose another under the System menu. However, note that only the
TI-99/4A is fully supported.


Cartridge ROMS
--------------
A number of cartridges are now built into Classic99, however, you may want to add more yourself.

Currently, you must modify the Classic99.ini (it will be created after one run). See the description
of the INI file below.

Save the file, and run CLASSIC99.EXE. Press a key on the title page and select the cartridge from the list.


Disk Images (*.DSK)
-------------------
These are not ROMs, although the emulation community has taken to calling anything used with an emulator a
ROM. These are images of diskettes made popular by PC99 and V9T9. Classic99 does not currently handle disk
images very well (perhaps not at all, I haven't tested it in a while). Classic99 prefers to use files on
the hard drive as the TI File System lends itself wonderfully to expansion and we can reduce the
limitations of the original disk system this way. ;) But, eh, I'll add it in later.


Arc303 Files
------------
Arc303 is the TI's equivalent of ZIP files - they are compressed files that usually contain more than one
other file.

Usually these end with an '@' character to indicate they are archived. The Classic99 distribution includes
ARC303 on DSK1, and is ready to go with one disk drive with the default configuration.

Copy the archived file (@) into the DSK1\ folders (or any other if you set up more) using Windows. The 
example assumes you are putting everything into DSK1. If not, just substitute the correct drive number.

Start CLASSIC99.EXE. Select the Editor/Assembler under Carts->Apps. Press a key then select Editor/Assembler 
from the main menu. Next select '5 RUN PROGRAM FILE' from the Editor/Assembler menu. (Thus the term 'E/A #5'). 
Enter 'DSK1.ARC303G'.

Press a key to pass the Shareware notice, then select '2) Extract Files'. Enter your source drive (1), and
the name of the '@' file for Source Filename. Select your output drive (may still be 1), and for 'Extract
all files?' you will usually say 'Y'. If you select the same source and output drive, it will also ask
'Swap Disks?', of course with Classic99 you may say 'N'.

You'll see 'BACK / REDO / Any Key to Begin', just hit the space bar and the files will be extracted. You
can then quit the archive program and move on to running the files themselves.


TI BASIC files
--------------
No cartridges are required to be enabled.

Select TI BASIC from the main menu. The system will report 'TI BASIC READY' and provide a cursor.

You will almost certainly need CPU THROTTLING on - it's under Options. The keyboard repeat is just too
touchy.

Enter 'OLD DSK1.FILENAME', where 'DSK1' is the disk folder you have the file in, and 'FILENAME' is the name
of the file. Note that the TI likes everything in uppercase, but it often doesn't matter with Classic99.

Once it loads successfully, 'RUN' will start it up. (For programs that you don't have to type in, turning
CPU throttling back off at this point makes slow programs more bearable.)


EXTENDED BASIC files (XB)
-------------------------
You must have Extended BASIC selected as the cartridge under Carts->Apps.

Select Extended BASIC from the main menu. The system will report '* READY *' and provide a cursor.

You will almost certainly need CPU THROTTLING on - it's under Options. The keyboard repeat is just too
touchy.

Enter 'OLD DSK1.FILENAME', where 'DSK1' is the disk folder you have the file in, and 'FILENAME' is the name
of the file. Note that the TI likes everything in uppercase, but it often doesn't matter with Classic99.

Once it loads successfully, 'RUN' will start it up. (For programs that you don't have to type in, turning
CPU throttling back off at this point makes slow programs more bearable. In XB it usually will not affect
the speed of sprites, but it will improve the responsiveness!)


PROGRAM IMAGE files (E/A#5)
---------------------------
You must have Editor/Assembler selected as the cartridge under Carts->Apps.

Select Editor/Assembler from the main menu. Select '5  RUN PROGRAM FILE' from the menu. For 'File Name?',
enter 'DSK1.FILENAME', where DSK1 is the disk you have the file(s) on, and FILENAME is the first file
listed. Program images were limited to 8k, so for programs larger than 8k, multiple files were created by
adding 1 to the last character of each name. Some programs numbered the files (ie: POPEYE1, POPEYE2,
POPEYE3), but many just let the last letter increment (ie: LASSO, LASSP, LASSQ).

Program files will autostart after being loaded.


OBJECT FILES (E/A#3)
--------------------
It's very rare to come across these as Program Images were faster, smaller, and easier to load, however,
just in case...

You must have Editor/Assembler selected as the cartridge under Carts->Apps.

Select Editor/Assembler from the main menu. Select '3  LOAD AND RUN' from the menu. For 'File Name?', enter
'DSK1.FILENAME', where DSK1 is the disk you have the file(s) on, and FILENAME is the file you are currently
loading. It's possible, though even more rare, to have to load more than one file.

If the program does not autostart after loading the file(s), hit Enter on the 'File Name?' prompt to enter
a blank line. You will be prompted with 'PROGRAM NAME?', which unfortunately you need to know. However,
most E/A#3 files use 'START'.


USING TI PROGRAMS
-----------------
Many programs refer to 'REDO', 'BACK', etc, keys that are not immediately obvious. The TI used FCTN and the
number keys for these special terms, so on Classic99 it's Alt and the number key. They are laid out as
follows:

1 - DELETE
2 - INSERT
3 - ERASE
4 - CLEAR       ( Stops a BASIC or XB program)
5 - BEGIN
6 - PROCEED
7 - AID
8 - REDO
9 - BACK
= - QUIT        ( Restarts the TI)

Arrow Keys:
E - Up
S - Left
D - Right
X - Down

Extra characters:
~ - W
[ - R
] - T
_ - U
? - I
' - O
" - P
| - A
{ - F
} - G
\ - Z
` - C

Classic99.ini
-------------
While all the settings in here are intended for internal use by the emulator, it's always handy to be
able to hack around a bit! So here's a quick summary of what each field is for. If you mess with it
and the emulator crashes, though, tough. ;)

[audio]
sampleidx0	(and 1 and 2, represents the voice 0-2)
	0	square wave (default)
	1	sine wave
	2	flute
	3	oboe
	4	organ
	5	piano
	6	sax
	7	strings
	8	trombone
	9	violin

sampleloop0 (and 1 and 2, again)
	0	sample does not loop (all the samples)
	1	sample loops (square and sine wave only)

volume_mult
	should be a negative number (default -200) - sets the volume attenuation per step.

[disk]
dskpath0	(and so on through 9, represents DSK0 through DSK9)
	Specifies the path to this disk (currently only folders are supported). By default
	only DSK1 is configured to "DSK1\"

types
	A 10 character string (it must be 10 characters) indicating the type of each disk.
	The valid types per position are:
	.	not available
	T	TIFILES header (default)
	V	V9T9 header
	R	Raw file (no header - deprecated and will be removed in the future)
	I	Disk Image (not supported today)

[emulation]
AVIFilename
	Filename that will be used with 'Start Recording' to write an AVI file.
	Defaults to C:\Classic99.AVI

cputhrottle
	0	do not throttle CPU - run as fast as possible (does not speed up vertical blank!)
	1	throttle CPU, run as fast as maxipf permits

maxipf
	Maximum instructions per frame (either 50hz or 60hz). Default is 2800, but how accurate
	that is depends on the program being executed. Has no effect on the vertical interrupt
	(unless set too low), so music and sprites will generally not change pace, and neither
	will most GPL programs in general.

pauseinactive
	0	Do not pause emulation when window is not focused
	1	pause emulation when window is not focused

speedup_float
	0	Do not enable floating point simulation code - use ROM
	1	Enable floating point simulation code - bypass ROM (99/4A only!)

speedup_interrupt
	0	Do not enable interrupt simulation code - use ROM
	1	Enable interrupt simulation code - bypass ROM (99/4A only!)

slowdown_keyboard
	0	Do not slow down keyboard auto-repeat 
	1	Slow down keyboard auto-repeat (99/4A only!) (during GPL reads and when unthrottled only)

system
	0	TI-99/4
	1	TI-99/4A
	2	TI-99/4A v2.2

[joysticks]
active
	0	Do not map joysticks
	1	Map joysticks using joy1mode and joy2mode

joy1mode	(and joy2mode for joystick 2)
	0	Keyboard (arrow keys and tab)
	1	PC Joystick 1
	2	PC Joystick 2

[roms]
cartgroup
	0	Apps
	1	Games
	2	User

cartidx
	-1	No cartridge selected
	??	index of the cartridge from the appropriate menu

[UserCart0]	 (and so on up to 99)
name
	Name of the cartridge. If blank or missing, the cartridge is ignored.

message
	Compatibility notes, if desired

rom0	(0-3 for a total of 4 ROMs per cartridge)
	Contains notes for loading the cartridge. This is a pipe-limited row
	of data, formatted like so:
	T|AAAA|LLLL|filename

	T is the single character ROM type. Most carts only use G, C and X types.
	C	CPU ROM
	D	DSR ROM
	E	DSR ROM bank 2 (used for p-code)
	G	GROM
	P	P-Code GROM
	R	CPU RAM - this is loaded like CPU ROM but is not flagged as read-only!
	S	Speech ROM
	V	VDP RAM
	X	XB Bank 2 ROM (called 'D' in some systems, but I used D already)

	AAAA - load address in hexadecimal

	LLLL - length of data in hexadecimal (will override actual size of file)

	filename - filename on disk to load

	This system supports both raw ROM files, and ROM files with a 6 byte GRAM
	Kracker style header. The header is detected by checking if the first byte
	is >00 or >FF, and if the 5th and 6th bytes represent the load address. The
	header will be ignored if detected - the data in this INI file is
	considered authoritative.

[video]
FilterMode
	0	None
	1	2xSAI
	2	Super 2xSAI
	3	Super Eagle

frameskip
	Number of frames to skip drawing. This may affect interrupts as well. Default 0.

fullscreenmode
	Note: not all modes are supported on all cards. Classic99 does 16 bit rendering internally.
	1	320x240x8
	2	320x240x16
	3	320x240x24
	4	320x200x8
	5	640x480x8
	6	640x480x16 (default)
	7	640x480x24
	8	800x600x16
	9	800x600x24

hzRate
	50	50hz interrupt (PAL)
	60	60hz interrupt (NTSC)

MaintainAspect
	0	Do not maintain aspect ratio (allow any size window)
	1	Force aspect ratio (fix proportions of window)

StretchMode
	0	Do not stretch (fastest)
	1	DIB - use GDI to stretch
	2	DX - use Direct-X to stretch
	3	DX Full - use a full-screen Direct-X mode (set by fullscreenmode)

----------------------------------
Example of adding a user cartridge
----------------------------------

These lines will add Pole Position assuming it's in the MODS\ folder:

[UserCart0]
name="Pole Position"
ROM0=C|6000|2000|MODS\POLEPOSC.BIN
ROM1=X|6000|2000|MODS\POLEPOSD.BIN

Pole Position is not included - this is just an example! :) Read the [UserCart0] section above
for detailed on what the fields mean!

