0% found this document useful (0 votes)
12 views23 pages

Sonic CD Menu Button Script Guide

Teamomaryporfavorkasatekonmigojeje
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views23 pages

Sonic CD Menu Button Script Guide

Teamomaryporfavorkasatekonmigojeje
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

//----------------Sonic CD Menu Button Script-----------------//

//--------Scripted by Christian Whitehead 'The Taxman'--------//


//-------Unpacked By Rubberduckycooly's Script Unpacker-------//

// Aliases
#alias Object.Value0 : [Link]
#alias Object.Value1 : [Link]
#alias Object.Value2 : [Link]
#alias Object.Value3 : [Link]
#alias Object.Value4 : [Link]
#alias Object.Value5 : [Link]

// Object[1] is a blank object just to share values


#alias Object[1].Value1 : [Link]
#alias Object[1].Value2 : [Link]
#alias Object[1].Value3 : [Link]

// MenuHeading Aliases
#alias Object[33].State : [Link]
#alias Object[33].PropertyValue : [Link]

// Object[-1] and [+1] are MenuButton's


#alias Object[-1].State : [Link]
#alias Object[+1].State : [Link]

// MenuControl Aliases
#alias Object[0].State : [Link]
#alias Object[0].Value0 : [Link]
#alias Object[0].Value1 : [Link]
#alias Object[0].Value2 : [Link]
#alias Object[0].Value3 : [Link]
#alias Object[0].Value7 : [Link]

// MenuWindow Aliases
#alias Object[61].State : [Link]
#alias Object[61].XPos : [Link]
#alias Object[61].YPos : [Link]
#alias Object[61].Value1 : [Link]
#alias Object[61].Value2 : [Link]
#alias Object[61].Value3 : [Link]
#alias Object[61].Value4 : [Link]
#alias Object[61].Value5 : [Link]

// Object[62] is whatever next menu is this object going to be set into


#alias Object[62].InkEffect : [Link]
#alias Object[62].Alpha : [Link]

// States
#alias 0 : MENUBUTTON_DELAY
#alias 1 : MENUBUTTON_BUTTONS_IN
#alias 2 : MENUBUTTON_CONFIRM_SELECTION
#alias 3 : MENUBUTTON_MENU_SELECTED
#alias 4 : MENUBUTTON_BUTTONS_OUT
#alias 5 : MENUBUTTON_BLANK
#alias 6 : MENUBUTTON_BLANK2
#alias 7 : MENUBUTTON_RESET

// Menu Control States


#alias 2 : MENUCONTROL_CONTROLS
#alias 3 : MENUCONTROL_BLANK
#alias 4 : MENUCONTROL_ENTER_TIMEATTACK
#alias 5 : MENUCONTROL_ENTER_DEMO
#alias 7 : MENUCONTROL_ENTER_TROPHIES
#alias 8 : MENUCONTROL_ENTER_LEADERBOARDS

// Menu Window States


#alias 5 : MENUWINDOW_SOUNDTRACK_EXPAND

// Menu Heading States


#alias 0 : MENUHEADING_IDLE
#alias 1 : MENUHEADING_LEAVE_SCREEN
#alias 2 : MENUHEADING_ENTER_SCREEN

// Menu Heading Property Values


#alias 5 : MAINMENU_HEADER
#alias 6 : SAVESELECT_HEADER
#alias 7 : HELP&OPTIONS_HEADER
#alias 8 : EXTRAS_HEADER
#alias 9 : SOUNDTRACK_HEADER
#alias 10 : STAGESELECT_HEADER

// Menus
#alias 1 : Menu_LoadSaveMenu
#alias 2 : Menu_TimeAttack
#alias 3 : Menu_Achievements
#alias 4 : Menu_LeaderBoards
#alias 5 : Menu_Help&Options
#alias 6 : Menu_Extras
#alias 7 : Menu_UnlockFullGame
#alias 8 : Menu_Store
#alias 9 : Menu_Exit
#alias 10 : Menu_Soundtrack
#alias 11 : Menu_MoreGames

// Ink Effects
#alias 2 : INK_ALPHA

// Priority
#alias 1 : PRIORITY_ACTIVE

// Game Mode Aliases


#alias 0 : MODE_NOSAVE

// Languages
#alias 0 : LANG_ENGLISH
#alias 1 : LANG_FRENCH
#alias 2 : LANG_ITALIAN
#alias 3 : LANG_DEUTSCH
#alias 4 : LANG_SPANISH
#alias 5 : LANG_JAPANESE

// Global SFX
#alias 27 : SFX_G_SELECT

// Engine & Callbacks


#alias 3 : ENGINE_EXITGAME
#alias 5 : CALLBACK_RETURNSTORE_SELECTED
#alias 7 : CALLBACK_EXIT_SELECTED
#alias 8 : CALLBACK_BUY_FULL_GAME_SELECTED
#alias 14 : CALLBACK_FULL_VERSION_ONLY
#alias 16 : CALLBACK_MOREGAMES

// Online Menus
#alias 0 : ONLINEMENU_ACHIEVEMENTS
#alias 1 : ONLINEMENU_LEADERBOARDS

// [Link] Aliases
#alias 0 : MAINMENUMODE_NONE // Starts with this, but gets swapped on
MenuButton

// Function declarations
#function MenuButton_SetupMenuWindow

function MenuButton_SetupMenuWindow
ResetObjectEntity(61, TypeName[Menu Window], 0, [Link], [Link])
[Link] += 0x480000
[Link] = 144
[Link] = 21
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
end function

sub ObjectMain
[Link] = [Link]
[Link]--
[Link] *= 60
[Link] += [Link]

TempValue0 = [Link]
TempValue0 -= 160

[Link] = [Link]
[Link] *= 54
[Link] /= 60
[Link] -= 16
[Link] += TempValue0

switch [Link]
case MENUBUTTON_DELAY
if [Link] < 60
[Link]++
else
[Link] = 0
[Link]++
end if
break

case MENUBUTTON_BUTTONS_IN
TempValue0 = [Link]
TempValue0 <<= 16
TempValue0 -= [Link]
TempValue0 >>= 4
[Link] += TempValue0
TempValue0 = [Link]
TempValue0 <<= 16
TempValue0 -= [Link]
TempValue0 >>= 4
[Link] += TempValue0

if [Link] < 80
[Link]++
else
[Link] = 0
[Link]++
end if
break

case MENUBUTTON_CONFIRM_SELECTION
[Link] = [Link]
[Link] <<= 16

[Link] = [Link]
[Link] <<= 16

// Originally if [Link] == false


// Adapted the code to ensure compatibility with Blit Data files
#platform: Standard
CheckResult = false
#endplatform

#platform: Mobile
CheckEqual([Link], false)
#endplatform

#platform: Use_Origins
CheckEqual([Link], false)
#endplatform

if CheckResult == true
TempValue0 = [Link]
TempValue0 -= 16
TempValue1 = [Link]
TempValue1 += 176
TempValue2 = [Link]
TempValue2 -= 20
TempValue3 = [Link]
TempValue3 += 20
CheckTouchRect(TempValue0, TempValue2, TempValue1, TempValue3)
if CheckResult > -1
TempValue0 = [Link]
TempValue0 >>= 2
if TempValue0 == 0
if [Link] == 0
[Link] = [Link]
end if
end if
else
CheckTouchRect(0, 0, [Link], [Link])
if CheckResult < 0
if [Link] == [Link]
if [Link] == 0
PlaySfx(SFX_G_SELECT, false)
[Link] = MENUCONTROL_BLANK
switch [Link]
case Menu_LoadSaveMenu
case Menu_Help&Options
case Menu_Extras
case Menu_Soundtrack //All of
this is MenuButton
Object[34].State =
MENUBUTTON_BUTTONS_OUT
Object[34].Timer = 0
Object[35].State =
MENUBUTTON_BUTTONS_OUT
Object[35].Timer = 0
Object[36].State =
MENUBUTTON_BUTTONS_OUT
Object[36].Timer = 0
Object[37].State =
MENUBUTTON_BUTTONS_OUT
Object[37].Timer = 0
Object[38].State =
MENUBUTTON_BUTTONS_OUT
Object[38].Timer = 0
Object[39].State =
MENUBUTTON_BUTTONS_OUT
Object[39].Timer = 0
Object[40].State =
MENUBUTTON_BUTTONS_OUT
Object[40].Timer = 0
Object[41].State =
MENUBUTTON_BUTTONS_OUT
Object[41].Timer = 0
Object[42].State =
MENUBUTTON_BUTTONS_OUT
Object[42].Timer = 0
Object[43].State =
MENUBUTTON_BUTTONS_OUT
Object[43].Timer = 0
break

case Menu_TimeAttack
if [Link] == false
StopMusic()
Object[34].State =
MENUBUTTON_BUTTONS_OUT
Object[34].Timer = 0
Object[35].State =
MENUBUTTON_BUTTONS_OUT
Object[35].Timer = 0
Object[36].State =
MENUBUTTON_BUTTONS_OUT
Object[36].Timer = 0
Object[37].State =
MENUBUTTON_BUTTONS_OUT
Object[37].Timer = 0
Object[38].State =
MENUBUTTON_BUTTONS_OUT
Object[38].Timer = 0
Object[39].State =
MENUBUTTON_BUTTONS_OUT
Object[39].Timer = 0
Object[40].State =
MENUBUTTON_BUTTONS_OUT
Object[40].Timer = 0
Object[41].State =
MENUBUTTON_BUTTONS_OUT
Object[41].Timer = 0
Object[42].State =
MENUBUTTON_BUTTONS_OUT
Object[42].Timer = 0
Object[43].State =
MENUBUTTON_BUTTONS_OUT
Object[43].Timer = 0
end if
break

end switch
[Link] = MENUBUTTON_MENU_SELECTED
end if
end if
else
if [Link] == [Link]
[Link] = 0
end if
end if
end if
else
if [Link] == [Link]
CheckResult = false
if KeyPress[0].Start == true
CheckResult = true
end if

if KeyPress[0].ButtonA == true
CheckResult = true
end if

if [Link] == Menu_Achievements
if [Link] == false
CheckResult = false
end if
end if

if CheckResult == true
PlaySfx(SFX_G_SELECT, false)
if [Link] == true
if [Link] != RETRO_ANDROID
if [Link] ==
Menu_LoadSaveMenu
StopMusic()
end if
end if
else
if [Link] == Menu_TimeAttack
StopMusic()
end if
end if

[Link] = MENUCONTROL_BLANK
switch [Link]
case Menu_LoadSaveMenu
case Menu_Help&Options
case Menu_Extras
case Menu_Soundtrack
Object[34].State = MENUBUTTON_BUTTONS_OUT
Object[34].Timer = 0
Object[35].State = MENUBUTTON_BUTTONS_OUT
Object[35].Timer = 0
Object[36].State = MENUBUTTON_BUTTONS_OUT
Object[36].Timer = 0
Object[37].State = MENUBUTTON_BUTTONS_OUT
Object[37].Timer = 0
Object[38].State = MENUBUTTON_BUTTONS_OUT
Object[38].Timer = 0
Object[39].State = MENUBUTTON_BUTTONS_OUT
Object[39].Timer = 0
Object[40].State = MENUBUTTON_BUTTONS_OUT
Object[40].Timer = 0
Object[41].State = MENUBUTTON_BUTTONS_OUT
Object[41].Timer = 0
Object[42].State = MENUBUTTON_BUTTONS_OUT
Object[42].Timer = 0
Object[43].State = MENUBUTTON_BUTTONS_OUT
Object[43].Timer = 0
break

case Menu_TimeAttack
if [Link] == false
Object[34].State = MENUBUTTON_BUTTONS_OUT
Object[34].Timer = 0
Object[35].State = MENUBUTTON_BUTTONS_OUT
Object[35].Timer = 0
Object[36].State = MENUBUTTON_BUTTONS_OUT
Object[36].Timer = 0
Object[37].State = MENUBUTTON_BUTTONS_OUT
Object[37].Timer = 0
Object[38].State = MENUBUTTON_BUTTONS_OUT
Object[38].Timer = 0
Object[39].State = MENUBUTTON_BUTTONS_OUT
Object[39].Timer = 0
Object[40].State = MENUBUTTON_BUTTONS_OUT
Object[40].Timer = 0
Object[41].State = MENUBUTTON_BUTTONS_OUT
Object[41].Timer = 0
Object[42].State = MENUBUTTON_BUTTONS_OUT
Object[42].Timer = 0
Object[43].State = MENUBUTTON_BUTTONS_OUT
Object[43].Timer = 0
end if
break

end switch
[Link] = MENUBUTTON_MENU_SELECTED
end if
end if
end if

if [Link] == RETRO_WP7
if KeyPress[0].ButtonB == true
EngineCallback(CALLBACK_EXIT_SELECTED)
[Link] = MENUBUTTON_CONFIRM_SELECTION

[Link] = MENUCONTROL_CONTROLS
[Link] = 0
end if
end if
break

case MENUBUTTON_MENU_SELECTED
if [Link] < 30
[Link]++
else
[Link] = 0
switch [Link]
case Menu_LoadSaveMenu
if [Link] == false
[Link] = MENUHEADING_LEAVE_SCREEN
[Link] = SAVESELECT_HEADER

CallFunction(MenuButton_SetupMenuWindow)
ResetObjectEntity(62, TypeName[Load Save Menu], 0, 0,
0)

[Link] = INK_ALPHA
[Link] = 0

ResetObjectEntity(63, TypeName[Blank Object], 0, 0,


0)
ResetObjectEntity(64, TypeName[Blank Object], 0, 0,
0)
ResetObjectEntity(65, TypeName[Blank Object], 0, 0,
0)
ResetObjectEntity(66, TypeName[Blank Object], 0, 0,
0)
[Link] = TypeName[Blank Object]
ReadSaveRAM()
else
#platform: Standard
[Link] = MENUBUTTON_BLANK
[Link] = MENUCONTROL_ENTER_DEMO
[Link] = 0

[Link] = MODE_NOSAVE
[Link] = 0
[Link] = 3
[Link] = 50000
Transporter_Destroyed = false
MetalSonic_Destroyed = false
Good_Future = false
#endplatform

#platform: Mobile

[Link] = MENUHEADING_LEAVE_SCREEN
[Link] = STAGESELECT_HEADER

CallFunction(MenuButton_SetupMenuWindow)
[Link] = MENUWINDOW_SOUNDTRACK_EXPAND
ResetObjectEntity(62, TypeName[Demo Menu], 0, 0, 0)

[Link] = INK_ALPHA
[Link] = 0

ResetObjectEntity(63, TypeName[Blank Object], 0, 0,


0)
ResetObjectEntity(64, TypeName[Blank Object], 0, 0,
0)
ResetObjectEntity(65, TypeName[Blank Object], 0, 0,
0)
ResetObjectEntity(66, TypeName[Blank Object], 0, 0,
0)
[Link] = TypeName[Blank Object]
ReadSaveRAM()
#endplatform
end if
break

case Menu_TimeAttack
if [Link] == false
[Link] = MENUBUTTON_BLANK

[Link] = MENUCONTROL_ENTER_TIMEATTACK
[Link] = 0
else
[Link] = MENUBUTTON_CONFIRM_SELECTION

[Link] = MENUCONTROL_CONTROLS
EngineCallback(CALLBACK_FULL_VERSION_ONLY)
#platform: Mobile
[Link] = 0
#endplatform
end if
break

case Menu_Achievements
if [Link] != RETRO_WP7
LoadOnlineMenu(ONLINEMENU_ACHIEVEMENTS)
[Link] = MENUBUTTON_CONFIRM_SELECTION

[Link] = MENUCONTROL_CONTROLS
#platform: Mobile
[Link] = 0
#endplatform
else
[Link] = MENUBUTTON_BLANK

[Link] = MENUCONTROL_ENTER_TROPHIES
[Link] = 0
end if
break

case Menu_LeaderBoards
if [Link]!=RETRO_WP7
LoadOnlineMenu(ONLINEMENU_LEADERBOARDS)
[Link] = MENUBUTTON_CONFIRM_SELECTION
[Link] = MENUCONTROL_CONTROLS
#platform: Mobile
[Link] = 0
#endplatform
else
if [Link] == false
[Link] = MENUBUTTON_BLANK

[Link] =
MENUCONTROL_ENTER_LEADERBOARDS
[Link] = 0
else
[Link] = MENUBUTTON_CONFIRM_SELECTION

[Link] = MENUCONTROL_CONTROLS
EngineCallback(CALLBACK_FULL_VERSION_ONLY)
end if
end if
break

case Menu_Help&Options
[Link] = MENUHEADING_LEAVE_SCREEN
[Link] = HELP&OPTIONS_HEADER

CallFunction(MenuButton_SetupMenuWindow)
#platform: Use_Standalone
#platform: Standard
ResetObjectEntity(62, TypeName[Options Menu C], 0, 0, 0)
#endplatform

#platform: Mobile
if [Link] == true
ResetObjectEntity(62, TypeName[Options Menu H], 0, 0,
0)
else
ResetObjectEntity(62, TypeName[Options Menu], 0, 0,
0)
end if
#endplatform
#endplatform

#platform: Use_Origins
if [Link] == true
ResetObjectEntity(62, TypeName[Options Menu H], 0, 0,
0)
else
ResetObjectEntity(62, TypeName[Options Menu], 0, 0,
0)
end if
#endplatform

[Link] = INK_ALPHA
[Link] = 0

ResetObjectEntity(63, TypeName[Blank Object], 0, 0, 0)


ResetObjectEntity(64, TypeName[Blank Object], 0, 0, 0)
ResetObjectEntity(65, TypeName[Blank Object], 0, 0, 0)
ResetObjectEntity(66, TypeName[Blank Object], 0, 0, 0)
[Link] = TypeName[Blank Object]
break

case Menu_Extras
[Link] = MENUHEADING_LEAVE_SCREEN
[Link] = EXTRAS_HEADER

CallFunction(MenuButton_SetupMenuWindow)
ResetObjectEntity(62, TypeName[Extras Menu], 0, 0, 0)

[Link] = INK_ALPHA
[Link] = 0

ResetObjectEntity(63, TypeName[Blank Object], 0, 0, 0)


ResetObjectEntity(64, TypeName[Blank Object], 0, 0, 0)
ResetObjectEntity(65, TypeName[Blank Object], 0, 0, 0)
ResetObjectEntity(66, TypeName[Blank Object], 0, 0, 0)
[Link] = TypeName[Blank Object]
break

case Menu_UnlockFullGame
EngineCallback(CALLBACK_BUY_FULL_GAME_SELECTED)
[Link] = MENUBUTTON_CONFIRM_SELECTION

[Link] = MENUCONTROL_CONTROLS
#platform: Mobile
[Link] = 0
#endplatform
break

case Menu_Store
EngineCallback(CALLBACK_RETURNSTORE_SELECTED)
[Link] = MENUBUTTON_CONFIRM_SELECTION

[Link] = MENUCONTROL_CONTROLS
#platform: Mobile
[Link] = 0
#endplatform
break

case Menu_Exit
EngineCallback(CALLBACK_EXIT_SELECTED)
#platform: Use_Decomp
[Link] = ENGINE_EXITGAME
#endplatform
[Link] = MENUBUTTON_CONFIRM_SELECTION

[Link] = MENUCONTROL_CONTROLS
#platform: Mobile
[Link] = 0
#endplatform
break

case Menu_Soundtrack
[Link] = MENUHEADING_LEAVE_SCREEN
[Link] = SOUNDTRACK_HEADER

CallFunction(MenuButton_SetupMenuWindow)
[Link] = MENUWINDOW_SOUNDTRACK_EXPAND
ResetObjectEntity(62, TypeName[Soundtrack Menu], 0, 0, 0)
[Link] = INK_ALPHA
[Link] = 0

ResetObjectEntity(63, TypeName[Blank Object], 0, 0, 0)


ResetObjectEntity(64, TypeName[Blank Object], 0, 0, 0)
ResetObjectEntity(65, TypeName[Blank Object], 0, 0, 0)
ResetObjectEntity(66, TypeName[Blank Object], 0, 0, 0)
[Link] = TypeName[Blank Object]
break

#platform: Mobile
case Menu_MoreGames
EngineCallback(CALLBACK_MOREGAMES)
[Link] = MENUBUTTON_CONFIRM_SELECTION

[Link] = MENUCONTROL_CONTROLS
[Link] = 0
break
#endplatform
end switch
end if
break

case MENUBUTTON_BUTTONS_OUT
TempValue0 = [Link]
TempValue0 -= [Link]
TempValue0 >>= 4
[Link] += TempValue0

TempValue0 = [Link]
TempValue0 -= [Link]
TempValue0 >>= 4
[Link] += TempValue0

if [Link] < 80
[Link]++
else
[Link] = 0
[Link] = MENUBUTTON_BLANK2
end if
break

case MENUBUTTON_BLANK
case MENUBUTTON_BLANK2
//Nothing happens here
break

case MENUBUTTON_RESET //Used by MenuWindow


if [Link] == Menu_Extras
if [Link] == MENUBUTTON_CONFIRM_SELECTION
[Link] = MENUBUTTON_CONFIRM_SELECTION

[Link] = MENUCONTROL_CONTROLS
#platform: Mobile
[Link] = 0
#endplatform
end if
else
if [Link] == MENUBUTTON_CONFIRM_SELECTION
[Link] = MENUBUTTON_CONFIRM_SELECTION

[Link] = MENUCONTROL_CONTROLS
#platform: Mobile
[Link] = 0
#endplatform
end if
end if
break

end switch
end sub

sub ObjectDraw
DrawSprite(0)
switch [Link]
case MENUBUTTON_DELAY
case MENUBUTTON_BUTTONS_IN
case MENUBUTTON_CONFIRM_SELECTION
case MENUBUTTON_BUTTONS_OUT
case MENUBUTTON_BLANK
case MENUBUTTON_RESET
if [Link] == [Link]
TempValue0 = [Link]
TempValue0 += 11
DrawSprite(TempValue0)
else
DrawSprite([Link])
end if
break

case MENUBUTTON_MENU_SELECTED
TempValue0 = [Link]
TempValue0 &= 3
TempValue0 >>= 1
if TempValue0 == 0
TempValue0 = [Link]
TempValue0 += 11

DrawSprite(TempValue0)
end if
break

end switch
end sub

sub ObjectStartup
switch [Link]
case LANG_ENGLISH
LoadSpriteSheet("Menu/MenuGfx2_EN.gif")
break
case LANG_FRENCH
LoadSpriteSheet("Menu/MenuGfx2_FR.gif")
break
case LANG_ITALIAN
LoadSpriteSheet("Menu/MenuGfx2_IT.gif")
break
case LANG_DEUTSCH
LoadSpriteSheet("Menu/MenuGfx2_DE.gif")
break
case LANG_SPANISH
LoadSpriteSheet("Menu/MenuGfx2_ES.gif")
break
case LANG_JAPANESE
LoadSpriteSheet("Menu/MenuGfx2_JP.gif")
break
end switch

[Link] = 1
ArrayPos0 = 32
while ArrayPos0 < 1056
if Object[ArrayPos0].Type == TypeName[Menu Button]
Object[ArrayPos0].Priority = PRIORITY_ACTIVE
Object[ArrayPos0].ButtonLeaveXPos = Object[ArrayPos0].XPos
Object[ArrayPos0].ButtonLeaveYPos =
Object[ArrayPos0].ButtonLeaveYPos
end if
ArrayPos0++
loop

switch [Link]
case RETRO_WIN
case RETRO_OSX
if [Link] == true
Object[34].PropertyValue = Menu_LoadSaveMenu
Object[35].PropertyValue = Menu_TimeAttack
Object[36].PropertyValue = Menu_Help&Options
Object[37].PropertyValue = Menu_Soundtrack
Object[38].PropertyValue = Menu_Extras
Object[39].PropertyValue = Menu_Exit
[Link] = 6
else
if [Link] == true
Object[34].PropertyValue = Menu_LoadSaveMenu
Object[35].PropertyValue = Menu_TimeAttack
Object[36].PropertyValue = Menu_Achievements
Object[37].PropertyValue = Menu_LeaderBoards
Object[38].PropertyValue = Menu_Help&Options
Object[39].PropertyValue = Menu_Soundtrack
Object[40].PropertyValue = Menu_UnlockFullGame
Object[41].PropertyValue = Menu_Exit
[Link] = 8
else
Object[34].PropertyValue = Menu_LoadSaveMenu
Object[35].PropertyValue = Menu_TimeAttack
Object[36].PropertyValue = Menu_Achievements
Object[37].PropertyValue = Menu_LeaderBoards
Object[38].PropertyValue = Menu_Help&Options
Object[39].PropertyValue = Menu_Soundtrack
Object[40].PropertyValue = Menu_Extras
Object[41].PropertyValue = Menu_Exit
[Link] = 8
end if
end if
break

case RETRO_XBOX_360
if [Link] == true
Object[34].PropertyValue = Menu_LoadSaveMenu
Object[35].PropertyValue = Menu_TimeAttack
Object[36].PropertyValue = Menu_Achievements
Object[37].PropertyValue = Menu_LeaderBoards
Object[38].PropertyValue = Menu_Help&Options
Object[39].PropertyValue = Menu_Soundtrack
Object[40].PropertyValue = Menu_UnlockFullGame
Object[41].PropertyValue = Menu_Exit
[Link] = 8
else
Object[34].PropertyValue = Menu_LoadSaveMenu
Object[35].PropertyValue = Menu_TimeAttack
Object[36].PropertyValue = Menu_Achievements
Object[37].PropertyValue = Menu_LeaderBoards
Object[38].PropertyValue = Menu_Help&Options
Object[39].PropertyValue = Menu_Soundtrack
Object[40].PropertyValue = Menu_Extras
Object[41].PropertyValue = Menu_Exit
[Link] = 8
end if
break

case RETRO_PS3
if [Link] == true
Object[34].PropertyValue = Menu_LoadSaveMenu
Object[35].PropertyValue = Menu_TimeAttack
Object[36].PropertyValue = Menu_Achievements
Object[37].PropertyValue = Menu_LeaderBoards
Object[38].PropertyValue = Menu_Help&Options
Object[39].PropertyValue = Menu_Soundtrack
Object[40].PropertyValue = Menu_UnlockFullGame
[Link] = 7
else
Object[34].PropertyValue = Menu_LoadSaveMenu
Object[35].PropertyValue = Menu_TimeAttack
Object[36].PropertyValue = Menu_Achievements
Object[37].PropertyValue = Menu_LeaderBoards
Object[38].PropertyValue = Menu_Help&Options
Object[39].PropertyValue = Menu_Soundtrack
Object[40].PropertyValue = Menu_Extras
[Link] = 7
end if
break

case RETRO_ANDROID
if [Link] == true
Object[34].PropertyValue = Menu_LoadSaveMenu
Object[35].PropertyValue = Menu_Help&Options
Object[36].PropertyValue = Menu_Soundtrack
Object[37].PropertyValue = Menu_UnlockFullGame
Object[38].PropertyValue = Menu_Exit
[Link] = 5
else
if [Link] == true
Object[34].PropertyValue = Menu_LoadSaveMenu
Object[35].PropertyValue = Menu_TimeAttack
Object[36].PropertyValue = Menu_LeaderBoards
Object[37].PropertyValue = Menu_Achievements
Object[38].PropertyValue = Menu_Help&Options
Object[39].PropertyValue = Menu_Soundtrack
Object[40].PropertyValue = Menu_Extras
Object[41].PropertyValue = Menu_Exit
[Link] = 8
else
Object[34].PropertyValue = Menu_LoadSaveMenu
Object[35].PropertyValue = Menu_TimeAttack
Object[36].PropertyValue = Menu_Help&Options
Object[37].PropertyValue = Menu_MoreGames
Object[38].PropertyValue = Menu_Soundtrack
Object[39].PropertyValue = Menu_Extras
Object[40].PropertyValue = Menu_Exit
[Link] = 7
Object[37].PropertyValue = Menu_Soundtrack
Object[38].PropertyValue = Menu_Extras
Object[39].PropertyValue = Menu_Exit
[Link] = 6
end if
end if
break

case RETRO_iOS
if [Link] == true
Object[34].PropertyValue = Menu_LoadSaveMenu
Object[35].PropertyValue = Menu_TimeAttack
Object[36].PropertyValue = Menu_LeaderBoards
Object[37].PropertyValue = Menu_Help&Options
Object[38].PropertyValue = Menu_Soundtrack
Object[39].PropertyValue = Menu_Extras
[Link] = 6
else
Object[34].PropertyValue = Menu_LoadSaveMenu
Object[35].PropertyValue = Menu_TimeAttack
Object[36].PropertyValue = Menu_Help&Options
Object[37].PropertyValue = Menu_Soundtrack
Object[38].PropertyValue = Menu_Extras
[Link] = 5
end if
break

case RETRO_WP7
if [Link] == true
Object[34].PropertyValue = Menu_LoadSaveMenu
Object[35].PropertyValue = Menu_Help&Options
Object[36].PropertyValue = Menu_Soundtrack
Object[37].PropertyValue = Menu_MoreGames
Object[38].PropertyValue = Menu_Exit
[Link] = 5
else
if [Link] == true
Object[34].PropertyValue = Menu_LoadSaveMenu
Object[35].PropertyValue = Menu_TimeAttack
Object[36].PropertyValue = Menu_LeaderBoards
Object[37].PropertyValue = Menu_Achievements
Object[38].PropertyValue = Menu_Help&Options
Object[39].PropertyValue = Menu_Soundtrack
Object[40].PropertyValue = Menu_Extras
Object[41].PropertyValue = Menu_Exit
[Link] = 8
else
Object[34].PropertyValue = Menu_LoadSaveMenu
Object[35].PropertyValue = Menu_TimeAttack
Object[36].PropertyValue = Menu_Help&Options
Object[37].PropertyValue = Menu_MoreGames
Object[38].PropertyValue = Menu_Soundtrack
Object[39].PropertyValue = Menu_Extras
Object[40].PropertyValue = Menu_Exit
[Link] = 7
end if
end if
break

end switch

ArrayPos0 = 34
TempValue0 = 0
while TempValue0 < [Link]
Object[ArrayPos0].ButtonYPos = TempValue0
Object[ArrayPos0].ButtonYPos++
ArrayPos0++
TempValue0++
loop

while TempValue0 < 9


Object[ArrayPos0].Type = TypeName[Blank Object]
ArrayPos0++
TempValue0++
loop

[Link] = [Link]
[Link] *= -30
[Link] <<= 8
SpriteFrame(0, -10, 144, 21, 259, 71) // #0 - Button
TempValue0 = 0
TempValue1 = 18
// (#1 - #2) - Start Game, Time Attack
while TempValue0 < 2
SpriteFrame(19, -7, 128, 16, 1, TempValue1)
TempValue1 += 17
TempValue0++
loop
// #3 - Achievements/ Trophies
switch [Link]
case RETRO_WIN
case RETRO_ANDROID
switch [Link]
case LANG_ENGLISH
case LANG_FRENCH
case LANG_SPANISH
case LANG_JAPANESE
SpriteFrame(19, -7, 128, 16, 1, TempValue1)
break

case LANG_ITALIAN
case LANG_DEUTSCH
SpriteFrame(19, -7, 128, 16, 1, 770)
break

end switch
break

case RETRO_PS3
SpriteFrame(19, -7, 128, 16, 1, 513)
break

case RETRO_XBOX_360
case RETRO_iOS
case RETRO_ANDROID
case RETRO_WP7
SpriteFrame(19, -7, 128, 16, 1, TempValue1)
break

end switch

TempValue1 += 17
TempValue0++
// #4 - Leaderboards
if [Link] == false
SpriteFrame(19, -7, 128, 16, 130, 460)
else
SpriteFrame(19, -7, 128, 16, 1, TempValue1)
end if
TempValue1 += 17
TempValue0++
// (#5 - #6) - Help & Options, Extras
while TempValue0 < 6
SpriteFrame(19, -7, 128, 16, 1, TempValue1)
TempValue1 += 17
TempValue0++
loop
TempValue0 = 0
TempValue1 = 547
// (#7 - #10) - Remove Ads(Mobile)/Unlock Full Game(Console), Unlock Full
Game(Mobile)/Return to Arcade(Xbox), Exit Game, Soundtrack
while TempValue0 < 4
SpriteFrame(19, -7, 128, 16, 1, TempValue1)
TempValue1 += 17
TempValue0++
loop

SpriteFrame(19, -7, 128, 16, 162, 649) // #11 - More Games


// Highlight Text
TempValue0 = 0
TempValue1 = 18
// (#11 - #12 Standard, #12 - #13 Mobile) - Start Game, Time Attack
while TempValue0 < 2
SpriteFrame(19, -7, 128, 16, 130, TempValue1)
TempValue1 += 17
TempValue0++
loop

if [Link]==RETRO_PS3
SpriteFrame(19,-7,128,16,130,513)
else
if [Link]!=RETRO_IOS
SpriteFrame(19,-7,128,16,130,TempValue1)
else
SpriteFrame(19,-7,128,16,291,632)
end if
end if

TempValue1 += 17
TempValue0++
// (#14 - #16 Standard, #15 - #17 Mobile) - Leaderboards, Help & Options,
Extras
while TempValue0 < 6
SpriteFrame(19, -7, 128, 16, 130, TempValue1)
TempValue1 += 17
TempValue0++
loop
TempValue0 = 0
TempValue1 = 547
// (#17 - #20 Standard, #18 - #21 Mobile) - Remove Ads(Mobile)/Unlock Full
Game(Console), Unlock Full Game(Mobile)/Return to Arcade(Xbox), Exit Game,
Soundtrack
while TempValue0 < 4
SpriteFrame(19, -7, 128, 16, 130, TempValue1)
TempValue1 += 17
TempValue0++
loop

SpriteFrame(19, -7, 128, 16, 162, 666) // #22 - More Games

#platform: Use_Origins
if [Link] != MAINMENUMODE_NONE
Object[34].State = MENUBUTTON_BUTTONS_OUT
Object[34].Timer = 0
Object[35].State = MENUBUTTON_BUTTONS_OUT
Object[35].Timer = 0
Object[36].State = MENUBUTTON_BUTTONS_OUT
Object[36].Timer = 0
Object[37].State = MENUBUTTON_BUTTONS_OUT
Object[37].Timer = 0
Object[38].State = MENUBUTTON_BUTTONS_OUT
Object[38].Timer = 0
Object[39].State = MENUBUTTON_BUTTONS_OUT
Object[39].Timer = 0
Object[40].State = MENUBUTTON_BUTTONS_OUT
Object[40].Timer = 0
Object[41].State = MENUBUTTON_BUTTONS_OUT
Object[41].Timer = 0
Object[42].State = MENUBUTTON_BUTTONS_OUT
Object[42].Timer = 0
Object[43].State = MENUBUTTON_BUTTONS_OUT
Object[43].Timer = 0

if [Link] == MAINMENUMODE_VISUALMODE
[Link] = MENUHEADING_IDLE
[Link] = EXTRAS_HEADER

CallFunction(MenuButton_SetupMenuWindow)
ResetObjectEntity(62, TypeName[ExtrasMenu], 0, 0, 0)
[Link] = INK_ALPHA
[Link] = 0

ResetObjectEntity(63, TypeName[Blank Object], 0, 0, 0)


ResetObjectEntity(64, TypeName[Blank Object], 0, 0, 0)
ResetObjectEntity(65, TypeName[Blank Object], 0, 0, 0)
ResetObjectEntity(66, TypeName[Blank Object], 0, 0, 0)
[Link] = TypeName[Blank Object]
else
if [Link] == MAINMENUMODE_SOUNDTRACK
[Link] = MENUHEADING_IDLE
[Link] = SOUNDTRACK_HEADER

CallFunction(MenuButton_SetupMenuWindow)
[Link] = MENUWINDOW_SOUNDTRACK_EXPAND
ResetObjectEntity(62,TypeName[Soundtrack Menu], 0, 0, 0)

[Link] = INK_ALPHA
[Link] = 0

ResetObjectEntity(63, TypeName[Blank Object], 0, 0, 0)


ResetObjectEntity(64, TypeName[Blank Object], 0, 0, 0)
ResetObjectEntity(65, TypeName[Blank Object], 0, 0, 0)
ResetObjectEntity(66, TypeName[Blank Object], 0, 0, 0)
[Link] = TypeName[Blank Object]
else
if [Link] == MAINMENUMODE_CHARASELECT
[Link] = MENUHEADING_IDLE
[Link] = SAVESELECT_HEADER

CallFunction(MenuButton_SetupMenuWindow)
ResetObjectEntity(62,TypeName[Load Save Menu], 0, 0,
0)

[Link] = INK_ALPHA
[Link] = 0

ResetObjectEntity(63, TypeName[Blank Object], 0, 0,


0)
ResetObjectEntity(64, TypeName[Blank Object], 0, 0,
0)
ResetObjectEntity(65, TypeName[Blank Object], 0, 0,
0)
ResetObjectEntity(66, TypeName[Blank Object], 0, 0,
0)
[Link] = TypeName[Blank Object]
else
if [Link] == MAINMENUMODE_HELPOPTION
[Link] = MENUHEADING_LEAVE_SCREEN
[Link] = HELP&OPTIONS_HEADER

CallFunction(MenuButton_SetupMenuWindow)
if [Link] == true
ResetObjectEntity(62,TypeName[Options
Menu H], 0, 0, 0)
else
ResetObjectEntity(62,TypeName[Options
Menu], 0, 0, 0)
end if
[Link] = INK_ALPHA
[Link] = 0

ResetObjectEntity(63, TypeName[Blank Object],


0, 0, 0)
ResetObjectEntity(64, TypeName[Blank Object],
0, 0, 0)
ResetObjectEntity(65, TypeName[Blank Object],
0, 0, 0)
ResetObjectEntity(66, TypeName[Blank Object],
0, 0, 0)
[Link] = TypeName[Blank Object]
else
if [Link] == MAINMENUMODE_EXTRAS
[Link] =
MENUHEADING_LEAVE_SCREEN
[Link] = EXTRAS_HEADER

CallFunction(MenuButton_SetupMenuWindow)
ResetObjectEntity(62,TypeName[Extras
Menu], 0, 0, 0)

[Link] = INK_ALPHA
[Link] = 0

ResetObjectEntity(63, TypeName[Blank
Object], 0, 0, 0)
ResetObjectEntity(64, TypeName[Blank
Object], 0, 0, 0)
ResetObjectEntity(65, TypeName[Blank
Object], 0, 0, 0)
ResetObjectEntity(66, TypeName[Blank
Object], 0, 0, 0)
[Link] = TypeName[Blank Object]
else
if [Link] ==
MAINMENUMODE_SETTINGS
[Link] =
MENUHEADING_LEAVE_SCREEN
[Link] =
HELP&OPTIONS_HEADER

CallFunction(MenuButton_SetupMenuWindow)

ResetObjectEntity(62,TypeName[Options Menu], 0, 0, 0)

[Link] =
INK_ALPHA
[Link] = 0

ResetObjectEntity(63,
TypeName[Blank Object], 0, 0, 0)
ResetObjectEntity(64,
TypeName[Blank Object], 0, 0, 0)
ResetObjectEntity(65,
TypeName[Blank Object], 0, 0, 0)
ResetObjectEntity(66,
TypeName[Blank Object], 0, 0, 0)
[Link] = TypeName[Blank
Object]
end if
end if
end if
end if
end if
end if
end if

#endplatform

end sub

// ========================
// Editor Subs
// ========================

sub RSDKEdit
if [Link] == true
switch [Link]
case EDIT_VAR_PROPVAL // Property Value
CheckResult = [Link]
break
case 0 // Type
CheckResult = [Link]
break
end switch
else
switch [Link]
case EDIT_VAR_PROPVAL // Property Value
[Link] = [Link]
break
case 0 // Type
[Link] = [Link]
break
end switch
end if
end sub

sub RSDKDraw
DrawSprite(0)
end sub

sub RSDKLoad
LoadSpriteSheet("Menu/MenuGfx2_EN.gif")
SpriteFrame(0, -10, 144, 21, 259, 71) // #0 - Button

// These are overwritten in ObjectStartup but its cool to see anyway


AddEditorVariable("Type")
SetActiveVariable("Type")
AddEnumVariable("None", 0)
AddEnumVariable("Play", 1)
AddEnumVariable("Time Attack", 2)
AddEnumVariable("Leaderboards", 3)
AddEnumVariable("Achievements", 4)
AddEnumVariable("Help & Options", 5)
AddEnumVariable("Extras", 6)
AddEnumVariable("Unlock Full Game", 7)
AddEnumVariable("Store", 8)
AddEnumVariable("Exit", 9)
AddEnumVariable("Soundtrack", 10)
AddEnumVariable("MoreGames", 11)
end sub

You might also like