*******************************************************************************
* p1i 2.1.2
*******************************************************************************
* OUT	ccr	eq=ERROR, ne=OK
*******************************************************************************

p1i	movem.l	d0-d7/a0-a6,-(sp)
	lea.l	p1_PixFlNmsAdrs,a2
	lea.l	p1_IIs,a3
	bsr	LdPix
	beq.s	.exit

	lea.l	DsplDef,a0
	move.l	#p1_VDOMODE_FR,(TCS_DD_VdoMode,a0)
	clr.l	(TCS_DD_UsrLst0,a0)
	clr.l	(TCS_DD_UsrLst1,a0)
	move.w	#p1_DSPLX0,(TCS_DD_DsplX0,a0)
	move.w	#p1_DSPLY0,(TCS_DD_DsplY0,a0)
	move.w	#p1_DSPLX1,(TCS_DD_DsplX1,a0)
	move.w	#p1_DSPLY1,(TCS_DD_DsplY1,a0)
	move.w	#p1_SCRWD,(TCS_DD_ScrWd,a0)
	move.w	#p1_SCRHT,(TCS_DD_ScrHt,a0)
	move.w	#p1_DSPLBRTNS,(TCS_DD_brtns,a0)
	move.w	#p1_GFXCTXT,(TCS_DD_GfxCtxt+TCS_GC_flgs,a0)
	CALLTCS	InitDspl
	move.l	d0,DI0Adr
	beq.s	.exit

	lea.l	DsplDef,a0
	move.l	#p1_VDOMODE_HR0,(TCS_DD_VdoMode,a0)
	move.w	#p1_SCRWD/2,(TCS_DD_ScrWd,a0)
	CALLTCS	InitDspl
	move.l	d0,DI1Adr
	beq.s	.exit

	movea.l	([p1_II_pxl.l],TCS_II_GfxAdr.w),a0
	suba.l	a1,a1
	move.b	#$ff,d0
	moveq.l	#0,d1
	move.w	#p1_PXLWD,d2
	move.w	#p1_PXLHT*2+1,d3
	CALLTCS	MkBrshMsk
	move.l	d0,p1_PxlMsk	;ATN(retcode, too)
.exit	movem.l	(sp)+,d0-d7/a0-a6
	rts



*******************************************************************************
* p1m_PxlsInHR 3.0.6
*******************************************************************************
* INFO	shws how pxls are treated on a HalfRes scr
* OUT	ccr	ne=cont
*******************************************************************************

p1m_PxlsInHR	movem.l	d0-d3/a0-a1/a6,-(sp)
	movea.l	DI0Adr,a0
	CALLTCS	ShwDspl

	movea.l	DI0Adr,a0
	moveq.l	#0,d0
	moveq.l	#0,d1
	move.w	#p1_SCRWD-1,d2
	move.w	#p1_SCRHT-1,d3
	move.b	#107,d4
	CALLTCS	DrwFrm0	;frm scr
	moveq.l	#p1_PXLWD/2,d4
	move.w	#p1_SCRWD/(p1_PXLWD/2)-2,d5
.DrwLn	movea.l	DI0Adr,a0
	moveq.l	#0,d0
	move.w	#p1_SCRHT-1,d1
	move.w	d4,d2
	move.b	#107,d3
	CALLTCS	DrwVrtLn0
	addi.w	#p1_PXLWD/2,d4
	dbra	d5,.DrwLn	;sep lns

	movea.l	DI0Adr,a0
	movea.l	([p1_II_VP_s.l],TCS_II_GfxAdr.w),a1
	moveq.l	#0,d0
	move.w	#128,d1
	move.w	#p1_PXLWD,d2
	move.w	#p1_PXLHT,d3
	CALLTCS	FastWrtBrsh0
	movea.l	DI0Adr,a0
	CALLTCS	CPUFRPass0	;VdoPln0 (set pxl)
	WTLMB	.exit

	movea.l	DI0Adr,a0
	movea.l	([p1_II_VP_s.l],TCS_II_GfxAdr.w),a1
	move.w	#p1_PXLWD/2,d0
	move.w	#128-p1_PXLHT,d1
	move.w	#p1_PXLWD,d2
	move.w	#p1_PXLHT,d3
	CALLTCS	FastWrtBrsh0
	movea.l	DI0Adr,a0
	CALLTCS	CPUFRPass0	;VdoPln1 (set pxl)
	WTLMB	.exit

	movea.l	DI0Adr,a0
	movea.l	([p1_II_SP0.l],TCS_II_GfxAdr.w),a1
	moveq.l	#0,d0
	move.w	#128-p1_PXLHT*2,d1
	move.w	#p1_PXLWD,d2
	move.w	#p1_PXLHT,d3
	CALLTCS	FastWrtBrsh0	;SlcPln0
	movea.l	DI0Adr,a0
	movea.l	([p1_II_SP1.l],TCS_II_GfxAdr.w),a1
	move.w	#p1_PXLWD/2,d0
	move.w	#128-p1_PXLHT*3,d1
	move.w	#p1_PXLWD,d2
	move.w	#p1_PXLHT,d3
	CALLTCS	FastWrtBrsh0
	movea.l	DI0Adr,a0
	CALLTCS	CPUFRPass0	;SlcPln1
	WTLMB	.exit

	movea.l	DI0Adr,a0
	movea.l	([p1_II_VP_c.l],TCS_II_GfxAdr.w),a1
	move.w	#p1_PXLWD,d0
	move.w	#128,d1
	move.w	#p1_PXLWD,d2
	move.w	#p1_PXLHT,d3
	CALLTCS	FastWrtBrsh0	;VdoPln0 (clr pxl)
	movea.l	DI0Adr,a0
	CALLTCS	CPUFRPass0
	WTLMB	.exit

	movea.l	DI0Adr,a0
	movea.l	([p1_II_VP_c.l],TCS_II_GfxAdr.w),a1
	move.w	#p1_PXLWD+p1_PXLWD/2,d0
	move.w	#128-p1_PXLHT,d1
	move.w	#p1_PXLWD,d2
	move.w	#p1_PXLHT,d3
	CALLTCS	FastWrtBrsh0	;VdoPln1 (clr pxl)
	movea.l	DI0Adr,a0
	CALLTCS	CPUFRPass0
	WTLMB	.exit

	movea.l	DI0Adr,a0
	movea.l	([p1_II_SP0.l],TCS_II_GfxAdr.w),a1
	move.w	#p1_PXLWD,d0
	move.w	#128-p1_PXLHT*2,d1
	move.w	#p1_PXLWD,d2
	move.w	#p1_PXLHT,d3
	CALLTCS	FastWrtBrsh0	;SlcPln0
	movea.l	DI0Adr,a0
	movea.l	([p1_II_SP1.l],TCS_II_GfxAdr.w),a1
	move.w	#p1_PXLWD+p1_PXLWD/2,d0
	move.w	#128-p1_PXLHT*3,d1
	move.w	#p1_PXLWD,d2
	move.w	#p1_PXLHT,d3
	CALLTCS	FastWrtBrsh0	;SlcPln1
	movea.l	DI0Adr,a0
	CALLTCS	CPUFRPass0
	WTLMB	.exit

	movea.l	DI0Adr,a0
	movea.l	([p1_II_MP.l],TCS_II_GfxAdr.w),a1
	move.w	#0,d0
	move.w	#128-p1_PXLHT*4,d1
	move.w	#p1_PXLWD,d2
	move.w	#p1_PXLHT,d3
	CALLTCS	FastWrtBrsh0
	movea.l	DI0Adr,a0
	movea.l	([p1_II_MP.l],TCS_II_GfxAdr.w),a1
	move.w	#p1_PXLWD,d0
	move.w	#128-p1_PXLHT*4,d1
	move.w	#p1_PXLWD,d2
	move.w	#p1_PXLHT,d3
	CALLTCS	FastWrtBrsh0	;MskPln
	movea.l	DI0Adr,a0
	CALLTCS	CPUFRPass0
	WTLMB	.exit

	movea.l	DI0Adr,a0
	movea.l	([p1_II_pxl.l],TCS_II_GfxAdr.w),a1
	movea.l	p1_PxlMsk,a2
	move.w	#p1_PXLWD/2,d0
	move.w	#128-p1_PXLHT*6-2,d1
	move.w	#p1_PXLWD,d2
	move.w	#p1_PXLHT*2+1,d3
	CALLTCS	FastWrtBrsh8	;fnl pxl

	movea.l	DI0Adr,a0
	CALLTCS	CPUFRPass0
	WTLMB	.exit

	move.l	#p1m_HRXmpl,(4,a5)	;chg part body
.exit	move.w	#0,ccr
	movem.l	(sp)+,d0-d3/a0-a1/a6
	rts



*******************************************************************************
* p1m_HRXmpl 5.0.6
*******************************************************************************
* INFO	shws a pic in HR w/ & w/o chqr
* OUT	ccr	ne=cont
*******************************************************************************

p1m_HRXmpl	movem.l	d0-d1/a0-a2/a6,-(sp)
	movea.l	DI1Adr,a0
	movea.l	([p1_II_Roots.l],TCS_II_GfxAdr.w),a1
	move.w	#p1_ROOTSWD,d0
	move.w	#p1_ROOTSHT,d1
	lea.l	p1_ZmVtxs,a2
	CALLTCS	FastFitBrsh0	;fit pic to HR scr
	movea.l	DI1Adr,a0
	CALLTCS	ShwDspl	;shw HR dspl
	WTLMB	.exit

	movea.l	DI1Adr,a0
	suba.l	a1,a1
	CALLTCS	HideDspl	;hide HR dspl
	movea.l	DI1Adr,a0
	CALLTCS	FreeDspl	;free HR dspl
	lea.l	DsplDef,a0
	move.l	#p1_VDOMODE_HR1,(TCS_DD_VdoMode,a0)
	move.w	#p1_SCRWD/2,(TCS_DD_ScrWd,a0)
	CALLTCS	InitDspl	;init chqrd HR dspl
	move.l	d0,DI1Adr
	beq.s	.exit

	movea.l	DI1Adr,a0
	movea.l	([p1_II_Roots.l],TCS_II_GfxAdr.w),a1
	move.w	#p1_ROOTSWD,d0
	move.w	#p1_ROOTSHT,d1
	lea.l	p1_ZmVtxs,a2
	CALLTCS	FastFitBrsh0	;fit pic to HR scr
	movea.l	DI1Adr,a0
	CALLTCS	ShwDspl	;shw HR dspl
	WTLMB	.exit

	movea.l	DI0Adr,a0
	CALLTCS	ShwDspl	;shw FR dspl

	move.l	#p1m_PxlsInFR,(4,a5)	;chg part body
.exit	move.w	#0,ccr
	movem.l	(sp)+,d0-d1/a0-a2/a6
	rts



*******************************************************************************
* p1m_PxlsInFR 1.0.1
*******************************************************************************
* INFO	shws how pxls are treated on a FullRes scr
* OUT	ccr	ne=cont
*******************************************************************************

p1m_PxlsInFR	movem.l	d0-d3/a0-a1/a6,-(sp)
	bsr	p1_InitFRScheme
	movea.l	DI0Adr,a0
	movea.l	([p1_II_arw.l],TCS_II_GfxAdr.w),a1
	move.w	#(p1_SCRWD-p1_ARWWD)/2,d0
	move.w	#p1_SCRHT-p1_ARWHT-p1_060HT-p1_PXLHT-2,d1
	move.w	#p1_ARWWD,d2
	move.w	#p1_ARWHT,d3
	CALLTCS	WrtBrsh0	;arw
	movea.l	DI0Adr,a0
	CALLTCS	CPUFRPass0
	WTLMB	.exit

	bsr	p1_InitFRScheme
	movea.l	DI0Adr,a0
	movea.l	([p1_II_Alice.l],TCS_II_GfxAdr.w),a1
	move.w	#(p1_SCRWD-p1_ALICEWD)/2,d0
	move.w	#p1_SCRHT-p1_ALICEHT-p1_060HT-p1_PXLHT-2,d1
	move.w	#p1_ALICEWD,d2
	move.w	#p1_ALICEHT,d3
	CALLTCS	WrtBrsh0	;Alice
	movea.l	DI0Adr,a0
	CALLTCS	CPUFRPass0
	WTLMB	.exit

	move.l	#p1m_FRXmpl,(4,a5)
.exit	move.w	#0,ccr	;cont
	movem.l	(sp)+,d0-d3/a0-a1/a6
	rts



*******************************************************************************
* p1m_FRXmpl 5.1.6
*******************************************************************************
* INFO	re-shws the pic in HR and then in FR
* OUT	ccr	ne=cont
*******************************************************************************

p1m_FRXmpl	movem.l	d0-d3/a0-a1/a6,-(sp)
	movea.l	DI1Adr,a0
	CALLTCS	ShwDspl	;re-shw HR dspl
	WTLMB	.exit

	movea.l	DI0Adr,a0
	movea.l	([p1_II_Roots.l],TCS_II_GfxAdr.w),a1
	moveq.l	#0,d0
	moveq.l	#0,d1
	move.w	#p1_ROOTSWD,d2
	move.w	#p1_ROOTSHT,d3
	CALLTCS	FastWrtBrsh0	;drw brsh
	movea.l	DI0Adr,a0
	CALLTCS	CPUFRPass0
	movea.l	DI0Adr,a0
	CALLTCS	ShwDspl
	WTLMB	.exit

	move.l	#-1,PartCtr	;res part ctr
	move.l	#p1m_FadeOut,(4,a5)	;chg part body
.exit	move.w	#0,ccr	;cont
	movem.l	(sp)+,d0-d3/a0-a1/a6
	rts



*******************************************************************************
* p1m_FadeOut 0.0.1
*******************************************************************************
* INFO	fades the dspl out
* OUT	ccr	ne=cont
*******************************************************************************

p1m_FadeOut	movem.l	d0-d2/a0-a1/a6,-(sp)
	WTRSTLN	p2_DSPLY0	;wt for Cop to wrte the pal
	movea.l	DI0Adr,a0	;dspl
	moveq.l	#TCS_VM_RGBH,d0	;RGBx mode
	move.w	#256,d2
	sub.w	PartCtr+2,d2	;calc brightness
	move.w	d2,d1
	CALLTCS	SetRGBxMode	;chg pal
	tst.w	d2	;calc retcode
	bne.s	.exit	;if not over...
	move.l	#-1,PartCtr	;res part ctr
	move.l	#p1m_FadeIn,(4,a5)	;chg part body
.exit	move.w	#0,ccr	;cont
	movem.l	(sp)+,d0-d2/a0-a1/a6
	rts



*******************************************************************************
* p1m_FadeIn 1.0.1
*******************************************************************************
* INFO	fades the dspl in
* OUT	ccr	ne=cont, eq=end
*******************************************************************************

p1m_FadeIn	movem.l	d0-d2/a0-a1/a6,-(sp)
	WTRSTLN	p2_DSPLY0	;wt for Cop to wrte the pal
	movea.l	DI0Adr,a0	;dspl
	moveq.l	#TCS_VM_RGBH,d0	;RGBx mode
	move.w	PartCtr+2,d2	;get brightness
	move.w	d2,d1
	CALLTCS	SetRGBxMode	;chg pal
	cmpi.w	#256,d2	;calc retcode
	bne.s	.exit
	WTLMB	.exit
	move.w	#4,ccr	;end
.exit	movem.l	(sp)+,d0-d2/a0-a1/a6
	rts



*******************************************************************************
* p1c 2.0.3
*******************************************************************************

p1c	movem.l	d0-d1/a0-a2/a6,-(sp)
	movea.l	p1_PxlMsk,a0
	CALLTCS	FreeBrsh

	movea.l	DI1Adr,a0
	suba.l	a1,a1 
	CALLTCS	HideDspl
	movea.l	DI1Adr,a0
	CALLTCS	FreeDspl
	movea.l	DI0Adr,a0
	suba.l	a1,a1 
	CALLTCS	HideDspl
	movea.l	DI0Adr,a0
	CALLTCS	FreeDspl

	lea.l	p1_IIs,a2
	bsr	UnLdPix
	movem.l	(sp)+,d0-d1/a0-a2/a6
	rts



*******************************************************************************
* p1_InitFRScheme 2.0.3
*******************************************************************************
* INFO	inits the scheme for shwing FullRes
*******************************************************************************

p1_InitFRScheme	movem.l	d0-d7/a0-a2/a6,-(sp)
	movea.l	DI0Adr,a2

	movea.l	a2,a0
	moveq.l	#0,d0
	CALLTCS	ClrScr0
	movea.l	a2,a0
	moveq.l	#0,d0
	moveq.l	#0,d1
	move.w	#p1_SCRWD-1,d2
	move.w	#p1_SCRHT-1,d3
	move.b	#107,d4
	CALLTCS	DrwFrm0	;frm scr

	movea.l	a2,a0
	movea.l	([p1_II_SP0.l],TCS_II_GfxAdr.w),a1
	moveq.l	#0,d0
	move.w	#p1_PXLHT,d1
	move.w	#p1_PXLWD,d2
	move.w	#p1_PXLHT,d3
	CALLTCS	FastWrtBrsh0	;SlcPln0 (1st)
	movea.l	a2,a0
	movea.l	([p1_II_SP0.l],TCS_II_GfxAdr.w),a1
	move.w	#p1_PXLWD,d0
	move.w	#p1_PXLHT,d1
	move.w	#p1_PXLWD,d2
	move.w	#p1_PXLHT,d3
	CALLTCS	FastWrtBrsh0	;SlcPln0 (2nd)
	movea.l	a2,a0
	movea.l	([p1_II_SP1.l],TCS_II_GfxAdr.w),a1
	move.w	#p1_PXLWD/2,d0
	move.w	#0,d1
	move.w	#p1_PXLWD,d2
	move.w	#p1_PXLHT,d3
	CALLTCS	FastWrtBrsh0	;SlcPln1 (1st)
	movea.l	a2,a0
	movea.l	([p1_II_SP1.l],TCS_II_GfxAdr.w),a1
	move.w	#p1_PXLWD+p1_PXLWD/2,d0
	move.w	#0,d1
	move.w	#p1_PXLWD,d2
	move.w	#p1_PXLHT,d3
	CALLTCS	FastWrtBrsh0	;SlcPln1 (2nd)

	movea.l	a2,a0
	movea.l	([p1_II_VP_a.l],TCS_II_GfxAdr.w),a1
	moveq.l	#0,d0
	moveq.l	#0,d1
	move.w	#p1_PXLWD/2-1,d2
	move.w	#p1_PXLHT-1,d3
	move.w	#p1_PXLWD,d4
	move.w	#p1_PXLHT*2,d5
	move.w	#p1_PXLWD,d6
	CALLTCS	WrtBrshZn0	;pxl (VdoPln1)
	movea.l	a2,a0
	movea.l	([p1_II_VP_a.l],TCS_II_GfxAdr.w),a1
	moveq.l	#p1_PXLWD/2,d0
	moveq.l	#0,d1
	move.w	#p1_PXLWD-1,d2
	move.w	#p1_PXLHT-1,d3
	move.w	#p1_PXLWD,d4
	move.w	#p1_PXLHT*3,d5
	move.w	#p1_PXLWD,d6
	CALLTCS	WrtBrshZn0	;pxl (VdoPln0)

	movea.l	a2,a0
	movea.l	([p1_II_VP_a.l],TCS_II_GfxAdr.w),a1
	move.w	#(p1_SCRWD-p1_PXLWD)/2,d0
	move.w	#p1_SCRHT-p1_PXLHT,d1
	move.w	#p1_PXLWD,d2
	move.w	#p1_PXLHT,d3
	CALLTCS	FastWrtBrsh0	;pxl (whole)

	movea.l	a2,a0
	movea.l	([p1_II_060.l],TCS_II_GfxAdr.w),a1
	move.w	#(p1_SCRWD-p1_060WD)/2,d0
	move.w	#p1_SCRHT-p1_060HT-p1_PXLHT-1,d1
	move.w	#p1_060WD,d2
	move.w	#p1_060HT,d3
	CALLTCS	FastWrtBrsh0	;060

	movem.l	(sp)+,d0-d7/a0-a2/a6
	rts
