changeset 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 5683d9ba9acc
children 3b7910575a00
files controller.s16
diffstat 1 files changed, 59 insertions(+), 20 deletions(-) [+]
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