Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-CD-2011-Script-Decompilation
Path: blob/main/Scripts/Upsell/UpsellDL.txt
1319 views
1
//-----------------Sonic CD Upsell DL Script------------------//
2
//--------Scripted by Christian Whitehead 'The Taxman'--------//
3
//-------Unpacked By Rubberduckycooly's Script Unpacker-------//
4
5
// Aliases
6
#alias Object.Value0 : Object.Fade
7
#alias Object.Value1 : Object.Selection
8
9
// States
10
#alias 0 : UPSELLDL_SETUP_INFADE
11
#alias 1 : UPSELLDL_FADEIN
12
#alias 2 : UPSELLDL_CONTROLS
13
#alias 3 : UPSELLDL_EXIT
14
15
// Presentation List Stages
16
#alias 1 : STAGE_P_MENU
17
18
// Global SFX
19
#alias 23 : SFX_G_MENUBUTTON
20
21
// Languages
22
#alias 0 : LANG_ENGLISH
23
#alias 1 : LANG_FRENCH
24
#alias 2 : LANG_ITALIAN
25
#alias 3 : LANG_DEUTSCH
26
#alias 4 : LANG_SPANISH
27
#alias 5 : LANG_JAPANESE
28
29
// Engine & Callbacks
30
#alias 8 : CALLBACK_BUY_FULL_GAME_SELECTED
31
32
#alias 5 : ENGINE_ENTER_HIRESMODE
33
#alias 6 : ENGINE_EXIT_HIRESMODE
34
35
36
sub ObjectMain
37
switch Object.State
38
case UPSELLDL_SETUP_INFADE
39
if Options.PhysicalControls == false
40
Object.Selection = -1
41
else
42
Object.Selection = 0
43
end if
44
45
if Object.Fade < 16
46
Object.Fade++
47
else
48
Object.Fade = 288
49
Object.State++
50
end if
51
SetScreenFade(0, 0, 0, 255)
52
break
53
54
case UPSELLDL_FADEIN
55
if Object.Fade > 0
56
Object.Fade -= 8
57
else
58
Object.State++
59
end if
60
SetScreenFade(0, 0, 0, Object.Fade)
61
break
62
63
case UPSELLDL_CONTROLS
64
if Options.PhysicalControls == true
65
if KeyPress[0].Up == true
66
Object.Selection--
67
if Object.Selection < 0
68
Object.Selection = 1
69
end if
70
PlaySfx(SFX_G_MENUBUTTON, false)
71
end if
72
73
if KeyPress[0].Down == true
74
Object.Selection++
75
if Object.Selection > 1
76
Object.Selection = 0
77
end if
78
PlaySfx(SFX_G_MENUBUTTON, false)
79
end if
80
81
if KeyPress[0].Start == true
82
switch Object.Selection
83
case 0
84
EngineCallback(CALLBACK_BUY_FULL_GAME_SELECTED)
85
break
86
case 1
87
Object.State = UPSELLDL_EXIT
88
break
89
end switch
90
end if
91
92
if KeyPress[0].ButtonA == true
93
switch Object.Selection
94
case 0
95
EngineCallback(CALLBACK_BUY_FULL_GAME_SELECTED)
96
break
97
case 1
98
Object.State = UPSELLDL_EXIT
99
break
100
end switch
101
end if
102
103
CheckTouchRect(0, 0, Screen.XSize, Screen.YSize)
104
if CheckResult > -1
105
Options.PhysicalControls = false
106
Object.Selection = -1
107
end if
108
else
109
CheckTouchRect(0, 0, Screen.XSize, Screen.YSize)
110
TempValue3 = CheckResult
111
TempValue0 = Screen.CenterX
112
TempValue0 -= 80
113
TempValue1 = Screen.CenterX
114
TempValue1 += 80
115
CheckTouchRect(TempValue0, 168, TempValue1, 200)
116
if CheckResult > -1
117
Object.Selection = 0
118
else
119
if TempValue3 < 0
120
if Object.Selection == 0
121
EngineCallback(CALLBACK_BUY_FULL_GAME_SELECTED)
122
Object.Selection = -1
123
end if
124
else
125
if Object.Selection == 0
126
Object.Selection = -1
127
end if
128
end if
129
end if
130
131
TempValue0 = Screen.CenterX
132
TempValue0 -= 64
133
TempValue1 = Screen.CenterX
134
TempValue1 += 64
135
CheckTouchRect(TempValue0, 208, TempValue1, 236)
136
if CheckResult > -1
137
Object.Selection = 1
138
else
139
if TempValue3 < 0
140
if Object.Selection == 1
141
Object.State = UPSELLDL_EXIT
142
Object.Selection = -1
143
end if
144
else
145
if Object.Selection == 1
146
Object.Selection = -1
147
end if
148
end if
149
end if
150
151
if KeyPress[0].Up == true
152
Object.Selection = 1
153
Options.PhysicalControls = true
154
end if
155
156
if KeyPress[0].Down == true
157
Object.Selection = 0
158
Options.PhysicalControls = true
159
end if
160
end if
161
break
162
163
case UPSELLDL_EXIT
164
if Object.Fade < 288
165
Object.Fade += 8
166
else
167
Engine.State = ENGINE_EXIT_HIRESMODE
168
169
Stage.ActiveList = PRESENTATION_STAGE
170
Stage.ListPos = STAGE_P_MENU
171
LoadStage()
172
end if
173
174
TempValue0 = Object.Fade
175
if TempValue0 > 255
176
TempValue0 = 255
177
end if
178
SetScreenFade(0, 0, 0, TempValue0)
179
break
180
end switch
181
end sub
182
183
184
sub ObjectDraw
185
Object.Scale = 216
186
DrawSpriteScreenFX(0, FX_SCALE, Screen.CenterX, Screen.CenterY)
187
188
if Object.Selection == 0 // Buy full game
189
DrawSpriteScreenFX(1, FX_SCALE, Screen.CenterX, 186)
190
end if
191
192
if Object.Selection == 1 // Play again
193
DrawSpriteScreenFX(2, FX_SCALE, Screen.CenterX, 222)
194
end if
195
end sub
196
197
198
sub ObjectStartup
199
// Cycle through all scene objects and find if there are any Upsell DL Objects
200
TempValue0 = false
201
ArrayPos0 = 32
202
while ArrayPos0 < 1056
203
if Object[ArrayPos0].Type == TypeName[Upsell DL]
204
// If there are, then set the load sheet flag to true
205
TempValue0 = true
206
end if
207
208
ArrayPos0++
209
loop
210
211
// Only if there's an Upsell DL object in the scene, load the sheet
212
// (It's a really large sheet! Loading it unnecessarily can heavily increase loading times!)
213
if TempValue0 == true
214
switch Engine.Language
215
case LANG_ENGLISH
216
// LoadSpriteSheet("Upsell/UpsellDL_EN.pvr") // Sonic CD Lite used PVRs, but the latest releases use gif instead
217
LoadSpriteSheet("Upsell/UpsellDL_EN.gif")
218
break
219
case LANG_FRENCH
220
LoadSpriteSheet("Upsell/UpsellDL_FR.gif")
221
break
222
case LANG_ITALIAN
223
LoadSpriteSheet("Upsell/UpsellDL_IT.gif")
224
break
225
case LANG_DEUTSCH
226
LoadSpriteSheet("Upsell/UpsellDL_DE.gif")
227
break
228
case LANG_SPANISH
229
LoadSpriteSheet("Upsell/UpsellDL_ES.gif")
230
break
231
case LANG_JAPANESE
232
// LoadSpriteSheet("Upsell/UpsellDL_JP.pvr") // Sonic CD Lite used PVRs, but the latest releases use gif instead
233
LoadSpriteSheet("Upsell/UpsellDL_JP.gif")
234
break
235
end switch
236
237
// Load the entire palette file, notably overriding the global section of the palette as well
238
LoadPalette("UpsellDL.act", 0, 0, 0, 256)
239
end if
240
241
Engine.State = ENGINE_ENTER_HIRESMODE
242
243
SpriteFrame(-512, -288, 1024, 576, 0, 0) // Entire BG sprite
244
245
// The LANG_JAPANESE version of the selected frames are just a tad bit taller
246
if Engine.Language != LANG_JAPANESE
247
SpriteFrame(-128, -35, 260, 69, 381, 580) // "Buy full game" (or some equivalent in the chosen language)
248
SpriteFrame(-91, -24, 182, 49, 420, 673) // "Try again" (or some equivalent in the chosen language)
249
else
250
SpriteFrame(-128, -36, 260, 69, 381, 580) // "完全版の購入"
251
SpriteFrame(-91, -24, 183, 49, 420, 677) // "もう一度遊ぶ"
252
end if
253
end sub
254
255
256
// ========================
257
// Editor Subs
258
// ========================
259
260
sub RSDKDraw
261
DrawSprite(0)
262
end sub
263
264
265
sub RSDKLoad
266
LoadSpriteSheet("Upsell/UpsellDL_EN.gif")
267
SpriteFrame(-512, -288, 1024, 576, 0, 0)
268
269
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
270
end sub
271
272