processor 6502 include "vcs.h" include "macro.h" SEG ORG $F000 ; build with dasm mouse.asm -f3 -omouse.bin ; Memory for wall hole patterns starts at $92; there are six walls, each of which is two rows each two scanlines ; thick. Every five bytes represent the pixels across the playfield registers (the low half of the PF0 register ; is shifted and used for the PF3 register), so 5 x 2 x 6 = 60 bytes, about half our RAM, for wall gnawing. HOLES = $70 ; Not actually used for holes data, since offsets 0..15 indicate non-wall areas; $BF is next available address HOLESP1 = $71 ; just HOLES plus 1 HOLESP2 = $72 ; just HOLES plus 2 HOLESP3 = $73 ; just HOLES plus 3 HOLESP4 = $74 ; just HOLES plus 4 HOLESEND = $BB ; HOLES plus HOLESRESERVED plus HOLESSIZE HOLESRESERVED = $10 ; first 16 values are for special uses HOLESSIZE = 60 MOUSEX0 = $BC ; Mouse 0's X location MOUSEX1 = $BD ; Mouse 1's X location MOUSEY0 = $BE ; Mouse 0's Y location MOUSEY1 = $BF ; Mouse 1's Y location MOUSEYT0 = $C0 ; Mouse 0's temporary Y location MOUSEYT1 = $C1 ; Mouse 1's temporary Y location ; ; Heading Scheme ; ; H1 H0 (direction bits) ; ------+----------- ; 0 0 | Faces up ; 0 1 | Faces down ; 1 0 | Faces left ; 1 1 | Faces right ; ; H3 H2 (animation bits - lowest three bits) ; ------+----------- ; 0 0 | animation frame 0 (not moving) ; 0 1 | animation frame 1 (first step) ; 1 0 | animation frame 2 (second step) ; MOUSEH0 = $C2 ; Mouse 0's heading/animation step MOUSEH1 = $C3 ; Mouse 0's heading/animation step ; Andrew Davie's magical reset formula. Optimizing best where it's least needed! Reset ldx #0 lda #0 Clear sta 0,x inx bne Clear ; Initialize wallmaps - fill $92 through $CD with $FF lda #HOLESSIZE ; offset starting at the top adc #HOLESRESERVED ; offset to first memory location tax lda #%11111111 FillHoles sta HOLESP1,x dex bne FillHoles ; Initialize mouse animation matrix ; Mouse animation matrix (see heading bits, above) ; This lets us reference "(H0000,x)" where x is the heading/step of a mouse, to get its frame H0000 = $C4 lda #MSFU-#MSFU sta H0000 H0001 = $C5 lda #MSFD-#MSFU sta H0001 H0010 = $C6 lda #MSFL-#MSFU sta H0010 H0011 = $C7 lda #MSFR-#MSFU sta H0011 H0100 = $C8 lda #MWFU0-#MSFU sta H0100 H0101 = $C9 lda #MWFD0-#MSFU sta H0101 H0110 = $CA lda #MWFL0-#MSFU sta H0110 H0111 = $CB lda #MWFR0-#MSFU sta H0111 H1000 = $CC lda #MWFU1-#MSFU sta H1000 H1001 = $CD lda #MWFD1-#MSFU sta H1001 H1010 = $CE lda #MWFL1-#MSFU sta H1010 H1011 = $CF lda #MWFR1-#MSFU sta H1011 ; Selected mouse graphic offsets from MSFU for the respective players - set before screen is drawn MOUSEG0 = $D0 MOUSEG1 = $D1 TICK = $FF ; game clock ; Initialize mouse 0 lda #%1001 ; begin facing down in step 2 of animation sta MOUSEH0 lda #56 ; start at y=180 sta MOUSEY0 lda #120 ; start at x=120 sta MOUSEX0 sta WSYNC SLEEP 40 ; wait for 120th pixel sta RESP0 SLEEP 5 sta RESP1 ; Start the game! jmp StartFrame ; Mouse Sitting Facing Up - what'd you think? MSFU .byte %00010000 .byte %01010100 .byte %00111000 .byte %10111010 .byte %01111100 .byte %01111100 .byte %00111000 .byte %00010000 .byte %00010000 .byte %00001100 ; padding out to 16 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 ; Mouse walking up, frame 0 MWFU0 .byte %00010000 .byte %00010100 .byte %01111000 .byte %10111000 .byte %01111010 .byte %01111100 .byte %00111100 .byte %00010000 .byte %00010000 .byte %00001000 ; padding out to 16 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 ; Mouse walking up, frame 1 MWFU1 .byte %00010000 .byte %01010000 .byte %00111100 .byte %00111010 .byte %10111100 .byte %01111100 .byte %01111000 .byte %00010000 .byte %00010000 .byte %00100000 ; padding out to 16 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 ; Sitting mouse facing down MSFD .byte %00001100 .byte %00010000 .byte %00010000 .byte %00111000 .byte %01111100 .byte %01111100 .byte %10111010 .byte %00111000 .byte %01010100 .byte %00010000 ; padding out to 16 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 ; Mouse walking down, frame 0 MWFD0 .byte %00001000 .byte %00010000 .byte %00010000 .byte %00111100 .byte %01111100 .byte %01111010 .byte %10111000 .byte %01111000 .byte %00010100 .byte %00010000 ; padding out to 16 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 ; Mouse walking down, frame 1 MWFD1 .byte %00100000 .byte %00010000 .byte %00010000 .byte %01111000 .byte %01111100 .byte %10111100 .byte %00111010 .byte %00111100 .byte %01010000 .byte %00010000 ; padding out to 16 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 ; Sitting mouse facing right MSFR .byte %00000101 .byte %00001010 .byte %00011110 .byte %01111111 .byte %10011110 .byte %00011110 .byte %00000101 ; padding out to 16 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 ; Mouse walking right, frame 0 MWFR0 .byte %00000110 .byte %00001010 .byte %00011110 .byte %01111111 .byte %10011110 .byte %00011010 .byte %00001001 ; padding out to 16 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 ; Mouse walking right, frame 1 MWFR1 .byte %00001001 .byte %00011010 .byte %10011110 .byte %01111111 .byte %00011110 .byte %00001010 .byte %00000110 ; padding out to 16 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 ; Sitting mouse facing left MSFL .byte %10100000 .byte %01010000 .byte %01111000 .byte %11111110 .byte %01111001 .byte %01111000 .byte %10100000 ; padding out to 16 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 ; Mouse walking left, frame 0 MWFL0 .byte %01100000 .byte %01010000 .byte %01111000 .byte %11111110 .byte %01111001 .byte %01011000 .byte %10010000 ; padding out to 16 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 ; Mouse walking left, frame 1 MWFL1 .byte %10010000 .byte %01010000 .byte %01111001 .byte %11111110 .byte %01111000 .byte %01010000 .byte %01100000 ; padding out to 16 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 .byte %00000000 ; scores - PF1 single digit; shift score value left 3 bits, then add scanline SCORES0 .byte %0100 .byte %1110 .byte %1010 .byte %1010 .byte %1010 .byte %1010 .byte %1110 .byte %0100 SCORES1 .byte %0100 .byte %1100 .byte %0100 .byte %0100 .byte %0100 .byte %0100 .byte %0100 .byte %1110 SCORES2 .byte %0100 .byte %1110 .byte %1010 .byte %0010 .byte %0110 .byte %1100 .byte %1110 .byte %1110 SCORES3 .byte %1110 .byte %1110 .byte %0010 .byte %0100 .byte %0010 .byte %1010 .byte %1110 .byte %0100 SCORES4 .byte %0010 .byte %0010 .byte %1010 .byte %1111 .byte %1111 .byte %0010 .byte %0010 .byte %0010 SCORES5 .byte %1110 .byte %1110 .byte %1000 .byte %1100 .byte %1110 .byte %0010 .byte %1110 .byte %1100 SCORES6 .byte %0100 .byte %1100 .byte %1000 .byte %1100 .byte %1110 .byte %1010 .byte %1110 .byte %0100 SCORES7 .byte %1110 .byte %1110 .byte %0010 .byte %0010 .byte %0010 .byte %0100 .byte %0100 .byte %0100 SCORES8 .byte %0100 .byte %1110 .byte %1010 .byte %1100 .byte %0110 .byte %1010 .byte %1110 .byte %0100 SCORES9 .byte %0100 .byte %1110 .byte %1010 .byte %1110 .byte %0110 .byte %0010 .byte %0110 .byte %0100 StartFrame lda #0 sta VBLANK lda #2 ; put a 1 in D1 of VSYNC sta VSYNC sta WSYNC sta WSYNC sta WSYNC lda #0 sta VSYNC ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; vertical blank area (37 blank lines at top of screen, during which we can perform set-up) VerticalBlank lda #2 ldy #33 ; ====> "scanlines to waste" ; burn off extra scanlines (number of extras set in y register, above) BurnVBlank dey sty COLUBK sta WSYNC bne BurnVBlank ; now LDY is set to zero, which is the first row of the display ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; set up time before display area (be sure to reduce "scanlines to waste," above, as appropriate) ; set score mode for score area playfield, and set ball size at 4 clock-pixels wide for wall studs lda #%00010010 sta CTRLPF ;clear PF registers lda #0 sta PF0 sta PF1 sta PF2 sta WSYNC ; figure out which mouse graphics to use lda #0 ; clear mouse graphics (so they don't show in the score area) sta GRP0 sta GRP1 lda TICK clc ; clear carry - other adc instructions may have left it set adc #1 sta TICK and #%111 ; every eigth cycle, move mice beq MoveMice ; Don't move mice - just maintain ldx MOUSEH0 lda H0000,x sta MOUSEG0 lda MOUSEY0 sta MOUSEYT0 ; temporary mouse Y must be reset each frame jmp DoneMovingMice MoveMice lda MOUSEH0 ; get mouse's current heading tax eor #%1100 ; (&&&if moving!) alternate steps of animation sta MOUSEH0 lda H0000,x ; get offset from MSFU graphic sta MOUSEG0 lda MOUSEY0 adc #2 sta MOUSEY0 sta MOUSEYT0 ; temporary MOUSEY which can be modified during the screen for optimizational purposes DoneMovingMice sta WSYNC ;single-digit score code lda #5 ; score of 5 asl ; multiply by 8 asl asl tax ; store left score in X register lda #6 ; score of 6 asl ; multiply by 8 asl asl tay ; store right score in Y register sta WSYNC ; score background lda #$0f ; white sta COLUBK ; player colors (will be more complicated for 2 player...) lda #$10 ; dark brown mouse sta COLUP0 lda #$18 ; orangish cat sta COLUP1 sta WSYNC ; blank line sta WSYNC ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; display area (192 golden lines of screen time) Score lda SCORES0,x sta PF1 inx lda SCORES0,y iny SLEEP 22 sta PF1 sta WSYNC ; first row complete lda SCORES0,x sta PF1 inx lda SCORES0,y iny SLEEP 22 sta PF1 sta WSYNC ; second row complete lda SCORES0,x sta PF1 inx lda SCORES0,y iny SLEEP 22 sta PF1 sta WSYNC ; third lda SCORES0,x sta PF1 inx lda SCORES0,y iny SLEEP 22 sta PF1 sta WSYNC ; fourth lda SCORES0,x sta PF1 inx lda SCORES0,y iny SLEEP 22 sta PF1 sta WSYNC ; fifth lda SCORES0,x sta PF1 inx lda SCORES0,y iny SLEEP 22 sta PF1 sta WSYNC ; sixth lda SCORES0,x sta PF1 inx lda SCORES0,y iny SLEEP 22 sta PF1 sta WSYNC ; seventh lda SCORES0,x sta PF1 inx lda SCORES0,y iny SLEEP 22 sta PF1 sta WSYNC ; eighth line of score display ; white line between score and game board ; unset score mode for rest of playfield, and set (keep) ball size at 4 clock-pixels wide for wall studs lda #%00010000 ; 0+2=2 sta CTRLPF ; 2+3=5 lda #$0f ; 10+2=12 - set color to white sta COLUPF ; 12+3=15 lda #$ff ; 15+2=17 - set playfields sta PF0 ; 17+3=20 sta PF1 ; 20+3=23 sta PF2 ; 23+3=26 lda #$00 ; 5+2=7 - set color to black sta COLUBK ; 7+3=10 ; we've had 8 rows of display now, so we'll be continuing on row 9 ldy #0 ; 26+2=28 - starting game area at scanline 0 ; Mouse drawing routine - takes one parameter, the mouse to draw; munges A and X MAC DrawMouse cpy MOUSEYT{1} bcc MouseNotDrawn tya ; copy ordinate of scanline to A sbc MOUSEYT{1} ; how far into the mouse are we? tax cmp #16 ; we don't have any graphics taller than 16 bcs MouseDone ; lda MSFD,x ; get graphic for this scanline (only for mouse sitting facing up!) lda MOUSEG{1} ; find offset from start of graphic table for current frame and scanline tax adc #1 sta MOUSEG{1} ; increment to next scanline within graphic lda MSFU,x ; grab graphic for this scanline jmp MouseDrawn MouseDone lda #193 ; push mouse off screen so remaining rows take less CPU sta MOUSEYT{1} MouseNotDrawn lda #0 ; clear mouse graphic register MouseDrawn sta GRP0 ENDM GameBoardEmpty sta WSYNC ; now wait for display to start! lda MAPBG,y ; 0+3=3 sta COLUBK ; 3+3=6 lda #0 ; 6+2=8 - prepare to clear playfield sta PF0 ; 8+3=11 sta PF1 ; 11+3=14 sta PF2 ; 14+3=17 jmp FinishLine ; 17+3=20 GameBoardFloor sta WSYNC ; now wait for display to start! lda MAPBG,y ; 0+3=3 - get background color for this row sta COLUBK ; 3+3=6 lda FLRTILE0,x ; 6+3=9 sta PF0 ; 9+3=12 lda FLRTILE1,x ; 12+3=15 sta PF1 ; 15+3=18 lda FLRTILE2,x ; 18+3=21 sta PF2 ; 21+3=24 jmp FinishLine ; 24+3=27 ; must be a wall - load the first three segments & turn on wall collisions GameBoardWall sta WSYNC ; now wait for display to start! lda HOLESP1,x ; 0+4=4 sta PF1 ; 4+3=7 lda HOLESP2,x ; 7+4=11 sta PF2 ; 11+3=14 lda HOLES,x ; 14+4=18 sta PF0 ; 18+3=21 ; load the second half asl ; 21+2=23 asl ; 23+2=25 asl ; 25+2=27 asl ; 27+2=29 SLEEP 10 ; 29+10=39 sta PF0 ; 39+3=42 lda HOLESP3,x ; 42+4=46 sta PF1 ; 46+3=49 lda HOLESP4,x ; 49+4=53 sta PF2 ; 53+3=56 ;jmp FinishLine ; load in next scan line - if there is a next scanline! FinishLine cpy #192 ; 56+2=58 - see if we've reached the bottom beq NewFrame ; 58+2=60 (except last scanline, where it's 3) iny ; 60+2=62 - update to next scanline DrawMouse 0 ; Here we go... ldx MAPWALL,y ; 62+4=66 get wall/not-wall status of next row (if wall, is also holes pattern offset) ; cpx #HOLESRESERVED ; +2= - see if x is HOLESRESERVED ($10 right now) or more ; bcs GameBoardWall ; 66+3=69 - branch if x > 10 cpx #2 ; +2= - see if it's 2 or more bcc GameBoardFloor jmp GameBoardEmpty ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; wait until next frame NewFrame lda #%01000010 sta VBLANK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; overscan area lda #0 sta COLUPF ldy #30 Overscan dey sta WSYNC bne Overscan jmp StartFrame ; MAP - the game board ; the background consists of a 2-PF-Pixel left edge, four 13-PF-Pixel center tiles and a 3-PF-Pixel righthand end ; these tiles alternate between two colors defined in this table ; scanline list; groups clustered together represent walls ; Removed June 20, 2004 ; MAPSCLN .byte 9, 35,36,37, 39, 42, 46, 50, 54,56,57, 58, 60, 91,92,93, 95, 98, 103, 107, 110,112,113, 114, 147,148,149, 151, 154, 159, 163, 166,168,169, 170 ; "floor" pattern for "background" patterns (pattern 0 starts at FLRTILE0, offset 0: 2 bits on, 2 bits off, 2 bits on; pattern 1 starts at FLRTILE0, offset 1: 2 bits off, 2 bits on, ...) FLRTILE0 .byte %11001100 FLRTILE1 .byte %00110011 FLRTILE2 .byte %11001100 .byte %00110011 ; FLRTILE2, offset 1 ; the first pattern starts at scanline 9 and continues to scanline 34 MAPFG .byte $06 ; row 009 dark grey (lit dark tile) .byte $06 ; row 010 dark grey (lit dark tile) .byte $06 ; row 011 dark grey (lit dark tile) .byte $06 ; row 012 dark grey (lit dark tile) .byte $06 ; row 013 dark grey (lit dark tile) .byte $06 ; row 014 dark grey (lit dark tile) .byte $06 ; row 015 dark grey (lit dark tile) .byte $06 ; row 016 dark grey (lit dark tile) .byte $06 ; row 017 dark grey (lit dark tile) .byte $06 ; row 018 dark grey (lit dark tile) .byte $06 ; row 019 dark grey (lit dark tile) .byte $06 ; row 020 dark grey (lit dark tile) .byte $06 ; row 021 dark grey (lit dark tile) .byte $06 ; row 022 dark grey (lit dark tile) .byte $06 ; row 023 dark grey (lit dark tile) .byte $06 ; row 024 dark grey (lit dark tile) .byte $06 ; row 025 dark grey (lit dark tile) .byte $06 ; row 026 dark grey (lit dark tile) .byte $06 ; row 027 dark grey (lit dark tile) .byte $06 ; row 028 dark grey (lit dark tile) .byte $06 ; row 029 dark grey (lit dark tile) .byte $06 ; row 030 dark grey (lit dark tile) .byte $06 ; row 031 dark grey (lit dark tile) .byte $06 ; row 032 dark grey (lit dark tile) .byte $06 ; row 033 dark grey (lit dark tile) .byte $06 ; row 034 dark grey (lit dark tile) .byte $0E ; row 035 white, the color of the paint on the outside of the wall .byte $0C ; row 036 light gray; the color of wallboard .byte $0C ; row 037 light gray; the color of wallboard .byte $0C ; row 038 light gray; the color of wallboard .byte $02 ; row 039 darkest grey (shadowed dark tile) .byte $02 ; row 040 darkest grey (shadowed dark tile) .byte $02 ; row 041 darkest grey (shadowed dark tile) .byte $04 ; row 042 darker grey (middling dark tile) .byte $04 ; row 043 darker grey (middling dark tile) .byte $04 ; row 044 darker grey (middling dark tile) .byte $04 ; row 045 darker grey (middling dark tile) .byte $08 ; row 046 grey (middling light tile) .byte $08 ; row 047 grey (middling light tile) .byte $08 ; row 048 grey (middling light tile) .byte $08 ; row 049 grey (middling light tile) .byte $06 ; row 050 dark grey (shadowed light tile) .byte $06 ; row 051 dark grey (shadowed light tile) .byte $06 ; row 052 dark grey (shadowed light tile) .byte $0C ; row 053 light gray; the color of wallboard .byte $0C ; row 054 light gray; the color of wallboard .byte $0C ; row 055 light gray; the color of wallboard .byte $0E ; row 056 white; the color of paint .byte $0C ; row 057 light grey (lit light tile) .byte $0C ; row 058 light grey (lit light tile) .byte $0C ; row 059 light grey (lit light tile) .byte $0C ; row 060 light grey (lit light tile) .byte $0C ; row 061 light grey (lit light tile) .byte $0C ; row 062 light grey (lit light tile) .byte $0C ; row 063 light grey (lit light tile) .byte $0C ; row 064 light grey (lit light tile) .byte $0C ; row 065 light grey (lit light tile) .byte $0C ; row 066 light grey (lit light tile) .byte $0C ; row 067 light grey (lit light tile) .byte $0C ; row 068 light grey (lit light tile) .byte $0C ; row 069 light grey (lit light tile) .byte $0C ; row 070 light grey (lit light tile) .byte $0C ; row 071 light grey (lit light tile) .byte $0C ; row 072 light grey (lit light tile) .byte $0C ; row 073 light grey (lit light tile) .byte $0C ; row 074 light grey (lit light tile) .byte $0C ; row 075 light grey (lit light tile) .byte $0C ; row 076 light grey (lit light tile) .byte $0C ; row 077 light grey (lit light tile) .byte $0C ; row 078 light grey (lit light tile) .byte $0C ; row 079 light grey (lit light tile) .byte $0C ; row 080 light grey (lit light tile) .byte $0C ; row 081 light grey (lit light tile) .byte $0C ; row 082 light grey (lit light tile) .byte $0C ; row 083 light grey (lit light tile) .byte $0C ; row 084 light grey (lit light tile) .byte $0C ; row 085 light grey (lit light tile) .byte $0C ; row 086 light grey (lit light tile) .byte $0C ; row 087 light grey (lit light tile) .byte $0C ; row 088 light grey (lit light tile) .byte $0C ; row 089 light grey (lit light tile) .byte $0E ; row 090 white; the color of paint .byte $0C ; row 091 light gray; the color of wallboard .byte $0C ; row 092 light gray; the color of wallboard .byte $0C ; row 093 light gray; the color of wallboard .byte $06 ; row 094 dark grey (shadowed light tile) .byte $06 ; row 095 dark grey (shadowed light tile) .byte $06 ; row 096 dark grey (shadowed light tile) .byte $08 ; row 097 grey (middling light tile) .byte $08 ; row 098 grey (middling light tile) .byte $08 ; row 099 grey (middling light tile) .byte $08 ; row 100 grey (middling light tile) .byte $08 ; row 101 grey (middling light tile) .byte $04 ; row 102 darker grey (middling dark tile) .byte $04 ; row 103 darker grey (middling dark tile) .byte $04 ; row 104 darker grey (middling dark tile) .byte $04 ; row 105 darker grey (middling dark tile) .byte $02 ; row 106 darkest grey (shadowed dark tile) .byte $02 ; row 107 darkest grey (shadowed dark tile) .byte $02 ; row 108 darkest grey (shadowed dark tile) .byte $0C ; row 109 light gray; the color of wallboard .byte $0C ; row 110 light gray; the color of wallboard .byte $0C ; row 111 light gray; the color of wallboard .byte $0E ; row 112 white; the color of paint .byte $06 ; row 113 dark grey (lit dark tile) .byte $06 ; row 114 dark grey (lit dark tile) .byte $06 ; row 115 dark grey (lit dark tile) .byte $06 ; row 116 dark grey (lit dark tile) .byte $06 ; row 117 dark grey (lit dark tile) .byte $06 ; row 118 dark grey (lit dark tile) .byte $06 ; row 119 dark grey (lit dark tile) .byte $06 ; row 120 dark grey (lit dark tile) .byte $06 ; row 121 dark grey (lit dark tile) .byte $06 ; row 122 dark grey (lit dark tile) .byte $06 ; row 123 dark grey (lit dark tile) .byte $06 ; row 124 dark grey (lit dark tile) .byte $06 ; row 125 dark grey (lit dark tile) .byte $06 ; row 126 dark grey (lit dark tile) .byte $06 ; row 127 dark grey (lit dark tile) .byte $06 ; row 128 dark grey (lit dark tile) .byte $06 ; row 129 dark grey (lit dark tile) .byte $06 ; row 130 dark grey (lit dark tile) .byte $06 ; row 131 dark grey (lit dark tile) .byte $06 ; row 132 dark grey (lit dark tile) .byte $06 ; row 133 dark grey (lit dark tile) .byte $06 ; row 134 dark grey (lit dark tile) .byte $06 ; row 135 dark grey (lit dark tile) .byte $06 ; row 136 dark grey (lit dark tile) .byte $06 ; row 137 dark grey (lit dark tile) .byte $06 ; row 138 dark grey (lit dark tile) .byte $06 ; row 139 dark grey (lit dark tile) .byte $06 ; row 140 dark grey (lit dark tile) .byte $06 ; row 141 dark grey (lit dark tile) .byte $06 ; row 142 dark grey (lit dark tile) .byte $06 ; row 143 dark grey (lit dark tile) .byte $06 ; row 144 dark grey (lit dark tile) .byte $06 ; row 145 dark grey (lit dark tile) .byte $0E ; row 146 white; the color of paint .byte $0C ; row 147 light gray; the color of wallboard .byte $0C ; row 148 light gray; the color of wallboard .byte $0C ; row 149 light gray; the color of wallboard .byte $02 ; row 150 darkest grey (shadowed dark tile) .byte $02 ; row 151 darkest grey (shadowed dark tile) .byte $02 ; row 152 darkest grey (shadowed dark tile) .byte $04 ; row 153 darker grey (middling dark tile) .byte $04 ; row 154 darker grey (middling dark tile) .byte $04 ; row 155 darker grey (middling dark tile) .byte $04 ; row 156 darker grey (middling dark tile) .byte $04 ; row 157 darker grey (middling dark tile) .byte $08 ; row 158 grey (middling light tile) .byte $08 ; row 159 grey (middling light tile) .byte $08 ; row 160 grey (middling light tile) .byte $08 ; row 161 grey (middling light tile) .byte $06 ; row 162 dark grey (shadowed light tile) .byte $06 ; row 163 dark grey (shadowed light tile) .byte $06 ; row 164 dark grey (shadowed light tile) .byte $0C ; row 165 light gray; the color of wallboard .byte $0C ; row 166 light gray; the color of wallboard .byte $0C ; row 167 light gray; the color of wallboard .byte $0E ; row 168 white; the color of paint .byte $0C ; row 169 light grey (lit light tile) .byte $0C ; row 170 light grey (lit light tile) .byte $0C ; row 171 light grey (lit light tile) .byte $0C ; row 172 light grey (lit light tile) .byte $0C ; row 173 light grey (lit light tile) .byte $0C ; row 174 light grey (lit light tile) .byte $0C ; row 175 light grey (lit light tile) .byte $0C ; row 176 light grey (lit light tile) .byte $0C ; row 177 light grey (lit light tile) .byte $0C ; row 178 light grey (lit light tile) .byte $0C ; row 179 light grey (lit light tile) .byte $0C ; row 180 light grey (lit light tile) .byte $0C ; row 181 light grey (lit light tile) .byte $0C ; row 182 light grey (lit light tile) .byte $0C ; row 183 light grey (lit light tile) .byte $0C ; row 184 light grey (lit light tile) .byte $0C ; row 185 light grey (lit light tile) .byte $0C ; row 186 light grey (lit light tile) .byte $0C ; row 187 light grey (lit light tile) .byte $0C ; row 188 light grey (lit light tile) .byte $0C ; row 189 light grey (lit light tile) .byte $0C ; row 190 light grey (lit light tile) .byte $0C ; row 191 light grey (lit light tile) MAPBG .byte $0C ; row 009 light grey (lit light tile) .byte $0C ; row 010 light grey (lit light tile) .byte $0C ; row 011 light grey (lit light tile) .byte $0C ; row 012 light grey (lit light tile) .byte $0C ; row 013 light grey (lit light tile) .byte $0C ; row 014 light grey (lit light tile) .byte $0C ; row 015 light grey (lit light tile) .byte $0C ; row 016 light grey (lit light tile) .byte $0C ; row 017 light grey (lit light tile) .byte $0C ; row 018 light grey (lit light tile) .byte $0C ; row 019 light grey (lit light tile) .byte $0C ; row 020 light grey (lit light tile) .byte $0C ; row 021 light grey (lit light tile) .byte $0C ; row 022 light grey (lit light tile) .byte $0C ; row 023 light grey (lit light tile) .byte $0C ; row 024 light grey (lit light tile) .byte $0C ; row 025 light grey (lit light tile) .byte $0C ; row 026 light grey (lit light tile) .byte $0C ; row 027 light grey (lit light tile) .byte $0C ; row 028 light grey (lit light tile) .byte $0C ; row 029 light grey (lit light tile) .byte $0C ; row 030 light grey (lit light tile) .byte $0C ; row 031 light grey (lit light tile) .byte $0C ; row 032 light grey (lit light tile) .byte $0C ; row 033 light grey (lit light tile) .byte $0C ; row 034 light grey (lit light tile) .byte $0C ; row 035 middling gray - color of a hole .byte $0C ; row 036 middling gray - color of a hole .byte $0C ; row 037 middling gray - color of a hole .byte $0C ; row 038 middling gray - color of a hole .byte $06 ; row 039 dark grey (shadowed light tile) .byte $06 ; row 040 dark grey (shadowed light tile) .byte $06 ; row 041 dark grey (shadowed light tile) .byte $06 ; row 042 grey (middling light tile) .byte $06 ; row 043 grey (middling light tile) .byte $06 ; row 044 grey (middling light tile) .byte $06 ; row 045 grey (middling light tile) .byte $06 ; row 046 darker grey (middling dark tile) .byte $06 ; row 047 darker grey (middling dark tile) .byte $06 ; row 048 darker grey (middling dark tile) .byte $06 ; row 049 darker grey (middling dark tile) .byte $06 ; row 050 darkest grey (shadowed dark tile) .byte $06 ; row 051 darkest grey (shadowed dark tile) .byte $06 ; row 052 darkest grey (shadowed dark tile) .byte $0C ; row 053 middling gray - color of a hole .byte $0C ; row 054 middling gray - color of a hole .byte $0C ; row 055 middling gray - color of a hole .byte $0C ; row 056 middling gray - color of a hole .byte $EC ; row 057 dark grey (lit dark tile) .byte $EC ; row 058 dark grey (lit dark tile) .byte $EC ; row 059 dark grey (lit dark tile) .byte $EC ; row 060 dark grey (lit dark tile) .byte $EC ; row 061 dark grey (lit dark tile) .byte $EC ; row 062 dark grey (lit dark tile) .byte $EC ; row 063 dark grey (lit dark tile) .byte $EC ; row 064 dark grey (lit dark tile) .byte $EC ; row 065 dark grey (lit dark tile) .byte $EC ; row 066 dark grey (lit dark tile) .byte $EC ; row 067 dark grey (lit dark tile) .byte $EC ; row 068 dark grey (lit dark tile) .byte $EC ; row 069 dark grey (lit dark tile) .byte $EC ; row 070 dark grey (lit dark tile) .byte $EC ; row 071 dark grey (lit dark tile) .byte $EC ; row 072 dark grey (lit dark tile) .byte $EC ; row 073 dark grey (lit dark tile) .byte $EC ; row 074 dark grey (lit dark tile) .byte $EC ; row 075 dark grey (lit dark tile) .byte $EC ; row 076 dark grey (lit dark tile) .byte $EC ; row 077 dark grey (lit dark tile) .byte $EC ; row 078 dark grey (lit dark tile) .byte $EC ; row 079 dark grey (lit dark tile) .byte $EC ; row 080 dark grey (lit dark tile) .byte $EC ; row 081 dark grey (lit dark tile) .byte $EC ; row 082 dark grey (lit dark tile) .byte $EC ; row 083 dark grey (lit dark tile) .byte $EC ; row 084 dark grey (lit dark tile) .byte $EC ; row 085 dark grey (lit dark tile) .byte $EC ; row 086 dark grey (lit dark tile) .byte $EC ; row 087 dark grey (lit dark tile) .byte $EC ; row 088 dark grey (lit dark tile) .byte $EC ; row 089 dark grey (lit dark tile) .byte $0C ; row 090 middling gray - color of a hole .byte $0C ; row 091 middling gray - color of a hole .byte $0C ; row 092 middling gray - color of a hole .byte $0C ; row 093 middling gray - color of a hole .byte $06 ; row 094 darkest grey (shadowed dark tile) .byte $06 ; row 095 darkest grey (shadowed dark tile) .byte $06 ; row 096 darkest grey (shadowed dark tile) .byte $06 ; row 097 darker grey (middling dark tile) .byte $06 ; row 098 darker grey (middling dark tile) .byte $06 ; row 099 darker grey (middling dark tile) .byte $06 ; row 100 darker grey (middling dark tile) .byte $06 ; row 101 darker grey (middling dark tile) .byte $06 ; row 102 grey (middling light tile) .byte $06 ; row 103 grey (middling light tile) .byte $06 ; row 104 grey (middling light tile) .byte $06 ; row 105 grey (middling light tile) .byte $06 ; row 106 dark grey (shadowed light tile) .byte $06 ; row 107 dark grey (shadowed light tile) .byte $06 ; row 108 dark grey (shadowed light tile) .byte $0C ; row 109 middling gray - color of a hole .byte $0C ; row 110 middling gray - color of a hole .byte $0C ; row 111 middling gray - color of a hole .byte $0C ; row 112 middling gray - color of a hole .byte $0C ; row 113 light grey (lit light tile) .byte $0C ; row 114 light grey (lit light tile) .byte $0C ; row 115 light grey (lit light tile) .byte $0C ; row 116 light grey (lit light tile) .byte $0C ; row 117 light grey (lit light tile) .byte $0C ; row 118 light grey (lit light tile) .byte $0C ; row 119 light grey (lit light tile) .byte $0C ; row 120 light grey (lit light tile) .byte $0C ; row 121 light grey (lit light tile) .byte $0C ; row 122 light grey (lit light tile) .byte $0C ; row 123 light grey (lit light tile) .byte $0C ; row 124 light grey (lit light tile) .byte $0C ; row 125 light grey (lit light tile) .byte $0C ; row 126 light grey (lit light tile) .byte $0C ; row 127 light grey (lit light tile) .byte $0C ; row 128 light grey (lit light tile) .byte $0C ; row 129 light grey (lit light tile) .byte $0C ; row 130 light grey (lit light tile) .byte $0C ; row 131 light grey (lit light tile) .byte $0C ; row 132 light grey (lit light tile) .byte $0C ; row 133 light grey (lit light tile) .byte $0C ; row 134 light grey (lit light tile) .byte $0C ; row 135 light grey (lit light tile) .byte $0C ; row 136 light grey (lit light tile) .byte $0C ; row 137 light grey (lit light tile) .byte $0C ; row 138 light grey (lit light tile) .byte $0C ; row 139 light grey (lit light tile) .byte $0C ; row 140 light grey (lit light tile) .byte $0C ; row 141 light grey (lit light tile) .byte $0C ; row 142 light grey (lit light tile) .byte $0C ; row 143 light grey (lit light tile) .byte $0C ; row 144 light grey (lit light tile) .byte $0C ; row 145 light grey (lit light tile) .byte $09 ; row 146 middling gray - color of a hole .byte $09 ; row 147 middling gray - color of a hole .byte $09 ; row 148 middling gray - color of a hole .byte $09 ; row 149 middling gray - color of a hole .byte $06 ; row 150 dark grey (shadowed light tile) .byte $06 ; row 151 dark grey (shadowed light tile) .byte $06 ; row 152 dark grey (shadowed light tile) .byte $08 ; row 153 grey (middling light tile) .byte $08 ; row 154 grey (middling light tile) .byte $08 ; row 155 grey (middling light tile) .byte $08 ; row 156 grey (middling light tile) .byte $08 ; row 157 grey (middling light tile) .byte $04 ; row 158 darker grey (middling dark tile) .byte $04 ; row 159 darker grey (middling dark tile) .byte $04 ; row 160 darker grey (middling dark tile) .byte $04 ; row 161 darker grey (middling dark tile) .byte $02 ; row 162 darkest grey (shadowed dark tile) .byte $02 ; row 163 darkest grey (shadowed dark tile) .byte $02 ; row 164 darkest grey (shadowed dark tile) .byte $09 ; row 165 middling gray - color of a hole .byte $09 ; row 166 middling gray - color of a hole .byte $09 ; row 167 middling gray - color of a hole .byte $09 ; row 168 middling gray - color of a hole .byte $c4 ; row 169 dark grey (lit dark tile) .byte $c4 ; row 170 dark grey (lit dark tile) .byte $c4 ; row 171 dark grey (lit dark tile) .byte $c4 ; row 172 dark grey (lit dark tile) .byte $c4 ; row 173 dark grey (lit dark tile) .byte $c4 ; row 174 dark grey (lit dark tile) .byte $c4 ; row 175 dark grey (lit dark tile) .byte $c4 ; row 176 dark grey (lit dark tile) .byte $c4 ; row 177 dark grey (lit dark tile) .byte $c4 ; row 178 dark grey (lit dark tile) .byte $c4 ; row 179 dark grey (lit dark tile) .byte $c4 ; row 180 dark grey (lit dark tile) .byte $c4 ; row 181 dark grey (lit dark tile) .byte $c4 ; row 182 dark grey (lit dark tile) .byte $c4 ; row 183 dark grey (lit dark tile) .byte $c4 ; row 184 dark grey (lit dark tile) .byte $c4 ; row 185 dark grey (lit dark tile) .byte $c4 ; row 186 dark grey (lit dark tile) .byte $c4 ; row 187 dark grey (lit dark tile) .byte $c4 ; row 188 dark grey (lit dark tile) .byte $c4 ; row 189 dark grey (lit dark tile) .byte $c4 ; row 190 dark grey (lit dark tile) .byte $c4 ; row 191 dark grey (lit dark tile) ; any MAPWALL numbers less than $10 represent represent blank, checkerboard section 1 and checkerboard section 2 (ie, alternating patterns), plus 7 more spares just in case ; MAPWALL numbers $10 or higher are offsets into the RAM for wall holes MAPWALL .byte $01 ; row 009 background, not foreground - don't detect collisions, don't place in foreground .byte $01 ; row 010 background, not foreground - don't detect collisions, don't place in foreground .byte $00 ; row 011 background, not foreground - don't detect collisions, don't place in foreground .byte $00 ; row 012 background, not foreground - don't detect collisions, don't place in foreground .byte $00 ; row 013 background, not foreground - don't detect collisions, don't place in foreground .byte $00 ; row 014 background, not foreground - don't detect collisions, don't place in foreground .byte $00 ; row 015 background, not foreground - don't detect collisions, don't place in foreground .byte $00 ; row 016 background, not foreground - don't detect collisions, don't place in foreground .byte $00 ; row 017 background, not foreground - don't detect collisions, don't place in foreground .byte $00 ; row 018 background, not foreground - don't detect collisions, don't place in foreground .byte $00 ; row 019 background, not foreground - don't detect collisions, don't place in foreground .byte $00 ; row 020 background, not foreground - don't detect collisions, don't place in foreground .byte $00 ; row 021 background, not foreground - don't detect collisions, don't place in foreground .byte $00 ; row 022 background, not foreground - don't detect collisions, don't place in foreground .byte $01 ; row 023 background, not foreground - don't detect collisions, don't place in foreground .byte $01 ; row 024 background, not foreground - don't detect collisions, don't place in foreground .byte $01 ; row 025 background, not foreground - don't detect collisions, don't place in foreground .byte $01 ; row 026 background, not foreground - don't detect collisions, don't place in foreground .byte $01 ; row 027 background, not foreground - don't detect collisions, don't place in foreground .byte $01 ; row 028 background, not foreground - don't detect collisions, don't place in foreground .byte $01 ; row 029 background, not foreground - don't detect collisions, don't place in foreground .byte $01 ; row 030 background, not foreground - don't detect collisions, don't place in foreground .byte $01 ; row 031 background, not foreground - don't detect collisions, don't place in foreground .byte $01 ; row 032 background, not foreground - don't detect collisions, don't place in foreground .byte $01 ; row 033 background, not foreground - don't detect collisions, don't place in foreground .byte $02 ; row 034 background, not foreground - don't detect collisions, don't place in foreground .byte $11 ; row 035 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $11 ; row 036 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $16 ; row 037 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $16 ; row 038 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $02 ; row 039 background, not foreground - don't detect collisions .byte $02 ; row 040 background, not foreground - don't detect collisions .byte $02 ; row 041 background, not foreground - don't detect collisions .byte $02 ; row 042 background, not foreground - don't detect collisions .byte $02 ; row 043 background, not foreground - don't detect collisions .byte $02 ; row 044 background, not foreground - don't detect collisions .byte $02 ; row 045 background, not foreground - don't detect collisions .byte $02 ; row 046 background, not foreground - don't detect collisions .byte $02 ; row 047 background, not foreground - don't detect collisions .byte $02 ; row 048 background, not foreground - don't detect collisions .byte $02 ; row 049 background, not foreground - don't detect collisions .byte $02 ; row 050 background, not foreground - don't detect collisions .byte $02 ; row 051 background, not foreground - don't detect collisions .byte $02 ; row 052 background, not foreground - don't detect collisions .byte $1B ; row 053 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $1B ; row 054 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $20 ; row 055 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $20 ; row 056 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $02 ; row 057 background, not foreground - don't detect collisions .byte $02 ; row 058 background, not foreground - don't detect collisions .byte $02 ; row 059 background, not foreground - don't detect collisions .byte $02 ; row 060 background, not foreground - don't detect collisions .byte $02 ; row 061 background, not foreground - don't detect collisions .byte $02 ; row 062 background, not foreground - don't detect collisions .byte $02 ; row 063 background, not foreground - don't detect collisions .byte $02 ; row 064 background, not foreground - don't detect collisions .byte $02 ; row 065 background, not foreground - don't detect collisions .byte $02 ; row 066 background, not foreground - don't detect collisions .byte $02 ; row 067 background, not foreground - don't detect collisions .byte $02 ; row 068 background, not foreground - don't detect collisions .byte $02 ; row 069 background, not foreground - don't detect collisions .byte $02 ; row 070 background, not foreground - don't detect collisions .byte $02 ; row 071 background, not foreground - don't detect collisions .byte $02 ; row 072 background, not foreground - don't detect collisions .byte $02 ; row 073 background, not foreground - don't detect collisions .byte $02 ; row 074 background, not foreground - don't detect collisions .byte $02 ; row 075 background, not foreground - don't detect collisions .byte $02 ; row 076 background, not foreground - don't detect collisions .byte $02 ; row 077 background, not foreground - don't detect collisions .byte $02 ; row 078 background, not foreground - don't detect collisions .byte $02 ; row 079 background, not foreground - don't detect collisions .byte $02 ; row 080 background, not foreground - don't detect collisions .byte $02 ; row 081 background, not foreground - don't detect collisions .byte $02 ; row 082 background, not foreground - don't detect collisions .byte $02 ; row 083 background, not foreground - don't detect collisions .byte $02 ; row 084 background, not foreground - don't detect collisions .byte $02 ; row 085 background, not foreground - don't detect collisions .byte $02 ; row 086 background, not foreground - don't detect collisions .byte $02 ; row 087 background, not foreground - don't detect collisions .byte $02 ; row 088 background, not foreground - don't detect collisions .byte $02 ; row 089 background, not foreground - don't detect collisions .byte $25 ; row 090 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $25 ; row 091 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $2A ; row 092 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $2A ; row 093 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $02 ; row 094 background, not foreground - don't detect collisions .byte $02 ; row 095 background, not foreground - don't detect collisions .byte $02 ; row 096 background, not foreground - don't detect collisions .byte $02 ; row 097 background, not foreground - don't detect collisions .byte $02 ; row 098 background, not foreground - don't detect collisions .byte $02 ; row 099 background, not foreground - don't detect collisions .byte $02 ; row 100 background, not foreground - don't detect collisions .byte $02 ; row 101 background, not foreground - don't detect collisions .byte $02 ; row 102 background, not foreground - don't detect collisions .byte $02 ; row 103 background, not foreground - don't detect collisions .byte $02 ; row 104 background, not foreground - don't detect collisions .byte $02 ; row 105 background, not foreground - don't detect collisions .byte $02 ; row 106 background, not foreground - don't detect collisions .byte $02 ; row 107 background, not foreground - don't detect collisions .byte $02 ; row 108 background, not foreground - don't detect collisions .byte $2F ; row 109 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $2F ; row 110 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $34 ; row 111 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $34 ; row 112 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $00 ; row 113 background, not foreground - don't detect collisions .byte $00 ; row 114 background, not foreground - don't detect collisions .byte $00 ; row 115 background, not foreground - don't detect collisions .byte $00 ; row 116 background, not foreground - don't detect collisions .byte $00 ; row 117 background, not foreground - don't detect collisions .byte $00 ; row 118 background, not foreground - don't detect collisions .byte $00 ; row 119 background, not foreground - don't detect collisions .byte $00 ; row 120 background, not foreground - don't detect collisions .byte $00 ; row 121 background, not foreground - don't detect collisions .byte $00 ; row 122 background, not foreground - don't detect collisions .byte $00 ; row 123 background, not foreground - don't detect collisions .byte $00 ; row 124 background, not foreground - don't detect collisions .byte $00 ; row 125 background, not foreground - don't detect collisions .byte $00 ; row 126 background, not foreground - don't detect collisions .byte $00 ; row 127 background, not foreground - don't detect collisions .byte $00 ; row 128 background, not foreground - don't detect collisions .byte $00 ; row 129 background, not foreground - don't detect collisions .byte $00 ; row 130 background, not foreground - don't detect collisions .byte $00 ; row 131 background, not foreground - don't detect collisions .byte $00 ; row 132 background, not foreground - don't detect collisions .byte $00 ; row 133 background, not foreground - don't detect collisions .byte $00 ; row 134 background, not foreground - don't detect collisions .byte $00 ; row 135 background, not foreground - don't detect collisions .byte $00 ; row 136 background, not foreground - don't detect collisions .byte $00 ; row 137 background, not foreground - don't detect collisions .byte $00 ; row 138 background, not foreground - don't detect collisions .byte $00 ; row 139 background, not foreground - don't detect collisions .byte $00 ; row 140 background, not foreground - don't detect collisions .byte $00 ; row 141 background, not foreground - don't detect collisions .byte $00 ; row 142 background, not foreground - don't detect collisions .byte $00 ; row 143 background, not foreground - don't detect collisions .byte $00 ; row 144 background, not foreground - don't detect collisions .byte $00 ; row 145 background, not foreground - don't detect collisions .byte $39 ; row 146 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $39 ; row 147 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $3E ; row 148 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $3E ; row 149 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $02 ; row 150 background, not foreground - don't detect collisions .byte $02 ; row 151 background, not foreground - don't detect collisions .byte $02 ; row 152 background, not foreground - don't detect collisions .byte $02 ; row 153 background, not foreground - don't detect collisions .byte $02 ; row 154 background, not foreground - don't detect collisions .byte $02 ; row 155 background, not foreground - don't detect collisions .byte $02 ; row 156 background, not foreground - don't detect collisions .byte $02 ; row 157 background, not foreground - don't detect collisions .byte $02 ; row 158 background, not foreground - don't detect collisions .byte $02 ; row 159 background, not foreground - don't detect collisions .byte $02 ; row 160 background, not foreground - don't detect collisions .byte $02 ; row 161 background, not foreground - don't detect collisions .byte $02 ; row 162 background, not foreground - don't detect collisions .byte $02 ; row 163 background, not foreground - don't detect collisions .byte $02 ; row 164 background, not foreground - don't detect collisions .byte $43 ; row 165 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $43 ; row 166 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $48 ; row 167 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $48 ; row 168 non-zero means foreground - detect collisions and set priority high - and indicates HOLES map range to use .byte $02 ; row 169 background, not foreground - don't detect collisions .byte $01 ; row 170 background, not foreground - don't detect collisions .byte $02 ; row 171 background, not foreground - don't detect collisions .byte $00 ; row 172 background, not foreground - don't detect collisions .byte $02 ; row 173 background, not foreground - don't detect collisions .byte $01 ; row 174 background, not foreground - don't detect collisions .byte $02 ; row 175 background, not foreground - don't detect collisions .byte $00 ; row 176 background, not foreground - don't detect collisions .byte $02 ; row 177 background, not foreground - don't detect collisions .byte $01 ; row 178 background, not foreground - don't detect collisions .byte $02 ; row 179 background, not foreground - don't detect collisions .byte $00 ; row 180 background, not foreground - don't detect collisions .byte $02 ; row 181 background, not foreground - don't detect collisions .byte $01 ; row 182 background, not foreground - don't detect collisions .byte $02 ; row 183 background, not foreground - don't detect collisions .byte $00 ; row 184 background, not foreground - don't detect collisions .byte $02 ; row 185 background, not foreground - don't detect collisions .byte $01 ; row 186 background, not foreground - don't detect collisions .byte $02 ; row 187 background, not foreground - don't detect collisions .byte $00 ; row 188 background, not foreground - don't detect collisions .byte $02 ; row 189 background, not foreground - don't detect collisions .byte $01 ; row 190 background, not foreground - don't detect collisions .byte $02 ; row 191 background, not foreground - don't detect collisions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Interrupt Vectors ORG $FFFA .word Reset ; NMI .word Reset ; RESET .word Reset ; IRQ END