Path: blob/main/Scripts/Menu/ExtrasMenu.txt
1319 views
//----------------Sonic CD Extras 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.CurrentButton78//Object[+4] and [+ArrayPos0] are blank objects just to add values9#alias Object[+4].Value1 : Helper.VMCurrentButton10#alias Object.Value2 : Helper.FlickerState1112//Object[33] is MenuHeading13#alias Object[33].State : MenuHeading.State14#alias Object[33].PropertyValue : MenuHeading.Header1516//Object[-1] is MenuWindow17#alias Object[-1].State : MenuWindow.State18#alias Object[1].Value4 : MenuWindow.BackTouchPress1920// States21#alias 0 : EXTRASMENU_ENTER_MENU22#alias 1 : EXTRASMENU_CONTROLS23#alias 2 : EXTRASMENU_SELECTED_OPTION24#alias 3 : EXTRASMENU_LOAD_EXTRA_STAGE25#alias 4 : EXTRASMENU_LOAD_VISUALMODE26#alias 5 : EXTRASMENU_VISUALMODE_FADEIN27#alias 6 : EXTRASMENU_VISUALMODE28#alias 7 : EXTRASMENU_VISUALMODE_SELECTED29#alias 8 : EXTRASMENU_VISUALMODE_VIDEOPLAY30#alias 9 : EXTRASMENU_VISUALMODE_FADEOUT31#alias 10 : EXTRASMENU_VISUALMODE_RETURN32#alias 11 : EXTRASMENU_EXIT_MENU33#alias 12 : EXTRASMENU_FADEIN34#alias 13 : EXTRASMENU_RETURN_TO_TITLE3536// Menu Heading States37#alias 1 : MENUHEADING_LEAVE_SCREEN3839// Menu Heading Property Values40#alias 5 : MAINMENU_HEADER4142// Menu Window States43#alias 3 : MENUWINDOW_SHRINK4445// Menu Button States46#alias 1 : MENUBUTTON_BUTTONS_IN4748// Presentation Stages49#alias 0 : STAGE_P_TITLE50#alias 3 : STAGE_P_STAGESELECT51#alias 4 : STAGE_P_SOUNDTEST52#alias 5 : STAGE_P_DAGARDEN5354// Global SFX55#alias 23 : SFX_G_MENUBUTTON56#alias 27 : SFX_G_SELECT5758// Stage SFX59#alias 1 : SFX_S_BACKBUTTON6061// Languages62#alias 0 : LANG_ENGLISH63#alias 1 : LANG_FRENCH64#alias 2 : LANG_ITALIAN65#alias 3 : LANG_DEUTSCH66#alias 4 : LANG_SPANISH67#alias 5 : LANG_JAPANESE6869// Soundtrack70#alias 0 : OST_JP7172//Engine & CallBacks73#alias 2 : MESSAGE_LOSTFOCUS7475// Function declarations76#function ExtrasMenu_DrawUnlocks777879function ExtrasMenu_DrawUnlocks80switch Helper[+ArrayPos0].FlickerState81case false82if ArrayPos0 == Object.CurrentButton83DrawSpriteScreenFX(9, FX_INK, Object.XPos, Object.YPos)84TempValue0 = ArrayPos085TempValue0 += 1486DrawSpriteScreenFX(TempValue0, FX_INK, Object.XPos, Object.YPos)87else88TempValue0 = ArrayPos089TempValue0 += 1090DrawSpriteScreenFX(TempValue0, FX_INK, Object.XPos, Object.YPos)91end if92break9394case true95TempValue0 = Object.Timer96TempValue0 &= 397TempValue0 >>= 198DrawSpriteScreenFX(9, FX_INK, Object.XPos, Object.YPos)99if TempValue0 == 0100TempValue0 = ArrayPos0101TempValue0 += 14102DrawSpriteScreenFX(TempValue0, FX_INK, Object.XPos, Object.YPos)103end if104break105106end switch107108DrawSpriteScreenFX(8, FX_INK, Object.XPos, Object.YPos)109switch ArrayPos0110case 0111if Options.DAGardenFlag == true112DrawSpriteScreenFX(0, FX_INK, Object.XPos, Object.YPos)113else114DrawSpriteScreenFX(1, FX_INK, Object.XPos, Object.YPos)115end if116break117118case 1119if Options.VisualModeFlag == true120DrawSpriteScreenFX(0, FX_INK, Object.XPos, Object.YPos)121else122DrawSpriteScreenFX(1, FX_INK, Object.XPos, Object.YPos)123end if124break125126case 2127if Options.SoundTestFlag == true128DrawSpriteScreenFX(0, FX_INK, Object.XPos, Object.YPos)129else130DrawSpriteScreenFX(1, FX_INK, Object.XPos, Object.YPos)131end if132break133134case 3135if Options.StageSelectFlag == true136DrawSpriteScreenFX(0, FX_INK, Object.XPos, Object.YPos)137else138DrawSpriteScreenFX(1, FX_INK, Object.XPos, Object.YPos)139end if140break141end switch142end function143144145sub ObjectMain146switch Object.State147case EXTRASMENU_ENTER_MENU148149#platform: Use_Origins150if Options.PhysicalControls == false151Object.CurrentButton = -1152end if153#endplatform154155#platform: Mobile156if Options.PhysicalControls == false157Object.CurrentButton = -1158end if159#endplatform160161Object.XPos = Screen.CenterX162Object.XPos -= 126163if Object.Timer < 256164Object.Alpha = Object.Timer165Object.Timer += 6166else167Object.Timer = 0168Object.Alpha = 255169Object.State++170end if171break172173case EXTRASMENU_CONTROLS174175#platform: Standard176CheckResult = true177#endplatform178179#platform: Mobile180CheckEqual(Options.PhysicalControls, true)181#endplatform182183#platform: Use_Origins184CheckEqual(Options.PhysicalControls, true)185#endplatform186187// 2011 Steam lacks Options.PhysicalControls, so we force it here first and the other platforms can override it188if CheckResult == true189if KeyPress[0].Up == true190Object.CurrentButton--191if Object.CurrentButton < 0192Object.CurrentButton = 3193end if194PlaySfx(SFX_G_MENUBUTTON, false)195end if196197if KeyPress[0].Down == true198Object.CurrentButton++199if Object.CurrentButton > 3200Object.CurrentButton = 0201end if202PlaySfx(SFX_G_MENUBUTTON, false)203end if204205CheckTouchRect(0, 0, Screen.XSize, Screen.YSize) //Touch Behaviour Check206if CheckResult > -1207#platform: Mobile208Options.PhysicalControls = false209Object.CurrentButton = -1210#endplatform211#platform: Use_Origins212Options.PhysicalControls = false213Object.CurrentButton = -1214#endplatform215end if216else217CheckTouchRect(0, 0, Screen.XSize, Screen.YSize) //Touch Press Reset218TempValue3 = CheckResult219220TempValue0 = 0221CallFunction(LoadSaveMenu_CheckTouchSave) //D. A. Garden Touch Press222if CheckResult > -1223Object.CurrentButton = 0224else225if TempValue3 < 0226if Object.CurrentButton == 0227KeyPress[0].Start = true228end if229else230if Object.CurrentButton == 0231Object.CurrentButton = -1232end if233end if234end if235236TempValue0 = 1237CallFunction(LoadSaveMenu_CheckTouchSave) //Visual Mode Touch Press238if CheckResult > -1239Object.CurrentButton = 1240else241if TempValue3 < 0242if Object.CurrentButton == 1243KeyPress[0].Start = true244end if245else246if Object.CurrentButton == 1247Object.CurrentButton = -1248end if249end if250end if251252TempValue0 = 2253CallFunction(LoadSaveMenu_CheckTouchSave) //Sound Test Touch Press254if CheckResult > -1255Object.CurrentButton = 2256else257if TempValue3 < 0258if Object.CurrentButton == 2259KeyPress[0].Start = true260end if261else262if Object.CurrentButton == 2263Object.CurrentButton = -1264end if265end if266end if267268TempValue0 = 3269CallFunction(LoadSaveMenu_CheckTouchSave) //Stage Select Touch Press270if CheckResult > -1271Object.CurrentButton = 3272else273if TempValue3 < 0274if Object.CurrentButton == 3275KeyPress[0].Start = true276end if277else278if Object.CurrentButton == 3279Object.CurrentButton = -1280end if281end if282end if283284CallFunction(MenuHeading_CheckTouchBack) //Back Button Touch Press285if KeyPress[0].Up == true286Object.CurrentButton = 3287#platform: Mobile288Options.PhysicalControls = true289#endplatform290291#platform: Use_Origins292Options.PhysicalControls = true293#endplatform294end if295296if KeyPress[0].Down == true297Object.CurrentButton = 0298#platform: Mobile299Options.PhysicalControls = true300#endplatform301302#platform: Use_Origins303Options.PhysicalControls = true304#endplatform305end if306end if307308CheckResult = false309if Object.CurrentButton > -1310if KeyPress[0].Start == true311CheckResult = true312end if313314if KeyPress[0].ButtonA == true315CheckResult = true316end if317end if318319if CheckResult == true320if Object.CurrentButton < 4321switch Object.CurrentButton322case 0323if Options.DAGardenFlag == true324ArrayPos0 = Object.CurrentButton325Helper[+ArrayPos0].FlickerState = true326Object.State++327StopMusic()328PlaySfx(SFX_G_SELECT, false)329else330#platform: Use_Origins331if Options.PhysicalControls == false332Object.CurrentButton = -1333end if334#endplatform335336#platform: Mobile337if Options.PhysicalControls == false338Object.CurrentButton = -1339end if340#endplatform341end if342break343344case 1345if Options.VisualModeFlag == true346ArrayPos0 = Object.CurrentButton347Helper[+ArrayPos0].FlickerState = true348Object.State++349PlaySfx(SFX_G_SELECT, false)350else351#platform: Use_Origins352if Options.PhysicalControls == false353Object.CurrentButton = -1354end if355#endplatform356357#platform: Mobile358if Options.PhysicalControls == false359Object.CurrentButton = -1360end if361#endplatform362end if363break364365case 2366if Options.SoundTestFlag == true367ArrayPos0 = Object.CurrentButton368Helper[+ArrayPos0].FlickerState = true369Object.State++370StopMusic()371PlaySfx(SFX_G_SELECT, false)372else373#platform: Use_Origins374if Options.PhysicalControls == false375Object.CurrentButton = -1376end if377#endplatform378379#platform: Mobile380if Options.PhysicalControls == false381Object.CurrentButton = -1382end if383#endplatform384end if385break386387case 3388if Options.StageSelectFlag == true389ArrayPos0 = Object.CurrentButton390Helper[+ArrayPos0].FlickerState = true391Object.State++392StopMusic()393PlaySfx(SFX_G_SELECT, false)394else395#platform: Use_Origins396if Options.PhysicalControls == false397Object.CurrentButton = -1398end if399#endplatform400401#platform: Mobile402if Options.PhysicalControls == false403Object.CurrentButton = -1404end if405#endplatform406end if407break408409end switch410end if411end if412413#platform: Use_Origins414if KeyPress[0].ButtonB == true415Object.State = EXTRASMENU_RETURN_TO_TITLE416Object.Timer = 0417StopMusic()418end if419#endplatform420421#platform: Use_Standalone422if KeyPress[0].ButtonB == true423Object.Timer = 248424Object.State = EXTRASMENU_EXIT_MENU425PlayStageSfx(SFX_S_BACKBUTTON, false)426end if427#endplatform428break429430case EXTRASMENU_SELECTED_OPTION431if Object.Timer < 30432Object.Timer++433else434Object.Timer = 0435ArrayPos0 = Object.CurrentButton436Helper[+ArrayPos0].FlickerState = false437switch Object.CurrentButton438case 0439Object.State = EXTRASMENU_LOAD_EXTRA_STAGE440break441442case 1443Object.State = EXTRASMENU_LOAD_VISUALMODE444Object.YPos = 40445Object.YPos *= Object.CurrentButton446Object.YPos += Screen.CenterY447Object.YPos -= 87448break449450case 2451Object.State = EXTRASMENU_LOAD_EXTRA_STAGE452break453454case 3455Object.State = EXTRASMENU_LOAD_EXTRA_STAGE456break457458end switch459end if460break461462case EXTRASMENU_LOAD_EXTRA_STAGE463if Object.Timer < 320464Object.Timer += 8465else466467#platform: Use_Origins468game.callbackParam0 = true469EngineCallback(NOTIFY_LEVEL_SELECT_MENU)470game.callbackParam0 = 0471EngineCallback(NOTIFY_PLAYER_SET)472Stage.PlayerListPos = PLAYER_SONIC473#endplatform474475switch Object.CurrentButton476case 0477Stage.ListPos = STAGE_P_DAGARDEN478LoadStage()479break480481case 2482Stage.ListPos = STAGE_P_SOUNDTEST483LoadStage()484break485486case 3487Stage.ListPos = STAGE_P_STAGESELECT488LoadStage()489break490491end switch492end if493494TempValue0 = Object.Timer495if TempValue0 > 255496TempValue0 = 255497end if498SetScreenFade(0, 0, 0, TempValue0)499break500501case EXTRASMENU_LOAD_VISUALMODE502TempValue0 = Screen.CenterY503TempValue0 -= 87504if Object.YPos > TempValue0505Object.YPos -= 8506if Object.YPos < TempValue0507Object.YPos = TempValue0508end if509else510Object.State++511Object.Alpha = 0512Helper.VMCurrentButton = 0513514#platform: Mobile515if Options.PhysicalControls == false516Helper.VMCurrentButton = -1517end if518#endplatform519520end if521break522523case EXTRASMENU_VISUALMODE_FADEIN524if Object.Timer < 256525Object.Alpha = Object.Timer526Object.Timer += 8527else528Object.Timer = 0529Object.Alpha = 255530Object.State++531end if532break533534case EXTRASMENU_VISUALMODE535ArrayPos0 = Object.CurrentButton536#platform: Standard537CheckResult = true538#endplatform539540#platform: Mobile541CheckEqual(Options.PhysicalControls,true)542#endplatform543544#platform: Use_Origins545CheckEqual(Options.PhysicalControls,true)546#endplatform547548// 2011 Steam lacks Options.PhysicalControls, so we force it here first and the other platforms can override it549if CheckResult == true550if KeyPress[0].Left == true551Helper.VMCurrentButton--552PlaySfx(SFX_G_MENUBUTTON, false)553if Helper.VMCurrentButton < 0554Helper.VMCurrentButton = 3555end if556end if557558if KeyPress[0].Right == true559Helper.VMCurrentButton++560PlaySfx(SFX_G_MENUBUTTON, false)561if Helper.VMCurrentButton > 3562Helper.VMCurrentButton = 0563end if564end if565566if KeyPress[0].Up == true567Helper.VMCurrentButton -= 2568PlaySfx(SFX_G_MENUBUTTON, false)569if Helper.VMCurrentButton < 0570Helper.VMCurrentButton += 4571end if572end if573574if KeyPress[0].Down == true575Helper.VMCurrentButton += 2576PlaySfx(SFX_G_MENUBUTTON, false)577if Helper.VMCurrentButton > 3578Helper.VMCurrentButton -= 4579end if580end if581582end if583584#platform: Mobile585// 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 controls586if Options.PhysicalControls == true587CheckTouchRect(0, 0, Screen.XSize, Screen.YSize) //Touch Behaviour Check588if CheckResult > -1589Options.PhysicalControls = false590Helper.VMCurrentButton = -1591end if592593else594if Engine.Message == MESSAGE_LOSTFOCUS595Helper.VMCurrentButton = -1596end if597CheckTouchRect(0, 0, Screen.XSize, Screen.YSize) //Touch Input Reset598TempValue3 = CheckResult599600TempValue0 = Screen.CenterX601TempValue0 -= 88602TempValue1 = Screen.CenterX603TempValue1 -= 40604CheckTouchRect(TempValue0, 72, TempValue1, 120) //Opening Touch Press605if CheckResult > -1606Helper.VMCurrentButton = 0607else608if TempValue3 < 0609if Helper.VMCurrentButton == 0610KeyPress[0].Start = true611end if612else613if Helper.VMCurrentButton == 0614Helper.VMCurrentButton = -1615end if616end if617end if618619CheckTouchRect(TempValue0, 129, TempValue1, 177) //Good Ending Touch Press620if CheckResult > -1621Helper.VMCurrentButton = 2622else623if TempValue3 < 0624if Helper.VMCurrentButton == 2625KeyPress[0].Start = true626end if627else628if Helper.VMCurrentButton == 2629Helper.VMCurrentButton = -1630end if631end if632end if633634TempValue0 = Screen.CenterX635TempValue0 += 40636TempValue1 = Screen.CenterX637TempValue1 += 88638CheckTouchRect(TempValue0, 72, TempValue1, 120) //Pencil Test Touch Press639if CheckResult > -1640Helper.VMCurrentButton = 1641else642if TempValue3 < 0643if Helper.VMCurrentButton == 1644KeyPress[0].Start = true645end if646else647if Helper.VMCurrentButton == 1648Helper.VMCurrentButton = -1649end if650end if651end if652653CheckTouchRect(TempValue0, 129, TempValue1, 177) //Bad Ending Touch Press654if CheckResult > -1655Helper.VMCurrentButton = 3656else657if TempValue3 < 0658if Helper.VMCurrentButton == 3659KeyPress[0].Start = true660end if661else662if Helper.VMCurrentButton == 3663Helper.VMCurrentButton = -1664end if665end if666end if667668TempValue0 = Screen.XSize669TempValue0 -= 96670CheckTouchRect(TempValue0, 192, Screen.XSize, Screen.YSize) //Back Touch Press671if CheckResult > -1672Helper.VMCurrentButton = 4673MenuWindow.BackTouchPress = true674else675MenuWindow.BackTouchPress = false676if TempValue3 < 0677if Helper.VMCurrentButton == 4678KeyPress[0].ButtonB = true679end if680else681if Helper.VMCurrentButton == 4682Helper.VMCurrentButton = -1683end if684end if685end if686//Turn on Physical Controls687if KeyPress[0].Left == true688Helper.VMCurrentButton = 1689Options.PhysicalControls = true690end if691692if KeyPress[0].Right == true693Helper.VMCurrentButton = 0694Options.PhysicalControls = true695end if696697if KeyPress[0].Up == true698Helper.VMCurrentButton = 3699Options.PhysicalControls = true700end if701702if KeyPress[0].Down == true703Helper.VMCurrentButton = 0704Options.PhysicalControls = true705end if706end if707#endplatform708709CheckResult = false710711if Helper.VMCurrentButton > -1712if KeyPress[0].Start == true713CheckResult = true714end if715716if KeyPress[0].ButtonA == true717CheckResult = true718end if719end if720721if CheckResult == true722PlaySfx(SFX_G_SELECT, false)723StopMusic()724Object.State++725end if726727if KeyPress[0].ButtonB == true728Object.State = EXTRASMENU_VISUALMODE_FADEOUT729Object.Timer = 248730PlayStageSfx(SFX_S_BACKBUTTON, false)731end if732break733734case EXTRASMENU_VISUALMODE_SELECTED735if Object.Timer < 30736Object.Timer++737else738Object.Timer = 0739Object.State++740end if741742break743744case EXTRASMENU_VISUALMODE_VIDEOPLAY745if Object.Timer < 384746Object.Timer += 8747else748#platform: Use_Origins749game.callbackParam0 = 1750EngineCallback(NOTIFY_EXTRAS_MODE)751#endplatform752753switch Helper.VMCurrentButton754case 0755LoadVideo("Opening")756break757758case 1759LoadVideo("Pencil_Test")760break761762case 2763LoadVideo("Good_Ending")764break765766case 3767LoadVideo("Bad_Ending")768break769770end switch771// Because of the way mobile cd worked (using the phone's native video player)772// it needed to reproduce separated videos depending of the soundtrack option773// for the sake of clarity and simplicity, the mobile code got commented out774//775// switch Helper.VMCurrentButton776// case 0777// if Options.Soundtrack == OST_JP778// LoadVideo("Opening")779// else780// LoadVideo("OpeningUS")781// end if782// break783//784// case 1785// LoadVideo("Pencil_Test")786// break787//788// case 2789// if Options.Soundtrack == OST_JP790// LoadVideo("Good_Ending")791// else792// LoadVideo("Good_EndingUS")793// end if794// break795//796// case 3797// if Options.Soundtrack == OST_JP798// LoadVideo("Bad_Ending")799// else800// LoadVideo("Bad_EndingUS")801// end if802// break803//804// end switch805806#platform: Use_Origins807game.callbackParam0 = 0808EngineCallback(NOTIFY_EXTRAS_MODE)809#endplatform810811#platform: Mobile812Helper.VMCurrentButton = -1813#endplatform814815Object.State = EXTRASMENU_FADEIN816end if817818TempValue0 = Object.Timer819if TempValue0 > 255820TempValue0 = 255821end if822SetScreenFade(0, 0, 0, TempValue0)823break824825case EXTRASMENU_VISUALMODE_FADEOUT826if Object.Timer > 0827Object.Alpha = Object.Timer828Object.Timer -= 8829else830Object.Alpha = 0831Object.State++832end if833break834835case EXTRASMENU_VISUALMODE_RETURN836TempValue0 = Object.CurrentButton837TempValue0 *= 40838TempValue0 += Screen.CenterY839TempValue0 -= 87840if Object.YPos < TempValue0841Object.YPos += 8842if Object.YPos > TempValue0843Object.YPos = TempValue0844end if845Object.Alpha = 0846else847#platform: Use_Origins848if Options.PhysicalControls == false849Object.CurrentButton = -1850end if851#endplatform852853#platform: Mobile854if Options.PhysicalControls == false855Object.CurrentButton = -1856end if857#endplatform858Object.State = EXTRASMENU_CONTROLS859Object.Alpha = 255860end if861break862863case EXTRASMENU_EXIT_MENU864if Object.Timer > 0865Object.Alpha = Object.Timer866Object.Timer -= 8867else868Object.Type = TypeName[Blank Object]869MenuWindow.State = MENUWINDOW_SHRINK870//All of this is MenuButton objects871Object[34].State = MENUBUTTON_BUTTONS_IN872Object[35].State = MENUBUTTON_BUTTONS_IN873Object[36].State = MENUBUTTON_BUTTONS_IN874Object[37].State = MENUBUTTON_BUTTONS_IN875Object[38].State = MENUBUTTON_BUTTONS_IN876Object[39].State = MENUBUTTON_BUTTONS_IN877Object[40].State = MENUBUTTON_BUTTONS_IN878Object[41].State = MENUBUTTON_BUTTONS_IN879Object[42].State = MENUBUTTON_BUTTONS_IN880//End881MenuHeading.State = MENUHEADING_LEAVE_SCREEN882MenuHeading.Header = MAINMENU_HEADER883end if884break885886case EXTRASMENU_FADEIN887if Object.Timer > 0888Object.Timer -= 8889else890Object.State = EXTRASMENU_VISUALMODE891PlayMusic(Options.Soundtrack)892end if893TempValue0 = Object.Timer894if TempValue0 > 255895TempValue0 = 255896end if897SetScreenFade(0, 0, 0, TempValue0)898break899900case EXTRASMENU_RETURN_TO_TITLE901Object.Timer += 4902if Object.Timer == 384903Stage.ActiveList = PRESENTATION_STAGE904Stage.ListPos = STAGE_P_TITLE905LoadStage()906end if907SetScreenFade(0, 0, 0, Object.Timer)908break909910end switch911end sub912913914sub ObjectDraw915switch Object.State916case EXTRASMENU_ENTER_MENU917case EXTRASMENU_CONTROLS918case EXTRASMENU_SELECTED_OPTION919case EXTRASMENU_LOAD_EXTRA_STAGE920case EXTRASMENU_EXIT_MENU921case EXTRASMENU_RETURN_TO_TITLE922Object.YPos = Screen.CenterY923Object.YPos -= 87924ArrayPos0 = 0925CallFunction(ExtrasMenu_DrawUnlocks) //Draw DA Garden926927Object.YPos += 40928ArrayPos0++929CallFunction(ExtrasMenu_DrawUnlocks) //Draw Visual Mode930931Object.YPos += 40932ArrayPos0++933CallFunction(ExtrasMenu_DrawUnlocks) //Draw Sound Test934935Object.YPos += 40936ArrayPos0++937CallFunction(ExtrasMenu_DrawUnlocks) //Draw Stage Select938break939940case EXTRASMENU_LOAD_VISUALMODE941ArrayPos0 = Object.CurrentButton942CallFunction(ExtrasMenu_DrawUnlocks)943break944945case EXTRASMENU_VISUALMODE_FADEIN946case EXTRASMENU_VISUALMODE947case EXTRASMENU_VISUALMODE_VIDEOPLAY948case EXTRASMENU_VISUALMODE_FADEOUT949case EXTRASMENU_VISUALMODE_RETURN950case EXTRASMENU_FADEIN951TempValue0 = Screen.CenterX952TempValue0 -= 64953DrawSpriteScreenFX(4, FX_INK, TempValue0, 96)954955if Helper.VMCurrentButton == 0956DrawSpriteScreenFX(26, FX_INK, TempValue0, 96)957DrawSpriteScreenFX(22, FX_INK, TempValue0, 96)958else959DrawSpriteScreenFX(18, FX_INK, TempValue0, 96)960end if961962DrawSpriteScreenFX(6, FX_INK, TempValue0, 153)963964if Helper.VMCurrentButton == 2965DrawSpriteScreenFX(26, FX_INK, TempValue0, 153)966DrawSpriteScreenFX(24, FX_INK, TempValue0, 153)967else968DrawSpriteScreenFX(20, FX_INK, TempValue0, 153)969end if970971TempValue0 += 128972DrawSpriteScreenFX(5, FX_INK, TempValue0, 96)973if Helper.VMCurrentButton == 1974DrawSpriteScreenFX(26, FX_INK, TempValue0, 96)975DrawSpriteScreenFX(23, FX_INK, TempValue0, 96)976else977DrawSpriteScreenFX(19, FX_INK, TempValue0, 96)978end if979980DrawSpriteScreenFX(7, FX_INK, TempValue0, 153)981if Helper.VMCurrentButton == 3982DrawSpriteScreenFX(26, FX_INK, TempValue0, 153)983DrawSpriteScreenFX(25, FX_INK, TempValue0, 153)984else985DrawSpriteScreenFX(21, FX_INK, TempValue0, 153)986end if987Object.Alpha = 255988CallFunction(ExtrasMenu_DrawUnlocks)989break990991case EXTRASMENU_VISUALMODE_SELECTED992TempValue1 = Object.Timer993TempValue1 &= 3994TempValue1 >>= 1995996TempValue0 = Screen.CenterX997TempValue0 -= 64998if Helper.VMCurrentButton == 0999if TempValue1 == 01000DrawSpriteScreenFX(4, FX_INK, TempValue0, 96)1001DrawSpriteScreenFX(26, FX_INK, TempValue0, 96)1002end if1003DrawSpriteScreenFX(22, FX_INK, TempValue0, 96)1004else1005DrawSpriteScreenFX(4, FX_INK, TempValue0, 96)1006DrawSpriteScreenFX(18, FX_INK, TempValue0, 96)1007end if10081009if Helper.VMCurrentButton == 21010if TempValue1 == 01011DrawSpriteScreenFX(6, FX_INK, TempValue0, 153)1012DrawSpriteScreenFX(26, FX_INK, TempValue0, 153)1013end if1014DrawSpriteScreenFX(24, FX_INK, TempValue0, 153)1015else1016DrawSpriteScreenFX(6, FX_INK, TempValue0, 153)1017DrawSpriteScreenFX(20, FX_INK, TempValue0, 153)1018end if10191020TempValue0 += 1281021if Helper.VMCurrentButton == 11022if TempValue1 == 01023DrawSpriteScreenFX(5, FX_INK, TempValue0, 96)1024DrawSpriteScreenFX(26, FX_INK, TempValue0, 96)1025end if1026DrawSpriteScreenFX(23, FX_INK, TempValue0, 96)1027else1028DrawSpriteScreenFX(5, FX_INK, TempValue0, 96)1029DrawSpriteScreenFX(19, FX_INK, TempValue0, 96)1030end if1031if Helper.VMCurrentButton == 31032if TempValue1 == 01033DrawSpriteScreenFX(7, FX_INK, TempValue0, 153)1034DrawSpriteScreenFX(26, FX_INK, TempValue0, 153)1035end if1036DrawSpriteScreenFX(25, FX_INK, TempValue0, 153)1037else1038DrawSpriteScreenFX(7, FX_INK, TempValue0, 153)1039DrawSpriteScreenFX(21, FX_INK, TempValue0, 153)1040end if1041Object.Alpha = 2551042CallFunction(ExtrasMenu_DrawUnlocks)1043break1044end switch1045end sub104610471048sub ObjectStartup1049switch Engine.Language1050case LANG_ENGLISH1051LoadSpriteSheet("Menu/MenuGfx2_EN.gif")1052break10531054case LANG_FRENCH1055LoadSpriteSheet("Menu/MenuGfx2_FR.gif")1056break10571058case LANG_ITALIAN1059LoadSpriteSheet("Menu/MenuGfx2_IT.gif")1060break10611062case LANG_DEUTSCH1063LoadSpriteSheet("Menu/MenuGfx2_DE.gif")1064break10651066case LANG_SPANISH1067LoadSpriteSheet("Menu/MenuGfx2_ES.gif")1068break10691070case LANG_JAPANESE1071LoadSpriteSheet("Menu/MenuGfx2_JP.gif")1072break10731074end switch10751076SpriteFrame(4, 2, 32, 32, 479, 34) // #0 - Gear1077SpriteFrame(4, 2, 32, 32, 479, 359) // #1 - Lock Gear1078SpriteFrame(4, 2, 32, 32, 479, 34) // #2 - Gear 21079SpriteFrame(4, 2, 32, 32, 479, 34) // #3 - Gear 310801081SpriteFrame(-18, -18, 36, 36, 476, 106) // #4 - Opening Icon1082SpriteFrame(-18, -18, 36, 36, 476, 143) // #5 - Pencil Test1083SpriteFrame(-18, -18, 36, 36, 476, 285) // #6 - Good Ending1084SpriteFrame(-18, -18, 36, 36, 476, 322) // #7 - Bad Ending10851086SpriteFrame(45, 12, 13, 13, 488, 1) // #8 - Orange Triangle1087SpriteFrame(0, 0, 250, 37, 259, 421) // #9 - Selection Border10881089ArrayPos0 = 321090ArrayPos1 = 481091TempValue0 = 01092TempValue1 = 01093while ArrayPos0 < 391094TempValue0 += SaveRAM[ArrayPos1]1095ArrayPos1++1096TempValue1 += SaveRAM[ArrayPos1]1097ArrayPos1 += 51098TempValue0 += SaveRAM[ArrayPos1]1099ArrayPos1 += 61100TempValue0 += SaveRAM[ArrayPos1]1101ArrayPos1 += 61102ArrayPos0++1103loop11041105// TempValue0 will be used to check regular zones total time in time attack1106// TempValue1 checks for special stages total time instead1107if TempValue0 == 01108TempValue0 = 40000011091110TempValue1 = 4000001111end if11121113if TempValue0 < 2247571114SpriteFrame(64, 12, 128, 16, 1, 120) // #10 - D. A. Garden1115Options.DAGardenFlag = true1116else1117SpriteFrame(64, 12, 128, 16, 1, 426) // #10 - Locked D. A. Garden1118end if11191120if TempValue0 < 1546121121SpriteFrame(64, 12, 128, 16, 1, 137) // #11 - Visual Mode1122Options.VisualModeFlag = true1123else1124SpriteFrame(64, 12, 128, 16, 130, 426) // #11 - Locked Visual Mode1125end if11261127if TempValue1 < 242071128SpriteFrame(64, 12, 128, 16, 1, 154) // #12 - Sound Test1129Options.SoundTestFlag = true1130else1131SpriteFrame(64, 12, 48, 16, 404, 285) // #12 - Locked Sound Test1132end if11331134if TempValue1 < 301251135SpriteFrame(64, 12, 128, 16, 1, 171) // #13 - Stage Select1136Options.StageSelectFlag = true1137else1138SpriteFrame(64, 12, 48, 16, 404, 285) // #13 - Locked Stage Select1139end if11401141if TempValue0 < 2247571142SpriteFrame(64, 12, 128, 16, 130, 120) // #14 - Select D. A. Garden1143else1144SpriteFrame(64, 12, 128, 16, 1, 426) // #14 - Locked D. A. Garden1145end if11461147if TempValue0 < 1546121148SpriteFrame(64, 12, 128, 16, 130, 137) // #15 - Select Visual Mode1149else1150SpriteFrame(64, 12, 128, 16, 130, 426) // #15 - Locked Visual Mode1151end if11521153if TempValue1 < 242071154SpriteFrame(64, 12, 128, 16, 130, 154) // #16 - Select Sound Test1155else1156SpriteFrame(64, 12, 48, 16, 404, 285) // #16 - Locked Sound Test1157end if11581159if TempValue1 < 301251160SpriteFrame(64, 12, 128, 16, 130, 171) // #17 - Select Stage Select1161else1162SpriteFrame(64, 12, 48, 16, 404, 285) // #17 - Locked Stage Select1163end if11641165SpriteFrame(-48, 25, 96, 8, 1, 496) // #18 - Opening Text1166SpriteFrame(-48, 25, 96, 8, 1, 504) // #19 - Pencil Test Text1167SpriteFrame(-48, 25, 96, 8, 98, 496) // #20 - Good Ending1168SpriteFrame(-48, 25, 96, 8, 98, 504) // #21 - Bad Ending11691170SpriteFrame(-48, 25, 96, 8, 195, 496) // #22 - Opening Text Highlight1171SpriteFrame(-48, 25, 96, 8, 195, 504) // #23 - Pencil Test Text Highlight1172SpriteFrame(-48, 25, 96, 8, 292, 496) // #24 - Good Ending Text Highlight1173SpriteFrame(-48, 25, 96, 8, 292, 504) // #25 - Bad Ending Text Highlight11741175SpriteFrame(-24, -24, 48, 48, 405, 88) // #26 - Icon Border1176end sub117711781179// ========================1180// Editor Subs1181// ========================11821183sub RSDKDraw1184DrawSprite(0)1185end sub118611871188sub RSDKLoad1189LoadSpriteSheet("Menu/MenuGfx2_EN.gif")1190SpriteFrame(32, 0, 160, 30, 1, 708) // #8 Extras11911192SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")1193end sub119411951196