# HG changeset patch # User Michael Pavone # Date 1459744047 25200 # Node ID 44c057a640b2d3d4722ce79938ebb478aac72275 # Parent 5683d9ba9acc4e189504d7b9a06873d1ff7e0e97 Display state of both controllers in controller test ROM diff -r 5683d9ba9acc -r 44c057a640b2 controller.s16 --- a/controller.s16 Sun Apr 03 21:27:03 2016 -0700 +++ b/controller.s16 Sun Apr 03 21:27:27 2016 -0700 @@ -65,6 +65,13 @@ ldimh memcpy16, r10 call r10, r13 + ;make a second copy of tile map for controller #2 + ldim $36, r0 + ldimh $C0, r0 + ldim 0, r2 + ldim 27, r3 + call r10, r13 + ;enable vertical interrupts ori 2, sr @@ -117,39 +124,60 @@ setuer r13 ;handler code goes here - ;setup writes to first element of diagram + ;VRAM address of first element of diagram ldim $84, r0 ldimh $60, r0 - outi $E, r0 - ;copy first row of updated tile map + ;distance between rows + ldim 128, r5 + ldimh 0, r5 + + ;RAM address of map ldim 0, r1 ldimh $C0, r1 + + ;index ldim 0, r2 - ldim 9, r3 - call r12, r13 + + ;iteration count + ldim 3, r6 + + ldim copy_rows, r9 + ldimh copy_rows, r9 - ;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 + call r9, r8 - ;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 + ;VRAM address of first element of 2nd diagram + ldim $AC, r0 + ldimh $60, r0 + ldim 3, r6 + call r9, r8 + + + ;update map for next frame ;read controller 1 ini $0, r0 ;r1 = map + + ldim update_map, r10 + ldimh update_map, r10 + call r10, r10 + + ;read controller 2 + ini $1, r0 + ldim $36, r1 + ldimh $C0, r1 + + ldim update_map, r10 + ldimh update_map, r10 + call r10, r10 + + reti r13 + +update_map: ldim offsets, r2 ldimh offsets, r2 ;index @@ -183,8 +211,19 @@ cmp r3, r5 bne modify_loop + mov r10, pc - reti r13 +copy_rows + outi $E, r0 + + ;copy row of updated tile map + ldim 9, r3 + call r12, r13 + + add r5, r0, r0 + addi -1, r6 + bne copy_rows + mov r8, pc offsets: dc.b 34 ;Z