Caprice32 (Amstrad CPC Emulator)

Versione: 
4.6.0
Data rilascio: 
Lunedì, 10 Febbraio, 2025

Licenza:

Interfaccia:

Authors/Port authors:

Caprice32 è un emulatore software della serie di home computer Amstrad CPC a 8bit, eseguibile su Linux e Windows. L'emulatore imita in tutto e per tutto i modelli CPC464, CPC664 e CPC6128. Ricreando tutte le funzionalità dei componenti hardware a basso livello, l'emulatore ottiene un alto livello di compatibilità con il software CPC originale. Questi programmi o giochi possono essere eseguiti senza modifiche in tempo-reale o ad alta velocità, dipende dall'ambiente che ospita l'emulatore.
Questo software è distribuito come pacchetto compresso, da scaricare e installare manualmente; se ci sono prerequisiti da soddisfare, andranno anch'essi scaricati e installati manualmente.

Installazione manuale

Il programma è distribuito come pacchetto ZIP: scaricare in una cartella temporanea e scompattare nella cartella di destinazione. Vedi sotto per il(i) link di download.

E' possibile installare i prerequisiti con rpm, eseguendo la stringa seguente in una finestra comandi:

yum install libc libcx libgcc1 libssp libstdc++6 libstdc++ libsupc++6 libsupc++ libgcc-fwd SDL2

Qui di seguito trovi i link di download per l'installazione manuale del software:

Caprice32 (Amstrad CPC Emulator) v. 4.6.0 (10/2/2025, Mentore Siesto) Readme/What's new
[Caprice32 logo] ****** Caprice32 - Amstrad CPC Emulator ****** (c) Copyright 1997-2015 Ulrich Doewich (c) Copyright 2016-2021 Colin Pitrat https://github.com/ColinPitrat/caprice32 ****** What is it ? ****** Caprice32 is a software emulator of the Amstrad CPC 8bit home computer series running on Linux and Windows. The emulator faithfully imitates the CPC464, CPC664, and CPC6128 models. By recreating the operations of all hardware components at a low level, the emulator achieves a high degree of compatibility with original CPC software. These programs or games can be run unmodified at real-time or higher speeds, depending on the emulator host environment. ****** Features ****** Caprice32 provides: * Complete emulation of CPC464, CPC664 and CPC6128 * Mostly working support of Plus Range: CPC464+/CPC6128+/GX4000 (missing vectored & DMA interrupts, analog joysticks and 8 bit printer) * Joystick support - it can be fully used with joystick only, thanks to an integrated virtual keyboard. * Joystick emulation - joystick-only games can be played using the keyboard * English, French or Spanish keyboards * DSK and IPF files for disks - VOC and CDT files for tapes - CPR files for cartridge * Snapshots (SNA files) * Direct load of ZIP files * Developers' tools with debugger, memory editor, disassembler... * Custom disk formats * Printer support * Experimental support of Multiface 2 (you should prefer using memory tool) You see something missing ? Do not hesitate to open an issue to suggest it. ****** Installation ****** ***** Linux ***** **** Debug behavior and release behavior when locating configuration file **** If you compile Caprice32 yourself with plain make, behavior is debug-oriented. By default at run-time it will look for cap32.cfg in the current directory of the process that launches it, not in the executable location as stated in the documentation. To get the documented behavior, use APP_PATH like in the examples below. **** From Git **** git clone https://github.com/ColinPitrat/caprice32.git cd caprice32 make APP_PATH="$PWD" ./cap32 **** From releases **** Download a release from https://github.com/ColinPitrat/caprice32/releases. Decompress it and then from a terminal in the resulting directory: make APP_PATH="$PWD" ./cap32 **** Snap **** A SNAP (maintained by a third party) is available at https://snapcraft.io/ caprice32. ***** Windows ***** Download a release from https://github.com/ColinPitrat/caprice32/releases. Decompress it and double click on cap32.exe ****** Basic usage ****** See the manual_page for more details. If you are really lost, you can simply invoke the emulator without any argument, then press F1 to get the in-emulator menu. ****** Help needed ****** Maintaining Caprice is a lot of work and you can help with it. You can: * Use it, show it, talk and write about it * Thank the maintainer * Report any bug or missing feature * Write some documentation * Package it for your favourite distribution (if not yet available) * Port it to iOS so that Mac users can enjoy it too ****** Supporting ****** You can support me on Liberapay: [Donate_using_Liberapay] ****** Building and compiling ****** See the INSTALL.md files for Caprice32 build instructions. ****** Using the source ****** The source for Caprice32 is distributed under the terms of the GNU General Public License version 2 (GPLv2), which is included in this archive as COPYING.txt. Please make sure that you understand the terms and conditions of the license before using the source. The screen dump part of Caprice32 uses driedfruit_SDL_SavePNG code, released under zlib/libpng license, which is compatible with GPLv2. I encourage you to get involved in the project. ****** Comments or ready to contribute? ****** If you have suggestions, a bug report or even want to participate to the development, please feel free to open an issue or submit a pull request. ****** Why another GitHub repository ? ****** There are many repositories for caprice32 on GitHub: * https://github.com/burzumishi/caprice32 * https://github.com/rofl0r/caprice32 * https://github.com/MrZammler/caprice32 * https://github.com/burzumishi/caprice32wx So why create another one ? All these repositories are highly inactive. The ones that touched the code added dependencies (wxWidget, GTK) without really adding features. =========================================== This is the OS/2 - ArcaOS port of Caprice 32, an Amstrad CPC 464 / 664 / 6128 8-bit computer series. For more information, please check the .md files included here from the source distribution at https://github.com/ColinPitrat/caprice32 The OS/2 port uses SDL2 2.28, which is the latest release available from the Netlabs RPM repository. Be sure to update your SDL2 DLLs to the latest version before using this emulator. You can configure the behaviour of this emulator by modifying the cap32.cfg file. For more information on this, check the file itself and the included .md files. I merely modified the original makefile in order to build this under OS/2 and it seems working correctly. Given that, I didn't check the source code, even if I trust the original developer I can't guarantee this won't ruin your CPC software. So, if you have Amstrad CPC software, please remember backing it up before using it on this emulator - you know, just in case: better be safe than sorry. Please consider the idea of sending me some feedback or even sponsoring me on github to help me with my software development on OS/2. Thanks in advance. Happy emulating Mentore =========================================== ************* * cap32.cpp * ************* Oct 11, 2000 - 22:12 preliminary IN/OUT handlers; started with the GA OUT register write routines Oct 12, 2000 - 23:31 added GA ROM select to z80_OUT_handler Oct 14, 2000 - 13:58 added PPI IN/OUT handlers Oct 15, 2000 - 15:33 added CRTC IN/OUT handlers Oct 20, 2000 - 23:23 fixed some IN/OUT handler bugs Oct 27, 2000 - 17:39 added reset_CPC Oct 30, 2000 - 21:05 found the problem with the streched display: scr_bps needs to be in dwords, not bytes! Nov 01, 2000 - 23:43 aargh! found the BASIC 'reset' bug: the pbROMhi variable was pointing to the wrong location! Nov 03, 2000 - 18:03 added keyboard_interrupt handler Nov 03, 2000 - 19:10 added preliminary PSG register write handlers Nov 03, 2000 - 23:37 fixed the PPI port C handler; CPC keyboard works now! Dec 12, 2000 - 18:14 changed load_dsk() to work with a C based disk info structure Jan 24, 2001 - 22:28 loading from disk images works (again)! Apr 06, 2001 - 12:52 fixed the keyboard translation table (Allegro WIP 3.9.34 added 3 more keys to the array) Jun 13, 2001 - 17:25 added DirectDraw and DirectInput8 init routines for the new Windows port of Caprice32 Jun 13, 2001 - 20:50 keyboard emualtion works now via the DI8 action mapping Jun 21, 2001 - 00:30 changed DDraw code to work in windowed mode; added routines to render CPC screen in 32bpp; added drag'n drop functionality for CPC drive A Jun 23, 2001 - 16:15 only the visible portion of the CPC screen is rendered to the frame buffer; Windows window is now sized to the proper CPC screen dimensions Jun 28, 2001 - 18:42 fixed the extended DSK parsing; loading DSK images via common dialog file selector; handling of joystick axis data Jun 29, 2001 - 20:16 speed throttling to original CPC speed; fixed the joystick mapping in the CPC keyboard matrix; implemented more menu commands Jun 30, 2001 - 22:57 settings stored in and retrieved from the registry; updated emulator_init and emulator_shutdown; file selector remembers path and selected file Jul 01, 2001 - 17:54 ROM slot cofiguration is stored in and retrieved from the registry; automatically loads last DSK images on startup Jul 04, 2001 - 00:34 colour tables for 16bpp (555 & 565) and 8bpp PC video modes; DDraw init updated with bit depth dependant code Jul 04, 2001 - 22:06 fixed 16bpp colour tables; updated VDU screen centering code to work with all bit depths Jul 06, 2001 - 00:35 implemented pause option; emulation is halted when application becomes inactive Jul 06, 2001 - 19:34 zip decompression for DSK and SNA loading Jul 07, 2001 - 00:58 fixed setting of GA colour table in load_snapshot; last DSK image load on startup supports ZIP files Jul 18, 2001 - 18:40 DirectSound init code finally works correctly! Jul 20, 2001 - 18:17 found the problem with the sound emulation: snd_multiplier calculation was done with integer arithmetic! grrrr... Jul 25, 2001 - 00:48 *finally* got a clean sound code that won't break up anymore! Aug 01, 2001 - 17:38 sound configuration is pulled from and stored in the registry Aug 02, 2001 - 18:31 floppy drive LED is now shown on the CPC screen during data transfers Aug 03, 2001 - 19:26 added About box Aug 03, 2001 - 23:49 altered load_dsk() to allocate memory on a track by track basis (in preparation of fdc_writeID() support) Aug 06, 2001 - 18:42 started work on the Options dialog Aug 10, 2001 - 19:10 finished the General Options property sheet Aug 11, 2001 - 17:29 up to 576KB of RAM supported Aug 12, 2001 - 21:43 extracted psg_reg_write() from the psg_write #define; fixed the PSG setup in load_snapshot() Aug 16, 2001 - 00:49 load_snapshot() now adjusts RAM size, and loads the correct CPC ROM as necessary Aug 20, 2001 - 00:59 added save_snapshot(); header contains preliminary v3 info Aug 20, 2001 - 16:10 updated load_snapshot() with processing of the 'official' v3 info Aug 22, 2001 - 23:26 added Audio Options property sheet to control PSG emulation Oct 06, 2001 - 13:22 removed the "experimental" joystick 2 support from the action map code - did not work as expected Oct 07, 2001 - 20:27 added the save_dsk() routine Oct 13, 2001 - 18:51 completed rewrite of zip handling; users can now choose images from multiple file archives Nov 08, 2001 - 19:08 bug fix: the zip_dir routine caused a crash if a zip archive would not open properly Nov 09, 2001 - 00:04 the ROM loading routine now checks the validity of the image, and skips a possible 128 bytes header May 09, 2002 - 19:07 removed the DDSCAPS_3DDEVICE flag from the InitDirectDraw code; modified UpdateBounds to prevent strechblits Jun 12, 2002 - 18:24 started converting DirectX specific stuff to Allegro Jun 14, 2002 - 17:49 emulator runs via GDI blits; re-implemented Allegro keyboard handler Jun 22, 2002 - 17:34 finally got the windowed DirectX mode working using the new Allegro CVS version Jun 25, 2002 - 18:41 added timer based speed throttling Jun 27, 2002 - 18:08 CPC screen blits correctly now: source coordinates were being mangled Jul 14, 2002 - 17:42 rewrote the PC sound playback routine to dynamically adjust the rate at which the buffer is filled Jul 24, 2002 - 22:16 fixed a possible crash on startup if a zipped DSK in drive A/B had been (re)moved between sessions Jul 27, 2002 - 16:45 added processing of a "language" file Jul 27, 2002 - 19:14 changed LoadConfiguration and SaveConfiguration to use the Allegro configuration rountines Jul 29, 2002 - 22:56 traced the 'access violation' problem back to the sound pause/resume functions Aug 02, 2002 - 22:37 added some error condition checks and modified sub-routines to report them properly Aug 24, 2002 - 23:00 determined Allegro to be unsuitable - reverting everything back to DirectX; implemented DirectInput keyboard translation Aug 26, 2002 - 22:51 fixed the initial application window size to use the correct dimensions Aug 27, 2002 - 18:23 streamlined the code to be more Windows friendly; app now goes to sleep when minimized Sep 07, 2002 - 18:28 added fullscreen mode; corrected 8bpp palette init; GDI calls (e.g. file selector) still work Sep 08, 2002 - 16:06 rewrote PCVideo init routines to support windowed/fullscreen mode switching Sep 12, 2002 - 00:02 fixed 50Hz timer by using QueryPerformanceCounter Sep 20, 2002 - 18:19 re-implemented DirectSound support; fixed timing problems - sound playback should no longer pop Sep 21, 2002 - 15:35 LoadConfiguration & SaveConfiguration now use the cap32.cfg file instead of the Registry Sep 25, 2002 - 22:49 full screen resolution is selectable in the Options dialog; auto-sizes visible portion; allows mode change while being fs Sep 26, 2002 - 22:26 added scanline and line doubling (in software) rendering modes Sep 28, 2002 - 17:38 added a speed slider to the General page of the Options dialog Sep 29, 2002 - 19:31 added colour monitor and green screen option; switched to QueryPerformanceCounter for the FPS counter Sep 29, 2002 - 23:03 added the 15 and 16 bpp green monitor colour maps - thanks to Ralf's Excel sheet! Oct 02, 2002 - 23:43 added fault condition checks to zip_dir, zip_extract and load_snapshot Oct 04, 2002 - 18:29 added fault condition checks to save_snapshot, load_dsk and save_dsk; added altered DSK check on exit Oct 04, 2002 - 22:34 added disk drive activity indicator Oct 07, 2002 - 17:48 fixed switching CPC monitor type "on-the-fly"; fixed surface restore in fullscreen mode Oct 07, 2002 - 21:58 added line doubling (in hardware) rendering mode Oct 16, 2002 - 22:18 added enumeration and initilization of all installed keyboards and joysticks Oct 17, 2002 - 23:40 replaced the controls property page in the options dialog Oct 28, 2002 - 19:50 added support for custom controls: CPC joystick functions can now be mapped to any attached input device(s) Nov 01, 2002 - 15:54 added custom print routine for on-screen messages (e.g. FPS counter) Nov 02, 2002 - 16:44 mouse cursor now auto-hides with no mouse movement for 2 seconds Nov 10, 2002 - 17:38 added ROM patching to support the french and spanish CPC keyboard layouts Nov 10, 2002 - 21:31 fixed PPI port C handler Nov 12, 2002 - 22:08 changes to the OUT handler: GA and CRTC cannot be accessed at the same time; fixed the GA pen selection Nov 13, 2002 - 22:48 tweaked the IN/OUT handlers a bit more Dec 05, 2002 - 00:06 fixed the problem with the tape startup delay: the PPI Port C bit manipulation only considered 4 instead of 8 bits Dec 08, 2002 - 22:05 updated the Z80_OUT_handler to accept FDC data on ports 0x7f and 0x7e, as per Kevin's I/O port document Dec 10, 2002 - 23:50 print now draws double spaced in scanline mode: don't have to remove the text again this way Dec 19, 2002 - 23:28 added 48 & 96 kHz audio options; added sanity checks for LoadConfiguration Dec 21, 2002 - 15:50 PCAudio_init reports if selected sample rate is not supported; added empty path handling to LoadConfiguration Dec 22, 2002 - 17:21 found a typo in my keyboard lookup table: CPC key 8 was returning the same as CPC key 0 Jan 12, 2003 - 01:05 added the ability to search for multiple extensions to zip_dir Jan 12, 2003 - 15:57 completed processing of dropped dsk, sna and cdt files Jan 15, 2003 - 17:30 added the removal of the temp file to process_drop when uncompressing zip archives Jan 21, 2003 - 18:53 changed the window handle in all MessageBox calls from NULL to hAppWnd: errors display correctly in full-screen mode now Jan 24, 2003 - 00:44 altered the validity check on loading expansion ROMs, as some may not contain a jump instruction at offset 0x06 Jan 25, 2003 - 16:49 fixed the FDC port handling in z80_in_handler: "Famous 5" loads now! Jan 27, 2003 - 18:47 updated the resource file to support themed Windows XP controls Jan 28, 2003 - 19:18 added insert_voc: converts a sound sample into a CDT direct recording block Jan 30, 2003 - 20:37 added 24bpp display mode support Jan 31, 2003 - 16:50 CPC speed slider range is now 50% to 800%, and can be set in 25% increments Jan 31, 2003 - 22:42 AMSDOS is placed in ROM slot 7 if the config file does not yet exist Feb 23, 2003 - 14:48 fixed the Windows system palette problems in 256 colour mode Mar 04, 2003 - 21:04 removed the background brush in the app window class; replaced "return 0L" with "break" in WindowProc Mar 11, 2003 - 22:38 emulation can now continue to run when focus is lost; added more invalid object checks to ensure clean exits Mar 12, 2003 - 18:08 had to add the background brush again: fullscreen mode would otherwise not update the unused area Mar 12, 2003 - 19:02 added the 'auto-pause on loss of focus' feature to the Options dialog Mar 12, 2003 - 22:07 added the display of HRESULT codes for DirectDraw function calls Mar 17, 2003 - 22:40 added a check_drvX call to the eject disk menu functions Mar 22, 2003 - 18:39 added the ability to insert blank disks in either CPC drive; the new Disk page in the Options dialog allows you to choose the format; implemented the Flip Disk option to reverse sides Mar 23, 2003 - 21:41 custom disk formats can now be specified in the config file; modified LoadConfiguration and SaveConfiguration to support this feature Mar 29, 2003 - 16:40 tape motor is not turned on if there is no tape in the drive Apr 02, 2003 - 21:31 changes to the Options dialog: moved the ROM slots to their own page; some cosmetic changes; remembers last page user was on Apr 03, 2003 - 22:12 added the option to capture printer output to file; aborting a save dialog for a changed DSK now drops back to the emulation without taking any further action Apr 07, 2003 - 19:09 modified the z80_OUT_handler to capture port writes for the MF2; added all the necessary bits for MF2 emulation, but for now it doesn't display the MF2 menu correctly (text is invisible!)... Apr 07, 2003 - 21:59 doh! fixed the MF2 problem: the MF2 page-out port always set RAM bank0 instead if checking if the lower ROM was active Apr 09, 2003 - 15:49 MF2 ROM is now restored at every reset to ensure the ROM area has not been corrupted by memory writes Apr 13, 2003 - 16:18 added code to display the logo in the About box with a transparent background Apr 16, 2003 - 16:18 joystick emulation can be toggled on/off; keyboard control assignments now override regular CPC keyboard actions; all dialogs now feature the "Caprice32 - " string to make identification easier; ZIP selector shows ZIP file name Apr 26, 2003 - 14:03 added CaptureScreenshot to save the screen contents to a PNG file Apr 26, 2003 - 16:25 finished screen capture implementation: added file selector and path/file storage to config file May 05, 2003 - 22:46 updated the Audio page in the Options dialog with controls to choose the sample size and adjust the volume May 06, 2003 - 18:59 load_snapshot and save_snapshot now use the v3 PSG information + the printer port data May 13, 2003 - 17:41 fixed the file selector problem on drag and drop: the exit condition check was reversed May 18, 2003 - 01:01 moved Gate Array memory handling to ga_memory_manager; save_snapshot correctly stores current RAM bank now May 21, 2003 - 00:31 changed the colour palette generation to support an intensity level slider May 21, 2003 - 14:42 added the Intensity slider control to the Video options May 26, 2003 - 20:06 emulation loop needs to keep running to produce proper key events: fixes the Pause problem May 28, 2003 - 13:59 modified the shadow of the print routine to make it more readable on a white background May 29, 2003 - 15:09 implemented the info message display system and added strings for most emulator actions and keyboard shortcuts May 30, 2003 - 12:17 added the tape PLAY/STOP button control for proper tape operation Jun 02, 2003 - 15:05 if the CreateSurface call fails with video memory, it now attempts to allocate it in system memory Jun 04, 2003 - 19:38 added the 'on printer port' drop-down to the Audio options page Aug 10, 2003 - 14:35 z80_IN_handler: CRTC write only registers return 0; load_snapshot: fixed broken snapshot support (PPI values were written to the wrong ports!); digiblaster/soundplayer combined into one - changed from a drop down to a check box May 19, 2004 - 23:13 removed all DirectX/Windows specific parts and replaced them (wherever possible) with the SDL equivalent May 23, 2004 - 17:48 dropped double buffer scheme in favour of a back buffer/custom blit operation; fixed colour palette init in 8bpp mode; added support for half size render mode; back buffer is cleared in video_init(); replaced the SDL_Flip operation with an SDL_BlitSurface; initial ExitCondition is now EC_FRAME_COMPLETE to ensure we have a valid video memory pointer to start with May 24, 2004 - 00:49 reintroduced snapshot_load & snapshot_save; modified vdu_init to update the two SDL_Rect structures to center or crop the CPC screen; introduced the dwXScale var to support the half size render mode May 29, 2004 - 18:09 reintroduced tape_eject, tape_insert and tape_insert_voc; added sound support via the native SDL audio routines ********* * z80.c * ********* Oct 03, 2000 - 18:56 all un-prefixed opcodes done Oct 07, 2000 - 11:04 all CB opcodes done Oct 07, 2000 - 15:06 all DD opcodes done Oct 07, 2000 - 15:23 all DD CB opcodes done Oct 09, 2000 - 12:41 all ED, FD, and FD CB opcodes done Oct 14, 2000 - 17:48 added interrupt processing to z80_getopcode Oct 22, 2000 - 19:18 removed R register update from DDCB and FDCB opcode handlers Oct 22, 2000 - 19:43 added break-point and trace capabilities Oct 24, 2000 - 17:57 changed math based opcodes to always work with unsigned parameters Oct 29, 2000 - 20:46 fixed 16 bit memory read/write opcodes (read both halves from the low byte!) Oct 29, 2000 - 20:51 fixed LD L,byte; RRC r (used wrong registers - forgot to change them after copy!) Nov 06, 2000 - 21:08 fixed a couple of IX/IY instructions (forgot to change a few I?h/I?l related opcodes!) Nov 06, 2000 - 21:20 fixed some DDCB/FDCB instructions (one too many M cycles for BIT (I?+o) & co.) Nov 07, 2000 - 18:58 complete overhaul of DDCB/FDCB instructions (offset byte handling was wrong!) Jan 24, 2001 - 18:26 fixed LD (IX/IY + o), L and LD (IX/IY + o), H (uses L and H, not I?l and I?h!) Feb 19, 2001 - 18:37 removed machine cycle specific code; added cycle count tables and 'wait state' routine Mar 05, 2001 - 22:58 reworked all cycle count tables - verfied with the real CPC & an oscilloscope Mar 29, 2001 - 19:10 fixed the timing problem (z80_wait_states was called after interrupts even if they were disabled!) Apr 03, 2001 - 18:25 incorporated the changes from the MAME Z80 core v3.1 to v3.2 update Apr 09, 2001 - 19:30 fixed the problem with some CPC programs crashing (offset for IX/IY instructions was unsigned!) Jul 31, 2001 - 23:34 put the 'old' NOP cycle timing table back in Nov 12, 2001 - 18:15 incorporated the changes from the MAME Z80 core v3.2 to v3.3 update Nov 14, 2002 - 21:39 changed the length of processing an interrupt in IM2 from 28T to 76T Feb 10, 2003 - 18:24 corrected the cycle count of CPI/CPIR & CPD/CPDR with the help of Richard's PlusTest Feb 12, 2003 - 17:29 added the wait state adjustment on interrupts for a specific number of instructions (see Richard's document on andercheran for the complete list) Apr 07, 2003 - 19:10 added z80_mf2stop to emulate the NMI caused by the stop button of the MF2 Apr 07, 2003 - 22:48 added code to z80_execute to monitor when the MF2 finishes and has to be made 'invisible' May 10, 2003 - 19:12 fixed the unofficial DDCB/FDCB RES/SET instructions: the unaltered value was stored in the associated register; some minor code clean up May 15, 2003 - 23:19 "Thomas the Tank Engine", "N.E.X.O.R." and "Jocky Wilson's Darts Compendium" work now: DI did not clear the z80.EI_issued counter ********** * tape.c * ********** Nov 05, 2002 - 22:17 Nov 06, 2002 - 21:31 first test run - nada, zip, zilch - nothing happens... Nov 07, 2002 - 11:52 doh! data bits were missing one half of their wave; OHMUMMY.CDT loads, but does not run yet Nov 07, 2002 - 22:04 tapes with block id 0x11 seem to load now - enabling tape control through the motor bit fixed it: go figure! Nov 07, 2002 - 23:26 added processing of blocks 0x10, 0x12, 0x13, 0x14 Nov 14, 2002 - 23:35 modified the pause to properly finish the previous pulse, if necessary Dec 07, 2002 - 23:00 changed the points where Tape_SwitchLevel is called; level changes should now occur at the correct times Jan 19, 2003 - 12:09 added support for the direct recording block (0x15) Jan 28, 2003 - 22:33 VOC "tapes" work - problems with SpeedLock loaders must therefore be due to incorrect CDT emulation Jan 29, 2003 - 19:14 fixed CDT loading: the pause-after-block value was read from the wrong location! ********* * psg.c * ********* Jul 07, 2001 - 16:07 basic functionality of sound_fill_buffer, converted from asm code Jul 20, 2001 - 18:49 sound emulation works properly for the first time; tone and noise implemented Jul 28, 2001 - 15:23 switched to the AY emulation from MAME Jul 28, 2001 - 16:09 fixed the envelope problem: the amp_table was still being referenced as byte! Aug 01, 2001 - 17:28 added code to support mono output Aug 12, 2001 - 21:42 moved psg_reg_write() from cap32.cpp Dec 08, 2002 - 10:43 properly integrated the tape noise into the mixing buffer Apr 29, 2003 - 21:48 started to convert AyEmul source code from Pascal to C Apr 30, 2003 - 23:39 continued with conversion May 04, 2003 - 00:13 modified Synthesizer_Stereo16 for Caprice32 - new AY code works for the first time! May 04, 2003 - 16:09 fixed the problem with the envelope period: the struct in TRegisterAY wasn't accessed properly May 05, 2003 - 18:46 added alternate synthesizers for mono/stereo + 8/16 bits; some code cleanup May 06, 2003 - 15:18 enabled 'tape noise' again May 13, 2003 - 15:57 moved counter init to InitAYCounterVars; corrected the 'divide by zero' possibility in the synthesizer routines: LoopCountInit calculation needs to take CPC speed into account May 15, 2003 - 00:08 replaced the rand() call with Sergey's noise algorithm May 23, 2003 - 14:58 added code to supress sound if the tone frequency is set to a value below 5, and no envelope assigned to the channel Jun 04, 2003 - 19:37 added support for Digiblaster/Soundplayer on the printer port ********** * crtc.c * ********** Oct 16, 2000 - 23:12 started conversion from assembly to C Oct 17, 2000 - 19:25 finished converting main CRTC update loop Oct 17, 2000 - 22:04 added framework for mode draw handlers Oct 25, 2000 - 22:03 changed all CRTC counters to be only 8 bits wide; fixed address calculation Oct 30, 2000 - 19:03 fixed CPC screen address line advancement (test should have been for a _reset_ bit!) Mar 20, 2001 - 16:00 added draw_mode2 Jun 20, 2001 - 23:24 added drawing routines for 32bpp video modes Jul 04, 2001 - 22:28 16bpp rendering; updated 8bpp code with VDU visible region limiting Sep 26, 2002 - 22:39 moved rendering code to separate files; added line doubling (in software) code Oct 07, 2002 - 21:58 removed the CPC.scr_max test in write_video_data; added support for variable line spacing May 23, 2004 - 17:38 added some preliminary VDU frame cropping to reduce the amount of data written to the video buffer May 24, 2004 - 00:44 moved the write_video_data code into the body of access_video_memory Jul 08, 2004 - 16:58 started implementing Richard's assembly CRTC emulation in C ********* * fdc.c * ********* Nov 08, 2000 - 18:02 started conversion of assembly FDC routines to C Nov 22, 2000 - 17:50 added fdc_read_status() Dec 19, 2000 - 00:05 added fdc_seek() Jan 15, 2001 - 16:52 fdc_read() done Jan 17, 2001 - 19:15 updated/fixed fdc_read(), fdc_readID, fdc_intstat; added fdc_recalib Jan 18, 2001 - 23:43 inlined cmd_read(); added #defines for loading the result buffer; added fdc_drvstat() Jan 24, 2001 - 22:26 fixed fdc_readID() (the result got overwritten by LOAD_RESULT_WITH_CHRN!) Aug 03, 2001 - 00:07 added fdc_write() Aug 04, 2001 - 10:40 added fdc_writeID() Oct 06, 2001 - 23:21 added fdc_readtrk() Oct 07, 2001 - 11:37 got fdc_readtrk() to work properly Jan 12, 2003 - 18:49 fdc_drvstat now reports an error condition when accessing side 2 on a one sided disk Jan 21, 2003 - 18:13 mod to fdc_drvstat was incorrect: drive falls back to 1st side on a single head drive Jan 25, 2003 - 15:57 data transfers can now time out and will be reported via OVERRUN condition Feb 05, 2003 - 19:42 changed the OVERRUN_TIMEOUT to 26µs as per NEC's documentation Feb 08, 2003 - 16:26 added a delay to fdc_read_status in execution phase: FDC first indicates busy before starting data transfer ("Last Mission" loads) Feb 10, 2003 - 21:45 fixed cmd_read: multi-sector reads end on the first sector that is found to have the opposite of the requested AM ("Nigel Mansell's Grand Prix" loads) Feb 11, 2003 - 18:35 increased OVERRUN_TIMEOUT again ("Puffy's Saga" loads) Mar 16, 2003 - 00:19 added the missing scan equal, scan low or equal and scan high or equal commands Mar 16, 2003 - 12:22 modified find_sector: if a sector cannot be found, table index should be 0 Mar 16, 2003 - 16:12 fdc_seek now only changes track if the drive is ready (i.e. has a disk inserted) Mar 17, 2003 - 22:42 updated fdc_intstat to report status changes (drive ready/not ready) Mar 17, 2003 - 23:04 fixed fdc_drvstat: reset ready if motor is off or no disk inserted Mar 22, 2003 - 18:54 added support for the "flipped" disk condition Jun 03, 2003 - 18:34 fixed Bad Cylinder and No Cylinder handling when a sector cannot be found: ("Starfox - CPM version" loads)
 www.hobbesarchive.com/Hobbes/pub/os2/apps/emulator/caprice32.zip  local copy
Scheda aggiornata l'ultima volta il: 11/02/2025 - 06:31

Aggiungi un commento