# HG changeset patch # User Michael Pavone # Date 1459733921 25200 # Node ID 8642cb2ceb892230acc48c680f4b4c2973302ecd # Parent b87b3ad5068c9f9533edadff8056e9187d2971bf WIP button test ROM diff -r b87b3ad5068c -r 8642cb2ceb89 buttons.xcf Binary file buttons.xcf has changed diff -r b87b3ad5068c -r 8642cb2ceb89 controller.s16 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/controller.s16 Sun Apr 03 18:38:41 2016 -0700 @@ -0,0 +1,192 @@ + ldim vectors, r0 + ldimh vectors, r0 + setvbr r0 + ;load palette + ldim 0, r0 + ldimh $FF,r0 + outi $E, r0 + ldim colors, r1 + ldimh colors, r1 + + ;copy 3 colors for 1st palette + ldim 0, r2 + ldim 3, r3 + ldim copy_data, r12 + ldimh copy_data, r12 + call r12, r13 + + ;setup writes to 2nd palette + ldim $10, r0 + ldimh $FF,r0 + outi $E, r0 + + ;copy 3 colors for 2nd palette + ldim 3, r3 + call r12, r13 + + ;setup writes for first map row + ldim 0, r0 + ldimh $60, r0 + outi $E, r0 + + ldim write_zeros, r11 + ldimh write_zeros, r11 + ;offset by one row and two columns + ldim 66, r3 + call r11, r13 + + ldim 3, r5 +row_loop: + ;copy 9 table entries for first row + ldim 9, r3 + call r12, r13 + + ;zero out rest of row + + ldim 55, r3 + call r11, r13 + + addi -1, r5 + bne row_loop + + ;setup writes to tile data area + ldim 0, r0 + outi $E, r0 + + ;zero out first tile + ldim $10, r3 + call r11, r13 + + ;copy tiles + ldim $C0, r3 + ldimh 0, r3 + call r12, r13 + + + + ;copy tile map to ram + ldim 0, r0 + ldimh $C0, r0 + + ldim map, r1 + ldimh map, r1 + + ldim 0, r2 + ldim 27, r3 + + ldim memcpy16, r10 + ldimh memcpy16, r10 + call r10, r13 + + ;enable vertical interrupts + ori 2, sr + + ;vscroll reg + ldim 0, r0 + ldimh $C6, r0 + outi $C, r0 + ;hscroll reg + enable display + ldim 0, r0 + ldimh $80, r0 + outi $D, r0 + +forever: + bra forever + +copy_data: + ld16 r1, r2, r4 + outi $F, r4 + + addi 2, r2 + addi -1, r3 + bne copy_data + mov r13, pc + +memcpy16: + ld16 r1, r2, r4 + str16 r0, r2, r4 + + addi 2, r2 + addi -1, r3 + bne memcpy16 + mov r13, pc + +write_zeros: + ldim 0, r4 +zloop: + outi $f, r4 + + addi -1, r3 + bne zloop + mov r13, pc + + + +vectors: + dc.w 0 + dc.w vint_handler + +vint_handler + setuer r13 + ;handler code goes here + + ;setup writes to first element of diagram + ldim $84, r0 + ldimh $60, r0 + outi $E, r0 + + ;copy first row of updated tile map + ldim 0, r1 + ldimh $C0, r1 + ldim 0, r2 + ldim 9, r3 + call r12, r13 + + ;setup writes to second row of diagram + ldim $04, r0 + ldimh $61, r0 + outi $E, r0 + ;copy second row + ldim 9, r3 + call r12, r13 + + ;setup writes to third row of diagram + ldim $84, r0 + ldimh $61, r0 + outi $E, r0 + ;copy third row + ldim 9, r3 + call r12, r13 + + reti r13 + +offsets: + dc.w 52 ;C + dc.w 50 ;B + dc.w 48 ;A + dc.w 34 ;Z + dc.w 32 ;Y + dc.w 30 ;X + dc.w 44 ;Mode + dc.w 26 ;Start + + dc.w 22 ;Right + dc.w 18 ;Left + dc.w 38 ;Down + dc.w 2 ;Up + +colors: + dc.w $000 + dc.w $777 + dc.w $333 + ;second palette + dc.w $000 + dc.w $FFF + dc.w $00F +map: + dc.w 0, 1, 0, 0, 0, 0, 0, 0, 0 + dc.w 3, 0, 4, 0, 5, 0, 7, 8, 9 + dc.w 0, 2, 0, 0, 6, 0, 10, 11, 12 + +tiles: + incbin buttons.tiles \ No newline at end of file