home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
M.u.C.S. Disc 2000
/
MUCS2000.iso
/
falcon
/
mars
/
mars_dsp.s
< prev
next >
Wrap
Text File
|
1995-04-30
|
18KB
|
481 lines
TEXT
Begin:
PEA 0.W
MOVE.W #$20,-(A7)
TRAP #1
ADDQ.W #6,A7
BSR MAP_GENERATOR
BSR MAP_LIGHT
BSR CALC_Z_TAB
BSR DEF_SCREEN
LEA NFDSP,A6
BSR DSP_LOAD
BSR SEND_DATA_2_DSP
BSR SET_REZ
BSR TEST
BSR TEST2
MOVE.W #7,-(A7)
TRAP #1
ADDQ.L #2,A7
BSET #0,$FFFF82C3.W
MOVE.L #$F0,$FFFF9800.W
VBL_LOOPZ: MOVE.W #$25,-(A7)
TRAP #$E
ADDQ.L #2,A7
MOVE.B L0035,$FFFF8201.W
MOVE.B L0036,$FFFF8203.W
MOVE.B L0037,$FFFF820D.W
MOVE.W Y_POS,D0
LSL.W #7,D0
OR.W X_POS,D0
L0001: BTST #1,$FFFFA202.W
BEQ.S L0001
MOVE.W D0,$FFFFA206.W
MOVE.W #$7E0,D4
LEA $FFFFA206.W,A6
MOVEA.L BACK,A0
RECEPT0: BTST #0,$FFFFA202.W
BEQ.S RECEPT0
MOVE.W (A6),D0
BMI.S END_MM
MOVE.W (A6),D1
MOVE.W (A6),D2
MOVE.W (A6),D3
LEA (A0,D0.W*4),A1
MOVE.W D2,D5
AND.W D4,D5
MM_GOURO: MOVE.W D5,(A1)+
ADD.W D3,D2
MOVE.W D5,(A1)+
MOVE.W D2,D5
AND.W D4,D5
LEA 764(A1),A1
DBF D1,MM_GOURO
BRA.S RECEPT0
END_MM: MOVEA.L BACK,A0
LEA $FFFFA206.W,A6
MOVE.W #$1E,D7
SWAP D7
MOVE.W #$1E,D7
RECEPT1: BTST #0,$FFFFA202.W
BEQ.S RECEPT1
MOVE.W (A6),D0
BMI.S END_MM_CLS
MOVE.W (A6),D1
LEA (A0,D0.W*4),A1
MM_CLS: MOVE.L D7,(A1)
LEA 768(A1),A1
DBF D1,MM_CLS
BRA RECEPT1
END_MM_CLS: MOVE.L PHYSIK,D0
MOVE.L BACK,PHYSIK
MOVE.L D0,BACK
MOVE.B $FFFFFC02.W,D1
MOVE.W Y_POS,D0
CMPI.B #$48,D1
BNE.S NO_UP
SUBQ.W #1,D0
NO_UP: CMPI.B #$50,D1
BNE.S NO_DOWN
ADDQ.W #1,D0
NO_DOWN: ANDI.W #$7F,D0
MOVE.W D0,Y_POS
MOVE.W X_POS,D0
CMPI.B #$4B,D1
BNE.S NO_LEFT
SUBQ.W #1,D0
NO_LEFT: CMPI.B #$4D,D1
BNE.S NO_RIGHT
ADDQ.W #1,D0
NO_RIGHT: ANDI.W #$7F,D0
MOVE.W D0,X_POS
CMPI.B #$39,$FFFFFC02.W
BNE VBL_LOOPZ
BSR TEND_REZ
CLR.W -(A7)
TRAP #1
SEND_DATA_2_DSP: LEA $FFFFA204.W,A0
WAIT_DSP1: BTST #1,$FFFFA202.W
BEQ WAIT_DSP1
MOVEQ #1,D0
MOVE.W #$81,D7
SEND1: MOVE.L #$800000,D1
DIVU.L D0,D1
MOVE.L D1,(A0)
ADDQ.L #1,D0
DBF D7,SEND1
WAIT_DSP2: BTST #1,$FFFFA202.W
BEQ WAIT_DSP2
LEA Z_TAB,A1
MOVEQ #7,D6
MOVE.W #$3B,D7
SEND2: MOVEQ #0,D0
MOVE.W (A1)+,D0
MOVE.L D0,(A0)
MOVEQ #0,D0
MOVE.W (A1)+,D0
LSL.L D6,D0
MOVE.L D0,(A0)
MOVEQ #0,D0
MOVE.W (A1)+,D0
LSL.L D6,D0
MOVE.L D0,(A0)
DBF D7,SEND2
WAIT_DSP0: BTST #1,$FFFFA202.W
BEQ WAIT_DSP0
LEA MAP,A1
LEA COLOR_MAP,A2
MOVE.W #$3FFF,D7
SEND0: MOVEQ #0,D0
MOVE.B (A2)+,D0
SWAP D0
MOVE.W (A1)+,D0
MOVE.L D0,(A0)
DBF D7,SEND0
RTS
CALC_Z_TAB: LEA Z_TAB,A0
MOVEQ #0,D0
MOVE.W #8,D0
MOVE.L #$10000,D1
MOVEQ #0,D2
MOVEQ #0,D6
MOVE.W #$60,D4
MOVE.W #7,D5
MOVEQ #$3B,D7
CALC_Z_TAB_LOOPZ: MOVE.W #$80,D3
ADD.W D2,D3
ADD.W D0,D3
SUB.W D6,D3
MOVE.W D0,D2
MOVE.W D3,(A0)+
SWAP D0
MOVE.L D0,D3
DIVU D4,D3
MOVE.W D3,(A0)+
MULU #$C0,D3
SWAP D3
MOVE.W D2,D6
ADD.W D6,D6
SUB.W D3,D6
MOVEQ #0,D3
MOVE.W D4,D3
SWAP D3
LSR.L D5,D3
DIVU D2,D3
MOVE.W D3,(A0)+
ADD.L D1,D0
SWAP D0
DBF D7,CALC_Z_TAB_LOOPZ
RTS
MAP_LIGHT: LEA MAP,A0
LEA COLOR_MAP,A1
MOVE.W #4,D6
MOVE.W #$3FFF,D7
NEXT_LIGHT_TO_CA: MOVE.W (A0)+,D0
SUB.W (A0),D0
ASR.W D6,D0
ADDI.W #$20,D0
CMPI.W #1,D0
BPL.S NO_LIGHT_NEG
MOVEQ #1,D0
BRA.S NO_TOO_LIGHT
NO_LIGHT_NEG: CMPI.W #$3F,D0
BLS.S NO_TOO_LIGHT
MOVEQ #$3F,D0
NO_TOO_LIGHT: MOVE.B D0,(A1)+
DBF D7,NEXT_LIGHT_TO_CA
RTS
MAP_GENERATOR: LEA MAP,A6
MOVE.W #$3FFF,D6
MOVE.W #$11,-(A7)
TRAP #$E
ADDQ.L #2,A7
AND.W D6,D0
ADDI.W #$2000,D0
MOVE.W D0,(A6)
MOVE.W #$11,-(A7)
TRAP #$E
ADDQ.L #2,A7
AND.W D6,D0
ADDI.W #$2000,D0
MOVE.W D0,128(A6)
MOVE.W #$11,-(A7)
TRAP #$E
ADDQ.L #2,A7
AND.W D6,D0
ADDI.W #$2000,D0
MOVE.W D0,16384(A6)
MOVE.W #$11,-(A7)
TRAP #$E
ADDQ.L #2,A7
AND.W D6,D0
ADDI.W #$2000,D0
MOVE.W D0,16512(A6)
MOVE.W #$20,D7
NEXT_PASS: LSR.W #1,D6
MOVE.W D7,D4
P1_PART_Y: MOVE.W D7,D5
P1_PART_X: MOVE.W #$11,-(A7)
TRAP #$E
ADDQ.L #2,A7
AND.W D6,D0
MOVE.W D6,D1
ADDQ.W #1,D1
LSR.W #1,D1
SUB.W D1,D0
MOVEQ #0,D2
MOVEQ #0,D3
MOVE.W D4,D1
SUB.W D7,D1
LSL.W #7,D1
ADD.W D5,D1
SUB.W D7,D1
MOVE.W (A6,D1.W*2),D2
MOVE.W D4,D1
ADD.W D7,D1
ANDI.W #$7F,D1
LSL.W #7,D1
ADD.W D5,D1
SUB.W D7,D1
MOVE.W (A6,D1.W*2),D3
ADD.L D3,D2
MOVE.W D4,D1
ADD.W D7,D1
ANDI.W #$7F,D1
LSL.W #7,D1
MOVE.W D5,D3
ADD.W D7,D3
ANDI.W #$7F,D3
ADD.W D3,D1
MOVE.W (A6,D1.W*2),D3
ADD.L D3,D2
MOVE.W D4,D1
SUB.W D7,D1
LSL.W #7,D1
MOVE.W D5,D3
ADD.W D7,D3
ANDI.W #$7F,D3
ADD.W D3,D1
MOVE.W (A6,D1.W*2),D3
ADD.L D3,D2
LSR.L #2,D2
ADD.W D0,D2
MOVE.W D4,D1
LSL.W #7,D1
ADD.W D5,D1
MOVE.W D2,(A6,D1.W*2)
MOVE.W D7,D1
ADD.W D1,D1
ADD.W D1,D5
CMPI.W #$80,D5
BCS P1_PART_X
ADD.W D1,D4
CMPI.W #$80,D4
BCS P1_PART_Y
MOVE.W D7,D4
P2_PART_Y: MOVEQ #0,D5
P2_PART_X: MOVE.W #$11,-(A7)
TRAP #$E
ADDQ.L #2,A7
AND.W D6,D0
MOVE.W D6,D1
ADDQ.W #1,D1
LSR.W #1,D1
SUB.W D1,D0
MOVEQ #0,D2
MOVEQ #0,D3
MOVE.W D4,D1
SUB.W D7,D1
LSL.W #7,D1
ADD.W D5,D1
MOVE.W (A6,D1.W*2),D2
MOVE.W D4,D1
LSL.W #7,D1
MOVE.W D5,D3
SUB.W D7,D3
ANDI.W #$7F,D3
ADD.W D3,D1
MOVE.W (A6,D1.W*2),D3
ADD.L D3,D2
MOVE.W D4,D1
ADD.W D7,D1
ANDI.W #$7F,D1
LSL.W #7,D1
ADD.W D5,D1
MOVE.W (A6,D1.W*2),D3
ADD.L D3,D2
MOVE.W D4,D1
LSL.W #7,D1
MOVE.W D5,D3
ADD.W D7,D3
ANDI.W #$7F,D3
ADD.W D3,D1
MOVE.W (A6,D1.W*2),D3
ADD.L D3,D2
LSR.L #2,D2
ADD.W D0,D2
MOVE.W D4,D1
LSL.W #7,D1
ADD.W D5,D1
MOVE.W D2,(A6,D1.W*2)
SUB.W D7,D4
ADD.W D7,D5
MOVE.W #$11,-(A7)
TRAP #$E
ADDQ.L #2,A7
AND.W D6,D0
MOVE.W D6,D1
ADDQ.W #1,D1
LSR.W #1,D1
SUB.W D1,D0
MOVEQ #0,D2
MOVEQ #0,D3
MOVE.W D4,D1
SUB.W D7,D1
ANDI.W #$7F,D1
LSL.W #7,D1
ADD.W D5,D1
MOVE.W (A6,D1.W*2),D2
MOVE.W D4,D1
LSL.W #7,D1
ADD.W D5,D1
SUB.W D7,D1
MOVE.W (A6,D1.W*2),D3
ADD.L D3,D2
MOVE.W D4,D1
ADD.W D7,D1
ANDI.W #$7F,D1
LSL.W #7,D1
ADD.W D5,D1
MOVE.W (A6,D1.W*2),D3
ADD.L D3,D2
MOVE.W D4,D1
LSL.W #7,D1
MOVE.W D5,D3
ADD.W D7,D3
ANDI.W #$7F,D3
ADD.W D3,D1
MOVE.W (A6,D1.W*2),D3
ADD.L D3,D2
LSR.L #2,D2
ADD.W D0,D2
MOVE.W D4,D1
LSL.W #7,D1
ADD.W D5,D1
MOVE.W D2,(A6,D1.W*2)
ADD.W D7,D4
ADD.W D7,D5
CMPI.W #$80,D5
BCS P2_PART_X
MOVE.W D7,D1
ADD.W D1,D1
ADD.W D1,D4
CMPI.W #$80,D4
BCS P2_PART_Y
LSR.W #1,D7
BNE NEXT_PASS
MOVE.W MAP,L002D
RTS
TEST: LEA MAP,A0
MOVEA.L BACK,A1
MOVE.W #$7E0,D5
MOVEQ #$7F,D6
TEST_Y: MOVEQ #$7F,D7
TEST_X: MOVE.W (A0)+,D0
LSL.W #1,D0
LSR.W #5,D0
AND.W D5,D0
MOVE.W D0,(A1)+
DBF D7,TEST_X
ADDA.W #$200,A1
DBF D6,TEST_Y
RTS
TEST2: LEA COLOR_MAP,A0
MOVEA.L BACK,A1
ADDA.W #$102,A1
MOVE.W #$7E0,D5
MOVEQ #$7F,D6
TEST_Y2: MOVEQ #$7F,D7
TEST_X2: MOVE.B (A0)+,D0
LSL.W #5,D0
AND.W D5,D0
MOVE.W D0,(A1)+
DBF D7,TEST_X2
ADDA.W #$200,A1
DBF D6,TEST_Y2
RTS
DEF_SCREEN: MOVE.L #L003A,D0
ANDI.B #$FC,D0
MOVE.L D0,BACK
ADDI.L #$16800,D0
MOVE.L D0,PHYSIK
RTS
SET_REZ: DC.B $A0,$0A
MOVE.W #2,-(A7)
TRAP #$E
ADDQ.L #2,A7
MOVE.L D0,OLD_PBAS
MOVE.W #$FFFF,-(A7)
MOVE.W #$58,-(A7)
TRAP #$E
ADDQ.L #4,A7
MOVE.W D0,OLD_REZO
MOVE.W #$44,-(A7)
MOVE.W #3,-(A7)
MOVE.L BACK,-(A7)
MOVE.L BACK,-(A7)
MOVE.W #5,-(A7)
TRAP #$E
ADDA.L #$E,A7
MOVE.W #$25,-(A7)
TRAP #$E
ADDQ.L #2,A7
RTS
TEND_REZ: MOVE.W OLD_REZO,-(A7)
MOVE.W #3,-(A7)
MOVE.L OLD_PBAS,-(A7)
MOVE.L OLD_PBAS,-(A7)
MOVE.W #5,-(A7)
TRAP #$E
ADDA.L #$E,A7
DC.B $A0,$09
RTS
DSP_LOAD: PEA YAV
PEA XAV
MOVE.W #$6A,-(A7)
TRAP #$E
ADDA.L #$A,A7
MOVE.L YAV,-(A7)
MOVE.L XAV,-(A7)
MOVE.W #$6B,-(A7)
TRAP #$E
ADDA.L #$A,A7
PEA BUF_DSP
MOVE.W #3,-(A7)
PEA (A6)
MOVE.W #$6C,-(A7)
TRAP #$E
ADDA.L #$C,A7
RTS
DATA
NFDSP: DC.B $6D,$61,$72,$73,$2E,$6C,$6F,$64,$00,$00
X_POS: DC.B $00,$7F
Y_POS: DC.B $00,$0A
BSS
MAP: DS.B 32768
L002D: DS.W 1
COLOR_MAP: DS.B 16384
Z_TAB: DS.B 1128
XAV: DS.L 1
YAV: DS.L 1
BUF_DSP: DS.B 8000
BACK: DS.L 1
PHYSIK: DS.B 1
L0035: DS.B 1
L0036: DS.B 1
L0037: DS.B 1
OLD_REZO: DS.W 1
OLD_PBAS: DS.B 256008
L003A: DS.B 368640
ZUEND: END