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

	opt	o+
			
;
;
	SECTION Player,Code
;
;

	PLAYERHEADER PlayerTagArray

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

PlayerTagArray
	dc.l	DTP_PlayerVersion,3
	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,p4b_music
	dc.l	DTP_EndSound,p4b_end
	dc.l	TAG_DONE
	
*-----------------------------------------------------------------------*
;
; Player/Creatorname und lokale Daten

PName	dc.b 'Player40B',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	#'P40B',(a0)+
	bne.s	ChkFail
	move.l	a0,p4b_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,p4b_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	p4b_deinit	;restore possibly initialized module
	move.l	p4b_address(pc),A0
	SUB.L	A1,A1
	BSR	p4b_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	#$97,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	#$97,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,p4b_int

musintname	dc.b "Player40B_Int",0,0

	cnop	0,4

p4b_address	ds.l	1

p4b_deinit	movem.l	d0/d1/a0/a1,-(a7)
	move.l	p4b_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

	
p4b_init	movem.l	d0-a6,-(a7)
	lea	$dff000,a6
	LEA	p4b_base(PC),A3
	MOVE.L	A0,p4b_data-p4b_base(A3)
	MOVE.L	A0,D0
	ADD.L	D0,4(A0)
	ADD.L	D0,8(A0)
	ADD.L	D0,12(A0)
	MOVE.L	A1,D0
	BEQ	lbC001788
	MOVE.L	A1,12(A0)
lbC001788	MOVE.L	12(A0),D0
	MOVEQ	#0,D1
	MOVE.B	2(A0),D1
	SUBQ.W	#1,D1
	LEA	$10(A0),A1
lbC001798	ADD.L	D0,(A1)
	ADD.L	D0,6(A1)
	LEA	$10(A1),A1
	DBRA	D1,lbC001798
	LEA	lbL002870(PC),A1
	MOVEQ	#$14,D0
lbC0017AC	CLR.W	(A1)+
	DBRA	D0,lbC0017AC
	LEA	lbL00289C(PC),A1
	MOVEQ	#$14,D0
lbC0017B8	CLR.W	(A1)+
	DBRA	D0,lbC0017B8
	LEA	lbL0028C8(PC),A1
	MOVEQ	#$14,D0
lbC0017C4	CLR.W	(A1)+
	DBRA	D0,lbC0017C4
	LEA	lbL0028F4(PC),A1
	MOVEQ	#$14,D0
lbC0017D0	CLR.W	(A1)+
	DBRA	D0,lbC0017D0
	MOVE.L	8(A0),A1
	MOVE.L	A1,$14(A3)
	MOVEQ	#0,D1
	MOVE.W	(A1)+,D1
	ADD.L	4(A0),D1
	MOVE.L	D1,-$90(A3)
	MOVEQ	#0,D1
	MOVE.W	(A1)+,D1
	ADD.L	4(A0),D1
	MOVE.L	D1,-$64(A3)
	MOVEQ	#0,D1
	MOVE.W	(A1)+,D1
	ADD.L	4(A0),D1
	MOVE.L	D1,-$38(A3)
	MOVEQ	#0,D1
	MOVE.W	(A1)+,D1
	ADD.L	4(A0),D1
	MOVE.L	D1,-12(A3)
	MOVE.L	A1,12(A3)
	MOVE.L	4(A0),$18(A3)
	;LEA	lbC00280A(PC),A0
	;MOVE.L	A0,$1C(A3)
	MOVE.W	#$3F,4(A3)
	MOVE.W	#6,6(A3)
	MOVE.W	#5,8(A3)
	CLR.W	10(A3)
	CLR.L	$10(A3)
	CLR.W	(A3)
	;MOVE.B	#$3F,$BFDD00
	;MOVE.B	#$81,$BFDD00
	;MOVE.B	#$97,$BFD400
	;MOVE.B	#1,$BFD500
	;MOVE.B	#$90,$BFDE00
	;MOVE.W	#$6000,$9C(A6)
	;MOVE.W	#$A000,$9A(A6)
	;MOVE.L	$78,$24(A3)
	;OR.B	#2,$BFE001
	MOVE.W	#15,$96(A6)
	MOVEQ	#0,D0
	;LEA	lbC002800(PC),A0
	;MOVE.L	A0,$78
	move.W	d0,$A8(A6)
	move.W	d0,$B8(A6)
	move.W	d0,$C8(A6)
	move.W	d0,$D8(A6)
	lea	p4b_intcount(pc),a0
	move.w	d0,(a0)
	movem.l	(a7)+,d0-a6
	RTS

p4b_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)
	move.w	#$f,$96(a6)
	;MOVE.L	lbL002944(PC),$78
	movem.l	(a7)+,d0/a6
	RTS

oldintena	dc.w	0

p4b_music	movem.l	d1-a6,-(a7)
	move.l	CIAABase(pc),d0
	beq.s	CIA_failure
	LEA	$DFF000,A6
	move.w	$1c(a6),d0
	or.w	#$8000,d0
	move.w	d0,oldintena
	move.w	#$1ff7,$9a(a6) ;just leaves cia-x irqs enabled
	bsr.s	p4b_replay
	move.w	oldintena(pc),$9a(a6)
CIA_failure	movem.l	(a7)+,d1-a6
	moveq	#0,d0
	rts


p4b_replay	LEA	p4b_base(PC),A3
	MOVEQ	#$2C,D6
	MOVEQ	#$10,D7
	MOVE.W	(A3),D4
	ADDQ.W	#1,D4
	CMP.W	lbW002926(PC),D4
	BEQ	lbC00206E
	LEA	lbL002870(PC),A5
	LEA	$A0(A6),A4
	MOVE.W	D4,(A3)
	MOVEQ	#3,D5
lbC0018D8	TST.W	$1E(A5)
	BEQ	lbC001F40
	MOVEQ	#15,D0
	AND.W	(A5),D0
	ADD.W	D0,D0
	MOVE.W	lbW0018EE(PC,D0.W),D0
	JMP	lbW0018EE(PC,D0.W)

lbW0018EE	dc.w	lbC001F40-lbW0018EE
	dc.w	lbC001F50-lbW0018EE
	dc.w	lbC001F74-lbW0018EE
	dc.w	lbC001F00-lbW0018EE
	dc.w	lbC002344-lbW0018EE
	dc.w	lbC001EDA-lbW0018EE
	dc.w	lbC00231E-lbW0018EE
	dc.w	lbC002382-lbW0018EE
	dc.w	lbC0019D8-lbW0018EE
	dc.w	lbC001F40-lbW0018EE
	dc.w	lbC001EAA-lbW0018EE
	dc.w	lbC001F40-lbW0018EE
	dc.w	lbC001F40-lbW0018EE
	dc.w	lbC001F40-lbW0018EE
	dc.w	lbC00190E-lbW0018EE
	dc.w	lbC001F40-lbW0018EE

lbC00190E	MOVE.B	2(A5),D0
	AND.B	#$F0,D0
	CMP.W	#$90,D0
	BEQ.S	lbC001978
	CMP.W	#$C0,D0
	BEQ.S	lbC001960
	CMP.W	#$D0,D0
	BNE	lbC001F40
	MOVEQ	#15,D0
	AND.B	2(A5),D0
	CMP.W	(A3),D0
	BNE	lbC001F40
	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)
	;MOVE.B	#$91,$BFDE00
	;LEA	lbC0027EC(PC),A1
	;MOVE.L	A1,$78
	START_TIMER
	BRA	lbC001F40

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

lbC001978	SUBQ.W	#1,$1A(A5)
	BNE	lbC001F40
	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)
	;MOVE.B	#$91,$BFDE00
	;LEA	lbC0027EC(PC),A1
	;MOVE.L	A1,$78
	START_TIMER
	MOVEQ	#15,D0
	AND.B	2(A5),D0
	MOVE.W	D0,$1A(A5)
	BRA	lbC001F40

lbW0019B8	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

lbC0019D8	MOVE.W	(A3),D0
	MOVE.B	lbW0019B8(PC,D0.W),D0
	BEQ.S	lbC0019EE
	BTST	#0,D0
	BNE.S	lbC0019F2
	MOVEQ	#15,D0
	AND.B	2(A5),D0
	BRA.S	lbC0019FA

lbC0019EE	MOVEQ	#0,D0
	BRA.S	lbC0019FA

lbC0019F2	MOVEQ	#0,D0
	MOVE.B	2(A5),D0
	LSR.B	#4,D0
lbC0019FA	ADD.W	D0,D0
	ADD.W	$1C(A5),D0
	MOVE.W	lbW001A0A(PC,D0.W),6(A4)
	BRA	lbC001F40

lbW001A0A	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

lbC001EAA	MOVE.B	2(A5),D0
	SUB.B	D0,15(A5)
	BPL.S	lbC001EC0
	CLR.W	14(A5)
	CLR.W	8(A4)
	BRA	lbC001F40

lbC001EC0	MOVEQ	#$40,D0
	CMP.W	14(A5),D0
	BGE.S	lbC001ED2
	MOVE.W	D0,14(A5)
	MOVE.W	D0,8(A4)
	BRA.S	lbC001F40

lbC001ED2	MOVE.W	14(A5),8(A4)
	BRA.S	lbC001F40

lbC001EDA	MOVE.B	2(A5),D0
	SUB.B	D0,15(A5)
	BPL.S	lbC001EEE
	CLR.W	14(A5)
	CLR.W	8(A4)
	BRA.S	lbC001F00

lbC001EEE	MOVEQ	#$40,D0
	CMP.W	14(A5),D0
	BGE.S	lbC001EFA
	MOVE.W	D0,14(A5)
lbC001EFA	MOVE.W	14(A5),8(A4)
lbC001F00	MOVE.W	$12(A5),D0
	BEQ.S	lbC001F40
	MOVE.W	$14(A5),D1
	CMP.W	$10(A5),D0
	BLT.S	lbC001F28
	ADD.W	D1,$10(A5)
	CMP.W	$10(A5),D0
	BGT.S	lbC001F3A
	MOVE.W	D0,$10(A5)
	CLR.W	$12(A5)
	MOVE.W	D0,6(A4)
	BRA.S	lbC001F40

lbC001F28	SUB.W	D1,$10(A5)
	CMP.W	$10(A5),D0
	BLT.S	lbC001F3A
	MOVE.W	D0,$10(A5)
	CLR.W	$12(A5)
lbC001F3A	MOVE.W	$10(A5),6(A4)
lbC001F40	ADD.W	D6,A5
	ADD.W	D7,A4
	DBRA	D5,lbC0018D8
	CMP.W	lbW002928(PC),D4
	BEQ.S	lbC001F9C
	RTS

lbC001F50	MOVEQ	#0,D0
	MOVE.B	2(A5),D0
	SUB.W	D0,$10(A5)
	MOVEQ	#$71,D0
	CMP.W	$10(A5),D0
	BLE.S	lbC001F6C
	MOVE.W	D0,$10(A5)
	MOVE.W	D0,6(A4)
	BRA.S	lbC001F40

lbC001F6C	MOVE.W	$10(A5),6(A4)
	BRA.S	lbC001F40

lbC001F74	MOVEQ	#0,D0
	MOVE.B	2(A5),D0
	ADD.W	D0,$10(A5)
	CMP.W	#$358,$10(A5)
	BLE.S	lbC001F94
	MOVE.W	#$358,D0
	MOVE.W	D0,$10(A5)
	MOVE.W	D0,6(A4)
	BRA.S	lbC001F40

lbC001F94	MOVE.W	$10(A5),6(A4)
	BRA.S	lbC001F40

lbC001F9C	TST.W	$10(A3)
	BEQ.S	lbC001FA8
	SUBQ.W	#1,$10(A3)
	RTS

lbC001FA8	LEA	lbL002870(PC),A5
	MOVE.L	p4b_data(PC),A0
	MOVE.L	lbL002938(PC),A4
	MOVEQ	#3,D5
lbC001FB6	TST.B	3(A5)
	BEQ.S	lbC001FD4
	BMI.S	lbC001FCE
	SUBQ.B	#1,3(A5)
	CLR.W	$1E(A5)
	ADD.W	D6,A5
	DBRA	D5,lbC001FB6
	BRA.S	lbC00202A

lbC001FCE	ADDQ.B	#1,3(A5)
	BRA.S	lbC00200A

lbC001FD4	TST.B	$29(A5)
	BEQ.S	lbC001FEA
	SUBQ.B	#1,$29(A5)
	ADDQ.L	#4,$24(A5)
	MOVE.L	$24(A5),A2
	MOVE.L	(A2),(A5)
	BRA.S	lbC00200A

lbC001FEA	MOVE.L	$20(A5),A2
	TST.B	(A2)
	BMI.S	lbC001FF6
	MOVE.L	(A2),(A5)
	BRA.S	lbC002006

lbC001FF6	MOVE.W	(A2)+,$28(A5)
	MOVE.W	(A2),D0
	LEA	0(A4,D0.W),A2
	MOVE.L	(A2),(A5)
	MOVE.L	A2,$24(A5)
lbC002006	ADDQ.L	#4,$20(A5)
lbC00200A	MOVE.W	(A5),D0
	ST	$1E(A5)
	AND.W	#$1F0,D0
	BEQ.S	lbC002024
	LEA	0(A0,D0.W),A1
	MOVE.L	A1,4(A5)
	MOVE.L	12(A1),12(A5)
lbC002024	ADD.W	D6,A5
	DBRA	D5,lbC001FB6
lbC00202A	SUBQ.W	#1,4(A3)
	BPL.S	lbC00206C
	MOVE.W	#$3F,4(A3)
	MOVE.L	12(A3),A1
	MOVE.W	(A1)+,D0
	BPL.S	lbC002044
	MOVE.L	lbL002934(PC),A1
	MOVE.W	(A1)+,D0
lbC002044	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)
	MOVE.W	(A1)+,D0
	ADD.W	D0,A4
	MOVE.L	A4,-12(A3)
	MOVE.L	A1,12(A3)
lbC00206C	RTS

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

lbC00207C	LEA	lbL002870(PC),A5
	LEA	$A0(A6),A4
	LEA	lbW001A0A(PC),A2
	;MOVE.B	#$91,$BFDE00
	;LEA	lbC0027EC(PC),A1
	;MOVE.L	A1,$78
	START_TIMER
	MOVE.W	#$8000,D4
	MOVEQ	#3,D5
lbC00209E	TST.W	$1E(A5)
	BEQ.S	lbC00210E
	MOVEQ	#15,D1
	AND.W	(A5),D1
	SUBQ.W	#3,D1
	BEQ.S	lbC0020F0
	SUBQ.W	#2,D1
	BEQ.S	lbC0020FA
	MOVEQ	#$7E,D0
	AND.B	(A5),D0
	BEQ.S	lbC0020E0
	CLR.B	$17(A5)
	ADD.W	12(A5),D0
	MOVE.W	D0,$1C(A5)
	MOVE.W	0(A2,D0.W),$10(A5)
	MOVE.W	$2A(A5),D0
	MOVE.W	D0,$96(A6)
	EOR.W	D0,D4
	SUBQ.W	#4,D1
	BEQ.S	lbC002128
	MOVE.L	4(A5),A1
	MOVE.L	(A1)+,(A4)
	MOVE.W	(A1),4(A4)
lbC0020E0	MOVEQ	#15,D0
	AND.W	(A5),D0
	LEA	lbW0027CC(PC),A1
	ADD.W	D0,D0
	ADD.W	0(A1,D0.W),A1
	JMP	(A1)

lbC0020F0	MOVE.B	2(A5),D0
	BEQ.S	lbC0020FA
	MOVE.B	D0,$15(A5)
lbC0020FA	MOVEQ	#$7E,D0
	AND.B	(A5),D0
	BEQ.S	lbC00210E
	ADD.W	12(A5),D0
	MOVE.W	D0,$1C(A5)
	MOVE.W	0(A2,D0.W),$12(A5)
lbC00210E	MOVE.W	$10(A5),6(A4)
	MOVE.W	14(A5),8(A4)
	ADD.W	D6,A5
	ADD.W	D7,A4
	DBRA	D5,lbC00209E
	MOVE.W	D4,2(A3)
	RTS

lbC002128	MOVEQ	#0,D1
	MOVE.B	2(A5),D1
	LSL.W	#8,D1
	MOVE.L	4(A5),A1
	MOVE.L	(A1)+,D0
	ADD.L	D1,D0
	MOVE.L	D0,(A4)
	ASR.W	#1,D1
	MOVE.W	(A1),D0
	SUB.W	D1,D0
	BPL.S	lbC002148
	MOVE.L	-4(A1),(A4)
	MOVEQ	#1,D0
lbC002148	MOVE.W	D0,4(A4)
	BRA.S	lbC00210E

lbC00214E	MOVE.B	2(A5),15(A5)
	BRA.S	lbC00210E

lbC002156	MOVEQ	#0,D0
	MOVE.B	2(A5),D0
	ASL.W	#2,D0
	ADD.L	lbL002934(PC),D0
	MOVE.L	D0,12(A3)
lbC002166	MOVE.W	#$3F,4(A3)
	MOVE.L	12(A3),A1
	MOVE.L	lbL002938(PC),A2
	MOVE.W	(A1)+,D0
	BPL.S	lbC00217E
	MOVE.L	lbL002934(PC),A1
	MOVE.W	(A1)+,D0
lbC00217E	MOVEM.W	(A1)+,D1-D3
	MOVE.L	A1,12(A3)
	LEA	0(A2,D0.W),A1
	MOVE.L	A1,-$90(A3)
	LEA	0(A2,D1.W),A1
	MOVE.L	A1,-$64(A3)
	LEA	0(A2,D2.W),A1
	MOVE.L	A1,-$38(A3)
	ADD.W	D3,A2
	MOVE.L	A2,-12(A3)
	BRA	lbC00210E

lbC0021A8	MOVE.B	2(A5),D0
	BEQ	lbC00210E
	MOVE.B	D0,D1
	MOVE.B	$16(A5),D2
	AND.B	#15,D0
	BEQ.S	lbC0021C2
	AND.B	#$F0,D2
	OR.B	D0,D2
lbC0021C2	AND.B	#$F0,D1
	BEQ.S	lbC0021CE
	AND.B	#15,D2
	OR.B	D1,D2
lbC0021CE	MOVE.B	D2,$16(A5)
	BRA	lbC00210E

lbC0021D6	MOVE.B	2(A5),D0
	BEQ	lbC00210E
	MOVE.B	D0,D1
	MOVE.B	$18(A5),D2
	MOVEQ	#15,D3
	AND.B	D3,D0
	BEQ.S	lbC0021F0
	AND.B	#$F0,D2
	OR.B	D0,D2
lbC0021F0	AND.B	#$F0,D1
	BEQ.S	lbC0021FA
	AND.B	D3,D2
	OR.B	D1,D2
lbC0021FA	MOVE.B	D2,$18(A5)
	BRA	lbC00210E

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

lbW002214	dc.w	lbC002234-lbW002214
	dc.w	lbC00224A-lbW002214
	dc.w	lbC002266-lbW002214
	dc.w	lbC00210E-lbW002214
	dc.w	lbC00210E-lbW002214
	dc.w	lbC0022A0-lbW002214
	dc.w	lbC00210E-lbW002214
	dc.w	lbC00210E-lbW002214
	dc.w	lbC00210E-lbW002214
	dc.w	lbC0022B2-lbW002214
	dc.w	lbC002284-lbW002214
	dc.w	lbC0022C0-lbW002214
	dc.w	lbC00210E-lbW002214
	dc.w	lbC0022D6-lbW002214
	dc.w	lbC0022E0-lbW002214
	dc.w	lbC00210E-lbW002214

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

lbC00224A	MOVEQ	#15,D0
	AND.B	2(A5),D0
	SUB.W	D0,$10(A5)
	MOVEQ	#$71,D0
	CMP.W	$10(A5),D0
	BLE	lbC00210E
	MOVE.W	D0,$10(A5)
	BRA	lbC00210E

lbC002266	MOVEQ	#15,D0
	AND.B	2(A5),D0
	ADD.W	D0,$10(A5)
	CMP.W	#$358,$10(A5)
	BLE	lbC00210E
	MOVE.W	#$358,$10(A5)
	BRA	lbC00210E

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

lbC0022A0	MOVEQ	#15,D0
	AND.B	2(A5),D0
	MULU	#$4A,D0
	MOVE.W	D0,12(A5)
	BRA	lbC00210E

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

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

lbC0022D6	MOVE.W	$2A(A5),D0
	EOR.W	D0,D4
	BRA	lbC00210E

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

lbC0022F2	MOVE.B	2(A5),D0
	CMP.B	#1,D0
	BNE.S	lbC00230C
	MOVE.B	D0,7(A3)
	MOVE.B	D0,9(A3)
	ST	10(A3)
	BRA	lbC00210E

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

lbC00231E	MOVE.B	2(A5),D0
	SUB.B	D0,15(A5)
	BPL.S	lbC002332
	CLR.W	14(A5)
	CLR.W	8(A4)
	BRA.S	lbC002344

lbC002332	MOVEQ	#$40,D0
	CMP.W	14(A5),D0
	BGE.S	lbC00233E
	MOVE.W	D0,14(A5)
lbC00233E	MOVE.W	14(A5),8(A4)
lbC002344	MOVEQ	#15,D0
	AND.B	$16(A5),D0
	LSL.W	#6,D0
	MOVE.B	$17(A5),D1
	LSR.W	#1,D1
	AND.W	#$3E,D1
	ADD.W	D1,D0
	MOVE.W	lbW0023CC(PC,D0.W),D2
	MOVE.W	$10(A5),D0
	TST.B	$17(A5)
	BMI.S	lbC00236A
	ADD.W	D2,D0
	BRA.S	lbC00236C

lbC00236A	SUB.W	D2,D0
lbC00236C	MOVE.W	D0,6(A4)
	MOVE.B	$16(A5),D0
	LSR.B	#2,D0
	AND.W	#$3C,D0
	ADD.B	D0,$17(A5)
	BRA	lbC001F40

lbC002382	MOVEQ	#15,D0
	AND.B	$18(A5),D0
	LSL.W	#6,D0
	MOVE.B	$19(A5),D1
	LSR.W	#1,D1
	AND.W	#$3E,D1
	ADD.W	D1,D0
	MOVE.W	lbW0023CC(PC,D0.W),D2
	MOVE.W	14(A5),D0
	TST.B	$19(A5)
	BMI.S	lbC0023B0
	ADD.W	D2,D0
	CMP.W	#$40,D0
	BLE.W	lbC0023B6
	MOVEQ	#$40,D0
	BRA.S	lbC0023B6

lbC0023B0	SUB.W	D2,D0
	BPL.S	lbC0023B6
	MOVEQ	#0,D0
lbC0023B6	MOVE.W	D0,8(A4)
	MOVE.B	$18(A5),D0
	LSR.B	#2,D0
	AND.W	#$3C,D0
	ADD.B	D0,$19(A5)
	BRA	lbC001F40

lbW0023CC	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	1
	dc.w	1
	dc.w	1
	dc.w	1
	dc.w	1
	dc.w	1
	dc.w	1
	dc.w	1
	dc.w	1
	dc.w	1
	dc.w	1
	dc.w	1
	dc.w	1
	dc.w	1
	dc.w	1
	dc.w	1
	dc.w	1
	dc.w	1
	dc.w	1
	dc.w	1
	dc.w	1
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	1
	dc.w	1
	dc.w	1
	dc.w	2
	dc.w	2
	dc.w	2
	dc.w	3
	dc.w	3
	dc.w	3
	dc.w	3
	dc.w	3
	dc.w	3
	dc.w	3
	dc.w	3
	dc.w	3
	dc.w	3
	dc.w	3
	dc.w	3
	dc.w	3
	dc.w	3
	dc.w	3
	dc.w	2
	dc.w	2
	dc.w	2
	dc.w	1
	dc.w	1
	dc.w	1
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	1
	dc.w	1
	dc.w	2
	dc.w	2
	dc.w	3
	dc.w	3
	dc.w	4
	dc.w	4
	dc.w	4
	dc.w	5
	dc.w	5
	dc.w	5
	dc.w	5
	dc.w	5
	dc.w	5
	dc.w	5
	dc.w	5
	dc.w	5
	dc.w	5
	dc.w	5
	dc.w	4
	dc.w	4
	dc.w	4
	dc.w	3
	dc.w	3
	dc.w	2
	dc.w	2
	dc.w	1
	dc.w	1
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	1
	dc.w	2
	dc.w	3
	dc.w	3
	dc.w	4
	dc.w	5
	dc.w	5
	dc.w	6
	dc.w	6
	dc.w	7
	dc.w	7
	dc.w	7
	dc.w	7
	dc.w	7
	dc.w	7
	dc.w	7
	dc.w	7
	dc.w	7
	dc.w	7
	dc.w	7
	dc.w	6
	dc.w	6
	dc.w	5
	dc.w	5
	dc.w	4
	dc.w	3
	dc.w	3
	dc.w	2
	dc.w	1
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	1
	dc.w	2
	dc.w	3
	dc.w	4
	dc.w	5
	dc.w	6
	dc.w	7
	dc.w	7
	dc.w	8
	dc.w	8
	dc.w	9
	dc.w	9
	dc.w	9
	dc.w	9
	dc.w	9
	dc.w	9
	dc.w	9
	dc.w	9
	dc.w	9
	dc.w	8
	dc.w	8
	dc.w	7
	dc.w	7
	dc.w	6
	dc.w	5
	dc.w	4
	dc.w	3
	dc.w	2
	dc.w	1
	dc.w	0
	dc.w	0
	dc.w	1
	dc.w	2
	dc.w	3
	dc.w	4
	dc.w	5
	dc.w	6
	dc.w	7
	dc.w	8
	dc.w	9
	dc.w	9
	dc.w	10
	dc.w	11
	dc.w	11
	dc.w	11
	dc.w	11
	dc.w	11
	dc.w	11
	dc.w	11
	dc.w	11
	dc.w	11
	dc.w	10
	dc.w	9
	dc.w	9
	dc.w	8
	dc.w	7
	dc.w	6
	dc.w	5
	dc.w	4
	dc.w	3
	dc.w	2
	dc.w	1
	dc.w	0
	dc.w	1
	dc.w	2
	dc.w	4
	dc.w	5
	dc.w	6
	dc.w	7
	dc.w	8
	dc.w	9
	dc.w	10
	dc.w	11
	dc.w	12
	dc.w	12
	dc.w	13
	dc.w	13
	dc.w	13
	dc.w	13
	dc.w	13
	dc.w	13
	dc.w	13
	dc.w	12
	dc.w	12
	dc.w	11
	dc.w	10
	dc.w	9
	dc.w	8
	dc.w	7
	dc.w	6
	dc.w	5
	dc.w	4
	dc.w	2
	dc.w	1
	dc.w	0
	dc.w	1
	dc.w	3
	dc.w	4
	dc.w	6
	dc.w	7
	dc.w	8
	dc.w	10
	dc.w	11
	dc.w	12
	dc.w	13
	dc.w	14
	dc.w	14
	dc.w	15
	dc.w	15
	dc.w	15
	dc.w	15
	dc.w	15
	dc.w	15
	dc.w	15
	dc.w	14
	dc.w	14
	dc.w	13
	dc.w	12
	dc.w	11
	dc.w	10
	dc.w	8
	dc.w	7
	dc.w	6
	dc.w	4
	dc.w	3
	dc.w	1
	dc.w	0
	dc.w	1
	dc.w	3
	dc.w	5
	dc.w	6
	dc.w	8
	dc.w	9
	dc.w	11
	dc.w	12
	dc.w	13
	dc.w	14
	dc.w	15
	dc.w	$10
	dc.w	$11
	dc.w	$11
	dc.w	$11
	dc.w	$11
	dc.w	$11
	dc.w	$11
	dc.w	$11
	dc.w	$10
	dc.w	15
	dc.w	14
	dc.w	13
	dc.w	12
	dc.w	11
	dc.w	9
	dc.w	8
	dc.w	6
	dc.w	5
	dc.w	3
	dc.w	1
	dc.w	0
	dc.w	1
	dc.w	3
	dc.w	5
	dc.w	7
	dc.w	9
	dc.w	11
	dc.w	12
	dc.w	14
	dc.w	15
	dc.w	$10
	dc.w	$11
	dc.w	$12
	dc.w	$13
	dc.w	$13
	dc.w	$13
	dc.w	$13
	dc.w	$13
	dc.w	$13
	dc.w	$13
	dc.w	$12
	dc.w	$11
	dc.w	$10
	dc.w	15
	dc.w	14
	dc.w	12
	dc.w	11
	dc.w	9
	dc.w	7
	dc.w	5
	dc.w	3
	dc.w	1
	dc.w	0
	dc.w	2
	dc.w	4
	dc.w	6
	dc.w	8
	dc.w	10
	dc.w	12
	dc.w	13
	dc.w	15
	dc.w	$10
	dc.w	$12
	dc.w	$13
	dc.w	$14
	dc.w	$14
	dc.w	$15
	dc.w	$15
	dc.w	$15
	dc.w	$15
	dc.w	$15
	dc.w	$14
	dc.w	$14
	dc.w	$13
	dc.w	$12
	dc.w	$10
	dc.w	15
	dc.w	13
	dc.w	12
	dc.w	10
	dc.w	8
	dc.w	6
	dc.w	4
	dc.w	2
	dc.w	0
	dc.w	2
	dc.w	4
	dc.w	6
	dc.w	9
	dc.w	11
	dc.w	13
	dc.w	15
	dc.w	$10
	dc.w	$12
	dc.w	$13
	dc.w	$15
	dc.w	$16
	dc.w	$16
	dc.w	$17
	dc.w	$17
	dc.w	$17
	dc.w	$17
	dc.w	$17
	dc.w	$16
	dc.w	$16
	dc.w	$15
	dc.w	$13
	dc.w	$12
	dc.w	$10
	dc.w	15
	dc.w	13
	dc.w	11
	dc.w	9
	dc.w	6
	dc.w	4
	dc.w	2
	dc.w	0
	dc.w	2
	dc.w	4
	dc.w	7
	dc.w	9
	dc.w	12
	dc.w	14
	dc.w	$10
	dc.w	$12
	dc.w	$14
	dc.w	$15
	dc.w	$16
	dc.w	$17
	dc.w	$18
	dc.w	$19
	dc.w	$19
	dc.w	$19
	dc.w	$19
	dc.w	$19
	dc.w	$18
	dc.w	$17
	dc.w	$16
	dc.w	$15
	dc.w	$14
	dc.w	$12
	dc.w	$10
	dc.w	14
	dc.w	12
	dc.w	9
	dc.w	7
	dc.w	4
	dc.w	2
	dc.w	0
	dc.w	2
	dc.w	5
	dc.w	8
	dc.w	10
	dc.w	13
	dc.w	15
	dc.w	$11
	dc.w	$13
	dc.w	$15
	dc.w	$17
	dc.w	$18
	dc.w	$19
	dc.w	$1A
	dc.w	$1B
	dc.w	$1B
	dc.w	$1B
	dc.w	$1B
	dc.w	$1B
	dc.w	$1A
	dc.w	$19
	dc.w	$18
	dc.w	$17
	dc.w	$15
	dc.w	$13
	dc.w	$11
	dc.w	15
	dc.w	13
	dc.w	10
	dc.w	8
	dc.w	5
	dc.w	2
	dc.w	0
	dc.w	2
	dc.w	5
	dc.w	8
	dc.w	11
	dc.w	14
	dc.w	$10
	dc.w	$12
	dc.w	$15
	dc.w	$17
	dc.w	$18
	dc.w	$1A
	dc.w	$1B
	dc.w	$1C
	dc.w	$1D
	dc.w	$1D
	dc.w	$1D
	dc.w	$1D
	dc.w	$1D
	dc.w	$1C
	dc.w	$1B
	dc.w	$1A
	dc.w	$18
	dc.w	$17
	dc.w	$15
	dc.w	$12
	dc.w	$10
	dc.w	14
	dc.w	11
	dc.w	8
	dc.w	5
	dc.w	2
lbW0027CC	dc.w	lbC00210E-lbW0027CC
	dc.w	lbC00210E-lbW0027CC
	dc.w	lbC00210E-lbW0027CC
	dc.w	lbC00210E-lbW0027CC
	dc.w	lbC0021A8-lbW0027CC
	dc.w	lbC00210E-lbW0027CC
	dc.w	lbC00210E-lbW0027CC
	dc.w	lbC0021D6-lbW0027CC
	dc.w	lbC00210E-lbW0027CC
	dc.w	lbC00210E-lbW0027CC
	dc.w	lbC00210E-lbW0027CC
	dc.w	lbC002156-lbW0027CC
	dc.w	lbC00214E-lbW0027CC
	dc.w	lbC002166-lbW0027CC
	dc.w	lbC002202-lbW0027CC
	dc.w	lbC0022F2-lbW0027CC


p4b_intcount
	dc.w	0
	
p4b_int	;move.w	#$fff,$dff180
	movem.l	d1-a6,-(a7)
	move.l	CIAAaddr(pc),a5
	move.w	p4b_intcount(pc),d0
	beq.s	p4b_end78
	LEA	$DFF0A0,A1
	lea	p4b_intcount(pc),a0
	subq.w	#1,d0
	beq.s	p4b_nop
	;move.w	#$f0,$dff180
	move.w	d0,(a0)
	MOVE.W	lbW002922(PC),$96-$a0(a1)
	move.w	TimerFlag(pc),d0
	beq.s	.timera
	move.b	#$19,ciacrb(a5)
	bra.s	p4b_end78
.timera	move.b	#$19,ciacra(a5)
	bra.s	p4b_end78
p4b_nop	;move.w	#$f00,$dff180
	move.w	d0,(a0)
	;MOVE.W	lbW002922(PC),D0
	MOVE.L	lbL002874(PC),A0
	MOVE.L	6(A0),(A1)
	MOVE.W	10(A0),4(A1)
	MOVE.L	lbL0028A0(PC),A0
	MOVE.L	6(A0),$10(A1)
	MOVE.W	10(A0),$14(A1)
	MOVE.L	lbL0028CC(PC),A0
	MOVE.L	6(A0),$20(A1)
	MOVE.W	10(A0),$24(A1)
	MOVE.L	lbL0028F8(PC),A0
	MOVE.L	6(A0),$30(A1)
	MOVE.W	10(A0),$34(A1)
p4b_end78	movem.l	(a7)+,d1-a6
	;move.w	#$aaa,$dff180
	moveq	#0,d0
	RTS

lbL002870	dc.l	0
lbL002874	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
lbL00289C	dc.l	0
lbL0028A0	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
lbL0028C8	dc.l	0
lbL0028CC	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
lbL0028F4	dc.l	0
lbL0028F8	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
p4b_base	dc.w	0
lbW002922	dc.w	$8000
	dc.w	$3F
lbW002926	dc.w	6
lbW002928	dc.w	5
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
	dc.w	0
lbL002934	dc.l	0
lbL002938	dc.l	0
lbL00293C	dc.l	0
p4b_data	dc.l	0
lbL002944	dc.l	0
lbL002948	dc.l	0
lbL00294C	dc.l	0
lbL002950	dc.l	0
lbL002954	dc.l	0


