Path: blob/master/Sonic 1/Scripts/SYZ/SYZSetup.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 12// Script Description: SYZ Setup Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.palRotateTimer12private alias object.value1 : object.palRotateIndex13private alias object.value2 : object.rLightTimer1415// 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 101364 : MUSIC_LOOP_SYZ // This is 100712 on the level select...35private alias 81128 : MUSIC_LOOP_SYZ_F3637private alias 39528 : MUSIC_LOOP_INV38private alias 30436 : MUSIC_LOOP_INV_F394041// ========================42// Function Declarations43// ========================4445reserve function SYZSetup_SpeedUpMusic46reserve function SYZSetup_SlowDownMusic474849// ========================50// Static Values51// ========================5253public value SYZSetup_oscillation = 054public value SYZSetup_RLightFrame = 0555657// ========================58// Tables59// ========================6061private table SYZSetup_replay_attract_S620x300000, 0x3BD0000630x00, 100640x08, 33650x38, 1660x28, 19670x00, 22680x04, 18690x30, 1700x20, 2710x28, 39720x00, 10730x08, 7740x00, 13750x08, 11760x00, 17770x08, 14780x00, 20790x04, 15800x00, 30810x38, 1820x28, 11830x20, 29840x28, 8850x20, 39860x00, 7870x04, 27880x06, 2890x02, 32900x00, 14910x04, 45920x00, 37930x08, 8940x00, 20950x30, 1960x24, 7970x04, 49980x34, 1990x24, 181000x04, 281010x00, 201020x08, 91030x00, 191040x02, 91050x32, 11060x22, 51070x02, 71080x32, 11090x22, 41100x02, 51110x32, 11120x22, 41130x02, 331140x00, 731150x08, 691160x00, 161170x04, 451180x00, 621190x08, 191200x00, 41210x04, 391220x00, 361230x04, 91240x00, 161250x08, 71260x00, 71270x02, 171280x00, 231290x08, 181300x38, 11310x28, 411320x08, 161330x00, 321340x02, 141350x00, 21360x08, 251370x00, 111380x04, 91390x00, 441400x08, 51410x00, 141420x08, 451430x00, 521440x04, 381450x34, 11460x24, 51470x00, 131480x08, 71490x00, 211500x08, 8151end table152153private table SYZSetup_replay_attract_T1540x300000, 0x3C100001550x00, 761560x08, 271570x38, 11580x28, 241590x08, 41600x00, 151610x04, 161620x34, 11630x24, 41640x20, 51650x28, 301660x08, 81670x00, 91680x08, 131690x00, 121700x08, 141710x00, 151720x08, 131730x00, 151740x04, 161750x00, 131760x08, 111770x38, 11780x28, 211790x20, 131800x24, 211810x04, 381820x02, 181830x00, 311840x04, 511850x00, 91860x08, 231870x00, 81880x34, 11890x24, 301900x04, 291910x34, 11920x24, 261930x04, 291940x00, 91950x08, 131960x00, 141970x02, 131980x32, 11990x22, 72000x02, 92010x00, 692020x08, 392030x38, 12040x28, 92050x08, 282060x00, 152070x04, 542080x00, 722090x04, 72100x30, 12110x20, 132120x00, 62130x30, 12140x20, 72150x00, 42160x30, 12170x20, 52180x00, 62190x38, 12200x28, 32210x08, 92220x38, 12230x28, 52240x08, 42250x00, 22260x30, 12270x20, 52280x00, 52290x34, 12300x24, 62310x20, 22320x00, 52330x30, 12340x20, 62350x00, 62360x30, 12370x20, 32380x24, 32390x04, 52400x30, 12410x20, 72420x00, 32430x04, 52440x30, 12450x20, 72460x00, 62470x30, 12480x20, 52490x00, 42500x08, 22510x38, 12520x28, 32530x20, 22540x00, 62550x30, 12560x20, 52570x00, 72580x30, 12590x20, 52600x00, 22610x08, 82620x38, 12630x28, 52640x08, 52650x00, 72660x04, 392670x34, 12680x24, 52690x28, 32700x08, 32710x38, 12720x28, 82730x08, 262740x30, 12750x20, 42760x24, 42770x04, 32780x00, 122790x08, 562800x00, 142810x04, 372820x00, 32830x34, 12840x24, 122850x04, 142860x00, 112870x08, 152880x38, 12890x28, 152900x08, 62910x00, 212920x04, 542930x00, 212940x08, 632950x38, 12960x28, 22970x20, 172980x00, 39299end table300301private table SYZSetup_replay_attract_K3020x300000, 0x3BD00003030x00, 253040x08, 473050x38, 13060x28, 73070x00, 273080x04, 93090x00, 23100x04, 53110x34, 13120x24, 53130x28, 323140x08, 63150x00, 303160x04, 143170x00, 43180x08, 73190x00, 183200x02, 123210x32, 13220x22, 43230x00, 213240x08, 103250x38, 13260x28, 233270x08, 53280x38, 13290x28, 283300x08, 13310x00, 163320x04, 893330x00, 83340x08, 1543350x38, 13360x28, 63370x08, 553380x00, 113390x04, 183400x00, 1223410x08, 413420x00, 93430x08, 133440x00, 113450x04, 63460x00, 103470x04, 113480x00, 33490x02, 463500x00, 143510x08, 273520x00, 203530x04, 443540x34, 13550x24, 263560x04, 463570x34, 13580x24, 63590x00, 53600x08, 173610x00, 253620x04, 473630x00, 113640x02, 163650x00, 193660x04, 273670x00, 303680x02, 573690x00, 583700x02, 113710x00, 273720x08, 143730x00, 353740x30, 13750x20, 173760x00, 83770x08, 53780x38, 13790x28, 403800x08, 63810x00, 53820x30, 13830x20, 63840x00, 123850x08, 43860x00, 423870x08, 113880x38, 13890x28, 93900x08, 403910x38, 13920x28, 4393end table394395private table SYZSetup_replay_credits_STK3960x17500000, 0xBD00003970x00, 313980x08, 363990x00, 124000x08, 384010x00, 44020x02, 2214030x00, 684040x02, 914050x00, 404060x30, 14070x20, 964080x00, 34090x02, 13410end table411412413// ========================414// Function Definitions415// ========================416417private function SYZSetup_SpeedUpMusic418CheckEqual(object[SLOT_MUSICEVENT_CHANGE].type, TypeName[Music Event])419temp0 = checkResult420CheckEqual(object[SLOT_MUSICEVENT_CHANGE].propertyValue, MUSICEVENT_TRANSITION)421temp0 &= checkResult422CheckEqual(stage.musicFlag, MUSICEVENT_FLAG_NOCHANGE)423temp0 &= checkResult424if temp0 == false425switch music.currentTrack426case TRACK_STAGE427SetMusicTrack("Invincibility_F.ogg", TRACK_INVINCIBLE, MUSIC_LOOP_INV_F)428SwapMusicTrack("SpringYard_F.ogg", TRACK_STAGE, MUSIC_LOOP_SYZ_F, 8000)429break430431case TRACK_INVINCIBLE432SetMusicTrack("SpringYard_F.ogg", TRACK_STAGE, MUSIC_LOOP_SYZ_F)433SwapMusicTrack("Invincibility_F.ogg", TRACK_INVINCIBLE, MUSIC_LOOP_INV_F, 8000)434break435436case TRACK_BOSS437SetMusicTrack("SpringYard_F.ogg", TRACK_STAGE, MUSIC_LOOP_SYZ_F)438SetMusicTrack("Invincibility_F.ogg", TRACK_INVINCIBLE, MUSIC_LOOP_INV_F)439break440441end switch442else443stage.musicFlag = MUSICEVENT_FLAG_SPEEDUP444end if445end function446447448private function SYZSetup_SlowDownMusic449CheckEqual(object[SLOT_MUSICEVENT_CHANGE].type, TypeName[Music Event])450temp0 = checkResult451CheckEqual(object[SLOT_MUSICEVENT_CHANGE].propertyValue, MUSICEVENT_TRANSITION)452temp0 &= checkResult453CheckEqual(stage.musicFlag, MUSICEVENT_FLAG_NOCHANGE)454temp0 &= checkResult455if temp0 == false456switch music.currentTrack457case TRACK_STAGE458SetMusicTrack("Invincibility.ogg", TRACK_INVINCIBLE, MUSIC_LOOP_INV)459SwapMusicTrack("SpringYard.ogg", TRACK_STAGE, MUSIC_LOOP_SYZ, 12500)460break461462case TRACK_INVINCIBLE463SetMusicTrack("SpringYard.ogg", TRACK_STAGE, MUSIC_LOOP_SYZ)464SwapMusicTrack("Invincibility.ogg", TRACK_INVINCIBLE, MUSIC_LOOP_INV, 12500)465break466467case TRACK_BOSS468SetMusicTrack("SpringYard.ogg", TRACK_STAGE, MUSIC_LOOP_SYZ)469SetMusicTrack("Invincibility.ogg", TRACK_INVINCIBLE, MUSIC_LOOP_INV)470break471472end switch473else474stage.musicFlag = MUSICEVENT_FLAG_SLOWDOWN475end if476end function477478479// ========================480// Events481// ========================482483event ObjectUpdate484object.palRotateTimer++485if object.palRotateTimer == 6486object.palRotateTimer = 0487object.palRotateIndex++488object.palRotateIndex &= 3489temp0 = object.palRotateIndex490temp0++491CopyPalette(temp0, 160, 0, 160, 32)492end if493494object.rLightTimer++495object.rLightTimer %= 48496SYZSetup_RLightFrame = object.rLightTimer497SYZSetup_RLightFrame >>= 3498499SYZSetup_oscillation++500SYZSetup_oscillation %= 356501end event502503504event ObjectStartup505// Set the music track506SetMusicTrack("SpringYard.ogg", TRACK_STAGE, MUSIC_LOOP_SYZ)507508// Also set the speed up/slow down functions509SpeedUpMusic = SYZSetup_SpeedUpMusic510SlowDownMusic = SYZSetup_SlowDownMusic511512// Load colors used for the palette cycle513// While the majority of this game uses tables for color data, SYZ instead goes back to the v3 approach of loading colors from an external file into alternate palette banks514temp0 = 1 // Palette bank515temp1 = 0 // Start Index516temp2 = 32 // End Index517while temp0 < 5518LoadPalette("SYZ_PalCycle.act", temp0, 160, temp1, temp2)519temp0++520temp1 += 32521temp2 += 32522loop523524// Set the animal types525animalType1 = TypeName[Cucky]526animalType2 = TypeName[Picky]527528// Place an SYZ Setup Object into the scene529object[SLOT_ZONESETUP].type = TypeName[SYZ Setup]530object[SLOT_ZONESETUP].priority = PRIORITY_ACTIVE531532SYZSetup_oscillation = 0533SYZSetup_RLightFrame = 0534535if options.attractMode == true536switch stage.playerListPos537case PLAYER_SONIC_A538#platform: USE_ORIGINS539case PLAYER_AMY_A540#endplatform541if credits.screen == 0542Player_attractTable = SYZSetup_replay_attract_S543Player_attractTableSize = 178544Player_attractDuration = 0x708545else546Player_attractTable = SYZSetup_replay_credits_STK547Player_attractTableSize = 28548Player_attractDuration = 540549end if550break551552case PLAYER_TAILS_A553if credits.screen == 0554Player_attractTable = SYZSetup_replay_attract_T555Player_attractTableSize = 290556Player_attractDuration = 1800557else558Player_attractTable = SYZSetup_replay_credits_STK559Player_attractTableSize = 28560Player_attractDuration = 540561end if562break563564case PLAYER_KNUCKLES_A565if credits.screen == 0566Player_attractTable = SYZSetup_replay_attract_K567Player_attractTableSize = 182568Player_attractDuration = 1800569else570Player_attractTable = SYZSetup_replay_credits_STK571Player_attractTableSize = 28572Player_attractDuration = 540573end if574break575576end switch577578CallFunction(Player_SetupAttractDemo)579end if580end event581582583// ========================584// Editor Events585// ========================586587event RSDKDraw588DrawSprite(0)589end event590591592event RSDKLoad593LoadSpriteSheet("Global/Display.gif")594SpriteFrame(-16, -16, 32, 32, 1, 143)595596SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")597end event598599600