Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-CD-2011-Script-Decompilation
Path: blob/main/Scripts/Credits/TextFont3.txt
1319 views
1
//---------------Sonic CD Text Font 3 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
// Starting from the third letter because the first 3 aren't actually credits text
16
ArrayPos0 = 3
17
18
// Get how many letters are in the line
19
GetTextInfo(TempValue1, MENU_1, TEXTINFO_TEXTSIZE, Object.TargetLine, 0)
20
21
// And subtract 3 from that for the resasons stated above
22
TempValue1 -= 3
23
24
// And since the text should be centered, get its position offset now
25
TempValue2 = TempValue1
26
TempValue2 <<= 18
27
FlipSign(TempValue2)
28
TempValue2 += Object.XPos
29
30
// Loop through all the characters in the text line
31
while TempValue1 > 0
32
33
// Get what character's at the target position
34
GetTextInfo(TempValue0, MENU_1, TEXTINFO_TEXTDATA, Object.TargetLine, ArrayPos0)
35
36
// If needed, jump to the expecial exception case
37
switch TempValue0
38
default
39
Object.Frame = 0
40
41
// 65-90 are lowercase letter IDs, turn them into 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
// 97-122 are uppercase letter IDs, turn them into 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 it's a valid Frame, then draw the Sprite
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)
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 225
94
// á (Accent mark A)
95
DrawSpriteXY(33, TempValue2, Object.YPos)
96
break
97
98
case 233
99
// é (Accent mark E)
100
DrawSpriteXY(34, TempValue2, Object.YPos)
101
break
102
103
case 243
104
// ó (Accent mark O)
105
DrawSpriteXY(35, TempValue2, Object.YPos)
106
break
107
108
case 250
109
// ú (Accent mark U)
110
DrawSpriteXY(36, TempValue2, Object.YPos)
111
break
112
113
end switch
114
115
// Next character
116
ArrayPos0++
117
TempValue1--
118
119
// Letters are to be 8 pixels apart
120
TempValue2 += 0x80000
121
loop
122
123
end sub
124
125
126
sub ObjectStartup
127
LoadSpriteSheet("Menu/CreditsText.gif")
128
129
// Letter Sprite Frames, primarily using loops
130
131
SpriteFrame(-3, -9, 8, 16, 37, 35)
132
133
TempValue1 = 88
134
while TempValue1 < 110
135
TempValue0 = 1
136
while TempValue0 < 127
137
SpriteFrame(-3, -5, 8, 10, TempValue0, TempValue1)
138
TempValue0 += 9
139
loop
140
TempValue1 += 11
141
loop
142
143
TempValue0 = 1
144
while TempValue0 < 37
145
SpriteFrame(-3, -5, 8, 10, TempValue0, TempValue1)
146
TempValue0 += 9
147
loop
148
149
SpriteFrame(-3, -8, 8, 13, 37, 110)
150
SpriteFrame(-3, -8, 8, 13, 46, 110)
151
SpriteFrame(-3, -8, 8, 13, 55, 110)
152
SpriteFrame(-3, -8, 8, 13, 64, 110)
153
154
end sub
155
156
157
// ========================
158
// Editor Subs
159
// ========================
160
161
sub RSDKDraw
162
TempValue0 = 0
163
while TempValue0 < 4
164
DrawSprite(TempValue0)
165
TempValue0++
166
loop
167
end sub
168
169
170
sub RSDKLoad
171
LoadSpriteSheet("Menu/CreditsText.gif")
172
SpriteFrame(0, -5, 8, 10, 46, 99)
173
SpriteFrame(9, -5, 8, 10, 37, 88)
174
SpriteFrame(18, -5, 8, 10, 82, 99)
175
SpriteFrame(27, -5, 8, 10, 46, 99)
176
177
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
178
end sub
179
180