home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Vandalism News 43
/
Vandalism_News_43_2005-03-08_Onslaught_Wrath_Designs_Side_A.d64
/
2x2fast.source
< prev
next >
Wrap
Text File
|
2023-02-26
|
10KB
|
399 lines
; fAST 2X2-fli-rOUTINE BY nINJA / tHE dREAMS IN 2004
INCLUDE STANDARD.C64
EXEC = 0 ; ATTACH QUICK'N'DIRTY TEST-ROUTINE
INTERLACED = 0 ; INTERLACE?
CONST_D800_COL = 0 ; $0C IN $D800 ON fli-BUG EVEN WHEN INTERLACED?
OPEN_BORDER = 1 ; OPEN UPPER/LOWER BORDER?
NMI_ZPY = $02 ; zEROpAGE-VARIABLE (1 BYTE)
NMI = $DC04
RAS_START = $30
RAS_STOP = $F8
TIMER_TEST = 16
TIMER_LINE = 63-1
TIMER_FLI13 = (4*63)-1
TIMER_FLI2 = (8*63)-1
; ------------------------------------------------------------- mACRO
OPEN_BORDER_VAL = $30+{$7e}{$7e}OPEN_BORDER*8
FLI_NMI MACRO D011VAL, D018VAL, DELAY, DOUBLE, NMIHANDLER
IF (DELAY&1)
STY NMI_YMOD+1
ELSEIF
STY NMI_ZPY
ENDIF
IF (DELAY&2)
NOP
ENDIF
IF (DELAY&4)
BIT $DD0D
ENDIF
LDY #D018VAL
STY $D018
LDY #D011VAL
STY $D011
IF {$7e}{$7e}(DELAY&4)
BIT $DD0D
ENDIF
IF (NMIHANDLER>-1)
IF CONST_D800_COL && (DELAY&4)
LDY NMI_LO
ELSEIF
LDY #NMIHANDLER
ENDIF
ENDIF
STY NMI+1
IF DOUBLE
LDY #D018VAL-$30
STY $D018
LDY #(D011VAL+2)&7{$7c}OPEN_BORDER_VAL
STY $D011
ENDIF
IF (DELAY&1)
NMI_YMOD:
LDY #$ff
ELSEIF
LDY NMI_ZPY
ENDIF
RTI
IF CONST_D800_COL && (NMIHANDLER>-1) && (DELAY&4)
NMI_LO: BYT NMIHANDLER
ENDIF
ENDM
; ------------------------------------------------------------- tEST-cODE
IF EXEC
ORG $0801
START:
ADR $080B,4
BYT $9E,"6656",0,0,0
ORG $1000
BINCLUDE "SID\INFINITY.DAT",2
ORG $1A00
SCR_PNT = $FB
SEI
JSR SETUP
LDA #0
STA $D020
STA $D021
JSR $1000
LDA $DD00
AND #$FC
ORA #2
STA $DD00
LDA #$18
STA $D016
JSR INIT2X2
ENDLESS:
LDA ($FB),Y
LDA ($FB,X)
INC $0400,X
LDA #$10
AND $DC01
BNE ENDLESS
SEI
LDA #$7F
STA $DD0D
LDA $DD0D
LDA #$37
STA $01
LDA #8
STA $DE00
JMP ($FFFC)
SETUP:
LDY #0
STY SCR_PNT
LDA #$40
STA SCR_PNT+1
MAKE_BM:
LDA #$84
STA (SCR_PNT),Y
INY
STA (SCR_PNT),Y
INY
LDA #$21
STA (SCR_PNT),Y
INY
STA (SCR_PNT),Y
INY
BNE MAKE_BM
INC SCR_PNT+1
LDA SCR_PNT+1
CMP #$60
BCC MAKE_BM
LDA #$CF
JSR FILL_MEM
LDA #$6E
JSR FILL_MEM
LDA #$5D
JSR FILL_MEM
LDA #$31
IF INTERLACED
JSR FILL_MEM
LDA #$5D
JSR FILL_MEM
LDA #$31
JSR FILL_MEM
LDA #$CF
JSR FILL_MEM
LDA #$6E
ENDIF
FILL_MEM:
LDX #3
FRAM1:
STA (SCR_PNT),Y
INY
BNE FRAM1
INC SCR_PNT+1
DEX
BPL FRAM1
RTS
ELSEIF
START = $0823
ENDIF
; --------------------------------------------------------- iNIT (SPLIT UP)
ORG $0CDC
INIT2X2:
SEI
LDA #$35
STA $01
; cia-dETECTION
LDX #$7F
STX $DD0D
LDA $DD0D
LDA #LO(FAKE_NMI)
LDY #HI(FAKE_NMI)
STA $FFFA
STY $FFFB
LDA #LO(TIMER_TEST)
STA $DD04
LDA $D012
BNE *-3
STA $DD05
LDA #$11
STA $DD0E
LDA #$81
STA $DD0D
BYT [10]$EA
FAKE_NMI:
LDY $DD04
STX $DD0D
LDA $DD0D
PLA
PLA
PLA
JMP SETUP_CIA
ORG $0BDE
SETUP_CIA:
CPY #3
BEQ OLD_CIA
LDA #$D5
STA CIA_MOD
LDA #$24
STA CIA_MOD2
OLD_CIA:
; sETUP ciaS
LDX #LO(NMI)
LDY #HI(NMI)
STX $FFFA
STY $FFFB
LDA #$4C
STA NMI
LDA #$3F
STA NMI+1
LDA #$10
STA $DC0E
LDX #LO(TIMER_LINE)
LDY #HI(TIMER_LINE)
STX $DC06
STY $DC07
LDX #LO(TIMER_FLI13)
;LDY #HI(TIMER_FLI13)
STX $DD04
STY $DD05
LDX #LO(TIMER_FLI2)
;LDY #HI(TIMER_FLI2)
INY
STX $DD06
STY $DD07
JMP pALtIMING
ORG $0ADD
; mAKE STABLE RASTER
pALtIMING:
LDX #7
CPX $D012
BNE *-3
LDY #9
DEY
BNE *-1
CMP ($00),Y
INX
CPX $D012
BEQ pALtIMING2
CMP ($00),Y
pALtIMING2:
LDY #9
DEY
BNE *-1
NOP
NOP
NOP
INX
CPX $D012
BEQ pALtIMING4
CMP $db
pALtIMING4:
LDY #10
DEY
BNE *-1
NOP
INX
CPX $D012
BNE pALtIMING6
pALtIMING6:
; sTART TIMERS AT CORRECT CYCLE.
LDY #5 ; aDD CYCLES HERE (BEFORE CIA_MOD)
DEY ; TO START fli A LITTLE LATER.
BNE *-1 ; aND KEEP IT SHORT, JUST A FEW
NOP ; BYTES LEFT!
CIA_MOD: BIT $db
LDA #$11
STA $DD0E,Y
JMP SETUP_IRQ
ORG $08DC
SETUP_IRQ:
LDY #23
DEY
BNE *-1
NOP
STA $DD0F,Y
JSR RTS
PHA
PLA
CIA_MOD2: CMP $db,X
STA $DC0F
; sETUP irq
LDA #$7F
STA $D019
STA $DC0D
LDA $DC0D
LDX #LO(UPPER_BORDER)
LDY #HI(UPPER_BORDER)
STX $FFFE
STY $FFFF
LDA #RAS_START
STA $D012
LDA #$39
STA $D011
LDA #1
STA $D01A
CLI
RTS: RTS
ORG $0DDD
BYT "ninja was here..."
; ------------------------------------------------------------ irqS
ORG $0E03
UPPER_BORDER:
STA UPPER_A+1
BIT $DD0D
LDA #$83
STA $DD0D
STA $D019
LDA #LO(LOWER_BORDER)
STA $FFFE
LDA #RAS_STOP
STA $D012
UPPER_A: LDA #$ff
RTI
ORG $0EDD
LOWER_BORDER:
STA LOWER_A+1
LDA #3
STA $DD0D
STA $D019
STA $FFFE
STX LOWER_X+1
STY LOWER_Y+1
LDA #RAS_START
STA $D012
IF INTERLACED
LDA #$40
EOR $D018
STA $D018
LDA NMI+1
EOR #$3F!$56
STA NMI+1
LDA $D016
EOR #2
STA $D016
ENDIF
IF EXEC
JSR $1003
ELSEIF
BIT $1003 ; cHANGE THIS FOR MUSIC-PLAY OR SO
ENDIF
LOWER_Y: LDY #$ff
LOWER_X: LDX #$ff
LOWER_A: LDA #$FF
RTI
; ------------------------------------------------------------- nmiS
MACEXP OFF
RUNCNT SET 0
REPT 8
ORG $083F+RUNCNT*256
FLI_NMI $23,$90,RUNCNT,0,-1
ORG $0823+RUNCNT*256
FLI_NMI $BD,$A0,RUNCNT,0,-1
ORG $08BD+RUNCNT*256
FLI_NMI $3F,$B0,RUNCNT,1,-1
IF INTERLACED
ORG $0856+RUNCNT*256
FLI_NMI $3B,$D0,RUNCNT,0,$71
ORG $0871+RUNCNT*256
FLI_NMI $3D,$E0,RUNCNT,0,$8C
ORG $088C+RUNCNT*256
FLI_NMI $3F,$F2,RUNCNT,1,$56
ENDIF
RUNCNT SET RUNCNT+1
ENDM
END START