Commit 0f05fee

Nick committed on
Removing graphics units
commit 0f05fee934e58ffc067a2f57f21b6b4bdb5ae41f parent 41039c9
6 changed files +45−494
Modified.gitignore +2−1
@@ -11,4 +11,5 @@ lib
11 *.sym 11 *.sym
12 *.lnk 12 *.lnk
13 *.map 13 *.map
14 ~* 14 ~*
15 SDL2*
ModifiedGBEmu.lpi +39−43
@@ -63,124 +63,120 @@
63 <PackageName Value="LCL"/> 63 <PackageName Value="LCL"/>
64 </Item6> 64 </Item6>
65 </RequiredPackages> 65 </RequiredPackages>
66 <Units Count="23"> 66 <Units Count="22">
67 <Unit0> 67 <Unit0>
68 <Filename Value="GBEmu.lpr"/> 68 <Filename Value="GBEmu.lpr"/>
69 <IsPartOfProject Value="True"/> 69 <IsPartOfProject Value="True"/>
70 </Unit0> 70 </Unit0>
71 <Unit1> 71 <Unit1>
72 <Filename Value="Gpu\gfx.pas"/> 72 <Filename Value="Cpu\machine.pas"/>
73 <IsPartOfProject Value="True"/> 73 <IsPartOfProject Value="True"/>
74 </Unit1> 74 </Unit1>
75 <Unit2> 75 <Unit2>
76 <Filename Value="Cpu\machine.pas"/> 76 <Filename Value="Cpu\z80cpu.pas"/>
77 <IsPartOfProject Value="True"/> 77 <IsPartOfProject Value="True"/>
78 <UnitName Value="Z80CPU"/>
78 </Unit2> 79 </Unit2>
79 <Unit3> 80 <Unit3>
80 <Filename Value="Cpu\z80cpu.pas"/> 81 <Filename Value="Sound\sound.pas"/>
81 <IsPartOfProject Value="True"/> 82 <IsPartOfProject Value="True"/>
82 <UnitName Value="Z80CPU"/>
83 </Unit3> 83 </Unit3>
84 <Unit4> 84 <Unit4>
85 <Filename Value="Sound\sound.pas"/> 85 <Filename Value="Global\vars.pas"/>
86 <IsPartOfProject Value="True"/> 86 <IsPartOfProject Value="True"/>
87 </Unit4> 87 </Unit4>
88 <Unit5> 88 <Unit5>
89 <Filename Value="Global\vars.pas"/> 89 <Filename Value="mainloop.pas"/>
90 <IsPartOfProject Value="True"/> 90 <IsPartOfProject Value="True"/>
91 </Unit5> 91 </Unit5>
92 <Unit6> 92 <Unit6>
93 <Filename Value="mainloop.pas"/>
94 <IsPartOfProject Value="True"/>
95 </Unit6>
96 <Unit7>
97 <Filename Value="tracker.pas"/> 93 <Filename Value="tracker.pas"/>
98 <IsPartOfProject Value="True"/> 94 <IsPartOfProject Value="True"/>
99 <ComponentName Value="frmTracker"/> 95 <ComponentName Value="frmTracker"/>
100 <HasResources Value="True"/> 96 <HasResources Value="True"/>
101 <ResourceBaseClass Value="Form"/> 97 <ResourceBaseClass Value="Form"/>
102 <UnitName Value="Tracker"/> 98 <UnitName Value="Tracker"/>
103 </Unit7> 99 </Unit6>
104 <Unit8> 100 <Unit7>
105 <Filename Value="about.pas"/> 101 <Filename Value="about.pas"/>
106 <IsPartOfProject Value="True"/> 102 <IsPartOfProject Value="True"/>
107 <ComponentName Value="frmAbout"/> 103 <ComponentName Value="frmAbout"/>
108 <HasResources Value="True"/> 104 <HasResources Value="True"/>
109 <ResourceBaseClass Value="Form"/> 105 <ResourceBaseClass Value="Form"/>
110 <UnitName Value="About"/> 106 <UnitName Value="About"/>
111 </Unit8> 107 </Unit7>
112 <Unit9> 108 <Unit8>
113 <Filename Value="instruments.pas"/> 109 <Filename Value="instruments.pas"/>
114 <IsPartOfProject Value="True"/> 110 <IsPartOfProject Value="True"/>
115 </Unit9> 111 </Unit8>
116 <Unit10> 112 <Unit9>
117 <Filename Value="song.pas"/> 113 <Filename Value="song.pas"/>
118 <IsPartOfProject Value="True"/> 114 <IsPartOfProject Value="True"/>
119 <UnitName Value="Song"/> 115 <UnitName Value="Song"/>
120 </Unit10> 116 </Unit9>
121 <Unit11> 117 <Unit10>
122 <Filename Value="emulationthread.pas"/> 118 <Filename Value="emulationthread.pas"/>
123 <IsPartOfProject Value="True"/> 119 <IsPartOfProject Value="True"/>
124 <UnitName Value="EmulationThread"/> 120 <UnitName Value="EmulationThread"/>
125 </Unit11> 121 </Unit10>
126 <Unit12> 122 <Unit11>
127 <Filename Value="utils.pas"/> 123 <Filename Value="utils.pas"/>
128 <IsPartOfProject Value="True"/> 124 <IsPartOfProject Value="True"/>
129 <UnitName Value="Utils"/> 125 <UnitName Value="Utils"/>
130 </Unit12> 126 </Unit11>
131 <Unit13> 127 <Unit12>
132 <Filename Value="constants.pas"/> 128 <Filename Value="constants.pas"/>
133 <IsPartOfProject Value="True"/> 129 <IsPartOfProject Value="True"/>
134 <UnitName Value="Constants"/> 130 <UnitName Value="Constants"/>
135 </Unit13> 131 </Unit12>
136 <Unit14> 132 <Unit13>
137 <Filename Value="waves.pas"/> 133 <Filename Value="waves.pas"/>
138 <IsPartOfProject Value="True"/> 134 <IsPartOfProject Value="True"/>
139 <UnitName Value="Waves"/> 135 <UnitName Value="Waves"/>
140 </Unit14> 136 </Unit13>
141 <Unit15> 137 <Unit14>
142 <Filename Value="about_hugetracker.pas"/> 138 <Filename Value="about_hugetracker.pas"/>
143 <IsPartOfProject Value="True"/> 139 <IsPartOfProject Value="True"/>
144 <ComponentName Value="frmAboutHugetracker"/> 140 <ComponentName Value="frmAboutHugetracker"/>
145 <HasResources Value="True"/> 141 <HasResources Value="True"/>
146 <ResourceBaseClass Value="Form"/> 142 <ResourceBaseClass Value="Form"/>
147 </Unit15> 143 </Unit14>
148 <Unit16> 144 <Unit15>
149 <Filename Value="trackergrid.pas"/> 145 <Filename Value="trackergrid.pas"/>
150 <IsPartOfProject Value="True"/> 146 <IsPartOfProject Value="True"/>
151 <UnitName Value="TrackerGrid"/> 147 <UnitName Value="TrackerGrid"/>
152 </Unit16> 148 </Unit15>
153 <Unit17> 149 <Unit16>
154 <Filename Value="patterns.pas"/> 150 <Filename Value="patterns.pas"/>
155 <IsPartOfProject Value="True"/> 151 <IsPartOfProject Value="True"/>
156 <UnitName Value="Patterns"/> 152 <UnitName Value="Patterns"/>
157 </Unit17> 153 </Unit16>
158 <Unit18> 154 <Unit17>
159 <Filename Value="clipboardutils.pas"/> 155 <Filename Value="clipboardutils.pas"/>
160 <IsPartOfProject Value="True"/> 156 <IsPartOfProject Value="True"/>
161 <UnitName Value="ClipboardUtils"/> 157 <UnitName Value="ClipboardUtils"/>
162 </Unit18> 158 </Unit17>
163 <Unit19> 159 <Unit18>
164 <Filename Value="hugedatatypes.pas"/> 160 <Filename Value="hugedatatypes.pas"/>
165 <IsPartOfProject Value="True"/> 161 <IsPartOfProject Value="True"/>
166 <UnitName Value="HugeDatatypes"/> 162 <UnitName Value="HugeDatatypes"/>
167 </Unit19> 163 </Unit18>
168 <Unit20> 164 <Unit19>
169 <Filename Value="codegen.pas"/> 165 <Filename Value="codegen.pas"/>
170 <IsPartOfProject Value="True"/> 166 <IsPartOfProject Value="True"/>
171 <UnitName Value="Codegen"/> 167 <UnitName Value="Codegen"/>
172 </Unit20> 168 </Unit19>
173 <Unit21> 169 <Unit20>
174 <Filename Value="symparser.pas"/> 170 <Filename Value="symparser.pas"/>
175 <IsPartOfProject Value="True"/> 171 <IsPartOfProject Value="True"/>
176 <UnitName Value="SymParser"/> 172 <UnitName Value="SymParser"/>
177 </Unit21> 173 </Unit20>
178 <Unit22> 174 <Unit21>
179 <Filename Value="effecteditor.pas"/> 175 <Filename Value="effecteditor.pas"/>
180 <IsPartOfProject Value="True"/> 176 <IsPartOfProject Value="True"/>
181 <ComponentName Value="Form1"/> 177 <ComponentName Value="Form1"/>
182 <ResourceBaseClass Value="Form"/> 178 <ResourceBaseClass Value="Form"/>
183 </Unit22> 179 </Unit21>
184 </Units> 180 </Units>
185 </ProjectOptions> 181 </ProjectOptions>
186 <CompilerOptions> 182 <CompilerOptions>
@@ -188,7 +184,7 @@
188 <PathDelim Value="\"/> 184 <PathDelim Value="\"/>
189 <SearchPaths> 185 <SearchPaths>
190 <IncludeFiles Value="GPU;CPU;Sound;Global;$(ProjOutDir)"/> 186 <IncludeFiles Value="GPU;CPU;Sound;Global;$(ProjOutDir)"/>
191 <OtherUnitFiles Value="GPU;CPU;Sound;Global;SDL2_headers"/> 187 <OtherUnitFiles Value="CPU;Sound;Global;SDL2_headers"/>
192 <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> 188 <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
193 </SearchPaths> 189 </SearchPaths>
194 <Parsing> 190 <Parsing>
ModifiedGBEmu.lpr +0−1
@@ -10,7 +10,6 @@ uses
10 Forms, 10 Forms,
11 Interfaces, 11 Interfaces,
12 Tracker in 'Tracker.pas', 12 Tracker in 'Tracker.pas',
13 gfx in 'GPU\gfx.pas',
14 Z80CPU in 'CPU\z80cpu.pas', 13 Z80CPU in 'CPU\z80cpu.pas',
15 sound in 'Sound\sound.pas', 14 sound in 'Sound\sound.pas',
16 vars in 'Global\vars.pas', 15 vars in 'Global\vars.pas',
DeletedGpu/gfx.pas +0−371
@@ -1,371 +0,0 @@
1 {+-----------------------------------------------------------------------------+
2 | Author: Christian Hackbart
3 | Description: Tile renderer
4 | last changes: 31.10.2000
5 |
6 | http://www.tu-ilmenau.de/~hackbart
7 +----------------------------------------------------------------------------+}
8
9 { - some games like Tomb Raider are not displayed correct }
10
11 unit gfx;
12
13 {$MODE Delphi}
14
15 interface
16
17 procedure make_line_tile(nr: byte; offset: word);
18 procedure make_line_finish(nr: byte);
19
20 var
21 tc: word;
22
23 implementation
24
25 uses vars;
26
27 procedure make_line_tile(nr: byte; offset: word);
28 var
29 t_temp: DWord;
30 tilemap, tile_addr, w1, w2, w3: word;
31 buff_addr: DWord;
32 tile_nr, attr, tile_fx: byte;
33 nr_y, nr_x: byte;
34 start_tiles: word;
35 tempo, lop: integer;
36
37 begin
38 tile_addr := 0;
39 if (nr > 143) or (offset > 21) then
40 exit;
41 tc := offset;
42
43 buff_addr := dx_bits * offset * 8 + 100;
44 nr_y := (m_iram[$ff42] + nr);
45 nr_x := m_iram[$ff43];
46 start_tiles := ((nr_x shr 3) + offset) and 31;
47 if m_iram[$ff40] and 8 > 0 then
48 tilemap := $9c00
49 else
50 tilemap := $9800;
51 tile_nr := m_iram[(tilemap + start_tiles + ((nr_y and 248) shl 2))];
52
53 attr := m_iram2[(tilemap + start_tiles + ((nr_y and 248) shl 2))];
54
55 if m_iram[$ff40] and 16 > 0 then
56 asm
57 MOV AL,tile_nr
58 MOVZX AX,AL
59 SHL AX,4
60 ADD AX,$8000
61 MOV tile_addr,AX
62 end
63 else
64 asm
65 MOV AL,tile_nr
66 MOVSX AX,AL
67 SAL AX,4
68 ADD AX,$9000
69 MOV tile_addr,AX
70 end;
71
72 if (attr and 64) > 0 then
73 tile_addr := tile_addr + (7 - (nr_y - 8 * (nr_y shr 3))) * 2
74 else
75 tile_addr := tile_addr + (nr_y - 8 * (nr_y shr 3)) * 2;
76
77 if attr and 8 = 0 then
78 begin
79 w1 := m_iram[tile_addr];
80 Inc(tile_addr);
81 w2 := m_iram[tile_addr];
82 end
83 else
84 begin
85 w1 := m_iram2[tile_addr];
86 Inc(tile_addr);
87 w2 := m_iram2[tile_addr];
88 end;
89
90
91 if attr and 32 > 0 then
92 tile_fx := 1
93 else
94 tile_fx := 0;
95
96 w3 := (w2 shl 8) or w1;
97 for lop := 0 to 7 do
98 begin
99 tempo := pix[w3][lop][tile_fx];
100 line_b_mask[buff_addr] := tempo;
101 t_temp := pal_dx_b[attr and 7][tempo];
102 case dx_bits of
103 2: asm
104 MOV EAX,t_temp
105 MOV EDI,buff_addr
106 MOV word ptr line_b[EDI],AX
107 LEA EDI,[EDI+2]
108 MOV buff_addr,EDI
109 end;
110 3: asm
111 MOV EAX,t_temp
112 MOV EBX,EAX
113 SHR EAX,16
114 MOV EDI,buff_addr
115 MOV byte(line_b[EDI]),BL
116 MOV byte(line_b[EDI+1]),BH
117 MOV byte(line_b[EDI+2]),AL
118 LEA EDI,[EDI+3]
119 MOV buff_addr,EDI
120 end;
121 4: asm
122 MOV EAX,t_temp
123 MOV EDI,buff_addr
124 MOV dword ptr line_b[EDI],EAX
125 LEA EDI,[EDI+4]
126 MOV buff_addr,EDI
127 end;
128 end;
129 end;
130
131 // start_tiles:=(start_tiles+1) and 31;
132 end;
133
134 procedure make_line_finish(nr: byte);
135 var
136 w1, w2, w3: word;
137 t_temp: DWOrd;
138 window_line, window_start: word;
139 window_tile_map, temp_v, qpoi: word;
140 buff_addr: DWORD;
141 tile_nr: byte;
142 attr: byte;
143 tile_addr: word;
144 tile_fx: byte;
145 nr_x: byte;
146 ioi, lop, strt: word;
147 yu: DWord;
148 s16, zmp, pix_temp: byte;
149
150 coordx_s: word;
151 coordy_s, wx, wy, l_numb, sprite_la, flipx, address_w: integer; // signed int
152 address: word;
153 aal: DWORD;
154 buffer, ad2: pointer;
155 begin
156 if nr > 143 then
157 exit;
158 while tc < 20 do
159 make_line_tile(nr, tc + 1);//end;// !!! inc=??
160
161 buff_addr := 0;
162 nr_x := m_iram[$ff43];
163 if (m_iram[$ff40] and 32 > 0) and (m_iram[$ff4a] <= nr) then
164 begin
165 window_line := nr - m_iram[$ff4a];
166 temp_v := window_line shr 3;
167 window_start := 0;
168 if (m_iram[$ff40] and 64) > 0 then
169 window_tile_map := $9c00
170 else
171 window_tile_map := $9800;
172
173 for qpoi := 0 to 31 do
174 begin
175 tile_nr := m_iram[(window_tile_map + (temp_v shl 5) + window_start)];
176 attr := m_iram2[(window_tile_map + (temp_v shl 5) + window_start)];
177 if m_iram[$ff40] and 16 > 0 then
178 asm
179 MOV AL,tile_nr
180 MOVZX AX,AL
181 SHL AX,4
182 ADD AX,$8000
183 MOV tile_addr,AX
184 end
185 else
186 asm
187 MOV AL,tile_nr
188 MOVSX AX,AL
189 SAL AX,4
190 ADD AX,$9000
191 MOV tile_addr,AX
192 end;
193
194 if (attr and 64) > 0 then
195 tile_addr := tile_addr + (7 - (window_line - 8 * temp_v)) * 2
196 else
197 tile_addr := tile_addr + (window_line - 8 * temp_v) * 2;
198 if attr and 8 = 0 then
199 begin
200 w1 := m_iram[tile_addr];
201 Inc(tile_addr);
202 w2 := m_iram[tile_addr];
203 end
204 else
205 begin
206 w1 := m_iram2[tile_addr];
207 Inc(tile_addr);
208 w2 := m_iram2[tile_addr];
209 end;
210
211 w3 := (w2 shl 8) or w1;
212 if attr and 32 > 0 then
213 tile_fx := 1
214 else
215 tile_fx := 0;
216
217 for lop := 0 to 7 do
218 begin
219 begin
220 t_temp := pal_dx_b[attr and 7][pix[w3][lop][tile_fx]];
221 case dx_bits of
222 2: asm
223 MOV EAX,t_temp
224 MOV EDI,buff_addr
225 MOV word ptr window_b[EDI],AX
226 LEA EDI,[EDI+2]
227 MOV buff_addr,EDI
228 end;
229 3: asm
230 MOV EAX,t_temp
231 MOV EBX,EAX
232 SHR EAX,16
233 MOV EDI,buff_addr
234 MOV byte(window_b[EDI]),BL
235 MOV byte(window_b[EDI+1]),BH
236 MOV byte(window_b[EDI+2]),AL
237 LEA EDI,[EDI+3]
238 MOV buff_addr,EDI
239 end;
240 4: asm
241 MOV EAX,t_temp
242 MOV EDI,buff_addr
243 MOV dword ptr window_b[EDI],EAX
244 LEA EDI,[EDI+4]
245 MOV buff_addr,EDI
246 end;
247 end;
248 end;
249 end;
250 Inc(window_start);
251 window_start := window_start and 31;
252 end;
253
254 strt := m_iram[$ff4b];
255 Dec(strt, 7);
256
257 if strt < 160 then
258 for yu := 0 to ((160 - strt) * dx_bits) - 1 do
259 begin
260 line_b[(strt + (nr_x and 7)) * dx_bits + yu + 100] := window_b[yu];
261 line_b_mask[(strt + (nr_x and 7)) * dx_bits + yu + 100] := window_b_mask[yu];
262 end;
263 end;
264
265 if m_iram[$ff40] and 2 > 0 then
266 begin
267 s16 := 0;
268 if (m_iram[$ff40] and 4) > 0 then
269 s16 := 1;
270
271 for ioi := 39 downto 0 do
272 begin
273 address := ioi * 4 + $fe00;
274 wx := m_iram[address + 1];
275 wy := m_iram[address];
276 coordx_s := wx - 8;
277 coordy_s := wy - 16;
278 attr := m_iram[address + 3];
279 if (gb_mode <> CGB) then
280 begin
281 attr := attr and $f0;
282 if attr and $10 > 0 then
283 attr := attr or 1;
284 end;
285
286 if (wx > 0) and (wy > 0) and (wx < 168) and (coordy_s <= nr) and
287 (((s16 = 0) and (coordy_s >= nr - 7)) or ((s16 > 0) and
288 (coordy_s >= nr - 15))) then
289 begin
290 l_numb := nr - coordy_s;
291 if (m_iram[address + 3] and 64) > 0 then
292 if s16 > 0 then
293 l_numb := 15 - l_numb
294 else
295 l_numb := 7 - l_numb;
296 if s16 = 0 then
297 sprite_la := $8000 + m_iram[address + 2] * 16 + 2 * l_numb
298 else
299 sprite_la := $8000 + (m_iram[address + 2] and 254) * 16 + 2 * l_numb;
300 if attr and 32 > 0 then
301 flipx := 1
302 else
303 flipx := 0;
304 if attr and 8 > 0 then
305 begin
306 w1 := m_iram2[sprite_la];
307 Inc(sprite_la);
308 w2 := m_iram2[sprite_la];
309 end
310 else
311 begin
312 w1 := m_iram[sprite_la];
313 Inc(sprite_la);
314 w2 := m_iram[sprite_la];
315 end;
316 w3 := (w2 shl 8) or w1;
317 address_w := (coordx_s + (nr_x and 7)) * dx_bits + 100;
318 for zmp := 0 to 7 do
319 begin
320 pix_temp := pix[w3][zmp][flipx];
321 if ((((attr and 128 = 0)) or ((line_b_mask[address_w] = 0))) and (pix_temp > 0)) then
322 begin
323 t_temp := pal_dx_o[attr and 7][pix_temp];
324 case dx_bits of
325 2: asm
326 MOV EAX,t_temp
327 MOV EDI,address_w
328 MOV word ptr line_b[EDI],AX
329 LEA EDI,[EDI+2]
330 MOV address_w,EDI
331 end;
332 3: asm
333 MOV EAX,t_temp
334 MOV EBX,EAX
335 SHR EAX,16
336 MOV EDI,address_w
337 MOV byte(line_b[EDI]),BL
338 MOV byte(line_b[EDI+1]),BH
339 MOV byte(line_b[EDI+2]),AL
340 LEA EDI,[EDI+3]
341 MOV address_w,EDI
342 end;
343 4: asm
344 MOV EAX,t_temp
345 MOV EDI,address_w
346 MOV dword ptr line_b[EDI],EAX
347 LEA EDI,[EDI+4]
348 MOV address_w,EDI
349 end;
350 end;
351 end
352 else
353 Inc(address_w, dx_bits);
354 end;
355 end;
356 end;
357 end;
358 aal := nr * dx_pitch;
359 buffer := addr(line_b[100 + (nr_x and 7) * dx_bits]);
360 ad2 := addr(dx_buffer[0]);
361 asm
362 MOV ESI,dword ptr [buffer]
363 MOV EDI,dword ptr [ad2]
364 ADD EDI,aal
365 MOV ECX,cmov
366 CLD
367 REP movsd
368 end;
369 end;
370
371 end.
DeletedGpu/lcl_out.pas +0−74
@@ -1,74 +0,0 @@
1 unit lcl_out;
2
3 {$mode delphi}
4
5 interface
6
7 uses
8 Graphics, BGRABitmap;
9
10 procedure UpdateCanvas(Width, Height: Integer; Canvas: TCanvas);
11 procedure StartLCL;
12
13 implementation
14
15 uses
16 BGRABitmapTypes,
17 vars,
18 classes;
19
20 var
21 bmp: TBGRABitmap;
22
23 procedure StartLCL;
24 begin
25 dx_r := $FF0000;
26 dx_g := $00FF00;
27 dx_b := $0000FF;
28
29 //TODO: Move these somewhere better.
30 dx_bits := 4;
31 dx_pitch := 640;
32 cmov := 160;
33
34 dx_sr := finde(dx_r);
35 dx_sg := finde(dx_g);
36 dx_sb := finde(dx_b);
37 dx_r := zaehle(dx_r);
38 dx_g := zaehle(dx_g);
39 dx_b := zaehle(dx_b);
40 end;
41
42 //TODO: Screen tearing issues-- probably double buffer related
43 procedure UpdateCanvas(Width, Height: Integer; Canvas: TCanvas);
44 var
45 stretched: TBGRABitmap;
46 X, Y: Integer;
47 N: Integer;
48 p: PBGRAPixel;
49 Idx: Integer;
50 begin
51 p := bmp.Data;
52
53 for Y := 144-1 downto 0 do
54 for X := 0 to 160-1 do
55 begin
56 Idx := ((Y*160)+X)*4;
57 p^.red := dx_buffer[Idx + 0];
58 p^.blue := dx_buffer[Idx + 1];
59 p^.green := dx_buffer[idx + 2];
60 inc(p);
61 end;
62 bmp.InvalidateBitmap;
63
64 //bmp.Draw(Canvas, 0, 0);
65 Canvas.StretchDraw(Rect(0, 0, Width, Height), bmp.Bitmap);
66 //stretched := bmp.Resample(Canvas.Width, Canvas.Height, rmSimpleStretch) as TBGRABitmap;
67 //stretched.Draw(Canvas,0,0);
68 //stretched.Free;
69 end;
70
71 begin
72 bmp := TBGRABitmap.Create(160, 144);
73 end.
74
Modifiedmainloop.pas +4−4
@@ -22,7 +22,7 @@ procedure z80_reset;
22 22
23 implementation 23 implementation
24 24
25 uses vars, gfx, machine, z80cpu, sound; 25 uses vars, machine, z80cpu, sound;
26 26
27 procedure TimerControl; 27 procedure TimerControl;
28 (* 28 (*
@@ -170,7 +170,7 @@ begin
170 end; 170 end;
171 0: 171 0:
172 begin 172 begin
173 make_line_finish(m_iram[$ff44]); 173 //make_line_finish(m_iram[$ff44]);
174 make_line_count := -1; 174 make_line_count := -1;
175 if hdma > 0 then 175 if hdma > 0 then
176 begin 176 begin
@@ -209,7 +209,7 @@ begin
209 set_ff0f(2); 209 set_ff0f(2);
210 if (old_mode = 0) then 210 if (old_mode = 0) then
211 begin 211 begin
212 make_line_finish(143); 212 //make_line_finish(143);
213 //if (m_iram[$ff40] and 128) > 0 then 213 //if (m_iram[$ff40] and 128) > 0 then
214 //PaintBox.Repaint; 214 //PaintBox.Repaint;
215 vbi_count := vbi_latency; 215 vbi_count := vbi_latency;
@@ -330,7 +330,7 @@ begin
330 Inc(make_line_ccount, cnumber); 330 Inc(make_line_ccount, cnumber);
331 if make_line_ccount >= 8 then 331 if make_line_ccount >= 8 then
332 begin 332 begin
333 make_line_tile(m_iram[$ff44], make_line_count); 333 //make_line_tile(m_iram[$ff44], make_line_count);
334 Inc(make_line_count); 334 Inc(make_line_count);
335 Dec(make_line_ccount, 8); 335 Dec(make_line_ccount, 8);
336 end; 336 end;