Path: blob/main/Scripts/Menu/DemoMenu.txt
1319 views
//------------------Sonic CD Demo Menu Script-----------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//3//---This Object is normally only used by Lite Data files-----//45// Aliases6#alias Object.Value0 : Object.Fade7#alias Object.Value1 : Object.CurrentButton8#alias Object.Value2 : Object.CurrentRecord9#alias Object.Value3 : Object.BossUnlockRecord1011// MenuHeading Aliases12#alias Object[33].State : MenuHeading.State13#alias Object[33].PropertyValue : MenuHeading.Header1415// MenuWindow Alias16#alias Object[-1].State : MenuWindow.State1718// States19#alias 0 : DEMOMENU_FADEIN20#alias 1 : DEMOMENU_CONTROLS21#alias 2 : DEMOMENU_LEVEL_SELECTED22#alias 3 : DEMOMENU_BACK23#alias 4 : DEMOMENU_LEVEL_LOAD2425// Menu Heading States26#alias 1 : MENUHEADING_LEAVE_SCREEN27#alias 2 : MENUHEADING_ENTER_SCREEN2829// MenuButton States30#alias 1 : MENUBUTTON_BUTTONS_IN3132// MenuWindow States33#alias 3 : MENUWINDOW_SHRINK3435// MenuHeading PropertyValues36#alias 5 : MAINMENU_HEADER3738// Presentation Stages39#alias 0 : STAGE_R_PPZ1A40#alias 34 : STAGE_R_QQZ2A41#alias 38 : STAGE_R_QQZ3C4243// Global SFX44#alias 23 : SFX_G_MENUBUTTON45#alias 27 : SFX_G_SELECT4647// Stage SFX48#alias 1 : SFX_S_BACKBUTTON4950// Game Mode Aliases51#alias 3 : MODE_TRIAL5253//SaveRAM Values54// 48 : PPZ1DemoRecord55// 49 : QQZ2DemoRecord5657// Function declarations58#function DemoMenu_StageTimeRecord59#function DemoMenu_StageTotalTimeRecord60#function DemoMenu_StagePortraitMovement616263function DemoMenu_StageTimeRecord64TempValue4 = TempValue065TempValue4 += 466TempValue2 = TempValue167TempValue2 /= 600068TempValue3 = TempValue269TempValue3 /= 1070TempValue3 += 1171DrawSpriteScreenFX(TempValue3, FX_INK, TempValue4, 136)7273TempValue4 += 674TempValue3 = TempValue275TempValue3 %= 1076TempValue3 += 1177DrawSpriteScreenFX(TempValue3, FX_INK, TempValue4, 136)7879TempValue4 += 1180TempValue2 = TempValue181TempValue2 /= 10082TempValue2 %= 6083TempValue3 = TempValue284TempValue3 /= 1085TempValue3 += 1186DrawSpriteScreenFX(TempValue3, FX_INK, TempValue4, 136)8788TempValue4 += 689TempValue3 = TempValue290TempValue3 %= 1091TempValue3 += 1192DrawSpriteScreenFX(TempValue3, FX_INK, TempValue4, 136)9394TempValue4 += 1395TempValue2 = TempValue196TempValue2 %= 10097TempValue3 = TempValue298TempValue3 /= 1099TempValue3 += 11100DrawSpriteScreenFX(TempValue3, FX_INK, TempValue4, 136)101102TempValue4 += 6103TempValue3 = TempValue2104TempValue3 %= 10105TempValue3 += 11106DrawSpriteScreenFX(TempValue3, FX_INK, TempValue4, 136)107end function108109110function DemoMenu_StageTotalTimeRecord111TempValue4 = TempValue0112TempValue2 = TempValue1113TempValue2 /= 6000114TempValue3 = TempValue2115TempValue3 /= 10116TempValue3 += Object.Frame117DrawSpriteScreenFX(TempValue3, FX_INK, TempValue4, 155)118119TempValue4 += 8120TempValue3 = TempValue2121TempValue3 %= 10122TempValue3 += Object.Frame123DrawSpriteScreenFX(TempValue3, FX_INK, TempValue4, 155)124125TempValue4 += 15126TempValue2 = TempValue1127TempValue2 /= 100128TempValue2 %= 60129TempValue3 = TempValue2130TempValue3 /= 10131TempValue3 += Object.Frame132DrawSpriteScreenFX(TempValue3, FX_INK, TempValue4, 155)133134TempValue4 += 8135TempValue3 = TempValue2136TempValue3 %= 10137TempValue3 += Object.Frame138DrawSpriteScreenFX(TempValue3, FX_INK, TempValue4, 155)139140TempValue4 += 17141TempValue2 = TempValue1142TempValue2 %= 100143TempValue3 = TempValue2144TempValue3 /= 10145TempValue3 += Object.Frame146DrawSpriteScreenFX(TempValue3, FX_INK, TempValue4, 155)147148TempValue4 += 8149TempValue3 = TempValue2150TempValue3 %= 10151TempValue3 += Object.Frame152DrawSpriteScreenFX(TempValue3, FX_INK, TempValue4, 155)153end function154155156function DemoMenu_StagePortraitMovement157Cos(TempValue4, Object.Rotation)158TempValue4 >>= 4159TempValue4 += TempValue2160Sin(TempValue5, Object.Rotation)161TempValue5 *= 3162TempValue5 >>= 6163TempValue5 += TempValue3164Object.Rotation += 128165Object.Rotation &= 511166EditFrame(10, 2, 2, 64, 58, TempValue4, TempValue5)167end function168169170sub ObjectMain171switch Object.State172case DEMOMENU_FADEIN173if Options.PhysicalControls == false174Object.CurrentButton = -1175else176Object.CurrentButton = 0177end if178179if Object.Fade == 0180Object.BossUnlockRecord = 9000181Object.CurrentRecord = SaveRAM[48] // PPZ1 Demo Record182Object.CurrentRecord += SaveRAM[49] // QQZ2 Demo Record183if Object.CurrentRecord == 0184SaveRAM[48] = 60000185SaveRAM[49] = 60000186Object.CurrentRecord = 120000187end if188end if189190if Object.Fade < 256191Object.Alpha = Object.Fade192Object.Fade += 6193else194Object.Fade = 0195Object.Alpha = 255196Object.State++197end if198break199200case DEMOMENU_CONTROLS201if Options.PhysicalControls == true202203if KeyPress[0].Left == true204Object.CurrentButton--205if Object.CurrentButton < 0206Object.CurrentButton = 2207end if208PlaySfx(SFX_G_MENUBUTTON, false)209end if210211if KeyPress[0].Right == true212Object.CurrentButton++213if Object.CurrentButton > 2214Object.CurrentButton = 0215end if216PlaySfx(SFX_G_MENUBUTTON, false)217end if218219CheckTouchRect(0, 0, Screen.XSize, Screen.YSize)220if CheckResult > -1221Options.PhysicalControls = false222Object.CurrentButton = -1223end if224else225226CheckTouchRect(0, 0, Screen.XSize, Screen.YSize)227TempValue3 = CheckResult228TempValue0 = Screen.CenterX229TempValue0 -= 113230TempValue1 = Screen.CenterX231TempValue1 -= 45232CheckTouchRect(TempValue0, 67, TempValue1, 157)233if CheckResult > -1234Object.CurrentButton = 0235else236if TempValue3 < 0237if Object.CurrentButton == 0238KeyPress[0].Start = true239end if240else241if Object.CurrentButton == 0242Object.CurrentButton = -1243end if244end if245end if246247TempValue0 = Screen.CenterX248TempValue0 -= 35249TempValue1 = Screen.CenterX250TempValue1 += 35251CheckTouchRect(TempValue0, 67, TempValue1, 157)252if CheckResult > -1253Object.CurrentButton = 1254else255if TempValue3 < 0256if Object.CurrentButton == 1257KeyPress[0].Start = true258end if259else260if Object.CurrentButton == 1261Object.CurrentButton = -1262end if263end if264end if265266if Object.CurrentRecord <= Object.BossUnlockRecord267TempValue0 = Screen.CenterX268TempValue0 += 45269TempValue1 = Screen.CenterX270TempValue1 += 113271CheckTouchRect(TempValue0, 67, TempValue1, 157)272if CheckResult > -1273Object.CurrentButton = 2274else275if TempValue3 < 0276if Object.CurrentButton == 2277KeyPress[0].Start = true278end if279else280if Object.CurrentButton == 2281Object.CurrentButton = -1282end if283end if284end if285end if286CallFunction(MenuHeading_CheckTouchBack)287288if KeyPress[0].Left == true289Object.CurrentButton = 1290Options.PhysicalControls = true291end if292293if KeyPress[0].Right == true294Object.CurrentButton = 0295Options.PhysicalControls = true296end if297298end if299300CheckResult = false301if Object.CurrentButton > -1302if KeyPress[0].Start == true303if Object.CurrentButton == 2304if Object.CurrentRecord <= Object.BossUnlockRecord305CheckResult = true306end if307else308CheckResult = true309end if310end if311312if KeyPress[0].ButtonA == true313if Object.CurrentButton == 2314if Object.CurrentRecord <= Object.BossUnlockRecord315CheckResult = true316end if317else318CheckResult = true319end if320end if321end if322323if CheckResult == true324Object.State++325StopMusic()326PlaySfx(SFX_G_SELECT, false)327end if328329if KeyPress[0].ButtonB == true330Object.Fade = 248331Object.State = DEMOMENU_BACK332PlayStageSfx(SFX_S_BACKBUTTON, false)333end if334break335336case DEMOMENU_LEVEL_SELECTED337if Object.AnimationTimer < 30338Object.AnimationTimer++339else340Object.AnimationTimer = 0341Object.State = DEMOMENU_LEVEL_LOAD342end if343break344345case DEMOMENU_BACK346if Object.Fade > 0347Object.Alpha = Object.Fade348Object.Fade -= 8349else350Object.Type = TypeName[Blank Object]351MenuWindow.State = MENUWINDOW_SHRINK352//All of this is MenuButton Objects353Object[34].State = MENUBUTTON_BUTTONS_IN354Object[35].State = MENUBUTTON_BUTTONS_IN355Object[36].State = MENUBUTTON_BUTTONS_IN356Object[37].State = MENUBUTTON_BUTTONS_IN357Object[38].State = MENUBUTTON_BUTTONS_IN358Object[39].State = MENUBUTTON_BUTTONS_IN359Object[40].State = MENUBUTTON_BUTTONS_IN360Object[41].State = MENUBUTTON_BUTTONS_IN361Object[42].State = MENUBUTTON_BUTTONS_IN362//End363MenuHeading.State = MENUHEADING_LEAVE_SCREEN364MenuHeading.Header = MAINMENU_HEADER365end if366break367368case DEMOMENU_LEVEL_LOAD369if Object.Fade < 320370Object.Fade += 8371else372Options.GameMode = MODE_TRIAL373Player.Score = 0374Player.Lives = 3375Player.ScoreBonus = 50000376Transporter_Destroyed = false377MetalSonic_Destroyed = false378379TimeAttack.Round = Object.CurrentButton380Stage.ActiveList = REGULAR_STAGE381switch Object.CurrentButton382case 0383Stage.ListPos = STAGE_R_PPZ1A384Good_Future = false385break386case 1387Stage.ListPos = STAGE_R_QQZ2A388Good_Future = false389break390case 2391Stage.ListPos = STAGE_R_QQZ3C392Good_Future = true393break394end switch395LoadStage()396end if397SetScreenFade(0, 0, 0, Object.Fade)398break399400end switch401end sub402403404sub ObjectDraw405TempValue0 = Screen.CenterX406TempValue0 -= 113407DrawSpriteScreenFX(0, FX_INK, TempValue0, 57)408409TempValue2 = 33410TempValue3 = 267411CallFunction(DemoMenu_StagePortraitMovement)412413DrawSpriteScreenFX(10, FX_INK, TempValue0, 57)414DrawSpriteScreenFX(6, FX_INK, TempValue0, 134)415416TempValue1 = SaveRAM[48] // PPZ1DemoRecord417CallFunction(DemoMenu_StageTimeRecord)418419TempValue0 += 78420DrawSpriteScreenFX(1, FX_INK, TempValue0, 57)421422TempValue2 = 33423TempValue3 = 396424CallFunction(DemoMenu_StagePortraitMovement)425426DrawSpriteScreenFX(10, FX_INK, TempValue0, 57)427DrawSpriteScreenFX(6, FX_INK, TempValue0, 134)428429TempValue1 = SaveRAM[49] // QQZ2DemoRecord430CallFunction(DemoMenu_StageTimeRecord)431432TempValue0 += 78433DrawSpriteScreenFX(2, FX_INK, TempValue0, 57)434435TempValue2 = 321436TempValue3 = 399437CallFunction(DemoMenu_StagePortraitMovement)438439DrawSpriteScreenFX(10, FX_INK, TempValue0, 57)440441Object.Rotation += 129442Object.Rotation &= 511443444TempValue0 = Screen.CenterX445446TempValue1 = Object.AnimationTimer447TempValue1 &= 3448TempValue1 >>= 1449TempValue1 += 7450451switch Object.CurrentButton452case 0453TempValue0 -= 113454DrawSpriteScreenFX(TempValue1, FX_INK, TempValue0, 57)455break456457case 1458TempValue0 -= 35459DrawSpriteScreenFX(TempValue1, FX_INK, TempValue0, 57)460break461462case 2463TempValue0 += 43464DrawSpriteScreenFX(TempValue1, FX_INK, TempValue0, 57)465break466467end switch468469if Object.CurrentRecord > Object.BossUnlockRecord470TempValue0 = Screen.CenterX471TempValue0 += 97472DrawSpriteScreenFX(9, FX_INK, TempValue0, 128)473474TempValue0 = Screen.CenterX475TempValue0 -= 113476DrawSpriteScreenFX(3, FX_INK, TempValue0, 155)477DrawSpriteScreenFX(4, FX_INK, TempValue0, 155)478479TempValue0 += 44480Object.Frame = 21481TempValue1 = Object.CurrentRecord482CallFunction(DemoMenu_StageTotalTimeRecord)483484TempValue0 += 114485DrawSpriteScreenFX(5, FX_INK, TempValue0, 154)486487TempValue0 += 11488Object.Frame = 31489TempValue1 = Object.BossUnlockRecord490CallFunction(DemoMenu_StageTotalTimeRecord)491else492TempValue0 = Screen.CenterX493TempValue0 -= 113494DrawSpriteScreenFX(3, FX_INK, TempValue0, 155)495DrawSpriteScreenFX(4, FX_INK, TempValue0, 155)496497TempValue0 += 44498499Object.Frame = 21500TempValue1 = Object.CurrentRecord501CallFunction(DemoMenu_StageTotalTimeRecord)502end if503end sub504505506sub ObjectStartup507LoadSpriteSheet("Menu/MenuGfx1_EN.gif")508509SpriteFrame(0, 0, 68, 90, 321, 1) //#0 - Palmtree Panic Border510SpriteFrame(0, 0, 68, 90, 321, 92) //#1 - Quartz Quadrant Border511SpriteFrame(0, 0, 68, 90, 321, 183) //#2 - Boss Border512SpriteFrame(0, 0, 36, 13, 219, 440) //#3 - Total513SpriteFrame(61, 0, 30, 5, 219, 434) //#4 - ´ ´´514SpriteFrame(0, 0, 66, 14, 211, 349) //#5 - Locked515SpriteFrame(17, 0, 22, 4, 169, 435) //#6 - Large ´ ´´516SpriteFrame(-1, -1, 70, 92, 321, 274) //#7 - Border517SpriteFrame(-1, -1, 0, 0, 325, 279) //#8 - Empty518SpriteFrame(0, -10, 8, 13, 258, 418) //#9 - Lock519SpriteFrame(2, 2, 64, 58, 1, 1) //#10 - Unknown520// Small Numbers521SpriteFrame(0, 0, 6, 8, 244, 400) //#11 - 0522SpriteFrame(0, 0, 6, 8, 251, 400) //#12 - 1523SpriteFrame(0, 0, 6, 8, 258, 400) //#13 - 2524SpriteFrame(0, 0, 6, 8, 265, 400) //#14 - 3525SpriteFrame(0, 0, 6, 8, 244, 409) //#15 - 4526SpriteFrame(0, 0, 6, 8, 251, 409) //#16 - 5527SpriteFrame(0, 0, 6, 8, 258, 409) //#17 - 6528SpriteFrame(0, 0, 6, 8, 265, 409) //#18 - 7529SpriteFrame(0, 0, 6, 8, 244, 418) //#19 - 8530SpriteFrame(0, 0, 6, 8, 251, 418) //#20 - 9531// White Numbers532SpriteFrame(0, 0, 8, 16, 154, 400) //#21 - 0533SpriteFrame(0, 0, 8, 16, 163, 400) //#22 - 1534SpriteFrame(0, 0, 8, 16, 172, 400) //#23 - 2535SpriteFrame(0, 0, 8, 16, 181, 400) //#24 - 3536SpriteFrame(0, 0, 8, 16, 190, 400) //#25 - 4537SpriteFrame(0, 0, 8, 16, 199, 400) //#26 - 5538SpriteFrame(0, 0, 8, 16, 208, 400) //#27 - 6539SpriteFrame(0, 0, 8, 16, 217, 400) //#28 - 7540SpriteFrame(0, 0, 8, 16, 226, 400) //#29 - 8541SpriteFrame(0, 0, 8, 16, 235, 400) //#30 - 9542// Red Numbers543SpriteFrame(0, 0, 8, 16, 154, 417) //#31 - 0544SpriteFrame(0, 0, 8, 16, 163, 417) //#32 - 1545SpriteFrame(0, 0, 8, 16, 172, 417) //#33 - 2546SpriteFrame(0, 0, 8, 16, 181, 417) //#34 - 3547SpriteFrame(0, 0, 8, 16, 190, 417) //#35 - 4548SpriteFrame(0, 0, 8, 16, 199, 417) //#36 - 5549SpriteFrame(0, 0, 8, 16, 208, 417) //#37 - 6550SpriteFrame(0, 0, 8, 16, 217, 417) //#38 - 7551SpriteFrame(0, 0, 8, 16, 226, 417) //#39 - 8552SpriteFrame(0, 0, 8, 16, 235, 417) //#40 - 9553end sub554555556// ========================557// Editor Subs558// ========================559560sub RSDKDraw561DrawSprite(0)562end sub563564565sub RSDKLoad566LoadSpriteSheet("Global/Display.gif")567SpriteFrame(-17, -5, 34, 11, 1, 176) // "Demo"568569SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")570end sub571572573