//----------------Sonic CD Menu Control Script----------------//
//--------Scripted by Christian Whitehead 'The Taxman'--------//
//-------Unpacked By Rubberduckycooly's Script Unpacker-------//
// Aliases
#alias Object.Value0 : [Link] // Also used as a timer
// Little Planet Aliases
#alias Object[32].Frame : [Link]
// Music Selector Aliases
#alias Object[33].Frame : [Link]
#alias Object[33].XPos : [Link]
#alias Object[33].State : [Link]
#alias Object[33].DrawOrder : [Link]
#alias Object[33].Priority : [Link]
// Touch Buttons Aliases
#alias Object[35].PropertyValue : Object.Button1Value
#alias Object[36].PropertyValue : Object.Button2Value
#alias Object[37].PropertyValue : Object.Button3Value
// States
#alias 0 : MENUCONTROL_SETUP
#alias 1 : MENUCONTROL_FADE_IN
#alias 2 : MENUCONTROL_IDLE
#alias 3 : MENUCONTROL_MUSIC_CONTROLS
#alias 4 : MENUCONTROL_SET_MUSIC
#alias 5 : MENUCONTROL_TIMETRAVEL
#alias 6 : MENUCONTROL_EXIT
// Music Selector States
#alias 0 : MUSICSELECTOR_BLANK
#alias 1 : MUSICSELECTOR_STOP_MOVE_L
#alias 2 : MUSICSELECTOR_MOVE_L
#alias 4 : MUSICSELECTOR_MOVE_R
// Little Planet Sprite Frame Aliases
#alias 0 : LPFRAME_PRESENT
#alias 11 : LPFRAME_GOODFUTURE
#alias 22 : LPFRAME_BADFUTURE
// Priority
#alias 0 : PRIORITY_BOUNDS
#alias 1 : PRIORITY_ACTIVE
// Presentation Stage
#alias 1 : STAGE_P_MENU
// Device Type
#alias 1 : RETRO_MOBILE
// Function Declarations
#function MenuControl_ChangeTrack
function MenuControl_ChangeTrack
switch [Link]
case 0
SetMusicTrack("JP/[Link]", 0, 142428)
SetMusicTrack("US/[Link]", 1, 153038)
[Link] = LPFRAME_PRESENT
break
case 1
SetMusicTrack("JP/[Link]", 0, 142902)
SetMusicTrack("US/[Link]", 1, 152346)
[Link] = LPFRAME_GOODFUTURE
break
case 2
SetMusicTrack("JP/[Link]", 0, 1)
SetMusicTrack("US/[Link]", 1, 774998)
[Link] = LPFRAME_BADFUTURE
break
case 3
switch SaveRam[513]
case 0 // Original
SetMusicTrack("JP/[Link]", 0, true)
SetMusicTrack("JP/[Link]", 1, true)
break
case 1 //US
SetMusicTrack("US/[Link]", 0, true)
SetMusicTrack("US/[Link]", 1, true)
break
case 2 // EU
SetMusicTrack("EU/[Link]", 0, true)
SetMusicTrack("EU/[Link]", 1, true)
break
case 3 // Alt. Mix 0
SetMusicTrack("ALT0/[Link]", 0, true)
SetMusicTrack("ALT0/[Link]", 1, true)
break
end switch
[Link] = LPFRAME_PRESENT
break
case 4
switch SaveRam[515]
case 0 // JP
SetMusicTrack("JP/[Link]", 0, true)
SetMusicTrack("JP/[Link]", 1, true)
break
case 1 // Sonic Stream
SetMusicTrack("JP/R2C_SonicStream.ogg", 0, true)
SetMusicTrack("JP/R2C_SonicStream.ogg", 1, true)
break
case 2 //US
SetMusicTrack("US/[Link]", 0, true)
SetMusicTrack("US/[Link]", 1, true)
break
case 3 // EU
SetMusicTrack("EU/[Link]", 0, true)
SetMusicTrack("EU/[Link]", 1, true)
break
case 4 // Alt. Mix0
SetMusicTrack("ALT0/[Link]", 0, true)
SetMusicTrack("ALT0/[Link]", 1, true)
break
end switch
[Link] = LPFRAME_GOODFUTURE
break
case 5
switch SaveRam[516]
case 0 // JP
SetMusicTrack("JP/[Link]", 0, true)
SetMusicTrack("JP/[Link]", 1, true)
break
case 1 //US
SetMusicTrack("US/[Link]", 0, true)
SetMusicTrack("US/[Link]", 1, true)
break
case 2 // EU
SetMusicTrack("EU/[Link]", 0, true)
SetMusicTrack("EU/[Link]", 1, true)
break
case 3 // Alt. Mix0
SetMusicTrack("ALT0/[Link]", 0, true)
SetMusicTrack("ALT0/[Link]", 1, true)
break
case 4 // [Link] 1
SetMusicTrack("ALT1/[Link]", 0, true)
SetMusicTrack("ALT1/[Link]", 1, true)
break
end switch
[Link] = LPFRAME_BADFUTURE
break
case 6
SetMusicTrack("JP/[Link]", 0, 358725)
SetMusicTrack("US/[Link]", 1, 1)
[Link] = LPFRAME_PRESENT
break
case 7
SetMusicTrack("JP/[Link]", 0, 1)
SetMusicTrack("US/[Link]", 1, 173494)
[Link] = LPFRAME_GOODFUTURE
break
case 8
SetMusicTrack("JP/[Link]", 0, 717648)
SetMusicTrack("US/[Link]", 1, 1)
[Link] = LPFRAME_BADFUTURE
break
case 9
SetMusicTrack("JP/[Link]", 0, 1)
SetMusicTrack("US/[Link]", 1, 415148)
[Link] = LPFRAME_PRESENT
break
case 10
SetMusicTrack("JP/[Link]", 0, 1)
SetMusicTrack("US/[Link]", 1, 1)
[Link] = LPFRAME_GOODFUTURE
break
case 11
SetMusicTrack("JP/[Link]", 0, 1)
SetMusicTrack("US/[Link]", 1, 145616)
[Link] = LPFRAME_BADFUTURE
break
case 12
SetMusicTrack("JP/[Link]", 0, 1)
SetMusicTrack("US/[Link]", 1, 1)
[Link] = LPFRAME_PRESENT
break
case 13
SetMusicTrack("JP/[Link]", 0, 367046)
SetMusicTrack("US/[Link]", 1, 705830)
[Link] = LPFRAME_GOODFUTURE
break
case 14
SetMusicTrack("JP/[Link]", 0, 1)
SetMusicTrack("US/[Link]", 1, 93672)
[Link] = LPFRAME_BADFUTURE
break
case 15
SetMusicTrack("JP/[Link]", 0, 1)
SetMusicTrack("US/[Link]", 1, 926048)
[Link] = LPFRAME_PRESENT
break
case 16
SetMusicTrack("JP/[Link]", 0, 1)
SetMusicTrack("US/[Link]", 1, 181704)
[Link] = LPFRAME_GOODFUTURE
break
case 17
SetMusicTrack("JP/[Link]", 0, 1)
SetMusicTrack("US/[Link]", 1, 45355)
[Link] = LPFRAME_BADFUTURE
break
case 18
SetMusicTrack("JP/[Link]", 0, 1)
SetMusicTrack("US/[Link]", 1, 617728)
[Link] = LPFRAME_PRESENT
break
case 19
SetMusicTrack("JP/[Link]", 0, 103060)
SetMusicTrack("US/[Link]", 1, 136670)
[Link] = LPFRAME_GOODFUTURE
break
case 20
SetMusicTrack("JP/[Link]", 0, 1)
SetMusicTrack("US/[Link]", 1, 92324)
[Link] = LPFRAME_BADFUTURE
break
case 21
SetMusicTrack("JP/[Link]", 0, 146030)
SetMusicTrack("US/[Link]", 1, 1)
[Link] = LPFRAME_PRESENT
break
case 22
SetMusicTrack("JP/[Link]", 0, 1)
SetMusicTrack("US/[Link]", 1, 1)
[Link] = LPFRAME_GOODFUTURE
break
case 23
SetMusicTrack("JP/[Link]", 0, 1)
SetMusicTrack("US/[Link]", 1, 563962)
[Link] = LPFRAME_BADFUTURE
break
case 24
SetMusicTrack("JP/[Link]", 0, 1)
SetMusicTrack("US/[Link]", 1, 1)
[Link] = LPFRAME_PRESENT
break
case 25
SetMusicTrack("JP/[Link]", 0, 1)
SetMusicTrack("US/[Link]", 1, 117382)
[Link] = LPFRAME_PRESENT
break
case 26
SetMusicTrack("JP/[Link]", 0, 0)
SetMusicTrack("US/[Link]", 1, 0)
[Link] = LPFRAME_PRESENT
break
case 27
SetMusicTrack("JP/[Link]", 0, 0)
SetMusicTrack("US/[Link]", 1, 0)
[Link] = LPFRAME_PRESENT
break
case 28
SetMusicTrack("JP/[Link]", 0, 1)
SetMusicTrack("US/[Link]", 1, 196526)
[Link] = LPFRAME_PRESENT
break
case 29
SetMusicTrack("JP/[Link]", 0, 0)
SetMusicTrack("US/[Link]", 1, 0)
[Link] = LPFRAME_PRESENT
break
case 30
SetMusicTrack("JP/[Link]", 0, 0)
SetMusicTrack("US/[Link]", 1, 0)
[Link] = LPFRAME_PRESENT
break
case 31
SetMusicTrack("JP/[Link]", 0, 0)
SetMusicTrack("US/[Link]", 1, 0)
[Link] = LPFRAME_PRESENT
break
case 32
SetMusicTrack("JP/[Link]", 0, 1)
SetMusicTrack("US/[Link]", 1, 270972)
[Link] = LPFRAME_PRESENT
break
case 33
SetMusicTrack("JP/[Link]", 0, 100512)
SetMusicTrack("US/[Link]", 1, 117382)
[Link] = LPFRAME_PRESENT
break
end switch
PlayMusic([Link])
end function
sub ObjectMain
switch [Link]
case MENUCONTROL_SETUP
[Link] = MENUCONTROL_FADE_IN
[Link] = 384
SetScreenFade(0, 0, 0, 255)
PlayMusic([Link])
break
case MENUCONTROL_FADE_IN
if [Link] > 0
[Link] -= 8
else
[Link] = MENUCONTROL_IDLE
end if
SetScreenFade(0, 0, 0, [Link])
break
case MENUCONTROL_IDLE
// Previously Start, Origins change
if KeyPress[0].ButtonB == true
StopMusic()
[Link] = MENUCONTROL_EXIT
end if
if KeyPress[0].ButtonA == true
[Link] = MENUCONTROL_MUSIC_CONTROLS
[Link] = [Link]
[Link] += 96
[Link] <<= 16
[Link] = MUSICSELECTOR_STOP_MOVE_L
[Link] = 5
[Link] = PRIORITY_ACTIVE
Object.Button1Value = 4
Object.Button2Value = 5
Object.Button3Value = 6
end if
break
case MENUCONTROL_MUSIC_CONTROLS
if [Link] == MUSICSELECTOR_BLANK
if KeyPress[0].Left == true
[Link] = MUSICSELECTOR_MOVE_L
end if
if KeyPress[0].Right == true
[Link] = MUSICSELECTOR_MOVE_R
end if
if KeyPress[0].ButtonA == true
[Link] = MENUCONTROL_SET_MUSIC
StopMusic()
end if
// Previously ButtonB, Origins change
if KeyPress[0].Start == true
[Link] = MENUCONTROL_SET_MUSIC
StopMusic()
end if
if KeyPress[0].ButtonC == true
[Link] = MENUCONTROL_SET_MUSIC
StopMusic()
end if
end if
// Previously Start, Origins change
if KeyPress[0].ButtonB == true
StopMusic()
[Link] = MENUCONTROL_EXIT
end if
break
case MENUCONTROL_SET_MUSIC
if [Link] < 288
[Link] += 8
else
[Link] = [Link]
[Link] += 96
[Link] <<= 16
[Link] = MUSICSELECTOR_BLANK
[Link] = PRIORITY_BOUNDS
Object.Button1Value = 0
Object.Button2Value = 2
Object.Button3Value = 7
CallFunction(MenuControl_ChangeTrack)
[Link]++
end if
SetScreenFade(208, 255, 224, [Link])
break
case MENUCONTROL_TIMETRAVEL
if [Link] > 0
[Link] -= 8
else
[Link] = MENUCONTROL_IDLE
end if
SetScreenFade(208, 255, 224, [Link])
break
case MENUCONTROL_EXIT
if [Link] < 384
[Link] += 8
else
// Return to the Menu scene
[Link] = STAGE_P_MENU
LoadStage()
end if
SetScreenFade(0, 0, 0, [Link])
break
end switch
end sub
sub ObjectStartup
SetMusicTrack("JP/[Link]", 0, 1)
SetMusicTrack("US/[Link]", 1, 117382)
Object[0].Type = TypeName[Menu Control]
Object[0].DrawOrder = 1
Object[0].Priority = PRIORITY_ACTIVE
#platform: Use_Origins
if [Link] == RETRO_MOBILE
Object[34].DrawOrder = 5
Object[35].DrawOrder = 5
Object[36].DrawOrder = 5
Object[37].DrawOrder = 5
TempValue0 = [Link]
TempValue0 >>= 2
TempValue1 = TempValue0
TempValue1 >>= 1
Object[34].iXPos = TempValue1
TempValue1 += TempValue0
Object[35].iXPos = TempValue1
TempValue1 += TempValue0
Object[36].iXPos = TempValue1
TempValue1 += TempValue0
Object[37].iXPos = TempValue1
else
Object[34].Type = TypeName[Blank Object]
Object[35].Type = TypeName[Blank Object]
Object[36].Type = TypeName[Blank Object]
Object[37].Type = TypeName[Blank Object]
end if
#endplatform
#platform: Use_Standalone
#platform: Mobile
// Setup all the Touch Buttons for the player to tap
Object[34].DrawOrder = 5
Object[35].DrawOrder = 5
Object[36].DrawOrder = 5
Object[37].DrawOrder = 5
TempValue0 = [Link]
TempValue0 >>= 2
TempValue1 = TempValue0
TempValue1 >>= 1
Object[34].iXPos = TempValue1
TempValue1 += TempValue0
Object[35].iXPos = TempValue1
TempValue1 += TempValue0
Object[36].iXPos = TempValue1
TempValue1 += TempValue0
Object[37].iXPos = TempValue1
#endplatform
#endplatform
#platform: Use_Standalone
#platform: Standard
// Standard platforms don't need Touch Buttons since actual physical
buttons are available to the player
Object[34].Type = TypeName[Blank Object]
Object[35].Type = TypeName[Blank Object]
Object[36].Type = TypeName[Blank Object]
Object[37].Type = TypeName[Blank Object]
#endplatform
#endplatform
end sub
// ========================
// Editor Subs
// ========================
sub RSDKDraw
DrawSprite(0)
end sub
sub RSDKLoad
LoadSpriteSheet("Global/[Link]")
SpriteFrame(-16, -16, 32, 32, 1, 143) // #0 - "Script" Icon
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
end sub