IPB

Welcome Guest ( Log In | Register )


 

Recent Changes | Random | Help | Special Pages | Upload
home | info | forums | svn | irc | podcast | about

Due to our recent technical difficulties, we only have 60 percent of our images and files working. The Sonic Retro staff is working as fast as they can to restore these documents. Please do not report broken links at this time.

SCHG How-to:Port the REV01 Background Effects

From Sonic Retro

(Original guide by jman2050)

Looking at the REV01 version of Sonic 1, I can see why it's Rev01. They pretty much completely overhauled the entire BG deformation part of the engine. The drawing system has been changed (and from what I've seen, more similar to the way Sonic 2 does things) and the deformation data for every level has been changed to fit this new code. Also, in every level besides SBZ2, it was used to enhance the deformation effects. To see the difference in your own Sonic 1 rom, you'll have to do the following...

Contents

Steps

Step 1

First, we'll do the easiest change. Go to label Obj0A_WobbleData in Hivebrain's 2005 disassembly and replace the entire block with this:

Obj0A_WobbleData:
		dc.b 0, 0, 0, 0, 0, 0,	1, 1, 1, 1, 1, 2, 2, 2,	2, 2, 2
		dc.b 2,	3, 3, 3, 3, 3, 3, 3, 3,	3, 3, 3, 3, 3, 3, 4, 3
		dc.b 3,	3, 3, 3, 3, 3, 3, 3, 3,	3, 3, 3, 3, 2, 2, 2, 2
		dc.b 2,	2, 2, 1, 1, 1, 1, 1, 0,	0, 0, 0, 0, 0, -1, -1
		dc.b -1, -1, -1, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3
		dc.b -3, -3, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4
		dc.b -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4
		dc.b -4, -4, -4, -4, -4, -3, -3, -3, -3, -3, -3, -3, -2
		dc.b -2, -2, -2, -2, -1, -1, -1, -1, -1
		dc.b 0, 0, 0, 0, 0, 0,	1, 1, 1, 1, 1, 2, 2, 2,	2, 2, 2
		dc.b 2,	3, 3, 3, 3, 3, 3, 3, 3,	3, 3, 3, 3, 3, 3, 4, 3
		dc.b 3,	3, 3, 3, 3, 3, 3, 3, 3,	3, 3, 3, 3, 2, 2, 2, 2
		dc.b 2,	2, 2, 1, 1, 1, 1, 1, 0,	0, 0, 0, 0, 0, -1, -1
		dc.b -1, -1, -1, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3
		dc.b -3, -3, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4
		dc.b -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4
		dc.b -4, -4, -4, -4, -4, -3, -3, -3, -3, -3, -3, -3, -2
		dc.b -2, -2, -2, -2, -1, -1, -1, -1, -1

The programmers extended this array so it would also be usable by the deformation data even though it was designed to be used by the water bubbles.

Step 2

Next, we'll do the BGScroll data. Go to BGScroll_GHZ in the disassembly. Replace everything from there until the end of BGScroll_End with the following:

BgScroll_GHZ:				; XREF: BgScroll_Index
		clr.l	($FFFFF708).w
		clr.l	($FFFFF70C).w
		clr.l	($FFFFF714).w
		clr.l	($FFFFF71C).w
		lea	($FFFFA800).w,a2
		clr.l	(a2)+
		clr.l	(a2)+
		clr.l	(a2)+
		rts 
; ===========================================================================
 
BgScroll_LZ:				; XREF: BgScroll_Index
		asr.l	#1,d0
		move.w	d0,($FFFFF70C).w
		rts	
; ===========================================================================
 
BgScroll_MZ:				; XREF: BgScroll_Index
		rts	
; ===========================================================================
 
BgScroll_SLZ:				; XREF: BgScroll_Index
		asr.l	#1,d0
		addi.w	#$C0,d0
		move.w	d0,($FFFFF70C).w
		clr.l	($FFFFF708).w
		rts	
; ===========================================================================
 
BgScroll_SYZ:				; XREF: BgScroll_Index
		asl.l	#4,d0
		move.l	d0,d2
		asl.l	#1,d0
		add.l	d2,d0
		asr.l	#8,d0
		addq.w	#1,d0
		move.w	d0,($FFFFF70C).w
		clr.l	($FFFFF708).w
		rts	
; ===========================================================================
 
BgScroll_SBZ:				; XREF: BgScroll_Index
		andi.w	#$7F8,d0
		asr.w	#3,d0
		addq.w	#1,d0
		move.w	d0,($FFFFF70C).w
		rts	
; ===========================================================================
 
BgScroll_End:				; XREF: BgScroll_Index
		move.w	($FFFFF700).w,d0
		asr.w	#1,d0
		move.w	d0,($FFFFF708).w
		move.w	d0,($FFFFF710).w
		asr.w	#2,d0
		move.w	d0,d1
		add.w	d0,d0
		add.w	d1,d0
		move.w	d0,($FFFFF718).w
		clr.l	($FFFFF70C).w
		clr.l	($FFFFF714).w
		clr.l	($FFFFF71C).w
		lea	($FFFFA800).w,a2
		clr.l	(a2)+
		clr.l	(a2)+
		clr.l	(a2)+
		rts

The starting deformation data for every stage needed to be changed. To be precise, it prevents bugs that occur in the scrolling in SBZ and SYZ, and prevents a bug that causes GHZ's bg not to appear at all.

Step 3

Next, we'll do the deformation data itself. Go to Deform_GHZ, and replace everything from there until the end of Deform_SBZ, straight down (right before ScrollHoriz) with the following:

Deform_GHZ:
		move.w	($FFFFF73A).w,d4
		ext.l	d4
		asl.l	#5,d4
		move.l	d4,d1
		asl.l	#1,d4
		add.l	d1,d4
		moveq	#0,d6
		bsr.w	ScrollBlock6
		move.w	($FFFFF73A).w,d4
		ext.l	d4
		asl.l	#7,d4
		moveq	#0,d6
		bsr.w	ScrollBlock5
		lea	($FFFFCC00).w,a1
		move.w	($FFFFF704).w,d0
		andi.w	#$7FF,d0
		lsr.w	#5,d0
		neg.w	d0
		addi.w	#$20,d0	; ' '
		bpl.s	Deform_GHZ_1
		moveq	#0,d0
 
Deform_GHZ_1:				; CODE XREF: Deform_GHZ+36�j
		move.w	d0,d4
		move.w	d0,($FFFFF618).w
		move.w	($FFFFF700).w,d0
		cmpi.b	#4,($FFFFF600).w
		bne.s	Deform_GHZ_2
		moveq	#0,d0
 
Deform_GHZ_2:				; CODE XREF: Deform_GHZ+4A�j
		neg.w	d0
		swap	d0
		lea	($FFFFA800).w,a2
		addi.l	#$10000,(a2)+
		addi.l	#$C000,(a2)+
		addi.l	#$8000,(a2)+
		move.w	($FFFFA800).w,d0
		add.w	($FFFFF718).w,d0
		neg.w	d0
		move.w	#$1F,d1
		sub.w	d4,d1
		bcs.s	Deform_GHZ_4
 
Deform_GHZ_3:				; CODE XREF: Deform_GHZ+7C�j
		move.l	d0,(a1)+
		dbf	d1,Deform_GHZ_3
 
Deform_GHZ_4:				; CODE XREF: Deform_GHZ+78�j
		move.w	($FFFFA804).w,d0
		add.w	($FFFFF718).w,d0
		neg.w	d0
		move.w	#$F,d1
 
Deform_GHZ_5:				; CODE XREF: Deform_GHZ+90�j
		move.l	d0,(a1)+
		dbf	d1,Deform_GHZ_5
		move.w	($FFFFA808).w,d0
		add.w	($FFFFF718).w,d0
		neg.w	d0
		move.w	#$F,d1
 
Deform_GHZ_6:				; CODE XREF: Deform_GHZ+A4�j
		move.l	d0,(a1)+
		dbf	d1,Deform_GHZ_6
		move.w	#$2F,d1	; '/'
		move.w	($FFFFF718).w,d0
		neg.w	d0
 
Deform_GHZ_7:				; CODE XREF: Deform_GHZ+B4�j
		move.l	d0,(a1)+
		dbf	d1,Deform_GHZ_7
		move.w	#$27,d1	; '''
		move.w	($FFFFF710).w,d0
		neg.w	d0
 
Deform_GHZ_8:				; CODE XREF: Deform_GHZ+C4�j
		move.l	d0,(a1)+
		dbf	d1,Deform_GHZ_8
		move.w	($FFFFF710).w,d0
		move.w	($FFFFF700).w,d2
		sub.w	d0,d2
		ext.l	d2
		asl.l	#8,d2
		divs.w	#$68,d2	; 'h'
		ext.l	d2
		asl.l	#8,d2
		moveq	#0,d3
		move.w	d0,d3
		move.w	#$47,d1	; 'G'
		add.w	d4,d1
 
Deform_GHZ_9:				; CODE XREF: Deform_GHZ+F4�j
		move.w	d3,d0
		neg.w	d0
		move.l	d0,(a1)+
		swap	d3
		add.l	d2,d3
		swap	d3
		dbf	d1,Deform_GHZ_9
		rts	
; End of function Deform_GHZ
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B	R O U T	I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
Deform_LZ:
		move.w	($FFFFF73A).w,d4
		ext.l	d4
		asl.l	#7,d4
		move.w	($FFFFF73C).w,d5
		ext.l	d5
		asl.l	#7,d5
		bsr.w	ScrollBlock1
		move.w	($FFFFF70C).w,($FFFFF618).w
		lea	(LZ_Wave_Data).l,a3
		lea	(Obj0A_WobbleData).l,a2
		move.b	($FFFFF7D8).w,d2
		move.b	d2,d3
		addi.w	#$80,($FFFFF7D8).w ; '€'
		add.w	($FFFFF70C).w,d2
		andi.w	#$FF,d2
		add.w	($FFFFF704).w,d3
		andi.w	#$FF,d3
		lea	($FFFFCC00).w,a1
		move.w	#$DF,d1	; 'ß'
		move.w	($FFFFF700).w,d0
		neg.w	d0
		move.w	d0,d6
		swap	d0
		move.w	($FFFFF708).w,d0
		neg.w	d0
		move.w	($FFFFF646).w,d4
		move.w	($FFFFF704).w,d5
 
Deform_LZ_1:				; CODE XREF: Deform_LZ+6E�j
		cmp.w	d4,d5
		bge.s	Deform_LZ_2
		move.l	d0,(a1)+
		addq.w	#1,d5
		addq.b	#1,d2
		addq.b	#1,d3
		dbf	d1,Deform_LZ_1
		rts	
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
Deform_LZ_2:				; CODE XREF: Deform_LZ+64�j
					; Deform_LZ+8C�j
		move.b	(a3,d3.w),d4
		ext.w	d4
		add.w	d6,d4
		move.w	d4,(a1)+
		move.b	(a2,d2.w),d4
		ext.w	d4
		add.w	d0,d4
		move.w	d4,(a1)+
		addq.b	#1,d2
		addq.b	#1,d3
		dbf	d1,Deform_LZ_2
		rts	
; End of function Deform_LZ
 
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
LZ_Wave_Data:	dc.b   1,  1,  2,  2,  3,  3,  3,  3,  2,  2,  1,  1,  0,  0,  0,  0
					; DATA XREF: Deform_LZ+1A�o
		dc.b   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
		dc.b   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
		dc.b   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
		dc.b   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
		dc.b   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
		dc.b   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
		dc.b   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
		dc.b $FF,$FF,$FE,$FE,$FD,$FD,$FD,$FD,$FE,$FE,$FF,$FF,  0,  0,  0,  0
		dc.b   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
		dc.b   1,  1,  2,  2,  3,  3,  3,  3,  2,  2,  1,  1,  0,  0,  0,  0
		dc.b   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
		dc.b   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
		dc.b   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
		dc.b   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
		dc.b   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B	R O U T	I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
Deform_MZ:
		move.w	($FFFFF73A).w,d4
		ext.l	d4
		asl.l	#6,d4
		move.l	d4,d1
		asl.l	#1,d4
		add.l	d1,d4
		moveq	#2,d6
		bsr.w	ScrollBlock4
		move.w	($FFFFF73A).w,d4
		ext.l	d4
		asl.l	#6,d4
		moveq	#6,d6
		bsr.w	ScrollBlock6
		move.w	($FFFFF73A).w,d4
		ext.l	d4
		asl.l	#7,d4
		moveq	#4,d6
		bsr.w	ScrollBlock5
		move.w	#$200,d0
		move.w	($FFFFF704).w,d1
		subi.w	#$1C8,d1
		bcs.s	Deform_MZ_1
		move.w	d1,d2
		add.w	d1,d1
		add.w	d2,d1
		asr.w	#2,d1
		add.w	d1,d0
 
Deform_MZ_1:				; CODE XREF: Deform_MZ+3C�j
		move.w	d0,($FFFFF714).w
		move.w	d0,($FFFFF71C).w
		bsr.w	ScrollBlock3
		move.w	($FFFFF70C).w,($FFFFF618).w
		move.b	($FFFFF756).w,d0
		or.b	($FFFFF758).w,d0
		or.b	d0,($FFFFF75A).w
		clr.b	($FFFFF756).w
		clr.b	($FFFFF758).w
		lea	($FFFFA800).w,a1
		move.w	($FFFFF700).w,d2
		neg.w	d2
		move.w	d2,d0
		asr.w	#2,d0
		sub.w	d2,d0
		ext.l	d0
		asl.l	#3,d0
		divs.w	#5,d0
		ext.l	d0
		asl.l	#4,d0
		asl.l	#8,d0
		moveq	#0,d3
		move.w	d2,d3
		asr.w	#1,d3
		move.w	#4,d1
 
Deform_MZ_2:				; CODE XREF: Deform_MZ+9E�j
		move.w	d3,(a1)+
		swap	d3
		add.l	d0,d3
		swap	d3
		dbf	d1,Deform_MZ_2
		move.w	($FFFFF718).w,d0
		neg.w	d0
		move.w	#1,d1
 
Deform_MZ_3:				; CODE XREF: Deform_MZ+AE�j
		move.w	d0,(a1)+
		dbf	d1,Deform_MZ_3
		move.w	($FFFFF710).w,d0
		neg.w	d0
		move.w	#8,d1
 
Deform_MZ_4:				; CODE XREF: Deform_MZ+BE�j
		move.w	d0,(a1)+
		dbf	d1,Deform_MZ_4
		move.w	($FFFFF708).w,d0
		neg.w	d0
		move.w	#$F,d1
 
Deform_MZ_5:				; CODE XREF: Deform_MZ+CE�j
		move.w	d0,(a1)+
		dbf	d1,Deform_MZ_5
		lea	($FFFFA800).w,a2
		move.w	($FFFFF70C).w,d0
		subi.w	#$200,d0
		move.w	d0,d2
		cmpi.w	#$100,d0
		bcs.s	Deform_MZ_6
		move.w	#$100,d0
 
Deform_MZ_6:				; CODE XREF: Deform_MZ+E4�j
		andi.w	#$1F0,d0
		lsr.w	#3,d0
		lea	(a2,d0.w),a2
		bra.w	Deform_All
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
Deform_SLZ:
		move.w	($FFFFF73C).w,d5
		ext.l	d5
		asl.l	#7,d5
		bsr.w	ScrollBlock2
		move.w	($FFFFF70C).w,($FFFFF618).w
		lea	($FFFFA800).w,a1
		move.w	($FFFFF700).w,d2
		neg.w	d2
		move.w	d2,d0
		asr.w	#3,d0
		sub.w	d2,d0
		ext.l	d0
		asl.l	#4,d0
		divs.w	#$1C,d0
		ext.l	d0
		asl.l	#4,d0
		asl.l	#8,d0
		moveq	#0,d3
		move.w	d2,d3
		move.w	#$1B,d1
 
Deform_SLZ_1:				; CODE XREF: Deform_MZ+138�j
		move.w	d3,(a1)+
		swap	d3
		add.l	d0,d3
		swap	d3
		dbf	d1,Deform_SLZ_1
		move.w	d2,d0
		asr.w	#3,d0
		move.w	d0,d1
		asr.w	#1,d1
		add.w	d1,d0
		move.w	#4,d1
 
Deform_SLZ_2:				; CODE XREF: Deform_MZ+14C�j
		move.w	d0,(a1)+
		dbf	d1,Deform_SLZ_2
		move.w	d2,d0
		asr.w	#2,d0
		move.w	#4,d1
 
Deform_SLZ_3:				; CODE XREF: Deform_MZ+15A�j
		move.w	d0,(a1)+
		dbf	d1,Deform_SLZ_3
		move.w	d2,d0
		asr.w	#1,d0
		move.w	#$1D,d1
 
Deform_SLZ_4:				; CODE XREF: Deform_MZ+168�j
		move.w	d0,(a1)+
		dbf	d1,Deform_SLZ_4
		lea	($FFFFA800).w,a2
		move.w	($FFFFF70C).w,d0
		move.w	d0,d2
		subi.w	#$C0,d0	; 'À'
		andi.w	#$3F0,d0
		lsr.w	#3,d0
		lea	(a2,d0.w),a2
 
Deform_All:				; CODE XREF: Deform_MZ+F4�j
					; Deform_SYZ+A8�j ...
		lea	($FFFFCC00).w,a1
		move.w	#$E,d1
		move.w	($FFFFF700).w,d0
		neg.w	d0
		swap	d0
		andi.w	#$F,d2
		add.w	d2,d2
		move.w	(a2)+,d0
		jmp	Deform_All_2(pc,d2.w)
; End of function Deform_MZ
 
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
Deform_All_1:				; CODE XREF: ROM:0000670A�j
		move.w	(a2)+,d0
 
Deform_All_2:
		move.l	d0,(a1)+
		move.l	d0,(a1)+
		move.l	d0,(a1)+
		move.l	d0,(a1)+
		move.l	d0,(a1)+
		move.l	d0,(a1)+
		move.l	d0,(a1)+
		move.l	d0,(a1)+
		move.l	d0,(a1)+
		move.l	d0,(a1)+
		move.l	d0,(a1)+
		move.l	d0,(a1)+
		move.l	d0,(a1)+
		move.l	d0,(a1)+
		move.l	d0,(a1)+
		move.l	d0,(a1)+
		dbf	d1,Deform_All_1
		rts	
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B	R O U T	I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
Deform_SYZ:
		move.w	($FFFFF73C).w,d5
		ext.l	d5
		asl.l	#4,d5
		move.l	d5,d1
		asl.l	#1,d5
		add.l	d1,d5
		bsr.w	ScrollBlock2
		move.w	($FFFFF70C).w,($FFFFF618).w
		lea	($FFFFA800).w,a1
		move.w	($FFFFF700).w,d2
		neg.w	d2
		move.w	d2,d0
		asr.w	#3,d0
		sub.w	d2,d0
		ext.l	d0
		asl.l	#3,d0
		divs.w	#8,d0
		ext.l	d0
		asl.l	#4,d0
		asl.l	#8,d0
		moveq	#0,d3
		move.w	d2,d3
		asr.w	#1,d3
		move.w	#7,d1
 
Deform_SYZ_1:				; CODE XREF: Deform_SYZ+48�j
		move.w	d3,(a1)+
		swap	d3
		add.l	d0,d3
		swap	d3
		dbf	d1,Deform_SYZ_1
		move.w	d2,d0
		asr.w	#3,d0
		move.w	#4,d1
 
Deform_SYZ_2:				; CODE XREF: Deform_SYZ+56�j
		move.w	d0,(a1)+
		dbf	d1,Deform_SYZ_2
		move.w	d2,d0
		asr.w	#2,d0
		move.w	#5,d1
 
Deform_SYZ_3:				; CODE XREF: Deform_SYZ+64�j
		move.w	d0,(a1)+
		dbf	d1,Deform_SYZ_3
		move.w	d2,d0
		move.w	d2,d1
		asr.w	#1,d1
		sub.w	d1,d0
		ext.l	d0
		asl.l	#4,d0
		divs.w	#$E,d0
		ext.l	d0
		asl.l	#4,d0
		asl.l	#8,d0
		moveq	#0,d3
		move.w	d2,d3
		asr.w	#1,d3
		move.w	#$D,d1
 
Deform_SYZ_4:				; CODE XREF: Deform_SYZ+90�j
		move.w	d3,(a1)+
		swap	d3
		add.l	d0,d3
		swap	d3
		dbf	d1,Deform_SYZ_4
		lea	($FFFFA800).w,a2
		move.w	($FFFFF70C).w,d0
		move.w	d0,d2
		andi.w	#$1F0,d0
		lsr.w	#3,d0
		lea	(a2,d0.w),a2
		bra.w	Deform_All
; End of function Deform_SYZ
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B	R O U T	I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
Deform_SBZ:
		tst.b	($FFFFFE11).w
		bne.w	Deform_SBZ_Act2
		move.w	($FFFFF73A).w,d4
		ext.l	d4
		asl.l	#7,d4
		moveq	#2,d6
		bsr.w	ScrollBlock4
		move.w	($FFFFF73A).w,d4
		ext.l	d4
		asl.l	#6,d4
		moveq	#6,d6
		bsr.w	ScrollBlock6
		move.w	($FFFFF73A).w,d4
		ext.l	d4
		asl.l	#5,d4
		move.l	d4,d1
		asl.l	#1,d4
		add.l	d1,d4
		moveq	#4,d6
		bsr.w	ScrollBlock5
		moveq	#0,d4
		move.w	($FFFFF73C).w,d5
		ext.l	d5
		asl.l	#5,d5
		bsr.w	ScrollBlock1_2
		move.w	($FFFFF70C).w,d0
		move.w	d0,($FFFFF714).w
		move.w	d0,($FFFFF71C).w
		move.w	d0,($FFFFF618).w
		move.b	($FFFFF756).w,d0
		or.b	($FFFFF75A).w,d0
		or.b	d0,($FFFFF758).w
		clr.b	($FFFFF756).w
		clr.b	($FFFFF75A).w
		lea	($FFFFA800).w,a1
		move.w	($FFFFF700).w,d2
		neg.w	d2
		asr.w	#2,d2
		move.w	d2,d0
		asr.w	#1,d0
		sub.w	d2,d0
		ext.l	d0
		asl.l	#3,d0
		divs.w	#4,d0
		ext.l	d0
		asl.l	#4,d0
		asl.l	#8,d0
		moveq	#0,d3
		move.w	d2,d3
		move.w	#3,d1
 
Deform_SBZ_1:				; CODE XREF: Deform_SBZ+9A�j
		move.w	d3,(a1)+
		swap	d3
		add.l	d0,d3
		swap	d3
		dbf	d1,Deform_SBZ_1
		move.w	($FFFFF718).w,d0
		neg.w	d0
		move.w	#9,d1
 
Deform_SBZ_2:				; CODE XREF: Deform_SBZ+AA�j
		move.w	d0,(a1)+
		dbf	d1,Deform_SBZ_2
		move.w	($FFFFF710).w,d0
		neg.w	d0
		move.w	#6,d1
 
Deform_SBZ_3:				; CODE XREF: Deform_SBZ+BA�j
		move.w	d0,(a1)+
		dbf	d1,Deform_SBZ_3
		move.w	($FFFFF708).w,d0
		neg.w	d0
		move.w	#$A,d1
 
Deform_SBZ_4:				; CODE XREF: Deform_SBZ+CA�j
		move.w	d0,(a1)+
		dbf	d1,Deform_SBZ_4
		lea	($FFFFA800).w,a2
		move.w	($FFFFF70C).w,d0
		move.w	d0,d2
		andi.w	#$1F0,d0
		lsr.w	#3,d0
		lea	(a2,d0.w),a2
		bra.w	Deform_All
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
Deform_SBZ_Act2:			; CODE XREF: Deform_SBZ+4�j
		move.w	($FFFFF73A).w,d4
		ext.l	d4
		asl.l	#6,d4
		move.w	($FFFFF73C).w,d5
		ext.l	d5
		asl.l	#5,d5
		bsr.w	ScrollBlock1
		move.w	($FFFFF70C).w,($FFFFF618).w
		lea	($FFFFCC00).w,a1
		move.w	#$DF,d1	; 'ß'
		move.w	($FFFFF700).w,d0
		neg.w	d0
		swap	d0
		move.w	($FFFFF708).w,d0
		neg.w	d0
 
Deform_SBZ_Act2_1:			; CODE XREF: Deform_SBZ+118�j
		move.l	d0,(a1)+
		dbf	d1,Deform_SBZ_Act2_1
		rts	
; End of function Deform_SBZ

Step 4

The new Bg drawing system required a different method of scrolling the BGs themselves. Go to ScrollBlock1 and replace everything from there until the end of ScrollBlock4 with the following:

ScrollBlock1:				; CODE XREF: Deform_LZ+10�p
					; Deform_SBZ+F6�p
		move.l	($FFFFF708).w,d2
		move.l	d2,d0
		add.l	d4,d0
		move.l	d0,($FFFFF708).w
		move.l	d0,d1
		swap	d1
		andi.w	#$10,d1
		move.b	($FFFFF74C).w,d3
		eor.b	d3,d1
		bne.s	ScrollBlock1_2
		eori.b	#$10,($FFFFF74C).w
		sub.l	d2,d0
		bpl.s	ScrollBlock1_1
		bset	#2,($FFFFF756).w
		bra.s	ScrollBlock1_2
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
ScrollBlock1_1:				; CODE XREF: ScrollBlock1+24�j
		bset	#3,($FFFFF756).w
 
ScrollBlock1_2:				; CODE XREF: Deform_SBZ+42�p
					; ScrollBlock1+1A�j ...
		move.l	($FFFFF70C).w,d3
		move.l	d3,d0
		add.l	d5,d0
		move.l	d0,($FFFFF70C).w
		move.l	d0,d1
		swap	d1
		andi.w	#$10,d1
		move.b	($FFFFF74D).w,d2
		eor.b	d2,d1
		bne.s	ScrollBlock1_End
		eori.b	#$10,($FFFFF74D).w
		sub.l	d3,d0
		bpl.s	ScrollBlock1_3
		bset	#0,($FFFFF756).w
		rts	
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
ScrollBlock1_3:				; CODE XREF: ScrollBlock1+58�j
		bset	#1,($FFFFF756).w
 
ScrollBlock1_End:			; CODE XREF: ScrollBlock1+4E�j
		rts	
; End of function ScrollBlock1
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B	R O U T	I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
ScrollBlock2:				; CODE XREF: Deform_MZ+100�p
					; Deform_SYZ+E�p
		move.l	($FFFFF70C).w,d3
		move.l	d3,d0
		add.l	d5,d0
		move.l	d0,($FFFFF70C).w
		move.l	d0,d1
		swap	d1
		andi.w	#$10,d1
		move.b	($FFFFF74D).w,d2
		eor.b	d2,d1
		bne.s	ScrollBlock2_End
		eori.b	#$10,($FFFFF74D).w
		sub.l	d3,d0
		bpl.s	ScrollBlock2_1
		bset	#4,($FFFFF756).w
		rts	
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
ScrollBlock2_1:				; CODE XREF: ScrollBlock2+24�j
		bset	#5,($FFFFF756).w
 
ScrollBlock2_End:			; CODE XREF: ScrollBlock2+1A�j
		rts	
; End of function ScrollBlock2
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B	R O U T	I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
ScrollBlock3:				; CODE XREF: Deform_MZ+50�p
		move.w	($FFFFF70C).w,d3
		move.w	d0,($FFFFF70C).w
		move.w	d0,d1
		andi.w	#$10,d1
		move.b	($FFFFF74D).w,d2
		eor.b	d2,d1
		bne.s	ScrollBlock3_End
		eori.b	#$10,($FFFFF74D).w
		sub.w	d3,d0
		bpl.s	ScrollBlock3_1
		bset	#0,($FFFFF756).w
		rts	
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
ScrollBlock3_1:				; CODE XREF: ScrollBlock3+1E�j
		bset	#1,($FFFFF756).w
 
ScrollBlock3_End:			; CODE XREF: ScrollBlock3+14�j
		rts	
; End of function ScrollBlock3
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B	R O U T	I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
ScrollBlock4:				; CODE XREF: Deform_MZ+10�p
					; Deform_SBZ+12�p
		move.l	($FFFFF708).w,d2
		move.l	d2,d0
		add.l	d4,d0
		move.l	d0,($FFFFF708).w
		move.l	d0,d1
		swap	d1
		andi.w	#$10,d1
		move.b	($FFFFF74C).w,d3
		eor.b	d3,d1
		bne.s	ScrollBlock4_End
		eori.b	#$10,($FFFFF74C).w
		sub.l	d2,d0
		bpl.s	ScrollBlock4_1
		bset	d6,($FFFFF756).w
		bra.s	ScrollBlock4_End
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
ScrollBlock4_1:				; CODE XREF: ScrollBlock4+24�j
		addq.b	#1,d6
		bset	d6,($FFFFF756).w
 
ScrollBlock4_End:			; CODE XREF: ScrollBlock4+1A�j
					; ScrollBlock4+2A�j
		rts	
; End of function ScrollBlock4
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B	R O U T	I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
ScrollBlock5:				; CODE XREF: Deform_GHZ+1E�p
					; Deform_MZ+2C�p ...
		move.l	($FFFFF710).w,d2
		move.l	d2,d0
		add.l	d4,d0
		move.l	d0,($FFFFF710).w
		move.l	d0,d1
		swap	d1
		andi.w	#$10,d1
		move.b	($FFFFF74E).w,d3
		eor.b	d3,d1
		bne.s	ScrollBlock5_End
		eori.b	#$10,($FFFFF74E).w
		sub.l	d2,d0
		bpl.s	ScrollBlock5_1
		bset	d6,($FFFFF758).w
		bra.s	ScrollBlock5_End
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
ScrollBlock5_1:				; CODE XREF: ScrollBlock5+24�j
		addq.b	#1,d6
		bset	d6,($FFFFF758).w
 
ScrollBlock5_End:			; CODE XREF: ScrollBlock5+1A�j
					; ScrollBlock5+2A�j
		rts	
; End of function ScrollBlock5
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B	R O U T	I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
ScrollBlock6:				; CODE XREF: Deform_GHZ+10�p
					; Deform_MZ+1E�p ...
		move.l	($FFFFF718).w,d2
		move.l	d2,d0
		add.l	d4,d0
		move.l	d0,($FFFFF718).w
		move.l	d0,d1
		swap	d1
		andi.w	#$10,d1
		move.b	($FFFFF750).w,d3
		eor.b	d3,d1
		bne.s	ScrollBlock6_End
		eori.b	#$10,($FFFFF750).w
		sub.l	d2,d0
		bpl.s	ScrollBlock6_1
		bset	d6,($FFFFF75A).w
		bra.s	ScrollBlock6_End
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
ScrollBlock6_1:				; CODE XREF: ScrollBlock6+24�j
		addq.b	#1,d6
		bset	d6,($FFFFF75A).w
 
ScrollBlock6_End:			; CODE XREF: ScrollBlock6+1A�j
					; ScrollBlock6+2A�j
		rts	
; End of function ScrollBlock6

Don't worry that there are six BGScroll functions now, that's taken cared of.

Step 5

Finally, the biggest part: the BG drawing code. Go to sub_6886 and replace everything from there until the end of LoadTilesFromStart2 (that's a VERY long way, up until MainLoadBlockLoad) with the following:

sub_6886:		
		lea	($C00004).l,a5
		lea	($C00000).l,a6
		lea	($FFFFF756).w,a2
		lea	($FFFFF708).w,a3
		lea	($FFFFA440).w,a4
		move.w	#$6000,d2
		bsr.w	sub_6D0A
		lea	($FFFFF758).w,a2
		lea	($FFFFF710).w,a3
		bra.w	sub_6DA6
; End of function sub_6886
 
; ---------------------------------------------------------------------------
; Subroutine to	display	correct	tiles as you move
; ---------------------------------------------------------------------------
 
; ||||||||||||||| S U B	R O U T	I N E |||||||||||||||||||||||||||||||||||||||
 
 
LoadTilesAsYouMove:			; XREF: Demo_Time
		lea	($C00004).l,a5
		lea	($C00000).l,a6
		lea	($FFFFFF32).w,a2
		lea	($FFFFFF18).w,a3
		lea	($FFFFA440).w,a4
		move.w	#$6000,d2
		bsr.w	sub_6D0A
		lea	($FFFFFF34).w,a2
		lea	($FFFFFF20).w,a3
		bsr.w	sub_6DA6
		lea	($FFFFFF36).w,a2
		lea	($FFFFFF28).w,a3
		bsr.w	sub_6EA4
		lea	($FFFFFF30).w,a2
		lea	($FFFFFF10).w,a3
		lea	($FFFFA400).w,a4
		move.w	#$4000,d2
		tst.b	($FFFFF745).w
		beq.s	Draw_FG
		move.b	#0,($FFFFF745).w	;Reset the redraw flag
		moveq	#-$10,d4			;Go to top line oflevel data relative camera position
		moveq	#$F,d6				;
 
Draw_All:				; CODE XREF: ROM:0000DAEA�j
		movem.l	d4-d6,-(sp)			; This whole routine basically redraws the whole
		moveq	#-$10,d5			; area instead of merely a line of tiles
		move.w	d4,d1
		bsr.w	Calc_VRAM_Pos
		move.w	d1,d4
		moveq	#-$10,d5
		bsr.w	DrawTiles_LR
		movem.l	(sp)+,d4-d6
		addi.w	#$10,d4
		dbf	d6,Draw_All
		rts	
 
Draw_FG:
		tst.b	(a2)
		beq.s	locret_6D08
		bclr	#0,(a2)
		beq.s	loc_6CBE
		moveq	#-$10,d4
		moveq	#-$10,d5
		bsr.w	Calc_VRAM_Pos
		moveq	#-$10,d4
		moveq	#-$10,d5
		bsr.w	DrawTiles_LR
 
loc_6CBE:				; CODE XREF: ROM:00006CAC�j
		bclr	#1,(a2)
		beq.s	loc_6CD8
		move.w	#$E0,d4	; 'à'
		moveq	#-$10,d5
		bsr.w	Calc_VRAM_Pos
		move.w	#$E0,d4	; 'à'
		moveq	#-$10,d5
		bsr.w	DrawTiles_LR
 
loc_6CD8:				; CODE XREF: ROM:00006CC2�j
		bclr	#2,(a2)
		beq.s	loc_6CEE
		moveq	#-$10,d4
		moveq	#-$10,d5
		bsr.w	Calc_VRAM_Pos
		moveq	#-$10,d4
		moveq	#-$10,d5
		bsr.w	DrawTiles_TB
 
loc_6CEE:				; CODE XREF: ROM:00006CDC�j
		bclr	#3,(a2)
		beq.s	locret_6D08
		moveq	#-$10,d4
		move.w	#$140,d5
		bsr.w	Calc_VRAM_Pos
		moveq	#-$10,d4
		move.w	#$140,d5
		bsr.w	DrawTiles_TB
 
locret_6D08:				; CODE XREF: ROM:00006CA6�j
					; ROM:00006CF2�j
		rts	
 
; End of function LoadTilesAsYouMove
 
 
; ||||||||||||||| S U B	R O U T	I N E |||||||||||||||||||||||||||||||||||||||
 
 
sub_6D0A:				; CODE XREF: ROM:00006C4C�p
					; ROM:00006C78�p
		tst.b	(a2)
		beq.w	locret_6DA4
		bclr	#0,(a2)
		beq.s	loc_6D26
		moveq	#-$10,d4
		moveq	#-$10,d5
		bsr.w	Calc_VRAM_Pos
		moveq	#-$10,d4
		moveq	#-$10,d5
		bsr.w	DrawTiles_LR
 
loc_6D26:				; CODE XREF: sub_6D0A+A�j
		bclr	#1,(a2)
		beq.s	loc_6D40
		move.w	#$E0,d4	; 'à'
		moveq	#-$10,d5
		bsr.w	Calc_VRAM_Pos
		move.w	#$E0,d4	; 'à'
		moveq	#-$10,d5
		bsr.w	DrawTiles_LR
 
loc_6D40:				; CODE XREF: sub_6D0A+20�j
		bclr	#2,(a2)
		beq.s	loc_6D56
		moveq	#-$10,d4
		moveq	#-$10,d5
		bsr.w	Calc_VRAM_Pos
		moveq	#-$10,d4
		moveq	#-$10,d5
		bsr.w	DrawTiles_TB
 
loc_6D56:				; CODE XREF: sub_6D0A+3A�j
		bclr	#3,(a2)
		beq.s	loc_6D70
		moveq	#-$10,d4
		move.w	#$140,d5
		bsr.w	Calc_VRAM_Pos
		moveq	#-$10,d4
		move.w	#$140,d5
		bsr.w	DrawTiles_TB
 
loc_6D70:				; CODE XREF: sub_6D0A+50�j
		bclr	#4,(a2)
		beq.s	loc_6D88
		moveq	#-$10,d4
		moveq	#0,d5
		bsr.w	loc_7176
		moveq	#-$10,d4
		moveq	#0,d5
		moveq	#$1F,d6
		bsr.w	DrawTiles_LR3
 
loc_6D88:				; CODE XREF: sub_6D0A+6A�j
		bclr	#5,(a2)
		beq.s	locret_6DA4
		move.w	#$E0,d4	; 'à'
		moveq	#0,d5
		bsr.w	loc_7176
		move.w	#$E0,d4	; 'à'
		moveq	#0,d5
		moveq	#$1F,d6
		bsr.w	DrawTiles_LR3
 
locret_6DA4:				; CODE XREF: sub_6D0A+2�j sub_6D0A+82�j
		rts	
; End of function sub_6D0A
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B	R O U T	I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
sub_6DA6:				; CODE XREF: ROM:00006C58�j
					; ROM:00006C84�p
		tst.b	(a2)
		beq.w	locret_6DF2
		cmpi.b	#5,($FFFFFE10).w
		beq.w	loc_6E16
		bclr	#0,(a2)
		beq.s	loc_6DD2
		move.w	#$70,d4	; 'p'
		moveq	#-$10,d5
		bsr.w	Calc_VRAM_Pos
		move.w	#$70,d4	; 'p'
		moveq	#-$10,d5
		moveq	#2,d6
		bsr.w	DrawTiles_TB2
 
loc_6DD2:				; CODE XREF: sub_6DA6+14�j
		bclr	#1,(a2)
		beq.s	locret_6DF2
		move.w	#$70,d4	; 'p'
		move.w	#$140,d5
		bsr.w	Calc_VRAM_Pos
		move.w	#$70,d4	; 'p'
		move.w	#$140,d5
		moveq	#2,d6
		bsr.w	DrawTiles_TB2
 
locret_6DF2:				; CODE XREF: sub_6DA6+2�j sub_6DA6+30�j
		rts	
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
unk_6DF4:	dc.b   0 ;		; DATA XREF: sub_6DA6+E6�o
unk_6DF5:	dc.b   0 ;		; DATA XREF: sub_6DA6+82�o
					; ROM:00007290�o
		dc.b   0 ;  
		dc.b   0 ;  
		dc.b   0 ;  
		dc.b   6 ;  
		dc.b   6 ;  
		dc.b   6 ;  
		dc.b   6 ;  
		dc.b   6 ;  
		dc.b   6 ;  
		dc.b   6 ;  
		dc.b   6 ;  
		dc.b   6 ;  
		dc.b   6 ;  
		dc.b   4 ;  
		dc.b   4 ;  
		dc.b   4 ;  
		dc.b   4 ;  
		dc.b   4 ;  
		dc.b   4 ;  
		dc.b   4 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   0 ;  
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
loc_6E16:				; CODE XREF: sub_6DA6+C�j
		moveq	#-$10,d4
		bclr	#0,(a2)
		bne.s	loc_6E28
		bclr	#1,(a2)
		beq.s	loc_6E72
		move.w	#$E0,d4	; 'à'
 
loc_6E28:				; CODE XREF: sub_6DA6+76�j
		lea	(unk_6DF5).l,a0
		move.w	($FFFFF70C).w,d0
		add.w	d4,d0
		andi.w	#$1F0,d0
		lsr.w	#4,d0
		move.b	(a0,d0.w),d0
		lea	(unk_6FE4).l,a3
		movea.w	(a3,d0.w),a3
		beq.s	loc_6E5E
		moveq	#-$10,d5
		movem.l	d4-d5,-(sp)
		bsr.w	Calc_VRAM_Pos
		movem.l	(sp)+,d4-d5
		bsr.w	DrawTiles_LR
		bra.s	loc_6E72
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
loc_6E5E:				; CODE XREF: sub_6DA6+A2�j
		moveq	#0,d5
		movem.l	d4-d5,-(sp)
		bsr.w	loc_7176
		movem.l	(sp)+,d4-d5
		moveq	#$1F,d6
		bsr.w	DrawTiles_LR3
 
loc_6E72:				; CODE XREF: sub_6DA6+7C�j sub_6DA6+B6�j
		tst.b	(a2)
		bne.s	loc_6E78
		rts	
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
loc_6E78:				; CODE XREF: sub_6DA6+CE�j
		moveq	#-$10,d4
		moveq	#-$10,d5
		move.b	(a2),d0
		andi.b	#-$58,d0
		beq.s	loc_6E8C
		lsr.b	#1,d0
		move.b	d0,(a2)
		move.w	#$140,d5
 
loc_6E8C:				; CODE XREF: sub_6DA6+DC�j
		lea	(unk_6DF4).l,a0
		move.w	($FFFFF70C).w,d0
		andi.w	#$1F0,d0
		lsr.w	#4,d0
		lea	(a0,d0.w),a0
		bra.w	loc_6FEC
; End of function sub_6DA6
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B	R O U T	I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
sub_6EA4:				; CODE XREF: ROM:00006C90�p
		tst.b	(a2)
		beq.w	locret_6EF0
		cmpi.b	#2,($FFFFFE10).w
		beq.w	loc_6F54
		bclr	#0,(a2)
		beq.s	loc_6ED0_2
		move.w	#$40,d4	; '@'
		moveq	#-$10,d5
		bsr.w	Calc_VRAM_Pos
		move.w	#$40,d4	; '@'
		moveq	#-$10,d5
		moveq	#2,d6
		bsr.w	DrawTiles_TB2
 
loc_6ED0_2:				; CODE XREF: sub_6EA4+14�j
		bclr	#1,(a2)
		beq.s	locret_6EF0
		move.w	#$40,d4	; '@'
		move.w	#$140,d5
		bsr.w	Calc_VRAM_Pos
		move.w	#$40,d4	; '@'
		move.w	#$140,d5
		moveq	#2,d6
		bsr.w	DrawTiles_TB2
 
locret_6EF0:				; CODE XREF: sub_6EA4+2�j sub_6EA4+30�j
		rts	
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
unk_6EF2:	dc.b   0 ;		; DATA XREF: sub_6EA4+124�o
unk_6EF3:	dc.b   0 ;		; DATA XREF: sub_6EA4+C2�o
					; ROM:00007262�o
		dc.b   0 ;  
		dc.b   0 ;  
		dc.b   0 ;  
		dc.b   0 ;  
		dc.b   6 ;  
		dc.b   6 ;  
		dc.b   4 ;  
		dc.b   4 ;  
		dc.b   4 ;  
		dc.b   4 ;  
		dc.b   4 ;  
		dc.b   4 ;  
		dc.b   4 ;  
		dc.b   4 ;  
		dc.b   4 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   2 ;  
		dc.b   0 ;  
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
loc_6F54:				; CODE XREF: sub_6EA4+C�j
		moveq	#-$10,d4
		bclr	#0,(a2)
		bne.s	loc_6F66
		bclr	#1,(a2)
		beq.s	loc_6FAE
		move.w	#$E0,d4	; 'à'
 
loc_6F66:				; CODE XREF: sub_6EA4+B6�j
		lea	(unk_6EF3).l,a0
		move.w	($FFFFF70C).w,d0
		subi.w	#$200,d0
		add.w	d4,d0
		andi.w	#$7F0,d0
		lsr.w	#4,d0
		move.b	(a0,d0.w),d0
		movea.w	unk_6FE4(pc,d0.w),a3
		beq.s	loc_6F9A
		moveq	#-$10,d5
		movem.l	d4-d5,-(sp)
		bsr.w	Calc_VRAM_Pos
		movem.l	(sp)+,d4-d5
		bsr.w	DrawTiles_LR
		bra.s	loc_6FAE
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
loc_6F9A:				; CODE XREF: sub_6EA4+E0�j
		moveq	#0,d5
		movem.l	d4-d5,-(sp)
		bsr.w	loc_7176
		movem.l	(sp)+,d4-d5
		moveq	#$1F,d6
		bsr.w	DrawTiles_LR3
 
loc_6FAE:				; CODE XREF: sub_6EA4+BC�j sub_6EA4+F4�j
		tst.b	(a2)
		bne.s	loc_6FB4
		rts	
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
loc_6FB4:				; CODE XREF: sub_6EA4+10C�j
		moveq	#-$10,d4
		moveq	#-$10,d5
		move.b	(a2),d0
		andi.b	#-$58,d0
		beq.s	loc_6FC8
		lsr.b	#1,d0
		move.b	d0,(a2)
		move.w	#$140,d5
 
loc_6FC8:				; CODE XREF: sub_6EA4+11A�j
		lea	(unk_6EF2).l,a0
		move.w	($FFFFF70C).w,d0
		subi.w	#$200,d0
		andi.w	#$7F0,d0
		lsr.w	#4,d0
		lea	(a0,d0.w),a0
		bra.w	loc_6FEC
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
unk_6FE4:	dc.b $FF ;		; DATA XREF: sub_6DA6+98�o
		dc.b $18 ;  
		dc.b $FF ;  
		dc.b $18 ;  
		dc.b $FF ;  
		dc.b $20 ;  
		dc.b $FF ;  
		dc.b $28 ; (
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
loc_6FEC:				; CODE XREF: sub_6DA6+FA�j
					; sub_6EA4+13C�j
		moveq	#$F,d6
		move.l	#$800000,d7
 
loc_6FF4:				; CODE XREF: sub_6EA4+17C�j
		moveq	#0,d0
		move.b	(a0)+,d0
		btst	d0,(a2)
		beq.s	loc_701C
		movea.w	unk_6FE4(pc,d0.w),a3
		movem.l	d4-d5/a0,-(sp)
		movem.l	d4-d5,-(sp)
		bsr.w	sub_712A
		movem.l	(sp)+,d4-d5
		bsr.w	Calc_VRAM_Pos
		bsr.w	sub_70AC
		movem.l	(sp)+,d4-d5/a0
 
loc_701C:				; CODE XREF: sub_6EA4+156�j
		addi.w	#$10,d4
		dbf	d6,loc_6FF4
		clr.b	(a2)
		rts	
; End of function sub_6EA4
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B	R O U T	I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
DrawTiles_LR:				; CODE XREF: ROM:00006CBA�p
					; ROM:00006CD4�p ...
		moveq	#$15,d6
; End of function DrawTiles_LR
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B	R O U T	I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
DrawTiles_LR2:				; CODE XREF: LoadTilesFromStart2+16�p
		move.l	#$800000,d7
		move.l	d0,d1
 
loc_7032:				; CODE XREF: DrawTiles_LR2+24�j
		movem.l	d4-d5,-(sp)
		bsr.w	sub_712A
		move.l	d1,d0
		bsr.w	sub_70AC
		addq.b	#4,d1
		andi.b	#$7F,d1	; ''
		movem.l	(sp)+,d4-d5
		addi.w	#$10,d5
		dbf	d6,loc_7032
		rts	
; End of function DrawTiles_LR2
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B	R O U T	I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
DrawTiles_LR3:				; CODE XREF: sub_6D0A+7A�p sub_6D0A+96�p ...
		move.l	#$800000,d7
		move.l	d0,d1
 
loc_705C:				; CODE XREF: DrawTiles_LR3+24�j
		movem.l	d4-d5,-(sp)
		bsr.w	loc_712C
		move.l	d1,d0
		bsr.w	sub_70AC
		addq.b	#4,d1
		andi.b	#$7F,d1	; ''
		movem.l	(sp)+,d4-d5
		addi.w	#$10,d5
		dbf	d6,loc_705C
		rts	
; End of function DrawTiles_LR3
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B	R O U T	I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
DrawTiles_TB:				; CODE XREF: ROM:00006CEA�p
					; ROM:00006D04�p ...
		moveq	#$F,d6
; End of function DrawTiles_TB
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B	R O U T	I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
DrawTiles_TB2:				; CODE XREF: sub_6DA6+28�p sub_6DA6+48�p ...
		move.l	#$800000,d7
		move.l	d0,d1
 
loc_7088:				; CODE XREF: DrawTiles_TB2+26�j
		movem.l	d4-d5,-(sp)
		bsr.w	sub_712A
		move.l	d1,d0
		bsr.w	sub_70AC
		addi.w	#$100,d1
		andi.w	#$FFF,d1
		movem.l	(sp)+,d4-d5
		addi.w	#$10,d4
		dbf	d6,loc_7088
		rts	
; End of function DrawTiles_TB2
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B	R O U T	I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
sub_70AC:				; CODE XREF: sub_6EA4+170�p
					; DrawTiles_LR2+12�p ...
		or.w	d2,d0
		swap	d0
		btst	#4,(a0)
		bne.s	loc_70E8
		btst	#3,(a0)
		bne.s	loc_70C8
		move.l	d0,(a5)
		move.l	(a1)+,(a6)
		add.l	d7,d0
		move.l	d0,(a5)
		move.l	(a1)+,(a6)
		rts	
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
loc_70C8:				; CODE XREF: sub_70AC+E�j
		move.l	d0,(a5)
		move.l	(a1)+,d4
		eori.l	#$8000800,d4
		swap	d4
		move.l	d4,(a6)
		add.l	d7,d0
		move.l	d0,(a5)
		move.l	(a1)+,d4
		eori.l	#$8000800,d4
		swap	d4
		move.l	d4,(a6)
		rts	
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
loc_70E8:				; CODE XREF: sub_70AC+8�j
		btst	#3,(a0)
		bne.s	loc_710A
		move.l	d0,(a5)
		move.l	(a1)+,d5
		move.l	(a1)+,d4
		eori.l	#$10001000,d4
		move.l	d4,(a6)
		add.l	d7,d0
		move.l	d0,(a5)
		eori.l	#$10001000,d5
		move.l	d5,(a6)
		rts	
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
loc_710A:				; CODE XREF: sub_70AC+40�j
		move.l	d0,(a5)
		move.l	(a1)+,d5
		move.l	(a1)+,d4
		eori.l	#$18001800,d4
		swap	d4
		move.l	d4,(a6)
		add.l	d7,d0
		move.l	d0,(a5)
		eori.l	#$18001800,d5
		swap	d5
		move.l	d5,(a6)
		rts	
; End of function sub_70AC
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B	R O U T	I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
sub_712A:				; CODE XREF: sub_6EA4+164�p
					; DrawTiles_LR2+C�p ...
		add.w	(a3),d5
 
loc_712C:				; CODE XREF: DrawTiles_LR3+C�p
		add.w	4(a3),d4
		lea	($FFFFB000).w,a1
		move.w	d4,d3
		lsr.w	#1,d3
		andi.w	#$380,d3
		lsr.w	#3,d5
		move.w	d5,d0
		lsr.w	#5,d0
		andi.w	#$7F,d0	; ''
		add.w	d3,d0
		moveq	#-1,d3
		move.b	(a4,d0.w),d3
		beq.s	locret_7172
		subq.b	#1,d3
		andi.w	#$7F,d3	; ''
		ror.w	#7,d3
		add.w	d4,d4
		andi.w	#$1E0,d4
		andi.w	#$1E,d5
		add.w	d4,d3
		add.w	d5,d3
		movea.l	d3,a0
		move.w	(a0),d3
		andi.w	#$3FF,d3
		lsl.w	#3,d3
		adda.w	d3,a1
 
locret_7172:				; CODE XREF: sub_712A+24�j
		rts	
; End of function sub_712A
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B	R O U T	I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
Calc_VRAM_Pos:				; CODE XREF: ROM:00006CB2�p
					; ROM:00006CCA�p ...
		add.w	(a3),d5
 
loc_7176:				; CODE XREF: sub_6D0A+70�p sub_6D0A+8A�p ...
		add.w	4(a3),d4
		andi.w	#$F0,d4	; 'ð'
		andi.w	#$1F0,d5
		lsl.w	#4,d4
		lsr.w	#2,d5
		add.w	d5,d4
		moveq	#3,d0
		swap	d0
		move.w	d4,d0
		rts	
; End of function Calc_VRAM_Pos
 
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
		add.w	4(a3),d4
		add.w	(a3),d5
		andi.w	#$F0,d4	; 'ð'
		andi.w	#$1F0,d5
		lsl.w	#4,d4
		lsr.w	#2,d5
		add.w	d5,d4
		moveq	#2,d0
		swap	d0
		move.w	d4,d0
		rts	
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B	R O U T	I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
LoadTilesFromStart:			; CODE XREF: ROM:0000395A�p
					; ROM:000051B8�p
		lea	($C00004).l,a5
		lea	($C00000).l,a6
		lea	($FFFFF700).w,a3
		lea	($FFFFA400).w,a4
		move.w	#$4000,d2
		bsr.s	LoadTilesFromStart2
		lea	($FFFFF708).w,a3
		lea	($FFFFA440).w,a4
		move.w	#$6000,d2
		tst.b	($FFFFFE10).w
		beq.w	loc_7220
		cmpi.b	#2,($FFFFFE10).w
		beq.w	loc_725A
		cmpi.w	#$500,($FFFFFE10).w
		beq.w	loc_7288
		cmpi.b	#6,($FFFFFE10).w
		beq.w	loc_7220
; End of function LoadTilesFromStart
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B	R O U T	I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
LoadTilesFromStart2:			; CODE XREF: ROM:00003096�p
					; ROM:0000536A�p ...
		moveq	#-$10,d4
		moveq	#$F,d6
 
loc_71FC:				; CODE XREF: LoadTilesFromStart2+22�j
		movem.l	d4-d6,-(sp)
		moveq	#0,d5
		move.w	d4,d1
		bsr.w	Calc_VRAM_Pos
		move.w	d1,d4
		moveq	#0,d5
		moveq	#$1F,d6
		bsr.w	DrawTiles_LR2
		movem.l	(sp)+,d4-d6
		addi.w	#$10,d4
		dbf	d6,loc_71FC
		rts	
; End of function LoadTilesFromStart2
 
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
loc_7220:				; CODE XREF: LoadTilesFromStart+2A�j
					; LoadTilesFromStart+48�j
		moveq	#0,d4
		moveq	#$F,d6
 
loc_7224:				; CODE XREF: ROM:00007244�j
		movem.l	d4-d6,-(sp)
		lea	(unk_724A).l,a0
		move.w	($FFFFF70C).w,d0
		add.w	d4,d0
		andi.w	#$F0,d0	; 'ð'
		bsr.w	sub_72BA
		movem.l	(sp)+,d4-d6
		addi.w	#$10,d4
		dbf	d6,loc_7224
		rts	
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
unk_724A:	dc.b   0 ;		; DATA XREF: ROM:00007228�o
		dc.b   0 ;  
		dc.b   0 ;  
		dc.b   0 ;  
		dc.b   6 ;  
		dc.b   6 ;  
		dc.b   6 ;  
		dc.b   4 ;  
		dc.b   4 ;  
		dc.b   4 ;  
		dc.b   0 ;  
		dc.b   0 ;  
		dc.b   0 ;  
		dc.b   0 ;  
		dc.b   0 ;  
		dc.b   0 ;  
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
loc_725A:				; CODE XREF: LoadTilesFromStart+34�j
		moveq	#-$10,d4
		moveq	#$F,d6
 
loc_725E:				; CODE XREF: ROM:00007282�j
		movem.l	d4-d6,-(sp)
		lea	(unk_6EF3).l,a0
		move.w	($FFFFF70C).w,d0
		subi.w	#$200,d0
		add.w	d4,d0
		andi.w	#$7F0,d0
		bsr.w	sub_72BA
		movem.l	(sp)+,d4-d6
		addi.w	#$10,d4
		dbf	d6,loc_725E
		rts	
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
loc_7288:				; CODE XREF: LoadTilesFromStart+3E�j
		moveq	#-$10,d4
		moveq	#$F,d6
 
loc_728C:				; CODE XREF: ROM:000072AC�j
		movem.l	d4-d6,-(sp)
		lea	(unk_6DF5).l,a0
		move.w	($FFFFF70C).w,d0
		add.w	d4,d0
		andi.w	#$1F0,d0
		bsr.w	sub_72BA
		movem.l	(sp)+,d4-d6
		addi.w	#$10,d4
		dbf	d6,loc_728C
		rts	
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
unk_72B2:	dc.b $F7 ; ÷
		dc.b   8 ;  
		dc.b $F7 ; ÷
		dc.b   8 ;  
		dc.b $F7 ; ÷
		dc.b $10 ;  
		dc.b $F7 ; ÷
		dc.b $18 ;  
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B	R O U T	I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
sub_72BA:				; CODE XREF: ROM:00007238�p
					; ROM:00007276�p ...
		lsr.w	#4,d0
		move.b	(a0,d0.w),d0
		movea.w	unk_72B2(pc,d0.w),a3
		beq.s	loc_72DA
		moveq	#-$10,d5
		movem.l	d4-d5,-(sp)
		bsr.w	Calc_VRAM_Pos
		movem.l	(sp)+,d4-d5
		bsr.w	DrawTiles_LR
		bra.s	locret_72EE
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
loc_72DA:				; CODE XREF: sub_72BA+A�j
		moveq	#0,d5
		movem.l	d4-d5,-(sp)
		bsr.w	loc_7176
		movem.l	(sp)+,d4-d5
		moveq	#$1F,d6
		bsr.w	DrawTiles_LR3
 
locret_72EE:				; CODE XREF: sub_72BA+1E�j
		rts	
; End of function sub_72BA

Step 6

Assuming you haven't changed the backgrounds of your levels, compile it and give it a go!

Credits

  • Hivebrain - for attempting this first
  • Tweaker - for his assistance when I had some issues to resolve.