Path: blob/master/Sonic 1/Scripts/Title/Logo.txt
1483 views
// ----------------------------------1// RSDK Project: Sonic 12// Script Description: Logo Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.timer12private alias object.value1 : object.playerPos.x13private alias object.value2 : object.playerPos.y14private alias object.value3 : object.paletteTimer15private alias object.value4 : object.arrayPos16private alias object.value5 : object.armFrame17private alias object.value6 : object.armPos.x18private alias object.value7 : object.armPos.y19private alias object.value8 : object.charTitlePos20private alias object.value9 : object.speedPercent21private alias object.value10 : object.disablePaletteRotation // Not actually used as far as I can tell22private alias object.value11 : object.player2Pos.x23private alias object.value12 : object.player2Pos.y24private alias object.value13 : object.p2Frame25private alias object.value14 : object.levelSelectCheatPos26private alias object.value15 : object.debugModeCheatPos27private alias object.value16 : object.regionSwitchCheatPos28private alias object.value17 : object.character2930// Alias for the character workaround31private alias temp1 : temp.titleCharacter3233// States34// The first 3 states are identical so there's really not much reason to have em seperate but it is what it is3536// Sonic States37private alias 0 : LOGO_SETUP_SONIC38private alias 1 : LOGO_FADEIN_SONIC39private alias 2 : LOGO_RISEDELAY_SONIC40private alias 3 : LOGO_RISE_SONIC41private alias 4 : LOGO_ANIMATE_SONIC42private alias 5 : LOGO_FINGERWIGGLE_SONIC43private alias 6 : LOGO_P2TEXTAPPEAR_SONIC44private alias 7 : LOGO_MOVELEFT_SONIC45private alias 8 : LOGO_RISEP2_SONIC46private alias 9 : LOGO_ANIMATEP2_SONIC47private alias 10 : LOGO_ARMAPPEARP2_SONIC48private alias 11 : LOGO_ANIMATEP1_SONIC4950// Tails States51private alias 0 : LOGO_SETUP_TAILS52private alias 1 : LOGO_FADEIN_TAILS53private alias 2 : LOGO_RISEDELAY_TAILS54private alias 3 : LOGO_RISE_TAILS55private alias 4 : LOGO_ANIMATE_TAILS56private alias 5 : LOGO_ARMAPPEAR_TAILS57private alias 6 : LOGO_PREPLOGOAPPEAR_TAILS58private alias 7 : LOGO_SHOWLOGO_TAILS59private alias 8 : LOGO_IDLE_TAILS6061// Knux States62private alias 0 : LOGO_SETUP_KNUX63private alias 1 : LOGO_FADEIN_KNUX64private alias 2 : LOGO_RISEDELAY_KNUX65private alias 3 : LOGO_RISE_KNUX66private alias 4 : LOGO_ANIMATE_KNUX67private alias 5 : LOGO_ARMAPPEAR_KNUX68private alias 6 : LOGO_ANIMATEARM_KNUX69private alias 7 : LOGO_MOVEARM_KNUX70private alias 8 : LOGO_PREPLOGOAPPEAR_KNUX71private alias 9 : LOGO_ARMAPPEAR2_KNUX72private alias 10 : LOGO_ANIMATEARM2_KNUX73private alias 11 : LOGO_MOVEARM2_KNUX74private alias 12 : LOGO_SHOWLOGO_KNUX75private alias 13 : LOGO_IDLE_KNUX7677// Game Modes78private alias 0 : MODE_NOSAVE7980// Player List Pos Aliases81private alias 0 : PLAYER_SONIC_A82private alias 1 : PLAYER_TAILS_A83private alias 2 : PLAYER_KNUCKLES_A84private alias 3 : PLAYER_SONIC_TAILS_A85private alias 4 : PLAYER_KNUCKLES_TAILS_A // (not used in this script, but left here for reference)86private alias 5 : PLAYER_AMY_A87private alias 6 : PLAYER_AMY_TAILS_A888990// ========================91// Function Declarations92// ========================9394reserve function Logo_CheckButtonCheatCodes959697// ========================98// Tables99// ========================100101private table Logo_playerPalette1020x6060A0, 0x80A0E0, 0xE08000, 0xE0C080, 0xA04000, 0x600000, 0xE02080, 0xE00040, 0x800000, 0x806080, 0xA08060, 0xE0C0A0, 0x80A0A0, 0xA04020103end table104105private table Logo_tailsBodyOffsets106-50, -40, -53, -56, -58, -68, -60, -74, -62, -78, -63, -79, -64, -80107end table108109private table Logo_tailsArmOffsets1105, -32, 6, -31111end table112113114// ========================115// Function Definitions116// ========================117118private function Logo_CheckButtonCheatCodes119temp0 = 0 // keyID120121if keyPress[0].up == true122temp0 = 1123end if124125if keyPress[0].down == true126temp0 = 2127end if128129if keyPress[0].left == true130temp0 = 3131end if132133if keyPress[0].right == true134temp0 = 4135end if136137if keyPress[0].buttonA == true138temp0 = 5139end if140141if keyPress[0].buttonB == true142temp0 = 6143end if144145if keyPress[0].buttonC == true146temp0 = 7147end if148149// Level Select Cheat150// 1, 2, 3, 4151// up, down, left, right152switch object.levelSelectCheatPos153case 0154if temp0 == 1155object.levelSelectCheatPos++156else157if temp0 != 0158object.levelSelectCheatPos = 0159end if160end if161break162163case 1164if temp0 == 2165object.levelSelectCheatPos++166else167if temp0 != 0168object.levelSelectCheatPos = 0169end if170end if171break172173case 2174if temp0 == 3175object.levelSelectCheatPos++176else177if temp0 != 0178object.levelSelectCheatPos = 0179end if180end if181break182183case 3184if temp0 == 4185object.levelSelectCheatPos++186object.levelSelectCheatPos = 0187options.stageSelectFlag = true188PlaySfx(SfxName[Ring L], false)189else190if temp0 != 0191object.levelSelectCheatPos = 0192end if193end if194break195196end switch197198// Debug Mode Cheat199// 1, 7, 2, 7, 3, 7, 4, 7200// up, C, down, C, left, C, right, C201switch object.debugModeCheatPos202case 0203if temp0 == 1204object.debugModeCheatPos++205else206if temp0 != 0207object.debugModeCheatPos = 0208end if209end if210break211212case 1213if temp0 == 7214object.debugModeCheatPos++215else216if temp0 != 0217object.debugModeCheatPos = 0218end if219end if220break221222case 2223if temp0 == 2224object.debugModeCheatPos++225else226if temp0 != 0227object.debugModeCheatPos = 0228end if229end if230break231232case 3233if temp0 == 7234object.debugModeCheatPos++235else236if temp0 != 0237object.debugModeCheatPos = 0238end if239end if240break241242case 4243if temp0 == 3244object.debugModeCheatPos++245else246if temp0 != 0247object.debugModeCheatPos = 0248end if249end if250break251252case 5253if temp0 == 7254object.debugModeCheatPos++255else256if temp0 != 0257object.debugModeCheatPos = 0258end if259end if260break261262case 6263if temp0 == 4264object.debugModeCheatPos++265else266if temp0 != 0267object.debugModeCheatPos = 0268end if269end if270break271272case 7273if temp0 == 7274object.debugModeCheatPos = 0275stage.debugMode = true276PlaySfx(SfxName[Ring L], false)277else278if temp0 != 0279object.debugModeCheatPos = 0280end if281end if282break283284end switch285286// Region Switch Cheat287// 1, 2, 2, 2, 2, 1288// up, down, down, down, down, up289switch object.regionSwitchCheatPos290case 0291if temp0 == 1292object.regionSwitchCheatPos++293else294if temp0 != 0295object.regionSwitchCheatPos = 0296end if297end if298break299300case 1301case 2302case 3303case 4304if temp0 == 2305object.regionSwitchCheatPos++306else307if temp0 != 0308object.regionSwitchCheatPos = 0309end if310end if311break312313case 5314if temp0 == 1315object.regionSwitchCheatPos++316object.regionSwitchCheatPos = 0317options.region ^= 1318PlaySfx(SfxName[Ring L], false)319else320if temp0 != 0321object.regionSwitchCheatPos = 0322end if323end if324break325326end switch327end function328329330// ========================331// Events332// ========================333334event ObjectUpdate335#platform: USE_ORIGINS336if object.state <= LOGO_FADEIN_SONIC337object.character = stage.playerListPos338end if339#endplatform340341#platform: USE_STANDALONE342if stage.player2Enabled == true343stage.playerListPos = PLAYER_SONIC_TAILS_A344end if345#endplatform346347if object.disablePaletteRotation == false348object.paletteTimer++349if object.paletteTimer == 6350object.paletteTimer = 0351RotatePalette(0, 192, 195, true)352end if353end if354355#platform: USE_STANDALONE356// Check for cheat codes in No Save Mode357if options.gameMode == MODE_NOSAVE358#endplatform359if object.state > LOGO_RISE_SONIC360CallFunction(Logo_CheckButtonCheatCodes)361end if362#platform: USE_STANDALONE363end if364#endplatform365end event366367368event ObjectDraw369temp0 = true370371// Have to use a temp value workaround due to compiler shenanigans372// Normally, it's just `switch stage.playerListPos` or `switch object.character`, but we can't wrap a switch start with platform checks so this is the next best thing373#platform: USE_STANDALONE374temp.titleCharacter = stage.playerListPos375#endplatform376#platform: USE_ORIGINS377temp.titleCharacter = object.character378#endplatform379380switch temp.titleCharacter381case PLAYER_TAILS_A382#platform: USE_ORIGINS383case PLAYER_AMY_A384case PLAYER_AMY_TAILS_A385#endplatform386if object.state == LOGO_P2TEXTAPPEAR_SONIC387temp0 = false388end if389break390391case PLAYER_KNUCKLES_A392if object.state == LOGO_IDLE_TAILS393temp0 = false394end if395break396case PLAYER_SONIC_TAILS_A397if object.state == LOGO_ANIMATEARM_KNUX398temp0 = false399end if400break401end switch402403// Draw Logo (Top Half)404if temp0 != false405DrawSpriteScreenXY(9, screen.xcenter, object.ypos)406end if407408switch temp.titleCharacter409case PLAYER_SONIC_A410case PLAYER_SONIC_TAILS_A411#platform: USE_ORIGINS412case PLAYER_AMY_A // amy just uses sonic's title screen413case PLAYER_AMY_TAILS_A414#endplatform415switch object.state416case LOGO_SETUP_SONIC417screen.xoffset = 0418419object.priority = PRIORITY_ACTIVE420object.timer = 0x100421stage.activeLayer[0] = 1 //set bg to lowest layer422object.state++423424SetScreenFade(0x00, 0x00, 0x00, 0xFF)425break426427case LOGO_FADEIN_SONIC428screen.xoffset += 2429430if object.timer > 0431object.timer -= 8432else433PlayMusic(0)434object.state++435end if436437SetScreenFade(0x00, 0x00, 0x00, object.timer)438break439440case LOGO_RISEDELAY_SONIC441screen.xoffset += 2442443object.timer++444if object.timer == 38445object.timer = 0446object.playerPos.y = 186447object.frame = 0448object.state++449end if450break451452case LOGO_RISE_SONIC453screen.xoffset += 2454455object.playerPos.y -= 8456if object.playerPos.y < 144457object.frame = 1458end if459460if object.playerPos.y <= 112461object.playerPos.y = 112462object.state++463end if464465DrawSpriteScreenXY(object.frame, screen.xcenter, object.playerPos.y)466break467468case LOGO_ANIMATE_SONIC469screen.xoffset += 2470471object.timer++472if object.timer == 8473object.frame++474if object.frame >= 7475object.frame = 7476object[+1].type = TypeName[Start Message]477object[+1].priority = PRIORITY_ACTIVE478object[+1].xpos = screen.xcenter479480if temp.titleCharacter == 3481object[+1].ypos = 216482object.state = LOGO_P2TEXTAPPEAR_SONIC483else484object[+1].ypos = 192485object.state++486end if487end if488object.timer = 0489end if490491DrawSpriteScreenXY(object.frame, screen.xcenter, object.playerPos.y)492break493494case LOGO_FINGERWIGGLE_SONIC495screen.xoffset += 2496497object.timer++498if object.timer == 8499object.frame++500if object.frame > 8501object.frame = 7502end if503object.timer = 0504end if505506DrawSpriteScreenXY(9, screen.xcenter, object.ypos)507DrawSpriteScreenXY(object.frame, screen.xcenter, object.playerPos.y)508break509510case LOGO_P2TEXTAPPEAR_SONIC511screen.xoffset += 2512513object.ypos -= 2514object.playerPos.y -= 2515if object.ypos <= -24516object.charTitlePos = screen.xsize517object.charTitlePos += 108518object.state++519object.playerPos.x = screen.xcenter520end if521522DrawSpriteScreenXY(9, screen.xcenter, object.ypos)523DrawSpriteScreenXY(object.frame, screen.xcenter, object.playerPos.y)524break525526case LOGO_MOVELEFT_SONIC527screen.xoffset += 2528529object.timer++530object.playerPos.x++531object.charTitlePos -= 8532temp0 = screen.xcenter533temp0 += 12534if object.charTitlePos <= temp0535object.charTitlePos = temp0536object.p2Frame = 12537object.state++538end if539540DrawSpriteScreenXY(object.frame, object.playerPos.x, object.playerPos.y)541542if options.region == 1543DrawSpriteScreenXY(33, object.charTitlePos, 228)544else545DrawSpriteScreenXY(31, object.charTitlePos, 228)546end if547548DrawSpriteScreenXY(36, object.charTitlePos, 228)549break550551case LOGO_RISEP2_SONIC552screen.xoffset += 2553554temp0 = object.arrayPos555GetTableValue(object.player2Pos.x, temp0, Logo_tailsBodyOffsets)556object.player2Pos.x += screen.xcenter557object.player2Pos.x -= 24558559temp0++560GetTableValue(object.player2Pos.y, temp0, Logo_tailsBodyOffsets)561object.player2Pos.y += screen.ycenter562object.player2Pos.y -= 24563564object.timer++565object.timer &= 3566if object.timer == 0567object.arrayPos += 2568if object.arrayPos == 14569object.state++570end if571end if572573DrawSpriteScreenXY(object.frame, object.playerPos.x, object.playerPos.y)574DrawSpriteScreenXY(object.p2Frame, object.player2Pos.x, object.player2Pos.y)575576if options.region == 1577DrawSpriteScreenXY(33, object.charTitlePos, 228)578else579DrawSpriteScreenXY(31, object.charTitlePos, 228)580end if581582DrawSpriteScreenXY(36, object.charTitlePos, 228)583break584585case LOGO_ANIMATEP2_SONIC586screen.xoffset += 2587588object.timer++589if object.timer == 2590object.p2Frame++591if object.p2Frame >= 16592object.p2Frame = 16593object.armPos.x = 8594object.armPos.x += screen.xcenter595object.armPos.y = -27596object.armPos.y += screen.ycenter597object.arrayPos = 0598object.state++599end if600object.timer = 0601end if602603DrawSpriteScreenXY(object.p2Frame, object.player2Pos.x, object.player2Pos.y)604605if object.p2Frame == 16606DrawSpriteScreenXY(17, object.armPos.x, object.armPos.y)607end if608609DrawSpriteScreenXY(object.frame, object.playerPos.x, object.playerPos.y)610611if options.region == 1612DrawSpriteScreenXY(33, object.charTitlePos, 228)613else614DrawSpriteScreenXY(31, object.charTitlePos, 228)615end if616617DrawSpriteScreenXY(36, object.charTitlePos, 228)618break619620case LOGO_ARMAPPEARP2_SONIC621screen.xoffset += 2622623temp0 = object.arrayPos624GetTableValue(object.armPos.x, temp0, Logo_tailsArmOffsets)625object.armPos.x += screen.xcenter626object.armPos.x -= 24627628temp0++629GetTableValue(object.armPos.y, temp0, Logo_tailsArmOffsets)630object.armPos.y += screen.ycenter631object.armPos.y -= 24632633object.timer++634object.timer &= 3635if object.timer == 0636object.arrayPos += 2637if object.arrayPos == 4638object.state++639end if640end if641642DrawSpriteScreenXY(object.p2Frame, object.player2Pos.x, object.player2Pos.y)643DrawSpriteScreenXY(17, object.armPos.x, object.armPos.y)644DrawSpriteScreenXY(object.frame, object.playerPos.x, object.playerPos.y)645646if options.region == 1647DrawSpriteScreenXY(33, object.charTitlePos, 228)648else649DrawSpriteScreenXY(31, object.charTitlePos, 228)650end if651652DrawSpriteScreenXY(36, object.charTitlePos, 228)653break654655case LOGO_ANIMATEP1_SONIC656screen.xoffset += 2657658object.timer++659if object.timer == 8660object.frame++661if object.frame > 8662object.frame = 7663end if664object.timer = 0665end if666667DrawSpriteScreenXY(object.p2Frame, object.player2Pos.x, object.player2Pos.y)668DrawSpriteScreenXY(17, object.armPos.x, object.armPos.y)669DrawSpriteScreenXY(object.frame, object.playerPos.x, object.playerPos.y)670671if options.region == 1672DrawSpriteScreenXY(33, object.charTitlePos, 228)673else674DrawSpriteScreenXY(31, object.charTitlePos, 228)675end if676677DrawSpriteScreenXY(36, object.charTitlePos, 228)678break679680end switch681break682683case PLAYER_TAILS_A684switch object.state685case LOGO_SETUP_TAILS686screen.xoffset = 0687688object.priority = PRIORITY_ACTIVE689object.timer = 0x100690stage.activeLayer[0] = 1691object.state++692693SetScreenFade(0x00, 0x00, 0x00, 0xFF)694break695696case LOGO_FADEIN_TAILS697screen.xoffset += 2698699if object.timer > 0700object.timer -= 8701else702PlayMusic(0)703object.state++704end if705706SetScreenFade(0x00, 0x00, 0x00, object.timer)707break708709case LOGO_RISEDELAY_TAILS710screen.xoffset += 2711712object.timer++713if object.timer == 38714object.timer = 0715object.frame = 12716object.state++717end if718break719720case LOGO_RISE_TAILS721screen.xoffset += 2722723temp0 = object.arrayPos724GetTableValue(object.playerPos.x, temp0, Logo_tailsBodyOffsets)725object.playerPos.x += screen.xcenter726temp0++727728GetTableValue(object.playerPos.y, temp0, Logo_tailsBodyOffsets)729object.playerPos.y += screen.ycenter730731object.timer++732object.timer &= 3733if object.timer == 0734object.arrayPos += 2735if object.arrayPos == 14736object.state++737end if738end if739740DrawSpriteScreenXY(object.frame, object.playerPos.x, object.playerPos.y)741break742743case LOGO_ANIMATE_TAILS744screen.xoffset += 2745746object.timer++747if object.timer == 2748object.frame++749if object.frame >= 16750object.frame = 16751object[+1].type = TypeName[Start Message]752object[+1].priority = PRIORITY_ACTIVE753object[+1].xpos = screen.xcenter754object[+1].ypos = 216755object.armPos.x = 8756object.armPos.x += screen.xcenter757object.armPos.y = -27758object.armPos.y += screen.ycenter759object.arrayPos = 0760object.state++761end if762object.timer = 0763end if764765if object.frame == 16766DrawSpriteScreenXY(17, object.armPos.x, object.armPos.y)767end if768769DrawSpriteScreenXY(object.frame, object.playerPos.x, object.playerPos.y)770break771772case LOGO_ARMAPPEAR_TAILS773screen.xoffset += 2774775temp0 = object.arrayPos776GetTableValue(object.armPos.x, temp0, Logo_tailsArmOffsets)777object.armPos.x += screen.xcenter778779temp0++780GetTableValue(object.armPos.y, temp0, Logo_tailsArmOffsets)781object.armPos.y += screen.ycenter782783object.timer++784object.timer &= 3785if object.timer == 0786object.arrayPos += 2787if object.arrayPos == 4788object.state++789end if790end if791792DrawSpriteScreenXY(17, object.armPos.x, object.armPos.y)793DrawSpriteScreenXY(object.frame, object.playerPos.x, object.playerPos.y)794break795796case LOGO_PREPLOGOAPPEAR_TAILS797screen.xoffset += 2798799object.ypos++800object.playerPos.y++801object.armPos.y++802if object.ypos >= 24803object.state++804end if805806DrawSpriteScreenXY(9, screen.xcenter, object.ypos)807DrawSpriteScreenXY(17, object.armPos.x, object.armPos.y)808DrawSpriteScreenXY(object.frame, object.playerPos.x, object.playerPos.y)809break810811case LOGO_SHOWLOGO_TAILS812screen.xoffset += 2813814if object.charTitlePos >= 89815if object.speedPercent == 0816object.timer++817if object.timer == 3818object.charTitlePos = 89819object.state++820end if821object.speedPercent = 1822end if823824object.yvel -= 0x4000825if object.yvel > 0826object.yvel -= 0x8000827end if828else829object.speedPercent = 0830object.yvel += 0x6000831if object.yvel < 0832object.yvel += 0x8000833end if834end if835836object.speedPercent += object.yvel837temp0 = object.speedPercent838temp0 >>= 16839object.charTitlePos += temp0840object.speedPercent &= 0xFFFF841842DrawSpriteScreenXY(17, object.armPos.x, object.armPos.y)843DrawSpriteScreenXY(object.frame, object.playerPos.x, object.playerPos.y)844845if options.region == 1846DrawSpriteScreenXY(33, screen.xcenter, object.charTitlePos)847DrawSpriteScreenXY(34, screen.xcenter, object.charTitlePos)848else849DrawSpriteScreenXY(31, screen.xcenter, object.charTitlePos)850DrawSpriteScreenXY(32, screen.xcenter, object.charTitlePos)851end if852853DrawSpriteScreenXY(35, screen.xcenter, object.charTitlePos)854break855856case LOGO_IDLE_TAILS857screen.xoffset += 2858859DrawSpriteScreenXY(17, object.armPos.x, object.armPos.y)860DrawSpriteScreenXY(object.frame, object.playerPos.x, object.playerPos.y)861862if options.region == 1863DrawSpriteScreenXY(33, screen.xcenter, object.charTitlePos)864DrawSpriteScreenXY(34, screen.xcenter, object.charTitlePos)865else866DrawSpriteScreenXY(31, screen.xcenter, object.charTitlePos)867DrawSpriteScreenXY(32, screen.xcenter, object.charTitlePos)868end if869870DrawSpriteScreenXY(35, screen.xcenter, object.charTitlePos)871break872873end switch874break875876case PLAYER_KNUCKLES_A877switch object.state878case LOGO_SETUP_KNUX879screen.xoffset = 0880881object.priority = PRIORITY_ACTIVE882object.timer = 0x100883stage.activeLayer[0] = 1884object.state++885886SetScreenFade(0x00, 0x00, 0x00, 0xFF)887break888889case LOGO_FADEIN_KNUX890screen.xoffset += 2891892if object.timer > 0893object.timer -= 8894else895PlayMusic(0)896object.state++897end if898899SetScreenFade(0x00, 0x00, 0x00, object.timer)900break901902case LOGO_RISEDELAY_KNUX903screen.xoffset += 2904905object.timer++906if object.timer == 38907object.timer = 0908object.playerPos.x = -44909object.playerPos.x += screen.xcenter910object.playerPos.y = -22911object.playerPos.y += screen.ycenter912object.frame = 18913object.state++914end if915break916917case LOGO_RISE_KNUX918screen.xoffset += 2919920object.playerPos.y -= 8921temp0 = screen.ycenter922temp0 -= 94923if object.playerPos.y <= temp0924object.state++925end if926927temp0 += 32928if object.playerPos.y == temp0929object.frame++930object.armFrame = 24931object.armPos.x = -44932object.armPos.x += screen.xcenter933object.armPos.y = -46934object.armPos.y += screen.ycenter935end if936937DrawSpriteScreenXY(object.frame, object.playerPos.x, object.playerPos.y)938break939940case LOGO_ANIMATE_KNUX941screen.xoffset += 2942943object.timer++944if object.timer == 8945object.frame++946if object.frame >= 23947object.frame = 23948object[+1].type = TypeName[Start Message]949object[+1].priority = PRIORITY_ACTIVE950object[+1].xpos = screen.xcenter951object[+1].ypos = 216952object.state++953end if954955object.timer = 0956end if957958DrawSpriteScreenXY(object.frame, object.playerPos.x, object.playerPos.y)959if object.frame >= 23960DrawSpriteScreenXY(object.armFrame, object.armPos.x, object.armPos.y)961end if962break963964case LOGO_ARMAPPEAR_KNUX965case LOGO_ARMAPPEAR2_KNUX966screen.xoffset += 2967968object.armPos.y--969object.timer++970if object.timer == 4971object.timer = 0972object.state++973end if974975DrawSpriteScreenXY(object.frame, object.playerPos.x, object.playerPos.y)976DrawSpriteScreenXY(object.armFrame, object.armPos.x, object.armPos.y)977break978979case LOGO_ANIMATEARM_KNUX980case LOGO_ANIMATEARM2_KNUX981screen.xoffset += 2982983object.timer++984if object.timer == 4985object.timer = 0986object.armFrame++987if object.armFrame == 29988object.armFrame = 24989object.state++990end if991end if992993DrawSpriteScreenXY(object.frame, object.playerPos.x, object.playerPos.y)994DrawSpriteScreenXY(object.armFrame, object.armPos.x, object.armPos.y)995break996997case LOGO_MOVEARM_KNUX998case LOGO_MOVEARM2_KNUX999screen.xoffset += 210001001object.armPos.y++1002object.timer++1003if object.timer == 41004object.timer = 01005object.state++1006end if10071008DrawSpriteScreenXY(object.frame, object.playerPos.x, object.playerPos.y)1009DrawSpriteScreenXY(object.armFrame, object.armPos.x, object.armPos.y)1010break10111012case LOGO_PREPLOGOAPPEAR_KNUX1013screen.xoffset += 210141015object.yvel += 0x40001016object.speedPercent += object.yvel1017temp0 = object.speedPercent1018temp0 >>= 161019object.ypos += temp01020object.playerPos.y += temp01021object.armPos.y += temp01022object.speedPercent &= 0xFFFF10231024if object.yvel > 01025if object.ypos >= 241026object.yvel >>= 11027temp0 = object.yvel1028temp0 >>= 11029object.yvel += temp01030object.timer++1031if object.timer != 31032FlipSign(object.yvel)1033else1034object.timer = 01035object.yvel = 01036object.state++1037end if1038end if1039end if10401041DrawSpriteScreenXY(9, screen.xcenter, object.ypos) // Logo (Top Half)1042DrawSpriteScreenXY(object.frame, object.playerPos.x, object.playerPos.y)1043DrawSpriteScreenXY(object.armFrame, object.armPos.x, object.armPos.y)1044break10451046case LOGO_SHOWLOGO_KNUX1047screen.xoffset += 210481049object.yvel += 0x40001050object.speedPercent += object.yvel1051temp0 = object.speedPercent1052temp0 >>= 161053object.charTitlePos += temp01054object.speedPercent &= 0xFFFF10551056if object.yvel > 01057if object.charTitlePos >= 891058object.yvel >>= 21059temp0 = object.yvel1060temp0 >>= 11061object.yvel += temp01062object.timer++1063if object.timer != 21064FlipSign(object.yvel)1065else1066object.timer = 01067object.yvel = 01068object.state++1069end if1070end if1071end if10721073DrawSpriteScreenXY(object.frame, object.playerPos.x, object.playerPos.y)1074DrawSpriteScreenXY(object.armFrame, object.armPos.x, object.armPos.y)1075DrawSpriteScreenXY(30, screen.xcenter, object.charTitlePos) // "Knux In" sprite1076break10771078case LOGO_IDLE_KNUX1079screen.xoffset += 210801081DrawSpriteScreenXY(object.frame, object.playerPos.x, object.playerPos.y)1082DrawSpriteScreenXY(object.armFrame, object.armPos.x, object.armPos.y)1083DrawSpriteScreenXY(30, screen.xcenter, object.charTitlePos) // "Knux In" sprite1084break10851086end switch1087break10881089end switch10901091// Logo (Bottom Half)1092DrawSpriteScreenXY(10, screen.xcenter, object.ypos)10931094// Copyright Sprite1095temp0 = screen.xsize1096temp0 -= 961097DrawSpriteScreenXY(11, temp0, 216)1098end event109911001101event ObjectStartup1102LoadSpriteSheet("Title/Title.gif")1103SetMusicTrack("Titlescreen.ogg", 0, false)11041105SpriteFrame(-33, -74, 65, 64, 1, 1) // Sonic - Frame 1 - #01106SpriteFrame(-33, -74, 65, 88, 1, 1) // Sonic - Frame 2 - #11107SpriteFrame(-34, -66, 74, 88, 67, 1) // Sonic - Frame 3 - #21108SpriteFrame(-34, -66, 74, 88, 142, 1) // Sonic - Frame 4 - #31109SpriteFrame(-32, -72, 79, 88, 217, 1) // Sonic - Frame 5 - #41110SpriteFrame(-24, -74, 72, 88, 297, 1) // Sonic - Frame 6 - #51111SpriteFrame(-36, -76, 81, 88, 370, 1) // Sonic - Frame 7 - #61112SpriteFrame(-36, -76, 81, 88, 1, 90) // Sonic - Frame 8 - #71113SpriteFrame(-36, -76, 81, 88, 83, 90) // Sonic - Frame 9 - #81114SpriteFrame(-128, 42, 256, 74, 255, 90) // Logo (Top) - #91115SpriteFrame(-128, 112, 256, 74, 255, 167) // Logo (Bottom) - #101116SpriteFrame(0, 0, 71, 17, 182, 210) // Copyright Sprite - #111117SpriteFrame(24, 16, 56, 64, 276, 360) // Tails - Frame 1 - #121118SpriteFrame(3, 21, 89, 57, 165, 90) // Tails - Frame 2 - #131119SpriteFrame(8, 16, 88, 61, 165, 148) // Tails - Frame 3 - #141120SpriteFrame(6, 17, 89, 59, 333, 360) // Tails - Frame 4 - #151121SpriteFrame(6, 12, 87, 65, 423, 360) // Tails - Frame 5 - #161122SpriteFrame(8, 5, 16, 19, 452, 5) // Tails' Arm - #171123SpriteFrame(3, 15, 101, 47, 2, 439) // Knux - Frame 1 - #181124SpriteFrame(3, 15, 101, 73, 2, 439) // Knux - Frame 2 - #191125SpriteFrame(0, 9, 95, 79, 104, 433) // Knux - Frame 3 - #201126SpriteFrame(1, 6, 105, 82, 200, 430) // Knux - Frame 4 - #211127SpriteFrame(1, 4, 102, 84, 306, 428) // Knux - Frame 5 - #221128SpriteFrame(5, 2, 91, 86, 409, 426) // Knux - Frame 6 - #231129SpriteFrame(8, 5, 42, 43, 469, 5) // Knux' Arm - Frame 1 - #241130SpriteFrame(8, 3, 40, 53, 218, 310) // Knux' Arm - Frame 2 - #251131SpriteFrame(8, 8, 40, 39, 471, 49) // Knux' Arm - Frame 3 - #261132SpriteFrame(8, 8, 40, 39, 471, 49) // Knux' Arm - Frame 4 - #271133SpriteFrame(8, 3, 40, 53, 218, 310) // Knux' Arm - Frame 5 - #281134SpriteFrame(8, 5, 42, 43, 469, 5) // Knux' Arm - Frame 6 - #291135SpriteFrame(-124, -66, 248, 65, 1, 364) // Knux In - #301136SpriteFrame(-77, -66, 153, 42, 1, 222) // "Tails" - #311137SpriteFrame(-77, -19, 93, 10, 155, 231) // "Miles Prower" - #321138SpriteFrame(-77, -66, 153, 42, 1, 179) // "Miles" - #331139SpriteFrame(-77, -19, 103, 10, 155, 242) // "Tails Prower" - #341140SpriteFrame(52, -19, 24, 18, 165, 411) // "In" - #351141SpriteFrame(-101, -66, 28, 42, 189, 321) // "&" - #3611421143// Setup Player Palette Colors1144temp0 = 2081145temp1 = 01146while temp1 < 141147GetTableValue(temp2, temp1, Logo_playerPalette)1148SetPaletteEntry(0, temp0, temp2)1149temp0++1150temp1++1151loop1152end event115311541155// ========================1156// Editor Events1157// ========================11581159event RSDKDraw1160DrawSprite(0)1161DrawSprite(1)1162end event116311641165event RSDKLoad1166LoadSpriteSheet("Title/Title.gif")1167SpriteFrame(-128, 42, 256, 74, 255, 90) // Logo (Top) - #01168SpriteFrame(-128, 112, 256, 74, 255, 167) // Logo (Bottom) - #111691170SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")1171end event11721173