Difference between revisions of "Emulator IDs"
(→List of known Emulator-IDs) |
(→List of known Emulator-IDs) |
||
(12 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
− | Some CPC emulators use Port & | + | 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: | ||
+ | <pre> | ||
+ | PRINT HEX$(INP(&FEFE)) | ||
+ | </pre> | ||
== List of known Emulator-IDs == | == List of known Emulator-IDs == | ||
− | <pre>- #99: WinCPC | + | <pre> |
+ | - #78: Amspirit | ||
+ | - #88: VirtualCPC | ||
+ | - #99: WinCPC | ||
- #A0: JavaCPC | - #A0: JavaCPC | ||
+ | - #AA: PC-CPC | ||
- #C0: C-One Normal | - #C0: C-One Normal | ||
- #C1: C-One Turbo | - #C1: C-One Turbo | ||
Line 9: | Line 19: | ||
- #C3: TREX Turbo | - #C3: TREX Turbo | ||
- #CE: CPCE | - #CE: CPCE | ||
− | - #FF: Caprice or a real CPC | + | - #FF: Caprice, WinApe, MAME or a real CPC |
</pre> | </pre> | ||
<b>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!</b> | <b>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!</b> | ||
+ | |||
+ | 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). [https://www.grimware.org/doku.php/documentations/devices/io.devices#blind.test Source] | ||
+ | |||
+ | <b>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!</b> | ||
+ | |||
[[Category:Emulator]] [[Category:Programming]] | [[Category:Emulator]] [[Category:Programming]] |
Latest revision as of 15:55, 16 January 2025
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!