@@ -49,7 +49,7 @@ type |
| 49 |
procedure RenderEntireSong(Times: Integer); |
49 |
procedure RenderEntireSong(Times: Integer); |
| 50 |
procedure RenderFromPosition(FromPos, ToPos: Integer); |
50 |
procedure RenderFromPosition(FromPos, ToPos: Integer); |
| 51 |
|
51 |
|
| 52 |
procedure OrderCheckFD; |
52 |
procedure OrderCheckCallback; |
| 53 |
public |
53 |
public |
| 54 |
|
54 |
|
| 55 |
end; |
55 |
end; |
@@ -128,7 +128,7 @@ begin |
| 128 |
ResetSound; |
128 |
ResetSound; |
| 129 |
enablesound; |
129 |
enablesound; |
| 130 |
|
130 |
|
| 131 |
FDCallback := nil; |
131 |
FCCallback := nil; |
| 132 |
load('render/preview.gb'); |
132 |
load('render/preview.gb'); |
| 133 |
|
133 |
|
| 134 |
Proc := TProcess.Create(nil); |
134 |
Proc := TProcess.Create(nil); |
@@ -174,10 +174,10 @@ end; |
| 174 |
|
174 |
|
| 175 |
procedure TfrmRenderToWave.RenderEntireSong(Times: Integer); |
175 |
procedure TfrmRenderToWave.RenderEntireSong(Times: Integer); |
| 176 |
var |
176 |
var |
| 177 |
OldFD: TCPUCallback; |
177 |
OldFC: TCPUCallback; |
| 178 |
begin |
178 |
begin |
| 179 |
OldFD := FDCallback; |
179 |
OldFC := FCCallback; |
| 180 |
FDCallback := @OrderCheckFD; |
180 |
FCCallback := @OrderCheckCallback; |
| 181 |
|
181 |
|
| 182 |
SetLength(SeenPatterns, PeekSymbol(SYM_ORDER_COUNT) div 2); |
182 |
SetLength(SeenPatterns, PeekSymbol(SYM_ORDER_COUNT) div 2); |
| 183 |
StartOfSong := -1; |
183 |
StartOfSong := -1; |
@@ -189,17 +189,17 @@ begin |
| 189 |
until ((StartOfSong <> -1) and (SeenPatterns[StartOfSong]-1 = PlayEntireSongSpinEdit.Value)) or CancelRequested; |
189 |
until ((StartOfSong <> -1) and (SeenPatterns[StartOfSong]-1 = PlayEntireSongSpinEdit.Value)) or CancelRequested; |
| 190 |
|
190 |
|
| 191 |
SetLength(SeenPatterns, 0); |
191 |
SetLength(SeenPatterns, 0); |
| 192 |
FDCallback := OldFD; |
192 |
FCCallback := OldFC; |
| 193 |
end; |
193 |
end; |
| 194 |
|
194 |
|
| 195 |
procedure TfrmRenderToWave.RenderFromPosition(FromPos, ToPos: Integer); |
195 |
procedure TfrmRenderToWave.RenderFromPosition(FromPos, ToPos: Integer); |
| 196 |
var |
196 |
var |
| 197 |
OldFD: TCPUCallback; |
197 |
OldFC: TCPUCallback; |
| 198 |
StartPattern, TargetPattern: Integer; |
198 |
StartPattern, TargetPattern: Integer; |
| 199 |
SawTargetPattern: Boolean; |
199 |
SawTargetPattern: Boolean; |
| 200 |
begin |
200 |
begin |
| 201 |
OldFD := FDCallback; |
201 |
OldFC := FCCallback; |
| 202 |
FDCallback := @OrderCheckFD; |
202 |
FCCallback := @OrderCheckCallback; |
| 203 |
|
203 |
|
| 204 |
SetLength(SeenPatterns, PeekSymbol(SYM_ORDER_COUNT) div 2); |
204 |
SetLength(SeenPatterns, PeekSymbol(SYM_ORDER_COUNT) div 2); |
| 205 |
StartOfSong := -1; |
205 |
StartOfSong := -1; |
@@ -226,15 +226,14 @@ begin |
| 226 |
CancelRequested; |
226 |
CancelRequested; |
| 227 |
|
227 |
|
| 228 |
SetLength(SeenPatterns, 0); |
228 |
SetLength(SeenPatterns, 0); |
| 229 |
FDCallback := OldFD; |
229 |
FCCallback := OldFC; |
| 230 |
end; |
230 |
end; |
| 231 |
|
231 |
|
| 232 |
procedure TfrmRenderToWave.OrderCheckFD; |
232 |
procedure TfrmRenderToWave.OrderCheckCallback; |
| 233 |
var |
233 |
var |
| 234 |
Pat: Integer; |
234 |
Pat: Integer; |
| 235 |
begin |
235 |
begin |
| 236 |
Pat := (PeekSymbol(SYM_CURRENT_ORDER) div 2); |
236 |
Pat := (PeekSymbol(SYM_CURRENT_ORDER) div 2); |
| 237 |
if Pat = CurrentPattern then Exit; |
|
|
| 238 |
|
237 |
|
| 239 |
if (SeenPatterns[Pat] <> 0) and (StartOfSong = -1) then |
238 |
if (SeenPatterns[Pat] <> 0) and (StartOfSong = -1) then |
| 240 |
StartOfSong := Pat; |
239 |
StartOfSong := Pat; |