Memory map: $0000-$00ff = zero page $0100-$01ff = stack $0200-$03ff = ??? $0400-$07ff = lo-res page1 $0800-$0bff = lo-res page2 $0c00-$0fff = background image $1000-$1fff = loader $2000-$3fff = code (8k? currently 5k) ; MARS = 6k ; LEVEL1 = 6k ; TITLE = 4k ; LOAD engine at $4000 ; $4000 - $5fff = 8k worst case ; LOAD level data at $6000 ; $6000 - $7fff = 8k worst case $9000-$93FF = tiles (1k) $9400-$BBFF = big_tilemap (10k) 128x80 $BC00-$BCFF = small tilemap (256B) 20x12 tiles are 2x4, or 4 bytes each so in theory can have up to 256 of them but if we want data to fit in one page then 64 it the maximum tilemap: tilemap is 256 wide by 40 tall = 10k Tile types: 0..26 transparent tiles 27..31 items 32..39 walkthrough tiles 40..63 hard tiles Status: 0123456789012345678901234567890123456789 **************************************** * KK KK KK KK KK KK * RR YY * * * KK KK KK KK KK KK * RR YY * * * KK KK KK KK KK KK * BB GG * * * KK KK KK KK KK KK * BB GG * * **************************************** * KEENS KEYCARDS PARTS * **************************************** * SCORE * NEXT KEEN * RAYGUN * POGO* * 33221100 * 20000 * 5 * N * score always multiple of 100 Level1: in png: X=80 to 543, Y=12 to 80 (tiles 4x4) x=0 to 116 Y=0..17 start position: in png 88,65 tile position = 0,5 keen position = 2,24 (remember, tiles 2 bytes high) tilemap copies TILEMAP_X TILEMAP_Y KEEN_X / KEEN_XL KEEN_Y Enemy logic: when update tilemap detect if enemy on screen if so mark active give it current x/y value when move same as keen move if move off left/right side of screen mark inactive