Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-CD-2011-Script-Decompilation
Path: blob/main/Scripts/R8/R83DSetup.txt
1319 views
1
//---------------Sonic CD R8 3 D Setup Script-----------------//
2
//--------Scripted by Christian Whitehead 'The Taxman'--------//
3
//-------Unpacked By Rubberduckycooly's Script Unpacker-------//
4
5
// Aliases
6
#alias Object.Value0 : Object.PaletteTimer
7
#alias Object.Value1 : Object.CurrentPalette
8
#alias Object.Value2 : Object.VGearFrame
9
#alias Object.Value3 : Object.HCylinderFrame
10
#alias Object.Value4 : Object.VCylinderFrame
11
#alias Object.Value5 : Object.LightsFrame
12
13
// Priority
14
#alias 1 : PRIORITY_ACTIVE
15
16
// Tile Info
17
#alias 1 : TILEINFO_DIRECTION
18
#alias 8 : TILEINFO_ANGLEB
19
20
21
sub ObjectMain
22
Object.Rotation++
23
Object.Rotation %= 144
24
25
TempValue0 = Object.VGearFrame
26
TempValue0 %= 7
27
if TempValue0 == 0
28
TempValue0 = Object.VGearFrame
29
TempValue0 /= 7
30
TempValue0 <<= 1
31
TempValue0 += 600
32
Copy16x16Tile(387, TempValue0)
33
TempValue0++
34
Copy16x16Tile(388, TempValue0)
35
end if
36
Object.VGearFrame++
37
Object.VGearFrame %= 28
38
39
TempValue0 = Object.HCylinderFrame
40
TempValue0 &= 3
41
if TempValue0 == 0
42
TempValue0 = Object.HCylinderFrame
43
TempValue0 >>= 2
44
TempValue0 <<= 1
45
TempValue0 += 608
46
Copy16x16Tile(389, TempValue0)
47
TempValue0++
48
Copy16x16Tile(390, TempValue0)
49
end if
50
Object.HCylinderFrame++
51
Object.HCylinderFrame &= 15
52
53
TempValue0 = Object.VCylinderFrame
54
TempValue0 %= 5
55
if TempValue0 == 0
56
TempValue0 = Object.VCylinderFrame
57
TempValue0 /= 5
58
TempValue0 <<= 2
59
TempValue0 += 616
60
Copy16x16Tile(391, TempValue0)
61
TempValue0++
62
Copy16x16Tile(392, TempValue0)
63
TempValue0++
64
Copy16x16Tile(393, TempValue0)
65
TempValue0++
66
Copy16x16Tile(394, TempValue0)
67
end if
68
Object.VCylinderFrame++
69
Object.VCylinderFrame %= 20
70
71
TempValue0 = Object.LightsFrame
72
TempValue0 &= 7
73
if TempValue0 == 0
74
TempValue0 = Object.LightsFrame
75
TempValue0 >>= 3
76
TempValue0 += 632
77
Copy16x16Tile(396, TempValue0)
78
end if
79
Object.LightsFrame++
80
Object.LightsFrame %= 56
81
82
Object.PaletteTimer++
83
if Object.PaletteTimer == 6
84
Object.PaletteTimer = 0
85
Object.CurrentPalette++
86
Object.CurrentPalette %= 6
87
TempValue0 = Object.CurrentPalette
88
TempValue0 += 639
89
Copy16x16Tile(395, TempValue0)
90
end if
91
SetActivePalette(Object.CurrentPalette, 0, Screen.YSize)
92
end sub
93
94
95
sub ObjectPlayerInteraction
96
TempValue1 = Player.XPos
97
TempValue1 >>= 16
98
TempValue1 += Player.CollisionRight
99
TempValue2 = Player.YPos
100
TempValue2 >>= 16
101
TempValue2 += Player.CollisionBottom
102
TempValue2 += 2
103
Get16x16TileInfo(TempValue0, TempValue1, TempValue2, TILEINFO_ANGLEB)
104
if TempValue0 == 1
105
Get16x16TileInfo(TempValue0, TempValue1, TempValue2, TILEINFO_DIRECTION)
106
if TempValue0 == 0
107
Player.XPos += 0x10000
108
else
109
Player.XPos -= 0x10000
110
end if
111
else
112
TempValue1 = Player.XPos
113
TempValue1 >>= 16
114
TempValue1 += Player.CollisionLeft
115
Get16x16TileInfo(TempValue0, TempValue1, TempValue2, TILEINFO_ANGLEB)
116
if TempValue0 == 1
117
Get16x16TileInfo(TempValue0, TempValue1, TempValue2, TILEINFO_DIRECTION)
118
if TempValue0 == 0
119
Player.XPos += 0x10000
120
else
121
Player.XPos -= 0x10000
122
end if
123
end if
124
end if
125
end sub
126
127
128
sub ObjectStartup
129
Object[19].Type = TypeName[R8 Setup]
130
Object[19].Priority = PRIORITY_ACTIVE
131
132
CopyPalette(0, 1)
133
CopyPalette(0, 2)
134
CopyPalette(0, 3)
135
CopyPalette(0, 4)
136
CopyPalette(0, 5)
137
138
TempValue0 = 0
139
TempValue1 = 0
140
TempValue2 = 32
141
while TempValue0 < 6
142
LoadPalette("R83D_PalCycle.act", TempValue0, 160, TempValue1, TempValue2)
143
TempValue0++
144
TempValue1 += 32
145
TempValue2 += 32
146
loop
147
end sub
148
149
150
// ========================
151
// Editor Subs
152
// ========================
153
154
sub RSDKDraw
155
DrawSprite(0)
156
end sub
157
158
159
sub RSDKLoad
160
LoadSpriteSheet("Global/Display.gif")
161
SpriteFrame(-16, -16, 32, 32, 1, 143) // #0 - "Script" Icon
162
163
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
164
end sub
165
166