Commit da9d27a

Nick committed on
Export of GBDK/RGBDS objects
commit da9d27a16cff8d2225f70b0affdca94c12048e53 parent 39f3f2c
5 changed files +41−13
ModifiedGBEmu.lpi +5−1
@@ -230,7 +230,7 @@
230 <PackageName Value="LCL"/> 230 <PackageName Value="LCL"/>
231 </Item5> 231 </Item5>
232 </RequiredPackages> 232 </RequiredPackages>
233 <Units Count="25"> 233 <Units Count="26">
234 <Unit0> 234 <Unit0>
235 <Filename Value="GBEmu.lpr"/> 235 <Filename Value="GBEmu.lpr"/>
236 <IsPartOfProject Value="True"/> 236 <IsPartOfProject Value="True"/>
@@ -362,6 +362,10 @@
362 <IsPartOfProject Value="True"/> 362 <IsPartOfProject Value="True"/>
363 <UnitName Value="hUGESettings"/> 363 <UnitName Value="hUGESettings"/>
364 </Unit24> 364 </Unit24>
365 <Unit25>
366 <Filename Value="rgb2sdas.pas"/>
367 <IsPartOfProject Value="True"/>
368 </Unit25>
365 </Units> 369 </Units>
366 </ProjectOptions> 370 </ProjectOptions>
367 <CompilerOptions> 371 <CompilerOptions>
Modifiedcodegen.pas +3−2
@@ -555,8 +555,9 @@ begin
555 emGBS: RenameSucceeded := RenameFile(Filename + '.gbs', FilePath); 555 emGBS: RenameSucceeded := RenameFile(Filename + '.gbs', FilePath);
556 emRGBDSObj: RenameSucceeded := RenameFile(Filename + '_song.obj', FilePath); 556 emRGBDSObj: RenameSucceeded := RenameFile(Filename + '_song.obj', FilePath);
557 emGBDKObj: begin 557 emGBDKObj: begin
558 RenameSucceeded := RenameFile(Filename + '_song.obj', FilePath); 558 RenameSucceeded := RenameFile(Filename + '_song.obj', FilePath+'bj');
559 ConvertRGB2SDAS(FilePath); 559 ConvertRGB2SDAS(FilePath+'bj', FilePath);
560 DeleteFile(FilePath+'bj');
560 end 561 end
561 else RenameSucceeded := RenameFile(Filename + '.gb', FilePath); 562 else RenameSucceeded := RenameFile(Filename + '.gb', FilePath);
562 end; 563 end;
Modifiedrgb2sdas.pas +6−5
@@ -1,5 +1,7 @@
1 unit rgb2sdas; 1 unit rgb2sdas;
2 2
3 { TODO: This unit needs to be refactored, really bad. }
4
3 {$mode objfpc}{$H+} 5 {$mode objfpc}{$H+}
4 6
5 interface 7 interface
@@ -104,7 +106,7 @@ type
104 106
105 EObjectConversionException = class(Exception); 107 EObjectConversionException = class(Exception);
106 108
107 procedure ConvertRGB2SDAS(Filename: string); 109 procedure ConvertRGB2SDAS(SourceName, DestName: string);
108 110
109 implementation 111 implementation
110 112
@@ -634,7 +636,7 @@ begin
634 Result := False; 636 Result := False;
635 end; 637 end;
636 638
637 procedure ConvertRGB2SDAS(Filename: string); 639 procedure ConvertRGB2SDAS(SourceName, DestName: String);
638 var 640 var
639 RObj: TRObj; 641 RObj: TRObj;
640 642
@@ -652,7 +654,7 @@ var
652 Idx: integer; 654 Idx: integer;
653 CODESEG: string; 655 CODESEG: string;
654 DefaultBank: integer = 1; 656 DefaultBank: integer = 1;
655 sourcename, tmp: string; 657 tmp: string;
656 658
657 old_sym, new_sym: string; 659 old_sym, new_sym: string;
658 660
@@ -660,7 +662,6 @@ var
660 662
661 export_all: boolean = False; 663 export_all: boolean = False;
662 begin 664 begin
663 sourcename := Filename;
664 if not FileExists(sourcename) then 665 if not FileExists(sourcename) then
665 Die('File not found: %s', [sourcename]); 666 Die('File not found: %s', [sourcename]);
666 667
@@ -695,7 +696,7 @@ begin
695 if verbose then 696 if verbose then
696 PrintObjFile(RObj); 697 PrintObjFile(RObj);
697 698
698 Assign(F, sourcename + '.o'); 699 Assign(F, DestName);
699 Rewrite(F); 700 Rewrite(F);
700 try 701 try
701 Idx := 0; 702 Idx := 0;
Modifiedtracker.lfm +10−0
@@ -5388,4 +5388,14 @@ object frmTracker: TfrmTracker
5388 Left = 248 5388 Left = 248
5389 Top = 24 5389 Top = 24
5390 end 5390 end
5391 object RGBDSObjSaveDialog: TSaveDialog
5392 Filter = 'RGBDS Object|*.obj'
5393 Left = 248
5394 Top = 64
5395 end
5396 object GBDKObjSaveDialog: TSaveDialog
5397 Filter = 'GBDK Object|*.o'
5398 Left = 288
5399 Top = 64
5400 end
5391 end 5401 end
Modifiedtracker.pas +17−5
@@ -39,6 +39,8 @@ type
39 NoiseMacroPaintbox: TPaintBox; 39 NoiseMacroPaintbox: TPaintBox;
40 Panel6: TPanel; 40 Panel6: TPanel;
41 GBDKCSaveDialog: TSaveDialog; 41 GBDKCSaveDialog: TSaveDialog;
42 RGBDSObjSaveDialog: TSaveDialog;
43 GBDKObjSaveDialog: TSaveDialog;
42 StopAction: TAction; 44 StopAction: TAction;
43 PlayOrderAction: TAction; 45 PlayOrderAction: TAction;
44 PlayCursorAction: TAction; 46 PlayCursorAction: TAction;
@@ -1864,24 +1866,34 @@ begin
1864 end; 1866 end;
1865 1867
1866 procedure TfrmTracker.ExportCMenuItemClick(Sender: TObject); 1868 procedure TfrmTracker.ExportCMenuItemClick(Sender: TObject);
1869 var
1870 S: String;
1867 begin 1871 begin
1868 if GBDKCSaveDialog.Execute then begin 1872 S := InputBox('Song descriptor', 'Enter the song descriptor (must be a valid C symbol):', 'song_descriptor');
1873 if GBDKCSaveDialog.Execute then
1869 RenderSongToGBDKC( 1874 RenderSongToGBDKC(
1870 Song, 1875 Song,
1871 InputBox('Song descriptor', 'Enter the song descriptor (must be a valid C symbol):', 'song_descriptor'), 1876 S,
1872 GBDKCSaveDialog.FileName 1877 GBDKCSaveDialog.FileName
1873 ); 1878 );
1874 end;
1875 end; 1879 end;
1876 1880
1877 procedure TfrmTracker.ExportGBDKMenuItemClick(Sender: TObject); 1881 procedure TfrmTracker.ExportGBDKMenuItemClick(Sender: TObject);
1882 var
1883 S: String;
1878 begin 1884 begin
1879 // 1885 S := InputBox('Song descriptor', 'Enter the song descriptor (must be a valid C symbol):', 'song_descriptor');
1886 if GBDKObjSaveDialog.Execute then
1887 RenderSongToFile(Song, GBDKObjSaveDialog.FileName, emGBDKObj, S);
1880 end; 1888 end;
1881 1889
1882 procedure TfrmTracker.ExportRGBDSMenuItemClick(Sender: TObject); 1890 procedure TfrmTracker.ExportRGBDSMenuItemClick(Sender: TObject);
1891 var
1892 S: String;
1883 begin 1893 begin
1884 // 1894 S := InputBox('Song descriptor', 'Enter the song descriptor (must be a valid RGBDS symbol):', 'song_descriptor');
1895 if RGBDSObjSaveDialog.Execute then
1896 RenderSongToFile(Song, RGBDSObjSaveDialog.FileName, emRGBDSObj, S);
1885 end; 1897 end;
1886 1898
1887 procedure TfrmTracker.PasteActionExecute(Sender: TObject); 1899 procedure TfrmTracker.PasteActionExecute(Sender: TObject);