Path: blob/master/Sonic 1/Scripts/SLZ/SLZSetup.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 12// Script Description: SLZ Setup Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.paletteTimer12private alias object.value1 : object.paletteIndex13private alias object.value2 : object.scrollPos1415// Tracks16private alias 0 : TRACK_STAGE17private alias 2 : TRACK_INVINCIBLE18private alias 4 : TRACK_BOSS1920// Reserved object slots21private alias 10 : SLOT_ZONESETUP22private alias 25 : SLOT_MUSICEVENT_CHANGE2324// Music Events25private alias 0 : MUSICEVENT_FADETOBOSS26private alias 1 : MUSICEVENT_FADETOSTAGE27private alias 2 : MUSICEVENT_TRANSITION2829private alias 0 : MUSICEVENT_FLAG_NOCHANGE30private alias 1 : MUSICEVENT_FLAG_SPEEDUP31private alias 2 : MUSICEVENT_FLAG_SLOWDOWN3233// Music Loops34private alias 84364 : MUSIC_LOOP_SLZ35private alias 67640 : MUSIC_LOOP_SLZ_F3637private alias 39528 : MUSIC_LOOP_INV38private alias 30436 : MUSIC_LOOP_INV_F394041// ========================42// Function Declarations43// ========================4445reserve function SLZSetup_SpeedUpMusic46reserve function SLZSetup_SlowDownMusic474849// ========================50// Static Values51// ========================5253public value SLZSetup_rotateTimer = 0545556// ========================57// Tables58// ========================5960private table SLZSetup_palTable1610x00E0E0, 0x00A0A0, 0x006060, 0x002020, 0x006060, 0x00A0A062end table636465private table SLZSetup_palTable2660x600000, 0xA00000, 0xE00000, 0xA00000, 0x600000, 0x20000067end table686970private table SLZSetup_palTable3710x606000, 0x202000, 0x606000, 0xA0A000, 0xE0E000, 0xA0A00072end table737475private table SLZSetup_replay_credits_STK760xBB00000, 0x4C0000770x00, 37780x08, 36790x00, 6800x08, 204810x02, 39820x00, 159830x04, 37840x34, 1850x24, 7860x04, 47870x34, 1880x24, 3389end table909192// ========================93// Function Definitions94// ========================9596private function SLZSetup_SpeedUpMusic97CheckEqual(object[SLOT_MUSICEVENT_CHANGE].type, TypeName[Music Event])98temp0 = checkResult99CheckEqual(object[SLOT_MUSICEVENT_CHANGE].propertyValue, MUSICEVENT_TRANSITION)100temp0 &= checkResult101CheckEqual(stage.musicFlag, MUSICEVENT_FLAG_NOCHANGE)102temp0 &= checkResult103if temp0 == 0104switch music.currentTrack105case TRACK_STAGE106SetMusicTrack("Invincibility_F.ogg", TRACK_INVINCIBLE, MUSIC_LOOP_INV_F)107SwapMusicTrack("Starlight_F.ogg", TRACK_STAGE, MUSIC_LOOP_SLZ_F, 8000)108break109110case TRACK_INVINCIBLE111SetMusicTrack("Starlight_F.ogg", TRACK_STAGE, MUSIC_LOOP_SLZ_F)112SwapMusicTrack("Invincibility_F.ogg", TRACK_INVINCIBLE, MUSIC_LOOP_INV_F, 8000)113break114115case TRACK_BOSS116SetMusicTrack("Starlight_F.ogg", TRACK_STAGE, MUSIC_LOOP_SLZ_F)117SetMusicTrack("Invincibility_F.ogg", TRACK_INVINCIBLE, MUSIC_LOOP_INV_F)118break119120end switch121else122stage.musicFlag = MUSICEVENT_FLAG_SPEEDUP123end if124end function125126127private function SLZSetup_SlowDownMusic128CheckEqual(object[SLOT_MUSICEVENT_CHANGE].type, TypeName[Music Event])129temp0 = checkResult130CheckEqual(object[SLOT_MUSICEVENT_CHANGE].propertyValue, MUSICEVENT_TRANSITION)131temp0 &= checkResult132CheckEqual(stage.musicFlag, MUSICEVENT_FLAG_NOCHANGE)133temp0 &= checkResult134if temp0 == false135switch music.currentTrack136case TRACK_STAGE137SetMusicTrack("Invincibility.ogg", TRACK_INVINCIBLE, MUSIC_LOOP_INV)138SwapMusicTrack("Starlight.ogg", TRACK_STAGE, MUSIC_LOOP_SLZ, 12500)139break140141case TRACK_INVINCIBLE142SetMusicTrack("Starlight.ogg", TRACK_STAGE, MUSIC_LOOP_SLZ)143SwapMusicTrack("Invincibility.ogg", TRACK_INVINCIBLE, MUSIC_LOOP_INV, 12500)144break145146case TRACK_BOSS147SetMusicTrack("Starlight.ogg", TRACK_STAGE, MUSIC_LOOP_SLZ)148SetMusicTrack("Invincibility.ogg", TRACK_INVINCIBLE, MUSIC_LOOP_INV)149break150151end switch152else153stage.musicFlag = MUSICEVENT_FLAG_SLOWDOWN154end if155end function156157158// ========================159// Events160// ========================161162event ObjectUpdate163GetTableValue(temp0, 21, StageSetup_oscillationTable)164if temp0 == 0165SLZSetup_rotateTimer++166SLZSetup_rotateTimer &= 3167end if168169object.paletteTimer++170if object.paletteTimer == 8171object.paletteTimer = 0172object.paletteIndex++173object.paletteIndex %= 6174175GetTableValue(temp0, object.paletteIndex, SLZSetup_palTable1)176SetPaletteEntry(0, 171, temp0)177GetTableValue(temp0, object.paletteIndex, SLZSetup_palTable2)178SetPaletteEntry(0, 173, temp0)179GetTableValue(temp0, object.paletteIndex, SLZSetup_palTable3)180SetPaletteEntry(0, 174, temp0)181end if182end event183184185event ObjectDraw186// Draw FG Construction Sprites187// (Even if Forever allows for wider screen sizes, it doesn't actually update this code for that, which is why the giders just appear and disappear)188temp0 = screen.xoffset189temp0 <<= 1190temp0 &= 511191FlipSign(temp0)192193temp0 += object.scrollPos194temp1 = screen.yoffset195temp1 <<= 1196temp1 &= 255197FlipSign(temp1)198DrawSpriteScreenXY(0, temp0, temp1)199DrawSpriteScreenXY(1, temp0, temp1)200end event201202203event ObjectStartup204LoadSpriteSheet("SLZ/Objects.gif")205206SetMusicTrack("Starlight.ogg", TRACK_STAGE, MUSIC_LOOP_SLZ)207SpeedUpMusic = SLZSetup_SpeedUpMusic208SlowDownMusic = SLZSetup_SlowDownMusic209210// Sprite Frames211// (Foreground pole)212SpriteFrame(-16, 0, 32, 256, 224, 0)213SpriteFrame(-16, 256, 32, 256, 224, 0)214215// Flicky and Picky are the ones living in these stars216animalType1 = TypeName[Flicky]217animalType2 = TypeName[Picky]218219object[SLOT_ZONESETUP].type = TypeName[SLZ Setup]220object[SLOT_ZONESETUP].priority = PRIORITY_ACTIVE221object[SLOT_ZONESETUP].drawOrder = 5222object[SLOT_ZONESETUP].scrollPos = 496223224temp0 = screen.xcenter225temp0 >>= 2226object[SLOT_ZONESETUP].scrollPos -= temp0227SLZSetup_rotateTimer = 0228229if options.attractMode == true230Player_attractTable = SLZSetup_replay_credits_STK231Player_attractTableSize = 26232Player_attractDuration = 540233CallFunction(Player_SetupAttractDemo)234end if235end event236237238// ========================239// Editor Events240// ========================241242event RSDKDraw243DrawSprite(0)244end event245246247event RSDKLoad248LoadSpriteSheet("Global/Display.gif")249SpriteFrame(-16, -16, 32, 32, 1, 143)250251SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")252end event253254255