Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-CD-2011-Script-Decompilation
Path: blob/main/Scripts/R4/HOBlocks2.txt
1319 views
1
//-------------Sonic CD Horizontal Blocks 2 Script------------//
2
//--------Scripted by Christian Whitehead 'The Taxman'--------//
3
//-------Unpacked By Rubberduckycooly's Script Unpacker-------//
4
5
// Aliases
6
#alias Object.Value1 : Object.XDrawPos
7
#alias Object.Value2 : Object.XOffSet
8
#alias Object.Value3 : Object.Angle
9
#alias Object.Value4 : Object.AgainstBlock
10
11
// HUD alias
12
#alias Object[24].PropertyValue : HUD.CurrentTimePeriod
13
14
// Time Periods
15
#alias 0 : TIME_PRESENT
16
#alias 1 : TIME_PAST
17
#alias 2 : TIME_GOOD_FUTURE
18
#alias 3 : TIME_BAD_FUTURE
19
20
// Collision
21
#alias 1 : PLAYER_COL_FLOOR
22
#alias 2 : PLAYER_COL_LWALL
23
#alias 3 : PLAYER_COL_RWALL
24
25
26
sub ObjectMain
27
Object.Angle = Oscillation
28
Object.Angle += Object.PropertyValue
29
Object.Angle <<= 1
30
31
Cos(Object.XOffSet, Object.Angle)
32
Object.XOffSet <<= 12
33
Object.XOffSet += Object.XPos
34
Object.XOffSet &= 0xFFFF0000 // Truncate the value
35
Object.XOffSet -= Object.XDrawPos
36
Object.AgainstBlock = false
37
end sub
38
39
40
sub ObjectPlayerInteraction
41
TempValue0 = Object.XPos
42
Object.XPos = Object.XDrawPos
43
44
PlayerObjectCollision(C_BOX, -48, -16, 48, 16)
45
switch CheckResult
46
case PLAYER_COL_FLOOR
47
Player.XPos += Object.XOffSet
48
break
49
50
case PLAYER_COL_LWALL
51
if Object[-1].AgainstBlock == true
52
CallFunction(Player_Kill)
53
end if
54
break
55
56
case PLAYER_COL_RWALL
57
Object.AgainstBlock = true
58
break
59
end switch
60
61
Object.XPos = TempValue0
62
end sub
63
64
65
sub ObjectDraw
66
Cos(Object.XDrawPos, Object.Angle)
67
Object.XDrawPos <<= 12
68
Object.XDrawPos += Object.XPos
69
Object.XDrawPos &= 0xFFFF0000 // Truncate the value
70
DrawSpriteXY(0, Object.XDrawPos, Object.YPos)
71
DrawSpriteXY(1, Object.XDrawPos, Object.YPos)
72
DrawSpriteXY(2, Object.XDrawPos, Object.YPos)
73
end sub
74
75
76
sub ObjectStartup
77
switch HUD.CurrentTimePeriod
78
case TIME_PRESENT
79
LoadSpriteSheet("R4/Objects.gif")
80
TempValue0 = 163
81
TempValue1 = 1
82
TempValue2 = 196
83
break
84
85
case TIME_PAST
86
LoadSpriteSheet("R4/Objects2.gif")
87
TempValue0 = 1
88
TempValue1 = 157
89
TempValue2 = 34
90
break
91
92
case TIME_GOOD_FUTURE
93
LoadSpriteSheet("R4/Objects2.gif")
94
TempValue0 = 1
95
TempValue1 = 190
96
TempValue2 = 34
97
break
98
99
case TIME_BAD_FUTURE
100
LoadSpriteSheet("R4/Objects2.gif")
101
TempValue0 = 1
102
TempValue1 = 223
103
TempValue2 = 34
104
break
105
106
end switch
107
108
SpriteFrame(-48, -16, 32, 32, TempValue0, TempValue1)
109
SpriteFrame(-16, -16, 32, 32, TempValue0, TempValue1)
110
SpriteFrame(16, -16, 32, 32, TempValue0, TempValue1)
111
end sub
112
113
114
// ========================
115
// Editor Subs
116
// ========================
117
118
sub RSDKDraw
119
TempValue2 = Object.PropertyValue
120
TempValue2 <<= 1
121
122
123
Cos(TempValue0, TempValue2)
124
TempValue0 <<= 12
125
TempValue0 += Object.XPos
126
TempValue0 &= 0xFFFF0000 // Truncate the value
127
DrawSpriteXY(0, TempValue0, Object.YPos)
128
DrawSpriteXY(1, TempValue0, Object.YPos)
129
DrawSpriteXY(2, TempValue0, Object.YPos)
130
end sub
131
132
133
sub RSDKLoad
134
CallFunction(EditorHelpers_FindTimePeriod)
135
switch CheckResult
136
case TIME_PRESENT
137
LoadSpriteSheet("R4/Objects.gif")
138
TempValue0 = 163
139
TempValue1 = 1
140
TempValue2 = 196
141
break
142
143
case TIME_PAST
144
LoadSpriteSheet("R4/Objects2.gif")
145
TempValue0 = 1
146
TempValue1 = 157
147
TempValue2 = 34
148
break
149
150
case TIME_GOOD_FUTURE
151
LoadSpriteSheet("R4/Objects2.gif")
152
TempValue0 = 1
153
TempValue1 = 190
154
TempValue2 = 34
155
break
156
157
case TIME_BAD_FUTURE
158
LoadSpriteSheet("R4/Objects2.gif")
159
TempValue0 = 1
160
TempValue1 = 223
161
TempValue2 = 34
162
break
163
end switch
164
165
// R4 Blocks
166
SpriteFrame(-48, -16, 32, 32, TempValue0, TempValue1)
167
SpriteFrame(-16, -16, 32, 32, TempValue0, TempValue1)
168
SpriteFrame(16, -16, 32, 32, TempValue0, TempValue1)
169
170
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
171
end sub
172
173