Mám rád historické počítače a konsole. Na některých jsem začínal, jiné mám doma (pár historických konzolí a počítačů jsem v průběhu času koupil) ale u spousty mohu jen z dálky pokukovat.
Dlouhodobě se zajímám o emulaci a tak dnes chci představit open source, multi HW emulátor, kompletně v Delphi: DSP emulator.
Emulátor emuluje nespočet klasických arkádových automatů, několik konsolí (např. NES, GameBoy Color, Megadrive) a počítačů (ZX Spectrum včetně 128, Commodore 64, Amstrad CPC, Oric).
Ze seznamu je jasné, že zvládá emulaci několika různých CPU (kromě mé srdeční Z80 je to např. m68000 a další).
Velká pečlivost je věnována právě ZX Spectru, kdy i AY hudba zní tak jak si ji pamatuji - ono většina emulací AY má společné kořeny. Takže moje srdcovka od Fuxoftu zní tak jak má.
Zdrojáky se dají přeložit s aktuální verzí Delphi a jsou celkem dobře čitelné.
Jak je možné, že to podporuje tolik arkád? Hodně z nich je postavených na stejných procesorech, a když už máte emulaci jednoho CPU, tak ho použijete i jinde, takže např. BombJack ma Z80 jako hlavní, druhou Z80 jako sound procesor + 3x známou AY8910 (třeba právě ze ZX Spectra 128).
iniciar_video(256,224);
//Main CPU
z80_0:=cpu_z80.create(4000000,264);
//Sound CPU
z80_1:=cpu_z80.create(3000000,264);
z80_1.change_io_calls(snd_inbyte,snd_outbyte);
z80_1.init_sound(bombjack_update_sound);
//Sound Chip
ay8910_0:=ay8910_chip.create(1500000,AY8910,1);
ay8910_1:=ay8910_chip.create(1500000,AY8910,1);
ay8910_2:=ay8910_chip.create(1500000,AY8910,1);
Pro zájemce je zde popis HW arkádové verze BombJack, když už jsem to nakousl.
Emulátor je nejen pro nadšence starých her, ale i pro ty, koho zajímá právě starý HW, a jak tehdejší konstruktéři musejí kolikrát použít špinavý trik pro dosažení výsledku. A to mne baví. Takže neváhejte.