@@ -22,6 +22,10 @@ type |
| 22 |
CutAction: TAction; |
22 |
CutAction: TAction; |
| 23 |
ImageList2: TImageList; |
23 |
ImageList2: TImageList; |
| 24 |
GBSaveDialog: TSaveDialog; |
24 |
GBSaveDialog: TSaveDialog; |
|
|
25 |
MenuItem16: TMenuItem; |
|
|
26 |
MenuItem23: TMenuItem; |
|
|
27 |
MenuItem24: TMenuItem; |
|
|
28 |
MenuItem8: TMenuItem; |
| 25 |
WaveSaveDialog: TSaveDialog; |
29 |
WaveSaveDialog: TSaveDialog; |
| 26 |
Label22: TLabel; |
30 |
Label22: TLabel; |
| 27 |
Label23: TLabel; |
31 |
Label23: TLabel; |
@@ -69,7 +73,6 @@ type |
| 69 |
CommentMemo: TMemo; |
73 |
CommentMemo: TMemo; |
| 70 |
Label20: TLabel; |
74 |
Label20: TLabel; |
| 71 |
Label21: TLabel; |
75 |
Label21: TLabel; |
| 72 |
MenuItem10: TMenuItem; |
|
|
| 73 |
MenuItem11: TMenuItem; |
76 |
MenuItem11: TMenuItem; |
| 74 |
MenuItem12: TMenuItem; |
77 |
MenuItem12: TMenuItem; |
| 75 |
MenuItem13: TMenuItem; |
78 |
MenuItem13: TMenuItem; |
@@ -78,10 +81,8 @@ type |
| 78 |
DebugShiteButton: TMenuItem; |
81 |
DebugShiteButton: TMenuItem; |
| 79 |
N3: TMenuItem; |
82 |
N3: TMenuItem; |
| 80 |
N2: TMenuItem; |
83 |
N2: TMenuItem; |
| 81 |
N1: TMenuItem; |
|
|
| 82 |
MenuItem6: TMenuItem; |
84 |
MenuItem6: TMenuItem; |
| 83 |
MenuItem7: TMenuItem; |
85 |
MenuItem7: TMenuItem; |
| 84 |
MenuItem8: TMenuItem; |
|
|
| 85 |
MenuItem9: TMenuItem; |
86 |
MenuItem9: TMenuItem; |
| 86 |
OpenDialog1: TOpenDialog; |
87 |
OpenDialog1: TOpenDialog; |
| 87 |
OrderEditPopup: TPopupMenu; |
88 |
OrderEditPopup: TPopupMenu; |
@@ -421,6 +422,9 @@ var |
| 421 |
I: Integer; |
422 |
I: Integer; |
| 422 |
NewWaveform: T4bitWave; |
423 |
NewWaveform: T4bitWave; |
| 423 |
begin |
424 |
begin |
|
|
425 |
// TODO: Find some way to synchronize with the playback thread, so it doesn't |
|
|
426 |
// fail sometimes. |
|
|
427 |
|
| 424 |
with Song.Instruments[Instr] do |
428 |
with Song.Instruments[Instr] do |
| 425 |
begin |
429 |
begin |
| 426 |
case Type_ of |
430 |
case Type_ of |
@@ -433,17 +437,16 @@ begin |
| 433 |
Spokeb(NR14, Regs.NR14); |
437 |
Spokeb(NR14, Regs.NR14); |
| 434 |
end; |
438 |
end; |
| 435 |
Wave: begin |
439 |
Wave: begin |
| 436 |
Regs := WaveInstrumentToRegisters(Freq, True, Song.Instruments[Instr]); |
|
|
| 437 |
NewWaveform := ConvertWaveform(Song.Waves[Waveform]); |
440 |
NewWaveform := ConvertWaveform(Song.Waves[Waveform]); |
| 438 |
// Fill Wave RAM with the waveform |
441 |
// Fill Wave RAM with the waveform |
| 439 |
for I := 0 to 15 do |
442 |
for I := Low(NewWaveform) to High(NewWaveform) do |
| 440 |
Spokeb($FF30+I, NewWaveform[I]); |
443 |
Spokeb(AUD3_WAVE_RAM+I, NewWaveform[I]); |
| 441 |
|
444 |
|
| 442 |
Regs := WaveInstrumentToRegisters(Freq, True, Song.Instruments[Instr]); |
445 |
Regs := WaveInstrumentToRegisters(Freq, True, Song.Instruments[Instr]); |
| 443 |
|
446 |
|
| 444 |
Spokeb(NR30, Regs.NR30); |
447 |
Spokeb(NR30, Regs.NR30); |
| 445 |
Spokeb(NR31, Regs.NR31); |
448 |
Spokeb(NR31, Regs.NR31); |
| 446 |
Spokeb(NR32, Regs.NR32); |
449 |
Spokeb(NR32, %00100000); //Regs.NR32); |
| 447 |
Spokeb(NR33, Regs.NR33); |
450 |
Spokeb(NR33, Regs.NR33); |
| 448 |
Spokeb(NR34, Regs.NR34) |
451 |
Spokeb(NR34, Regs.NR34) |
| 449 |
end; |
452 |
end; |
@@ -889,29 +892,31 @@ var |
| 889 |
Note: Integer; |
892 |
Note: Integer; |
| 890 |
Freq: Integer; |
893 |
Freq: Integer; |
| 891 |
begin |
894 |
begin |
| 892 |
{if not Keybindings.TryGetData(Key, Note) then Exit; |
895 |
if Shift <> [] then Exit; |
| 893 |
Inc(Note, OctaveSpinEdit.Value*12); |
896 |
if not Keybindings.TryGetData(Key, Note) then Exit; |
| 894 |
EnsureRange(Note, LOWEST_NOTE, HIGHEST_NOTE); |
897 |
Inc(Note, OctaveSpinEdit.Value*12); |
|
|
898 |
EnsureRange(Note, LOWEST_NOTE, HIGHEST_NOTE); |
| 895 |
|
899 |
|
| 896 |
if PreviewingInstrument <> Note then |
900 |
if PreviewingInstrument <> Note then |
| 897 |
PreviewingInstrument := -1; |
901 |
PreviewingInstrument := -1; |
| 898 |
|
902 |
|
| 899 |
if (PreviewingInstrument > 0) or |
903 |
if (PreviewingInstrument > 0) or |
| 900 |
(not (ActiveControl = TrackerGrid)) or |
904 |
(not (ActiveControl = TrackerGrid)) or |
| 901 |
(InstrumentComboBox.ItemIndex <= 0) |
905 |
(InstrumentComboBox.ItemIndex <= 0) |
| 902 |
then exit; |
906 |
then exit; |
| 903 |
|
907 |
|
| 904 |
if not NotesToFreqs.TryGetData(Note, Freq) then Exit; |
908 |
if not NotesToFreqs.TryGetData(Note, Freq) then Exit; |
| 905 |
|
909 |
|
| 906 |
PreviewInstrument(Freq, InstrumentNumberSpinner.Value); |
910 |
PreviewInstrument(Freq, InstrumentNumberSpinner.Value); |
| 907 |
PreviewingInstrument := Note;} |
911 |
PreviewingInstrument := Note; |
| 908 |
end; |
912 |
end; |
| 909 |
|
913 |
|
| 910 |
procedure TfrmTracker.FormKeyUp(Sender: TObject; var Key: Word; |
914 |
procedure TfrmTracker.FormKeyUp(Sender: TObject; var Key: Word; |
| 911 |
Shift: TShiftState); |
915 |
Shift: TShiftState); |
| 912 |
begin |
916 |
begin |
|
|
917 |
if PreviewingInstrument <> -1 then |
|
|
918 |
Panic; |
| 913 |
PreviewingInstrument := -1; |
919 |
PreviewingInstrument := -1; |
| 914 |
Panic; |
|
|
| 915 |
end; |
920 |
end; |
| 916 |
|
921 |
|
| 917 |
procedure TfrmTracker.ImportWaveButtonClick(Sender: TObject); |
922 |
procedure TfrmTracker.ImportWaveButtonClick(Sender: TObject); |
@@ -1157,15 +1162,12 @@ end; |
| 1157 |
|
1162 |
|
| 1158 |
procedure TfrmTracker.MenuItem10Click(Sender: TObject); |
1163 |
procedure TfrmTracker.MenuItem10Click(Sender: TObject); |
| 1159 |
begin |
1164 |
begin |
| 1160 |
if (Screen.ActiveControl is TEdit) then |
1165 |
|
| 1161 |
(Screen.ActiveControl as TEdit).SelectAll |
|
|
| 1162 |
else if (Screen.ActiveControl is TTrackerGrid) then |
|
|
| 1163 |
(Screen.ActiveControl as TTrackerGrid).SelectAll; |
|
|
| 1164 |
end; |
1166 |
end; |
| 1165 |
|
1167 |
|
| 1166 |
procedure TfrmTracker.MenuItem11Click(Sender: TObject); |
1168 |
procedure TfrmTracker.MenuItem11Click(Sender: TObject); |
| 1167 |
begin |
1169 |
begin |
| 1168 |
|
1170 |
TrackerGrid.DoUndo; |
| 1169 |
end; |
1171 |
end; |
| 1170 |
|
1172 |
|
| 1171 |
procedure TfrmTracker.MenuItem14Click(Sender: TObject); |
1173 |
procedure TfrmTracker.MenuItem14Click(Sender: TObject); |
@@ -1246,10 +1248,7 @@ end; |
| 1246 |
|
1248 |
|
| 1247 |
procedure TfrmTracker.MenuItem8Click(Sender: TObject); |
1249 |
procedure TfrmTracker.MenuItem8Click(Sender: TObject); |
| 1248 |
begin |
1250 |
begin |
| 1249 |
if (Screen.ActiveControl is TEdit) then |
1251 |
TrackerGrid.DoRedo; |
| 1250 |
(Screen.ActiveControl as TEdit).ClearSelection |
|
|
| 1251 |
else if (Screen.ActiveControl is TTrackerGrid) then |
|
|
| 1252 |
(Screen.ActiveControl as TTrackerGrid).EraseSelection; |
|
|
| 1253 |
end; |
1252 |
end; |
| 1254 |
|
1253 |
|
| 1255 |
procedure TfrmTracker.NoiseVisualizerPaint(Sender: TObject); |
1254 |
procedure TfrmTracker.NoiseVisualizerPaint(Sender: TObject); |