Difference between revisions of "Formats"
Line 108: | Line 108: | ||
|} | |} | ||
The flag byte in position 1 varies between different programs (MyArt, YAPP etc.). The specification of the YAPP program defines it this way: | |||
{| class="plainbits" | |||
|- | |||
! 0 !! 1 !! 2 !! 3 !! 4 !! 5 !! 6 !! 7 | |||
|- | |||
| Inter- laced | |||
| res. | |||
| res. | |||
| 1 | |||
| 1 | |||
| G7, <span style="text-decoration:overline">G6</span> | |||
| 1 | |||
| 0 | |||
|} | |||
For the G7 graphics mode (256 columns, 256 colors) the line segments immediately start with byte 2. The 512 column mode (G6) uses an indexed color mode, so the file starts with a sequence of palette color definitions before the line segments. | |||
Common values for the flag byte are 0x9E and 0xFA as used in MyArt; Barry Boone's MyArt loader considers 0xFF as indication for the G6 mode. | |||
{| class="plainbits" | {| class="plainbits" | ||
Line 127: | Line 146: | ||
|} | |} | ||
Line entries look like this: | |||
{| class="plainbits" | {| class="plainbits" |
Revision as of 11:42, 20 October 2011
We have various format definitions relevant for the TI or Geneve.
ROM dump formats
ROM dumps are the contents of the memory chips in the console or in cartridges. ROM dumps may be plain dumps, which means they reflect the contents of the chip in an unchanged way, or headered dumps where additional metadata defines the semantics of this dump in a header section at the beginning.
Dumps are specifically important for emulators, but also for modifying cartridge contents, or for running cartridges in an environment without cartridge slot (like the Geneve or the TI-99/4P aka SGCPU).
Plain dumps
Plain dumps do not define their contents by metadata, therefore care must be taken to apply these contents at the correct locations. The dumps are organized as sequences of octets, not of words, so there is no endianness. (This may be an issue when exchanging data between different platforms, as the TI is a big-endian platform, whereas Intel platforms are little-endian.)
Dumps may be fragmented or organized in application-specific ways. It is up to the user of the dumps to correctly arrange the dumps.
Emulators make use of memory dumps. For MESS, we have one dump for the 8 KiB system ROM, and one dump for the 24 KiB console GROMs (all in one continuous file). Cartridges have two ROM dumps (up to 8 KiB each) and one GROM dump file of up to 40 KiB.
For MESS, there is a convention for cartridge ROM dumps:
- ROM dumps are named like "dumpc.bin"; the second bank is called "dumpd.bin"
- GROM dumps are named like "dumpg.bin"
From version 0.131 on, MESS makes use of ROM dump packages which simplifies the handling of the dumps.
Headered dumps
The most often used headered ROM format is the GRAM Kracker format. This format was introduced for copying cartridges to image files so that their contents could be altered, they could be loaded into expansion cards, or that Geneve users could carry on using the cartridges without a cartridge slot.
File formats
File images
The TIFILES format is one of the most frequently used formats when we are concerned with file transfer. This file format is a headered, uncompressed format which contains the file types and other metadata which are important in the TI-99 file system.
Usually, TIFILES encoding is used when files are transferred to/from a PC, and stored on FTP servers.
Disk images
Disk images are required for usage in emulators.
The Sector Dump Format, also known as v9t9 format, is a consecutive sector dump. It is used in the MESS emulator for installing disk images. It contains all sectors concatenated as one byte stream, starting with sector 0 and ending with the highest sector number, like 359 for SSSD disks or 1439 for DSDD disks.
The Track Dump Format, also known as PC99 format, is a track dump. It is used in the PC99 emulator. Unlike v9t9, the PC9 format includes all track data and is therefore about 50% larger.
Emulate Files
Emulate files are actually disk images usable by the Myarc HFDC controller. With the possibility of using a hard drive, the problem appeared that many programs assume to be loaded from disk drive 1. The emulate file can be mounted and emulate the disk drive.
Other images
Files on FTP servers ending with ".max" are most probably scanned manuals in "PaperPort" format. There is a viewer on ftp.whtech.com. If you want to convert this into PDF, install the PaperPort viewer and print the file to a PDF printer, or print Postscript to a file and convert the file.
TI-99 File systems
We have file systems for various devices:
Each of them has its specifics, but in many aspects they are similar.
Content formats
Images for MyArt (Geneve painting program) are saved in the following format:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
---|---|---|---|---|---|---|---|---|
0x00 | Background | Flags | Color 0 | Color 1 | Color 2 | |||
0x08 | Color 3 | Color 4 | Color 5 | Color 6 | ||||
0x10 | Color 7 | Color 8 | Color 9 | Color 10 | ||||
0x18 | Color 11 | Color 12 | Color 13 | Color 14 | ||||
0x20 | Color 15 | Line | Line | Line | ||||
... | ... | ... | ... | ... |
The flag byte in position 1 varies between different programs (MyArt, YAPP etc.). The specification of the YAPP program defines it this way:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
Inter- laced | res. | res. | 1 | 1 | G7, G6 | 1 | 0 |
For the G7 graphics mode (256 columns, 256 colors) the line segments immediately start with byte 2. The 512 column mode (G6) uses an indexed color mode, so the file starts with a sequence of palette color definitions before the line segments.
Common values for the flag byte are 0x9E and 0xFA as used in MyArt; Barry Boone's MyArt loader considers 0xFF as indication for the G6 mode.
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Red | 0 | Blue | 0 | 0 | 0 | 0 | 0 | Green |
Line entries look like this:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Color | 0 | 0 | 0 | Length |
where length can be any value from 0 - 511. Each line element is a sequence of pixels of the given color and the given length, extending to the right. The next line element is painted one position to the right of the end of the previous one. Each screen line must have a list of line elements that add up to its length exactly, so they must not reach beyond the right border of the screen. This allows the painting program to know when a line is complete and the painting continues in the next screen row.