# HG changeset patch # User Michael Pavone # Date 1459735415 25200 # Node ID 4a093f15fb1b45b41d1e1f6b5b8368768388de80 # Parent eda4919d955f60e6909941a9ec5b2cc1fb4318d5 Finish controller test for controller 1 diff -r eda4919d955f -r 4a093f15fb1b controller.s16 --- a/controller.s16 Sun Apr 03 19:03:11 2016 -0700 +++ b/controller.s16 Sun Apr 03 19:03:35 2016 -0700 @@ -16,7 +16,7 @@ call r12, r13 ;setup writes to 2nd palette - ldim $10, r0 + ldim $20, r0 ldimh $FF,r0 outi $E, r0 @@ -158,22 +158,61 @@ ldim 9, r3 call r12, r13 + ;update map for next frame + + ;read controller 1 + ini $0, r0 + ;r1 = map + ldim offsets, r2 + ldimh offsets, r2 + ;index + ldim 0, r3 + ;mask to test bits + ldim 1, r4 + ;constant $2000 + ldim 0, r9 + ldimh $20, r9 + ;limit + ldim 12, r5 +modify_loop + ;load offset + ld8 r2, r3, r6 + ;load existing value + ld16 r1, r6, r7 + ;test for button pressed + and r0, r4, r8 + beq not_pressed + or r9, r7, r7 + bra store_modified +not_pressed + not r9, r9 + and r9, r7, r7 + not r9, r9 +store_modified + str16 r1, r6, r7 + ;shift mask to the left + add r4, r4, r4 + addi 1, r3 + cmp r3, r5 + bne modify_loop + + 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.b 34 ;Z + dc.b 32 ;Y + dc.b 30 ;X + dc.b 52 ;C + dc.b 50 ;B + dc.b 48 ;A + dc.b 44 ;Mode + dc.b 26 ;Start - dc.w 22 ;Right - dc.w 18 ;Left - dc.w 38 ;Down - dc.w 2 ;Up + dc.b 22 ;Right + dc.b 18 ;Left + dc.b 38 ;Down + dc.b 2 ;Up colors: dc.w $000