Emulator IDs

From CPCWiki - THE Amstrad CPC encyclopedia!
Jump to: navigation, search

Some CPC emulators use Port &FEFE to provide a method to identify a specific CPC emulator. CPC programs could use this ID to detect an emulator and change some of their behaviour (e.g. changing graphic effects which will not work on an emulator or using special emulator-specific features). Reading from this port returns the Emulator-ID or &FF on the real CPC and on emulators which do not provide this feature.

Showing the Emulator-ID

In Locomotive BASIC, type the following command:

PRINT HEX$(INP(&FEFE))

List of known Emulator-IDs

- #78: Amspirit
- #88: VirtualCPC
- #99: WinCPC
- #A0: JavaCPC
- #AA: PC-CPC
- #C0: C-One Normal
- #C1: C-One Turbo
- #C2: TREX Normal
- #C3: TREX Turbo
- #CE: CPCE
- #FF: Caprice, WinApe, MAME or a real CPC

NOTE: It should be noted that the value #FF is just valid on a bare CPC (not plus!) and any extensions connected can change this!

On a healthy and bare Amstrad CPC, &FF is the value you can usually read on the DATA bus in high impedance state. On a healthy and bare Amstrad Plus, this is usually &78. This property has been used to detect the Plus machines in several productions (and failed on several occasions as this is not a reliable technique). Source

You should never do anything relying on the value of the DATA bus in High impedance state and expect it to work the same on all machines. It won't!