add quick dirty text document describing the CDL format for those who don't like C#
This commit is contained in:
parent
47ba6ee915
commit
4961c9e905
|
@ -0,0 +1,66 @@
|
||||||
|
A "string" is an LEB128 encoded number which is the number of bytes
|
||||||
|
in the string, followed by that many bytes of UTF-8 character data.
|
||||||
|
|
||||||
|
A "number" is a little endian 32 bit integer.
|
||||||
|
|
||||||
|
File format is as follows:
|
||||||
|
|
||||||
|
number NumberOfBlocks: number of memory areas represented in this file
|
||||||
|
|
||||||
|
For each block:
|
||||||
|
|
||||||
|
string BlockName: identifying name of the block.
|
||||||
|
number bytelength: length of the block in bytes.
|
||||||
|
byte data[bytelength]: one byte of information for each byte in the original block.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The BlockNames are:
|
||||||
|
|
||||||
|
ROM
|
||||||
|
HUCard ROM, or syscard bios ROm
|
||||||
|
|
||||||
|
Cart Battery RAM
|
||||||
|
32K of battery backed ram in the Populous cart
|
||||||
|
|
||||||
|
Super System Card RAM
|
||||||
|
192K of ram in the super system card
|
||||||
|
|
||||||
|
TurboCD RAM
|
||||||
|
64K of ram in the turboCD
|
||||||
|
|
||||||
|
BRAM
|
||||||
|
8K of TurboCD backup RAM. The actual RAM is smaller, but the CDL will record all
|
||||||
|
activity in that 8K region.
|
||||||
|
|
||||||
|
Main Memory
|
||||||
|
8K or 32K (SGX) of main memory
|
||||||
|
|
||||||
|
MMIO
|
||||||
|
8K of space in block ff, containing system IO ports.
|
||||||
|
|
||||||
|
UNKNOWN
|
||||||
|
8K long area which any unknown block maps to.
|
||||||
|
|
||||||
|
|
||||||
|
Each byte has 8 bits of flags on what the byte has been observed to do:
|
||||||
|
|
||||||
|
// was fetched as an opcode
|
||||||
|
Code = 0x01,
|
||||||
|
// was read or written as data
|
||||||
|
Data = 0x02,
|
||||||
|
// was read and used as a pointer to data via indirect addressing
|
||||||
|
DataPtr = 0x04,
|
||||||
|
// was read or written as stack
|
||||||
|
Stack = 0x08,
|
||||||
|
// was read or written as data via indirect addressing
|
||||||
|
IndirectData = 0x10,
|
||||||
|
// was read and used as function pointer
|
||||||
|
// NB: there is no "IndirectCode"; all code is marked simply as code regardless of how it is reached
|
||||||
|
FcnPtr = 0x20,
|
||||||
|
// was used as a source (either initial or during the loop) of a block xfer
|
||||||
|
BlockFrom = 0x40,
|
||||||
|
// was used as a destination (either initial or during the loop) of a block xfer
|
||||||
|
BlockTo = 0x80
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue