Mercurial > repos > ghero
diff genesis.s68 @ 9:997690aa0507
Improve method for choosing line palette entries. Read number of global and dynamic colors from image binary. Go back to doing a word, longword, word pattern of writes for turning off display, doing DMA and turning it back on again to make things work correctly on the real hardware.
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 04 Sep 2013 00:41:52 -0700 |
parents | 4ffd621f1d0c |
children |
line wrap: on
line diff
--- a/genesis.s68 Tue Sep 03 09:49:29 2013 -0700 +++ b/genesis.s68 Wed Sep 04 00:41:52 2013 -0700 @@ -87,7 +87,7 @@ PalAddress equ ButtonStateNew+2 CRAMXferSizeCmd equ $9308 -CRAMDMACmd equ $C0100080 +CRAMDMACmd equ $C0000080 StaticColors equ 8 USE_HINT equ 0 @@ -141,10 +141,17 @@ dbra d2, WriteNamesY move.l #$C0000000, (a5) ;setup writes to CRAM - moveq #(StaticColors-1), d0 ;copy first 12 colors (static pallete) + move.b (a0)+, d0 ;Number of static colors + move.b (a0)+, d1 ;Number of dynamic colors + ext.w d0 + move.w d0, -(a7) + beq NoStatic + subq.w #1, d0 CopyColors: move.w (a0)+, (a4) dbra d0, CopyColors + move.w (a7)+, d0 +NoStatic: move.l a0, (PalAddress).w @@ -172,11 +179,16 @@ moveq #0, d3 ;bsr ChangeFrameBigSprite - + move.w d0, d5 + ext.l d5 + moveq #17, d2 + lsl.l d2, d5 + or.l #CRAMDMACmd, d5 ;setup DMA command word - move.l #CRAMDMACmd, d5 ;setup DMA command word - - move.w #CRAMXferSizeCmd, (a5) ;set Transfer length + ext.w d1 + beq NoDynamic + or.w #$9300, d1 + move.w d1, (a5) ;set Transfer length move.w #$9400, (a5) move.w #$8114, d6 @@ -209,12 +221,12 @@ HINT: - ;move.w d6, (a5) - ;move.l d5, (a5) ;start DMA - ;move.w d7, (a5) - move.l d6, (a5) - move.l d7, (a5) - move.w #CRAMXferSizeCmd, (a5) ;set Transfer length + move.w d6, (a5) + move.l d5, (a5) ;start DMA + move.w d7, (a5) + ;move.l d6, (a5) + ;move.l d7, (a5) + move.w d1, (a5) ;set Transfer length move.w #$9400, (a5) if USE_HINT @@ -225,8 +237,13 @@ beq WaitTop bra LineDone - +NoDynamic: + move.w #$8174, (a5) + move #$2300, SR +.loop + bra .loop VINT: + move.w d1, -(a7) if USE_HINT move.w #$8144, (a5) endif @@ -253,16 +270,17 @@ ;move.l d5, (a5) ;do DMA for first line - move.w #CRAMXferSizeCmd, (a5) ;set Transfer length + move.w (a7)+, d1 + move.w d1, (a5) ;set Transfer length move.w #$9400, (a5) move.w #$8114, d6 ;VDP commands to turn screen on and off during HBlank - swap d6 - swap d5 - move.w d5, d6 - swap d5 - move.w d5, d7 - swap d7 + ;swap d6 + ;swap d5 + ;move.w d5, d6 + ;swap d5 + ;move.w d5, d7 + ;swap d7 move.w #$8174, d7 if USE_HINT move.w d7, (a5)