changeset 32:8642cb2ceb89

WIP button test ROM
author Michael Pavone <pavone@retrodev.com>
date Sun, 03 Apr 2016 18:38:41 -0700
parents b87b3ad5068c
children eda4919d955f
files buttons.xcf controller.s16
diffstat 2 files changed, 192 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
Binary file buttons.xcf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controller.s16	Sun Apr 03 18:38:41 2016 -0700
@@ -0,0 +1,192 @@
+	ldim vectors, r0
+	ldimh vectors, r0
+	setvbr r0
+	;load palette
+	ldim 0, r0
+	ldimh $FF,r0
+	outi $E, r0
+	ldim colors, r1
+	ldimh colors, r1
+	
+	;copy 3 colors for 1st palette
+	ldim 0, r2
+	ldim 3, r3
+	ldim copy_data, r12
+	ldimh copy_data, r12
+	call r12, r13
+	
+	;setup writes to 2nd palette
+	ldim $10, r0
+	ldimh $FF,r0
+	outi $E, r0
+	
+	;copy 3 colors for 2nd palette
+	ldim 3, r3	
+	call r12, r13
+	
+	;setup writes for first map row
+	ldim 0, r0
+	ldimh $60, r0
+	outi $E, r0
+	
+	ldim write_zeros, r11
+	ldimh write_zeros, r11
+	;offset by one row and two columns
+	ldim 66, r3
+	call r11, r13
+	
+	ldim 3, r5
+row_loop:
+	;copy 9 table entries for first row
+	ldim 9, r3
+	call r12, r13
+	
+	;zero out rest of row
+	
+	ldim 55, r3
+	call r11, r13
+	
+	addi -1, r5
+	bne row_loop
+	
+	;setup writes to tile data area
+	ldim 0, r0
+	outi $E, r0
+	
+	;zero out first tile
+	ldim $10, r3
+	call r11, r13
+	
+	;copy tiles
+	ldim $C0, r3
+	ldimh 0, r3
+	call r12, r13
+	
+	
+	
+	;copy tile map to ram
+	ldim 0, r0
+	ldimh $C0, r0
+	
+	ldim map, r1
+	ldimh map, r1
+	
+	ldim 0, r2
+	ldim 27, r3
+	
+	ldim memcpy16, r10
+	ldimh memcpy16, r10
+	call r10, r13
+	
+	;enable vertical interrupts
+	ori 2, sr
+	
+	;vscroll reg
+	ldim 0, r0
+	ldimh $C6, r0
+	outi $C, r0
+	;hscroll reg + enable display
+	ldim 0, r0
+	ldimh $80, r0
+	outi $D, r0
+	
+forever:
+	bra forever
+	
+copy_data:
+	ld16 r1, r2, r4
+	outi $F, r4
+	
+	addi 2, r2
+	addi -1, r3
+	bne copy_data
+	mov r13, pc
+	
+memcpy16:
+	ld16 r1, r2, r4
+	str16 r0, r2, r4
+	
+	addi 2, r2
+	addi -1, r3
+	bne memcpy16
+	mov r13, pc
+	
+write_zeros:
+	ldim 0, r4
+zloop:
+	outi $f, r4
+	
+	addi -1, r3
+	bne zloop
+	mov r13, pc
+
+	
+
+vectors:
+	dc.w 0
+	dc.w vint_handler
+	
+vint_handler
+	setuer r13
+	;handler code goes here
+	
+	;setup writes to first element of diagram
+	ldim $84, r0
+	ldimh $60, r0
+	outi $E, r0
+	
+	;copy first row of updated tile map
+	ldim 0, r1
+	ldimh $C0, r1
+	ldim 0, r2
+	ldim 9, r3
+	call r12, r13
+	
+	;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
+	
+	;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
+	
+	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.w 22 ;Right
+	dc.w 18 ;Left
+	dc.w 38 ;Down
+	dc.w 2   ;Up
+	
+colors:
+	dc.w $000
+	dc.w $777
+	dc.w $333
+	;second palette
+	dc.w $000
+	dc.w $FFF
+	dc.w $00F
+map:
+	dc.w 0, 1, 0, 0, 0, 0, 0,  0,  0
+	dc.w 3, 0, 4, 0, 5, 0, 7,  8,  9
+	dc.w 0, 2, 0, 0, 6, 0, 10, 11, 12
+
+tiles:
+	incbin buttons.tiles
\ No newline at end of file