Data elements are stored low byte first (little-endian). All integer fields are unsigned. ISX File =============================================================================== Type Field Note ------------------------------------------------------------------------------- Header Header May not be present: check for Identifier Record[] Records ISX file records =============================================================================== Header (32 bytes) =============================================================================== Type Field Note ------------------------------------------------------------------------------- u24 Identifier 0x585349 ("ISX" in ASCII) u8[29] Memo Arbitrary? Contains version/author text in ASCII =============================================================================== Record =============================================================================== Type Field Note ------------------------------------------------------------------------------- u8 Type Record type: 0x01: Code (SNES) 0x03: Range (SNES) 0x04: Symbol (SNES) 0x11: Code (Virtual Boy) 0x13: Range (Virtual Boy) 0x14: Symbol (Virtual Boy) 0x20: System (undocumented) 0x21: System (undocumented) 0x22: System (undocumented) u8[*] Fields Format depends on Type =============================================================================== Record.0x01 - Code (SNES) =============================================================================== Type Field Note ------------------------------------------------------------------------------- u8 Type 0x01 u8 Bank Cartridge bank number u8 BankHigh Only present if Bank >= 0x80 u16 Address CPU bus address u16 DataLength Number of bytes in Data u8[*] Data Actual code bytes =============================================================================== Record.0x03 - Range (SNES) =============================================================================== Type Field Note ------------------------------------------------------------------------------- u8 Type 0x03 u16 Count Number of ranges Range[*] Ranges Count elements u8 Bank Cartridge bank number u16 StartAddress Lowest CPU bus address u16 EndAddress Highest CPU bus address u8 RangeType See: Range Types =============================================================================== Record.0x04 - Symbol (SNES) =============================================================================== Type Field Note ------------------------------------------------------------------------------- u8 Type 0x04 u16 Count Number of symbols Symbol[*] Symbols Count elements u8 NameLength Number of bytes in Name u8[*] Name Symbol name u8 Flags Undocumented u8 Bank Cartridge bank number u16 Address CPU bus address =============================================================================== Record.0x11 - Code (Virtual Boy) =============================================================================== Type Field Note ------------------------------------------------------------------------------- u8 Type 0x11 u32 Address CPU bus address u32 DataLength Number of bytes in Data u8[*] Data Actual code bytes =============================================================================== Record.0x13 - Range (Virtual Boy) =============================================================================== Type Field Note ------------------------------------------------------------------------------- u8 Type 0x13 u16 Count Number of ranges Range[*] Ranges Count elements u32 StartAddress Lowest CPU bus address u32 EndAddress Highest CPU bus address u8 RangeType See: Range Types =============================================================================== Record.0x14 - Symbol (Virtual Boy) =============================================================================== Type Field Note ------------------------------------------------------------------------------- u8 Type 0x14 u16 Count Number of symbols Symbol[*] Symbols Count elements u8 NameLength Number of bytes in Name u8[*] Name Symbol name u16 Flags Undocumented u32 Address CPU bus address =============================================================================== Record.0x20, 0x21, 0x22 - System =============================================================================== Type Field Note ------------------------------------------------------------------------------- u8 Type 0x20, 0x21 or 0x22 u32 DataLength Number of bytes in Data u8[*] Data Debug data bytes =============================================================================== Range Types ----------- 0x41 ('A') 8-bit integer (.db), string 0x42 ('B') 8-bit integer (.db), numeric 0x43 ('C') Compiled C code 0x44 ('D') 16-bit integer (.dd, high byte first) 0x45 ('E') 65C816 code (8-bit accumulator, 8-bit index) 0x46 ('F') 65C816 code (8-bit accumulator, 16-bit index) 0x47 ('G') 65C816 code (16-bit accumulator, 8-bit index) 0x48 ('H') 65C816 code (16-bit accumulator, 16-bit index) 0x4C ('L') 32-bit integer (.dl SNES, .dw Virtual Boy, low byte first) 0x53 ('S') Size reservation, as in .bss allocation (.ds) 0x57 ('W') 16-bit integer (.dw SNES, .dh Virtual Boy, low byte first)