view controller.s16 @ 32:8642cb2ceb89

WIP button test ROM
author Michael Pavone <pavone@retrodev.com>
date Sun, 03 Apr 2016 18:38:41 -0700
parents
children 4a093f15fb1b
line wrap: on
line source

	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