MEMORY { ZP: start = $0000, size = $0100, type = rw, define = yes; OAM: start = $0200, size = $0100, type = rw, define = yes; RAM: start = $0300, size = $0500, type = rw, define = yes; HEADER: start = $0000, size = $0010, type = ro, file = %O, fill = yes, fillval = $00; BNK0: start = $8000, size = $2000, type = ro, file = %O, fill = yes, fillval = $00, define = yes; BNK1: start = $A000, size = $2000, type = ro, file = %O, fill = yes, fillval = $00, define = yes; BNK2: start = $C000, size = $2000, type = ro, file = %O, fill = yes, fillval = $00, define = yes; BNK3: start = $E000, size = $2000, type = ro, file = %O, fill = yes, fillval = $00, define = yes; CHR: start = $0000, size = $2000, type = ro, file = %O, fill = yes, fillval = $00; } SEGMENTS { HEADER: load = HEADER, type = ro; STARTUP: load = BNK0, type = ro, define = yes; LOWCODE: load = BNK0, type = ro, optional = yes; INIT: load = BNK0, type = ro, define = yes, optional = yes; CODE: load = BNK0, type = ro, define = yes; RODATA: load = BNK0, type = ro, define = yes; DATA: load = BNK0, run = RAM, type = rw, define = yes; BNK0: load = BNK0, type = ro, start = $8000, optional = yes; BNK1: load = BNK1, type = ro, start = $A000, optional = yes; BNK2: load = BNK2, type = ro, start = $C000, optional = yes; BNK3: load = BNK3, type = ro, start = $E000, optional = yes; LAST_BNK: load = BNK3, type = ro, start = $E000; VECTORS: load = BNK3, type = ro, start = $FFFA; OAM: load = OAM, type = rw; BSS: load = RAM, type = bss, define = yes; HEAP: load = RAM, type = bss, optional = yes; ZEROPAGE: load = ZP, type = zp; CHARS: load = CHR, type = ro; }