@@ -10,7 +10,7 @@ uses |
| 10 |
Song, EmulationThread, Utils, Constants, sound, vars, machine, |
10 |
Song, EmulationThread, Utils, Constants, sound, vars, machine, |
| 11 |
about_hugetracker, TrackerGrid, lclintf, lmessages, Buttons, Grids, DBCtrls, |
11 |
about_hugetracker, TrackerGrid, lclintf, lmessages, Buttons, Grids, DBCtrls, |
| 12 |
HugeDatatypes, LCLType, RackCtls, Codegen, SymParser, options, IniFiles, |
12 |
HugeDatatypes, LCLType, RackCtls, Codegen, SymParser, options, IniFiles, |
| 13 |
bgrabitmap, effecteditor, WaveExport; |
13 |
bgrabitmap, effecteditor, RenderToWave; |
| 14 |
|
14 |
|
| 15 |
type |
15 |
type |
| 16 |
{ TfrmTracker } |
16 |
{ TfrmTracker } |
@@ -335,7 +335,6 @@ type |
| 335 |
|
335 |
|
| 336 |
{PatternsNode, }InstrumentsNode, WavesNode, RoutinesNode: TTreeNode; |
336 |
{PatternsNode, }InstrumentsNode, WavesNode, RoutinesNode: TTreeNode; |
| 337 |
|
337 |
|
| 338 |
SymbolTable: TSymbolMap; |
|
|
| 339 |
OptionsFile: TIniFile; |
338 |
OptionsFile: TIniFile; |
| 340 |
|
339 |
|
| 341 |
VisualizerBuffer: TBGRABitmap; |
340 |
VisualizerBuffer: TBGRABitmap; |
@@ -351,10 +350,6 @@ type |
| 351 |
function PreparePreview: Boolean; |
350 |
function PreparePreview: Boolean; |
| 352 |
procedure ResetEmulationThread; |
351 |
procedure ResetEmulationThread; |
| 353 |
|
352 |
|
| 354 |
function WordPeekSymbol(Symbol: String): Integer; |
|
|
| 355 |
procedure WordPokeSymbol(Symbol: String; Value: Word); |
|
|
| 356 |
function PeekSymbol(Symbol: String): Integer; |
|
|
| 357 |
procedure PokeSymbol(Symbol: String; Value: Byte); |
|
|
| 358 |
procedure OnFD(var Msg: TLMessage); message LM_FD; |
353 |
procedure OnFD(var Msg: TLMessage); message LM_FD; |
| 359 |
procedure OnUndoOccured(var Msg: TLMessage); message LM_UNDO_OCCURED; |
354 |
procedure OnUndoOccured(var Msg: TLMessage); message LM_UNDO_OCCURED; |
| 360 |
procedure OnNotePlaced(var Msg: TLMessage); message LM_PREVIEW_NOTE; |
355 |
procedure OnNotePlaced(var Msg: TLMessage); message LM_PREVIEW_NOTE; |
@@ -663,30 +658,6 @@ begin |
| 663 |
OrderEditStringGrid.Cells[C, R] := '0'; |
658 |
OrderEditStringGrid.Cells[C, R] := '0'; |
| 664 |
end; |
659 |
end; |
| 665 |
|
660 |
|
| 666 |
function TfrmTracker.PeekSymbol(Symbol: String): Integer; |
|
|
| 667 |
begin |
|
|
| 668 |
if SymbolTable = nil then exit(0); |
|
|
| 669 |
Result := speekb(SymbolTable.KeyData[Symbol]); |
|
|
| 670 |
end; |
|
|
| 671 |
|
|
|
| 672 |
procedure TfrmTracker.PokeSymbol(Symbol: String; Value: Byte); |
|
|
| 673 |
begin |
|
|
| 674 |
if SymbolTable = nil then exit; |
|
|
| 675 |
spokeb(SymbolTable.KeyData[Symbol], Value); |
|
|
| 676 |
end; |
|
|
| 677 |
|
|
|
| 678 |
function TfrmTracker.WordPeekSymbol(Symbol: String): Integer; |
|
|
| 679 |
begin |
|
|
| 680 |
if SymbolTable = nil then exit(0); |
|
|
| 681 |
Result := wordpeek(SymbolTable.KeyData[Symbol]); |
|
|
| 682 |
end; |
|
|
| 683 |
|
|
|
| 684 |
procedure TfrmTracker.WordPokeSymbol(Symbol: String; Value: Word); |
|
|
| 685 |
begin |
|
|
| 686 |
if SymbolTable = nil then exit; |
|
|
| 687 |
wordpoke(SymbolTable.KeyData[Symbol], Value); |
|
|
| 688 |
end; |
|
|
| 689 |
|
|
|
| 690 |
function TfrmTracker.PreparePreview: Boolean; |
661 |
function TfrmTracker.PreparePreview: Boolean; |
| 691 |
var |
662 |
var |
| 692 |
I: Integer; |
663 |
I: Integer; |
@@ -1571,7 +1542,11 @@ var |
| 1571 |
Samp: Integer; |
1542 |
Samp: Integer; |
| 1572 |
begin |
1543 |
begin |
| 1573 |
// HACK: Avoid LCL bug where modal windows can't close. |
1544 |
// HACK: Avoid LCL bug where modal windows can't close. |
| 1574 |
if frmOptions.Visible or frmEffectEditor.Visible then Exit; |
1545 |
if frmOptions.Visible |
|
|
1546 |
or frmEffectEditor.Visible |
|
|
1547 |
or frmRenderToWave.Visible then |
|
|
1548 |
Exit; |
|
|
1549 |
|
| 1575 |
if Playing then |
1550 |
if Playing then |
| 1576 |
OscilloscopeUpdateTimer.Interval := 25 |
1551 |
OscilloscopeUpdateTimer.Interval := 25 |
| 1577 |
else |
1552 |
else |
@@ -1609,8 +1584,9 @@ end; |
| 1609 |
procedure TfrmTracker.ToolButton10Click(Sender: TObject); |
1584 |
procedure TfrmTracker.ToolButton10Click(Sender: TObject); |
| 1610 |
begin |
1585 |
begin |
| 1611 |
EmulationThread.Terminate; |
1586 |
EmulationThread.Terminate; |
| 1612 |
if RenderPreviewROM(Song) and WavSaveDialog.Execute then begin |
1587 |
if RenderPreviewROM(Song) then begin |
| 1613 |
ExportWaveToFile(WavSaveDialog.Filename); |
1588 |
SymbolTable := ParseSymFile('hUGEDriver/preview.sym'); |
|
|
1589 |
frmRenderToWave.ShowModal; |
| 1614 |
ResetEmulationThread; |
1590 |
ResetEmulationThread; |
| 1615 |
end; |
1591 |
end; |
| 1616 |
end; |
1592 |
end; |