Path: blob/main/Scripts/Menu/OptionsMenu.txt
1319 views
//----------------Sonic CD Options Menu Script----------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value0 : Object.Timer6#alias Object.Value1 : Object.CurrentSelection7#alias Object.Value3 : Object.BGMDecreaseTimer8#alias Object.Value4 : Object.BGMIncreaseTimer9#alias Object.Value5 : Object.SFXDecreaseTimer10#alias Object.Value6 : Object.SFXIncreaseTimer11#alias Object.Value7 : Object.TouchDelay1213//Object[+4] is Empty, only used to set the Maximum amount of options for the controls14#alias Object[+4].Value1 : Object.OptionCount1516//Object[+ArrayPos0] can be the BlankObjects 63, 64, 65 and 66. Depending of the CurrentSelection value17#alias Object[+ArrayPos0].Value2 : Object.FlickerText1819// MenuHeading Aliases20#alias Object[33].State : MenuHeading.State21#alias Object[33].PropertyValue : MenuHeading.Header2223// MenuWindow Aliases24#alias Object[-1].State : MenuWindow.State2526// Helper Aliases27#alias Object[1].Value4 : Object.BackTouchPress2829// States30#alias 0 : OPTIONS_SETUP31#alias 1 : OPTIONS_CONTROLS32#alias 2 : OPTIONS_SELECTED33#alias 3 : OPTIONS_STAGE_LOAD34#alias 4 : OPTIONS_SETTINGS_SETUP35#alias 5 : OPTIONS_SETTINGS_POPIN36#alias 6 : OPTIONS_SETTINGS_CONTROLS37#alias 7 : OPTIONS_UNUSED38#alias 8 : OPTIONS_UNUSED239#alias 9 : OPTIONS_EXIT_SETTINGS40#alias 10 : OPTIONS_LEAVE_SUBMENU41#alias 11 : OPTIONS_EXIT42#alias 12 : OPTIONS_ENTER_ABOUT_MENU43#alias 13 : OPTIONS_ENTER_ABOUTMENU44#alias 14 : OPTIONS_ABOUTMENU_CONTROLS45#alias 15 : OPTIONS_EXIT_ABOUTMENU46#alias 16 : OPTIONS_RETURN_TO_TITLE47#alias 17 : OPTIONS_RETURN_TO_TITLE_ALT // before you say this looks silly, it's actually used to draw different4849// Menu Window States50#alias 3 : MENUWINDOW_SHRINK5152// Menu Button States53#alias 1 : MENUBUTTON_BUTTONS_IN5455// Menu Heading States56#alias 1 : MENUHEADING_LEAVE_SCREEN5758// Menu Heading Property Values59#alias 5 : MAINMENU_HEADER6061// Presentation Stages62#alias 0 : STAGE_P_TITLE63#alias 6 : STAGE_P_HELP64#alias 7 : STAGE_P_STAFFCREDITS65#alias 12 : STAGE_P_APPLETV6667// Global SFX68#alias 23 : SFX_G_MENUBUTTON69#alias 27 : SFX_G_SELECT7071// Stage SFX72#alias 1 : SFX_S_BACKBUTTON7374// Languages75#alias 0 : LANG_ENGLISH76#alias 1 : LANG_FRENCH77#alias 2 : LANG_ITALIAN78#alias 3 : LANG_DEUTSCH79#alias 4 : LANG_SPANISH80#alias 5 : LANG_JAPANESE8182// Ink Effects83#alias 2 : INK_ALPHA8485// DeviceType86#alias 1 : RETRO_MOBILE8788// SaveRAM Values89// 32 : SavedSettings90// 33 : BGM91// 34 : SFX92// 35 : Controls93// 40 : Haptic9495// Function declarations96#function OptionsMenu_DrawOptions9798function OptionsMenu_DrawOptions99// Note: Technically, this function is from OptionsMenuH/OptionsMenuC function depending of the version played, replicated here for simplicity sake100switch Object.FlickerText101case false102if ArrayPos0 == Object.CurrentSelection103DrawSpriteScreenFX(9, FX_INK, Object.XPos, Object.YPos)104TempValue0 = ArrayPos0105TempValue0 += 14106DrawSpriteScreenFX(TempValue0, FX_INK, Object.XPos, Object.YPos)107else108TempValue0 = ArrayPos0109TempValue0 += 10110DrawSpriteScreenFX(TempValue0, FX_INK, Object.XPos, Object.YPos)111end if112break113114case true115TempValue0 = Object.Timer116TempValue0 &= 3117TempValue0 >>= 1118DrawSpriteScreenFX(9, FX_INK, Object.XPos, Object.YPos)119if TempValue0 == 0120TempValue0 = ArrayPos0121TempValue0 += 14122DrawSpriteScreenFX(TempValue0, FX_INK, Object.XPos, Object.YPos)123end if124break125126end switch127128DrawSpriteScreenFX(8, FX_INK, Object.XPos, Object.YPos)129DrawSpriteScreenFX(ArrayPos0, FX_INK, Object.XPos, Object.YPos)130end function131132sub ObjectMain133switch Object.State134case OPTIONS_SETUP135136#platform: Use_Origins137Object.State = OPTIONS_SETTINGS_CONTROLS138Object.CurrentSelection = 1139ReadSaveRAM()140if SaveRAM[32] == false141SaveRAM[33] = 100 // BGM142SaveRAM[34] = 100 // SFX143SaveRAM[35] = 0 // Control Type144end if145Object.State = OPTIONS_SETTINGS_SETUP146147Object.XPos = Screen.CenterX148Object.XPos -= 126149150Object.YPos = 40151Object.YPos *= Object.CurrentSelection152Object.YPos += Screen.CenterY153Object.YPos -= 87154#endplatform155156// This is part of Standalone too157#platform: Mobile158if Options.PhysicalControls == false159Object.CurrentSelection = -1160end if161#endplatform162163#platform: Use_Standalone164Object.XPos = Screen.CenterX165Object.XPos -= 126166if Object.Timer < 256167Object.Alpha = Object.Timer168Object.Timer += 6169else170Object.Timer = 0171Object.Alpha = 255172Object.State++173end if174#endplatform175break176177case OPTIONS_CONTROLS178#platform: Standard179CheckResult = true180#endplatform181182#platform: Mobile183CheckEqual(Options.PhysicalControls, true)184#endplatform185186#platform: Use_Origins187CheckEqual(Options.PhysicalControls, true)188#endplatform189190// 2011 Steam lacks Options.PhysicalControls, so we force it here first and the other platforms can override it191if CheckResult == true192if KeyPress[0].Up == true193Object.CurrentSelection--194if Object.CurrentSelection < 0195Object.CurrentSelection = 3196end if197PlaySfx(SFX_G_MENUBUTTON, false)198end if199200if KeyPress[0].Down == true201Object.CurrentSelection++202if Object.CurrentSelection > 3203Object.CurrentSelection = 0204end if205PlaySfx(SFX_G_MENUBUTTON, false)206end if207208CheckTouchRect(0, 0, Screen.XSize, Screen.YSize)209if CheckResult > -1210#platform: Mobile211Options.PhysicalControls = false212Object.CurrentSelection = -1213#endplatform214215#platform: Use_Origins216Options.PhysicalControls = false217Object.CurrentSelection = -1218#endplatform219end if220else221CheckTouchRect(0, 0, Screen.XSize, Screen.YSize)222TempValue3 = CheckResult223224TempValue0 = 0225CallFunction(LoadSaveMenu_CheckTouchSave)226if CheckResult > -1227Object.CurrentSelection = 0228else229if TempValue3 < 0230if Object.CurrentSelection == 0231KeyPress[0].Start = true232end if233else234if Object.CurrentSelection == 0235Object.CurrentSelection = -1236end if237end if238end if239240TempValue0 = 1241CallFunction(LoadSaveMenu_CheckTouchSave)242if CheckResult > -1243Object.CurrentSelection = 1244else245if TempValue3 < 0246if Object.CurrentSelection == 1247KeyPress[0].Start = true248end if249else250if Object.CurrentSelection == 1251Object.CurrentSelection = -1252end if253end if254end if255256TempValue0 = 2257CallFunction(LoadSaveMenu_CheckTouchSave)258if CheckResult > -1259Object.CurrentSelection = 2260else261if TempValue3 < 0262if Object.CurrentSelection == 2263KeyPress[0].Start = true264end if265else266if Object.CurrentSelection == 2267Object.CurrentSelection = -1268end if269end if270end if271272TempValue0 = 3273CallFunction(LoadSaveMenu_CheckTouchSave)274if CheckResult > -1275Object.CurrentSelection = 3276else277if TempValue3 < 0278if Object.CurrentSelection == 3279KeyPress[0].Start = true280end if281else282if Object.CurrentSelection == 3283Object.CurrentSelection = -1284end if285end if286end if287288CallFunction(MenuHeading_CheckTouchBack)289if KeyPress[0].Up == true290Object.CurrentSelection = 3291#platform: Mobile292Options.PhysicalControls = true293#endplatform294#platform: Use_Origins295Options.PhysicalControls = true296#endplatform297end if298299if KeyPress[0].Down == true300Object.CurrentSelection = 0301#platform: Mobile302Options.PhysicalControls = true303#endplatform304#platform: Use_Origins305Options.PhysicalControls = true306#endplatform307end if308end if309310CheckResult = false311312if Object.CurrentSelection > -1313if KeyPress[0].Start == true314CheckResult = true315end if316317if KeyPress[0].ButtonA == true318CheckResult = true319end if320end if321322if CheckResult == true323if Object.CurrentSelection < 4324ArrayPos0 = Object.CurrentSelection325Object.FlickerText = 1326Object.State++327switch Object.CurrentSelection328case 0329StopMusic()330break331332case 1333break334335case 2336StopMusic()337break338339case 3340break341342end switch343PlaySfx(SFX_G_SELECT, false)344end if345end if346347if KeyPress[0].ButtonB == true348349#platform: Use_Origins350Object.State = OPTIONS_RETURN_TO_TITLE351Object.Timer = 0352StopMusic()353#endplatform354355#platform: Use_Standalone356Object.Timer = 248357Object.State = OPTIONS_EXIT358PlayStageSfx(SFX_S_BACKBUTTON, false)359#endplatform360361end if362break363364case OPTIONS_SELECTED365if Object.Timer < 30366Object.Timer++367else368Object.Timer = 0369ArrayPos0 = Object.CurrentSelection370Object.FlickerText = 0371switch Object.CurrentSelection372case 0373Object.State = OPTIONS_STAGE_LOAD374break375376case 1377ReadSaveRAM()378if SaveRAM[32] == false // SavedSettings379SaveRAM[33] = 100 // BGM380SaveRAM[34] = 100 // SFX381SaveRAM[35] = 0 // Control Type382end if383Object.State = OPTIONS_SETTINGS_SETUP384Object.YPos = 40385Object.YPos *= Object.CurrentSelection386Object.YPos += Screen.CenterY387Object.YPos -= 87388break389390case 2391Object.State = OPTIONS_STAGE_LOAD392break393394case 3395Object.State = OPTIONS_ENTER_ABOUT_MENU396Object.YPos = 40397Object.YPos *= Object.CurrentSelection398Object.YPos += Screen.CenterY399Object.YPos -= 87400break401402end switch403end if404break405406case OPTIONS_STAGE_LOAD407if Object.Timer < 320408Object.Timer += 8409else410switch Object.CurrentSelection411case 0412if Options.DevMenuFlag == true413Engine.State = RESET_GAME414else415416#platform: Use_Origins417if Engine.DeviceType == RETRO_MOBILE418Stage.ListPos = STAGE_P_HELP419else420Stage.ListPos = STAGE_P_APPLETV421end if422#endplatform423424#platform: Use_Standalone425Stage.ListPos = STAGE_P_HELP426#endplatform427LoadStage()428end if429break430431case 2432Stage.ListPos = STAGE_P_STAFFCREDITS433LoadStage()434break435436case 3 //Unused437Engine.State = RESET_GAME438break439440end switch441end if442443TempValue0 = Object.Timer444if TempValue0 > 255445TempValue0 = 255446end if447SetScreenFade(0, 0, 0, TempValue0)448break449450case OPTIONS_SETTINGS_SETUP451TempValue0 = Screen.CenterY452TempValue0 -= 87453if Object.YPos > TempValue0454Object.YPos -= 8455if Object.YPos < TempValue0456Object.YPos = TempValue0457end if458else459Object.State++460Object.Alpha = 0461Object.OptionCount = 0462463#platform: Use_Origins464if Options.PhysicalControls == false465ArrayPos0 = Object.CurrentSelection466Object.OptionCount = -1467end if468#endplatform469470#platform: Mobile471if Options.PhysicalControls == false472ArrayPos0 = Object.CurrentSelection473Object.OptionCount = -1474end if475#endplatform476477end if478break479480case OPTIONS_SETTINGS_POPIN481if Object.Timer < 256482Object.Alpha = Object.Timer483Object.Timer += 8484else485Object.Timer = 0486Object.Alpha = 255487Object.State++488end if489break490491case OPTIONS_SETTINGS_CONTROLS492// Origins completely drops most of this options in favor of letting HE2 handle audio493// So we only have available the spin dash type494ArrayPos0 = Object.CurrentSelection495496#platform: Use_Origins497498Object.OptionCount = 2499500// Control Type501if KeyPress[0].Left == true502SaveRAM[35]--503if SaveRAM[35] < 0504SaveRAM[35] = 1505end if506PlaySfx(SFX_G_MENUBUTTON, false)507end if508509if KeyPress[0].Right == true510SaveRAM[35]++511if SaveRAM[35] > 1512SaveRAM[35] = 0513end if514PlaySfx(SFX_G_MENUBUTTON, false)515end if516517// Save and leave518if KeyPress[0].ButtonA == true519Object.State = OPTIONS_RETURN_TO_TITLE_ALT520Object.Timer = 0521Options.OriginalControls = SaveRAM[35]522SaveRAM[32] = true523WriteSaveRAM()524game.callbackParam0 = Options.OriginalControls525EngineCallback(NOTIFY_SPIN_DASH_TYPE)526527PlaySfx(SFX_G_SELECT, false)528StopMusic()529end if530531// Just leave532if KeyPress[0].ButtonB == true533Object.State = OPTIONS_RETURN_TO_TITLE_ALT534Object.Timer = 0535PlayStageSfx(SFX_S_BACKBUTTON, false)536StopMusic()537end if538#endplatform539540#platform: Standard541CheckResult = true542#endplatform543544#platform: Mobile545CheckEqual(Options.PhysicalControls, true)546#endplatform547548#platform: Use_Standalone549if CheckResult == true550if KeyPress[0].Up == true551Object.OptionCount--552PlaySfx(SFX_G_MENUBUTTON, false)553if Object.OptionCount < 0554Object.OptionCount = 2555end if556end if557558if KeyPress[0].Down == true559Object.OptionCount++560PlaySfx(SFX_G_MENUBUTTON, false)561if Object.OptionCount > 2562Object.OptionCount = 0563end if564end if565566switch Object.OptionCount567case 0 // BGM568if KeyPress[0].Left == true569Object.BGMDecreaseTimer = 10570SaveRAM[33] -= 10571if SaveRAM[33] < 0572SaveRAM[33] = 0573Engine.BGMVolume = SaveRAM[33]574else575Engine.BGMVolume = SaveRAM[33]576PlaySfx(SFX_G_MENUBUTTON, false)577end if578end if579580if KeyPress[0].Right == true581Object.BGMIncreaseTimer = 10582SaveRAM[33] += 10583if SaveRAM[33] > 100584SaveRAM[33] = 100585Engine.BGMVolume = SaveRAM[33]586else587Engine.BGMVolume = SaveRAM[33]588PlaySfx(SFX_G_MENUBUTTON, false)589end if590end if591break592593case 1 // SFX594if KeyPress[0].Left == true595Object.SFXDecreaseTimer = 10596SaveRAM[34] -= 10597if SaveRAM[34] < 0598SaveRAM[34] = 0599Engine.SFXVolume = SaveRAM[34]600else601PlaySfx(SFX_G_MENUBUTTON, false)602Engine.SFXVolume = SaveRAM[34]603end if604end if605606if KeyPress[0].Right == true607Object.SFXIncreaseTimer = 10608SaveRAM[34] += 10609if SaveRAM[34] > 100610SaveRAM[34] = 100611else612PlaySfx(SFX_G_MENUBUTTON, false)613Engine.SFXVolume = SaveRAM[34]614end if615end if616break617618case 2 // Control Type619if KeyPress[0].Left == true620SaveRAM[35]--621if SaveRAM[35] < 0622SaveRAM[35] = 1623end if624PlaySfx(SFX_G_MENUBUTTON, false)625end if626627if KeyPress[0].Right == true628SaveRAM[35]++629if SaveRAM[35] > 1630SaveRAM[35] = 0631end if632PlaySfx(SFX_G_MENUBUTTON, false)633end if634break635636end switch637end if638#endplatform639640#platform: Mobile641// Just to make it look neat, instead of continuing the code from an open if on another platform, we ask again for a check in the physical controls642if Options.PhysicalControls == true643CheckTouchRect(0, 0, Screen.XSize, Screen.YSize)644if CheckResult > -1645Options.PhysicalControls = false646Object.OptionCount = -1647end if648else649CheckTouchRect(0, 0, Screen.XSize, Screen.YSize)650if CheckResult > -1651Object.TouchDelay++652Object.TouchDelay %= 24653else654Object.TouchDelay = 0655end if656TempValue3 = CheckResult657658TempValue0 = Screen.CenterX659TempValue0 += 16660TempValue1 = Screen.CenterX661TempValue1 += 48662// BGM Decrease663CheckTouchRect(TempValue0, 72, TempValue1, 99)664if CheckResult > -1665Object.OptionCount = 3666Object.BGMDecreaseTimer = 10667if Object.TouchDelay == 23668SaveRAM[33] -= 10669if SaveRAM[33] < 0670SaveRAM[33] = 0671Engine.BGMVolume = SaveRAM[33]672else673Engine.BGMVolume = SaveRAM[33]674PlaySfx(SFX_G_MENUBUTTON, false)675end if676end if677else678if TempValue3 < 0679if Object.OptionCount == 3680Object.BGMDecreaseTimer = 0681SaveRAM[33] -= 10682if SaveRAM[33] < 0683SaveRAM[33] = 0684Engine.BGMVolume = SaveRAM[33]685else686Engine.BGMVolume = SaveRAM[33]687PlaySfx(SFX_G_MENUBUTTON, false)688end if689Object.OptionCount = -1690end if691else692if Object.OptionCount == 3693Object.OptionCount = -1694end if695end if696end if697698// SFX Decrease699CheckTouchRect(TempValue0, 101, TempValue1, 128)700if CheckResult > -1701Object.OptionCount = 4702Object.SFXDecreaseTimer = 10703if Object.TouchDelay == 23704SaveRAM[34] -= 10705if SaveRAM[34] < 0706SaveRAM[34] = 0707Engine.SFXVolume = SaveRAM[34]708else709Engine.SFXVolume = SaveRAM[34]710PlaySfx(SFX_G_MENUBUTTON, false)711end if712end if713else714if TempValue3 < 0715if Object.OptionCount == 4716Object.SFXDecreaseTimer = 0717SaveRAM[34] -= 10718if SaveRAM[34] < 0719SaveRAM[34] = 0720Engine.SFXVolume = SaveRAM[34]721else722Engine.SFXVolume = SaveRAM[34]723PlaySfx(SFX_G_MENUBUTTON, false)724end if725Object.OptionCount = -1726end if727else728if Object.OptionCount == 4729Object.OptionCount = -1730end if731end if732end if733734// BGM Increase735TempValue0 = Screen.CenterX736TempValue0 += 84737TempValue1 = Screen.CenterX738TempValue1 += 120739CheckTouchRect(TempValue0, 72, TempValue1, 99)740if CheckResult > -1741Object.OptionCount = 5742Object.BGMIncreaseTimer = 10743if Object.TouchDelay == 23744SaveRAM[33] += 10745if SaveRAM[33] > 100746SaveRAM[33] = 100747Engine.BGMVolume = SaveRAM[33]748else749Engine.BGMVolume = SaveRAM[33]750PlaySfx(SFX_G_MENUBUTTON, false)751end if752end if753else754if TempValue3 < 0755if Object.OptionCount == 5756Object.BGMIncreaseTimer = 0757SaveRAM[33] += 10758if SaveRAM[33] > 100759SaveRAM[33] = 100760Engine.BGMVolume = SaveRAM[33]761else762Engine.BGMVolume = SaveRAM[33]763PlaySfx(SFX_G_MENUBUTTON, false)764end if765Object.OptionCount = -1766end if767else768if Object.OptionCount == 5769Object.OptionCount = -1770end if771end if772end if773774// SFX Increase775CheckTouchRect(TempValue0, 101, TempValue1, 128)776if CheckResult > -1777Object.OptionCount = 6778Object.SFXIncreaseTimer = 10779if Object.TouchDelay == 23780SaveRAM[34] += 10781if SaveRAM[34] > 100782SaveRAM[34] = 100783Engine.SFXVolume = SaveRAM[34]784else785Engine.SFXVolume = SaveRAM[34]786PlaySfx(SFX_G_MENUBUTTON, false)787end if788end if789else790if TempValue3 < 0791if Object.OptionCount == 6792Object.SFXIncreaseTimer = 0793SaveRAM[34] += 10794if SaveRAM[34] > 100795SaveRAM[34] = 100796Engine.SFXVolume = SaveRAM[34]797else798Engine.SFXVolume = SaveRAM[34]799PlaySfx(SFX_G_MENUBUTTON, false)800end if801Object.OptionCount = -1802end if803else804if Object.OptionCount == 6805Object.OptionCount = -1806end if807end if808end if809810// CD Control Type811TempValue0 = Screen.CenterX812TempValue0 += 14813TempValue1 = Screen.CenterX814TempValue1 += 64815CheckTouchRect(TempValue0, 132, TempValue1, 184)816if CheckResult > -1817Object.OptionCount = 7818else819if TempValue3 < 0820if Object.OptionCount == 7821SaveRAM[35] = 0822PlaySfx(SFX_G_MENUBUTTON, false)823Object.OptionCount = -1824end if825else826if Object.OptionCount == 7827Object.OptionCount = -1828end if829end if830end if831832// S2 Control Type833TempValue0 = Screen.CenterX834TempValue0 += 68835TempValue1 = Screen.CenterX836TempValue1 += 114837CheckTouchRect(TempValue0, 132, TempValue1, 184)838if CheckResult > -1839Object.OptionCount = 8840else841if TempValue3 < 0842if Object.OptionCount == 8843SaveRAM[35] = 1844PlaySfx(SFX_G_MENUBUTTON, false)845Object.OptionCount = -1846end if847else848if Object.OptionCount == 8849Object.OptionCount = -1850end if851end if852end if853854TempValue0 = Screen.XSize855TempValue0 -= 96856CheckTouchRect(TempValue0, 192, Screen.XSize, Screen.YSize)857if CheckResult > -1858Object.OptionCount = 9859Object.BackTouchPress = true860else861Object.BackTouchPress = false862if TempValue3 < 0863if Object.OptionCount == 9864KeyPress[0].ButtonB = true865end if866else867if Object.OptionCount == 9868Object.OptionCount = -1869end if870end if871end if872873if KeyPress[0].Up == true874Object.OptionCount = 2875Options.PhysicalControls = true876end if877878if KeyPress[0].Down == true879Object.OptionCount = 0880Options.PhysicalControls = true881end if882end if883#endplatform884885#platform: Use_Standalone886if KeyPress[0].ButtonB == true887Object.State = OPTIONS_EXIT_SETTINGS888Object.Timer = 248889890Options.OriginalControls = SaveRAM[35]891SaveRAM[32] = true892WriteSaveRAM()893894PlayStageSfx(SFX_S_BACKBUTTON, false)895end if896#endplatform897898899break900901case OPTIONS_UNUSED902if Object.Timer < 30903Object.Timer++904else905Object.Timer = 0906Object.State++907end if908break909910case OPTIONS_UNUSED2911if Object.Timer > 0912Object.Timer -= 8913else914915#platform: Mobile916if Options.PhysicalControls == false917Object.CurrentSelection = -1918end if919#endplatform920921Object.State = OPTIONS_CONTROLS922PlayMusic(0)923end if924925TempValue0 = Object.Timer926if TempValue0 > 255927TempValue0 = 255928end if929930SetScreenFade(0, 0, 0, TempValue0)931break932933case OPTIONS_EXIT_SETTINGS934if Object.Timer > 0935Object.Alpha = Object.Timer936Object.Timer -= 8937else938Object.Alpha = 0939Object.State++940end if941break942943case OPTIONS_LEAVE_SUBMENU944TempValue0 = Object.CurrentSelection945TempValue0 *= 40946TempValue0 += Screen.CenterY947TempValue0 -= 87948if Object.YPos < TempValue0949Object.YPos += 8950if Object.YPos > TempValue0951Object.YPos = TempValue0952end if953Object.Alpha = 0954else955956#platform: Mobile957if Options.PhysicalControls == false958Object.CurrentSelection = -1959end if960#endplatform961962Object.State = OPTIONS_CONTROLS963Object.Alpha = 255964end if965break966967case OPTIONS_EXIT968if Object.Timer > 0969Object.Alpha = Object.Timer970Object.Timer -= 8971else972Object.Type = TypeName[Blank Object]973MenuWindow.State = MENUWINDOW_SHRINK974//All of this is MenuButton Objects975Object[34].State = MENUBUTTON_BUTTONS_IN976Object[35].State = MENUBUTTON_BUTTONS_IN977Object[36].State = MENUBUTTON_BUTTONS_IN978Object[37].State = MENUBUTTON_BUTTONS_IN979Object[38].State = MENUBUTTON_BUTTONS_IN980Object[39].State = MENUBUTTON_BUTTONS_IN981Object[40].State = MENUBUTTON_BUTTONS_IN982Object[41].State = MENUBUTTON_BUTTONS_IN983Object[42].State = MENUBUTTON_BUTTONS_IN984//End985MenuHeading.State = MENUHEADING_LEAVE_SCREEN986MenuHeading.Header = MAINMENU_HEADER987end if988break989990case OPTIONS_ENTER_ABOUT_MENU991TempValue0 = Screen.CenterY992TempValue0 -= 87993if Object.YPos > TempValue0994Object.YPos -= 8995if Object.YPos < TempValue0996Object.YPos = TempValue0997end if998else999TempValue0 = Object.EntityNo1000TempValue0 += 101001ResetObjectEntity(TempValue0, TypeName[About Menu], 0, 0, 0)1002SetupMenu(MENU_1, 0, 3, 1)1003GetVersionNumber(MENU_1, 1)1004Object[+10].InkEffect = INK_ALPHA1005Object.State++1006Object.Alpha = 01007Object.OptionCount = 010081009#platform: Mobile1010if Options.PhysicalControls == false1011ArrayPos0 = Object.CurrentSelection1012Object.OptionCount = -11013end if1014#endplatform10151016end if1017break10181019case OPTIONS_ENTER_ABOUTMENU1020if Object.Timer < 2561021Object.Alpha = Object.Timer1022Object.Timer += 81023else1024Object.Timer = 01025Object.Alpha = 2551026Object.State++1027end if1028break10291030case OPTIONS_ABOUTMENU_CONTROLS1031#platform: Mobile1032//Off-brand MenuHeading_CheckTouchBack1033CheckTouchRect(0, 0, Screen.XSize, Screen.YSize)1034TempValue3 = CheckResult1035TempValue0 = Screen.XSize1036TempValue0 -= 961037CheckTouchRect(TempValue0, 192, Screen.XSize, Screen.YSize)1038if CheckResult > -11039Object.OptionCount = 91040Object.BackTouchPress = true1041else1042Object.BackTouchPress = false1043if TempValue3 < 01044if Object.OptionCount == 91045KeyPress[0].ButtonB = true1046end if1047else1048if Object.OptionCount == 91049Object.OptionCount = -11050end if1051end if1052end if1053#endplatform1054if KeyPress[0].ButtonB == true1055Object.State = OPTIONS_EXIT_ABOUTMENU1056Object.Timer = 2481057PlayStageSfx(SFX_S_BACKBUTTON, false)1058end if1059break10601061case OPTIONS_EXIT_ABOUTMENU1062if Object.Timer > 01063Object.Alpha = Object.Timer1064Object.Timer -= 81065else1066Object.Alpha = 01067Object.State = OPTIONS_LEAVE_SUBMENU1068Object[+10].Type = TypeName[Blank Object]1069end if1070break10711072case OPTIONS_RETURN_TO_TITLE1073Object.Timer += 41074if Object.Timer == 3841075Stage.ActiveList = PRESENTATION_STAGE1076Stage.ListPos = STAGE_P_TITLE1077LoadStage()1078end if1079SetScreenFade(0, 0, 0, Object.Timer)1080break10811082case OPTIONS_RETURN_TO_TITLE_ALT1083Object.Timer += 41084if Object.Timer == 3841085Stage.ActiveList = PRESENTATION_STAGE1086Stage.ListPos = STAGE_P_TITLE1087LoadStage()1088end if1089SetScreenFade(0, 0, 0, Object.Timer)1090break10911092end switch1093end sub109410951096sub ObjectDraw1097switch Object.State1098case OPTIONS_SETUP1099case OPTIONS_CONTROLS1100case OPTIONS_SELECTED1101case OPTIONS_STAGE_LOAD1102case OPTIONS_UNUSED21103case OPTIONS_EXIT1104case OPTIONS_RETURN_TO_TITLE1105#platform: Use_Origins1106Object.YPos = Screen.CenterY1107Object.YPos -= 671108ArrayPos0 = 01109CallFunction(OptionsMenu_DrawOptions)1110Object.YPos += 601111ArrayPos0++1112CallFunction(OptionsMenu_DrawOptions)1113#endplatform11141115#platform: Use_Standalone1116Object.YPos = Screen.CenterY1117Object.YPos -= 871118ArrayPos0 = 01119CallFunction(OptionsMenu_DrawOptions)1120Object.YPos += 401121ArrayPos0++1122CallFunction(OptionsMenu_DrawOptions)1123Object.YPos += 401124ArrayPos0++1125CallFunction(OptionsMenu_DrawOptions)1126Object.YPos += 401127ArrayPos0++1128CallFunction(OptionsMenu_DrawOptions)1129#endplatform11301131break11321133case OPTIONS_SETTINGS_SETUP1134case OPTIONS_ENTER_ABOUT_MENU1135ArrayPos0 = Object.CurrentSelection1136CallFunction(OptionsMenu_DrawOptions)1137break11381139case OPTIONS_SETTINGS_POPIN1140case OPTIONS_SETTINGS_CONTROLS1141case OPTIONS_EXIT_SETTINGS1142case OPTIONS_LEAVE_SUBMENU1143case OPTIONS_RETURN_TO_TITLE_ALT1144ArrayPos0 = Object.CurrentSelection1145TempValue0 = Screen.CenterX1146TempValue0 += 1511471148#platform: Use_Origins1149if Object.OptionCount == 71150DrawSpriteScreenFX(40, FX_INK, TempValue0, 93)1151else1152DrawSpriteScreenFX(29, FX_INK, TempValue0, 93)1153end if11541155TempValue0 += 521156if Object.OptionCount == 81157DrawSpriteScreenFX(41, FX_INK, TempValue0, 93)1158else1159DrawSpriteScreenFX(30, FX_INK, TempValue0, 93)1160end if1161#endplatform11621163#platform: Use_Standalone1164if Object.OptionCount == 71165DrawSpriteScreenFX(40, FX_INK, TempValue0, 134)1166else1167DrawSpriteScreenFX(29, FX_INK, TempValue0, 134)1168end if11691170TempValue0 += 521171if Object.OptionCount == 81172DrawSpriteScreenFX(41, FX_INK, TempValue0, 134)1173else1174DrawSpriteScreenFX(30, FX_INK, TempValue0, 134)1175end if11761177#endplatform11781179TempValue0 = Screen.CenterX1180TempValue0 -= 11711811182#platform: Standard1183CheckResult = true1184#endplatform11851186#platform: Mobile1187CheckEqual(Options.PhysicalControls, true)1188#endplatform11891190#platform: Use_Standalone1191// 2011 Steam lacks Options.PhysicalControls, so we force it here first and the other platforms can override it1192if CheckResult == true1193switch Object.OptionCount1194case 01195DrawSpriteScreenFX(32, FX_INK, TempValue0, 81)1196DrawSpriteScreenFX(33, FX_INK, TempValue0, 110)1197DrawSpriteScreenFX(35, FX_INK, TempValue0, 151)1198break11991200case 11201DrawSpriteScreenFX(31, FX_INK, TempValue0, 81)1202DrawSpriteScreenFX(34, FX_INK, TempValue0, 110)1203DrawSpriteScreenFX(35, FX_INK, TempValue0, 151)1204break12051206case 21207DrawSpriteScreenFX(31, FX_INK, TempValue0, 81)1208DrawSpriteScreenFX(33, FX_INK, TempValue0, 110)1209DrawSpriteScreenFX(36, FX_INK, TempValue0, 151)1210break12111212end switch1213else1214DrawSpriteScreenFX(31, FX_INK, TempValue0, 81)1215DrawSpriteScreenFX(33, FX_INK, TempValue0, 110)1216DrawSpriteScreenFX(35, FX_INK, TempValue0, 151)1217end if12181219//Controls Drawing1220if SaveRAM[35] == 01221DrawSpriteScreenFX(37, FX_INK, TempValue0, 169)1222TempValue0 += 1321223DrawSpriteScreenFX(39, FX_INK, TempValue0, 134)1224else1225DrawSpriteScreenFX(38, FX_INK, TempValue0, 169)1226TempValue0 += 1841227DrawSpriteScreenFX(39, FX_INK, TempValue0, 134)1228end if12291230//BGM Drawing1231TempValue1 = Screen.CenterX1232TempValue1 += 231233if Object.BGMDecreaseTimer > 01234Object.BGMDecreaseTimer--1235DrawSpriteScreenFX(5, FX_INK, TempValue1, 76)1236else1237DrawSpriteScreenFX(4, FX_INK, TempValue1, 76)1238end if12391240TempValue1 += 661241if Object.BGMIncreaseTimer > 01242Object.BGMIncreaseTimer--1243DrawSpriteScreenFX(7, FX_INK, TempValue1, 76)1244else1245DrawSpriteScreenFX(6, FX_INK, TempValue1, 76)1246end if12471248TempValue1 -= 421249DrawSpriteScreenFX(18, FX_INK, TempValue1, 76)12501251TempValue0 = SaveRAM[33]1252TempValue0 /= 101253TempValue0 += 181254DrawSpriteScreenFX(TempValue0, FX_INK, TempValue1, 76)12551256//SFX Drawing1257TempValue1 = Screen.CenterX1258TempValue1 += 231259if Object.SFXDecreaseTimer > 01260Object.SFXDecreaseTimer--1261DrawSpriteScreenFX(5, FX_INK, TempValue1, 105)1262else1263DrawSpriteScreenFX(4, FX_INK, TempValue1, 105)1264end if12651266TempValue1 += 661267if Object.SFXIncreaseTimer > 01268Object.SFXIncreaseTimer--1269DrawSpriteScreenFX(7, FX_INK, TempValue1, 105)1270else1271DrawSpriteScreenFX(6, FX_INK, TempValue1, 105)1272end if12731274TempValue1 -= 421275DrawSpriteScreenFX(18, FX_INK, TempValue1, 105)12761277TempValue0 = SaveRAM[34]1278TempValue0 /= 101279TempValue0 += 181280DrawSpriteScreenFX(TempValue0, FX_INK, TempValue1, 105)1281#endplatform12821283#platform: Use_Origins1284DrawSpriteScreenFX(36,FX_INK,TempValue0,110)1285if SaveRAM[35] == 01286DrawSpriteScreenFX(37, FX_INK, TempValue0, 128)1287TempValue0 += 1321288DrawSpriteScreenFX(39, FX_INK, TempValue0, 93)1289else1290DrawSpriteScreenFX(38, FX_INK, TempValue0, 128)1291TempValue0 += 1841292DrawSpriteScreenFX(39, FX_INK, TempValue0, 93)1293end if12941295TempValue1 = Screen.CenterX1296TempValue1 += 231297if Object.BGMDecreaseTimer > 01298Object.BGMDecreaseTimer--1299else1300end if1301TempValue1 += 661302if Object.BGMIncreaseTimer > 01303Object.BGMIncreaseTimer--1304else1305end if1306TempValue1 -= 4213071308TempValue0 = SaveRAM[33]1309TempValue0 /= 101310TempValue0 += 1813111312TempValue1 = Screen.CenterX1313TempValue1 += 231314if Object.SFXDecreaseTimer > 01315Object.SFXDecreaseTimer--1316else1317end if1318TempValue1 += 661319if Object.SFXIncreaseTimer > 01320Object.SFXIncreaseTimer--1321else1322end if1323TempValue1 -= 421324#endplatform13251326Object.Alpha = 2551327CallFunction(OptionsMenu_DrawOptions)1328break13291330case OPTIONS_ENTER_ABOUTMENU1331case OPTIONS_ABOUTMENU_CONTROLS1332case OPTIONS_EXIT_ABOUTMENU1333ArrayPos0 = Object.CurrentSelection1334Object.Alpha = 2551335CallFunction(OptionsMenu_DrawOptions)1336break13371338end switch1339end sub134013411342sub ObjectStartup1343switch Engine.Language1344case LANG_ENGLISH1345LoadSpriteSheet("Menu/MenuGfx2_EN.gif")1346break1347case LANG_FRENCH1348LoadSpriteSheet("Menu/MenuGfx2_FR.gif")1349break1350case LANG_ITALIAN1351LoadSpriteSheet("Menu/MenuGfx2_IT.gif")1352break1353case LANG_DEUTSCH1354LoadSpriteSheet("Menu/MenuGfx2_DE.gif")1355break1356case LANG_SPANISH1357LoadSpriteSheet("Menu/MenuGfx2_ES.gif")1358break1359case LANG_JAPANESE1360LoadSpriteSheet("Menu/MenuGfx2_JP.gif")1361break1362end switch13631364if SaveRAM[32] == false1365SaveRAM[33] = 1001366SaveRAM[34] = 1001367SaveRAM[35] = 01368end if1369Options.OriginalControls = SaveRAM[35]13701371SpriteFrame(4, 2, 32, 32, 479, 34) // #0 - Gear1372SpriteFrame(4, 2, 32, 32, 479, 34) // #1 - Gear Again1373SpriteFrame(4, 2, 32, 32, 479, 34) // #2 - Why is this a Gear again1374SpriteFrame(4, 2, 32, 32, 479, 34) // #3 - Please Stop.1375SpriteFrame(0, 0, 20, 20, 168, 366) // #4 - Decrease button1376SpriteFrame(0, 0, 20, 20, 168, 387) // #5 - Decrease button Highlight1377SpriteFrame(0, 0, 20, 20, 189, 366) // #6 - Increase button1378SpriteFrame(0, 0, 20, 20, 189, 387) // #7 - Increase button Highlight1379SpriteFrame(45, 12, 13, 13, 488, 1) // #8 - Triangle detail1380SpriteFrame(0, 0, 250, 37, 259, 421) // #9 - Selection Border13811382if Options.DevMenuFlag == true1383SpriteFrame(64, 12, 66, 16, 259, 598) // #10 - Dev Menu1384else1385SpriteFrame(64, 12, 128, 16, 1, 188) // #10 - Instructions1386end if13871388SpriteFrame(64, 12, 128, 16, 1, 205) // #11 - Settings1389SpriteFrame(64, 12, 128, 16, 1, 222) // #12 - Staff Credits1390SpriteFrame(64, 12, 128, 16, 1, 239) // #13 - About13911392if Options.DevMenuFlag == true1393SpriteFrame(64, 12, 66, 16, 326, 598) // #14 - Dev Menu Highlight1394else1395SpriteFrame(64, 12, 128, 16, 130, 188) // #14 - Instructions Highlight1396end if13971398SpriteFrame(64, 12, 128, 16, 130, 205) // #15 - Settings Highlight1399SpriteFrame(64, 12, 128, 16, 130, 222) // #16 - Staff Credits Highlight1400SpriteFrame(64, 12, 128, 16, 130, 239) // #17 - About Highlight1401SpriteFrame(0, 0, 38, 20, 171, 324) // #18 - Minimal Volume1402SpriteFrame(0, 0, 4, 20, 171, 345) // #19 - Volume Bar 11403SpriteFrame(0, 0, 8, 20, 171, 345) // #20 - Volume Bar 21404SpriteFrame(0, 0, 12, 20, 171, 345) // #21 - Volume Bar 31405SpriteFrame(0, 0, 16, 20, 171, 345) // #22 - Volume Bar 41406SpriteFrame(0, 0, 20, 20, 171, 345) // #23 - Volume Bar 51407SpriteFrame(0, 0, 24, 20, 171, 345) // #24 - Volume Bar 61408SpriteFrame(0, 0, 28, 20, 171, 345) // #25 - Volume Bar 71409SpriteFrame(0, 0, 32, 20, 171, 345) // #26 - Volume Bar 81410SpriteFrame(0, 0, 36, 20, 171, 345) // #27 - Volume Bar 91411SpriteFrame(0, 0, 38, 20, 171, 345) // #28 - Volume Bar 101412SpriteFrame(0, 0, 48, 48, 210, 324) // #29 - S2 Spin Dash1413SpriteFrame(0, 0, 48, 48, 210, 373) // #30 - CD Spin Dash1414SpriteFrame(0, 0, 128, 16, 1, 256) // #31 - Music1415SpriteFrame(0, 0, 128, 16, 130, 256) // #32 - Music Highlight1416SpriteFrame(0, 0, 128, 16, 1, 273) // #32 - SFX1417SpriteFrame(0, 0, 128, 16, 130, 273) // #33 - SFX Highlight1418SpriteFrame(0, 0, 128, 16, 1, 307) // #34 - Spin Dash1419SpriteFrame(0, 0, 128, 16, 130, 307) // #35 - Spin Dash Highlight1420SpriteFrame(0, 0, 88, 8, 259, 44) // #36 - Genesis1421SpriteFrame(0, 0, 88, 8, 259, 35) // #37 - Original1422SpriteFrame(0, 0, 48, 48, 405, 88) // #38 - Icon Border1423SpriteFrame(0, 0, 48, 48, 119, 324) // #39 - S2 Spin Dash Highlight1424SpriteFrame(0, 0, 48, 48, 119, 373) // #40 - CD Spin Dash Highlight1425end sub142614271428// ========================1429// Editor Subs1430// ========================14311432sub RSDKDraw1433DrawSprite(0)1434end sub143514361437sub RSDKLoad1438LoadSpriteSheet("Menu/MenuGfx2_EN.gif")1439SpriteFrame(16, 0, 90, 30, 71, 677) // Options14401441SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")1442end sub144314441445