Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-CD-2011-Script-Decompilation
Path: blob/main/Scripts/R8/R83CSetup.txt
1319 views
1
//---------------Sonic CD R8 3 C 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
Object.PaletteTimer++
72
if Object.PaletteTimer == 5
73
Object.PaletteTimer = 0
74
Object.CurrentPalette++
75
Object.CurrentPalette %= 6
76
TempValue0 = Object.CurrentPalette
77
TempValue0 += 639
78
Copy16x16Tile(395, TempValue0)
79
end if
80
SetActivePalette(Object.CurrentPalette, 0, Screen.YSize)
81
end sub
82
83
84
sub ObjectPlayerInteraction
85
TempValue1 = Player.XPos
86
TempValue1 >>= 16
87
TempValue1 += Player.CollisionRight
88
TempValue2 = Player.YPos
89
TempValue2 >>= 16
90
TempValue2 += Player.CollisionBottom
91
TempValue2 += 2
92
Get16x16TileInfo(TempValue0, TempValue1, TempValue2, TILEINFO_ANGLEB)
93
if TempValue0 == 1
94
Get16x16TileInfo(TempValue0, TempValue1, TempValue2, TILEINFO_DIRECTION)
95
if TempValue0 == 0
96
Player.XPos += 0x10000
97
else
98
Player.XPos -= 0x10000
99
end if
100
else
101
TempValue1 = Player.XPos
102
TempValue1 >>= 16
103
TempValue1 += Player.CollisionLeft
104
Get16x16TileInfo(TempValue0, TempValue1, TempValue2, TILEINFO_ANGLEB)
105
if TempValue0 == 1
106
Get16x16TileInfo(TempValue0, TempValue1, TempValue2, TILEINFO_DIRECTION)
107
if TempValue0 == 0
108
Player.XPos += 0x10000
109
else
110
Player.XPos -= 0x10000
111
end if
112
end if
113
end if
114
end sub
115
116
117
sub ObjectStartup
118
Object[19].Type = TypeName[R8 Setup]
119
Object[19].Priority = PRIORITY_ACTIVE
120
121
CopyPalette(0, 1)
122
CopyPalette(0, 2)
123
CopyPalette(0, 3)
124
CopyPalette(0, 4)
125
CopyPalette(0, 5)
126
127
TempValue0 = 0
128
TempValue1 = 0
129
TempValue2 = 32
130
while TempValue0 < 6
131
LoadPalette("R83C_PalCycle.act", TempValue0, 160, TempValue1, TempValue2)
132
TempValue0++
133
TempValue1 += 32
134
TempValue2 += 32
135
loop
136
end sub
137
138
139
// ========================
140
// Editor Subs
141
// ========================
142
143
sub RSDKDraw
144
DrawSprite(0)
145
end sub
146
147
148
sub RSDKLoad
149
LoadSpriteSheet("Global/Display.gif")
150
SpriteFrame(-16, -16, 32, 32, 1, 143) // #0 - "Script" Icon
151
152
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
153
end sub
154
155