Here's the ASM code (Yes, ASM, C sucks):
Code: Select all
Deform_Title_FG:
;Preparar index en RAM
moveq #0,d0
move.b ($FFFFFFA6).w,d0
move.w DeformTitleFG_index(pc,d0.w),d0
jmp DeformTitleFG_index(pc,d0.w)
DeformTitleFG_Index:
dc.w Deform_Title_Fg_1-DeformTitleFG_Index
dc.w Deform_Title_Wait-DeformTitleFG_Index
dc.w Deform_Title_Wait-DeformTitleFG_Index
dc.w Deform_Title_Wait-DeformTitleFG_Index
dc.w Deform_Title_Fg_2-DeformTitleFG_Index
dc.w Deform_Title_Wait-DeformTitleFG_Index
dc.w Deform_Title_Wait-DeformTitleFG_Index
dc.w Deform_Title_Wait-DeformTitleFG_Index
dc.w Deform_Title_Fg_3-DeformTitleFG_Index
dc.w Deform_Title_Wait-DeformTitleFG_Index
dc.w Deform_Title_Wait-DeformTitleFG_Index
dc.w Deform_Title_Wait-DeformTitleFG_Index
dc.w Deform_Title_Fg_4-DeformTitleFG_Index
dc.w Deform_Title_Wait-DeformTitleFG_Index
dc.w Deform_Title_Wait-DeformTitleFG_Index
dc.w Deform_Title_Wait-DeformTitleFG_Index
dc.w Deform_Title_Fg_5-DeformTitleFG_Index
dc.w Deform_Title_Wait-DeformTitleFG_Index
dc.w Deform_Title_Wait-DeformTitleFG_Index
dc.w Deform_Title_Wait-DeformTitleFG_Index
dc.w Deform_Title_Fg_4-DeformTitleFG_Index
dc.w Deform_Title_Wait-DeformTitleFG_Index
dc.w Deform_Title_Wait-DeformTitleFG_Index
dc.w Deform_Title_Wait-DeformTitleFG_Index
dc.w Deform_Title_Fg_3-DeformTitleFG_Index
dc.w Deform_Title_FG_Return-DeformTitleFG_Index
Deform_Title_Fg_1:
move.w #$8B07,($C00004).l ; Enable Vertical Deform.
move.l #$40000010,($C00004).l
moveq #0,d0
move.b #20,d2
move.w #$310,d1
move.w d1,d0
swap d0
move.w #$0000,d0
Deform_Title_FG_1_Loop:
move.l d0,($C00000).l
sub.w #2,d1
move.w d1,d0
swap d0
move.w #$0000,d0
dbf d2,Deform_Title_FG_1_Loop
add.b #$2,($FFFFFFA6).w
Deform_Title_FG_Return:
rts
Deform_Title_Wait:
add.b #$2,($FFFFFFA6).w
rts
Deform_Title_Fg_2:
move.l #$40000010,($C00004).l
moveq #0,d0
move.b #20,d2
move.w #$308,d1
move.w d1,d0
swap d0
move.w #$0000,d0
Deform_Title_FG_2_Loop:
move.l d0,($C00000).l
sub.w #1,d1
move.w d1,d0
swap d0
move.w #$0000,d0
dbf d2,Deform_Title_FG_2_Loop
add.b #$2,($FFFFFFA6).w
rts
Deform_Title_Fg_3:
move.l #$40000010,($C00004).l
moveq #0,d0
move.b #19,d2
move.w #$FFFE,d1
move.w d1,d0
swap d0
move.w #$0000,d0
Deform_Title_FG_3_Loop:
move.l d0,($C00000).l
move.w d1,d0
swap d0
move.w #$0000,d0
dbf d2,Deform_Title_FG_3_Loop
add.b #$2,($FFFFFFA6).w
rts
Deform_Title_Fg_4:
move.l #$40000010,($C00004).l
moveq #0,d0
move.b #19,d2
move.w #-$308,d1
move.w d1,d0
swap d0
move.w #$0000,d0
Deform_Title_FG_4_Loop:
move.l d0,($C00000).l
add.w #1,d1
move.w d1,d0
swap d0
move.w #$0000,d0
dbf d2,Deform_Title_FG_4_Loop
add.b #$2,($FFFFFFA6).w
rts
Deform_Title_Fg_5:
move.l #$40000010,($C00004).l
moveq #0,d0
move.b #19,d2
move.w #-$310,d1
move.w d1,d0
swap d0
move.w #$0000,d0
Deform_Title_FG_5_Loop:
move.l d0,($C00000).l
add.w #2,d1
move.w d1,d0
swap d0
move.w #$0000,d0
dbf d2,Deform_Title_FG_5_Loop
add.b #$2,($FFFFFFA6).w
rts