lea Vint(pc), a1 ;Load Address for VBL routine jsr $368 ;make appropriate change in Interrupt Jump table lea Table(pc),a5 movem.w (a5)+,d5-d7 movem.l (a5)+,a0-a4 move.w #$8004, (a4) move.w #$8104, (a4) move.w #$8f01,(a4) move #$2700, sr ColorChange: move.l #$c0000000,$c00004 move.l #$0000,$c00000 move.l #$06ad,$c00000 move.l #$048a,$c00000 move.l #$0448,$c00000 move.l #$0ea0,$c00000 move.l #$0606,$c00000 move.l #$0444,$c00000 move.l #$0666,$c00000 move.l #$0666,$c00000 move.l #$0888,$c00000 move.l #$0aaa,$c00000 move.l #$0444,$c00000 move.l #$00ee,$c00000 move.l #$00ac,$c00000 move.l #$0a0a,$c00000 move.l #$0eee,$c00000 move.w #$8f02,(a4) move.l #$40000003,$c00004 move.w #512,d5 lea Text(pc),a5 move.w #$0000,d0 VramMap: move.b (a5)+,d0 move.w d0,$c00000 dbra d5,VramMap move.l #$40000000,$c00004 lea font(pc),a5 move.w #495,d5 VramFont: move.w (a5)+,$c00000 dbra d5,VramFont lea Sprite(pc),a5 move.l #$FFFF00,a6 move.w #3,d0 SpriteTableMove: move.w (a5)+,(a6)+ dbra d0,SpriteTableMove moveq #$40,d0 move.b d0,$a10009 move.b d0,$a1000b move.b d0,$a1000d move.b #0,$FFFF40 move.b #0,$FFFF41 move.b #0,$FFFFff move.w #$8164,(a4) and.w #$F8FF, sr MoveIt: add.b #1,$FFFFff cmp.b #8,$FFFFff bne.s NotZero clr.b $FFFFff NotZero: move.b $FFFF41,d0 move.b d0,d5 and.b #1,d5 beq.s NotUp cmp.w #$0080,$FFFF00 ble.s NotUp sub.w #$0001,$FFFF00 move.b #07,$FFFF05 cmp.b #0,$FFFFff bne.s NotUp eor.b #$08,$FFFF04 ;It would appear that a bug in the assembler is changing this to an eor.b #$01 for some reason. The value was fixed in a hex editor later. NotUp: move.b d0,d5 and.b #2,d5 beq.s NotDown cmp.w #$0158,$FFFF00 bge.s NotDown add.w #$0001,$FFFF00 move.b #01,$FFFF05 cmp.b #0,$FFFFff bne.s NotDown eor.b #$08,$FFFF04 NotDown: move.b d0,d5 and.b #4,d5 beq.s NotLeft cmp.w #$0080,$FFFF06 ble.s NotLeft sub.w #$0001,$FFFF06 move.b #$08,$FFFF04 cmp.b #0,$FFFFff bne.s NotLeft cmp.b #13,$FFFF05 bge.s NoAdjust move.b #13,$FFFF05 bsr.s NotLeft NoAdjust: cmp.b #25,$FFFF05 bne.s Normal move.b #13,$FFFF05 bsr.s NotLeft Normal: add.b #6,$FFFF05 NotLeft: move.b d0,d5 and.b #8,d5 beq.s NextLoop cmp.w #$01b8,$FFFF06 bge.s NextLoop add.w #$0001,$FFFF06 move.b #$00,$FFFF04 cmp.b #0,$FFFFff bne.s NextLoop cmp.b #13,$FFFF05 bge.s NoAdjust2 move.b #13,$FFFF05 bsr.s NextLoop NoAdjust2: cmp.b #25,$FFFF05 bne.s Normal2 move.b #13,$FFFF05 bsr.s NextLoop Normal2: add.b #6,$FFFF05 NextLoop: cmp.b #1,$FFFF40 beq.s NextLoop move.b #1,$FFFF40 bra MoveIt Vint: SpriteRoutine: move.l #$78000002,$c00004 ;movem.l d0-d7/a0-a4,-(a7) move.w #3,d0 move.l #$FFFF00,a4 SpriteTable: move.w (a4)+,$c00000 dbra d0,SpriteTable and.w #$f8ff,sr ;movem.l (a7)+,d0-d7/a0-a4 move.b #0,$FFFF40 move.b #0,d0 move.b #0,d1 move.b #$40,$a10003 nop nop move.b $a10003,d1 andi.b #$3f,d1 move.b #$00,$a10003 nop nop move.b $a10003,d0 and.b #$30,d0 lsl.b #2,d0 or.b d1,d0 not.b d0 move.b d0,$FFFF41 rte Table: dc.w $8000, $3fff, $0100, $00a0, $0000, $00a1, $1100, $00a1 dc.w $1200, $00c0, $0000, $00c0, $0004 include misc.dat font: incbin char.dat org $20000