Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-CD-2011-Script-Decompilation
Path: blob/main/Scripts/DAGarden/BGAnimation.txt
1319 views
1
//----------------Sonic CD BG Animation Script----------------//
2
//--------Scripted by Christian Whitehead 'The Taxman'--------//
3
//-------Unpacked By Rubberduckycooly's Script Unpacker-------//
4
5
// Aliases
6
#alias Object.Value0 : Object.Timer
7
#alias Object[+7].Value2 : CharacterSpawn.Type
8
9
// States
10
#alias 0 : BGANIMATION_DAY
11
#alias 1 : BGANIMATION_DAY_TO_EVENING
12
#alias 2 : BGANIMATION_EVENING
13
#alias 3 : BGANIMATION_EVENING_TO_DUSK
14
#alias 4 : BGANIMATION_DUSK
15
#alias 5 : BGANIMATION_DUSK_TO_NIGHT
16
#alias 6 : BGANIMATION_NIGHT
17
#alias 7 : BGANIMATION_NIGHT_TO_MIDNIGHT
18
#alias 8 : BGANIMATION_MIDNIGHT
19
#alias 9 : BGANIMATION_MIDNIGHT_TO_MORNING
20
#alias 10 : BGANIMATION_MORNING
21
#alias 11 : BGANIMATION_MORNING_TO_DAY
22
23
// Ink Effect
24
#alias 2 : INK_ALPHA
25
26
27
sub ObjectDraw
28
if Object.DrawOrder == 3
29
// Pretty straightforward process, when the day time is set, a timer increases.
30
// Once the timer reachs the limit, start transitioning, then repeat process.
31
switch Object.State
32
case BGANIMATION_DAY
33
DrawSprite(0)
34
DrawSprite(1)
35
Object.Timer++
36
if Object.Timer > 480
37
Object.Timer = 0
38
Object.Alpha = 0
39
Object.InkEffect = INK_ALPHA
40
Object.State++
41
end if
42
break
43
44
case BGANIMATION_DAY_TO_EVENING
45
DrawSprite(0)
46
DrawSprite(1)
47
if Object.Alpha < 248
48
Object.Alpha += 4
49
else
50
Object.Alpha = 255
51
Object.State++
52
end if
53
DrawSpriteFX(2, FX_INK, Object.XPos, Object.YPos)
54
DrawSpriteFX(3, FX_INK, Object.XPos, Object.YPos)
55
break
56
57
case BGANIMATION_EVENING
58
DrawSprite(2)
59
DrawSprite(3)
60
Object.Timer++
61
if Object.Timer > 480
62
Object.Timer = 0
63
Object.Alpha = 0
64
Object.State++
65
end if
66
break
67
68
case BGANIMATION_EVENING_TO_DUSK
69
DrawSprite(2)
70
DrawSprite(3)
71
if Object.Alpha < 248
72
Object.Alpha += 4
73
else
74
Object.Alpha = 255
75
CharacterSpawn.Type = 1
76
Object.State++
77
end if
78
DrawSpriteFX(4, FX_INK, Object.XPos, Object.YPos)
79
DrawSpriteFX(5, FX_INK, Object.XPos, Object.YPos)
80
break
81
82
case BGANIMATION_DUSK
83
DrawSprite(4)
84
DrawSprite(5)
85
Object.Timer++
86
if Object.Timer > 480
87
Object.Timer = 0
88
Object.Alpha = 0
89
Object.State++
90
end if
91
break
92
93
case BGANIMATION_DUSK_TO_NIGHT
94
DrawSprite(4)
95
DrawSprite(5)
96
if Object.Alpha < 248
97
Object.Alpha += 4
98
else
99
Object.Alpha = 255
100
Object.State++
101
end if
102
DrawSpriteFX(6, FX_INK, Object.XPos, Object.YPos)
103
DrawSpriteFX(7, FX_INK, Object.XPos, Object.YPos)
104
break
105
106
case BGANIMATION_NIGHT
107
DrawSprite(6)
108
DrawSprite(7)
109
Object.Timer++
110
if Object.Timer > 480
111
Object.Timer = 0
112
Object.Alpha = 0
113
Object.State++
114
end if
115
break
116
117
case BGANIMATION_NIGHT_TO_MIDNIGHT
118
DrawSprite(6)
119
DrawSprite(7)
120
if Object.Alpha < 248
121
Object.Alpha += 4
122
else
123
Object.Alpha = 255
124
Object.State++
125
end if
126
DrawSpriteFX(8, FX_INK, Object.XPos, Object.YPos)
127
DrawSpriteFX(9, FX_INK, Object.XPos, Object.YPos)
128
break
129
130
case BGANIMATION_MIDNIGHT
131
DrawSprite(8)
132
DrawSprite(9)
133
Object.Timer++
134
if Object.Timer > 512
135
Object.Timer = 0
136
Object.Alpha = 0
137
CharacterSpawn.Type = 0
138
Object.State++
139
end if
140
break
141
142
case BGANIMATION_MIDNIGHT_TO_MORNING
143
DrawSprite(8)
144
DrawSprite(9)
145
if Object.Alpha < 248
146
Object.Alpha += 2
147
else
148
Object.Alpha = 255
149
Object.State++
150
end if
151
DrawSpriteFX(10, FX_INK, Object.XPos, Object.YPos)
152
DrawSpriteFX(11, FX_INK, Object.XPos, Object.YPos)
153
break
154
155
case BGANIMATION_MORNING
156
DrawSprite(10)
157
DrawSprite(11)
158
Object.Timer++
159
if Object.Timer > 480
160
Object.Timer = 0
161
Object.Alpha = 0
162
Object.State++
163
end if
164
break
165
166
case BGANIMATION_MORNING_TO_DAY
167
DrawSprite(10)
168
DrawSprite(11)
169
if Object.Alpha < 248
170
Object.Alpha += 4
171
else
172
Object.Alpha = 255
173
Object.State = BGANIMATION_DAY
174
end if
175
DrawSpriteFX(0, FX_INK, Object.XPos, Object.YPos)
176
DrawSpriteFX(1, FX_INK, Object.XPos, Object.YPos)
177
break
178
179
end switch
180
SetDrawListEntityRef(Object.EntityNo, 4, Screen[4].DrawListSize)
181
Screen[4].DrawListSize++
182
Object.DrawOrder = 4
183
else
184
//Draw borders
185
DrawRect(0, 0, Screen.XSize, 32, 0, 0, 0, 255)
186
DrawRect(0, 208, Screen.XSize, 32, 0, 0, 0, 255)
187
Object.DrawOrder = 3
188
end if
189
end sub
190
191
192
sub ObjectStartup
193
LoadSpriteSheet("DAGarden/Objects.gif")
194
195
SpriteFrame(0, 0, 256, 192, 0, 0) // #0 - Sky, Day Half 1
196
SpriteFrame(256, 0, 256, 192, 0, 0) // #1 - Sky, Day Half 2
197
SpriteFrame(0, 0, 256, 192, 256, 0) // #2 - Sky, Evening Half 1
198
SpriteFrame(256, 0, 256, 192, 256, 0) // #3 - Sky, Evening Half 2
199
SpriteFrame(0, 0, 256, 192, 0, 192) // #4 - Sky, Dusk Half 1
200
SpriteFrame(256, 0, 256, 192, 0, 192) // #5 - Sky, Dusk Half 2
201
SpriteFrame(0, 0, 256, 192, 256, 192) // #6 - Sky, Night Half 1
202
SpriteFrame(256, 0, 256, 192, 256, 192) // #7 - Sky, Night Half 2
203
SpriteFrame(0, 0, 256, 192, 0, 384) // #8 - Sky, Midnight Half 1
204
SpriteFrame(256, 0, 256, 192, 0, 384) // #9 - Sky, Midnight Half 2
205
SpriteFrame(0, 0, 256, 192, 256, 384) // #10 - Sky, Morning Half 1
206
SpriteFrame(256, 0, 256, 192, 256, 384) // #11 - Sky, Morning Half 2
207
208
Object[31].Type = TypeName[BG Animation]
209
Object[31].XPos = 0
210
Object[31].YPos = 0x180000
211
end sub
212
213
214
// ========================
215
// Editor Subs
216
// ========================
217
218
sub RSDKDraw
219
DrawSprite(0)
220
DrawSprite(1)
221
end sub
222
223
224
sub RSDKLoad
225
LoadSpriteSheet("DAGarden/Objects.gif")
226
SpriteFrame(0, 0, 256, 192, 0, 0) // #0 - Sky, Day Half 1
227
SpriteFrame(256, 0, 256, 192, 0, 0) // #1 - Sky, Day Half 2
228
229
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
230
end sub
231
232