;*---------------------------------------------------------------------------
;  :Program.	crazycars3slave.asm
;  :Contents.	Slave for "Crazy Cars 3"
;  :Author.	Harry
;  :History.	26.09.1998/08.10.1998
;  :Requires.	whdload-package :)
;  :Copyright.	Freeware
;  :Language.	68000 Assembler
;  :Translator.	ASM-One 1.25
;  :To Do.
;---------------------------------------------------------------------------*

;crc_v1	= $57C1
;crc_v2	= $F885	;NTSC

	IFND BARFLY

	INCDIR	asm-one:Include2.0/
	INCLUDE LIBRARIES/DOS_LIB.I
	INCLUDE	LIBRARIES/DOS.I
	INCLUDE EXEC/EXEC_LIB.I
	INCLUDE	EXEC/MEMORY.I
	INCLUDE	GRAPHICS/GRAPHICS_LIB.I
	INCLUDE INTUITION/INTUITION_LIB.I
	INCLUDE INTUITION/INTUITION.I
	INCLUDE	OWN/CCRMAKRO
	INCLUDE	own/whdload.i
	
	ELSE

		INCDIR	Includes:
		INCLUDE	lvo/dos.i
		INCLUDE	lvo/exec.i
		INCLUDE	whdload.i

		BOPT	O+ OG+			;enable optimizing
		BOPT	ODd- ODe-		;disable mul optimizing
		BOPT	w4-			;disable 64k warnings
		SUPER				;disable supervisor warnings

		OUTPUT	wart:a-c/anotherworld/anotherworld.slave
	ENDC

;======================================================================

SLBASE		SLAVE_HEADER		;ws_Security + ws_ID
		dc.w	7		;ws_Version
		dc.w	WHDLF_Disk!WHDLF_NoError!WHDLF_EmulTrap	;ws_flags
		dc.l	$D0000		;ws_BaseMemSize			;$bc000
		dc.l	$00		;ws_ExecInstall
		dc.w	SLStart-SLBASE	;ws_GameLoader
		dc.w	0		;ws_CurrentDir
		dc.w	0		;ws_DontCache
 		dc.b	$00		;debugkey
qkey		dc.b	$5D		;quitkey

;======================================================================

;	DOSCMD	"WDate >T:date"
		dc.b	"$VER: Crazy_Cars_3_Slave_2.0"
;	INCBIN	"T:date"
		dc.b	0
		even

;======================================================================
SLStart	;	A0 = resident loader
;======================================================================

;	MOVE.L	#$80000,a7
		lea	_RESLOAD(PC),a1
		move.l	a0,(a1)			;save for later using

		move.l	#CACRF_EnableI,d0	;enable instruction cache
		move.l	d0,d1			;mask
		jsr	(resload_SetCACR,a0)
	LEA.L	-$1000(A7),A0
	MOVE.L	A0,USP

	MOVE.L	#$10000,D0		;LEN
	LEA.L	$400.W,A1		;ADDY
	LEA.L	OSMNAME(PC),A0		;FILENAME
	move.l	_RESLOAD(PC),a2
	jsr	(resload_LoadFileDecrunch,a2)

;.XXX	BRA.S	.XXX



	MOVE.L	_RESLOAD(PC),A0
	LEA.L	SLBASE(PC),A1
	JSR	$400.W
	MOVE.W	#0,SR

	MOVE.L	#$400,D0		;ELSE THE OSEMU ALLOCATES MEM
	MOVEQ.L	#MEMF_CHIP,D1		;AT THE END AND COMES INTO
	MOVE.L	$4.W,A6			;CC3'S UNALLOCATED AREA *GRRRR*
	JSR	_LVOALLOCMEM(A6)	;SO WE ALLOCATE A BIT MEM, LOAD
	MOVE.L	D0,-(A7)		;THE EXE AND FREE THAT BIT MEM

	MOVE.L	$4.W,A6
	MOVEQ.L	#0,D0
	LEA	DOSNAM(PC),A1
	JSR	_LVOOpenLibrary(A6)
	MOVE.L	D0,A6

	LEA.L	STFILE(PC),A0
	MOVE.L	A0,D1
	JSR	_LVOLoadSeg(A6)
	LEA.L	PRGP(PC),A4
	MOVE.L	D0,(A4)
	LSL.L	#2,D0
	MOVE.L	D0,A1
	ADDQ.L	#4,A1

	MOVE.L	A1,-(A7)
	MOVE.L	4(A7),A1
	MOVE.L	#$400,D0
	MOVE.L	$4.W,A6
	JSR	_LVOFREEMEM(A6)	

	MOVE.L	(A7)+,A1
	ADDQ.L	#4,A7

	IFEQ	1
TESTQUIT	EQU	$67E

	MOVE.W	#$4EF9,TESTQUIT
	PEA	QUIT(PC)
	MOVE.L	(A7)+,TESTQUIT+2
	ENDC



	SUB.L	A0,A0
	MOVEQ.L	#0,D0
;.YYY	bra	.YYY

	JSR	(A1)


	MOVE.L	$4.W,A6
	MOVEQ.L	#0,D0
	LEA	DOSNAM(PC),A1
	JSR	_LVOOpenLibrary(A6)
	MOVE.L	D0,A6

	MOVE.L	PRGP(PC),D1
	JSR	_LVOUNLOADSEG(A6)



	LEA.L	STFILE2(PC),A0
	MOVE.L	A0,D1
	JSR	_LVOLoadSeg(A6)
	LSL.L	#2,D0
	MOVE.L	D0,A1
	ADDQ.L	#4,A1

	SUB.L	A0,A0
	MOVEQ.L	#0,D0

	MOVEQ.L	#0,D5		;else gfx is destroyed
	and.b	#$fd,$bfe001

	JSR	(A1)

	ILLEGAL

;version	dc.w	0	;version of disks
_RESLOAD	dc.l	0	;address of resident loader
OSMNAME	DC.B	'OSEMUMODULE400.BIN',0
	EVEN
STFILE	DC.B	'anim',0
	EVEN
STFILE2	DC.B	'cciii',0
	EVEN
DOSNAM	DC.B	'dos.library',0
	EVEN
PRGP	DC.L	0

