Посмотрите на Sonic the Hedgehog REV01.Что вы видите?Вы видите эффекты бэкграунда,типо летящих облаков в Green Hill,искажения в воде в Labyrinth Zone и т.д.В этом гиде расскажется,как портировать эти эффекты.
Шаг1.
Идём к Obj0A_WobbleData в Hivebrain's 2005 disassembly и заменяем на это:
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Шаг2:
Идем к BGScroll_GHZ и всё до конца BGScroll_End заменяем на это:
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Шаг3:
Идём к Deform_GHZ и заменяем всё до конца Deform_SBZ на это:
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: ; XREF: Deform_GHZ
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: ; XREF: Deform_GHZ
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: ; XREF: Deform_GHZ
move.l d0,(a1)+
dbf d1,Deform_GHZ_3
Deform_GHZ_4: ; XREF: Deform_GHZ
move.w ($FFFFA804).w,d0
add.w ($FFFFF718).w,d0
neg.w d0
move.w #$F,d1
Deform_GHZ_5: ; XREF: Deform_GHZ
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: ; XREF: Deform_GHZ
move.l d0,(a1)+
dbf d1,Deform_GHZ_6
move.w #$2F,d1 ; '/'
move.w ($FFFFF718).w,d0
neg.w d0
Deform_GHZ_7: ; XREF: Deform_GHZ
move.l d0,(a1)+
dbf d1,Deform_GHZ_7
move.w #$27,d1 ; '''
move.w ($FFFFF710).w,d0
neg.w d0
Deform_GHZ_8: ; XREF: Deform_GHZ
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: ; XREF: Deform_GHZ
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: ; XREF: Deform_LZ
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: ; XREF: Deform_LZ
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
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: ; XREF: Deform_MZ
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: ; XREF: Deform_MZ
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: ; XREF: Deform_MZ
move.w d0,(a1)+
dbf d1,Deform_MZ_3
move.w ($FFFFF710).w,d0
neg.w d0
move.w #8,d1
Deform_MZ_4: ; XREF: Deform_MZ
move.w d0,(a1)+
dbf d1,Deform_MZ_4
move.w ($FFFFF708).w,d0
neg.w d0
move.w #$F,d1
Deform_MZ_5: ; XREF: Deform_MZ
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: ; XREF: Deform_MZ
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: ; XREF: Deform_MZ
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: ; XREF: Deform_MZ
move.w d0,(a1)+
dbf d1,Deform_SLZ_2
move.w d2,d0
asr.w #2,d0
move.w #4,d1
Deform_SLZ_3: ; XREF: Deform_MZ
move.w d0,(a1)+
dbf d1,Deform_SLZ_3
move.w d2,d0
asr.w #1,d0
move.w #$1D,d1
Deform_SLZ_4: ; XREF: Deform_MZ
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: ; XREF: Deform_MZ, Deform_SYZ, ...
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: ; XREF: Deform_All
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: ; XREF: Deform_SYZ
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: ; XREF: Deform_SYZ
move.w d0,(a1)+
dbf d1,Deform_SYZ_2
move.w d2,d0
asr.w #2,d0
move.w #5,d1
Deform_SYZ_3: ; XREF: Deform_SYZ
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: ; XREF: Deform_SYZ
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: ; XREF: Deform_SBZ
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: ; XREF: Deform_SBZ
move.w d0,(a1)+
dbf d1,Deform_SBZ_2
move.w ($FFFFF710).w,d0
neg.w d0
move.w #6,d1
Deform_SBZ_3: ; XREF: Deform_SBZ
move.w d0,(a1)+
dbf d1,Deform_SBZ_3
move.w ($FFFFF708).w,d0
neg.w d0
move.w #$A,d1
Deform_SBZ_4: ; XREF: Deform_SBZ
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: ; XREF: Deform_SBZ
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: ; XREF: Deform_SBZ
move.l d0,(a1)+
dbf d1,Deform_SBZ_Act2_1
rts
; End of function Deform_SBZШаг4:
Идём к ScrollBlock1 и заменяем всё до конца ScrollBlock4 на этот код:
ScrollBlock1: ; XREF: Deform_LZ, Deform_SBZ
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: ; XREF: ScrollBlock1
bset #3,($FFFFF756).w
ScrollBlock1_2: ; XREF: ScrollBlock1, Deform_SBZ, ...
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: ; XREF: ScrollBlock1
bset #1,($FFFFF756).w
ScrollBlock1_End: ; XREF: ScrollBlock1
rts
; End of function ScrollBlock1
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
ScrollBlock2: ; XREF: Deform_MZ, Deform_SYZ
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: ; XREF: ScrollBlock2
bset #5,($FFFFF756).w
ScrollBlock2_End: ; XREF: ScrollBlock2
rts
; End of function ScrollBlock2
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
ScrollBlock3: ; XREF: Deform_MZ
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: ; XREF: ScrollBlock3
bset #1,($FFFFF756).w
ScrollBlock3_End: ; XREF: ScrollBlock3
rts
; End of function ScrollBlock3
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
ScrollBlock4: ; XREF: Deform_MZ, Deform_SBZ
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: ; XREF: ScrollBlock4
addq.b #1,d6
bset d6,($FFFFF756).w
ScrollBlock4_End: ; XREF: ScrollBlock4
rts
; End of function ScrollBlock4
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
ScrollBlock5: ; XREF: Deform_GHZ, Deform_MZ, ...
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: ; XREF: ScrollBlock5
addq.b #1,d6
bset d6,($FFFFF758).w
ScrollBlock5_End: ; XREF: ScrollBlock5
rts
; End of function ScrollBlock5
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
ScrollBlock6: ; XREF: Deform_GHZ, Deform_MZ, ...
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: ; XREF: ScrollBlock6
addq.b #1,d6
bset d6,($FFFFF75A).w
ScrollBlock6_End: ; XREF: ScrollBlock6
rts
; End of function ScrollBlock6Шаг5:
Идём к sub_6886 и заменяем всё до конца LoadTilesFromStart2(это очень длинный путь) на это:
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:
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:
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:
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:
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:
rts
; End of function LoadTilesAsYouMove
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
sub_6D0A:
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:
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:
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:
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:
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:
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:
rts
; End of function sub_6D0A
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
sub_6DA6:
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:
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:
rts
; ===========================================================================
unk_6DF4: dc.b 0 ;
unk_6DF5: dc.b 0 ;
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:
moveq #-$10,d4
bclr #0,(a2)
bne.s loc_6E28
bclr #1,(a2)
beq.s loc_6E72
move.w #$E0,d4 ; 'à'
loc_6E28:
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:
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:
tst.b (a2)
bne.s loc_6E78
rts
; ===========================================================================
loc_6E78:
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:
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:
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:
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:
rts
; ===========================================================================
unk_6EF2: dc.b 0 ;
unk_6EF3: dc.b 0 ;
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:
moveq #-$10,d4
bclr #0,(a2)
bne.s loc_6F66
bclr #1,(a2)
beq.s loc_6FAE
move.w #$E0,d4 ; 'à'
loc_6F66:
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:
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:
tst.b (a2)
bne.s loc_6FB4
rts
; ===========================================================================
loc_6FB4:
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:
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 ;
dc.b $18 ;
dc.b $FF ;
dc.b $18 ;
dc.b $FF ;
dc.b $20 ;
dc.b $FF ;
dc.b $28 ; (
; ===========================================================================
loc_6FEC:
moveq #$F,d6
move.l #$800000,d7
loc_6FF4:
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:
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:
moveq #$15,d6
; End of function DrawTiles_LR
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
DrawTiles_LR2:
move.l #$800000,d7
move.l d0,d1
loc_7032:
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:
move.l #$800000,d7
move.l d0,d1
loc_705C:
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:
moveq #$F,d6
; End of function DrawTiles_TB
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
DrawTiles_TB2:
move.l #$800000,d7
move.l d0,d1
loc_7088:
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:
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:
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:
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:
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:
add.w (a3),d5
loc_712C:
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:
rts
; End of function sub_712A
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
Calc_VRAM_Pos:
add.w (a3),d5
loc_7176:
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:
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:
moveq #-$10,d4
moveq #$F,d6
loc_71FC:
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:
moveq #0,d4
moveq #$F,d6
loc_7224:
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 ;
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:
moveq #-$10,d4
moveq #$F,d6
loc_725E:
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:
moveq #-$10,d4
moveq #$F,d6
loc_728C:
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:
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:
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:
rts
; End of function sub_72BAШаг6:
Компилируем и вперёд,оценивать работу!
Внимание!В коде возможено есть Юникод.Удалите его.