// ----------------------------------
// RSDK Project: Sonic 1/Sonic 2
// Script Description: Logo Object
// Script Author: Christian Whitehead/Simon Thomley
// Unpacked by Rubberduckycooly's script unpacker
// ----------------------------------
//-------Aliases-------//
private alias 3 : TYPE_LOGO
public alias saveRAM[306] : [Link]
// Function declarations
reserve function Logo_Function1
reserve function AnimatedForever
private alias object.value0 : [Link]
private alias object.value1 : [Link].x
private alias object.value2 : [Link].y
private alias object.value3 : [Link]
private alias object.value4 : [Link]
private alias object.value5 : [Link]
private alias object.value6 : [Link].x
private alias object.value7 : [Link].y
private alias object.value8 : [Link]
private alias object.value9 : [Link]
private alias object.value10 : [Link] // Not actually used
as far as I can tell
private alias object.value11 : object.player2Pos.x
private alias object.value12 : object.player2Pos.y
private alias object.value13 : object.p2Frame
private alias object.value14 : [Link]
private alias object.value15 : [Link]
private alias object.value16 : [Link]
private alias object.value17 : [Link]
// Knux States
private alias 0 : LOGO_SETUP_KNUX
private alias 1 : LOGO_FADEIN_KNUX
private alias 2 : LOGO_RISEDELAY_KNUX
private alias 3 : LOGO_RISE_KNUX
private alias 4 : LOGO_ANIMATE_KNUX
private alias 5 : LOGO_ARMAPPEAR_KNUX
private alias 6 : LOGO_ANIMATEARM_KNUX
private alias 7 : LOGO_MOVEARM_KNUX
private alias 8 : LOGO_PREPLOGOAPPEAR_KNUX
private alias 9 : LOGO_ARMAPPEAR2_KNUX
private alias 10 : LOGO_ANIMATEARM2_KNUX
private alias 11 : LOGO_MOVEARM2_KNUX
private alias 12 : LOGO_SHOWLOGO_KNUX
private alias 13 : LOGO_IDLE_KNUX
// Tables
public table Logo_table0
0x6060A0, 0x80A0E0, 0xE08000, 0xE0C080, 0xA04000, 0x600000, 0xE02080,
0xE00040, 0x800000, 0x806080, 0xA08060, 0xE0C0A0, 0x80A0A0, 0xA04020
end table
public table Logo_table1
-50, -40, -53, -56, -58, -68, -60, -74, -62, -78, -63, -79, -64, -80
end table
public table Logo_table2
5, -32, 6, -31
end table
function AnimatedForever
if [Link] > 4
if object.value21 < 19
temp0 = object.value21
temp0 += 13
DrawSpriteScreenXY(temp0, [Link], [Link])
object.value22++
object.value22 &= 1
if object.value22 == 1
object.value21++
end if
end if
end if
end function
function Logo_Function1
temp0 = 0
if [Link] == 1
temp0 = 1
end if
if [Link] == 1
temp0 = 2
end if
if [Link] == 1
temp0 = 3
end if
if [Link] == 1
temp0 = 4
end if
if [Link] == 1
temp0 = 5
end if
if [Link] == 1
temp0 = 6
end if
if [Link] == 1
temp0 = 7
end if
switch object.value14
case 0
if temp0 == 1
object.value14++
else
if temp0 != 0
object.value14 = 0
end if
end if
break
case 1
if temp0 == 2
object.value14++
else
if temp0 != 0
object.value14 = 0
end if
end if
break
case 2
if temp0 == 3
object.value14++
else
if temp0 != 0
object.value14 = 0
end if
end if
break
case 3
if temp0 == 4
object.value14++
//object.value14 = 0
[Link] = 1
PlaySfx(SfxName[Ring L], 0)
else
if temp0 != 0
object.value14 = 0
end if
end if
break
end switch
switch object.value15
case 0
if temp0 == 1
object.value15++
else
if temp0 != 0
object.value15 = 0
end if
end if
break
case 1
if temp0 == 7
object.value15++
else
if temp0 != 0
object.value15 = 0
end if
end if
break
case 2
if temp0 == 2
object.value15++
else
if temp0 != 0
object.value15 = 0
end if
end if
break
case 3
if temp0 == 7
object.value15++
else
if temp0 != 0
object.value15 = 0
end if
end if
break
case 4
if temp0 == 3
object.value15++
else
if temp0 != 0
object.value15 = 0
end if
end if
break
case 5
if temp0 == 7
object.value15++
else
if temp0 != 0
object.value15 = 0
end if
end if
break
case 6
if temp0 == 4
object.value15++
else
if temp0 != 0
object.value15 = 0
end if
end if
break
case 7
if temp0 == 7
object.value15++
//object.value15 = 0
[Link] = 1
PlaySfx(SfxName[Ring L], 0)
//also activate level select
object.value14 = object.value15
[Link] = 1
else
if temp0 != 0
object.value15 = 0
end if
end if
break
end switch
switch object.value16
case 0
if temp0 == 1
object.value16++
else
if temp0 != 0
object.value16 = 0
end if
end if
break
case 1
case 2
case 3
case 4
if temp0 == 2
object.value16++
else
if temp0 != 0
object.value16 = 0
end if
end if
break
case 5
if temp0 == 1
object.value16++
object.value16 = 0
saveRAM[278] ^= 1
switch saveRAM[278]
case 0
PlaySfx(SfxName[Hurt], 0)
break
case 1
PlaySfx(SfxName[Ring L], 0)
break
end switch
WriteSaveRAM()
else
if temp0 != 0
object.value16 = 0
end if
end if
break
end switch
switch object.value17
case 0
if temp0 == 3
object.value17++
else
if temp0 != 0
object.value17 = 0
end if
end if
break
case 1
if temp0 == 3
object.value17++
else
if temp0 != 0
object.value17 = 0
end if
end if
break
case 2
if temp0 == 3
object.value17++
else
if temp0 != 0
object.value17 = 0
end if
end if
break
case 3
if temp0 == 4
object.value17++
else
if temp0 != 0
object.value17 = 0
end if
end if
break
case 4
if temp0 == 4
object.value17++
else
if temp0 != 0
object.value17 = 0
end if
end if
break
case 5
if temp0 == 4
object.value17++
else
if temp0 != 0
object.value17 = 0
end if
end if
break
case 6
if temp0 == 1
object.value17++
else
if temp0 != 0
object.value17 = 0
end if
end if
break
case 7
if temp0 == 1
object.value17++
else
if temp0 != 0
object.value17 = 0
end if
end if
break
case 8
if temp0 == 1
object.value17++
object.value17 = 0
saveRAM[279] ^= 1
switch saveRAM[279]
case 0
PlaySfx(SfxName[Hurt], 0)
break
case 1
PlaySfx(SfxName[Ring L], 0)
break
end switch
WriteSaveRAM()
else
if temp0 != 0
object.value17 = 0
end if
end if
break
end switch
end function
event ObjectMain
if [Link] == 0
[Link] = 0
[Link] = 0
end if
if object.value10 == 0
object.value3++
if object.value3 == 6
object.value3 = 0
RotatePalette(0, 192, 195, 1)
end if
end if
if [Link] == 0
//if [Link] > 3
if object[+1].value10 == 0
CallFunction(Logo_Function1)
end if
//end if
end if
end event
event ObjectDraw
if object[+1].value10 == 1
DrawRect(0, 0, [Link], [Link], 0, 0, 0, 255)
end if
temp0 = 1
if temp0 != 0
DrawSpriteScreenXY(9, [Link], [Link])
end if
switch [Link]
case 0
[Link] = 0
[Link] = PRIORITY_ACTIVE
object.value0 = 256
stage[0].activeLayer = 1
[Link]++
SetScreenFade(0, 0, 0, 255)
object[+1].type = TypeName[Start Message]
object[+1].priority = PRIORITY_ACTIVE
object[+1].xpos = [Link]
object[+1].ypos = 192
break
case 1
[Link] += 2
if object.value0 > 0
object.value0 -= 8
else
PlayMusic(0)
[Link]++
end if
SetScreenFade(0, 0, 0, object.value0)
break
case 2
[Link] += 2
object.value0++
if object.value0 == 38
object.value0 = 0
object.value2 = 186
[Link] = 0
[Link]++
end if
break
case 3
[Link] += 2
object.value2 -= 8
if object.value2 < 144
[Link] = 1
end if
if object.value2 <= 112
object.value2 = 112
[Link]++
end if
DrawSpriteScreenXY([Link], [Link], object.value2)
break
case 4
[Link] += 2
object.value0++
if object.value0 == 8
if object[+1].value10 == 0
[Link]++
end if
if [Link] >= 7
[Link] = 7
//object[+1].type = TypeName[Start Message]
//object[+1].priority = PRIORITY_ACTIVE
//object[+1].xpos = [Link]
//object[+1].ypos = 192
if [Link] == 1
object[+1].ypos = 216
[Link]++
else
[Link] = 7
end if
end if
object.value0 = 0
end if
DrawSpriteScreenXY([Link], [Link], object.value2)
break
case 5
[Link] += 2
[Link] += 0x4000
[Link] += [Link]
temp0 = [Link]
temp0 >>= 16
[Link] += temp0
[Link].y += temp0
[Link].y += temp0
[Link] &= 0xFFFF
if [Link] > 0
if [Link] >= 24
[Link] >>= 1
temp0 = [Link]
temp0 >>= 1
[Link] += temp0
[Link]++
if [Link] != 3
FlipSign([Link])
else
[Link] = 0
[Link] = 0
[Link]++
end if
end if
end if
DrawSpriteScreenXY(9, [Link], [Link])
DrawSpriteScreenXY([Link], [Link], object.value2)
break
case 6
[Link] += 2
[Link] += 0x4000
[Link] += [Link]
temp0 = [Link]
temp0 >>= 16
[Link] += temp0
[Link] &= 0xFFFF
if [Link] > 0
if [Link] >= 89
[Link] >>= 2
temp0 = [Link]
temp0 >>= 1
[Link] += temp0
[Link]++
if [Link] != 2
FlipSign([Link])
else
[Link] = 0
[Link] = 0
[Link]++
end if
end if
end if
DrawSpriteScreenXY(9, [Link], [Link])
DrawSpriteScreenXY([Link], [Link], object.value2)
DrawSpriteScreenXY(32, [Link], [Link]) //
"shaodw In" sprite
break
case 7
[Link] += 2
object.value0++
if object.value0 == 8
if object[+1].value10 == 0
[Link]++
end if
if [Link] > 8
[Link] = 7
end if
object.value0 = 0
end if
DrawSpriteScreenXY(9, [Link], [Link])
DrawSpriteScreenXY([Link], [Link], object.value2)
if [Link] == 1
DrawSpriteScreenXY(32, [Link], [Link])
// "shaodw In" sprite
end if
break
end switch
DrawSpriteScreenXY(10, [Link], [Link])
CallFunction(AnimatedForever)
temp0 = [Link]
temp0 -= 96
DrawSpriteScreenXY(11, temp0, 216)
DrawSpriteScreenXY(12, 25, 225)
end event
event ObjectStartup
LoadSpriteSheet("Title/[Link]")
switch [Link]
case 0
SetMusicTrack("[Link]", 0, 0)
SpriteFrame(-33, -74, 65, 64, 1, 1) //0 Sonic
SpriteFrame(-33, -74, 65, 88, 1, 1)
SpriteFrame(-34, -66, 74, 88, 67, 1)
SpriteFrame(-34, -66, 74, 88, 142, 1)
SpriteFrame(-32, -72, 79, 88, 217, 1)
SpriteFrame(-24, -74, 72, 88, 297, 1)
SpriteFrame(-36, -76, 81, 88, 370, 1)
SpriteFrame(-36, -76, 81, 88, 1, 90)
SpriteFrame(-36, -76, 81, 88, 83, 90)
break
case 1
SetMusicTrack("[Link]", 0, 735652)
SpriteFrame(-40, -81, 78, 71, 452, 1) //0 Shadow
SpriteFrame(-42, -74, 88, 75, 531, 1)
SpriteFrame(-40, -74, 78, 75, 620, 1)
SpriteFrame(-44, -87, 86, 88, 699, 1)
SpriteFrame(-44, -93, 84, 94, 786, 1)
SpriteFrame(-43, -81, 87, 81, 871, 1)
SpriteFrame(-38, -87, 85, 88, 512, 77)
SpriteFrame(-39, -87, 85, 87, 598, 79)
SpriteFrame(-39, -87, 85, 87, 598, 79)
break
end switch
SpriteFrame(-128, 42, 256, 74, 255, 90) //9 Logo Top
SpriteFrame(-128, 112, 256, 74, 255, 167) //10 Logo Bottom
SpriteFrame(0, 0, 71, 17, 182, 210) //11 Copyright Sega
SpriteFrame(-2, 0, 128, 8, 155, 242) //12 Team Forever
//Forever Animated
SpriteFrame(19, 148, 46, 7, 1, 319) //13
SpriteFrame(19, 148, 46, 7, 48, 319) //14
SpriteFrame(19, 148, 46, 7, 95, 319) //15
SpriteFrame(19, 148, 46, 7, 142, 319) //16
SpriteFrame(19, 148, 46, 7, 1, 327) //17
SpriteFrame(19, 148, 46, 7, 48, 327) //18
SpriteFrame(19, 148, 46, 7, 95, 327) //19
SpriteFrame(19, 148, 46, 7, 142, 327) //20
SpriteFrame(19, 148, 46, 7, 1, 335) //21
SpriteFrame(19, 148, 46, 7, 48, 335) //22
SpriteFrame(19, 148, 46, 7, 95, 335) //23
SpriteFrame(19, 148, 46, 7, 142, 335) //24
SpriteFrame(19, 148, 46, 7, 1, 343) //25
SpriteFrame(19, 148, 46, 7, 48, 343) //26
SpriteFrame(19, 148, 46, 7, 95, 343) //27
SpriteFrame(19, 148, 46, 7, 142, 343) //28
SpriteFrame(19, 148, 46, 7, 1, 351) //29
SpriteFrame(19, 148, 46, 7, 48, 351) //30
SpriteFrame(19, 148, 46, 7, 95, 351) //31
SpriteFrame(-95, -76, 190, 62, 512, 166) //32 shitshow the hedge-edge
temp0 = 208
temp1 = 0
while temp1 < 14
GetTableValue(temp2, temp1, Logo_table0)
SetPaletteEntry(0, temp0, temp2)
temp0++
temp1++
loop
end event
event RSDKDraw
DrawSprite(0)
end event
event RSDKLoad
LoadSpriteSheet("Global/[Link]")
SpriteFrame(-16, -16, 32, 32, 1, 143)
end event