Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-CD-2011-Script-Decompilation
Path: blob/main/Scripts/Credits/TextFont1.txt
1319 views
1
//---------------Sonic CD Text Font 1 Script------------------//
2
//--------Scripted by Christian Whitehead 'The Taxman'--------//
3
//-------Unpacked By Rubberduckycooly's Script Unpacker-------//
4
5
// Aliases
6
#alias Object.Value1 : Object.TargetLine
7
8
// Text Info type
9
#alias 0 : TEXTINFO_TEXTDATA
10
#alias 1 : TEXTINFO_TEXTSIZE
11
12
13
sub ObjectDraw
14
15
// Only show letters 4th and onwards, as the first 3 letters are for identifying the text type
16
ArrayPos0 = 3
17
18
// Get the length of the line
19
GetTextInfo(TempValue1, MENU_1, TEXTINFO_TEXTSIZE, Object.TargetLine, 0)
20
21
// Taking away 3 for the reason mentioned above...
22
TempValue1 -= 3
23
24
// Base Position to start drawing text at
25
TempValue2 = TempValue1
26
TempValue2 <<= 18
27
FlipSign(TempValue2)
28
TempValue2 += Object.XPos
29
30
// Loop for drawing all the letters
31
while TempValue1 > 0
32
33
// Get the letter at the current text position
34
GetTextInfo(TempValue0, MENU_1, TEXTINFO_TEXTDATA, Object.TargetLine, ArrayPos0)
35
36
// Jump to the according special case, if needed for certain exceptions
37
switch TempValue0
38
default
39
Object.Frame = 0
40
41
// Translate lowercase letters to Sprite Frames
42
if TempValue0 > 64
43
if TempValue0 < 91
44
Object.Frame = TempValue0
45
Object.Frame -= 64
46
end if
47
end if
48
49
// Translate uppercase letters to Sprite Frames
50
if TempValue0 > 96
51
if TempValue0 < 123
52
Object.Frame = TempValue0
53
Object.Frame -= 96
54
end if
55
end if
56
57
if Object.Frame > 0
58
// If the letter is valid, draw it
59
DrawSpriteXY(Object.Frame, TempValue2, Object.YPos)
60
end if
61
break
62
63
case 38
64
// Ampersand (&)
65
DrawSpriteXY(32, TempValue2, Object.YPos)
66
break
67
68
case 39
69
// Tick mark (')
70
DrawSpriteXY(30, TempValue2, Object.YPos)
71
break
72
73
case 44
74
// Comma (,)
75
DrawSpriteXY(28, TempValue2, Object.YPos)
76
break
77
78
case 46
79
// Period (.)
80
DrawSpriteXY(27, TempValue2, Object.YPos)
81
break
82
83
case 47
84
// Forward slash (/)
85
DrawSpriteXY(31, TempValue2, Object.YPos)
86
break
87
88
case 58
89
// Colon (;)
90
DrawSpriteXY(29, TempValue2, Object.YPos)
91
break
92
93
case 94
94
// Caret (^)
95
DrawSpriteXY(36, TempValue2, Object.YPos)
96
break
97
98
case 225
99
// Accent mark A (á)
100
DrawSpriteXY(33, TempValue2, Object.YPos)
101
break
102
103
case 233
104
// Accent mark E (é)
105
DrawSpriteXY(34, TempValue2, Object.YPos)
106
break
107
108
case 243
109
// Accent mark O (ó)
110
DrawSpriteXY(35, TempValue2, Object.YPos)
111
break
112
113
end switch
114
115
// Move the cursor to the next letter
116
ArrayPos0++
117
118
// Decrease the remaining letter count
119
TempValue1--
120
121
// Each letter is 8 pixels apart
122
TempValue2 += 0x80000
123
loop
124
125
end sub
126
127
128
sub ObjectStartup
129
LoadSpriteSheet("Menu/CreditsText.gif")
130
131
// Setup all the letter Sprite Frames, primarily using loops to automate the process
132
SpriteFrame(-3, -9, 8, 16, 37, 35)
133
134
TempValue1 = 1
135
while TempValue1 < 35
136
TempValue0 = 1
137
while TempValue0 < 127
138
SpriteFrame(-3, -6, 8, 16, TempValue0, TempValue1)
139
TempValue0 += 9
140
loop
141
TempValue1 += 17
142
loop
143
144
TempValue0 = 1
145
while TempValue0 < 37
146
SpriteFrame(-3, -6, 8, 16, TempValue0, TempValue1)
147
TempValue0 += 9
148
loop
149
150
SpriteFrame(-3, -9, 8, 16, 37, 35)
151
SpriteFrame(-3, -9, 8, 16, 46, 35)
152
SpriteFrame(-3, -9, 8, 16, 55, 35)
153
SpriteFrame(-3, -6, 8, 16, 73, 35)
154
155
end sub
156
157
158
// ========================
159
// Editor Subs
160
// ========================
161
162
sub RSDKDraw
163
TempValue0 = 0
164
while TempValue0 < 4
165
DrawSprite(TempValue0)
166
TempValue0++
167
loop
168
end sub
169
170
171
sub RSDKLoad
172
LoadSpriteSheet("Menu/CreditsText.gif")
173
SpriteFrame(0, -6, 8, 16, 46, 18)
174
SpriteFrame(9, -6, 8, 16, 37, 1)
175
SpriteFrame(18, -6, 8, 16, 82, 18)
176
SpriteFrame(27, -6, 8, 16, 46, 18)
177
178
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
179
end sub
180
181