Skip to content

Commit

Permalink
DSP Emulator 0.17b1 Final
Browse files Browse the repository at this point in the history
-All previous WIP enhacements
-General
+Windows: Fixed image snapshot save bug (Thanks to FJ Marti)
+Fixed a bug that if DSP is started with the ROMs list and no driver was
selected, the emulator hangs (Thanks to FJ Marti)
+Fixes to the ROMs/Samples file list exportation (Thanks to FJ Marti)
+N2A03
-Converted to CPU
-Converted to classes
+Taito Sound
-Converted to classes
-Integrated Z80 CPU
+Konami Sound
-Converted to classes
-Integrated Z80 CPU
-ExedExes
+Added dipswitches
-Express Raider
+Added dipswitches
-Double Dragon HW
+Fixed IRQs
+Double Dragon II: Fixed VBlank, solves the problem of color fading in
transitions
  • Loading branch information
leniad committed Oct 22, 2016
1 parent a12bd1f commit 03cc53a
Show file tree
Hide file tree
Showing 213 changed files with 4,656 additions and 4,616 deletions.
Binary file removed Language files for 016b1 and older.zip
Binary file not shown.
Binary file removed Language files from 016b2 to 017.zip
Binary file not shown.
Binary file added Older Languaje Files.zip
Binary file not shown.
Binary file modified Preview Images.zip
Binary file not shown.
23 changes: 23 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,27 @@
#DSP Emulator status<br>
<b>22/10/16 - DSP Emulator 0.17b1 Final. All binary and source updated. New preview images (thanks to FJ Marti)</b><br><pre>
-All previous WIP enhacements
-General
+Windows: Fixed image snapshot save bug (Thanks to FJ Marti)
+Fixed a bug that if DSP is started with the ROMs list and no driver was selected, the emulator hangs (Thanks to FJ Marti)
+Fixes to the ROMs/Samples file list exportation (Thanks to FJ Marti)
+N2A03
-Converted to CPU
-Converted to classes
+Taito Sound
-Converted to classes
-Integrated Z80 CPU
+Konami Sound
-Converted to classes
-Integrated Z80 CPU
-ExedExes
+Added dipswitches
-Express Raider
+Added dipswitches
-Double Dragon HW
+Fixed IRQs
+Double Dragon II: Fixed VBlank, solves the problem of color fading in transitions
</pre><br>
<b>15/10/16 - DSP Emulator 0.17b1. Win32 binary and source updated.</b><br><pre>
-General
+Namco IO
Expand Down
Binary file removed Release 0.17/dsp_017_linux32.zip
Binary file not shown.
Binary file removed Release 0.17/dsp_017_linux64.zip
Binary file not shown.
Binary file removed Release 0.17/dsp_017_src.7z
Binary file not shown.
Binary file removed Release 0.17/dsp_017_win32.zip
Binary file not shown.
Binary file removed Release 0.17/dsp_017_win64.zip
Binary file not shown.
File renamed without changes.
Binary file added Release 0.17b1/dsp_017b1_linux32.zip
Binary file not shown.
Binary file added Release 0.17b1/dsp_017b1_linux64.zip
Binary file not shown.
Binary file added Release 0.17b1/dsp_017b1_src.7z
Binary file not shown.
Binary file added Release 0.17b1/dsp_017b1_win32.zip
Binary file not shown.
Binary file added Release 0.17b1/dsp_017b1_win64.zip
Binary file not shown.
Binary file added Samples/galaga.zip
Binary file not shown.
Binary file added Samples/spacefb.zip
Binary file not shown.
Binary file added Samples/xevious.zip
Binary file not shown.
153 changes: 76 additions & 77 deletions Whats New.txt
Original file line number Diff line number Diff line change
@@ -1,88 +1,87 @@
What's New!!! DSP Emulator

DSP 0.17 07/07/16
********
DSP 0.17b1 22/10/16
**********
- General
+ Lazarus: Fixed zlib stuff. Removed external library dependency, now you can use fast snapshots, load spectrum SZX, DSP, CSW files, load Coleco snapshots, etc.
+ Enhanced ZIP file load. In Delphi internal classes are used, in Lazarus using more simple object implementation
+ Unified into a single button Play/Pause
+ Fixed fast snapshots loading in some drivers
+ Fixed value and type of the amplifier in some sound chips
+ Finished IRQ, NMI, reset and halt signals rewrite
+ Simplified and reorganized all drivers procedures and functions
+ Completely eliminated references to the 'SDL2.pas' unit and improved the 'lib_sdl2.pas' to be independent
+ Improved how drivers are closed, CPU, video, etc. Fixed bugs and removed some problems when the driver is not initialized and changed an other
+ GFX
- Fixed left rotate of the nonsquare graphics (required for 'Centipede')
- Fixed and enhanced the final screen rotation
+ K007232: Fixed sound
+ Z80
- Removed the special case of HALT opcode
- Fixed possible loose of timings after the execution of an opcode
- Added opcode function calls in class
- Implemented WZ/MEMPTR register, now passes all ZEXALL tests
+ M6809
- Cleaning and unified opcodes
- Enhanced timings
- Fixed 'sync' opcode
- Added $102d opcode (Fix video in 'Combat School' and 'Contra')
- Modified and simplified IRQs calls
+ HD6309
- Total CPU cleaning
- Added an internal M6809 for compatibility mode
+ KONAMI CPU: Finished, some opcodes are missing
+ CPU M680X: Unified all opcodes
+ YM2203: Added functions to change the AY internal clock
+ YM3812
+ Added support for IPF files natively without external libraries
- Many thanks to Jean Louis-Guerin (DrCoolZic) for the documententation 'http://info-coach.fr/atari/documents/_mydoc/IPF-Documentation.pdf'
- Many thanks also to Bruno Kukulcan and Yoan Courtois (Megachur) for some Amstrad CPC IPF files for testing
+ K051960: Implemented IRQ's
+ Changed the way to show the main window caption, including the name of the tape, snapshot, disk, etc.
+ Added MCS48 CPU series: i8035, i8039 and N7751
+ Added i8243, port expander
+ Deleted languages files, they are now integrated
+ K051316: Added basic implementation
+ Added a check when directories are saved to avoid duplicating the folder separator
+ Namco IO
- Added 50XX control CPU
- Added 54XX sound CPU, using samples
+ MB88XX CPU: Added opcodes $0f, $10, $1a, $20, $22, $2f and $48
+ Fixed folders load/save, now the correct last folder used for Spectrum, Amstrad, Coleco, NES, GB, etc is remembered
+ In general configuration menu, you can change preview images, samples, quick snapshot and NV-Ram folders. Removed NES, Coleco and GB folder change (useless now)
+ Windows: Fixed image snapshot save bug (Thanks to FJ Marti)
+ Fixed a bug that if DSP is started with the ROMs list and no driver was selected, the emulator hangs (Thanks to FJ Marti)
+ Fixes to the ROMs/Samples file list exportation (Thanks to FJ Marti)
+ N2A03
- Converted to CPU
- Converted to classes
- Added chip YM3526
+ Konami Sound
+ Taito Sound
- Converted to classes
- Integrated Z80 sound CPU
- Integrated Frogger and Scramble sound driver
- Improved and corrected some drivers
- Separated into four types 'Time Pilot', 'Jungler', 'Frogger' and 'scamble'
+ PIA 8255
- Integrated Z80 CPU
+ Konami Sound
- Converted to classes
- Device driver cleaning
- Integrated Z80 CPU
- Spectrum
+ When a snapshot without ROM is loaded and previously changed to a different ROM than the original, it's reloaded the original ROM
+ Contended memory changes
+ Z80 snapshot
- V1 - Fixed lenght of the compressed full memory block, I was ignoring the end mark
- V1 - Fixed buffer overflow, some times the snapshot data has more info that it's needed
- V2/V3 - Fixed uncompressed memory page inside of the data
- V2/V3 - Some checks to avoid bad snapshots
- V2/V3 - Now identify the correct Spectrum model
- V2/V3 - The preview image, now uses the active screen in 128k models
- Amstrad CPC
+ Added LensLok protection
+ Enhanced video mode 2, more speed
- Sega System 1
+ Added custom Z80 timings
+ Added support for the snapshot V3 chuncks (including compressed memory)
- Black Tiger
+ Small video updates
- Psychic 5
+ Modernized driver
+ Fixed audio CPU clock, Vblank and FPS
+ Added controls for player 2 and dipswitches
+ Changed ROMs to World version
- ExedExes
+ Added dipswitches
- Express Raider
+ Added dipswitches
- Double Dragon HW
+ Fixed IRQs
+ Double Dragon II: Fixed VBlank, solves the problem of color fading in transitions
- Popeye
+ Added 2nd player controls
+ Driver cleaning
- Galaxian HW
+ Galaxian: Added several sounds (samples)
+ Fixed stars background
- Rally X HW
+ Cleaned and fixed driver (memory, video, etc)
+ Jungler: Simplified the video, eliminated manual rotation
- Arabian
+ Fixed video
- Blockout
+ Fixed video
- Mappy HW
+ Fixed sprites: added a mask for the sprites size
+ Small video updates
- Gun.Smoke HW
+ Gun.Smoke: Small video updates
+ 1943: Fixed background scroll
- Gyruss
+ Added i8039 CPU and DAC, completed sound
+ Changed audio to stereo
- Galaga HW
+ Galaga: added samples
+ Xevious: added driver with sound, small problems with scroll and samples
- Juno First
+ Fixed driver initialisation
- Space Invaders
+ Added driver with sound (samples)
- Centipede
+ Added i8039 CPU and DAC, completed sound
- Sega System 16A
+ Preliminary support of the digital audio with the N7751 CPU
- WWF Superstars
+ Small video updates
- TMNT HW
+ Sunset Riders: Enhanced copyprotection
- Track & Field
+ Added driver with sound
- Hyper Sports
+ Added driver with sound
- Megazone
+ Added driver with sound
- Space Fire Bird
+ Added driver with sound
- Karnov HW
+ Karnov: Added driver with sound
+ Chelnov: Added driver with sound
- Aliens
- Added driver with sound
- Small problem with sprite priorities
- Thunder Cross HW
+ Super Contra: Added driver with sound
+ Gang Busters: Added driver with sound
+ Thunder Cross: Added driver with sound
- The Simpsons
+ Added driver with sound, without sprites and graphics problems
+ Small problems with the backgroud stars
- Ajax
+ Basic driver
Binary file removed dsp_017b1_win32_WIP.7z
Binary file not shown.
32 changes: 16 additions & 16 deletions src/arcade/actfancer_hw.pas
Original file line number Diff line number Diff line change
Expand Up @@ -72,19 +72,19 @@ procedure actfancer_principal;
f:byte;
begin
init_controls(false,false,false,true);
frame_m:=main_h6280.tframes;
frame_s:=snd_m6502.tframes;
frame_m:=h6280_0.tframes;
frame_s:=m6502_1.tframes;
while EmuStatus=EsRuning do begin
for f:=0 to $ff do begin
//Main
main_h6280.run(trunc(frame_m));
frame_m:=frame_m+main_h6280.tframes-main_h6280.contador;
h6280_0.run(trunc(frame_m));
frame_m:=frame_m+h6280_0.tframes-h6280_0.contador;
//Sound
snd_m6502.run(frame_s);
frame_s:=frame_s+snd_m6502.tframes-snd_m6502.contador;
m6502_1.run(frame_s);
frame_s:=frame_s+m6502_1.tframes-m6502_1.contador;
case f of
247:begin
main_h6280.set_irq_line(0,HOLD_LINE);
h6280_0.set_irq_line(0,HOLD_LINE);
update_video_actfancer;
marcade.in1:=marcade.in1 or $80;
end;
Expand Down Expand Up @@ -187,7 +187,7 @@ procedure actfancer_putbyte(direccion:dword;valor:byte);
end;
$150000:begin
sound_latch:=valor;
snd_m6502.change_nmi(PULSE_LINE);
m6502_1.change_nmi(PULSE_LINE);
end;
$160000:;
$1f0000..$1f3fff:ram[direccion and $3fff]:=valor;
Expand Down Expand Up @@ -225,14 +225,14 @@ procedure actfancer_sound_update;

procedure snd_irq(irqstate:byte);
begin
snd_m6502.change_irq(irqstate);
m6502_1.change_irq(irqstate);
end;

//Main
procedure reset_actfancer;
begin
main_h6280.reset;
snd_m6502.reset;
h6280_0.reset;
m6502_1.reset;
ym3812_0.reset;
ym2203_0.reset;
oki_6295_0.reset;
Expand Down Expand Up @@ -266,12 +266,12 @@ function iniciar_actfancer:boolean;
sprite_bac06_color:=$200;
deco_bac06_init(0,1,2,0,1,2,0,$100,$000,$000,$fff,$fff,$000,2,1,1);
//Main CPU
main_h6280:=cpu_h6280.create(21477200 div 3,$100);
main_h6280.change_ram_calls(actfancer_getbyte,actfancer_putbyte);
h6280_0:=cpu_h6280.create(21477200 div 3,$100);
h6280_0.change_ram_calls(actfancer_getbyte,actfancer_putbyte);
//Sound CPU
snd_m6502:=cpu_m6502.create(1500000,256,TCPU_M6502);
snd_m6502.change_ram_calls(actfancer_snd_getbyte,actfancer_snd_putbyte);
snd_m6502.init_sound(actfancer_sound_update);
m6502_1:=cpu_m6502.create(1500000,256,TCPU_M6502);
m6502_1.change_ram_calls(actfancer_snd_getbyte,actfancer_snd_putbyte);
m6502_1.init_sound(actfancer_sound_update);
//Sound Chips
ym3812_0:=ym3812_chip.create(YM3812_FM,3000000,0.9);
ym3812_0.change_irq_calls(snd_irq);
Expand Down
47 changes: 24 additions & 23 deletions src/arcade/ajax_hw.pas
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ interface
uses {$IFDEF WINDOWS}windows,{$ENDIF}
nz80,konami,m6809,main_engine,controls_engine,gfx_engine,rom_engine,
pal_engine,sound_engine,ym_2151,k052109,k051960,k007232,misc_functions,
k051316;
k051316,dialogs;

procedure cargar_ajax;
var
Expand Down Expand Up @@ -95,7 +95,7 @@ procedure ajax_k007232_cb_1(valor:byte);

procedure ajax_k051960_cb(state:byte);
begin
main_konami.change_irq(state);
konami_0.change_irq(state);
end;

procedure update_video_ajax;
Expand Down Expand Up @@ -143,20 +143,20 @@ procedure ajax_principal;
f:byte;
begin
init_controls(false,false,false,true);
frame_m:=main_konami.tframes;
frame_sub:=misc_m6809.tframes;
frame_s:=snd_z80.tframes;
frame_m:=konami_0.tframes;
frame_sub:=m6809_0.tframes;
frame_s:=z80_0.tframes;
while EmuStatus=EsRuning do begin
for f:=0 to $ff do begin
//main
main_konami.run(frame_m);
frame_m:=frame_m+main_konami.tframes-main_konami.contador;
konami_0.run(frame_m);
frame_m:=frame_m+konami_0.tframes-konami_0.contador;
//sub
misc_m6809.run(frame_sub);
frame_sub:=frame_sub+misc_m6809.tframes-misc_m6809.contador;
m6809_0.run(frame_sub);
frame_sub:=frame_sub+m6809_0.tframes-m6809_0.contador;
//sound
snd_z80.run(frame_s);
frame_s:=frame_s+snd_z80.tframes-snd_z80.contador;
z80_0.run(frame_s);
frame_s:=frame_s+z80_0.tframes-z80_0.contador;
k051960_0.update_line(f);
if f=239 then update_video_ajax;
end;
Expand Down Expand Up @@ -198,8 +198,8 @@ procedure ajax_putbyte(direccion:word;valor:byte);
if direccion>$5fff then exit;
case direccion of
0..$1c0:case ((direccion and $1c0) shr 6) of
0:if (direccion=0) then if (sub_firq_enable) then misc_m6809.change_firq(HOLD_LINE);
1:snd_z80.change_irq(HOLD_LINE);
0:if (direccion=0) then if (sub_firq_enable) then m6809_0.change_firq(HOLD_LINE);
1:z80_0.change_irq(HOLD_LINE);
2:sound_latch:=valor;
3:rom_bank1:=valor mod 12;
5:;
Expand Down Expand Up @@ -290,9 +290,9 @@ procedure ajax_sound_update;
//Main
procedure reset_ajax;
begin
main_konami.reset;
misc_m6809.reset;
snd_z80.reset;
konami_0.reset;
m6809_0.reset;
z80_0.reset;
k052109_0.reset;
ym2151_0.reset;
k051960_0.reset;
Expand All @@ -312,6 +312,7 @@ function iniciar_ajax:boolean;
f:byte;
begin
iniciar_ajax:=false;
if MessageDlg('Warning. This is a WIP driver, it''s not finished yet and bad things could happen!. Do you want to continue?', mtWarning, [mbYes]+[mbNo],0)=7 then exit;
main_screen.rot90_screen:=true;
//Pantallas para el K052109
screen_init(1,512,256,true);
Expand All @@ -336,15 +337,15 @@ function iniciar_ajax:boolean;
//cargar sonido
if not(cargar_roms(@mem_snd[0],@ajax_sound,'ajax.zip',1)) then exit;
//Main CPU
main_konami:=cpu_konami.create(3000000,256);
main_konami.change_ram_calls(ajax_getbyte,ajax_putbyte);
konami_0:=cpu_konami.create(3000000,256);
konami_0.change_ram_calls(ajax_getbyte,ajax_putbyte);
//Sub CPU
misc_m6809:=cpu_m6809.create(3000000,256);
misc_m6809.change_ram_calls(ajax_sub_getbyte,ajax_sub_putbyte);
m6809_0:=cpu_m6809.create(3000000,256);
m6809_0.change_ram_calls(ajax_sub_getbyte,ajax_sub_putbyte);
//Sound CPU
snd_z80:=cpu_z80.create(3579545,256);
snd_z80.change_ram_calls(ajax_snd_getbyte,ajax_snd_putbyte);
snd_z80.init_sound(ajax_sound_update);
z80_0:=cpu_z80.create(3579545,256);
z80_0.change_ram_calls(ajax_snd_getbyte,ajax_snd_putbyte);
z80_0.init_sound(ajax_sound_update);
//Sound Chips
ym2151_0:=ym2151_chip.create(3579545);
ym2151_0.change_port_func(ajax_snd_bankswitch);
Expand Down
Loading

0 comments on commit 03cc53a

Please sign in to comment.