//-----------------Sonic CD Help Menu Script------------------//
//--------Scripted by Christian Whitehead 'The Taxman'--------//
//-------Unpacked By Rubberduckycooly's Script Unpacker-------//
// Aliases
#alias Object.Value0 : [Link] //Also used for fading
#alias Object.Value2 : [Link]
#alias Object.Value3 : [Link]
#alias Object.Value4 : [Link]
// States
#alias 0 : HELPMENU_SETUP
#alias 1 : HELPMENU_FADEIN
#alias 2 : HELPMENU_CONTROLS
#alias 3 : HELPMENU_PAGEDOWN
#alias 4 : HELPMENU_PAGEUP
#alias 5 : HELPMENU_LEAVE
// Languages
#alias 0 : LANG_ENGLISH
#alias 1 : LANG_FRENCH
#alias 2 : LANG_ITALIAN
#alias 3 : LANG_DEUTSCH
#alias 4 : LANG_SPANISH
#alias 5 : LANG_JAPANESE
// Global SFX
#alias 26 : SFX_G_OUTTAHERE
#alias 27 : SFX_G_SELECT
// Soundtrack
#alias 0 : OST_JP
// Presentation Stages
#alias 1 : STAGE_P_MENU
// Engine & Callbacks
#alias 5 : ENGINE_ENTER_HIRESMODE
#alias 6 : ENGINE_EXIT_HIRESMODE
// Priority
#alias 1 : PRIORITY_ACTIVE
// Function declarations
#function HelpMenu_PageLoad
function HelpMenu_PageLoad
switch [Link]
case 0
switch [Link]
case LANG_ENGLISH
LoadTextFile(MENU_1, "Data/Game/EN_Help/SCD_Pg1_EN.txt", 1)
break
case LANG_FRENCH
LoadTextFile(MENU_1, "Data/Game/FR_Help/SCD_Pg1_FR.txt", 1)
break
case LANG_ITALIAN
LoadTextFile(MENU_1, "Data/Game/IT_Help/SCD_Pg1_IT.txt", 1)
break
case LANG_DEUTSCH
LoadTextFile(MENU_1, "Data/Game/DE_Help/SCD_Pg1_DE.txt", 1)
break
case LANG_SPANISH
LoadTextFile(MENU_1, "Data/Game/ES_Help/SCD_Pg1_ES.txt", 1)
break
case LANG_JAPANESE
LoadTextFile(MENU_1, "Data/Game/JP_Help/SCD_Pg1_JP.txt", 1)
break
end switch
break
case 1
switch [Link]
case LANG_ENGLISH
LoadTextFile(MENU_1, "Data/Game/EN_Help/SCD_Pg2_EN.txt", 1)
break
case LANG_FRENCH
LoadTextFile(MENU_1, "Data/Game/FR_Help/SCD_Pg2_FR.txt", 1)
break
case LANG_ITALIAN
LoadTextFile(MENU_1, "Data/Game/IT_Help/SCD_Pg2_IT.txt", 1)
break
case LANG_DEUTSCH
LoadTextFile(MENU_1, "Data/Game/DE_Help/SCD_Pg2_DE.txt", 1)
break
case LANG_SPANISH
LoadTextFile(MENU_1, "Data/Game/ES_Help/SCD_Pg2_ES.txt", 1)
break
case LANG_JAPANESE
LoadTextFile(MENU_1, "Data/Game/JP_Help/SCD_Pg2_JP.txt", 1)
break
end switch
break
case 2
switch [Link]
case LANG_ENGLISH
LoadTextFile(MENU_1, "Data/Game/EN_Help/SCD_Pg3_EN.txt", 1)
break
case LANG_FRENCH
LoadTextFile(MENU_1, "Data/Game/FR_Help/SCD_Pg3_FR.txt", 1)
break
case LANG_ITALIAN
LoadTextFile(MENU_1, "Data/Game/IT_Help/SCD_Pg3_IT.txt", 1)
break
case LANG_DEUTSCH
LoadTextFile(MENU_1, "Data/Game/DE_Help/SCD_Pg3_DE.txt", 1)
break
case LANG_SPANISH
LoadTextFile(MENU_1, "Data/Game/ES_Help/SCD_Pg3_ES.txt", 1)
break
case LANG_JAPANESE
LoadTextFile(MENU_1, "Data/Game/JP_Help/SCD_Pg3_JP.txt", 1)
break
end switch
break
case 3
switch [Link]
case LANG_ENGLISH
LoadTextFile(MENU_1, "Data/Game/EN_Help/SCD_Pg4_EN.txt", 1)
break
case LANG_FRENCH
LoadTextFile(MENU_1, "Data/Game/FR_Help/SCD_Pg4_FR.txt", 1)
break
case LANG_ITALIAN
LoadTextFile(MENU_1, "Data/Game/IT_Help/SCD_Pg4_IT.txt", 1)
break
case LANG_DEUTSCH
LoadTextFile(MENU_1, "Data/Game/DE_Help/SCD_Pg4_DE.txt", 1)
break
case LANG_SPANISH
LoadTextFile(MENU_1, "Data/Game/ES_Help/SCD_Pg4_ES.txt", 1)
break
case LANG_JAPANESE
LoadTextFile(MENU_1, "Data/Game/JP_Help/SCD_Pg4_JP.txt", 1)
break
end switch
break
case 4
switch [Link]
case LANG_ENGLISH
LoadTextFile(MENU_1, "Data/Game/EN_Help/SCD_Pg5_EN.txt", 1)
break
case LANG_FRENCH
LoadTextFile(MENU_1, "Data/Game/FR_Help/SCD_Pg5_FR.txt", 1)
break
case LANG_ITALIAN
LoadTextFile(MENU_1, "Data/Game/IT_Help/SCD_Pg5_IT.txt", 1)
break
case LANG_DEUTSCH
LoadTextFile(MENU_1, "Data/Game/DE_Help/SCD_Pg5_DE.txt", 1)
break
case LANG_SPANISH
LoadTextFile(MENU_1, "Data/Game/ES_Help/SCD_Pg5_ES.txt", 1)
break
case LANG_JAPANESE
LoadTextFile(MENU_1, "Data/Game/JP_Help/SCD_Pg5_JP.txt", 1)
break
end switch
break
case 5
switch [Link]
case LANG_ENGLISH
LoadTextFile(MENU_1, "Data/Game/EN_Help/SCD_Pg6_EN.txt", 1)
break
case LANG_FRENCH
LoadTextFile(MENU_1, "Data/Game/FR_Help/SCD_Pg6_FR.txt", 1)
break
case LANG_ITALIAN
LoadTextFile(MENU_1, "Data/Game/IT_Help/SCD_Pg6_IT.txt", 1)
break
case LANG_DEUTSCH
LoadTextFile(MENU_1, "Data/Game/DE_Help/SCD_Pg6_DE.txt", 1)
break
case LANG_SPANISH
LoadTextFile(MENU_1, "Data/Game/ES_Help/SCD_Pg6_ES.txt", 1)
break
case LANG_JAPANESE
LoadTextFile(MENU_1, "Data/Game/JP_Help/SCD_Pg6_JP.txt", 1)
break
end switch
break
case 6
switch [Link]
case LANG_ENGLISH
LoadTextFile(MENU_1, "Data/Game/EN_Help/SCD_Pg7_EN.txt", 1)
break
case LANG_FRENCH
LoadTextFile(MENU_1, "Data/Game/FR_Help/SCD_Pg7_FR.txt", 1)
break
case LANG_ITALIAN
LoadTextFile(MENU_1, "Data/Game/IT_Help/SCD_Pg7_IT.txt", 1)
break
case LANG_DEUTSCH
LoadTextFile(MENU_1, "Data/Game/DE_Help/SCD_Pg7_DE.txt", 1)
break
case LANG_SPANISH
LoadTextFile(MENU_1, "Data/Game/ES_Help/SCD_Pg7_ES.txt", 1)
break
case LANG_JAPANESE
LoadTextFile(MENU_1, "Data/Game/JP_Help/SCD_Pg7_JP.txt", 1)
break
end switch
break
case 7
switch [Link]
case LANG_ENGLISH
LoadTextFile(MENU_1, "Data/Game/EN_Help/SCD_Pg8_EN.txt", 1)
break
case LANG_FRENCH
LoadTextFile(MENU_1, "Data/Game/FR_Help/SCD_Pg8_FR.txt", 1)
break
case LANG_ITALIAN
LoadTextFile(MENU_1, "Data/Game/IT_Help/SCD_Pg8_IT.txt", 1)
break
case LANG_DEUTSCH
LoadTextFile(MENU_1, "Data/Game/DE_Help/SCD_Pg8_DE.txt", 1)
break
case LANG_SPANISH
LoadTextFile(MENU_1, "Data/Game/ES_Help/SCD_Pg8_ES.txt", 1)
break
case LANG_JAPANESE
LoadTextFile(MENU_1, "Data/Game/JP_Help/SCD_Pg8_JP.txt", 1)
break
end switch
break
case 8
switch [Link]
case LANG_ENGLISH
LoadTextFile(MENU_1, "Data/Game/EN_Help/SCD_Pg9_EN.txt", 1)
break
case LANG_FRENCH
LoadTextFile(MENU_1, "Data/Game/FR_Help/SCD_Pg9_FR.txt", 1)
break
case LANG_ITALIAN
LoadTextFile(MENU_1, "Data/Game/IT_Help/SCD_Pg9_IT.txt", 1)
break
case LANG_DEUTSCH
LoadTextFile(MENU_1, "Data/Game/DE_Help/SCD_Pg9_DE.txt", 1)
break
case LANG_SPANISH
LoadTextFile(MENU_1, "Data/Game/ES_Help/SCD_Pg9_ES.txt", 1)
break
case LANG_JAPANESE
LoadTextFile(MENU_1, "Data/Game/JP_Help/SCD_Pg9_JP.txt", 1)
break
end switch
break
end switch
end function
sub ObjectMain
switch [Link]
case HELPMENU_SETUP
TempValue0 = 256
TempValue0 -= [Link]
[Link] = TempValue0
[Link] = 0
CallFunction(HelpMenu_PageLoad)
PlayMusic(1)
[Link] = 384
[Link]++
SetScreenFade(0, 0, 0, 255)
break
case HELPMENU_FADEIN
if [Link] > 0
[Link] -= 8
else
[Link]++
end if
SetScreenFade(0, 0, 0, [Link])
break
case HELPMENU_CONTROLS
if KeyPress[0].Down == true
if [Link] < 8
PlaySfx(SFX_G_SELECT, false)
[Link] = 256
[Link] = HELPMENU_PAGEDOWN
end if
end if
if KeyPress[0].Up == true
if [Link] > 0
PlaySfx(SFX_G_SELECT, false)
[Link] = HELPMENU_PAGEUP
end if
end if
if KeyPress[0].ButtonB == true
PlaySfx(SFX_G_OUTTAHERE, false)
[Link] = HELPMENU_LEAVE
end if
break
case HELPMENU_PAGEDOWN
if [Link] > 0
Cos(TempValue0, [Link])
TempValue0 >>= 1
TempValue0 += 256
TempValue1 = [Link]
TempValue1 += TempValue0
[Link] = TempValue1
TempValue1 += 256
TempValue1 >>= 9
if TempValue1 > [Link]
[Link]++
if [Link] == 2
SetActivePalette(1, 0, [Link])
else
SetActivePalette(0, 0, [Link])
end if
CallFunction(HelpMenu_PageLoad)
end if
[Link] -= 3
if [Link] < 0
[Link] = 0
end if
else
[Link] += 512
[Link] = [Link]
[Link] = HELPMENU_CONTROLS
end if
break
case HELPMENU_PAGEUP
if [Link] < 256
Cos(TempValue0, [Link])
TempValue0 >>= 1
TempValue0 -= 256
TempValue1 = [Link]
TempValue1 += TempValue0
[Link] = TempValue1
TempValue1 += 256
TempValue1 >>= 9
if TempValue1 < [Link]
[Link]--
if [Link] == 2
SetActivePalette(1, 0, [Link])
else
SetActivePalette(0, 0, [Link])
end if
CallFunction(HelpMenu_PageLoad)
end if
[Link] += 3
if [Link] > 256
[Link] = 256
end if
else
[Link] -= 512
[Link] = [Link]
[Link] = 0
[Link] = HELPMENU_CONTROLS
end if
break
case HELPMENU_LEAVE
if [Link] < 348
[Link] += 8
else
[Link] = STAGE_P_MENU
[Link] = ENGINE_EXIT_HIRESMODE
LoadStage()
end if
SetScreenFade(0, 0, 0, [Link])
break
end switch
end sub
sub ObjectDraw
[Link]--
if [Link] < -31
[Link] += 32
end if
TempValue1 = [Link]
TempValue1 >>= 1
while TempValue1 < [Link]
TempValue0 = [Link]
TempValue0 >>= 1
while TempValue0 < [Link]
DrawSpriteScreenXY(0, TempValue0, TempValue1)
TempValue0 += 128
loop
TempValue1 += 128
loop
end sub
sub ObjectStartup
LoadSpriteSheet("Menu/[Link]")
SpriteFrame(0, 0, 128, 128, 1, 1)
if [Link] == LANG_JAPANESE
Object[59].XPos -= 0x100000
Object[60].XPos -= 0x100000
Object[61].XPos -= 0x100000
Object[62].XPos -= 0x100000
Object[63].XPos -= 0x100000
Object[64].XPos += 0x500000
Object[59].YPos += 0x180000
Object[60].YPos += 0x180000
Object[61].YPos += 0x180000
Object[62].YPos += 0x180000
Object[63].YPos += 0x180000
Object[64].YPos -= 0x2F0000
end if
LoadPalette("[Link]", 0, 0, 0, 256)
LoadPalette("[Link]", 1, 0, 0, 256)
LoadTextFont("Data/Game/[Link]")
if [Link] == OST_JP
SetMusicTrack("JP/[Link]", 1, 1)
else
SetMusicTrack("US/[Link]", 1, 117382)
end if
[Link] = ENGINE_ENTER_HIRESMODE
[Link] = false
Object[0].Type = TypeName[Help Menu]
Object[0].Priority = PRIORITY_ACTIVE
Object[0].DrawOrder = 0
end sub
// ========================
// Editor Subs
// ========================
sub RSDKDraw
DrawSprite(0)
end sub
sub RSDKLoad
LoadSpriteSheet("Menu/MenuGfx2_EN.gif")
SpriteFrame(16, 0, 46, 30, 1, 677) // Help
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
end sub