@@ -70,7 +70,7 @@ var |
| 70 |
SL.StrictDelimiter := True; |
70 |
SL.StrictDelimiter := True; |
| 71 |
SL.Delimiter := ','; |
71 |
SL.Delimiter := ','; |
| 72 |
|
72 |
|
| 73 |
for I := Low(Order) to High(Order) do |
73 |
for I := Low(Order) to High(Order)-1 do // HACK: account for off-by-one error |
| 74 |
SL.Add('P' + IntToStr(Order[I])); |
74 |
SL.Add('P' + IntToStr(Order[I])); |
| 75 |
|
75 |
|
| 76 |
Result := 'static const unsigned char* const order' + IntToStr(Number) + '[] = {'; |
76 |
Result := 'static const unsigned char* const order' + IntToStr(Number) + '[] = {'; |
@@ -143,6 +143,8 @@ var |
| 143 |
end; |
143 |
end; |
| 144 |
|
144 |
|
| 145 |
begin |
145 |
begin |
|
|
146 |
Song := OptimizeSong(Song); |
|
|
147 |
|
| 146 |
OutSL := TStringList.Create; |
148 |
OutSL := TStringList.Create; |
| 147 |
OutSL.Add('#include "hUGEDriver.h"'); |
149 |
OutSL.Add('#include "hUGEDriver.h"'); |
| 148 |
OutSL.Add('#include <stddef.h>'); |
150 |
OutSL.Add('#include <stddef.h>'); |
@@ -158,8 +160,9 @@ begin |
| 158 |
// TODO: Are keys and data defined to be aligned? Seems like they are but |
160 |
// TODO: Are keys and data defined to be aligned? Seems like they are but |
| 159 |
// should probably find out if that's just an implementation detail... |
161 |
// should probably find out if that's just an implementation detail... |
| 160 |
for I := 0 to Song.Patterns.Count - 1 do |
162 |
for I := 0 to Song.Patterns.Count - 1 do |
| 161 |
OutSL.Add(RenderGBDKPattern('P' + IntToStr(Song.Patterns.Keys[I]), |
163 |
if PatternIsUsed(Song.Patterns.Keys[I], Song) then |
| 162 |
Song.Patterns.Data[I]^)); |
164 |
OutSL.Add(RenderGBDKPattern('P' + IntToStr(Song.Patterns.Keys[I]), |
|
|
165 |
Song.Patterns.Data[I]^)); |
| 163 |
OutSL.Add(''); |
166 |
OutSL.Add(''); |
| 164 |
|
167 |
|
| 165 |
OutSL.Add(RenderGBDKOrder(1, Song.OrderMatrix[0])); |
168 |
OutSL.Add(RenderGBDKOrder(1, Song.OrderMatrix[0])); |
@@ -199,7 +202,7 @@ function RenderOrderTable(OrderMatrix: TOrderMatrix): string; |
| 199 |
SL := TStringList.Create; |
202 |
SL := TStringList.Create; |
| 200 |
SL.StrictDelimiter := True; |
203 |
SL.StrictDelimiter := True; |
| 201 |
SL.Delimiter := ','; |
204 |
SL.Delimiter := ','; |
| 202 |
for I := Low(Ints) to High(Ints) do |
205 |
for I := Low(Ints) to High(Ints)-1 do // HACK: account for the off-by-one error |
| 203 |
SL.Add('P' + IntToStr(Ints[I])); |
206 |
SL.Add('P' + IntToStr(Ints[I])); |
| 204 |
Result := SL.DelimitedText; |
207 |
Result := SL.DelimitedText; |
| 205 |
SL.Free; |
208 |
SL.Free; |