YAPE is a Commodore 264 family emulator. It's an 8-bit microcomputer family from the once-great-now-defunc Commodore Business Machines Ltd. They were released as a successor to the immensely popular Commodore 64 supposedly to either compete with the ZX Spectrum or other micros but eventually failed to gain market success and the whole line was dumped within a couple of years. However they were hugely popular in a few countries such as Hungary, Germany or Italy (to a certain extent also in the UK).
The program features an accurate cycle-exact approach and a high level of emulation. The user interface aims to exploit the potentials of the Windows operating environment. The emulator is written in C++ and is compiled with MS Visual C++. There's an older port to other platforms than Windows (using the SDL library). In the future there'll probably be other ports made.
YAPE was born out of a disassembler project during the summer of 2000 and had been for some time the only actively updated Commodore 264 family emulator. See the Changes.txt for development and release milestones.
Minimum system requirements
Since YAPE is a cycle-based emulator (much like the Commodore 64 emulators x64sc, Hoxs or Frodo), its system requirements are higher than that of other line-, instruction- or event-based emulators. In return however, it makes development easier for me while providing maximum possible accuracy. For attaining 100% relative speed to the original hardware, you need:
PII 333 MHz or higher without sound and true drive emulation.
PII 500 MHz or higher for both sound and true drive emulation.
- All the known 264 family members are emulated:
- Commodore 16/116 (optionally with 64 KB memory extension)
- Commodore 232 (prototype unit with 32 KB RAM, never sold)
- Commodore plus/4
- Commodore V364 (prototype unit, 64KB + Speech hardware)
You can select the desired machine configuration from the 'Machine' submenu's Configuration option. The Commodore 364 prototype unit is also emulated even though the interfacing (MOS 8706R0 custom ASIC) between the machine and the speech hardware (Toshiba 6721A speech synthesizer LSI) is to some extent unknown. Note that it is real emulation, not 'simulation', no speech samples are used, but all the utterances are generated realtime, on the fly.
The following hardware components are emulated:
- cycle exact CPU (MOS 7501/8501) and TED (MOS 7360/8360) emulation
- cycle exact 1541 drive emulation (6502 CPU, VIA 6522 i/o chip and FDC emulation)
- cycle exact 1551 drive emulation (6510T CPU, TIA 6523 i/o chip and FDC emulation)
- 100% of regular and illegal CPU opcodes are implemented
- 16K, 32K, 64 and 256 KB RAM configurations are all supported
- all TED character and graphic modes
- rasterline exact hardware cursor
- timer and raster interrupts
- PAL and NTSC video modes with most known artifacts
- full ROM banking and external cartridge support (in raw format only)
- PRG/P00/D64/G64/T64 image format support, also ZIP-ped
- TAP image support, both MTAP and digital samples (aka WAVs)
- keyboard+joystick emulation via the PC keys and/or joystick
- full TED sound (generated noise and 2 channel square wave), decent SID-card emulation (both 6581 and 8580 selectable) with custom chip address
- simple high- and low-pass sound output filter; oversampling filter for TED sound
- functional T6721A Toshiba speech chip and custom MOS 8706R0 glue chip emulation
- user port (RS-232) lightpen
- partial PAL emulation (dynamic YUV palette: brightness, contrast, gamma correction, saturation; the emulator expects 'valid' vblank signals otherwise the emulator screen may start flickering like the real TV)
- emulator and multimedia snapshot (video, audio), screenshot support
Note, that the SID card and the 256 KB RAM are hobbyist extensions to the original hardware and not to be found in stock machines.
The following are not emulated at the moment:
- all low level TV signals
- 157x series of floppy drives
There are three emulation accuracy levels. These are:
- low level: the emulation is line based, the timers are also updated every line only. Provides very good performace on older computers while at the same time adequate accuracy for playing most of the well-known classic games, though true drive emulation is not available. Also do not try running demos in this mode.
- high level (default): the emulation is very accurate, the only missing features are the video shift register emulation and a few weird quirks of the clocking. Runs 99.9 percent of the programs perfectly, only a handful of demos will fail, that are deliberately overwriting the horizontal counter (and not even all of them fail per se)
- very high accuracy: all known TED effects are emulated, should run all programs ~100% accurately; if not, report it immediately :)
In case you're coding a demo, the last option is the best choice, otherwise just go for the default option. If your computer is made prior to 1999, then you probably have to use the low level mode.
YAPE can interact with the Windows operating environment in the following ways:
- You can copy the contents of the screen memory to the Windows clipboard by pressing ALT+C
- You can copy the contents of the Windows clipboard to the emulator. In this case the clipboard is interpreted as text and will be feeded to the emulated machines's keyboard buffer
- You can associate YAPE with the most common CBM emulator images (PRG, D64, G64, TAP). Select 'File associations'from the File menu and tick the file extensions you want to get associated. Untick causes the association to be deleted from the Windows Registry.
- Drag'n' drop support: by dragging a supported emulator image over the window of the emulator, it'll get autostarted as if you had selected 'Autostart image' from the menu. If you drag an image file with the Ctrl key pressed it won't autostart though.
- Always on top: you can force YAPE to be the topmost window on your desktop even when it's not the active window. Select 'Always on top' from the Screen menu
- You can make screenshots ofthe emulator's screen in BMP or GIF format by pressing F6. The file gets placed in the current folder (not necessarily where the emulator resides, but where you the last time have programs loaded from). If you have loaded a PRG or P00 file previously, the name of the screenshot will be PROGRAMNAME0000.BMP otherwise it'll get a name of YAPE0000.BMP where 0000 is a serial number so you can place more screenshots of the same program (up to 10,000) in the actual folder without overwriting the older ones.
- You can make multimedia snapshots, either in video or audio format. When recording to video, first you will be presented with the default codec-selector dialog window where all the system-wide installed video encoders are present. Choose one that supports both audio and compressed video otherwise the resulting video file may become enormous (or wihout sound). Sound snapshots are presently only available into 16 bit mono, 44,1 kHz uncompressed PCM (WAV) format.
- You can switch to full screen mode and back to windowed by pressing ALT+ENTER or selecting 'Full screen' from the Machine menu. Full screen mode is meant to be the quickest as it uses DirectX and direct primary surface access. Select it of you experience speed problems on your PC. The best performance in windowed mode can be achieved with the 'Use GDI' option from the Screen menu and by turning 'Double screen'off. Also this is the most compatible screen mode. Unfortunatley, the user interface is limited in full screen mode, so you may have to switch back and forth if you need a certain UI functionality.