changeset 34:4a093f15fb1b

Finish controller test for controller 1
author Michael Pavone <pavone@retrodev.com>
date Sun, 03 Apr 2016 19:03:35 -0700
parents eda4919d955f
children 5a5e02d1acf1
files controller.s16
diffstat 1 files changed, 52 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- 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