-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfmmain.pas
153 lines (130 loc) · 3.5 KB
/
fmmain.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
unit fmmain;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls,LazFileUtils,hunklib;
type
{ TForm1 }
TForm1 = class(TForm)
SaveAs: TButton;
InFile: TButton;
EditFileName: TEdit;
EditDataName: TEdit;
EditSizeName: TEdit;
EditHunkName: TEdit;
InfoLabel: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
OpenDialog: TOpenDialog;
MemoryGroup: TRadioGroup;
SaveDialog: TSaveDialog;
procedure MemoryGroupClick(Sender: TObject);
procedure SaveAsClick(Sender: TObject);
procedure InFileClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
MemLoad : Longword;
IncludeFileSize : boolean;
function ValidFields : boolean;
procedure CreateHunkFile;
procedure UpdateHunkInfo;
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
function TForm1.ValidFields : boolean;
begin
result:=false;
if EditFileName.Text = '' then
begin
ShowMessage('No File Selected');
end
else if EditDataName.Text = '' then
begin
ShowMessage('Data Name cannot be empty');
end
else if EditHunkName.Text = '' then
begin
ShowMessage('Hunk Name cannot be empty');
end
else
begin
result:=true;
end;
end;
procedure TForm1.UpdateHunkInfo;
begin
case MemoryGroup.ItemIndex of 0:begin
MemLoad:=ANY_MEM;
EditHunkName.Text:='ANYMEM';
end;
1:begin
MemLoad:=CHIP_MEM;
EditHunkName.Text:='CHIPMEM';
end;
2:begin
MemLoad:=FAST_MEM;
EditHunkName.Text:='FASTMEM';
end;
end;
if EditSizeName.Text<>'' then IncludeFileSize:=true else IncludeFileSize:=false;
end;
procedure TForm1.CreateHunkFile;
var
outF : File;
error : word;
size : longword;
begin
if SaveDialog.Execute = false then exit;
{$I-}
System.Assign(outF,SaveDialog.FileName);
System.Rewrite(outF,1);
WriteHunkUnit(outF);
WriteHunkName(outF,EditHunkName.Text);
size:=WriteHunkData(outF,MemLoad,OpenDialog.Filename,IncludeFileSize);
WriteHunkExt(outF,EditDataName.Text);
if IncludeFileSize then WriteHunkExtSize(outF,EditSizeName.Text,size);
WriteHunkEnd(outF);
system.close(outF);
error:=IORESULT;
{$I+}
if error=0 then
begin
InfoLabel.Caption:='New hunk successfully created and saved!';
end
else
begin
InfoLabel.Caption:='Ouch it looks like we had booboo!';
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
procedure TForm1.SaveAsClick(Sender: TObject);
begin
if ValidFields then CreateHunkFile;
end;
procedure TForm1.MemoryGroupClick(Sender: TObject);
begin
UpdateHunkInfo;
end;
procedure TForm1.InFileClick(Sender: TObject);
var
sname : string;
begin
// OpenDialog.Filter := 'Windows BMP|*.bmp|PNG|*.png|PC Paintbrush |*.pcx|DP-Amiga IFF LBM|*.lbm|DP-Amiga IFF BBM Brush|*.bbm|GIF|*.gif|RM RAW Files|*.raw|All Files|*.*';
if OpenDialog.Execute then
begin
InfoLabel.Caption:='';
EditFileName.Text:=OpenDialog.FileName;
sname:=LowerCase(ExtractFileName(ExtractFileNameWithoutExt(OpenDialog.FileName)));
EditDataName.Text:='_'+sname;
EditSizeName.Text:='_'+sname+'_size';
UpdateHunkInfo;
end;
end;
end.