TI-83+ StudyCards AppVar Format By RANDY Ruler of Zexernet (Zeroko on ticalc.org & Cemetech) 2022/05/09 This documentation is provided under the CC0 (Creative Commons Zero) Public Domain dedication (https://creativecommons.org/publicdomain/zero/1.0/). It was obtained by reverse engineering & is as such not guaranteed to be correct. All trademarks are property of their respective owners. All numbers are little endian. Fields with a length of "zstr" are null-terminated strings using the small font. Special characters used in strings: 0xD6 is invisible 0xF2 is 2 spaces 0xF3 is 3 spaces Anything else above 0xEC is invisible File header: Off. Len. Meaning 0000 0004 Magic number: 0xA7BF47F3 0004 0002 Stack version: 0x0000 0006 0002 Stack type (bit flags) 0 Use levels 1 0=self-check / 1=multiple-choice (Other bits are reserved & must be 0) 0008 0002 \ 000A 0002 | Offsets to title card lines (from start of file header) 000C 0002 | (Lines themselves are null-terminated strings) 000E 0002 / Rest of file header if levels are disabled: Off. Len. Meaning 0010 0001 Score for each correct answer (0x00..0x64) 0011 0001 Penalty for each incorrect answer (0x00..0x64; subtracted) 0012 0001 Penalty for each skip (0x00..0x64; subtracted) 0013 0001 Number of cards (0x01..0xC8) 0014 2*N Offsets to cards (from start of file header) Rest of file header if levels are enabled: Off. Len. Meaning 0010 0001 Number of levels (0x01..0x0A) 0011 0001 Score for each correct answer (0x00..0x64) 0012 0001 Penalty for each incorrect answer (0x00..0x64; subtracted) 0013 0001 Penalty for each skip (0x00..0x64; subtracted) 0014 0001 Number of cards (0x01..0xC8) 0015 2*N Offsets to cards (from start of file header) Self-check card header without level (stack type=0): Off. Len. Meaning 0000 0002 Offset to front of card (from card header) 0002 0002 Offset to back of card (from card header) 0004 zstr Card name (string) ? ?*2 Card sides Self-check card header with level (stack type=1): Off. Len. Meaning 0000 0002 Offset to front of card (from card header) 0002 0002 Offset to back of card (from card header) 0004 0001 Level number (starting from 0x01) 0005 zstr Card name (string) ? ?*2 Card sides Multiple-choice card header without level (stack type=2): Off. Len. Meaning 0000 0002 Offset to front of card (from card header) 0002 0002 Offset to back of card (from card header) 0004 0001 Number of choices (0x01..0x09) 0005 0001 Correct choice (0x01..N) 0006 zstr Card name (string) ? ?*2 Card sides Multiple-choice card header with level (stack type=3): Off. Len. Meaning 0000 0002 Offset to front of card (from card header) 0002 0002 Offset to back of card (from card header) 0004 0001 Level number (starting from 0x01) 0005 0001 Number of choices (0x01..0x09) 0006 0001 Correct choice (0x01..N) 0007 zstr Card name (string) ? ?*2 Card sides Card side header: Off. Len. Meaning 0000 0001 Number of screens (0x01..0xFF) 0001 2*N Offsets to screens (from card side header) ? ?*N Screens Screen: Off. Len. Meaning 0000 0001 Number of items 0001 ?*N Items (text &/or images) (Some stacks have additional data after the items, but it is apparently unused.) Text: Off. Len. Meaning 0000 0001 Type: 0x01 0001 0001 Y coordinate (0x00..0x3F) 0002 0001 X coordinate (0x00..0x5F) 0003 zstr Text to display Image: Off. Len. Meaning 0000 0001 Type: 0x09 0001 0001 Y coordinate (0x00..0x3F) 0002 0001 X coordinate (0x00..0x5F) 0003 0001 Height 0004 0001 Width 0005 ... Bitmap data (row-major, with rows padded to multiple of 8 pixels wide)