Mercurial > repos > simple16
diff controller.s16 @ 37:44c057a640b2
Display state of both controllers in controller test ROM
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 03 Apr 2016 21:27:27 -0700 |
parents | 5a5e02d1acf1 |
children |
line wrap: on
line diff
--- 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