	output dh0:music/deliplayers/Player41A
	include "misc/DeliPlayer.i"
	include	exec/exec_lib.i

	opt	o+
			
;
;
	SECTION Player,Code
;
;

	PLAYERHEADER PlayerTagArray

	dc.b '$VER: Player 4.1A replay module V2.1 (13-May-93)',0
	even

PlayerTagArray
	dc.l	DTP_PlayerVersion,1
	dc.l	DTP_PlayerName,PName
	dc.l	DTP_Creator,CName
	dc.l	DTP_Check2,Chk
	dc.l	DTP_InitPlayer,InitPlay
	dc.l	DTP_EndPlayer,EndPlay
	dc.l	DTP_InitSound,init
	dc.l	DTP_Interrupt,p4_music
	dc.l	DTP_EndSound,p4_end
	dc.l	TAG_DONE
	
*-----------------------------------------------------------------------*
;
; Player/Creatorname und lokale Daten

PName	dc.b 'Player41A',0
CName	dc.b 'Jarno Paananen,',10
	dc.b 'adapted by marley/Infect',0
	even

*-----------------------------------------------------------------------*
;
; Testet auf Modul

Chk				; ProRunner  ?
	move.l	dtg_ChkData(a5),a0

	moveq	#-1,d0		; Modul nicht erkannt (default)

	cmpi.l	#'P41A',(a0)+
	bne.s	ChkFail
	move.l	a0,p4_address
ChkOk
	moveq	#0,d0		; Modul erkannt
ChkFail
	rts

*-----------------------------------------------------------------------*
;
; Init Player

InitPlay	move.l	dtg_AudioAlloc(a5),a0	; Function
	jmp	(a0)		; returncode is already set !

*-----------------------------------------------------------------------*
;
; End Player

EndPlay	bsr	ResetCIAInt
	move.l	dtg_AudioFree(a5),a0		; Function
	jmp	(a0)

*-----------------------------------------------------------------------*		

START_TIMER	MACRO
	;move.l	a0,-(a7)
	move.l	CIAAaddr(pc),a0
	move.w	#2,p4_intcount
	move.w	TimerFlag(pc),d0
	beq.s	.timera
	move.b	#$19,ciacrb(a0)
	bra.s	.timerb
.timera	move.b	#$19,ciacra(a0)
.timerb	;move.l	(a7)+,a0
	ENDM

	
init	movem.l	d0/a0/a1,-(a7)
	bsr	p4_deinit	;restore possibly initialized module
	move.l	p4_address(pc),A0
	SUB.L	A1,A1
	BSR	p4_init	
	move.l	CIAABase(pc),d0
	bne.s	ICRint_used
	BSR.S	SetCIAInt
ICRint_used	movem.l	(a7)+,d0/a0/a1
	RTS

;---- CIA Interrupt ----

AddICRVector	=   -6
RemICRVector	=  -12
AbleICR		=  -18
SetICR		=  -24
LVOOpenResource	= -498
LVOOpenLibrary 	= -552
LVOCloseLibrary	= -414
LVODelay	= -198

ciatalo = $400
ciatahi = $500
ciatblo = $600
ciatbhi = $700
ciacra  = $E00
ciacrb  = $F00

SetCIAInt	movem.l	d0-d7/a0-a6,-(a7)
	clr.l	CIAAbase
	MOVEQ	#2,D6
	LEA	$BFD000,A5
	MOVE.B	#'b',CIAAname+3
SetCIALoop
	MOVEQ	#0,D0
	LEA	CIAAname(PC),A1
	CALLEXEC	OpenResource
	MOVE.L	D0,CIAAbase
	tst.l	d0
	BEQ.W	mt_Return
	
	CALLEXEC	Disable
	
	MOVE.L	CIAAbase(PC),A6
	CMP.W	#2,D6
	bne.s	TryTimerA	;previously BEQ.S !
TryTimerB
	LEA	MusicIntServer(PC),A1
	MOVEQ	#1,D0	; Bit 1: Timer B
	JSR	AddICRVector(A6)
	MOVE.w	#1,TimerFlag
	TST.L	D0
	BNE.S	CIAError
	MOVE.L	A5,CIAAaddr
	;MOVE.B	#$02,$D00(A5)
	MOVE.B	#$50,ciatblo(A5)
	MOVE.B	#$01,ciatbhi(A5)
	MOVE.B	#$82,D0
	jsr	AbleICR(a6)
	MOVE.B	#$02,D0
	jsr	SetICR(a6)
	CALLEXEC	Enable
mt_Return	movem.l	(a7)+,d0-d7/a0-a6
	RTS

TryTimerA
	LEA	MusicIntServer(PC),A1
	MOVEQ	#0,D0	; Bit 0: Timer A
	JSR	AddICRVector(A6)
	CLR.w	TimerFlag
	TST.L	D0
	BNE.S	CIAError
	MOVE.L	A5,CIAAaddr
	;MOVE.B	#$01,$D00(A5)
	MOVE.B	#$50,ciatalo(A5)
	MOVE.B	#$01,ciatahi(A5)
	MOVE.B	#$81,D0
	jsr	AbleICR(a6)
	MOVE.B	#$01,D0
	jsr	SetICR(a6)
	CALLEXEC	Enable
	movem.l	(a7)+,d0-d7/a0-a6
	RTS

CIAError
	CALLEXEC	Enable
	MOVE.B	#'a',CIAAname+3
	LEA	$BFE001,A5
	SUBQ.W	#1,D6
	BNE.W	SetCIALoop
	CLR.L	CIAAbase
	movem.l	(a7)+,d0-d7/a0-a6
	RTS

ResetCIAInt	movem.l	d0-d7/a0-a6,-(a7)
	MOVE.L	CIAAbase(PC),D0
	BEQ.B	mt_Return
	CLR.L	CIAAbase
	move.l	d0,-(a7)
	CALLEXEC	Disable
	MOVE.L	(a7)+,A6
	MOVE.L	CIAAaddr(PC),A5
	TST.w	TimerFlag
	BEQ.S	ResTimerA
	;BCLR	#0,ciacrb(A5)	;stop timer B
	MOVEq	#$02,D0
	jsr	AbleICR(a6)
	MOVEQ	#1,D0
	BRA.S	RemInt

ResTimerA
	;BCLR	#0,ciacra(A5)	;stop timer A
	MOVEq	#$01,D0
	jsr	AbleICR(a6)
	MOVEQ	#0,D0
RemInt	LEA	MusicIntServer(PC),A1
	JSR	RemICRVector(A6)
	CALLEXEC	Enable
	movem.l	(a7)+,d0-d7/a0-a6
	RTS

CIAAaddr	dc.l 0
CIAAname	dc.b "ciab.resource",0
CIAAbase	dc.l 0
TimerFlag	dc.w 0
TimerValue	dc.l 0
GfxName	dc.b "graphics.library",0,0

MusicIntServer
	dc.l 0,0
	dc.b 2,5 ; type, priority
	dc.l musintname
	dc.l 0,p4_int

musintname	dc.b "Player41A_Int",0,0

	cnop	0,4

p4_address	ds.l	1

p4_deinit	movem.l	d0/d1/a0/a1,-(a7)
	move.l	p4_address(pc),a0
	MOVE.L	16(a0),D0	;pointer to first sample or zero!
	beq.s	pure_mod	;not played yet!
	moveq	#0,d1
	MOVE.B	2(A0),D1
	SUBQ.W	#1,D1
	LEA	$10(A0),A1
.resmpl	sub.L	D0,(A1)	;re-offset samplepointers
	sub.L	D0,6(A1)
	LEA	$10(A1),A1
	DBRA	D1,.resmpl
	moveq	#0,d0
	MOVE.B	2(A0),D0
	addq.b	#1,d0
	asl.w	#4,d0
	move.l	8(a0),d1
	sub.l	d0,d1	;original module address
	move.l	d0,8(a0)
	sub.l	d1,4(a0)
	sub.l	d1,12(a0)
pure_mod	movem.l	(a7)+,d0/d1/a0/a1
	rts

p4_init	movem.l	d0-a6,-(a7)
	lea	$dff000,a6
	LEA	p4_base(PC),A3
	MOVE.L	A0,p4_data-p4_base(a3)
	MOVE.L	A0,D0
	ADD.L	D0,4(A0)
	ADD.L	D0,8(A0)
	ADD.L	D0,12(A0)	;samplepointer=module+offset.l
	MOVE.L	A1,D0
	BEQ.S	lbC000B06
	MOVE.L	A1,12(A0)	;samplepointer
lbC000B06	MOVE.L	12(A0),D0
	MOVEQ	#0,D1
	MOVE.B	2(A0),D1	;number of samples
	SUBQ.W	#1,D1
	LEA	$10(A0),A1
lbC000B16	ADD.L	D0,(A1)
	ADD.L	D0,6(A1)
	LEA	$10(A1),A1
	DBRA	D1,lbC000B16
	LEA	lbL001C2C(PC),A1
	MOVEQ	#$14,D0
lbC000B2A	CLR.W	(A1)+
	DBRA	D0,lbC000B2A
	LEA	lbL001C58(PC),A1
	MOVEQ	#$14,D0
lbC000B36	CLR.W	(A1)+
	DBRA	D0,lbC000B36
	LEA	lbL001C84(PC),A1
	MOVEQ	#$14,D0
lbC000B42	CLR.W	(A1)+
	DBRA	D0,lbC000B42
	LEA	lbL001CB0(PC),A1
	MOVEQ	#$14,D0
lbC000B4E	CLR.W	(A1)+
	DBRA	D0,lbC000B4E
	MOVE.L	4(A0),A4
	MOVE.L	A4,$18(A3)
	MOVE.L	8(A0),A1
	MOVE.L	A1,$14(A3)
	MOVE.W	(A1)+,D0
	LEA	0(A4,D0.W),A2
	MOVE.L	A2,-$90(A3)
	MOVE.W	(A1)+,D0
	LEA	0(A4,D0.W),A2
	MOVE.L	A2,-$64(A3)
	MOVE.W	(A1)+,D0
	LEA	0(A4,D0.W),A2
	MOVE.L	A2,-$38(A3)
	ADD.W	(A1)+,A4
	MOVE.L	A4,-12(A3)
	MOVE.L	A1,12(A3)
	;LEA	p4_int3(PC),A0
	;MOVE.L	A0,p4_int78-p4_base(a3)
	MOVE.W	#$3F,p4_volume-p4_base(a3)
	MOVE.W	#3,p4_speed-p4_base(a3)
	MOVE.W	#2,8(A3)
	CLR.W	10(A3)
	CLR.L	$10(A3)
	CLR.W	(A3)
	lea	p4_intcount(pc),a0
	moveq	#0,d0
	move.w	d0,(a0)
	;OR.B	#2,$BFE001
	MOVE.W	#15,$96(A6)
	MOVEQ	#0,D0
	move.w	d0,$A8(A6)
	move.w	d0,$B8(A6)
	move.w	d0,$C8(A6)
	move.w	d0,$D8(A6)
	movem.l	(a7)+,d0-a6
	RTS

p4_end	movem.l	d0/a6,-(a7)
	lea	$dff000,a6
	MOVEQ	#0,D0
	MOVE.W	D0,$A8(A6)
	MOVE.W	D0,$B8(A6)
	MOVE.W	D0,$C8(A6)
	MOVE.W	D0,$D8(A6)
	;BCLR	#1,$BFE001
	MOVE.W	#15,$96(A6)
	;MOVE.W	#$2000,$9A(A6)
	;MOVE.L	p4_old78(PC),$78.w
	movem.l	(a7)+,d0/a6
	RTS

p4_music	movem.l	d0-a6,-(a7)
	tst.l	CIAABase
	beq.s	CIA_failure
	lea	$dff000,a6
	bsr.s	p4_replay
CIA_failure	movem.l	(a7)+,d0-a6
	rts
	
p4_replay	LEA	p4_base(PC),A3
	MOVEQ	#$2C,D6
	MOVEQ	#$10,D7
	MOVE.W	(A3),D4
	ADDQ.W	#1,D4
	CMP.W	p4_speed(PC),D4
	BEQ	lbC0013BC
	LEA	lbL001C2C(PC),A5
	LEA	$A0(A6),A4
	MOVE.W	D4,(A3)
	MOVEQ	#3,D5
lbC000C5C	TST.W	$1E(A5)
	BEQ	lbC0012CC
	MOVEQ	#15,D0
	AND.W	(A5),D0
	ADD.W	D0,D0
	MOVE.W	lbW000C72(PC,D0.W),D0
	JMP	lbW000C72(PC,D0.W)

lbW000C72	dc.w	lbC0012CC-lbW000C72
	dc.w	lbC0012DC-lbW000C72
	dc.w	lbC001300-lbW000C72
	dc.w	lbC00128C-lbW000C72
	dc.w	lbC0016FE-lbW000C72
	dc.w	lbC001266-lbW000C72
	dc.w	lbC0016D8-lbW000C72
	dc.w	lbC00173C-lbW000C72
	dc.w	lbC000D5C-lbW000C72
	dc.w	lbC0012CC-lbW000C72
	dc.w	lbC001236-lbW000C72
	dc.w	lbC0012CC-lbW000C72
	dc.w	lbC0012CC-lbW000C72
	dc.w	lbC0012CC-lbW000C72
	dc.w	lbC000C92-lbW000C72
	dc.w	lbC0012CC-lbW000C72

lbC000C92	MOVE.B	2(A5),D0
	AND.B	#$F0,D0
	CMP.W	#$90,D0
	BEQ.S	lbC000CFC
	CMP.W	#$C0,D0
	BEQ.S	lbC000CE4
	CMP.W	#$D0,D0
	BNE	lbC0012CC
	MOVEQ	#15,D0
	AND.B	2(A5),D0
	CMP.W	(A3),D0
	BNE	lbC0012CC
	MOVE.W	$2A(A5),D0
	OR.W	#$8000,D0
	OR.W	D0,2(A3)
	MOVE.L	4(A5),A1
	MOVE.L	(A1)+,(A4)
	MOVE.W	(A1),4(A4)
	;LEA	p4_int2(PC),A1
	;MOVE.L	A1,$78.w
	
	START_TIMER	
	
	BRA	lbC0012CC

lbC000CE4	MOVEQ	#15,D0
	AND.B	2(A5),D0
	CMP.W	(A3),D0
	BNE	lbC0012CC
	CLR.W	8(A4)
	CLR.W	14(A5)
	BRA	lbC0012CC

lbC000CFC	SUBQ.W	#1,$1A(A5)
	BNE	lbC0012CC
	MOVE.W	$2A(A5),D0
	MOVE.W	D0,$96(A6)
	OR.W	#$8000,D0
	OR.W	D0,2(A3)
	MOVE.L	4(A5),A1
	MOVE.L	(A1)+,(A4)
	MOVE.W	(A1),4(A4)
	;LEA	p4_int2(PC),A1
	;MOVE.L	A1,$78.w
	
	START_TIMER	
	
	MOVEQ	#15,D0
	AND.B	2(A5),D0
	MOVE.W	D0,$1A(A5)
	BRA	lbC0012CC

lbW000D3C	dc.w	1
	dc.w	$200
	dc.w	$102
	dc.w	1
	dc.w	$200
	dc.w	$102
	dc.w	1
	dc.w	$200
	dc.w	$102
	dc.w	1
	dc.w	$200
	dc.w	$102
	dc.w	1
	dc.w	$200
	dc.w	$102
	dc.w	1

lbC000D5C	MOVE.W	(A3),D0
	MOVE.B	lbW000D3C(PC,D0.W),D0
	BEQ.S	lbC000D70
	ROR.B	#1,D0
	BCC.S	lbC000D7E
	MOVEQ	#15,D0
	AND.B	2(A5),D0
	BRA.S	lbC000D86

lbC000D70	MOVE.W	$1C(A5),D0
	MOVE.W	lbW000D96(PC,D0.W),6(A4)
	BRA	lbC0012CC

lbC000D7E	MOVEQ	#0,D0
	MOVE.B	2(A5),D0
	LSR.W	#4,D0
lbC000D86	ADD.W	D0,D0
	ADD.W	$1C(A5),D0
	MOVE.W	lbW000D96(PC,D0.W),6(A4)
	BRA	lbC0012CC

lbW000D96	dc.w	$358
	dc.w	$358
	dc.w	$328
	dc.w	$2FA
	dc.w	$2D0
	dc.w	$2A6
	dc.w	$280
	dc.w	$25C
	dc.w	$23A
	dc.w	$21A
	dc.w	$1FC
	dc.w	$1E0
	dc.w	$1C5
	dc.w	$1AC
	dc.w	$194
	dc.w	$17D
	dc.w	$168
	dc.w	$153
	dc.w	$140
	dc.w	$12E
	dc.w	$11D
	dc.w	$10D
	dc.w	$FE
	dc.w	$F0
	dc.w	$E2
	dc.w	$D6
	dc.w	$CA
	dc.w	$BE
	dc.w	$B4
	dc.w	$AA
	dc.w	$A0
	dc.w	$97
	dc.w	$8F
	dc.w	$87
	dc.w	$7F
	dc.w	$78
	dc.w	$71
	dc.w	$352
	dc.w	$352
	dc.w	$322
	dc.w	$2F5
	dc.w	$2CB
	dc.w	$2A2
	dc.w	$27D
	dc.w	$259
	dc.w	$237
	dc.w	$217
	dc.w	$1F9
	dc.w	$1DD
	dc.w	$1C2
	dc.w	$1A9
	dc.w	$191
	dc.w	$17B
	dc.w	$165
	dc.w	$151
	dc.w	$13E
	dc.w	$12C
	dc.w	$11C
	dc.w	$10C
	dc.w	$FD
	dc.w	$EF
	dc.w	$E1
	dc.w	$D5
	dc.w	$C9
	dc.w	$BD
	dc.w	$B3
	dc.w	$A9
	dc.w	$9F
	dc.w	$96
	dc.w	$8E
	dc.w	$86
	dc.w	$7E
	dc.w	$77
	dc.w	$71
	dc.w	$34C
	dc.w	$34C
	dc.w	$31C
	dc.w	$2F0
	dc.w	$2C5
	dc.w	$29E
	dc.w	$278
	dc.w	$255
	dc.w	$233
	dc.w	$214
	dc.w	$1F6
	dc.w	$1DA
	dc.w	$1BF
	dc.w	$1A6
	dc.w	$18E
	dc.w	$178
	dc.w	$163
	dc.w	$14F
	dc.w	$13C
	dc.w	$12A
	dc.w	$11A
	dc.w	$10A
	dc.w	$FB
	dc.w	$ED
	dc.w	$E0
	dc.w	$D3
	dc.w	$C7
	dc.w	$BC
	dc.w	$B1
	dc.w	$A7
	dc.w	$9E
	dc.w	$95
	dc.w	$8D
	dc.w	$85
	dc.w	$7D
	dc.w	$76
	dc.w	$70
	dc.w	$346
	dc.w	$346
	dc.w	$317
	dc.w	$2EA
	dc.w	$2C0
	dc.w	$299
	dc.w	$274
	dc.w	$250
	dc.w	$22F
	dc.w	$210
	dc.w	$1F2
	dc.w	$1D6
	dc.w	$1BC
	dc.w	$1A3
	dc.w	$18B
	dc.w	$175
	dc.w	$160
	dc.w	$14C
	dc.w	$13A
	dc.w	$128
	dc.w	$118
	dc.w	$108
	dc.w	$F9
	dc.w	$EB
	dc.w	$DE
	dc.w	$D1
	dc.w	$C6
	dc.w	$BB
	dc.w	$B0
	dc.w	$A6
	dc.w	$9D
	dc.w	$94
	dc.w	$8C
	dc.w	$84
	dc.w	$7D
	dc.w	$76
	dc.w	$6F
	dc.w	$340
	dc.w	$340
	dc.w	$311
	dc.w	$2E5
	dc.w	$2BB
	dc.w	$294
	dc.w	$26F
	dc.w	$24C
	dc.w	$22B
	dc.w	$20C
	dc.w	$1EF
	dc.w	$1D3
	dc.w	$1B9
	dc.w	$1A0
	dc.w	$188
	dc.w	$172
	dc.w	$15E
	dc.w	$14A
	dc.w	$138
	dc.w	$126
	dc.w	$116
	dc.w	$106
	dc.w	$F7
	dc.w	$E9
	dc.w	$DC
	dc.w	$D0
	dc.w	$C4
	dc.w	$B9
	dc.w	$AF
	dc.w	$A5
	dc.w	$9C
	dc.w	$93
	dc.w	$8B
	dc.w	$83
	dc.w	$7C
	dc.w	$75
	dc.w	$6E
	dc.w	$33A
	dc.w	$33A
	dc.w	$30B
	dc.w	$2E0
	dc.w	$2B6
	dc.w	$28F
	dc.w	$26B
	dc.w	$248
	dc.w	$227
	dc.w	$208
	dc.w	$1EB
	dc.w	$1CF
	dc.w	$1B5
	dc.w	$19D
	dc.w	$186
	dc.w	$170
	dc.w	$15B
	dc.w	$148
	dc.w	$135
	dc.w	$124
	dc.w	$114
	dc.w	$104
	dc.w	$F5
	dc.w	$E8
	dc.w	$DB
	dc.w	$CE
	dc.w	$C3
	dc.w	$B8
	dc.w	$AE
	dc.w	$A4
	dc.w	$9B
	dc.w	$92
	dc.w	$8A
	dc.w	$82
	dc.w	$7B
	dc.w	$74
	dc.w	$6D
	dc.w	$334
	dc.w	$334
	dc.w	$306
	dc.w	$2DA
	dc.w	$2B1
	dc.w	$28B
	dc.w	$266
	dc.w	$244
	dc.w	$223
	dc.w	$204
	dc.w	$1E7
	dc.w	$1CC
	dc.w	$1B2
	dc.w	$19A
	dc.w	$183
	dc.w	$16D
	dc.w	$159
	dc.w	$145
	dc.w	$133
	dc.w	$122
	dc.w	$112
	dc.w	$102
	dc.w	$F4
	dc.w	$E6
	dc.w	$D9
	dc.w	$CD
	dc.w	$C1
	dc.w	$B7
	dc.w	$AC
	dc.w	$A3
	dc.w	$9A
	dc.w	$91
	dc.w	$89
	dc.w	$81
	dc.w	$7A
	dc.w	$73
	dc.w	$6D
	dc.w	$32E
	dc.w	$32E
	dc.w	$300
	dc.w	$2D5
	dc.w	$2AC
	dc.w	$286
	dc.w	$262
	dc.w	$23F
	dc.w	$21F
	dc.w	$201
	dc.w	$1E4
	dc.w	$1C9
	dc.w	$1AF
	dc.w	$197
	dc.w	$180
	dc.w	$16B
	dc.w	$156
	dc.w	$143
	dc.w	$131
	dc.w	$120
	dc.w	$110
	dc.w	$100
	dc.w	$F2
	dc.w	$E4
	dc.w	$D8
	dc.w	$CC
	dc.w	$C0
	dc.w	$B5
	dc.w	$AB
	dc.w	$A1
	dc.w	$98
	dc.w	$90
	dc.w	$88
	dc.w	$80
	dc.w	$79
	dc.w	$72
	dc.w	$6C
	dc.w	$38B
	dc.w	$38B
	dc.w	$358
	dc.w	$328
	dc.w	$2FA
	dc.w	$2D0
	dc.w	$2A6
	dc.w	$280
	dc.w	$25C
	dc.w	$23A
	dc.w	$21A
	dc.w	$1FC
	dc.w	$1E0
	dc.w	$1C5
	dc.w	$1AC
	dc.w	$194
	dc.w	$17D
	dc.w	$168
	dc.w	$153
	dc.w	$140
	dc.w	$12E
	dc.w	$11D
	dc.w	$10D
	dc.w	$FE
	dc.w	$F0
	dc.w	$E2
	dc.w	$D6
	dc.w	$CA
	dc.w	$BE
	dc.w	$B4
	dc.w	$AA
	dc.w	$A0
	dc.w	$97
	dc.w	$8F
	dc.w	$87
	dc.w	$7F
	dc.w	$78
	dc.w	$384
	dc.w	$384
	dc.w	$352
	dc.w	$322
	dc.w	$2F5
	dc.w	$2CB
	dc.w	$2A3
	dc.w	$27C
	dc.w	$259
	dc.w	$237
	dc.w	$217
	dc.w	$1F9
	dc.w	$1DD
	dc.w	$1C2
	dc.w	$1A9
	dc.w	$191
	dc.w	$17B
	dc.w	$165
	dc.w	$151
	dc.w	$13E
	dc.w	$12C
	dc.w	$11C
	dc.w	$10C
	dc.w	$FD
	dc.w	$EE
	dc.w	$E1
	dc.w	$D4
	dc.w	$C8
	dc.w	$BD
	dc.w	$B3
	dc.w	$A9
	dc.w	$9F
	dc.w	$96
	dc.w	$8E
	dc.w	$86
	dc.w	$7E
	dc.w	$77
	dc.w	$37E
	dc.w	$37E
	dc.w	$34C
	dc.w	$31C
	dc.w	$2F0
	dc.w	$2C5
	dc.w	$29E
	dc.w	$278
	dc.w	$255
	dc.w	$233
	dc.w	$214
	dc.w	$1F6
	dc.w	$1DA
	dc.w	$1BF
	dc.w	$1A6
	dc.w	$18E
	dc.w	$178
	dc.w	$163
	dc.w	$14F
	dc.w	$13C
	dc.w	$12A
	dc.w	$11A
	dc.w	$10A
	dc.w	$FB
	dc.w	$ED
	dc.w	$DF
	dc.w	$D3
	dc.w	$C7
	dc.w	$BC
	dc.w	$B1
	dc.w	$A7
	dc.w	$9E
	dc.w	$95
	dc.w	$8D
	dc.w	$85
	dc.w	$7D
	dc.w	$76
	dc.w	$377
	dc.w	$377
	dc.w	$346
	dc.w	$317
	dc.w	$2EA
	dc.w	$2C0
	dc.w	$299
	dc.w	$274
	dc.w	$250
	dc.w	$22F
	dc.w	$210
	dc.w	$1F2
	dc.w	$1D6
	dc.w	$1BC
	dc.w	$1A3
	dc.w	$18B
	dc.w	$175
	dc.w	$160
	dc.w	$14C
	dc.w	$13A
	dc.w	$128
	dc.w	$118
	dc.w	$108
	dc.w	$F9
	dc.w	$EB
	dc.w	$DE
	dc.w	$D1
	dc.w	$C6
	dc.w	$BB
	dc.w	$B0
	dc.w	$A6
	dc.w	$9D
	dc.w	$94
	dc.w	$8C
	dc.w	$84
	dc.w	$7D
	dc.w	$76
	dc.w	$371
	dc.w	$371
	dc.w	$340
	dc.w	$311
	dc.w	$2E5
	dc.w	$2BB
	dc.w	$294
	dc.w	$26F
	dc.w	$24C
	dc.w	$22B
	dc.w	$20C
	dc.w	$1EE
	dc.w	$1D3
	dc.w	$1B9
	dc.w	$1A0
	dc.w	$188
	dc.w	$172
	dc.w	$15E
	dc.w	$14A
	dc.w	$138
	dc.w	$126
	dc.w	$116
	dc.w	$106
	dc.w	$F7
	dc.w	$E9
	dc.w	$DC
	dc.w	$D0
	dc.w	$C4
	dc.w	$B9
	dc.w	$AF
	dc.w	$A5
	dc.w	$9C
	dc.w	$93
	dc.w	$8B
	dc.w	$83
	dc.w	$7B
	dc.w	$75
	dc.w	$36B
	dc.w	$36B
	dc.w	$33A
	dc.w	$30B
	dc.w	$2E0
	dc.w	$2B6
	dc.w	$28F
	dc.w	$26B
	dc.w	$248
	dc.w	$227
	dc.w	$208
	dc.w	$1EB
	dc.w	$1CF
	dc.w	$1B5
	dc.w	$19D
	dc.w	$186
	dc.w	$170
	dc.w	$15B
	dc.w	$148
	dc.w	$135
	dc.w	$124
	dc.w	$114
	dc.w	$104
	dc.w	$F5
	dc.w	$E8
	dc.w	$DB
	dc.w	$CE
	dc.w	$C3
	dc.w	$B8
	dc.w	$AE
	dc.w	$A4
	dc.w	$9B
	dc.w	$92
	dc.w	$8A
	dc.w	$82
	dc.w	$7B
	dc.w	$74
	dc.w	$364
	dc.w	$364
	dc.w	$334
	dc.w	$306
	dc.w	$2DA
	dc.w	$2B1
	dc.w	$28B
	dc.w	$266
	dc.w	$244
	dc.w	$223
	dc.w	$204
	dc.w	$1E7
	dc.w	$1CC
	dc.w	$1B2
	dc.w	$19A
	dc.w	$183
	dc.w	$16D
	dc.w	$159
	dc.w	$145
	dc.w	$133
	dc.w	$122
	dc.w	$112
	dc.w	$102
	dc.w	$F4
	dc.w	$E6
	dc.w	$D9
	dc.w	$CD
	dc.w	$C1
	dc.w	$B7
	dc.w	$AC
	dc.w	$A3
	dc.w	$9A
	dc.w	$91
	dc.w	$89
	dc.w	$81
	dc.w	$7A
	dc.w	$73
	dc.w	$35E
	dc.w	$35E
	dc.w	$32E
	dc.w	$300
	dc.w	$2D5
	dc.w	$2AC
	dc.w	$286
	dc.w	$262
	dc.w	$23F
	dc.w	$21F
	dc.w	$201
	dc.w	$1E4
	dc.w	$1C9
	dc.w	$1AF
	dc.w	$197
	dc.w	$180
	dc.w	$16B
	dc.w	$156
	dc.w	$143
	dc.w	$131
	dc.w	$120
	dc.w	$110
	dc.w	$100
	dc.w	$F2
	dc.w	$E4
	dc.w	$D8
	dc.w	$CB
	dc.w	$C0
	dc.w	$B5
	dc.w	$AB
	dc.w	$A1
	dc.w	$98
	dc.w	$90
	dc.w	$88
	dc.w	$80
	dc.w	$79
	dc.w	$72

lbC001236	MOVE.B	2(A5),D0
	SUB.B	D0,15(A5)
	BPL.S	lbC00124C
	CLR.W	14(A5)
lbC001244	CLR.W	8(A4)
	BRA	lbC0012CC

lbC00124C	MOVEQ	#$40,D0
	CMP.W	14(A5),D0
	BGE.S	lbC00125E
	MOVE.W	D0,14(A5)
	MOVE.W	D0,8(A4)
	BRA.S	lbC0012CC

lbC00125E	MOVE.W	14(A5),8(A4)
	BRA.S	lbC0012CC

lbC001266	MOVE.B	2(A5),D0
	SUB.B	D0,15(A5)
	BPL.S	lbC00127A
	CLR.W	14(A5)
	CLR.W	8(A4)
	BRA.S	lbC00128C

lbC00127A	MOVEQ	#$40,D0
	CMP.W	14(A5),D0
	BGE.S	lbC001286
	MOVE.W	D0,14(A5)
lbC001286	MOVE.W	14(A5),8(A4)
lbC00128C	MOVE.W	$12(A5),D0
	BEQ.S	lbC0012CC
	MOVE.W	$14(A5),D1
	CMP.W	12(A5),D0
	BLT.S	lbC0012B4
	ADD.W	D1,12(A5)
	CMP.W	12(A5),D0
	BGT.S	lbC0012C6
	MOVE.W	D0,12(A5)
	CLR.W	$12(A5)
	MOVE.W	D0,6(A4)
	BRA.S	lbC0012CC

lbC0012B4	SUB.W	D1,12(A5)
	CMP.W	12(A5),D0
	BLT.S	lbC0012C6
	MOVE.W	D0,12(A5)
	CLR.W	$12(A5)
lbC0012C6	MOVE.W	12(A5),6(A4)
lbC0012CC	ADD.W	D6,A5
	ADD.W	D7,A4
	DBRA	D5,lbC000C5C
	CMP.W	lbW001CE4(PC),D4
	BEQ.S	lbC001328
	RTS

lbC0012DC	MOVEQ	#0,D0
	MOVE.B	2(A5),D0
	SUB.W	D0,12(A5)
	MOVEQ	#$71,D0
	CMP.W	12(A5),D0
	BLE.S	lbC0012F8
	MOVE.W	D0,12(A5)
	MOVE.W	D0,6(A4)
	BRA.S	lbC0012CC

lbC0012F8	MOVE.W	12(A5),6(A4)
	BRA.S	lbC0012CC

lbC001300	MOVEQ	#0,D0
	MOVE.B	2(A5),D0
	ADD.W	D0,12(A5)
	CMP.W	#$358,12(A5)
	BLE.S	lbC001320
	MOVE.W	#$358,D0
	MOVE.W	D0,12(A5)
	MOVE.W	D0,6(A4)
	BRA.S	lbC0012CC

lbC001320	MOVE.W	12(A5),6(A4)
	BRA.S	lbC0012CC

lbC001328	TST.W	$10(A3)
	BEQ.S	lbC001334
	SUBQ.W	#1,$10(A3)
	RTS

lbC001334	LEA	lbL001C2C(PC),A5
	MOVE.L	p4_data(PC),A0
	MOVE.L	lbL001CF4(PC),A4
	MOVEQ	#3,D5
lbC001342	TST.B	3(A5)
	BEQ.S	lbC001360
	BMI.S	lbC00135A
	SUBQ.B	#1,3(A5)
	CLR.W	$1E(A5)
	ADD.W	D6,A5
	DBRA	D5,lbC001342
	RTS

lbC00135A	ADDQ.B	#1,3(A5)
	BRA.S	lbC00139A

lbC001360	TST.B	$29(A5)
	BEQ.S	lbC001376
	SUBQ.B	#1,$29(A5)
	MOVE.L	$24(A5),A2
	MOVE.L	(A2)+,(A5)
	MOVE.L	A2,$24(A5)
	BRA.S	lbC00139A

lbC001376	MOVE.L	$20(A5),A2
	TST.B	(A2)
	BMI.S	lbC001386
	MOVE.L	(A2)+,(A5)
	MOVE.L	A2,$20(A5)
	BRA.S	lbC00139A

lbC001386	MOVE.W	(A2)+,$28(A5)
	MOVE.W	(A2)+,D0
	MOVE.L	A2,$20(A5)
	LEA	0(A4,D0.W),A2
	MOVE.L	(A2)+,(A5)
	MOVE.L	A2,$24(A5)
lbC00139A	ST	$1E(A5)
	MOVE.W	(A5),D0
	AND.W	#$1F0,D0
	BEQ.S	lbC0013B4
	LEA	0(A0,D0.W),A1
	MOVE.L	A1,4(A5)
	MOVE.L	12(A1),14(A5)
lbC0013B4	ADD.W	D6,A5
	DBRA	D5,lbC001342
	RTS

lbC0013BC	CLR.W	(A3)
	TST.W	$12(A3)
	BEQ.S	lbC0013CA
	SUBQ.W	#1,$12(A3)
	RTS

lbC0013CA	TST.W	10(A3)
	BEQ.S	lbC0013D4
	BSR	lbC001328
lbC0013D4	LEA	lbL001C2C(PC),A5
	LEA	$A0(A6),A4
	LEA	lbW000D96(PC),A2
	;LEA	p4_int2(PC),A1
	;MOVE.L	A1,$78.w
	
	START_TIMER	
	
	MOVEQ	#0,D4
	MOVEQ	#3,D5
lbC0013F4	TST.W	$1E(A5)
	BEQ.S	lbC001464
	MOVEQ	#15,D1
	AND.W	(A5),D1
	SUBQ.W	#3,D1
	BEQ.S	lbC001446
	SUBQ.W	#2,D1
	BEQ.S	lbC001450
	MOVEQ	#$7E,D0
	AND.B	(A5),D0
	BEQ.S	lbC001436
	CLR.B	$17(A5)
	ADD.W	$10(A5),D0
	MOVE.W	D0,$1C(A5)
	MOVE.W	0(A2,D0.W),12(A5)
	MOVE.W	$2A(A5),D0
	MOVE.W	D0,$96(A6)
	OR.W	D0,D4
	SUBQ.W	#4,D1
	BEQ.S	lbC00147E
	MOVE.L	4(A5),A1
	MOVE.L	(A1)+,(A4)
	MOVE.W	(A1),4(A4)
lbC001436	MOVEQ	#15,D0
	AND.W	(A5),D0
	LEA	lbW001B86(PC),A1
	ADD.W	D0,D0
	ADD.W	0(A1,D0.W),A1
	JMP	(A1)

lbC001446	MOVE.B	2(A5),D0
	BEQ.S	lbC001450
	MOVE.B	D0,$15(A5)
lbC001450	MOVEQ	#$7E,D0
	AND.B	(A5),D0
	BEQ.S	lbC001464
	ADD.W	$10(A5),D0
	MOVE.W	D0,$1C(A5)
	MOVE.W	0(A2,D0.W),$12(A5)
lbC001464	MOVE.L	12(A5),6(A4)
	ADD.W	D6,A5
	ADD.W	D7,A4
	DBRA	D5,lbC0013F4
	MOVE.B	D4,3(A3)
	SUBQ.W	#1,p4_volume-p4_base(a3)
	BMI.S	lbC0014A6
	RTS

lbC00147E	MOVE.W	#$FF00,D1
	AND.W	2(A5),D1
	MOVE.L	4(A5),A1
	MOVE.L	(A1)+,D0
	ADD.L	D1,D0
	MOVE.L	D0,(A4)
	LSR.W	#1,D1
	MOVE.W	(A1),D0
	SUB.W	D1,D0
	BPL.S	lbC00149E
	MOVE.L	-4(A1),(A4)
	MOVEQ	#1,D0
lbC00149E	MOVE.W	D0,4(A4)
	BRA	lbC001464

lbC0014A6	MOVE.L	lbL001CF4(PC),A4
	MOVE.W	#$3F,p4_volume-p4_base(a3)
	MOVE.L	12(A3),A1
	MOVE.W	(A1)+,D0
	BPL.S	lbC0014BE
	MOVE.L	lbL001CF0(PC),A1
	MOVE.W	(A1)+,D0
lbC0014BE	LEA	0(A4,D0.W),A2
	MOVEM.W	(A1)+,D0-D2
	MOVE.L	A2,-$90(A3)
	LEA	0(A4,D0.W),A2
	MOVE.L	A2,-$64(A3)
	LEA	0(A4,D1.W),A2
	MOVE.L	A2,-$38(A3)
	ADD.W	D2,A4
	MOVE.L	A4,-12(A3)
	MOVE.L	A1,12(A3)
	RTS

lbC0014E6	MOVE.B	2(A5),15(A5)
	BRA	lbC001464

lbC0014F0	MOVEQ	#0,D0
	MOVE.B	2(A5),D0
	ASL.W	#2,D0
	ADD.L	lbL001CF0(PC),D0
	MOVE.L	D0,12(A3)
lbC001500	MOVE.W	#$40,p4_volume-p4_base(a3)
	MOVE.L	12(A3),A1
	MOVE.L	lbL001CF4(PC),A0
	MOVE.W	(A1)+,D0
	BPL.S	lbC001518
	MOVE.L	lbL001CF0(PC),A1
	MOVE.W	(A1)+,D0
lbC001518	MOVEM.W	(A1)+,D1-D3
	MOVE.L	A1,12(A3)
	LEA	0(A0,D0.W),A1
	MOVE.L	A1,-$90(A3)
	LEA	0(A0,D1.W),A1
	MOVE.L	A1,-$64(A3)
	LEA	0(A0,D2.W),A1
	MOVE.L	A1,-$38(A3)
	ADD.W	D3,A0
	MOVE.L	A0,-12(A3)
	BRA	lbC001464

lbC001542	MOVE.B	2(A5),D0
	BEQ	lbC001464
	MOVE.B	D0,D1
	MOVE.B	$16(A5),D2
	AND.B	#15,D0
	BEQ.S	lbC00155C
	AND.B	#$F0,D2
	OR.B	D0,D2
lbC00155C	AND.B	#$F0,D1
	BEQ.S	lbC001568
	AND.B	#15,D2
	OR.B	D1,D2
lbC001568	MOVE.B	D2,$16(A5)
	BRA	lbC001464

lbC001570	MOVE.B	2(A5),D0
	BEQ	lbC001464
	MOVE.B	D0,D1
	MOVE.B	$18(A5),D2
	MOVEQ	#15,D3
	AND.B	D3,D0
	BEQ.S	lbC00158A
	AND.B	#$F0,D2
	OR.B	D0,D2
lbC00158A	AND.B	#$F0,D1
	BEQ.S	lbC001594
	AND.B	D3,D2
	OR.B	D1,D2
lbC001594	MOVE.B	D2,$18(A5)
	BRA	lbC001464

lbC00159C	MOVE.B	2(A5),D0
	AND.B	#$F0,D0
	LSR.W	#3,D0
	MOVE.W	lbW0015AE(PC,D0.W),D0
	JMP	lbW0015AE(PC,D0.W)

lbW0015AE	dc.w	lbC0015CE-lbW0015AE
	dc.w	lbC0015E4-lbW0015AE
	dc.w	lbC001600-lbW0015AE
	dc.w	lbC001464-lbW0015AE
	dc.w	lbC001464-lbW0015AE
	dc.w	lbC00163A-lbW0015AE
	dc.w	lbC001464-lbW0015AE
	dc.w	lbC001464-lbW0015AE
	dc.w	lbC001464-lbW0015AE
	dc.w	lbC00166C-lbW0015AE
	dc.w	lbC00161E-lbW0015AE
	dc.w	lbC00167A-lbW0015AE
	dc.w	lbC001464-lbW0015AE
	dc.w	lbC001690-lbW0015AE
	dc.w	lbC00169A-lbW0015AE
	dc.w	lbC001464-lbW0015AE

lbC0015CE	MOVE.B	2(A5),D0
	AND.B	#$FD,$BFE001
	OR.B	D0,$BFE001
	BRA	lbC001464

lbC0015E4	MOVEQ	#15,D0
	AND.B	2(A5),D0
	SUB.W	D0,12(A5)
	MOVEQ	#$71,D0
	CMP.W	12(A5),D0
	BLE	lbC001464
	MOVE.W	D0,12(A5)
	BRA	lbC001464

lbC001600	MOVEQ	#15,D0
	AND.B	2(A5),D0
	ADD.W	D0,12(A5)
	CMP.W	#$358,12(A5)
	BLE	lbC001464
	MOVE.W	#$358,12(A5)
	BRA	lbC001464

lbC00161E	MOVEQ	#15,D0
	AND.B	2(A5),D0
	ADD.W	D0,14(A5)
	MOVEQ	#$40,D0
	CMP.W	14(A5),D0
	BGE	lbC001464
	MOVE.W	D0,14(A5)
	BRA	lbC001464

lbC00163A	MOVEQ	#15,D0
	AND.B	2(A5),D0
	ADD.W	D0,D0
	MOVE.W	lbW00164C(PC,D0.W),$10(A5)
	BRA	lbC001464

lbW00164C	dc.w	0
	dc.w	$4A
	dc.w	$94
	dc.w	$DE
	dc.w	$128
	dc.w	$172
	dc.w	$1BC
	dc.w	$206
	dc.w	$250
	dc.w	$29A
	dc.w	$2E4
	dc.w	$32E
	dc.w	$378
	dc.w	$3C2
	dc.w	$40C
	dc.w	$456

lbC00166C	MOVEQ	#15,D0
	AND.B	2(A5),D0
	MOVE.W	D0,$1A(A5)
	BRA	lbC001464

lbC00167A	MOVEQ	#15,D0
	AND.B	2(A5),D0
	SUB.W	D0,14(A5)
	BPL	lbC001464
	CLR.W	14(A5)
	BRA	lbC001464

lbC001690	MOVE.W	$2A(A5),D0
	EOR.W	D0,D4
	BRA	lbC001464

lbC00169A	MOVEQ	#15,D0
	AND.B	2(A5),D0
	MOVE.W	D0,$10(A3)
	MOVE.W	D0,$12(A3)
	BRA	lbC001464

lbC0016AC	MOVE.B	2(A5),D0
	CMP.B	#1,D0
	BNE.S	lbC0016C6
	MOVE.B	D0,7(A3)
	MOVE.B	D0,9(A3)
	ST	10(A3)
	BRA	lbC001464

lbC0016C6	MOVE.B	D0,7(A3)
	SUBQ.B	#1,D0
	MOVE.B	D0,9(A3)
	CLR.W	10(A3)
	BRA	lbC001464

lbC0016D8	MOVE.B	2(A5),D0
	SUB.B	D0,15(A5)
	BPL.S	lbC0016EC
	CLR.W	14(A5)
	CLR.W	8(A4)
	BRA.S	lbC0016FE

lbC0016EC	MOVEQ	#$40,D0
	CMP.W	14(A5),D0
	BGE.S	lbC0016F8
	MOVE.W	D0,14(A5)
lbC0016F8	MOVE.W	14(A5),8(A4)
lbC0016FE	MOVE.W	#$F00,D0
	MOVE.W	$16(A5),D1
	AND.W	D1,D0
	LSR.W	#2,D0
	LSR.W	#1,D1
	AND.W	#$3E,D1
	ADD.W	D1,D0
	MOVE.W	12(A5),D1
	TST.B	$17(A5)
	BMI.S	lbC001722
	ADD.W	lbL001786(PC,D0.W),D1
	BRA.S	lbC001726

lbC001722	SUB.W	lbL001786(PC,D0.W),D1
lbC001726	MOVE.W	D1,6(A4)
	MOVE.B	$16(A5),D0
	LSR.B	#2,D0
	AND.W	#$3C,D0
	ADD.B	D0,$17(A5)
	BRA	lbC0012CC

lbC00173C	MOVE.W	#$F00,D0
	MOVE.W	$18(A5),D1
	AND.W	D1,D0
	LSR.W	#2,D0
	LSR.W	#1,D1
	AND.W	#$3E,D1
	ADD.W	D1,D0
	MOVE.W	14(A5),D1
	TST.B	$19(A5)
	BMI.S	lbC001768
	ADD.W	lbL001786(PC,D0.W),D1
	CMP.W	#$40,D1
	BLE.S	lbC001770
	MOVEQ	#$40,D1
	BRA.S	lbC001770

lbC001768	SUB.W	lbL001786(PC,D0.W),D1
	BPL.S	lbG001770
	MOVEQ	#0,D1
lbC001770	MOVE.W	D1,8(A4)
	MOVE.B	$18(A5),D0
	LSR.B	#2,D0
	AND.W	#$3C,D0
	ADD.B	D0,$19(A5)
	BRA	lbC0012CC

lbL001786	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	$10001
	dc.l	$10001
	dc.l	$10001
	dc.l	$10001
	dc.l	$10001
	dc.l	$10001
	dc.l	$10001
	dc.l	$10001
	dc.l	$10001
	dc.l	$10001
	dc.l	$10000
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	1
	dc.l	$10001
	dc.l	$20002
	dc.l	$20003
	dc.l	$30003
	dc.l	$30003
	dc.l	$30003
	dc.l	$30003
	dc.l	$30003
	dc.l	$30003
	dc.l	$30003
	dc.l	$20002
	dc.l	$20001
	dc.l	$10001
	dc.l	0
	dc.l	0
	dc.l	$10001
	dc.l	$20002
	dc.l	$30003
	dc.l	$40004
	dc.l	$40005
	dc.l	$50005
	dc.l	$50005
	dc.l	$50005
	dc.l	$50005
	dc.l	$50005
	dc.l	$40004
	dc.l	$40003
	dc.l	$30002
	dc.l	$20001
	dc.l	$10000
	dc.l	0
	dc.l	$10002
	dc.l	$30003
	dc.l	$40005
	dc.l	$50006
	dc.l	$60007 ;lbB000007
	dc.l	$70007
	dc.l	$70007
	dc.l	$70007
	dc.l	$70007
	dc.l	$70007
	dc.l	$60006 ;lbC000006
	dc.l	$50005
	dc.l	$40003
	dc.l	$30002
	dc.l	$10000
	dc.l	0
	dc.l	$10002
	dc.l	$30004
	dc.l	$50006
	dc.l	$70007
	dc.l	$80008
	dc.l	$90009
	dc.l	$90009
	dc.l	$90009
	dc.l	$90009
	dc.l	$90008
	dc.l	$80007
	dc.l	$70006
	dc.l	$50004
	dc.l	$30002
	dc.l	$10000
	dc.l	1
	dc.l	$20003
	dc.l	$40005
	dc.l	$60007 ;lbB000007
	dc.l	$80009
	dc.l	$9000A
	dc.l	$B000B
	dc.l	$B000B
	dc.l	$B000B
	dc.l	$B000B
	dc.l	$B000A
	dc.l	$90009
	dc.l	$80007
	dc.l	$60005 ;lbC000005
	dc.l	$40003
	dc.l	$20001
	dc.l	1
	dc.l	$20004
	dc.l	$50006
	dc.l	$70008
	dc.l	$9000A
	dc.l	$B000C
	dc.l	$C000D
	dc.l	$D000D
	dc.l	$D000D
	dc.l	$D000D
	dc.l	$C000C
	dc.l	$B000A
	dc.l	$90008
	dc.l	$70006
	dc.l	$50004
	dc.l	$20001
	dc.l	1
	dc.l	$30004
	dc.l	$60007 ;lbB000007
	dc.l	$8000A
	dc.l	$B000C
	dc.l	$D000E
	dc.l	$E000F
	dc.l	$F000F
	dc.l	$F000F
	dc.l	$F000F
	dc.l	$E000E
	dc.l	$D000C
	dc.l	$B000A
	dc.l	$80007
	dc.l	$60004 ;lbC000004
	dc.l	$30001
	dc.l	1
	dc.l	$30005
	dc.l	$60008 ;lbW000008
	dc.l	$9000B
	dc.l	$C000D
	dc.l	$E000F
	dc.l	$100011
	dc.l	$110011
	dc.l	$110011
	dc.l	$110011
	dc.l	$10000F
	dc.l	$E000D
	dc.l	$C000B
	dc.l	$90008
	dc.l	$60005 ;lbC000005
	dc.l	$30001
	dc.l	1
	dc.l	$30005
	dc.l	$70009
	dc.l	$B000C
	dc.l	$E000F
	dc.l	$100011
	dc.l	$120013
	dc.l	$130013
	dc.l	$130013
	dc.l	$130013
	dc.l	$120011
	dc.l	$10000F
	dc.l	$E000C
	dc.l	$B0009
	dc.l	$70005
	dc.l	$30001
	dc.l	2
	dc.l	$40006
	dc.l	$8000A
	dc.l	$C000D
	dc.l	$F0010
	dc.l	$120013
	dc.l	$140014
	dc.l	$150015
	dc.l	$150015
	dc.l	$150014
	dc.l	$140013
	dc.l	$120010
	dc.l	$F000D
	dc.l	$C000A
	dc.l	$80006
	dc.l	$40002
	dc.l	2
	dc.l	$40006
	dc.l	$9000B
	dc.l	$D000F
	dc.l	$100012
	dc.l	$130015
	dc.l	$160016
	dc.l	$170017
	dc.l	$170017
	dc.l	$170016
	dc.l	$160015
	dc.l	$130012
	dc.l	$10000F
	dc.l	$D000B
	dc.l	$90006
	dc.l	$40002
	dc.l	2
	dc.l	$40007
	dc.l	$9000C
	dc.l	$E0010
	dc.l	$120014
	dc.l	$150016
	dc.l	$170018
	dc.l	$190019
	dc.l	$190019
	dc.l	$190018
	dc.l	$170016
	dc.l	$150014
	dc.l	$120010
	dc.l	$E000C
	dc.l	$90007
	dc.l	$40002
	dc.l	2
	dc.l	$50008
	dc.l	$A000D
	dc.l	$F0011
	dc.l	$130015
	dc.l	$170018
	dc.l	$19001A
	dc.l	$1B001B
	dc.l	$1B001B
	dc.l	$1B001A
	dc.l	$190018
	dc.l	$170015
	dc.l	$130011
	dc.l	$F000D
	dc.l	$A0008
	dc.l	$50002
	dc.l	2
	dc.l	$50008
	dc.l	$B000E
	dc.l	$100012
	dc.l	$150017
	dc.l	$18001A
	dc.l	$1B001C
	dc.l	$1D001D
	dc.l	$1D001D
	dc.l	$1D001C
	dc.l	$1B001A
	dc.l	$180017
	dc.l	$150012
	dc.l	$10000E
	dc.l	$B0008
	dc.l	$50002
lbW001B86	dc.w	lbC001464-lbW001B86
	dc.w	lbC001464-lbW001B86
	dc.w	lbC001464-lbW001B86
	dc.w	lbC001464-lbW001B86
	dc.w	lbC001542-lbW001B86
	dc.w	lbC001464-lbW001B86
	dc.w	lbC001464-lbW001B86
	dc.w	lbC001570-lbW001B86
	dc.w	lbC001464-lbW001B86
	dc.w	lbC001464-lbW001B86
	dc.w	lbC001464-lbW001B86
	dc.w	lbC0014F0-lbW001B86
	dc.w	lbC0014E6-lbW001B86
	dc.w	lbC001500-lbW001B86
	dc.w	lbC00159C-lbW001B86
	dc.w	lbC0016AC-lbW001B86

p4_intcount	dc.w	0
	
p4_int	;move.w	#$fff,$dff180
	movem.l	d1-a6,-(a7)
	move.l	CIAAaddr(pc),a5
	move.w	p4_intcount(pc),d0
	beq.s	p4_end78
	LEA	$DFF0A0,A1
	lea	p4_intcount(pc),a0
	subq.w	#1,d0
	beq.s	p4_nop
	;move.w	#$f0,$dff180
	move.w	d0,(a0)
	MOVE.W	p4_dmacon(PC),$96-$a0(a1)
	move.w	TimerFlag(pc),d0
	beq.s	.timera
	move.b	#$19,ciacrb(a5)
	bra.s	p4_end78
.timera	move.b	#$19,ciacra(a5)
	bra.s	p4_end78
p4_nop	;move.w	#$f00,$dff180
	move.w	d0,(a0)
	MOVE.L	lbL001C30(PC),A0
	MOVE.L	6(A0),(A1)
	MOVE.W	10(A0),4(A1)
	MOVE.L	lbL001C5C(PC),A0
	MOVE.L	6(A0),$10(A1)
	MOVE.W	10(A0),$14(A1)
	MOVE.L	lbL001C88(PC),A0
	MOVE.L	6(A0),$20(A1)
	MOVE.W	10(A0),$24(A1)
	MOVE.L	lbL001CB4(PC),A0
	MOVE.L	6(A0),$30(A1)
	MOVE.W	10(A0),$34(A1)
p4_end78	movem.l	(a7)+,d1-a6
	;move.w	#$aaa,$dff180
	moveq	#0,d0
	RTS

lbL001C2C	dc.l	0
lbL001C30	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	1
lbL001C58	dc.l	0
lbL001C5C	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	2
lbL001C84	dc.l	0
lbL001C88	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	4
lbL001CB0	dc.l	0
lbL001CB4	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	0
	dc.l	8
p4_base	dc.w	0	;base-register=a3
p4_dmacon	dc.w	$8000	;2(a3)
p4_volume	dc.w	$3F	;4(a3)
p4_speed	dc.w	6	;6(a3)
lbW001CE4	dc.w	5
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
lbL001CF0	dc.l	0
lbL001CF4	dc.l	0
p4_int78	dc.l	0	;$1c(a3)
p4_data	dc.l	0	;$20(a3)
p4_old78	dc.l	0	;$24(a3)
lbW001D04	dc.w	1
lbW001D06	dc.w	1
lbL001D08	dc.l	0
lbW001D0C	dc.w	1
lbW001D0E	dc.w	$13
lbW001D10	dc.w	0

;	section	music,data_c

;p4_module	incbin	dh0:p41a.fairlight


