*************************************************
* A NEW SLIPSTREAM INTRO (C) 1990 MARC		*
*************************************************
	OPT	D-,C-,O1+,O2+

*********************************
* A FEW HARWARE EQUATES		*
*********************************

	SECTION	DEMO,CODE_C

CUSTOM	EQU	$DFF000
SPR0CTL	EQU	$142
COP2LCH	EQU	$84




	IFND	HARDWARE_CUSTOM_I
HARDWARE_CUSTOM_I	SET	1
bltddat	EQU	$000
dmaconr	EQU	$002
vposr	EQU	$004
vhposr	EQU	$006
dskdatr	EQU	$008
joy0dat	EQU	$00A
joy1dat	EQU	$00C
clxdat	EQU	$00E
adkconr	EQU	$010
pot0dat	EQU	$012
pot1dat	EQU	$014
potinp	EQU	$016
serdatr	EQU	$018
dskbytr	EQU	$01A
intenar	EQU	$01C
intreqr	EQU	$01E
dskpt	EQU	$020
dsklen	EQU	$024
dskdat	EQU	$026
refptr	EQU	$028
vposw	EQU	$02A
vhposw	EQU	$02C
copcon	EQU	$02E
serdat	EQU	$030
serper	EQU	$032
potgo	EQU	$034
joytest	EQU	$036
strequ	EQU	$038
strvbl	EQU	$03A
strhor	EQU	$03C
strlong	EQU	$03E
bltcon0	EQU	$040
bltcon1	EQU	$042
bltafwm	EQU	$044
bltalwm	EQU	$046
bltcpt	EQU	$048
bltbpt	EQU	$04C
bltapt	EQU	$050
bltdpt	EQU	$054
bltsize	EQU	$058
bltcmod	EQU	$060
bltbmod	EQU	$062
bltamod	EQU	$064
bltdmod	EQU	$066
bltcdat	EQU	$070
bltbdat	EQU	$072
bltadat	EQU	$074
dsksync	EQU	$07E
cop1lc	EQU	$080
cop2lc	EQU	$084
copjmp1	EQU	$088
copjmp2	EQU	$08A
;copins	EQU	$08C
diwstrt	EQU	$08E
diwstop	EQU	$090
ddfstrt	EQU	$092
ddfstop	EQU	$094
dmacon	EQU	$096
clxcon	EQU	$098
intena	EQU	$09A
intreq	EQU	$09C
adkcon	EQU	$09E
aud	EQU	$0A0
aud0	EQU	$0A0
aud1	EQU	$0B0
aud2	EQU	$0C0
aud3	EQU	$0D0
ac_ptr	EQU	$00
ac_len	EQU	$04
ac_per	EQU	$06
ac_vol	EQU	$08
ac_dat	EQU	$0A
ac_SIZEOF	EQU	$10
bplpt	EQU	$0E0
bplcon0	EQU	$100
bplcon1	EQU	$102
bplcon2	EQU	$104
bpl1mod	EQU	$108
bpl2mod	EQU	$10A
bpldat	EQU	$110
sprpt	EQU	$120
spr	EQU	$140
sd_pos	EQU	$00
sd_ctl	EQU	$02
sd_dataa	EQU	$04
sd_datab	EQU	$08
color	EQU	$180
	ENDC



*************************************************
* INITIALISE SUPERVISOR MODE			*
*************************************************
GOPROG:	
;	MOVE.W	#32,D0
;	LEA	TIDY,A0
;	BSR	FADE1COL


	MOVEM.L D0-D7/A0-A6,-(SP)
	MOVE.L	#LOGO+(SCRWIDTH*1)+3,PRPOINT
	CLR.L	$0
	MOVE.L	#PROG,$00000080
	TRAP	#0
	MOVEM.L (SP)+,D0-D7/A0-A6
	RTS
*********************************
* PROGRAM STARTS HERE		*
*********************************
PROG
	LEA	CUSTOM,A5
	MOVE.W	SR,STRSTORE
	MOVE.W	DMACONR(A5),DMASTORE
	MOVE.W	INTENAR(A5),INTSTORE
	MOVE.W	#$2000,SR
	MOVE.W	#$7FFF,DMACON(A5)
	MOVE.W	#$7FFF,INTENA(A5)
	CLR.W	SPR0CTL(A5)
	MOVE.W	#$0020,INTREQ(A5)
	MOVE.L	#NEWCOPPER,COP2LCH(A5)

*********************************
* MAIN LOOP SETUP ROUTINES	*
*********************************


	BSR	PICSET


	CLR.W	COPJMP2(A5)
	MOVE.W	#$87C0,DMACON(A5)

	BSET	#1,$BFE001 
	BSR	SETSTART
	
*********************************
* MAIN LOOP			*
*********************************
VBLANK
	MOVE.W	$001E(A5),D0
	AND.W	#$0020,D0
	BEQ.S	VBLANK


 	BSR	KEYTEST	 	
	TST.L	D0
	BEQ.S	PRESSED
	CMP.L	#GAMES,D0
	BLT.S	PRESSED


	MOVE.W	#$0020,$009C(A5)

	BTST	#6,$BFE001
	BEQ.S	PRESSED
	BRA.S	VBLANK

*********************************
* EXIT BACK TO CLI		*
*********************************
PRESSED	
	MOVE.W	D0,0
	BSR	CLEAR
	CLR.W	PAPER
	LEA	TIDY(PC),A0
	BSR	FADE1COL
	MOVE.W	#32,D0
	LEA	COLS,A0
	BSR	FADE
	
	MOVE.W	#$7FFF,DMACON(A5)
	MOVE.W	#$7FFF,INTENA(A5)


	LEA	CUSTOM,A5
	MOVE.W	#$2C81,$008E(A5)
	MOVE.W	#$2CC1,$0090(A5)
	MOVE.W	#$0038,$0092(A5)
	MOVE.W	#$00D0,$0094(A5)
	CLR.W	$010A(A5)
	CLR.W	$0108(A5)
	

	CLR.W	COPJMP1(A5)
	OR.W	#$8000,DMASTORE
	OR.W	#$8000,INTSTORE
	MOVE.W	DMASTORE(PC),DMACON(A5)
	MOVE.W	INTSTORE(PC),INTENA(A5)
	MOVE.W	STRSTORE(PC),SR
	RTE
*************************************************
* TRAINER PATCH					*
*************************************************
TRAIN	TST.B	$0
	BNE.S	TNOSUB
	SUB.W	#1,D0
TNOSUB	TST.W	D0
	RTS
TRAINEND

*************************************************
* DMACON AND INTERUPT SAVE			*
*************************************************
INTSTORE	DC.W	0
DMASTORE	DC.W	0
STRSTORE	DC.W	0


*************************************************
* ENTER PICTURE POINTERS INTO COPPER		*
*************************************************
PICSET	

	MOVE.L	#LOGO,D0
	MOVE.W	D0,PSL1L
	SWAP	D0
	MOVE.W	D0,PSL1H
	MOVE.L	#LOGO+(48*256),D0
	MOVE.W	D0,PSL2L
	SWAP	D0
	MOVE.W	D0,PSL2H
	MOVE.L	#LOGO+(48*(2*256)),D0
	MOVE.W	D0,PSL3L
	SWAP	D0
	MOVE.W	D0,PSL3H
	MOVE.L	#LOGO+(48*(3*256)),D0
	MOVE.W	D0,PSL4L
	SWAP	D0
	MOVE.W	D0,PSL4H
	MOVE.L	#LOGO+(48*(4*256)),D0
	MOVE.W	D0,PSL5L
	SWAP	D0
	MOVE.W	D0,PSL5H

	RTS
*************************************************
* FADE ROUTINE   A0 COPPER     D0 NO OF  COLS 	*
*************************************************
FADE1COL
	MOVE.L	#15,D0
FADE1LOOP
	MOVE.W	(A0),D2
	BSR	DIVIDE
	DBRA	D0,FADE1LOOP
	RTS

FADE	
	MOVE.W	D0,NUMCOLS
	MOVE.L	#15,D7
	ADD.L	#6,A0
	MOVE.L	A0,A1

FLOOP	MOVE.W	NUMCOLS(PC),D0
	SUB.L	#2,D0
	move.l	#$9fff,d1
delay	DBRA	D1,delay		

FADECOL
	MOVE.W	(A0),D2
	BSR	DIVIDE
	ADD.L	#4,A0
	DBRA	D0,FADECOL
	MOVE.L	A1,A0
	DBRA	D7,FLOOP
	RTS
	
NUMCOLS	DC.W	0

DIVIDE
	TST.W	D2
	BEQ.S	EXIT
	CLR.L	D3
	CLR.L	D4
	CLR.L	D5
	CLR.L	D6
	
	MOVE.W	D2,D3
	AND.W	#%0000000000001111,D3
	TST.B	D3
	BEQ.S	NEXT
	SUBQ.B	#1,D3
NEXT
	MOVE.W	D2,D4
	AND.W	#%0000000011110000,D4
	ASR.W	#$4,D4
	TST.B	D4
	BEQ.S	NEXT2
	SUBQ.B	#1,D4
NEXT2
	ASL.W	#$4,D4

	MOVE.W	D2,D5
	AND.W	#%0000111100000000,D5
	ASR.W	#$8,D5
	TST.B	D5
	BEQ.S	NEXT3
	SUBQ.B	#1,D5
NEXT3
	ASL.W	#$8,D5

	OR.W	D3,D6
	OR.W	D4,D6
	OR.W	D5,D6
	
	MOVE.W	D6,(A0)
EXIT	RTS
EXIT2	MOVE.W	#0,(A0)
	RTS
	
*************************************************
* MESSAGES FOR TEXT !!!!!!!!!!! 		*
*************************************************

GREET

	DC.B	"               D E B U T                "
	DC.B	"         THE PLANET SIMULATOR           "
	DC.B	"                                        "
	DC.B	"   CRACKED BY  N.O.M.A.D  OF SCOOPEX    "      
	DC.B	"                                        "
	DC.B	"   DUE TO THE COMPLEXITY OF THIS GAME,  "  
	DC.B	"     SOME CRACKING ERRORS MAY OCCUR.    "
	DC.B	"                                        "
	DC.B	"      NO EXTERNAL DRIVES OR MEMORY      "
	DC.B	"     LEAVE BOTH DISKS WRITE ENABLED     "
	DC.B    "                                        "
	DC.B	"     GREETS TO ALL WHO DESERVE THEM     "
	DC.B	"                                        "
	DC.B	"PRESS LEFT MOUSE BUTTON TO EXIT TO GAME!"
	       
GREETEND
	EVEN
*************************************************
* MESSAGES FOR TEXT !!!!!!!!!!! 		*
*************************************************
LIST
	DC.B	"             ANOTHER COMPACT            "
	DC.B	"                                        "
	DC.B	" F1           RORKES DRIFT           F1 "
	DC.B	" F2       STORM ACROSS EUROPE        F2 "
	DC.B	"                                        "
	DC.B	"   RORKES DRIFT WAS CRACKED BY ORACLE   "
	DC.B	"   STORM ACROSS EUROPE BY PARANIOMIA.   "
	DC.B	"                                        "
	DC.B	"         COMPILATION AND CODE BY        "
	DC.B	"            N . O . M . A . D           " 
	DC.B	"                                        "
	DC.B	" PRESS RIGHT MOUSE FOR GREETS SCREEN !! "      
LISTEND
	EVEN
GAMES	EQU	2
*************************************************
*  PRINT GREETS AND MESSAGES			*
*************************************************
GREETS
	BTST	#2,$16(A5)
	BEQ.S	GREETS
	
	BSR.S	CLEAR

SETSTART
	MOVE.L	#LOGO+(HEIGHT)+(SCRWIDTH*1)+3,PRPOINT
	MOVE.L	PRPOINT(PC),A4
	LEA	GREET(PC),A3
	LEA	GREETEND(PC),A6
	BRA.S	RESET

HEIGHT	EQU	48*97
*************************************************
* CLEAR TEXT SCREEN			 	*
*************************************************
CLEAR
	MOVEQ.L	#7,D0
HERE
	LEA	(LOGO+(HEIGHT))(PC),A0
CLEAR2
	MOVE.B	(A0),D1
	LSR.B	#1,D1
	MOVE.B	D1,(A0)+
	CMP.L	#LOGO+(48*230),A0
	BNE.S	CLEAR2
	DBRA	D0,HERE
	RTS
*************************************************
* CLEAR LOGO SCREEN			 	*
*************************************************
LCLEAR
	MOVEQ.L	#7,D0
LHERE
	LEA	LOGO(PC),A0
LCLEAR2
	MOVE.B	(A0),D1
	LSR.B	#1,D1
	MOVE.B	D1,(A0)+
	CMP.L	#LOGOEND,A0
	BNE.S	LCLEAR2
	DBRA	D0,LHERE
	RTS
*************************************************
* GET CHARACTER FROM MESSAGES AND PRINT 	*
*************************************************
SETPRINT
	BTST	#6,$BFE001
	BEQ.S	SETPRINT
	
	BSR.S	CLEAR

	CLR.W	PAPER
	MOVE.L	#LOGO+(HEIGHT)+(SCRWIDTH*1)+3,PRPOINT
	MOVE.L	PRPOINT(PC),A4
	LEA	LIST(PC),A3
	LEA	LISTEND(PC),A6
	
RESET
	CLR.W	PAPER
	MOVE.L	#39,D4
	
PRLOOP	MOVEQ.L	#0,D0
	MOVE.B	(A3)+,D0	
	BSR.S	FINDCHAR
	DBRA	D4,PRLOOP
	
	ADD.L	#(SCRWIDTH*10),A4
	MOVE.L	A4,PRPOINT
	CMP.L	A6,A3
	BNE.S	RESET

UP
	ADD.W	#$0122,PAPER
	MOVE.L	#$FFFF,D0
ITSELF	DBRA	D0,ITSELF
	CMP.W	#$07EE,PAPER
	BNE.S	UP
	MOVE.W	#$09FD,PAPER
	RTS
	
*************************************************
* FIND CHARACTER AND PRINT ONTO SCREEN 		*
*************************************************

FINDCHAR	
	SUB.L	#32,D0
	TST.L	D0
	BEQ.S	SPACE
	ASL.L	#3,D0
SPACE
	LEA	CHARS,A1
	ADD.L	D0,A1
	MOVE.L	PRPOINT(PC),A0
	BSR.S	PRINT
	MOVE.L	A0,PRPOINT
	RTS
	

SCRWIDTH	EQU	48
PRPOINT		DC.L	LOGO+6


*************************************************
* PRINT ROUTINE   (A0 DEST    A1 CHARBIN)	*
*************************************************	
PRINT
	MOVE.L	A0,A2
	MOVE.L	#7,D0
TRAN
	MOVE.B	(A1)+,(A2)
	ADD.L	#SCRWIDTH,A2
	DBRA	D0,TRAN
	ADD.L	#1,A0
	RTS

*************************************************
* GETKEY VALUE AND RETURN IN D0			*
*************************************************

KEYTEST
	MOVE.W	$1E(A5),D1
	BTST	#3,D1
	BEQ.S	NOWAY
	MOVEQ.L	#0,D0
	MOVE.B	$BFEC01,D0
	ORI.B	#$40,$BFEE01
	NOT.B	D0
	ROR.B	#1,D0
	SUB.W	#$50,D0
	MOVE.W	#$600,D1
ITSELF2	DBRA	D1,ITSELF2
	ANDI.B	#$BF,$BFEE01
NOWAY	RTS
	
*************************************************
* COPPER LIST					*
*************************************************
NEWCOPPER
	
	DC.L	$01000000
COLS
	dc.w	$0180,$0000,$0182,$0fff,$0184,$0bcf,$0186,$077f
	dc.w	$0188,$052f,$018a,$020a,$018c,$0106,$018e,$0004
	dc.w	$0190,$0303,$0192,$0fdd,$0194,$0fbb,$0196,$0f88
	dc.w	$0198,$0f00,$019a,$0b00,$019c,$0800,$019e,$0500
	dc.w	$01a0,$0300,$01a2,$0fff,$01a4,$0bcf,$01a6,$077f
	dc.w	$01a8,$052f,$01aa,$020a,$01ac,$0106,$01ae,$0004
	dc.w	$01b0,$0cfe,$01b2,$09fd,$01b4,$00fb,$01b6,$00da
	dc.w	$01b8,$00a8,$01ba,$0087,$01bc,$0055,$01be,$0033


	DC.L	$008E2081,$009040C8,$00920028,$009400D8

	DC.W $00E0
PSL1H:	DC.W $0003
	DC.W $00E2
PSL1L:	DC.W $7000
	DC.W $00E4
PSL2H:	DC.W $0003
	DC.W $00E6
PSL2L:	DC.W $7000
	DC.W $00E8
PSL3H:	DC.W $0003
	DC.W $00EA
PSL3L:	DC.W $7000
	DC.W $00EC
PSL4H:	DC.W $0003
	DC.W $00EE
PSL4L:	DC.W $7000
	DC.W $00F0
PSL5H:	DC.W $0003
	DC.W $00F2
PSL5L:	DC.W $7000

	DC.L	$01080002,$010A0002
	DC.L	$010200FF
	DC.L	$2801FFFE,$01005200

	DC.L	$8801FFFE
	DC.W	$0182
PAPER	
	DC.W	$09FD,$0102,$0022

	
	DC.L	$FFDFFFFE
	DC.L	$1001FFFE
	DC.W	$0182
TIDY	DC.W	$FFF,$0102,$00AA
	DC.L	$2801FFFE,$01000000,$01800000
	DC.L	$FFFFFFFE
	
;SCROLLCOLS	DS.B	180*16
	EVEN
;PAPER	DC.W	$FFF
LOGO	INCBIN	df1:COMP.BIN
LOGOEND
	EVEN
CHARS	
	INCBIN	DF0:MADCHARS
	EVEN


