<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://oldwiki.cpcwiki.eu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Polluks</id>
		<title>CPCWiki - THE Amstrad CPC encyclopedia! - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://oldwiki.cpcwiki.eu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Polluks"/>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php/Special:Contributions/Polluks"/>
		<updated>2026-08-30T10:29:48Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.25.1</generator>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=ACE_(Emulator)&amp;diff=127423</id>
		<title>ACE (Emulator)</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=ACE_(Emulator)&amp;diff=127423"/>
				<updated>2026-06-04T18:23:37Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: /* Graphical interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ACE.png|thumb|German GUI - Main window]]'''ACE''' is a high quality [[Amstrad]] CPC/CPC+ emulator written by Philippe &amp;quot;[[OffseT|OffseT]]&amp;quot; Rimauro.&lt;br /&gt;
&lt;br /&gt;
It is developed exclusively for [http://www.morphos.de/ MorphOS] as a user-friendly and fully OS-compliant application.&amp;lt;br /&amp;gt;&lt;br /&gt;
Also, PulkoMandy is maintaining a port for [https://www.haiku-os.org/ Haiku] which tries to match the features of the original version as much as possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ACE was coded from scratch, using a real CPC as a reference in order to provide one of the best Amstrad CPC emulator ever. Most of the games and demos for both CPC and CPC+ are working perfectly; the quality of the emulation is often superior to what the existing CPC emulators on PC/Windows can produce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition to the high quality emulation, ACE features full screen and overlay display (including 50Hz display), editor and analyzer windows for all emulated CPU and chipsets, advanced breakpoints management, a very powerful set of AREXX commands for cross-development, a plugin interface, scripting capabilities, and much more...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Moreover, ACE is fully translated in French, Spanish, German and English and is still under active development. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also worth mentioning is [[ACE-DL]], an emulator available for Windows, macOS and Linux, which uses the same emulation engine as ACE but with a minimalist GUI (SDL-based), no localization, no scripting capabilities, and no support for external plugins.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Emulator capabilities ==&lt;br /&gt;
&lt;br /&gt;
ACE emulates most CPC hardwares and their variants.&lt;br /&gt;
&lt;br /&gt;
=== System ===&lt;br /&gt;
* Handling of the entire CPC and CPC+ range.&lt;br /&gt;
* Full Z80 emulation.&lt;br /&gt;
* Up to 256 expansion ROMs.&lt;br /&gt;
* Up to 4 MiB of extended memory.&lt;br /&gt;
&lt;br /&gt;
=== Video ===&lt;br /&gt;
* Accurate CRTC emulation of the various CRTC types.&lt;br /&gt;
* Gate Array full emulation of all variants (perfect split rasters management).&lt;br /&gt;
* CPC+ ASIC full emulation (unique quarter-cycle precision).&lt;br /&gt;
* CTM644, GT65 and MM12 monitors emulation (including dynamic analog behaviors).&lt;br /&gt;
&lt;br /&gt;
=== Audio ===&lt;br /&gt;
* Full and very accurate PSG emulation (AY-3-8912).&lt;br /&gt;
* Extremely accurate audio DMA emulation on CPC+.&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
* Accurate but incomplete FDC emulation (Format and Scan instructions are missing).&lt;br /&gt;
* Accurate emulation of both floppy disc drives (real rotation speed computation, manual drive &amp;amp; side switches support).&lt;br /&gt;
* CPC+ Cartridge port emulation (including upcoming extended cartridges).&lt;br /&gt;
* Emulation of the tape interface through audio files (read only).&lt;br /&gt;
* Accurate emulation of the keyboard (including ghost keys when pressing more than three keys at once).&lt;br /&gt;
* Automatic keyboard remapping can be activated if your are using ACE with a keyboard layout unknown by the original CPC firmwares.&lt;br /&gt;
* Plugins interface to support virtually any external device.&lt;br /&gt;
&lt;br /&gt;
== Graphical interface ==&lt;br /&gt;
&lt;br /&gt;
ACE MUI graphical interface is designed to be versatile and very easy to use, and everything is always updated in real time to match the actual emulator state.&lt;br /&gt;
&lt;br /&gt;
* Simple and modular configuration of the CPC profiles to emulate using tool types (from Ambient) or arguments (from CLI).&lt;br /&gt;
* Ability to change the CRTC type or the screen monitor model on-the-fly without having to reset the running program.&lt;br /&gt;
* [[Format:SNA snapshot file format|SNA]] and [[Format:DSK disk image file format|DSK]] files management (all of them!) with automatic on-the-fly detection and fix of the corrupted DSK.&lt;br /&gt;
* [[Format:CPR CPC Plus cartridge file format|CPR]] files management for CPC+ cartridges (including support of extended cartridges up to several hundreds on megabytes).&lt;br /&gt;
* Overlay support with real pixel aspect ratio.&lt;br /&gt;
* Full screen support with the ability to choose the graphic mode to use in order to get back the 50Hz smoothness if your screen monitor can do this.&lt;br /&gt;
* Maskable interface in both windowed &amp;amp; full screen modes.&lt;br /&gt;
* Floppy disc drives LED activity OSD when the interface is not displayed.&lt;br /&gt;
* Rich breakpoints management on predefined conditions (HBL, VBL, interrupt...), on graphical coordinates, on execution addresses, on memory accesses and on I/O ports accesses (with the ability to use complex conditions, masks on the break address and/or the break value) with the option to execute scripts.&lt;br /&gt;
* Video beam cursor to see the cathode's ray position while on pause or in step by step mode.&lt;br /&gt;
* Memory editor (management of all RAM and ROM switching, automatic detection of the character code page depending on the installed firmware ROM).&lt;br /&gt;
* Z80 disassembler with highlight on opcodes and fast jump buttons on branch instructions.&lt;br /&gt;
* CRTC editor (full real time read/write access to the registers).&lt;br /&gt;
* Z80 editor (full real time read/write access to the registers).&lt;br /&gt;
* Gate Array analyzer (palette display, graphic mode, interrupt internal counter).&lt;br /&gt;
* PSG analyzer (played notes, tuning, and a bunch of rich information from the current PSG settings).&lt;br /&gt;
* Hard sprites analyzer (palette and content).&lt;br /&gt;
* DMA analyzer (full real time state and instructions being executed).&lt;br /&gt;
* Video information window (frequencies, beam ray position...).&lt;br /&gt;
* Virtual keyboard and joysticks.&lt;br /&gt;
* Ability to map joystick to keyboard when in case real joystick is available.&lt;br /&gt;
* Internal keyboard matrix state observer.&lt;br /&gt;
* Screen monitor settings window (type, brightness, vertical hold).&lt;br /&gt;
* Sound volume control.&lt;br /&gt;
* Online help and MUI's bubbles help available everywhere to help the beginners.&lt;br /&gt;
&lt;br /&gt;
== Programmable interface ==&lt;br /&gt;
&lt;br /&gt;
ACE is designed to be expandable and controllable. You are not limited to the core emulation and can you easily integrate it in any cross-development tool chain.&lt;br /&gt;
&lt;br /&gt;
=== Plugins ===&lt;br /&gt;
&lt;br /&gt;
ACE support plugins that allow anybody with some C language knowledges to add support for expansions connected to joystick, printer or expansion CPC port.&lt;br /&gt;
&lt;br /&gt;
==== Default ====&lt;br /&gt;
* Both [[joystick]]s (up to three fire buttons, also including an unique combined mode) using real devices plugged on the host machine (using USB or whatever).&lt;br /&gt;
* [[Printer]] (redirected to a file).&lt;br /&gt;
* [[Multiface_II|Multiface Two]] (well known hardware debugger and snapshot handler).&lt;br /&gt;
* [[Digiblaster|Digiblaster/Soundplayer]] (8-bit mono sound card).&lt;br /&gt;
* [[Kempston Mouse]].&lt;br /&gt;
* [[AMX Mouse]].&lt;br /&gt;
* [[Gunstick]] (light gun).&lt;br /&gt;
* [[Amstrad Magnum Phaser]] (light gun).&lt;br /&gt;
* [[Trojan Light Phazer]] (light gun).&lt;br /&gt;
* [[West Phaser]] (light gun).&lt;br /&gt;
&lt;br /&gt;
==== Additional ====&lt;br /&gt;
* [[Albireo]] (MicroSD, USB, and more).&lt;br /&gt;
* [[X-Mass]] (IDE interface).&lt;br /&gt;
* [[Dandanator]] (programmable game cartridge module)&lt;br /&gt;
* [[Play2CPC]] (Amstrad Plus compatible game cartridge module, with embedded additional 3 voices PSG sound card)&lt;br /&gt;
* [[Nova]] (NV-RAM and RTC).&lt;br /&gt;
* [[MultiPlay]] (additional mice and joysticks ports).&lt;br /&gt;
* [[Willy]] (18 channels FM synthetizer and MIDI sound cards).&lt;br /&gt;
* [[PlayCity]] (6 voices PSG sound card).&lt;br /&gt;
* [[Amdrum]] (8-bit mono sound card).&lt;br /&gt;
* [[Amstrad_SSA-1_Speech_Synthesizer|SSA-1]] (English speaking speech synthesizer).&lt;br /&gt;
* [[Dk%27tronics_Speech_Synthesizer|DK'Tronics Speech]] (English speaking speech synthesizer).&lt;br /&gt;
* [[TMPI speech synthesizer|Techni-Musique Speech]] (multilingual speaking speech synthesizer).&lt;br /&gt;
* [[Mirage Imager]] (hardware freeze and snapshot handling).&lt;br /&gt;
* Cycle counter (developer helper).&lt;br /&gt;
&lt;br /&gt;
=== Scripting ===&lt;br /&gt;
&lt;br /&gt;
Any scripting language (such as Python, Lua or of course AREXX) can be used to control ACE through its AREXX interface. It gives you full control on the emulator in order to automate things (and much more), or even to use ACE as a powerful cross-development station (including integration into an IDE).&lt;br /&gt;
&lt;br /&gt;
== Web links ==&lt;br /&gt;
* [http://ace.cpcscene.net ACE CPC Emulator]&lt;br /&gt;
* [https://web.libera.chat/#cpc-fr IRC channel]&lt;br /&gt;
&lt;br /&gt;
[[Category:4 MB RAM Software Support]]&lt;br /&gt;
[[Category:Emulator]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=List_of_Speccy_Ports&amp;diff=127422</id>
		<title>List of Speccy Ports</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=List_of_Speccy_Ports&amp;diff=127422"/>
				<updated>2026-06-04T12:40:11Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An almost-definite list of what the author considers to be Blatant (and subpar) Spectrum Ports to the CPC. A Youtube playlist of footage of most of these (apart from ones marked with an Asterisk) is available [https://youtube.com/playlist?list=PLMEbtTedCiXq82h-0kTijE0Jbnmjp60QE here].&lt;br /&gt;
&lt;br /&gt;
Note that not all games that use limited-colour palettes appear here. Some games make wonderful use of Mode 1 despite the lack of colours and are thus excluded (for example, Laser Squad). And although Rick Dangerous, for example, uses the same codebase between the Amstrad and Spectrum versions (to the extent that the same bugs appear in both), the luscious redrawn Mode 0 graphics in the former also exclude it from this list.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
| Airwolf 2&lt;br /&gt;
|-&lt;br /&gt;
| Amo del Mundo&lt;br /&gt;
|-&lt;br /&gt;
| Andy Capp&lt;br /&gt;
|-&lt;br /&gt;
| Antares&lt;br /&gt;
|-&lt;br /&gt;
| Astonishing Avendures of Mr Weems and the She-Vampires&lt;br /&gt;
|-&lt;br /&gt;
| Attack of the Killer Tomatoes&lt;br /&gt;
|-&lt;br /&gt;
| ATV Simulator&lt;br /&gt;
|-&lt;br /&gt;
| Back to the Future 2&lt;br /&gt;
|-&lt;br /&gt;
| Badlands&lt;br /&gt;
|-&lt;br /&gt;
| Biff&lt;br /&gt;
|-&lt;br /&gt;
| Big Trouble in Little China&lt;br /&gt;
|-&lt;br /&gt;
| Billy the Kid&lt;br /&gt;
|-&lt;br /&gt;
| Bionic Commando&lt;br /&gt;
|-&lt;br /&gt;
| Black Tiger&lt;br /&gt;
|-&lt;br /&gt;
| BMX Freestyle Simulator&lt;br /&gt;
|-&lt;br /&gt;
| Bomb Fusion&lt;br /&gt;
|-&lt;br /&gt;
| Bombscare&lt;br /&gt;
|-&lt;br /&gt;
| Bosconian '87&lt;br /&gt;
|-&lt;br /&gt;
| Brainache&lt;br /&gt;
|-&lt;br /&gt;
| Brian Bloodaxe*&lt;br /&gt;
|-&lt;br /&gt;
| Bronx Street Cop&lt;br /&gt;
|-&lt;br /&gt;
| Bubbler&lt;br /&gt;
|-&lt;br /&gt;
| Casanova&lt;br /&gt;
|-&lt;br /&gt;
| Chain Reaction&lt;br /&gt;
|-&lt;br /&gt;
| Chronos&lt;br /&gt;
|-&lt;br /&gt;
| City Slicker&lt;br /&gt;
|-&lt;br /&gt;
| Con-Quest&lt;br /&gt;
|-&lt;br /&gt;
| Core*&lt;br /&gt;
|-&lt;br /&gt;
| Cosmic Shock Absorber&lt;br /&gt;
|-&lt;br /&gt;
| Critical Mass&lt;br /&gt;
|-&lt;br /&gt;
| Crossfire&lt;br /&gt;
|-&lt;br /&gt;
| Dandy&lt;br /&gt;
|-&lt;br /&gt;
| Danger Mouse in Double Trouble&lt;br /&gt;
|-&lt;br /&gt;
| Danger Mouse in Making Whoopee&lt;br /&gt;
|-&lt;br /&gt;
| Deactivators&lt;br /&gt;
|-&lt;br /&gt;
| Deadly Evil&lt;br /&gt;
|-&lt;br /&gt;
| Defcom 1&lt;br /&gt;
|-&lt;br /&gt;
| Dempsey and Makepeace&lt;br /&gt;
|-&lt;br /&gt;
| Dizzy Down the Rapids&lt;br /&gt;
|-&lt;br /&gt;
| Double Dragon 3: The Rosetta Stone&lt;br /&gt;
|-&lt;br /&gt;
| Dr Jackle and Mr Wide&lt;br /&gt;
|-&lt;br /&gt;
| Dragon Breed&lt;br /&gt;
|-&lt;br /&gt;
| Drakkar&lt;br /&gt;
|-&lt;br /&gt;
| Duck Out!&lt;br /&gt;
|-&lt;br /&gt;
| Duel 2000&lt;br /&gt;
|-&lt;br /&gt;
| Duet&lt;br /&gt;
|-&lt;br /&gt;
| Dynamite Dan 2&lt;br /&gt;
|-&lt;br /&gt;
| Eagle&lt;br /&gt;
|-&lt;br /&gt;
| El Cid&lt;br /&gt;
|-&lt;br /&gt;
| Elven Warrior&lt;br /&gt;
|-&lt;br /&gt;
| Enchanted&lt;br /&gt;
|-&lt;br /&gt;
| Enduro Racer&lt;br /&gt;
|-&lt;br /&gt;
| European Soccer Challenge&lt;br /&gt;
|-&lt;br /&gt;
| Final Matrix&lt;br /&gt;
|-&lt;br /&gt;
| Firetrap&lt;br /&gt;
|-&lt;br /&gt;
| Freddy Hardest in South Manhatten&lt;br /&gt;
|-&lt;br /&gt;
| Frontiers&lt;br /&gt;
|-&lt;br /&gt;
| Garfield 2: Winter's Tail&lt;br /&gt;
|-&lt;br /&gt;
| Gauntlet 3: The Final Quest&lt;br /&gt;
|-&lt;br /&gt;
| GI Hero&lt;br /&gt;
|-&lt;br /&gt;
| Gilbert Escape from Drill&lt;br /&gt;
|-&lt;br /&gt;
| Glider Rider&lt;br /&gt;
|-&lt;br /&gt;
| GP Formula 1 Simulator&lt;br /&gt;
|-&lt;br /&gt;
| Greyfell*&lt;br /&gt;
|-&lt;br /&gt;
| Hammerfist&lt;br /&gt;
|-&lt;br /&gt;
| Havoc&lt;br /&gt;
|-&lt;br /&gt;
| Hawk Storm&lt;br /&gt;
|-&lt;br /&gt;
| Hopping Mad&lt;br /&gt;
|-&lt;br /&gt;
| Hotshot&lt;br /&gt;
|-&lt;br /&gt;
| How to be a Complete Bastard&lt;br /&gt;
|-&lt;br /&gt;
| I, Ball&lt;br /&gt;
|-&lt;br /&gt;
| I, Ball 2&lt;br /&gt;
|-&lt;br /&gt;
| Indiana Jones and the Last Crusade&lt;br /&gt;
|-&lt;br /&gt;
| International Ninja Rabbits&lt;br /&gt;
|-&lt;br /&gt;
| Ivan 'Ironman' Stewart's Offroad Racing&lt;br /&gt;
|-&lt;br /&gt;
| Joe Blade 1&lt;br /&gt;
|-&lt;br /&gt;
| Joe Blade 3&lt;br /&gt;
|-&lt;br /&gt;
| Kenny Daglish Soccer Match&lt;br /&gt;
|-&lt;br /&gt;
| Kick Off&lt;br /&gt;
|-&lt;br /&gt;
| Kinetic&lt;br /&gt;
|-&lt;br /&gt;
| Knight Ghost&lt;br /&gt;
|-&lt;br /&gt;
| Las Tres Luces de Glaurung&lt;br /&gt;
|-&lt;br /&gt;
| Last Ninja 2&lt;br /&gt;
|-&lt;br /&gt;
| Little Puff in Dragonland&lt;br /&gt;
|-&lt;br /&gt;
| Mamno&lt;br /&gt;
|-&lt;br /&gt;
| Martainoids&lt;br /&gt;
|-&lt;br /&gt;
| Metropolis&lt;br /&gt;
|-&lt;br /&gt;
| Microprose Soccer&lt;br /&gt;
|-&lt;br /&gt;
| Molecule Man&lt;br /&gt;
|-&lt;br /&gt;
| Motocross Simulator&lt;br /&gt;
|-&lt;br /&gt;
| Motor Massacre*&lt;br /&gt;
|-&lt;br /&gt;
| Mountain Bike Simulator&lt;br /&gt;
|-&lt;br /&gt;
| Mutant Fortress&lt;br /&gt;
|-&lt;br /&gt;
| Nether Earth&lt;br /&gt;
|-&lt;br /&gt;
| Ninja Hamster&lt;br /&gt;
|-&lt;br /&gt;
| Nodes of Yesod&lt;br /&gt;
|-&lt;br /&gt;
| Number One&lt;br /&gt;
|-&lt;br /&gt;
| Oberon 69&lt;br /&gt;
|-&lt;br /&gt;
| Outlaw&lt;br /&gt;
|-&lt;br /&gt;
| Overlander&lt;br /&gt;
|-&lt;br /&gt;
| Pac-Mania&lt;br /&gt;
|-&lt;br /&gt;
| Paris-Dakar&lt;br /&gt;
|-&lt;br /&gt;
| Passing Shot&lt;br /&gt;
|-&lt;br /&gt;
| Peter Pack Rat&lt;br /&gt;
|-&lt;br /&gt;
| Peter Shilton's Handball Maradona&lt;br /&gt;
|-&lt;br /&gt;
| Phantomas 2&lt;br /&gt;
|-&lt;br /&gt;
| Pit Fighter&lt;br /&gt;
|-&lt;br /&gt;
| Prison Riot&lt;br /&gt;
|-&lt;br /&gt;
| Pro Skateboard Simulator&lt;br /&gt;
|-&lt;br /&gt;
| Prodigy&lt;br /&gt;
|-&lt;br /&gt;
| Quartet&lt;br /&gt;
|-&lt;br /&gt;
| Quest for the Mindstone&lt;br /&gt;
|-&lt;br /&gt;
| Ranamama&lt;br /&gt;
|-&lt;br /&gt;
| Rath-Tha&lt;br /&gt;
|-&lt;br /&gt;
| Red Heat&lt;br /&gt;
|-&lt;br /&gt;
| Robin Hood Legend Quest&lt;br /&gt;
|-&lt;br /&gt;
| Rocco&lt;br /&gt;
|-&lt;br /&gt;
| Rocky Horror Show&lt;br /&gt;
|-&lt;br /&gt;
| R-Type&lt;br /&gt;
|-&lt;br /&gt;
| Run for Gold&lt;br /&gt;
|-&lt;br /&gt;
| Saboteur&lt;br /&gt;
|-&lt;br /&gt;
| Sabrina&lt;br /&gt;
|-&lt;br /&gt;
| Salamander&lt;br /&gt;
|-&lt;br /&gt;
| Scamble Spirits&lt;br /&gt;
|-&lt;br /&gt;
| Scooby Doo&lt;br /&gt;
|-&lt;br /&gt;
| SDI&lt;br /&gt;
|-&lt;br /&gt;
| Seymour at the Movies&lt;br /&gt;
|-&lt;br /&gt;
| Seymour Take One&lt;br /&gt;
|-&lt;br /&gt;
| Sharkey's Moll&lt;br /&gt;
|-&lt;br /&gt;
| Short's Fuse&lt;br /&gt;
|-&lt;br /&gt;
| Skate or Die&lt;br /&gt;
|-&lt;br /&gt;
| Slaine*&lt;br /&gt;
|-&lt;br /&gt;
| Slightly Magic&lt;br /&gt;
|-&lt;br /&gt;
| Smaily&lt;br /&gt;
|-&lt;br /&gt;
| Snoopy and Peanuts&lt;br /&gt;
|-&lt;br /&gt;
| Sootland&lt;br /&gt;
|-&lt;br /&gt;
| Sooty and Sweep&lt;br /&gt;
|-&lt;br /&gt;
| Spike in Transylvania&lt;br /&gt;
|-&lt;br /&gt;
| Spiky Harold&lt;br /&gt;
|-&lt;br /&gt;
| Spirits&lt;br /&gt;
|-&lt;br /&gt;
| Stainless Steel&lt;br /&gt;
|-&lt;br /&gt;
| Star Bowls&lt;br /&gt;
|-&lt;br /&gt;
| Steel Eagle&lt;br /&gt;
|-&lt;br /&gt;
| Steg&lt;br /&gt;
|-&lt;br /&gt;
| Stifflip &amp;amp; Co&lt;br /&gt;
|-&lt;br /&gt;
| Streaker&lt;br /&gt;
|-&lt;br /&gt;
| Street Gang Football&lt;br /&gt;
|-&lt;br /&gt;
| Street Sports Basketball&lt;br /&gt;
|-&lt;br /&gt;
| Strike Force Cobra&lt;br /&gt;
|-&lt;br /&gt;
| Stuntman Seymour&lt;br /&gt;
|-&lt;br /&gt;
| Subway Vigilante&lt;br /&gt;
|-&lt;br /&gt;
| Super Hang On&lt;br /&gt;
|-&lt;br /&gt;
| Super Trolley&lt;br /&gt;
|-&lt;br /&gt;
| Super Wonderboy in Monsterland&lt;br /&gt;
|-&lt;br /&gt;
| SWIV&lt;br /&gt;
|-&lt;br /&gt;
| Sword Slayer&lt;br /&gt;
|-&lt;br /&gt;
| The Fantastic Voyage&lt;br /&gt;
|-&lt;br /&gt;
| The Great Escape&lt;br /&gt;
|-&lt;br /&gt;
| The Official Father Christmas Game&lt;br /&gt;
|-&lt;br /&gt;
| The Prodigy&lt;br /&gt;
|-&lt;br /&gt;
| The Race against Time for Sport Aid&lt;br /&gt;
|-&lt;br /&gt;
| Thing!&lt;br /&gt;
|-&lt;br /&gt;
| Thingy and the Doodahs&lt;br /&gt;
|-&lt;br /&gt;
| Throne of Fire&lt;br /&gt;
|-&lt;br /&gt;
| Thunderbirds&lt;br /&gt;
|-&lt;br /&gt;
| Tiddy Drinks&lt;br /&gt;
|-&lt;br /&gt;
| Time Machine&lt;br /&gt;
|-&lt;br /&gt;
| Time Out&lt;br /&gt;
|-&lt;br /&gt;
| Toi Acid Game&lt;br /&gt;
|-&lt;br /&gt;
| Toobin&lt;br /&gt;
|-&lt;br /&gt;
| Tour De Force&lt;br /&gt;
|-&lt;br /&gt;
| Transmuter&lt;br /&gt;
|-&lt;br /&gt;
| Trashman&lt;br /&gt;
|-&lt;br /&gt;
| Turbo Kart Racer&lt;br /&gt;
|-&lt;br /&gt;
| Tusker&lt;br /&gt;
|-&lt;br /&gt;
| Typhoon&lt;br /&gt;
|-&lt;br /&gt;
| Vendetta&lt;br /&gt;
|-&lt;br /&gt;
| Wibstars&lt;br /&gt;
|-&lt;br /&gt;
| Wild West Seymour&lt;br /&gt;
|-&lt;br /&gt;
| World Championship Soccer&lt;br /&gt;
|-&lt;br /&gt;
| World Cup Challenge&lt;br /&gt;
|-&lt;br /&gt;
| Xmas Ludo&lt;br /&gt;
|-&lt;br /&gt;
| Xybots&lt;br /&gt;
|-&lt;br /&gt;
| Yabba Dabba Doo!&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Dk%27tronics_Lightpen&amp;diff=127420</id>
		<title>Dk'tronics Lightpen</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Dk%27tronics_Lightpen&amp;diff=127420"/>
				<updated>2026-05-28T08:18:02Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:dktronics light pen.jpg|right|thumb|250px|The dktronics lightpen - speccy version]]&lt;br /&gt;
[[Image:dktronics lightpen amstrad.jpg‎|right|thumb|250px|The Dk'tronics Lightpen for the CPC464]]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
A Lightpen by [[dk'tronics]].&lt;br /&gt;
&lt;br /&gt;
The lightpen was distributed with an art package. &lt;br /&gt;
&lt;br /&gt;
The dk'Tronics lightpen came in two versions.&lt;br /&gt;
&lt;br /&gt;
A version where the art package was put on an ROM located on the interface.&lt;br /&gt;
&lt;br /&gt;
A version where the art package had to be loaded from disc. &lt;br /&gt;
&lt;br /&gt;
The lightpen came in two different casings. One for the CPC464 and one for the CPC6128. The contents however were the same.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
The ROM version of the art package was started with the bar command |Lightpen. The art package used an on-screen menu system consisting of 5 menus and 3 sub menus which could be navigated using the lightpen. Each menu offered 3 - 5 large icons to choose the commands. The selected command displayed a square bracket around the icon.&lt;br /&gt;
&lt;br /&gt;
Menus&lt;br /&gt;
# Menu - Saving and loading files from disc or tape&lt;br /&gt;
# Menu - Clear screen / Calibrate Pen / Next Menu&lt;br /&gt;
# Menu - Draw / Fill / Set Colour / Set Pencil / Next Menu&lt;br /&gt;
# Menu - Rubber Band / Outline / Set Colour / Set Pencil / Next Menu&lt;br /&gt;
# Menu - Circle / Rectangle / Copy (Sub menu) / Text (Sub menu) / Scratch Pad (Sub menu)&lt;br /&gt;
&lt;br /&gt;
Sub Menus&lt;br /&gt;
* Copy Menu - Copy &amp;amp; Expand / Shrink&lt;br /&gt;
* Text Menu - Vertical Text / Horizontal Text / Set Colour&lt;br /&gt;
* Scratch Pad - Screen to Pad / Edit / Pad to Screen&lt;br /&gt;
&lt;br /&gt;
Rubber Band was a method of drawing curves and irregular shapes by defining points on the screen to be joined by a line.&lt;br /&gt;
The scratch pad was a simple copy/paste area which could be edited seperately.&lt;br /&gt;
&lt;br /&gt;
The handbook also gave instructions in both BASIC and assembly to use the lightpen within your own programs. A small routine to return the X and Y coordinates which worked in all screen modes:&lt;br /&gt;
&lt;br /&gt;
 10 out &amp;amp;1C00, 17 : L=inp(&amp;amp;1F00) : out &amp;amp;1C00, 16 : H=inp(&amp;amp;1F00)&lt;br /&gt;
 20 L=H*256+L-12292 : Y=L/40 : X=L-Y*40&lt;br /&gt;
&lt;br /&gt;
The value 12292 needed to be slightly adjusted to match the monitor being used. This could also be achieved in software by incorporating a simple manual calibration routine.&lt;br /&gt;
&lt;br /&gt;
== Technical ==&lt;br /&gt;
&lt;br /&gt;
Uses I/O ports: [[I/O_Port_Summary|#1C00]] and [[I/O_Port_Summary|#1F00]] (as shown in above BASIC example) (and as on page 1-26 and 1-27 of the original manual)&lt;br /&gt;
* #1C00 and #1F00 are bad decodings/mirrors of [[CRTC]] ports #BC00 and #BF00&lt;br /&gt;
* These ports will clash with other hardware (but do work more or less)&lt;br /&gt;
* A15=0 doesn't trigger the [[Gate Array]] (which would also require A14=1)&lt;br /&gt;
* A13=0 does trigger [[Upper ROM Bank Number]] (but the IN's don't cause problems since the ROM bank is write-only, the OUT's do activate bank 16 and 17, but usually don't cause problems since these banks usually contain mirrors of the BASIC ROM)&lt;br /&gt;
&lt;br /&gt;
The Lightpen uses the CRTC /LPEN input on the expansion port.&lt;br /&gt;
&lt;br /&gt;
== dk'Tronics lightpen artpackage screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;caption=&amp;quot;dk'Tronics artipackage&amp;quot;&amp;gt;&lt;br /&gt;
Image:Dktronics lightpen screenshot 1.png|&lt;br /&gt;
Image:Dktronics lightpen screenshot 2.png|&lt;br /&gt;
Image:Dktronics lightpen screenshot 3.png|&lt;br /&gt;
Image:Dktronics lightpen screenshot 4.png|&lt;br /&gt;
Image:Dktronics lightpen 1.jpg|The device for the CPC464&lt;br /&gt;
Image:Dktronics lightpen 2.jpg|The device for the CPC464&lt;br /&gt;
&amp;lt;/gallery&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;dk'tronics CPC6128 Lightpen interface&amp;quot;&amp;gt;&lt;br /&gt;
Image:Lightpen_Front.jpg|Front&lt;br /&gt;
Image:Lightpen_Back.jpg|Back&lt;br /&gt;
Image:Lightpen_Top.jpg|Top&lt;br /&gt;
Image:Lightpen_Side.jpg|Side&lt;br /&gt;
Image:Lightpen_Pen.jpg|Pen&lt;br /&gt;
Image:Lightpen_PCB_Top.jpg|PCB Top&lt;br /&gt;
Image:Lightpen_PCB_Bottom.jpg|PCB Bottom&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Manuals ==&lt;br /&gt;
&lt;br /&gt;
* [[Media:DKTronics_Lightpen_Manual.pdf|DK'Tronics Lightpen Manual]] (pdf) {{EN}}&lt;br /&gt;
* [[Media:DK'Tronics Peripheral - Technical Manual (Edition 1).pdf|DK'Tronics Peripheral - (Edition 1) Technical Manual]] (pdf) {{EN}}&lt;br /&gt;
* [[Media:DK'Tronics Graphics Lightpen (ROM Version) Manual.pdf|DK'Tronics Graphics Lightpen (ROM Version) Manual]] (pdf) {{EN}}&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
* [[Media:Dk'Tronics Graphics Lightpen (tape).zip|Dk'Tronics Graphics Lightpen (tape).zip]] (CDT for Emulators)&lt;br /&gt;
* [[Media:Dk'Tronics Lightpen Printer Routines (tape).zip|Dk'Tronics Lightpen Printer Routines (tape).zip]] (CDT for Emulators)&lt;br /&gt;
* [[File:DktronicsLightpenDisk.zip]] - for ROM-less version (original cassette driver on disc)&lt;br /&gt;
* [[Media:Dk'tronicsLightPenRomImage.zip|Dk'tronics Lightpen (rom).zip]] (ROM for Emulators)&lt;br /&gt;
&lt;br /&gt;
[[Category:Input Device]] [[Category:Peripherals]] [[Category:Manual]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Electric_Studio_Mouse&amp;diff=127404</id>
		<title>Electric Studio Mouse</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Electric_Studio_Mouse&amp;diff=127404"/>
				<updated>2026-05-16T03:02:01Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Electric Studio Mouse'' is an original opto-mechanical 3-button mouse, developed in 1985 by the Nidd Valley company in UK. The mouse was introduced for the BBC Micro family of Acorn Computers as &amp;quot;[https://upload.wikimedia.org/wikipedia/commons/0/0e/Nidd_Valley_Digimouse.jpg?utm_source=commons.wikimedia.org&amp;amp;utm_campaign=index&amp;amp;utm_content=original Nidd Valley Digimouse]&amp;quot; and later adapted for a number of other platforms. For the [[Amstrad CPC]], it was available as a version rebranded by Electric Studio.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:ElectricStudioMouse01scaled.jpg&lt;br /&gt;
&lt;br /&gt;
File:ElectricStudioMouse02scaled.jpg&lt;br /&gt;
&lt;br /&gt;
File:ElectricStudioMouse03scaled.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Review (German) ==&lt;br /&gt;
&lt;br /&gt;
From an article about the &amp;quot;Amstrad Consumer Show&amp;quot; in german magazine &amp;quot;Happy Computer 12/1986&amp;quot;: &lt;br /&gt;
&lt;br /&gt;
* Video-Digitizer ...... '''The Electric Studio'''. Zwei Versionen erlauben die Erfassung auf dem CPC 6128 (Model C6) oder dem Joyce (Model P8). Die so aufgezeichneten Bilder können problemlos entweder mit dem Light Pen oder mit der '''Maus vom gleichen Hersteller''' weiter bearbeitet werden. Als deutsche Händler fungieren Rushware und Profisoft.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Peripherals]] [[Category: Input Device]] [[Category:Hardware]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Laser_BASIC_Compiler&amp;diff=127401</id>
		<title>Laser BASIC Compiler</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Laser_BASIC_Compiler&amp;diff=127401"/>
				<updated>2026-05-10T11:41:17Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Laser Compiler''' from [[Ocean|Ocean IQ]].&lt;br /&gt;
&lt;br /&gt;
The Laser Compiler is a companion product to the [[Laser Basic]].&lt;br /&gt;
&lt;br /&gt;
But you don't need Laser Basic to use the compiler.&lt;br /&gt;
&lt;br /&gt;
Which also compiles the standard Amstrad BASIC with the exception of floating point and related commands.&lt;br /&gt;
&lt;br /&gt;
== Covers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Laser Compiler&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Image:Laser Compiler (tape) Back Cover.jpg|(tape)Back Cover&lt;br /&gt;
Image:Laser Compiler (tape) Front Cover.jpg|(tape) Front Cover.jpg&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tape ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Laser Compiler&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Image:Laser Compiler (tape) - side B.jpg|side B&lt;br /&gt;
Image:Laser Compiler (tape) - side A.jpg|side A&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Manual ==&lt;br /&gt;
&lt;br /&gt;
* [[Media:LaserCompiler.pdf|Laser Compiler (Ocean) Manual]] {{EN}} {{DE}} {{FR}} {{PDF}}&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* {{CPCPower|6477}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Applications]] [[Category:Programming software]] [[Category:BASIC]] [[Category:Manual]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Robot_PD&amp;diff=127400</id>
		<title>Robot PD</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Robot_PD&amp;diff=127400"/>
				<updated>2026-05-10T11:28:03Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:RobotPD_Logo.png|right]]&lt;br /&gt;
'''Robot PD''' was a long-running PD library run by [[ChaRleyTroniC|Richard Fairhurst]]. It was the third CPC PD library to be established in the United Kingdom, after [[WACCI]] and [[DW Software]].&lt;br /&gt;
&lt;br /&gt;
Robot started off with cassette-only software, but soon moved to disc operation. Among its features were a wide range of software ([[AMSDOS]]-based and [[CP/M]], UK and European), eventually numbering around 200 'sides' in total; many original programs, such as [[PowerPage]]; and sometimes appallingly slow delivery. Robot was often at the centre of the so-called 'PD wars', along with [[Scull PD]].&lt;br /&gt;
&lt;br /&gt;
Part of the revised (five-digit) Robot PD range can be downloaded from [https://www.cantrell.org.uk/mirrors/robot-pd/ David Cantrell's site].&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
= Robot Software Catalogue =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Catalogue Symbols ==&lt;br /&gt;
&lt;br /&gt;
* '''XC''': Ex-commercial software.&lt;br /&gt;
* '''*''': Robot Recommended – the very best software.&lt;br /&gt;
* '''128''': 128k memory required.&lt;br /&gt;
* '''18''': Not for children.&lt;br /&gt;
&lt;br /&gt;
== Text Files ==&lt;br /&gt;
&lt;br /&gt;
Discs usable on any Amstrad CPC or PCW.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Disc !! Title !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/6/67/Robot-PD_00001_%2819xx%29.zip 00001] || The Big Book Of Mischief || Anarchic text files detailing how to blow things up. || 18&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/f/f0/Robot-PD_03000_%2819xx%29.zip 03000] || Comms text files || || &lt;br /&gt;
|-&lt;br /&gt;
| 03001 || Comms text files || || &lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/8/83/Robot-PD_04000_%2819xx%29.zip 04000] || Programming tutorials || Learn how to program your computer in BASIC or machine code. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/d/d3/Robot-PD_04400_%2819xx%29.zip 04400] || CPC Guide || Kevin Thacker's excellent and comprehensive guide to the CPC's internals. || *&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/d/df/Robot-PD_04401_%2819xx%29.zip 04401] || CRTC Source Code Collection || Z80 source for programs like PowerSpell, BTL intros, and Pro-Ext, plus subroutines for your own use. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/3/38/Robot-PD_06100_%2819xx%29.zip 06100] || Tips for adventure games || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/5/5d/Robot-PD_06101_%2819xx%29.zip 06101] || Tips for adventure games || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/0/0a/Robot-PD_09100_%2819xx%29.zip 09100] || Nutworks || A comic look at computers from the early days of the Internet. ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== AMSDOS Software ==&lt;br /&gt;
&lt;br /&gt;
For Amstrad CPC and Plus computers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Disc !! Title !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/e/e8/Robot-PD_10000_%2819xx%29.zip 10000] || The Plus Disc || Make the most of your CPC Plus! Sampled sound demos, colour editors, art package, games, and more. Includes B-ASIC for 4096 colours and hardware sprites. || XC, 128, Plus only, *&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/5/5b/Robot-PD_10001_%2819xx%29.zip 10001] || Sean McManus Collection || Collected works from an AA Type-Ins regular, includes Easi-Sprite Driver, Further Adventures of Fred, and more. || *&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/a/a1/Robot-PD_10002_%2819xx%29.zip 10002] || Robot PD Catalogue || The 1992 double-sided disc catalogue with descriptions of many PD programs. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/3/3b/Robot-PD_10100_%2819xx%29.zip 10100] || Educational programs || Educational programs for all ages. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/0/08/Robot-PD_10200_%2819xx%29.zip 10200] || Artificial intelligence || AI programs, including several &amp;quot;Eliza&amp;quot; variants. Single-sided collection. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/e/e8/Robot-PD_10300_%2819xx%29.zip 10300] || Music by CRTC || Music by British coder CRTC (Richard Fairhurst). ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/4/4d/Robot-PD_10301_%2819xx%29.zip 10301] || Jean-Michel Jarre Collection || Jean-Michel Jarre music and Acid Music Box 2. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/6/63/Robot-PD_10302_%2819xx%29.zip 10302] || Music Pack 4 || Hacked tunes, plus Epsilon's Anthology. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/3/32/Robot-PD_10304_%2819xx%29.zip 10304] || Advanced Music System files || By Rob Baxter. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/6/65/Robot-PD_10305_%2819xx%29.zip 10305] || Advanced Music System files || By Rob Baxter. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/e/e2/Robot-PD_10306_%2819xx%29.zip 10306] || Advanced Music System files || By Rob Baxter. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/e/e4/Robot-PD_10307_%2819xx%29.zip 10307] || Advanced Music System files || By Rob Baxter. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/8/88/Robot-PD_10308_%2819xx%29.zip 10308] || Advanced Music System files || By Rob Baxter. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/2/26/Robot-PD_10310_%2819xx%29.zip 10310] || Soundhakker music || Hacked music with player program. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/f/f6/Robot-PD_10311_%2819xx%29.zip 10311] || Soundhakker music || Hacked music with player program. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/1/1f/Robot-PD_10314_%2819xx%29.zip 10314] || Soundtrakker music || For use with Soundtrakker (see disc 11001). ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/9/92/Robot-PD_10315_%2819xx%29.zip 10315] || Soundtrakker music || For use with Soundtrakker (see disc 11001). ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/a/ae/Robot-PD_11000_%2819xx%29.zip 11000] || Protracker || Music editor with real samples, imports MOD files from Amiga/PC. || 128&lt;br /&gt;
|-&lt;br /&gt;
| 11001 || Soundtrackers || Four music editors: Digitrakker, Advanced Music Creator, BooTracker, and Soundtrakker 128, with example files. || XC, 128, *&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/f/fd/Robot-PD_11100_%2819xx%29.zip 11100] || Word-processing || Domain Word, PowerSpell, I-Spell, and Citizen printers WP. || 128&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/5/5b/Robot-PD_11200_%2819xx%29.zip 11200] || Databases || || &lt;br /&gt;
|-&lt;br /&gt;
| 11300 || Spreadsheets || Includes PD Planner. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/6/63/Robot-PD_11400_%2819xx%29.zip 11400] || PowerPage 64 || Original version of CPC desktop publisher for editing A5 pages. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/5/5d/Robot-PD_11401_%2819xx%29.zip 11401] || PowerPage 128 || Advanced desktop publishing system, used by fanzines and groups. || 128, *&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/d/d4/Robot-PD_11402_%2819xx%29.zip 11402] || Pagemaker DTP || Alan Scully's simple DTP program. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/1/15/Robot-PD_11500_%2819xx%29.zip 11500] || The Artist || Art package GPaint, PC-CPC transfers, Smart II, and more. || *&lt;br /&gt;
|-&lt;br /&gt;
| 12000 || Hacking Disc || Game hacking utilities, tape-disc transfer programs. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/1/1e/Robot-PD_12002_%2819xx%29.zip 12002] || The Sentinel Collection || Two ex-commercial programs: TUSS and Pro-Ext for hackers and Protext enhancements. || XC, 128, *&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/1/1c/Robot-PD_12003_%2819xx%29.zip 12003] || Print Enhancer || Printer font replacement package. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/6/62/Robot-PD_12004_%2819xx%29.zip 12004] || Printer utilities || Screen dumps and more. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/9/9e/Robot-PD_12005_%2819xx%29.zip 12005] || Connectivity Disc || CPC/PC/Mac/Amiga file utilities, translators, FAQs. || Some 128&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/2/23/Robot-PD_12100_%2819xx%29.zip 12100] || International Collection || Disc utilities from all over Europe. Includes DMon and Crime. ||&lt;br /&gt;
|-&lt;br /&gt;
| 12200 || RSX-Lib || Programming utility from Smogware Systems. || XC&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/e/e5/Robot-PD_12201_%2819xx%29.zip 12201] || Demo creators || NWC Demomaker, Vorspann utility, Ghoul’s Writer. || *&lt;br /&gt;
|-&lt;br /&gt;
| 12202 || Toolkits || Extra commands for BASIC. ||&lt;br /&gt;
|-&lt;br /&gt;
| 12300 || File crunchers || Disc space savers: Cheese, Columbia, SQ23, Turbo Imploder. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/8/86/Robot-PD_12400_%2819xx%29.zip 12400] || Unix-like OS || ||&lt;br /&gt;
|-&lt;br /&gt;
| 12401 || Front-ends || Desk, Worktop, DES; graphical front-ends for CPC. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/0/00/Robot-PD_13100_%2819xx%29.zip 13100] || Terminal programs || ANSI-Term and more for modem users. || *&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/2/28/Robot-PD_14400_%2819xx%29.zip 14400] || Z80 Pack || Assemblers, monitors, disassemblers. Includes LARA monitor. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/9/99/Robot-PD_16000_%2819xx%29.zip 16000] || Alan Scully Collection || Adventure/arcade games, history of Scull PD. ||&lt;br /&gt;
|-&lt;br /&gt;
| 16001 || POKEs and cheats || For commercial games. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/c/c5/Robot-PD_16100_%2819xx%29.zip 16100] || Eve of Shadows, Lost Phirious || Adventure games by Rob Buckley and Neil Scrimgeour. || XC, *&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/e/ef/Robot-PD_16101_%2819xx%29.zip 16101] || Simon Avery Collection || Quilled text adventures. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/e/e7/Robot-PD_16103_%2819xx%29.zip 16103] || Edmund Spicer Collection || Adventures. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/4/4a/Robot-PD_16104_%2819xx%29.zip 16104] || Geno, Secrets of Ur, Blue Raider || Adventure games. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/7/71/Robot-PD_16105_%2819xx%29.zip 16105] || Hitch-Hiker's Guide to Prague || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/0/04/Robot-PD_16106_%2819xx%29.zip 16106] || Hitch-Hiker's Guide to London || Humorous text adventures. Both discs required for London. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/0/01/Robot-PD_16200_%2819xx%29.zip 16200] || Puzzle games || Mindbenders from MOPS group. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/5/5a/Robot-PD_16201_%2819xx%29.zip 16201] || Crossword Compiler || Crossword utility and word games. || 128&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/a/a6/Robot-PD_16202_%2819xx%29.zip 16202] || Tetris Games || Tetris clones and related games. || *&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/a/aa/Robot-PD_16203_%2819xx%29.zip 16203] || Last Of The Smileys || Arcade puzzle, Cool World, and French games. || *&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/9/99/Robot-PD_16300_%2819xx%29.zip 16300] || Arcade demos || Zap't'Balls, Xyphoes Phantasy demos. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/c/c2/Robot-PD_16301_%2819xx%29.zip 16301] || The Radical Collection v1 || Fluff (6128 Plus only), Ball Bearing, Masters of Space demo. || XC, *&lt;br /&gt;
|-&lt;br /&gt;
| 16302 || Arcade classics || Invaders, Croco Magneto, Dripzone, Cyberboy. || *&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/c/c8/Robot-PD_16303_%2819xx%29.zip 16303] || The Vortex Collection || Vortex Software games: HATE, Deflektor, plus others. || XC, 128, *&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/f/f2/Robot-PD_16304_%2819xx%29.zip 16304] || Incentive Demos || Total Eclipse, Megablasters, Space Froggy, Wipeout. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/5/57/Robot-PD_16307_%2819xx%29.zip 16307] || Street Warriors || Street Fighter clone by Marcus Kasumba. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/d/d3/Robot-PD_16308_%2819xx%29.zip 16308] || The Radical Collection v2 || Star Driver and Masters of Space by Radical Software. || XC, *&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/5/5f/Robot-PD_17000_%2819xx%29.zip 17000] || An introduction to overscan graphics (full screen, no border). || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/9/93/Robot-PD_17100_%2819xx%29.zip 17100*] || Amiga Graphics || David Carter's famous compilation of pictures transferred from the Amiga. A slideshow of simply stunning quality. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/c/c0/Robot-PD_17101_%2819xx%29.zip 17101*] || Amiga Graphics 2 || Volume two of the classic slideshow. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/6/62/Robot-PD_17102_%2819xx%29.zip 17102] || Digital Demo 7 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/8/82/Robot-PD_17103_%2819xx%29.zip 17103] || Peter Campbell Collection || Showcasing the bizarre sense of humour of the Comsoft boss and self-proclaimed babe magnet. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/7/75/Robot-PD_17104_%2819xx%29.zip 17104] || Rock Show || Pictures of '80s rock stars, digitised by Nullos Cracker. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/c/ca/Robot-PD_17105_%2819xx%29.zip 17105] || David Carter's Turtlemuck slideshow || The Teenage Mutant Hero Turtles as you've never seen them before, and scenes from Gone With The Wind. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/b/b3/Robot-PD_17106_%2819xx%29.zip 17106] || Miscellaneous slideshows (or 'Diashows') from Germany. || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/1/14/Robot-PD_17107_%2819xx%29.zip 17107] || Pictures produced by members of the British CPC club WACCI. || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/b/b1/Robot-PD_17108_%2819xx%29.zip 17108] || More WACCI pictures. || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/b/be/Robot-PD_17109_%2819xx%29.zip 17109] || A high-quality slideshow of overscan (full screen) pictures. || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/3/33/Robot-PD_17110_%2819xx%29.zip 17110] || Stills from the Victor and Hugo cartoon and from the Schwarzenegger film Terminator II. || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/f/f8/Robot-PD_17111_%2819xx%29.zip 17111*] || Beautiful hand-drawn overscan pictures by MaDe of Rebels || Regularly voted &amp;quot;best artist&amp;quot; in European fanzines' readers' polls, plus subtly drawn MODE 1 artwork which was used to demonstrate the CPC in its early days! ||&lt;br /&gt;
|-&lt;br /&gt;
| 17112 || Conspiracy Plus Slideshow || Digitised pictures in 16 shades of grey, for viewing on CPC Plus machines. || Plus only&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/b/b2/Robot-PD_17114_%2819xx%29.zip 17114] || Digitised and hand-drawn pictures by David Carter. || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/c/cd/Robot-PD_17115_%2819xx%29.zip 17115] || Digitised and hand-drawn pictures by David Carter and Mark Chater. || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/f/f2/Robot-PD_17200_%2819xx%29.zip 17200] || Clip art in .CUT format for Stop Press or PowerPage. || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/1/11/Robot-PD_17201_%2819xx%29.zip 17201] || Clip art in .CUT format for Stop Press or PowerPage. || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/d/de/Robot-PD_17202_%2819xx%29.zip 17202] || Clip art in .CUT format for Stop Press or PowerPage. || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/2/28/Robot-PD_17203_%2819xx%29.zip 17203] || Clip art in .CUT format for Stop Press or PowerPage. || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/1/1f/Robot-PD_17204_%2819xx%29.zip 17204] || Clip art in .CUT format for Stop Press or PowerPage. || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/c/c3/Robot-PD_17205_%2819xx%29.zip 17205] || Clip art in .CUT format for Stop Press or PowerPage. || Includes a themed set of transport pictures. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/7/7d/Robot-PD_17206_%2819xx%29.zip 17206] || PowerPage clip art from the CPC SouthWest user group. || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/7/79/Robot-PD_17207_%2819xx%29.zip 17207] || Clip art for Stop Press and MicroDesign. || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/b/b2/Robot-PD_17208_%2819xx%29.zip 17208] || Clip art in .CUT format for Stop Press or PowerPage. || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/2/29/Robot-PD_17209_%2819xx%29.zip 17209] || Clip art in .CUT format for Stop Press or PowerPage. || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/0/06/Robot-PD_17210_%2819xx%29.zip 17210] || Clip art in .CUT format for Stop Press or PowerPage. || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/b/b8/Robot-PD_17211_%2819xx%29.zip 17211] || Clip art in .CUT format for Stop Press or PowerPage. || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/7/7f/Robot-PD_17212_%2819xx%29.zip 17212] || Clip art in .CUT format for Stop Press or PowerPage. || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/7/7c/Robot-PD_17213_%2819xx%29.zip 17213] || Clip art in .CUT format for Stop Press or PowerPage. || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/a/aa/Robot-PD_17300_%2819xx%29.zip 17300] || Femmes Entre Elles and Lovepack || Two explicit slideshows for over-18s only. || 18&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/a/af/Robot-PD_17301_%2819xx%29.zip 17301] || Electric Show and Nice Picture Show II || Two more collections of explicit pictures (green-screen only). || 18&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/7/74/Robot-PD_17401_%2819xx%29.zip 17401] || Graphical Demos || Short graphical demos, including a well-drawn collection of flags by Stuart Gascoigne and Andre Coutanche. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/c/c4/Robot-PD_17500_%2819xx%29.zip 17500*] || Font Pack || A superbly varied pack of fonts, in PowerPage, MicroDesign, Advanced Art Studio, and 8x8 screen formats. Whether you're laying out a fanzine or coding a scrolltext, there's sure to be a font for you here. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/7/7d/Robot-PD_18100_%2819xx%29.zip 18100] || Simple demos by LDC || aka David Long of Demon PD. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/f/f1/Robot-PD_18101_%2819xx%29.zip 18101] || British demos. || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/8/8f/Robot-PD_18102_%2819xx%29.zip 18102] || CRTC Collection || Demos by CRTC (Richard Fairhurst), including 1992's Inspiration demo and the MacBugs meeting demo. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/3/3b/Robot-PD_18103_%2819xx%29.zip 18103] || British demos. || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/3/32/Robot-PD_18104_%2819xx%29.zip 18104] || Demoware || Excruciating demo by the Bitmap Vandals, plus previews of the follow-up, recently unearthed by Matthew Breckon. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/0/0c/Robot-PD_18105_%2819xx%29.zip 18105*] || British Demos Collection || Four excellent British demos: Wulf 3 (with truly beautiful graphics), Conspiracy TV, Atlantic Coding's Chill, and Frequency's Soundtrakker demo. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/1/19/Robot-PD_18106_%2819xx%29.zip 18106] || Martin Young's 4-bit samples and Blip! || Impressive 4-bit samples, and Palm Coding's superlative Blip! Music compilation. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/1/1d/Robot-PD_18108_%2819xx%29.zip 18108*] || Audio Illusions || A huge collection of music penned by Frequency of Systeme D, complete with interesting graphic effects and quality pictures by the Doodler. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/7/78/Robot-PD_18200_%2819xx%29.zip 18200] || Terrific Demo || A classic megademo by Weee! and Thriller (Cadjo Clan), with some of the best music around. || 128&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/0/00/Robot-PD_18201_%2819xx%29.zip 18201*] || The Demo || As definitive as the title suggests, this is Logon System's meisterwerk. Seven parts forming the best examples of demo coding you'll ever find, and a revolution on its release in 1992. If you only ever see one demo, make sure it's this one. || 128&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/8/83/Robot-PD_18202_%2819xx%29.zip 18202] || Logon System Collection 1 || Early demos by the founders of CPC demo coding, including the Malibu/Logon collaboration, Amazing Demo. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/9/98/Robot-PD_18203_%2819xx%29.zip 18203*] || Logon System Collection 2 || The final releases by Logon System, including Overflow's breath-taking third demo, F--ing Exams, and the Euromeeting Demo. || 128&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/d/dc/Robot-PD_18204_%2819xx%29.zip 18204] || Paradise Demo || An accomplished, if predictable, megademo from Paradox. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/e/e6/Robot-PD_18205_%2819xx%29.zip 18205] || French Classics 1 || A selection of the best releases from the heyday of French demo coding. Includes work by Fefesse and the Malibu Crackers. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/2/26/Robot-PD_18206_%2819xx%29.zip 18206] || French Classics 2 || More examples of Gallic genius, including Malibu's head-spinning farewell, the Intox demo. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/2/23/Robot-PD_18207_%2819xx%29.zip 18207] || Continental Classics || A snapshot of the demo scene in Germany and elsewhere, c. 1990. Best of all is KKB's imaginative First Demo. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/9/94/Robot-PD_18212_%2819xx%29.zip 18212] || Voyage 1993 || Formulaic megademo by Prodatron and Alien of BENG!. || 128&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/b/b6/Robot-PD_18213_%2819xx%29.zip 18213] || Prodatron Megademo || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/2/2b/Robot-PD_18214_%2819xx%29.zip 18214] || NWC Collection || The innovative work of Danish demo coder Peter Sorensen, whose most recent release is entitled Unique (18218). ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/8/8e/Robot-PD_18215_%2819xx%29.zip 18215*] || Ultimate Megademo || Thought by many to rival The Demo, Face Hugger's imaginative demo introduced a new talent to the CPC coding world and started a craze for 3D effects. Also includes Elmar Krieger's spectacular Chain Demo. || 128&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/8/81/Robot-PD_18216_%2819xx%29.zip 18216*] || Divine Megademo disc 1 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/f/fc/Robot-PD_18217_%2819xx%29.zip 18217*] || Divine Megademo disc 2 || The enormous new demo by three of Europe's premier coding talents - Antoine Pitrou, Mage, and Odiesoft. Not as slick as you might hope, but contains some of the best CPC coding ever. Both discs needed. || 128&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/e/e4/Robot-PD_18218_%2819xx%29.zip 18218] || Unique || The long-awaited megademo by NWC of Unix, with new effects including an enormous sine scroll and starfield loader. || 128&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/a/a1/Robot-PD_18300_%2819xx%29.zip 18300] || Pleasure Zone || A slideshow of sexually explicit animations. || 18&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/e/ed/Robot-PD_18303_%2819xx%29.zip 18303] || Germaine, Fire Engine, and more || More animations of a dubious nature, including the infamous Germaine demos and the Fire Engine animation. || 18&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/a/a9/Robot-PD_18400_%2819xx%29.zip 18400] || Miscellaneous Animations || Animations of bouncing balls, violin players, Dr Spock, and many more. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/7/71/Robot-PD_18401_%2819xx%29.zip 18401] || Vector Animations by David Carter || Vector animations produced by David Carter with Discovery's Animator package. Very smooth. || 128&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/0/00/Robot-PD_19100_%2819xx%29.zip 19100] || S.E.X. 1 || English-language fanzine from Greece. || 18&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/5/5c/Robot-PD_19101_%2819xx%29.zip 19101] || C.E.F. 4/Fanzam 5 || Unpretentious and little-known British disc fanzine. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/8/89/Robot-PD_19102_%2819xx%29.zip 19102] || Donut Mag 1, Otto 1 || The first issues of Tom Dean's lively disczine and Nicholas Campbell's more po-faced production. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/d/de/Robot-PD_19103_%2819xx%29.zip 19103] || S.E.X. 2 || The latest issue of the Greek fanzine. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/e/e9/Robot-PD_19104_%2819xx%29.zip 19104] || Amstrad User 6 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/0/06/Robot-PD_19105_%2819xx%29.zip 19105] || Amstrad User 7 || Fanzine from Ireland. || 128&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/4/41/Robot-PD_19106_%2819xx%29.zip 19106] || Donut Mag 2 || Controversial but very enjoyable second issue of the Donut System fanzine. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/8/88/Robot-PD_19107_%2819xx%29.zip 19107] || Otto 4 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/5/58/Robot-PD_19108_%2819xx%29.zip 19108] || Otto 3 || Nicholas Campbell's fanzine, now incorporating Jonty Jones's After Dark. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/b/bb/Robot-PD_19109_%2819xx%29.zip 19109] || Ovation 2, CPC Telegramm 17 || Worthy but dull Greek fanzine coupled with the latest issue of Germany's excellent dual-language newszine. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/1/10/Robot-PD_19110_%2819xx%29.zip 19110] || Otto 5 || The final issue. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/8/8e/Robot-PD_19111_%2819xx%29.zip 19111*] || BTL 1 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/b/b8/Robot-PD_19112_%2819xx%29.zip 19112*] || BTL 2 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/9/9d/Robot-PD_19113_%2819xx%29.zip 19113*] || BTL 3 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/7/79/Robot-PD_19114_%2819xx%29.zip 19114*] || BTL 4 || The inimitable British disc fanzine, produced by leading lights of the STS and Systeme D groups, and with more libel than you would have thought could be packed into one 360k disc. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/0/09/Robot-PD_19121_%2819xx%29.zip 19121] || EuroWACCI 1 || A selection of classic articles from the WACCI paperzine in a freely distributable form for the European market. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/5/57/Robot-PD_19122_%2819xx%29.zip 19122] || EuroWACCI 2 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/c/cc/Robot-PD_19125_%2819xx%29.zip 19125] || ATM 1 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/e/ea/Robot-PD_19126_%2819xx%29.zip 19126] || ATM 2 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/d/d1/Robot-PD_19127_%2819xx%29.zip 19127*] || ATM 3 || Amstrad Technical Mag: an intriguing mixture of gossip and hardware tips from Roy Everett and Nigel Callcutt. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/4/44/Robot-PD_19128_%2819xx%29.zip 19128*] || Digital Press 3 disc 1 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/3/3a/Robot-PD_19129_%2819xx%29.zip 19129*] || Digital Press 3 disc 2 || Informative and expansive French-German co-production. || 128&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/d/d7/Robot-PD_19130_%2819xx%29.zip 19130] || Impact 3, Otto 2 || Fanzines by Tom Dean and Nicholas Campbell. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/6/6a/Robot-PD_19131_%2819xx%29.zip 19131] || Another World 1 &amp;amp; 2 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/3/30/Robot-PD_19132_%2819xx%29.zip 19132] || Another World 3 &amp;amp; 4 || Richard Avery's simple disc fanzine. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/8/8e/Robot-PD_19133_%2819xx%29.zip 19133] || Another World 3 &amp;amp; 4 || Richard Avery's simple disc fanzine. ||&lt;br /&gt;
|-&lt;br /&gt;
| 19200 || Disc Full 5 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/d/d9/Robot-PD_19201_%2819xx%29.zip 19201] || Disc Full 6 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/d/d7/Robot-PD_19202_%2819xx%29.zip 19202] || Disc Full 7 || Beautifully produced French-language disczine. Compatible with 6128 only. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/1/15/Robot-PD_19203_%2819xx%29.zip 19203] || Ams'Dem 1 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/8/87/Robot-PD_19204_%2819xx%29.zip 19204] || Ams'Dem 3 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/1/17/Robot-PD_19205_%2819xx%29.zip 19205] || Z80 4 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 19206 || Micro-Mag 5 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/0/02/Robot-PD_19207_%2819xx%29.zip 19207] || The Addams Fanz 1 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/a/ab/Robot-PD_19208_%2819xx%29.zip 19208] || Disc Full 8 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/a/ad/Robot-PD_19209_%2819xx%29.zip 19209] || Crack'n'Rom 7 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/f/fa/Robot-PD_19210_%2819xx%29.zip 19210] || Micro-Mag/Press Fire 7 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/a/a5/Robot-PD_19211_%2819xx%29.zip 19211] || Disc Full 10 || French-language disczines. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/a/af/Robot-PD_19212_%2819xx%29.zip 19212] || Dracula Fanz 4 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/3/33/Robot-PD_19213_%2819xx%29.zip 19213] || Demoniak 4 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/1/17/Robot-PD_19214_%2819xx%29.zip 19214] || Dracula Fanz 5 disc 1 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/b/b8/Robot-PD_19215_%2819xx%29.zip 19215] || Dracula Fanz 5 disc 2 || Some of the latest French-language disczines, with presentation more akin to that of a demo. A visual feast even for those who don't speak the language. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/1/1b/Robot-PD_19300_%2819xx%29.zip 19300] || Amsmail 1 || A vintage German-language disczine. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/b/b3/Robot-PD_19301_%2819xx%29.zip 19301] || CPC Fastloader 4, Bad Mag 1 || An issue of Prodatron's German-language fanzine plus the debut of notorious bilingual fanzine Bad Mag. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/9/97/Robot-PD_19302_%2819xx%29.zip 19302] || CPC Fastloader 6 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/c/c7/Robot-PD_19303_%2819xx%29.zip 19303] || Xtreme 1 || The final issue of Prodatron's original disczine and the first fruit of his collaboration with Hypnomega. Mostly German-language. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/5/54/Robot-PD_19304_%2819xx%29.zip 19304] || CPC Challenge 12 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/5/54/Robot-PD_19305_%2819xx%29.zip 19305] || Bad Mag 2 || The second and final issue of the virulent Bad Mag. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/d/d1/Robot-PD_19306_%2819xx%29.zip 19306*] || Xtreme 2 || Probably the best of the &amp;quot;big name&amp;quot; fanzines, with flawless presentation and well-informed (bilingual) content. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/1/19/Robot-PD_19307_%2819xx%29.zip 19307] || Xtreme 3, CPC Challenge 17 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/5/5c/Robot-PD_19309_%2819xx%29.zip 19309] || Disc Mac Challenge 19/20 || Hypnomega's popular document of German scene culture. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/5/58/Robot-PD_19310_%2819xx%29.zip 19310] || Tribal Mag 7 disc 1 || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/6/6f/Robot-PD_19311_%2819xx%29.zip 19311] || Tribal Mag 7 disc 2, Disc Mac Challenge 21 || The most recent issue of Juggler's mammoth German/English fanzine: varied and interesting content. Also the latest CPC Challenge. ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CP/M Software ==&lt;br /&gt;
&lt;br /&gt;
These discs are compatible with both Amstrad CPCs and PCWs. CP/M 2.2 (as supplied with 64k CPCs) may not be capable of running certain programs: a few are CPC-only or, rarely, CP/M 2.2-only.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Disc !! Title/Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/f/f4/Robot-PD_21100_%2819xx%29.zip 21100*] || VDE – The commercial quality word-processor (file length up to 60k) in both its original and revised &amp;quot;ZDE&amp;quot; forms, plus a PD spell-checker. || *&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/d/dd/Robot-PD_21101_%2819xx%29.zip 21101] || Express Writer and Bradford – two word-processors with high quality printout options. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/1/1d/Robot-PD_21400_%2819xx%29.zip 21400*] || Printmaster – Ingenious poster and card design package, with an integral font and clip art library. Easy to use and capable of superb results. || *&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/3/31/Robot-PD_21600_%2819xx%29.zip 21600] || GigaCAD – Graphical CAD system from Germany. || CP/M 2.2 only&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/a/ac/Robot-PD_22000_%2819xx%29.zip 22000] || Miscellaneous utilities including date-stamping, print processing, and easy menu creation. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/0/0e/Robot-PD_22100_%2819xx%29.zip 22100*] || Filesweep utilities – A set of intuitive file utilities, including the classic Newsweep (NSWP) and enhancements such as Maxisweep. If you can use ParaDOS, you can use these. || *&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/b/b7/Robot-PD_22101_%2819xx%29.zip 22101] || Sector editors and extended format utilities, including PC and PCW disc readers. || Not PCW&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/9/9c/Robot-PD_22300_%2819xx%29.zip 22300] || File crunchers, providing a highly space-effective way of archiving your spare files. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/3/3f/Robot-PD_22301_%2819xx%29.zip 22301] || File crunchers. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/0/02/Robot-PD_22400_%2819xx%29.zip 22400] || Two front-ends: the excellent GUI of Geno (CP/M 2.2 only) and the Unix-like command line of SUnix. ||&lt;br /&gt;
|-&lt;br /&gt;
| 23100 || Comms terminal MEX, with several pre-defined system configurations. ||&lt;br /&gt;
|-&lt;br /&gt;
| 23101* || ZMP – the only CPC/PCW terminal to support the efficient ZModem file transfer protocol, plus the customisable QTerm terminal program. || *&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/6/6d/Robot-PD_23102_%2819xx%29.zip 23102] || The SmartModem terminal and CRR (CP/M Read and Reply off-line reader). ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/1/18/Robot-PD_23103_%2819xx%29.zip 23103] || Kermit and UUCP file transfer, plus the CPC-Modem terminal program. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/d/d1/Robot-PD_23205_%2819xx%29.zip 23205] || XRAS bulletin-board system. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/5/59/Robot-PD_24100_%2819xx%29.zip 24100*] || ZBASIC and MBASIC – Two alternative versions of BASIC. ZBASIC is a cut-down version of a fast commercial BASIC compiler, while Microsoft's classic MBASIC is the program with which the manufacturers of Windows first made their name. || *&lt;br /&gt;
|-&lt;br /&gt;
| 24200 || XLisp ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/b/b1/Robot-PD_24201_%2819xx%29.zip 24201] || Prolog, Forth, Lisp ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/d/d9/Robot-PD_24300_%2819xx%29.zip 24300] || JRT Pascal disc 1 ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/8/8b/Robot-PD_24301_%2819xx%29.zip 24301] || JRT Pascal disc 2 – An interpreted version of the language with extensive documentation. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/f/fb/Robot-PD_24302_%2819xx%29.zip 24302] || Small C ||&lt;br /&gt;
|-&lt;br /&gt;
| 24303 || Small C source – Interprets a subset of the system programming language. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/3/3b/Robot-PD_24400_%2819xx%29.zip 24400] || Z80dis – Flexible Z80 disassembler. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/1/1a/Robot-PD_24401_%2819xx%29.zip 24401*] || Dazzlestar – Arguably the most fully-featured disassembler available for Z80 systems, plus powerful assembler ZSM. || *&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/4/48/Robot-PD_26100_%2819xx%29.zip 26100*] || The original adventure game (later dubbed &amp;quot;Classic Adventure&amp;quot;), a puzzler of renowned intensity, plus more recent adventures by Amstrad programmers. || *&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/9/93/Robot-PD_26101_%2819xx%29.zip 26101] || A selection of adventures including Ken Bond's famously tricky Base and Island. ||&lt;br /&gt;
|-&lt;br /&gt;
| 26300 || Arcade games including Tetris clone Quatris, Pacman, Tornado, and Maze Chase. || Some not CP/M 2.2: Tornado CP/M 2.2 only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ROM Software ==&lt;br /&gt;
&lt;br /&gt;
16k ROMs for any standard CPC or Plus ROM-board.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Disc !! Title !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 90000 || Auntie John's ROM || Invaders, Pacman, extra commands for programmers/printers. || *&lt;br /&gt;
|-&lt;br /&gt;
| 92000 || Hacker's BASIC || Hacking suite in ROM format by David Wild. ||&lt;br /&gt;
|-&lt;br /&gt;
| 92001 || Amstradxtra || Extra commands for programmers, by Dave Gorski. ||&lt;br /&gt;
|-&lt;br /&gt;
| 92002 || ANSI Terminal &amp;amp; PC Disc Tools || ANSI terminal emulator and PC disc tools by Paul Martin. ||&lt;br /&gt;
|-&lt;br /&gt;
| [[S-DOS 2|92100]] || S-DOS 2 || Large-format DOS with many features; basis for ParaDOS. || XC, *&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/7/71/Robot-PD_92101_%2819xx%29%28Robot-PD%29%28Disk_1_of_1%29.zip 92101] || AMSDOC || Patched AMSDOS with sub-directory support. ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.cpcwiki.eu/imgs/2/20/Robot-PD_92102_%2819xx%29%28Robot-PD%29%28Disk_1_of_1%29.zip 92102] || MS800 || ROM version of 800k DOS. || XC, 6128 only&lt;br /&gt;
|-&lt;br /&gt;
| 93100 || Charley's Comms ROM || Advanced comms system with YModem support and RSXs. || XC, *&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* Some entries are abbreviated here for clarity; see the full catalogue for a comprehensive listing.&lt;br /&gt;
* For over-18 material (noted as &amp;quot;18&amp;quot;), please order by cheque.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Category:PD Library]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Speccy_Port&amp;diff=127399</id>
		<title>Speccy Port</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Speccy_Port&amp;diff=127399"/>
				<updated>2026-05-10T11:19:14Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: /* Arcade hits */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[Image:Vs.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
A '''Speccy Port''' or '''Spectrum port''' is the name given to a game which has been converted directly from the Sinclair Spectrum with little or no changes to the Amstrad CPC. &lt;br /&gt;
&lt;br /&gt;
Mostly the Amstrad version ended up fairing worse than the original Spectrum version with the following results:&lt;br /&gt;
* Less colours&lt;br /&gt;
* Slower gameplay&lt;br /&gt;
&lt;br /&gt;
These facts are not true for all &amp;quot;Spectrum Ports&amp;quot; because some ended up decent.&lt;br /&gt;
&lt;br /&gt;
There is anger from Amstrad users in general, because they feel that if more time had had been taken on the Amstrad version, we could have had a version that used the abilities of the Amstrad better, looked better, perhaps sounded better, and played as well or better than the Spectrum version.&lt;br /&gt;
&lt;br /&gt;
On a more positive tone, those speccy ports had the merit to exist, or else Amstrad would have a smaller games catalogue.&lt;br /&gt;
&lt;br /&gt;
It is worth noting that Spectrum ports also existed on [[MSX]], [[Enterprise]] 64/128, [[SAM Coupé]] and non-[[Z80]] [[Thomson]] MO/TO, [[Commodore 64|C64]].&lt;br /&gt;
&lt;br /&gt;
==List of Spectrum Ports==&lt;br /&gt;
[[List of Speccy Ports]]&lt;br /&gt;
&lt;br /&gt;
==How these should have looked==&lt;br /&gt;
&lt;br /&gt;
This section shows games which were made specifically for the Amstrad's abilities or Spectrum ports that were done correctly.&lt;br /&gt;
&lt;br /&gt;
Here are some examples of Amstrad games done well, and how these games could have looked if more care was taken.&lt;br /&gt;
&lt;br /&gt;
The following list shows how a game can be done right using the cpc capabilities. These do not necessarily share any Spectrum code, and are not necessarily recoloured from the Spectrum:&lt;br /&gt;
&lt;br /&gt;
* Renegade&lt;br /&gt;
* Gryzor&lt;br /&gt;
* Xyphoes Fantasy&lt;br /&gt;
* [[Head Over Heels]]&lt;br /&gt;
* Atic Atac&lt;br /&gt;
&lt;br /&gt;
Some CPC games share similarities with the Spectrum version, and probably share a lot of code, yet are in mode 0 (16 colours, lowest resolution). [[Ocean]] made a lot lilke and thanks to a more professional graphic treatment (compared to many other British companies) and actually good porting tactics this produced some of the finest CPC games.&lt;br /&gt;
&lt;br /&gt;
Those games are examples:&lt;br /&gt;
&lt;br /&gt;
*'''Robocop'''&lt;br /&gt;
*'''Chase HQ'''&lt;br /&gt;
&lt;br /&gt;
Some of the games in the list below use mode 1 but fully supported the 2bpp re-coding of graphics done right (by a human, not by an automatic method) and hence got properly coloured backgrounds and sprites.&lt;br /&gt;
&lt;br /&gt;
*'''Shadow of the Beast'''&lt;br /&gt;
*'''Midnight Resistance'''&lt;br /&gt;
*'''Wec le Mans'''&lt;br /&gt;
&lt;br /&gt;
=Reasons for a Spectrum Port=&lt;br /&gt;
&lt;br /&gt;
The [[ZX Spectrum]] shared similar hardware with the Amstrad CPC (see Machine comparisons).&lt;br /&gt;
&lt;br /&gt;
The Spectrum was very popular and with the CPC having a much smaller market share, it made sense to develop the Spectrum version first and to save on time and money, the Spectrum code, music and graphics were re-used.   (A typical port to the Amstrad is said to have been done in 3 days so was financially good).&lt;br /&gt;
&lt;br /&gt;
This phenomenon was more prominent in the UK, where the Speccy was the dominant machine. In other markets, such as France or Spain, where the CPC was very popular, games were coded from scratch for the CPC, often using an [[Atari|Atari ST]] for  [[Games Crossdev|Cross Development]]&lt;br /&gt;
&lt;br /&gt;
= Machine comparisons =&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*The Spectrum 48K was released in the UK in 1982 and was the successor of the ZX80/ZX81 with upgraded graphics and config (RAM/ROM). The Amstrad CPC464 was released in the UK in 1984 and was a Z80 based computer with AY sound and a simplified yet upgraded custom IBM PC CGA display for Video.&lt;br /&gt;
&lt;br /&gt;
*Spectrum 48K sold for £99. The CPC464 with Green Screen monitor sold for £299 and with colour monitor for £399. One selling point was that the Amstrad needed only 1 plug, and that you didn't need to use the family television to use it. Also the Spectrum 48k wasn't supplied with any monitor nor storage device. &lt;br /&gt;
&lt;br /&gt;
* The Spectrum was designed to be used with a television, the Amstrad was designed to be used with and was sold with either a green screen or colour monitor. &lt;br /&gt;
&lt;br /&gt;
* Amstrad's monitors include the powersupply for the Amstrad CPC. A &amp;quot;TV connection + power supply&amp;quot; solution was also available : [[Amstrad MP1/MP2 modulator]]&lt;br /&gt;
&lt;br /&gt;
* The Spectrum was sold as a games machine, the Amstrad was sold more as a multi purpose machine (in the UK anyway).&lt;br /&gt;
&lt;br /&gt;
* The Amstrad's BASIC and firmware are said to be better than the Spectrum's BASIC and OS functions.&lt;br /&gt;
&lt;br /&gt;
====CPU, RAM and basic Hardware====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Spectrum 48K machine has 48K RAM, approx 6.5k of this is screen. The Amstrad CPC464 and 664 have 64K ram, approx 16K of this is screen.&lt;br /&gt;
&lt;br /&gt;
*Latter Spectrum were supplied with 128K RAM (Spectrum 128, +2 and +3) and Amstrad CPC6128 was supplied with 128K RAM too (same amount of RAM used by Video as earlier machines)&lt;br /&gt;
&lt;br /&gt;
*Spectrum and Amstrad both have a Z80 CPU.&lt;br /&gt;
&lt;br /&gt;
* The CPU runs at a similar speed (3.5Mhz in Spectrum, 4Mhz in Amstrad) (Note, both systems do not run at optimum speed due to waits inserted by the video hardware).&lt;br /&gt;
&lt;br /&gt;
*The Spectrum 48k can't do double buffering in hardware (the later 128K machines can), the Amstrad could from the start. On the Amstrad and Spectrum 128K you can use hardware double buffering, but then you need to sacrific twice as much video ram (e.g. For Amstrad: 2 x 16K).&lt;br /&gt;
&lt;br /&gt;
*The Spectrum has 1 interrupt per 50Hz frame, the Amstrad has 6 in fixed locations through the frame.&lt;br /&gt;
&lt;br /&gt;
*Neither have hardware sprites, therefore you have to use the CPU to both draw and erase the sprites.&lt;br /&gt;
&lt;br /&gt;
*Amstrad has hardware scrolling, Spectrum does not.&lt;br /&gt;
&lt;br /&gt;
* The Spectrum 48 didn't come with a joystick port, you had to buy one. There was two variants, Sinclair and Kempston, thankfully the hardware was cheap and easy to obtain, and both were well supported by software. The Amstrad came with a joystick port built in.&lt;br /&gt;
&lt;br /&gt;
* The original Sinclair ZX Spectrums didn't come with a tape player, you had to buy one. The Amstrad CPC464 had a tape player built in, however neither the CPC664 or CPC6128 had a tape player built in, you had to buy one if you wanted to use tape based software with them. &lt;br /&gt;
&lt;br /&gt;
* Later Amstrad's ZX Spectrums (+2 and +3...) had in-built storage devices as they shared the common Amstrad CPC design.&lt;br /&gt;
&lt;br /&gt;
* Both the Spectrum and Amstrad had to use the CPU for loading or saving on cassette. The Spectrum ROM loader used the border colours to indicate loading (especially the use of striped bars in the border to indicate each data bit) a small block for a header, and then loaded the program with one larger block. The checksum/error detection was done using XOR. The Amstrad's ROM loader used many smaller blocks (so you could rewind if there was an error), it indicated loading progress with text that updated on the display, and used the better CRC for error detection. However, if the loading messages were turned off, you didn't have any indication of loading progress.&lt;br /&gt;
&lt;br /&gt;
* The Spectrum 48K's keyboard was made from rubber, the CPC had a proper keyboard. The later Spectrum's had proper keyboards too.&lt;br /&gt;
&lt;br /&gt;
* The Amstrad had connections for printer, stereo sound output and expansion. It had an internal speaker, with volume control. The Spectrum 48K had connections for tape player, TV aerial and expansion. It had an internal piezo electric buzzer, the volume of which couldn't be controlled.&lt;br /&gt;
  &lt;br /&gt;
* The Amstrad could control the cassette motor, turning it on and off under software control to pause loading of software. The Spectrum didn't have this, you had to manually stop and play the tape.&lt;br /&gt;
&lt;br /&gt;
* The Amstrad had function/numeric keys. Only the later Spectrums (+2 and +3) had these.&lt;br /&gt;
&lt;br /&gt;
* Later Spectrums (+2 and +3) had a RS232/Midi port, the CPC didn't have this. If you wanted this on the CPC, you needed to buy extra hardware.&lt;br /&gt;
&lt;br /&gt;
====Video====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Spectrum and Amstrad both have a '''bitmapped''' display.&lt;br /&gt;
&lt;br /&gt;
*while''' ZX spectrum''' has a quite '''basic 1bpp character based colour display''', '''Amstrad CPC''' can be considered an '''upgraded CGA display minus the Character based text modes''' (with a 16colours modes such as the Tandy's own custom &amp;quot;CGA&amp;quot; had... and a differently logic based palette), with a range or 4bpp low resolution, 2bpp square resolution and 1bpp high resolution Attribute free video display.&lt;br /&gt;
&lt;br /&gt;
*'''They have a similar screen size.'''  But '''Amstrad CPC''' actually produces smaller pixels in it's &amp;quot;equivalent&amp;quot; video mode (mode 1). The normal display resolution on the Amstrad CPC is '''320x200''' (mode 1) while '''ZX Spectrum''' produces &amp;quot;only&amp;quot;  '''256x192''' pixels. Amstrad's screen can be reduced in size to match the Spectrum's (256x192, in Mode1) but then the actual display window is quite smaller than on a spectrum (on the same monitor) and has a larger border because the generated pixels are slightly smaller.&lt;br /&gt;
&lt;br /&gt;
*The size and aspect of the pixels in the Spectrum's bitmapped display are comparable to the pixels in Amstrad's mode 1 bitmapped display in that both produce approximately square pixels.&lt;br /&gt;
&lt;br /&gt;
*The '''Spectrum''''s '''video ram''' takes approx '''6K'''. &lt;br /&gt;
&lt;br /&gt;
*The '''Amstrad CPC''''s '''video ram''' takes '''16K''' (approx 12K when screen is reduced to Speccie's resolution).&lt;br /&gt;
&lt;br /&gt;
*The '''Spectrum''' has a fixed '''palette of 15 colours''' (8 colours with bright versions of each making 15 in total - LIGHT black is still black). &lt;br /&gt;
&lt;br /&gt;
* The Amstrad has 3 different [[Video modes|Video Modes]]. Mode 0 is 160x200 with 16 colours, mode 1 is 320x200 with 4 colours, mode 2 is 640x200 with 2 colours. All are bitmapped. The Spectrum only has 1 video mode, 256x192 which is bitmapped.&lt;br /&gt;
&lt;br /&gt;
*'''Amstrad CPC''' has a '''palette of 27 colours.''' In mode 0 you can choose 16 of these, in mode 1 you can choose 4 of these, in mode 2 you can choose 2 of these. The Amstrad's palette includes equivalent colours that match closely the Spectrum's colours.&lt;br /&gt;
&lt;br /&gt;
*The Spectrum's screen is &amp;quot;attribute&amp;quot; based. Each 8x8 cell can be assigned a background and foreground colour (and both colours must either be non-bright or bright). There is also the choice to flash the colours in each cell (the flash is a fixed rate and alternates between paper/pen and pen/paper).  This colouring results in &amp;quot;attribute/colour clash&amp;quot; on the Spectrum. The Amstrad's screen doesn't have this, and there is no restriction on how the colours can be placed.&lt;br /&gt;
&lt;br /&gt;
* The colours of each 8x8 &amp;quot;attribute&amp;quot; cell is defined by a block of ram following the Spectrum's bitmapped screen, each byte represents one cell and each byte defines paper colour, pen colour, flash enabled and bright enabled. The colours for the pens on the Amstrad are defined by writing to the Gate-Array's palette I/O registers. The pens are read from the pixel data and the resulting colour is looked up in the palette registers.&lt;br /&gt;
&lt;br /&gt;
*The '''Spectrum''' can display all '''15 colours on the screen.'''. With limitations (2 colours per 8x8pix squares...)&lt;br /&gt;
&lt;br /&gt;
* The Amstrad can only reproduce the attributes and 15 colours at the same time as shown by the Spectrum by using Amstrad's 16 colour mode, mode 0. However, this has wider pixels (approx 2x1 ratio) and a lower horizontal resolution. If the CPC's mode 1 resolution is chosen, it is not possible because only 4 colours can be chosen. &lt;br /&gt;
&lt;br /&gt;
* On the Amstrad the 6 raster interrupts allow palette colours to be changed allowing more than the theorical amount but this is also with limitations. This technique was commonly used in Speccy ports.&lt;br /&gt;
&lt;br /&gt;
*Normally Spectrum graphics is stored in 2 colours, which means 8 pixels for each byte. In Amstrad mode 1, each byte defines 4 pixels. So for the same graphics you often need twice the RAM on the Amstrad. (This is a case where graphics without transparency are used). If transparency is used, then the amount of data can be the same.&lt;br /&gt;
&lt;br /&gt;
* The Amstrad's screen size and position can be reprogrammed, the Spectrum's screen size and position is fixed. It is possible to program the Amstrad's screen to use the entire monitor display area (at the expensive of approx. 22K of video ram being used).&lt;br /&gt;
&lt;br /&gt;
====Sound====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Spectrum (128K model and later) and Amstrad both have an AY-3-8912 sound chip. (1.7Mhz clock for AY in spectrum, 1.0Mhz clock for AY in Amstrad). &lt;br /&gt;
&lt;br /&gt;
*Spectrum 48K had a 1-bit beeper sound. Playing sounds through the beeper is very CPU intensive. The Amstrad doesn't have a beeper. The only way to simulate the beeper sound would be to convert it to AY sound.&lt;br /&gt;
&lt;br /&gt;
====Input====&lt;br /&gt;
&lt;br /&gt;
* Spectrum has multiple joystick standards. The common standards are Kempston, Sinclair and Cursor. Kempston was a common interface used on the Sinclair made Spectrum's. It plugged into the back of the machine and provided support for a single joystick. This type of joystick doesn't clash with the keyboard. The Sinclair standard is used on the Amstrad made Spectrums. These machines have two joystick ports. The Sinclair standard works by simulating keys pressed on the Spectrum keyboard. (Does the sinclair joystick cause keyboard clash?) All of these standard for the Spectrum supported the directions and 1 fire button. In comparison the Amstrad CPC models have a single joystick port which with a splitter cable can support two joysticks. The joysticks support the directions and up to 3 fire buttons on the CPC, but only 2 fire buttons on the later Plus machines. In addition using the joysticks and keyboard together on the Amstrad CPC causes keyboard clash where unwanted keys are pressed. Clash between joysticks and keys can be avoided with careful choice of keys. This clash was resolved on the Plus and can be resolved with diodes on the CPC joystick port. In general though, Amstrad games supported a single joystick, they didn't use key mappings that would avoid clash and many users didn't have these fixes so the games would suffer from keyboard clash. An example of this can be seen when playing two player Gauntlet where players could be fighting to move where they wanted to.&lt;br /&gt;
&lt;br /&gt;
* The 48K spectrums had a rubber membrane keyboard, later versions had proper keys, and the Amstrad made Spectrum's have the best keyboards. The early Amstrad CPC464's and 664's had really good strong keyboards, comparable to those on the BBC Micro, whereas later ones were more flat and less good. Both Amstrad and Spectrum have a good selection of keys.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTE: Sinclair Research (the Spectrum's manufacturer) was acquired by Amstrad after the Spectrum 128K had been made. '''&lt;br /&gt;
&lt;br /&gt;
Amstrad then improved the build quality and enhanced the Spectrum's design. The result was that the Spectrum +2, which was closer in looks and build to the CPC464/6128 (same kind of compact keyboard as CPC6128, but built-in &amp;quot;Datacorder&amp;quot;). The Spectrum +3 was also quite similar to the Amstrad CPC6128 because both had a internal 3&amp;quot; drive. So the Spectrum became closer in design to the CPC. However, the overall hardware of the Spectrum didn't change, the graphics were the same, the sound was the same, but those later Spectrum's had built in joysticks, built in cassette or disc, connections for printer etc, just like the CPC, but almost all of which the Amstrad had starting with the CPC464.&lt;br /&gt;
&lt;br /&gt;
===Disc drive===&lt;br /&gt;
&lt;br /&gt;
The Spectrum didn't have an official floppy disc interface so there were different interfaces.&lt;br /&gt;
In Russia the Betadisk interface is common, this used a WD1793 disc controller and 3.5&amp;quot; discs. This interface is incompatible with the Amstrad's.&lt;br /&gt;
&lt;br /&gt;
When Amstrad designed the +3, the used a similar disc interface to the Amstrad.&lt;br /&gt;
&lt;br /&gt;
The Amstrad designed Spectrum +3 has the following in common with the CPC6128:&lt;br /&gt;
* same disc media (3&amp;quot;)&lt;br /&gt;
* same disc controller (NEC765 compatible)&lt;br /&gt;
* the floppy controller is polled for data transfer&lt;br /&gt;
* Similar disc format (CP/M based)&lt;br /&gt;
&lt;br /&gt;
However, the Spectrum+3 uses a different DOS than the Amstrad CPC6128. This means that the functions for reading/writing files are different on the Spectrum compared to the CPC.&lt;br /&gt;
&lt;br /&gt;
The Spectrum's DOS is more powerful than the CPC's. It can read CPC discs, Spectrum +3 and PCW discs easily. In order for the Amstrad to read Spectrum and PCW discs, it needs to have a special XDPB (Expanded Disc Parameter Block) configuration installed.&lt;br /&gt;
&lt;br /&gt;
The Spectrum +3's DOS is based on the disc functions in Locoscript the CPC's DOS is AMSDOS. The Spectrum's DOS was developed after the CPCs, so clearly they saw the weakness in the CPC's DOS design and improved it.&lt;br /&gt;
&lt;br /&gt;
The Spectrum Technical wiki can be found here. This describes the Spectrum hardware in more depth:&lt;br /&gt;
&lt;br /&gt;
http://scratchpad.wikia.com/wiki/ZX_Spectrum_technical_information&lt;br /&gt;
&lt;br /&gt;
=Consequences of a Spectrum Port=&lt;br /&gt;
&lt;br /&gt;
==Input==&lt;br /&gt;
&lt;br /&gt;
The Spectrum has more joystick standards than the CPC, however reading the keyboard and joysticks and handling the input on the Spectrum is much simpler, takes less code and takes less CPU time than on the Amstrad. &lt;br /&gt;
&lt;br /&gt;
On the Amstrad it is best to read the keyboard and joystick in one pass and store the data into a buffer which can then be queried later. Then read from this buffer when you need to check the inputs.&lt;br /&gt;
&lt;br /&gt;
==Disc Loading==&lt;br /&gt;
&lt;br /&gt;
The Spectrum +3's disc interface had a design that was close to the Amstrad CPC6128's. This meant that disc loading software that used the disc interface directly could be modified easily to be used on the CPC. There are disc versions of the Alkatraz, Hexagon and Speedlock loaders common to both the CPC and Spectrum.&lt;br /&gt;
&lt;br /&gt;
However, the method for accessing the DOS is different.&lt;br /&gt;
&lt;br /&gt;
The good thing is that both shared good disc interfaces, so a disc loading system on the Spectrum, if ported to the CPC would not be a bad thing.&lt;br /&gt;
&lt;br /&gt;
==Tape Loading==&lt;br /&gt;
&lt;br /&gt;
Both the Spectrum and Amstrad had a similar method for loading or saving on cassette. For both it is CPU intensive and for both the method of representing the 1 or 0 bits is the same. &lt;br /&gt;
&lt;br /&gt;
Some CPC games used the original block loader which meant loading took much longer compared to Spectrum, some used the firmware headerless block loader (CAS READ) which was a bit faster, and some CPC games used a modified Spectrum tape loader (extracted from the Spectrum's ROM and modified for the Amstrad's hardware). &lt;br /&gt;
&lt;br /&gt;
Sometimes the Spectrum loader was modified for the CPC without exact knowledge of how it worked, this resulted in some games with bad loaders that either didn't check for errors, or which didn't work in some circumstances. This lead to unreliable loading. &lt;br /&gt;
&lt;br /&gt;
Loaders like this were used in a variety of games, not limited to Speccy Ports.&lt;br /&gt;
&lt;br /&gt;
Two good loaders that appeared on both systems are Alkatraz and Speedlock. Both were reliable and fast.&lt;br /&gt;
&lt;br /&gt;
The Amstrad's ROM loader was a bit better than the Spectrum's ROM loader because it had CRC error checking, compared to XOR based checksum and block based loading (so you could rewind and try a block again) compared to a single load.&lt;br /&gt;
&lt;br /&gt;
Consequences for porting to CPC:&lt;br /&gt;
&lt;br /&gt;
*If the loader was modified for CPC without good knowledge the loading would be unreliable. (e.g. errors are not detected, timings are bad, edge detection is dodgy).&lt;br /&gt;
&lt;br /&gt;
*On the good side, the Spectrum utilised the border to indicate both the stage of loading (indicated by different colours used in the border) and the loading progress, so a modified loader for CPC would also indicate loading progress. If messages were turned off in the Amstrad ROM loader you didn't have any indication of loading progress.&lt;br /&gt;
&lt;br /&gt;
Examples of loaders common to both Amstrad and Spectrum:&lt;br /&gt;
* Speedlock (commonly used by Ocean).&lt;br /&gt;
* Alkatraz (commonly used by US Gold).&lt;br /&gt;
&lt;br /&gt;
Spectrum loader ported to Amstrad:&lt;br /&gt;
* Aliens (UK version, original release).&lt;br /&gt;
&lt;br /&gt;
==Colours==&lt;br /&gt;
&lt;br /&gt;
The Spectrum palette (15 colours, bright at bottom):&lt;br /&gt;
&lt;br /&gt;
[[image:ZXSpectrum_palette.png|Spectrum palette (from wikipedia)]]&lt;br /&gt;
&lt;br /&gt;
The Amstrad palette (27 colours):&lt;br /&gt;
&lt;br /&gt;
[[image:AmstradCPC_palette.png|Amstrad palette (from wikipedia)]]&lt;br /&gt;
&lt;br /&gt;
A comparison of the palettes in CPC palette:&lt;br /&gt;
&lt;br /&gt;
[[image:CPC_Speccy_palette_comparison.png|Comparison of the palettes ]]&lt;br /&gt;
&lt;br /&gt;
From the comparison you can see that the Amstrad can reproduce the Spectrum's colours well, and its additional colours can provide extra shades and some colours the Spectrum can't show (e.g. orange).&lt;br /&gt;
&lt;br /&gt;
Consequences for porting to CPC:&lt;br /&gt;
* If the game was ported directly using only the Spectrum colours then the Amstrad version would have similar colours, when more appropiate colour's from it's palette could be used.&lt;br /&gt;
&lt;br /&gt;
What they should do for CPC:&lt;br /&gt;
* Recolour the graphics using the Amstrad's palette to improve the look.&lt;br /&gt;
&lt;br /&gt;
==Colour Clash from the Cell based colouring==&lt;br /&gt;
&lt;br /&gt;
The cell based colouring used on the Spectrum has its disadvantages. [[image:clash.png|right|thumb|Colour clashing in Knight Tyme. Observe the appearance of the character sprite as it merges with the background. (Background colours have priority here in this game.)]]&lt;br /&gt;
&lt;br /&gt;
When moving a sprite over a background, or a sprite over another sprite, and if both have colours you have to decide which colours take priority. &lt;br /&gt;
&lt;br /&gt;
It is not possible to have all the colours together because of the colour limitation within each 8x8 cell. &lt;br /&gt;
&lt;br /&gt;
This then means that the graphics with a lower priority then takes on the colour of the higher priority graphics.&lt;br /&gt;
&lt;br /&gt;
If a sprite's colours takes priority, and it moves with pixel by pixel movement, as soon as it enters a new cell, the background will take on it's colours. The colour clash seems to extend furthur than the sprite. This is down to the 8x8 cell colouring.&lt;br /&gt;
&lt;br /&gt;
The 6 raster interrupts on the CPC can be used to change the colours on the screen. You can redefine all the available colours, e.g. each interrupt you could re-program all the 4 available colours in mode 1. This can be done to increase the number of colours visible.&lt;br /&gt;
However, while there are more visible colours, each region is still limited to the number of available colours (e.g. limited to 4 colours in mode 1). &lt;br /&gt;
&lt;br /&gt;
If a sprite passes between two raster interrupt regions it will suffer from a form of colour clash, where the part in the new region takes the colours from that region, and the part in the old region remains in the colours from that region.&lt;br /&gt;
&lt;br /&gt;
Various ports use the raster interrupts, but how they chose to use them differs.&lt;br /&gt;
&lt;br /&gt;
'''Possible resolutions on Spectrum:'''&lt;br /&gt;
* Remove colour from the display so that background and sprites use the same colours, clash is eliminated but the game is monocolour..&lt;br /&gt;
* Move sprites in cell based movements. The colours still take priority but the clash is less of a problem.&lt;br /&gt;
* Add a black border around the sprites. Clash occurs, but because of the border it is not/less seen.&lt;br /&gt;
&lt;br /&gt;
'''Consequences for porting to CPC:'''&lt;br /&gt;
* If colour priority, colour clash exists: CPC version has the colour clash simulated which is unnecessary.&lt;br /&gt;
* If 2 colours are used and colour clash eliminated: CPC version lacks colour, same as Spectrum&lt;br /&gt;
* If cell based movement is done, then CPC version has the same movement whereas it could be pixel perfect on CPC.&lt;br /&gt;
* If black border is used, CPC has the unnecessary black border.&lt;br /&gt;
* The CPC can't replicate the Spectrum's colour attribute system, this means a game converted to Amstrad's mode 1 has even less colours than the Spectrum version. The CPC version then has 4 colours, compared to up to 15 possible colours on the Spectrum.&lt;br /&gt;
&lt;br /&gt;
'''What should be done on CPC:'''&lt;br /&gt;
* Recolour and redesign the graphics appropiately for the CPC in either mode 1 or mode 0.&lt;br /&gt;
* Use the Amstrad interrupts and change the colours multiple times each frame, this will give each region (between each interrupt) it's own colours increasing the number of colours on screen. Each region is 52 scanlines in height, and the whole screen in width. Note that the colours must be set for each region for each frame to maintain them, and that the pixels within each region are still limited to 4 colours in mode 1. The colour regions like this are ideal for having different colours for the HUD and for the main game area. This can be a CPU intensive technique.&lt;br /&gt;
&lt;br /&gt;
Examples of colour clash ported to the CPC:&lt;br /&gt;
(These examples show colour clash implemented on the CPC in the same way as the spectrum would show it)&lt;br /&gt;
* Bionic Commando&lt;br /&gt;
&lt;br /&gt;
Examples of attribute based colour system ported to CPC:&lt;br /&gt;
* Badlands&lt;br /&gt;
&lt;br /&gt;
Examples of games with little colour because attribute colours have been removed:&lt;br /&gt;
* Peter Pack Rat&lt;br /&gt;
&lt;br /&gt;
Examples of using raster interrupts to increase colours:&lt;br /&gt;
* Pacmania and Black Tiger (main play area remains 2 colours)&lt;br /&gt;
* Strider 4 colours in game area, 4 colours in status panel.&lt;br /&gt;
* Super Wonder Boy (Monochrome background and monochrome sprites)&lt;br /&gt;
* [[Deflektor]] (main play area has one set of colours, status panel has another set)&lt;br /&gt;
&lt;br /&gt;
==Advantages of the cell based colouring==&lt;br /&gt;
&lt;br /&gt;
The Spectrum's cell based colouring has advantages.&lt;br /&gt;
&lt;br /&gt;
=== Conveying state on a HUD ===&lt;br /&gt;
&lt;br /&gt;
The state of a game play element on the HUD can be coloured accordingly. e.g. a bomb that is about to explode could change colour from white to red.&lt;br /&gt;
&lt;br /&gt;
'''What should be done on CPC:'''&lt;br /&gt;
* If you have enough free palette entries, e.g. mode 0, then you can change the colour for the pen used to display the item in the palette. This is quick. However if you are using mode 1, then the number of palette entries is much more limited and you should draw the bomb in a different way. The consequence of this is that you may need to store additional graphics for this and it will take much longer to update the HUD than on the Spectrum.&lt;br /&gt;
&lt;br /&gt;
=== General colouring ===&lt;br /&gt;
&lt;br /&gt;
Since the background and foreground colour can be defined per cell then you can use all the Palette of the Spectrum at once.&lt;br /&gt;
&lt;br /&gt;
'''What should be done on CPC:'''&lt;br /&gt;
* If you are using mode 0 then you are free to define the colours per pixel from the 16 colour palette. This is ok if the chunkier pixels can be used, not so good if there is detail in the graphics that needs to be retained.&lt;br /&gt;
* If you are using mode 1 then you will see less colour. You can set the colour palette for multiple regions on the screen, or you can use the 4 colour palette more creatively.&lt;br /&gt;
&lt;br /&gt;
==Sound==&lt;br /&gt;
&lt;br /&gt;
There is 1 sound source on 48K spectrums: its beeper, and 2 sources of sound on 128K spectrums: beeper and AY.&lt;br /&gt;
&lt;br /&gt;
Beeper sound is simple. The spectrum has a speaker which you can turn on/off through a I/O port on the Spectrum's ULA. To make different sounds, you turn it on and off at different rates, all under control of the CPU. Speaker sound is CPU intensive because the timing is all done through the CPU and delay loops. The consequence on the Spectrum is that not many games have beeper music during the game, and those that do are often staccato like (e.g. Manic Miner) (the game takes some time to update, then some time for sound, and this repeats). If the sound was made for the Spectrum beeper, this would need to be converted to AY sound for the CPC, the result would not be exactly the same.&lt;br /&gt;
&lt;br /&gt;
Sound written for the AY in the Spectrum can't be ported directly because it would be out of tune, this is down to the difference in master clock given to the AY (1.7Mhz on Spectrum, 1.0Mhz on Amstrad). The music would need to be altered. When this is done, the music is almost the same.&lt;br /&gt;
&lt;br /&gt;
It is worth noting that mostly the 128K version of Spectrum games had AY tunes, because the 128K model of the Spectrum is when the AY was introduced.&lt;br /&gt;
&lt;br /&gt;
Consequences for porting to CPC:&lt;br /&gt;
* No sound (if beeper only sound and it's not translated)&lt;br /&gt;
* Sound out of tune on CPC (if AY sound without some conversion)&lt;br /&gt;
* Sound is beeper like and staccato when it could be AY &amp;quot;native&amp;quot;&lt;br /&gt;
&lt;br /&gt;
What they should do for the CPC:&lt;br /&gt;
* Compose the tune for CPC&lt;br /&gt;
* For AY sounds, convert the music/effects to the CPC's AY master clock so that it is in tune (the tune may loose some of it's accuracy if this is done, especially regarding the hardware envelopes and noise, and this means the sound will not be exactly the same, but is much more acceptable).&lt;br /&gt;
&lt;br /&gt;
Examples of Spectrum Beeper sound converted to AY:&lt;br /&gt;
* Knightmare&lt;br /&gt;
* Last Ninja 2&lt;br /&gt;
* Super Hang On&lt;br /&gt;
&lt;br /&gt;
==Graphics==&lt;br /&gt;
&lt;br /&gt;
The Spectrum's graphics use 1 bit per pixel to define them. Each byte defines 8 pixels. The colour of each pixel is then defined by the attribute system.&lt;br /&gt;
&lt;br /&gt;
The attribute &amp;quot;ram&amp;quot; define the background colour (where a bit is 0), a foreground colour (where a bit is 1), if the dark variant of the colours should be used, or if the colours should flash at a fixed rate.&lt;br /&gt;
&lt;br /&gt;
If the background is a single colour, the sprites can be ORed on. If shading is to be used a mask is often stored with the pixels. The mask is used to remove or retain (depending on the mask type) pixels on the screen. The final result on the screen is the result of the mask then the sprite pixels.&lt;br /&gt;
&lt;br /&gt;
On the Amstrad, the number of bits to define a pixel, the number of colours that can be used, and the width of the pixels is different for each mode. &lt;br /&gt;
* Mode 0 uses 4 bits for each pixel. Each byte defines 2 pixels. 16 colours can be used without restriction. Wide pixels. This is lower resolution than the spectrum.&lt;br /&gt;
* Mode 1 uses 2 bits for each pixel. Each byte defines 4 pixels.  4 colours can be used without restriction. Pixels the same size as the spectrum.&lt;br /&gt;
* Mode 2 uses 1 bit for each pixel. Each byte defines 8 pixels. 2 colours can be used without restrictions. Pixels are thinner than the spectrum. This is higher resolution.&lt;br /&gt;
&lt;br /&gt;
Consequences:&lt;br /&gt;
* The pixel data and colours are stored in a different way than the CPC, so some conversion must be done before the graphics can be used. Either the graphics are remade, or often converted through some automatic process.&lt;br /&gt;
* There is a trade off between mode 1, keeping the same resolution as the Spectrum but having only 4 colours, or using mode 0, with half the horizontal resolution but 16 colours. The choice depends on the detail required in the graphics.&lt;br /&gt;
&lt;br /&gt;
The following sections describe possible ways to handle the graphics on the Amstrad.&lt;br /&gt;
&lt;br /&gt;
===Techniques used for Graphics===&lt;br /&gt;
&lt;br /&gt;
====Graphics with transparency====&lt;br /&gt;
&lt;br /&gt;
=====Storage=====&lt;br /&gt;
&lt;br /&gt;
A common way to do this is on the Spectrum is to store 1 byte of mask, followed by 1 byte of pixel data, and to repeat this for the width of the sprite divided by 8. (Each byte representing a 8 pixel wide single line slice of the sprite).&lt;br /&gt;
&lt;br /&gt;
If we consider a sprite which is 16x16. Each byte contains 8 pixels. For each line 2 bytes would be needed for pixel data and 2 bytes for mask. The total storage space required would be (2+2)*16 = 64 bytes.&lt;br /&gt;
&lt;br /&gt;
If we consider mode 1 on the Amstrad, and we used the same representation, we could freely use 4 colours for the sprites. The Amstrad would also need 2 times the ram space to store the data, because in mode 1 there is half the number of pixels per byte.&lt;br /&gt;
So, each byte contains 4 pixels. For each line 4 bytes would be needed for pixel data and 4 for mask: (4+4)*16 = 128 bytes.&lt;br /&gt;
&lt;br /&gt;
However, if we sacrifice 1 colour, so we have 1 pen which is fully transparent and 3 for opaque sprite colours then we don't need the mask to be stored this way. The mask is common for all sprites and we could store this as a single 256 byte array. We would still need 4 bytes for the pixel data but the result now is: 4*16 = 64 bytes. The same weight as the Spectrum.&lt;br /&gt;
&lt;br /&gt;
Mode 2 is generally not used for games on the Amstrad because of it's lack of colour. The pixels in this mode are half as wide as the Spectrum's. If the Spectrum data was used directly, which it could be, then the sprites would be half the width of the Spectrum's. In this case the data storage is the same as on the Spectrum. If we wanted to maintain the same resolution we would need to double up each pixel, effectively magnifying it in the width by 2. The result would be twice the size of the Spectrum data.&lt;br /&gt;
&lt;br /&gt;
If mode 0 is used, we could either store a mask and byte, as for the Spectrum, or more commonly we use pen 0 for full transparent and leave the other 15 pens to define the sprite. We could then use half the number of pixels horizontally and lower resolution too. Each byte now contains 2 pixels. The sprite is 8x16 now = (8/2)*16 = 64 bytes. This the same storage size as for mode 1. If the size of the sprites were too small, then we would need to increase the size and the storage space.&lt;br /&gt;
&lt;br /&gt;
Therefore, depending on the representation, this would determine how much ram is consumed on the Amstrad.&lt;br /&gt;
&lt;br /&gt;
The best choices are to go for mode 1, and use a common mask table, with 3 colours per sprite. Or use mode 0, use a common mask table, with 15 colours per sprite. In both cases we use 256 bytes more than the Spectrum equivalent graphics. &lt;br /&gt;
&lt;br /&gt;
So we show that some games could be recoloured and still use about the same amount of data as the Spectrum.&lt;br /&gt;
&lt;br /&gt;
The above do not consider the size or speed of the code to clip or draw the sprite to the Amstrad's screen compared to the Spectrum code. The values above assume the Spectrum version is not storing pre-shifted sprites, or using a pre-shift table, and when drawing to pixel positions is shifting the pixel data during draw. The comparison becomes more complicated when these are involved.&lt;br /&gt;
&lt;br /&gt;
Examples of games probably ported from the Spectrum (the use a Spectrum sized screen), in mode 1 and recoloured:&lt;br /&gt;
* HeroQuest&lt;br /&gt;
* [[Head Over Heels]]&lt;br /&gt;
* Shadow of the Beast&lt;br /&gt;
&lt;br /&gt;
Examples of games where re colouring could have been done:&lt;br /&gt;
* [[Pacmania]]&lt;br /&gt;
&lt;br /&gt;
====Graphics without transparency====&lt;br /&gt;
&lt;br /&gt;
=====Storage=====&lt;br /&gt;
&lt;br /&gt;
Tiles are often used to define background graphics. These are opaque and don't need masks. The benefit here is that on CPC we can use all the colours in the palette, so for mode 1, all 4 colours can be used and in mode 0 all 16 colours can be used.&lt;br /&gt;
&lt;br /&gt;
However on CPC generally non-transparent graphics will often take more storage space:&lt;br /&gt;
&lt;br /&gt;
For the spectrum a 8x16 tile: (8/8)x16 = 16 bytes.&lt;br /&gt;
&lt;br /&gt;
CPC mode 0: (4/2)x16 = 32 bytes&lt;br /&gt;
&lt;br /&gt;
CPC mode 1: (8/4)x16 = 32 bytes&lt;br /&gt;
&lt;br /&gt;
CPC mode 2: (8/8)x16 = 16 bytes&lt;br /&gt;
&lt;br /&gt;
In mode 0 and mode 1, the tiles on the CPC will take twice as much space compared to the Spectrum. This will impact the memory used and depending on the number of tiles this is a significant memory impact.&lt;br /&gt;
&lt;br /&gt;
====Real-Time Conversion of Spectrum graphics====&lt;br /&gt;
&lt;br /&gt;
A common way to get the Speccy game running on the CPC and using the same storage space for the graphics was to perform real-time conversion from the Spectrum graphics.&lt;br /&gt;
&lt;br /&gt;
* Graphics are stored on the Amstrad in the same format as on the Spectrum (2 colour, 1BPP with sprites having masks)&lt;br /&gt;
* Amstrad's mode 1 is used to maintain the same pixel resolution.&lt;br /&gt;
* A function converts the graphics on-demand, while the game is running, into the form that is displayed for the screen.&lt;br /&gt;
&lt;br /&gt;
Needless to say, this enabled the port without the use of additional graphics artists. Therefore it would be cheaper and easier if a programmer was tasked with making a conversion alone.&lt;br /&gt;
&lt;br /&gt;
Disadvantages:&lt;br /&gt;
* This process takes a lot more CPU power compared to the Spectrum version, because in addition to drawing and erasing the sprites, the pixel data must also be converted at the same time. &lt;br /&gt;
* This resulted in a significantly slower game.&lt;br /&gt;
* Amstrad version had less colours (often as little as 2 colours)&lt;br /&gt;
&lt;br /&gt;
Advantages:&lt;br /&gt;
* Pixel data took less RAM than if it&lt;br /&gt;
&lt;br /&gt;
====Mode 0====&lt;br /&gt;
&lt;br /&gt;
When using mode 0, the screen can be reprogrammed to use the same sized screen as when using mode 1. However the resolution would be 128x192.&lt;br /&gt;
&lt;br /&gt;
Using mode 0 has additional impact on the gameplay and game logic:&lt;br /&gt;
- there are fewer pixels horizontally therefore  both tiles and sprites are described by fewer pixels in width (although pixels are wider). Then any calculations that use pixel coordinates will need to be adjusted. This includes positioning sprites on the screen, sprite to sprite collision, converting sprite pixel coordinates to a tile map location, converting sprite pixel coordinates to a collision map location, determining if a sprite is moving off the right side of the screen. &lt;br /&gt;
&lt;br /&gt;
If the original sprites were square on the Spectrum (e.g. 16x16), then with mode 0 they are 8x16, and we may need additional code for these calculations to handle that.&lt;br /&gt;
&lt;br /&gt;
- movement per pixel will be faster horizontally than vertically. We can accept that, or if movement is meant to be the same in all directions then sprites may need to move faster vertically to ensure the movement is consistent. This then has an impact on gameplay because sprites will take less time to move over the screen and any time based goals may need to be adjusted to compensate and make the game goals consistent.&lt;br /&gt;
&lt;br /&gt;
Using mode 1 is the route to a quicker port because there are less changes to the game code.&lt;br /&gt;
 was stored in an Amstrad native form so the game could run on a 64K Ram machine (CPC464 and CPC664, 464Plus).&lt;br /&gt;
* If the colour attributes of the Spectrum were not simulated then the attribute data would not need to be stored for the CPC.&lt;br /&gt;
&lt;br /&gt;
====Mode 1====&lt;br /&gt;
&lt;br /&gt;
Amstrad's mode 1 is the closest mode which compares with the Spectrum's graphical abilities.&lt;br /&gt;
&lt;br /&gt;
The pixels are almost the same size. The CPCs screen dimensions can be reprogrammed to re-create the Spectrum's 256x192 resolution.&lt;br /&gt;
&lt;br /&gt;
However, the CPC has a different &amp;quot;pixel clock&amp;quot; compared to the Spectrum. The CPC was designed for a 320x200 display instead of a 256x192 display and in fact the the pixels are smaller on the screen when you compare mode 1 (the closest equivalent on the CPC) to the Spectrum.&lt;br /&gt;
&lt;br /&gt;
So when the screen is reprogrammed you end up with a larger border on the CPC.&lt;br /&gt;
&lt;br /&gt;
This (the larger border) led to the false argument that the CPC's resolution was inferior to the Spectrum one although the amount of pixels on the screen is EXACTLY the same.&lt;br /&gt;
&lt;br /&gt;
====Double buffering====&lt;br /&gt;
&lt;br /&gt;
TODO:&lt;br /&gt;
&lt;br /&gt;
==Screen dimensions==&lt;br /&gt;
&lt;br /&gt;
By setting CRTC register settings the Amstrad's screen dimensions can be reprogrammed to match the Spectrum's.&lt;br /&gt;
The normal values used are R1=32, R6=24.&lt;br /&gt;
&lt;br /&gt;
There are advantages to reprogramming the screen dimension to match the Spectrum's.&lt;br /&gt;
* The gameplay is similar because the player sees the same amount of map and there are the same number of enemies and they move in the same way.&lt;br /&gt;
* Graphics/levels would not need to be designed for a wider screen (e.g. in mode 1, 320 compared to 256)&lt;br /&gt;
* For a smaller screen less memory is used for the screen (16KB vs 12K). The memory used by the screen is the same regardless of CPC mode used. Unused areas can be used to store graphics, code and music. For a CPC screen at &amp;amp;c000, the unused areas are: c600-c7ff, ce00-cfff, d600-d7ff, de00-dfff, e600-e7ff, ee00-efff, f600-f7ff, fe00-ffff&lt;br /&gt;
&lt;br /&gt;
==Random numbers==&lt;br /&gt;
&lt;br /&gt;
Sometimes Spectrum games generate random numbers by reading from the Spectrum's ROM which is always readable in the memory range &amp;amp;0000-&amp;amp;3fff.&lt;br /&gt;
&lt;br /&gt;
''Consequences for CPC:''&lt;br /&gt;
&lt;br /&gt;
* There is often not enough memory to store the Spectrum ROM in the Amstrad's memory. If the range read could be determined then possible a smaller range could be stored. &lt;br /&gt;
* It would be wasteful to store part or all of the Spectrum's ROM in the memory&lt;br /&gt;
* It is not legal to store any part of the Spectrum's ROM in memory&lt;br /&gt;
&lt;br /&gt;
Some games may use the 'R' register to generate a semi-random number.&lt;br /&gt;
&lt;br /&gt;
''Consequences for CPC:''&lt;br /&gt;
&lt;br /&gt;
* The R register value is based on the number and which instructions are executed. It is likely that the number of instructions between each read of the 'R' register could differ.&lt;br /&gt;
&lt;br /&gt;
For both of these methods the consequences for CPC are:&lt;br /&gt;
&lt;br /&gt;
* the numbers generated are likely to produce numbers which will differ compared to the Spectrum version and therefore the gameplay could be different. It may be subtle, it may be significant.&lt;br /&gt;
* reading a random number may take more CPU instructions to do this making it slightly slower.&lt;br /&gt;
&lt;br /&gt;
Where possible the Spectrum and Amstrad versions should use the same random number generation based on a stored seed.&lt;br /&gt;
&lt;br /&gt;
==Memory arrangement==&lt;br /&gt;
&lt;br /&gt;
Spectrum game's often use the memory from &amp;amp;5500-&amp;amp;ffff.&lt;br /&gt;
&lt;br /&gt;
''Consequences for CPC:''&lt;br /&gt;
- If you are not using a custom disc or tape loader then during loading you will need to preserve the firmware memory regions. The easiest thing to do is start the game lower in memory (&amp;amp;0040), use the default screen at &amp;amp;c000-&amp;amp;ffff, and then once loaded copy data over these areas (provided you are not doing furthur loading/saving).&lt;br /&gt;
&lt;br /&gt;
==Original consequences (under construction)==&lt;br /&gt;
&lt;br /&gt;
The Amstrad CPC was one of the best 8-bit computers of its time in terms of graphical capabilities. But those advanced capabilities had an impact on CPU resources. &lt;br /&gt;
As so many games were ported from the Spectrum, a machine with decidedly lower visual specs, the Amstrad range could hardly benefit from its main advantage while lack of optimization meant that aspects as scroll or playing area fared even worse than the Spectrum versions. You have to remember that Spectrum had less resources taken by Video RAM, so could handle animation or scrolling more easily. It is also a misconception to believe the screen was downsized in those games to gain processor resources. It was only done to use the Speccy graphics more easily, and we can doubt the code was (re-)designed so such a screen reduction would even gain CPU resources.&lt;br /&gt;
&lt;br /&gt;
Interestingly, games in Mode 1 could have been good despite the lack of colours, if only those colours were used properly more often.&lt;br /&gt;
&lt;br /&gt;
Most of them got their graphic totally unchanged, displaying some kind of colour attributes &amp;quot;artifacts&amp;quot;, a tell-tale sign of a Speccy port.&lt;br /&gt;
&lt;br /&gt;
On the other hand, as mentioned before, those games weren't always bad. Games with no need of scrolling and with re-coded graphics could actually be good.&lt;br /&gt;
&lt;br /&gt;
=Investigation into a Speccy Port=&lt;br /&gt;
&lt;br /&gt;
Arnoldemu attempted a Speccy Port in 2022-2023 and the result is 'Mayhem'. The documentation with this game has comparisons and describes the decisions made when making this conversion. You can read about the elements of this journey.&lt;br /&gt;
&lt;br /&gt;
=Lists of speccy ports=&lt;br /&gt;
Note: these lists are by no means comprehensive, they just include the most high-profile releases.&lt;br /&gt;
&lt;br /&gt;
* [[Mayhem]] - [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=18884] A recent Speccy port to CPC and PCW done by a single person. Read the document to see the comparison, issues encountered, choices made, read about the journey.&lt;br /&gt;
&lt;br /&gt;
=='''Computer originals Hits'''==&lt;br /&gt;
(most of them ended up being decent) :&lt;br /&gt;
&lt;br /&gt;
*[[H.A.T.E Hostile All Terrain Encounter]]&lt;br /&gt;
*Highway encounter&lt;br /&gt;
*Lotus turbo Esprit challenge&lt;br /&gt;
*Fighting Warrior&lt;br /&gt;
*Vendetta&lt;br /&gt;
*Hard Drivin' &lt;br /&gt;
*Way of the Tiger&lt;br /&gt;
*Last Ninja2 &lt;br /&gt;
*Myth, history in the making&lt;br /&gt;
*[[Saboteur]] I&lt;br /&gt;
*Saboteur II &lt;br /&gt;
*SWIV &lt;br /&gt;
*Shadow of the beast&lt;br /&gt;
&lt;br /&gt;
The numerous CodeMaster or Hewson games are not listed. Many of them were cheap budget Speccy games to begin with, and were quite well ported or remained good...&lt;br /&gt;
&lt;br /&gt;
=='''Well known franchises'''==&lt;br /&gt;
*Scooby Doo&lt;br /&gt;
*Thundercats.&lt;br /&gt;
*MASK 3 : Venom Strike Back &lt;br /&gt;
*Airwolf 2&lt;br /&gt;
*Batman: The Caped Crusader&lt;br /&gt;
&lt;br /&gt;
=='''Adult games'''==&lt;br /&gt;
*Sabrina &lt;br /&gt;
*Samantha fox strip poker.&lt;br /&gt;
*Strip poker II&lt;br /&gt;
&lt;br /&gt;
=='''Movie Franchises'''==&lt;br /&gt;
*Indianna Jones 3 action game.&lt;br /&gt;
*Back to the future 2 (half of the parts were Speccy Port)&lt;br /&gt;
*Big Trouble In Little China&lt;br /&gt;
&lt;br /&gt;
=='''Arcade hits'''==&lt;br /&gt;
*[[R-Type]] &lt;br /&gt;
*[[Pac-Mania]]&lt;br /&gt;
*Salamander&lt;br /&gt;
*Dragon Breed&lt;br /&gt;
*Scramble Spirits&lt;br /&gt;
*[[Black Tiger]] - [[Black Tiger CPC-Spectrum Comparison]]&lt;br /&gt;
*Strider&lt;br /&gt;
*Bionic Commando&lt;br /&gt;
*Super Wonderboy&lt;br /&gt;
*Double Dragon 3&lt;br /&gt;
*Super Hang-On&lt;br /&gt;
*[[Enduro Racer]]&lt;br /&gt;
*Toobin'&lt;br /&gt;
*Xybots&lt;br /&gt;
*Pit fighter&lt;br /&gt;
*Cabal&lt;br /&gt;
*Street Fighter&lt;br /&gt;
*Karnov&lt;br /&gt;
*Dynasty Wars&lt;br /&gt;
*Gauntlet 3&lt;br /&gt;
*Midnight resistance&lt;br /&gt;
&lt;br /&gt;
=='''Best known speccy ports'''==&lt;br /&gt;
&lt;br /&gt;
All those games are frequently used in 8bit wars style videos and reviews, hence they have served as a counter-argument to the CPC's superior abilities. Those games were well known hits ported on pretty much all computers of their time and therefore constituted the very basis of comparison between most systems of the era.&lt;br /&gt;
&lt;br /&gt;
*Shadow of the beast&lt;br /&gt;
*Myth, history in the making &lt;br /&gt;
*Gauntlet 3&lt;br /&gt;
*SWIV &lt;br /&gt;
*R-Type &lt;br /&gt;
*PacMania&lt;br /&gt;
*Salamander&lt;br /&gt;
*Dragon Breed&lt;br /&gt;
*Scramble Spirits&lt;br /&gt;
*Black Tiger&lt;br /&gt;
*Strider&lt;br /&gt;
*Bionic Commando&lt;br /&gt;
*SuperWonderboy&lt;br /&gt;
*Double Dragon3&lt;br /&gt;
*Super Hang-On&lt;br /&gt;
*Enduro Racer&lt;br /&gt;
*Toobin&lt;br /&gt;
*Xybots&lt;br /&gt;
*Pit fighter&lt;br /&gt;
*Cabal&lt;br /&gt;
*Last Ninja2 &lt;br /&gt;
*Thundercats.&lt;br /&gt;
*Hard Drivin'&lt;br /&gt;
*Sabrina&lt;br /&gt;
*Samantha fox strip poker.&lt;br /&gt;
*Strip Poker II&lt;br /&gt;
*Airwolf 2&lt;br /&gt;
*Indianna Jones 3 action game.&lt;br /&gt;
*Back to the future 2&lt;br /&gt;
*Vendetta&lt;br /&gt;
&lt;br /&gt;
=The 3 levels of Speccy porting=&lt;br /&gt;
&lt;br /&gt;
Of course the level of porting could greatly depend on whatever strategy the programmers/graphists used to port the original Spectrum game.&lt;br /&gt;
&lt;br /&gt;
*A monochrome game could remain monochrome or be recolored for the CPC, or only parts of it (only sprites or Tiles but not both - mostly only sprites.)&lt;br /&gt;
*A colored game with design-wise graphics (character based design) could be the exact same yet with even less colours.&lt;br /&gt;
*Or Tiles/sprites could simply be completely well re-done/re-drawn, even in Mode 0 sometimes.&lt;br /&gt;
&lt;br /&gt;
==Rushed and Lazy==&lt;br /&gt;
&lt;br /&gt;
The game is exactly as on the Spectrum, even displaying graphical artifacts as Colour attributes and/or monochrome display for the game's window but not always the HUD, which may even often feature extra colours thanks to Raster colour changes, yet this doesn't really help to see what happens on the game's window.&lt;br /&gt;
&lt;br /&gt;
Also sprites may display Transparency/translucency with background's colour (=colour clash), a typical Spectrum &amp;quot;feature&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Probably achieved by using almost the exact Spectrum code and emulating the Spectrum attributes on the CPC.&lt;br /&gt;
&lt;br /&gt;
Examples : &lt;br /&gt;
*'''PacMania'''&lt;br /&gt;
[[File:Pacmania title.png]]&lt;br /&gt;
[[File:Pac04.png]]&lt;br /&gt;
&lt;br /&gt;
Typical example, yet it managed to be a nice game despite this. The title screen and HUD shows the color attributes and were almost completely unchanged, yet with less colours on screen than the Speccy version.&lt;br /&gt;
&lt;br /&gt;
Ironically, the game manages to display 6 colours in the 4 colours Mode1 - yet the game's area remains completely monochromatic (coded in 1 bit) and colour attributes artifacts are still present.&lt;br /&gt;
&lt;br /&gt;
*'''[[Black Tiger]]''': Same as PacMania&lt;br /&gt;
*'''Super Hang On''' : graphics Transparency/translucency&lt;br /&gt;
*'''Enduro Racer''' : same as Super Hang On, even more displayed as Sprites more often cross the different colored parts of the screen (while jumping)&lt;br /&gt;
*'''Bionic Commando''' : there are even inverted/negative colored sprites&lt;br /&gt;
*'''Sabrina''' : same as Bionic commando&lt;br /&gt;
*'''Gauntlet 3''' : HUD is properly recolored (3 shades) but in-game window is monochrome (1bit coded sprites and tiles)&lt;br /&gt;
*'''[[R-Type]]''' : Monochrome background while sprites still are &amp;quot;coloured&amp;quot; as with Colour attributes, hence even featuring less colours than original Spectrum game, while the entire screen still displays more than the only 4 Mode1 colours...(HUD raster trick). This game was done in 3 weeks by only one man, who simply emulated the speccy stuff on CPC. Given that the Spectrum game was a great release the CPC port is not too bad.&lt;br /&gt;
&lt;br /&gt;
An special mention must go for '''Mevlut &amp;quot;Speccy&amp;quot; Dinc''', one of the worst offenders with nightmares as '''Big Trouble In Little China''', '''Enduro Racer''', '''Hammerfist''', '''Knightmare''', '''Last Ninja 2''', '''Last Ninja 2 Remix''', '''Prodigy''', '''Super Hang-On''' and '''Time Machine'''.&lt;br /&gt;
&lt;br /&gt;
==Semi-lazy==&lt;br /&gt;
&lt;br /&gt;
Well redone graphically, but not always as would actually be needed. &lt;br /&gt;
&lt;br /&gt;
Examples :&lt;br /&gt;
*'''HeroQuest''':  still has monochrome feeling (2 blue shades being used) while actually being properly 2 bit re-coded. Ditherings  use 3-colour gradients instead of the Spectrum's 2, and the grey adds a feeling of more colour.&lt;br /&gt;
*'''Strider''' has recoloured sprites, displaying no attributes, but Backgrounds remains monochrome, and the game is sluggish (because the CPU must still convert 1bpp graphics into 2bpp), yet the HUD+Raster trick enable a 6 colours displayed on screen and the HUD looks good.&lt;br /&gt;
*'''Shadow of the Beast''': No real 3-4 coloured ditherings or even additional colours thanks to dithering the 2 medium colours together in many graphics (exteriors or for many sprites), yet the square Spectrum attributes are not displayed, while the Spectrum version remains monochrome (in game window, not HUD) in order to simply avoid Colour clashes. Would have needed more development time and a real CPC version.&lt;br /&gt;
&lt;br /&gt;
==Good Job==&lt;br /&gt;
Those games are often more to be seen as proper Cross-Dev.&lt;br /&gt;
&lt;br /&gt;
Graphics, despite sharing a common ancestry, are well redone, and take into account the Amstrad power. Sometimes those games are not that well ported, yet their concept and gameplay are such that this is not that important: the game is simply too good to be annoyed by such detail as the use of Mode1, and they were still sufficiently re-done.&lt;br /&gt;
&lt;br /&gt;
*[[Head Over Heels]]&lt;br /&gt;
*[[Deflektor]]&lt;br /&gt;
*'''Switchblade''': the GX4000 cartridge version displays extra features such as large vertical ditherings in a lot of Red shades (sky) or PLUS Hardware sprites &amp;quot;patches&amp;quot; as extra coloured tiles. This is more than enough to get a properly coloured feeling.&lt;br /&gt;
&lt;br /&gt;
Some Speccy ports &amp;quot;done right&amp;quot; may also use Mode 0 instead of Mode 1, hence being graphically fully CPC (yet tiles or sprites are still comparable in dimensions). The result may vary from awful (the code is not optimised enough for CPC) to great (a well optimised Z80 game management engine with a different and accurate/efficient graphic display engine). This can be seen in '''Space Gun''': Mode 0 and even PLUS features, yet the attribute-designed-unmasked sprites remain, in a sluggish game.&lt;br /&gt;
&lt;br /&gt;
=Techniques used=&lt;br /&gt;
&lt;br /&gt;
==Monochromatic playfield and Sprite Masks==&lt;br /&gt;
&lt;br /&gt;
Having a monochrome playfield on ZX Spectrum is a common way to have no colour clashes - simply because there are no colours to clash! Also, most of those games then had masked sprites. This meant that each set of sprites had another &amp;quot;sprite set&amp;quot; for the mask, being actually 2x1bpp (bit per pixel) sets of data.&lt;br /&gt;
&lt;br /&gt;
Some games coders actually used this to get the Sprites coded in 2bpp and used one of the 4 inks in mode1 to be the mask. This then took up almsot no more RAM used by data than the original (concerning masked Graphics). As a result some of those speccy ports have sprites in another colour than the background, which is actually better in terms of playability/look.&lt;br /&gt;
&lt;br /&gt;
An example of this is '''Super wonder boy''' which could have even used one more colour for the sprites, but didn't.&lt;br /&gt;
&lt;br /&gt;
Needless to say, the Background Tiles and Letter fonts were still in 1bpp converted in real time so the CPU had no rest and such games weren't faster nor that much better looking.&lt;br /&gt;
&lt;br /&gt;
On the other hand, some games, despite having such Masked sprite totaling 2bpp had absolutely no sprite re-code at all (although this could have easily been prevented). '''Black Tiger''' is such a case.&lt;br /&gt;
&lt;br /&gt;
Nevertheless, those games had one advantage : the smooth movement of sprites.&lt;br /&gt;
&lt;br /&gt;
'''Examples :''' &lt;br /&gt;
&lt;br /&gt;
*Batman: The Caped Crusader&lt;br /&gt;
&lt;br /&gt;
Decently ported, As it use the 2bpp for the sprites in full potential. The sprites use 3 colours and the background 2 colours, including colour the unused by sprites, this make a poor background but the differently coloured sprites enable a better visibility.&lt;br /&gt;
&lt;br /&gt;
*Strider : like Batman: The Caped Crusader... sprites use 3 colours and background 2... the difference in used inks give the sprites some extra visibility.&lt;br /&gt;
&lt;br /&gt;
Strider also features some raster effect to get the HUD with extra colours, yet this certainly slow down the game a bit..&lt;br /&gt;
&lt;br /&gt;
*Super wonderboy (wonderboy2) : poor port... the sprites use only 2 colours while they could actually use 3 with no extra effort but some graphical job.&lt;br /&gt;
Yet compaired to spectrum version, the CPC version manage to have the sprite more visible thanks to their different ink.&lt;br /&gt;
&lt;br /&gt;
==Masked Backgrounds==&lt;br /&gt;
&lt;br /&gt;
Some (rare) games actually used a mask for the Bakcground tiles too. This explains why they could be fully recoded with no notable additional weight for the data. Such games are often Isometric games and are considered among the good speccy ports (or actual Cross-Dev).&lt;br /&gt;
&lt;br /&gt;
'''Examples :'''&lt;br /&gt;
&lt;br /&gt;
*'''Heroquest''': the Background tiles are also in 3 colours. Yet there is a really poor use of the mask colour.&lt;br /&gt;
*'''Head over Heels''': yet the colours are better used than in Heroquest. If you look carefully, there are 2 kind of &amp;quot;background&amp;quot; elements. &lt;br /&gt;
**Real non-masked Background (floor, walls) which use  the full 4 colours, &lt;br /&gt;
**and masked elements such as Sprites, Doors, Platforms... which are 3 colours only.&lt;br /&gt;
&lt;br /&gt;
==Unmasked games and CPC colour clashes==&lt;br /&gt;
This category includes some of the worse examples, since actual Spectrum deficiencies were ported to the CPC.&lt;br /&gt;
&lt;br /&gt;
*'''Bionic Commando'''&lt;br /&gt;
*'''Enduro Racer'''&lt;br /&gt;
&lt;br /&gt;
==Attribute/Character based Sprites and Animation==&lt;br /&gt;
&lt;br /&gt;
The cell based colouring used on the Spectrum has it's disadvantages. &lt;br /&gt;
&lt;br /&gt;
When moving a sprite over a background, or a sprite over another sprite, and if both have colours you have to decide which colours take priority. &lt;br /&gt;
&lt;br /&gt;
It is not possible to have all the colours together because of the colour limitation within each 8x8 cell. &lt;br /&gt;
&lt;br /&gt;
The problem then comes down to is that the graphics with a lower priority then takes the colour of the higher priority graphics. &lt;br /&gt;
&lt;br /&gt;
Such games had no smooth movement of sprites. The sprite moved &amp;quot;character per character&amp;quot;. As such the sprites are often unmasked, being not really more than &amp;quot;tile-mapped&amp;quot;. This meant the sprites had to actually fill the character tile or there would be artifacts introduced for the unmasked character's corner.&lt;br /&gt;
&lt;br /&gt;
This was a &amp;quot;good&amp;quot; other way to get rid of Attributes Clashes and having actual &amp;quot;colours&amp;quot; on ZX Spectrum. But some speccy ports were then emulating the attribute system, which can be quite bad because CPC in Mode1 has half the colours the Speccy has.&lt;br /&gt;
&lt;br /&gt;
*'''R-Type''' : the background has a smooth scrolling while the sprites are fixed character grid based.&lt;br /&gt;
&lt;br /&gt;
*'''Space gun''': this game was even released for Amstrad PLUS... Although coming very late in the CPC era is not really good and was probably rushed to the release. &lt;br /&gt;
&lt;br /&gt;
Yet the Character based engine enabled enormous sprites - but lacked smooth movement. Such a technique was actually used for quite a fair amount of Mode0 games. This is not &amp;quot;Speccy port&amp;quot; but it is good to to mention, as it was a common game design technique for both machines.&lt;br /&gt;
&lt;br /&gt;
*'''AMC (Astro Marines corps)''' : speccy version has no attribute clashes and is great. Amstrad version is in Mode0, feature multiscroll effect and remains fast.&lt;br /&gt;
&lt;br /&gt;
*'''Satan''' : this one is like R-Type, but the sprite layer is masked, so the game is monocolour on Spectrum. Still the Character system for the sprite has the advantage of giving good speed. The CPC version is fully in Mode0 and great, still the engine is clearly shared with speccy.&lt;br /&gt;
&lt;br /&gt;
==Rasters==&lt;br /&gt;
A common cheat was to get some Raster interrupt colour change so you could argue that the game is actually displaying more than 4 colours on screen while being Mode1. This is only to mimic some sort or Raster based Colours attributes yet is actually not a clever move in some way as getting some raster interrupt may take lots of CPU cycles. Also, despite the game displaying more than the allowed colours on screen, the playing area was still monochrome. In the end, all this did was getting the game even slower.&lt;br /&gt;
&lt;br /&gt;
On the other hand this could also be done right:&lt;br /&gt;
*'''Deflektor''' : Raster done right.&lt;br /&gt;
*'''Strider''' : Raster done right. (useless but good looking)&lt;br /&gt;
*'''Thundercats''' : (though there are more playing area colours)&lt;br /&gt;
*'''R-Type'''&lt;br /&gt;
*'''PacMania'''&lt;br /&gt;
*'''Black Tiger'''&lt;br /&gt;
&lt;br /&gt;
Many (if not all) of those games can actually run faster just by getting rid of CPU-wasting rasters.&lt;br /&gt;
&lt;br /&gt;
Providing a game had to deal with 1bpp to 2 bpp conversion, Software Sprites and Scrolling and complicated gameplay, adding some Raster interrupt to the equation is a really bad move and a good way to waste even more CPU time.&lt;br /&gt;
&lt;br /&gt;
==Amstrad interrupt positions==&lt;br /&gt;
&lt;br /&gt;
The following image shows where the Amstrad's interrupt positions are located relative to the screen. Here the CRTC Register values used are R1=32, R2=42, R6=24 and R7=30 and the colours are changed at the start of the interrupt. &lt;br /&gt;
&lt;br /&gt;
To have different positions vertically you can change the value of R7 (and if the monitor will accept it R5) to move the screen up and down.&lt;br /&gt;
For example Gryzor sets R7=29 to have a 1 char tall panel at the bottom in mode 1.&lt;br /&gt;
&lt;br /&gt;
To change at later positions you can also use a software timing loop, or fill the time with other code to delay the colour change from a chosen interrupt position.&lt;br /&gt;
 &lt;br /&gt;
[[File:Interrupt_positions_spectrum_sized_screen.png|Screenshot of Amstrad interrupt positions showing where mode and colours can be changed quickly relative to pixel graphics. R1=32, R2=42, R6=24,R7=30]]&lt;br /&gt;
&lt;br /&gt;
This image demonstrates that if you wish to use mode 1, and change palette colours for HUD and game area, then the graphics need to be arranged or re-sized so that the colour change positions are most optimal. For some games, the dimensions of the HUD or play area may not allow the palette to be changed easily.&lt;br /&gt;
&lt;br /&gt;
[[Category: Games| ]][[Category:Programming]][[Category:Games Programming]][[Category:CrossDev]][[Category:CPC History]][[Category:Non CPC Computers]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Speccy_Port&amp;diff=127398</id>
		<title>Speccy Port</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Speccy_Port&amp;diff=127398"/>
				<updated>2026-05-10T11:16:47Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: /* Rushed and Lazy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[Image:Vs.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
A '''Speccy Port''' or '''Spectrum port''' is the name given to a game which has been converted directly from the Sinclair Spectrum with little or no changes to the Amstrad CPC. &lt;br /&gt;
&lt;br /&gt;
Mostly the Amstrad version ended up fairing worse than the original Spectrum version with the following results:&lt;br /&gt;
* Less colours&lt;br /&gt;
* Slower gameplay&lt;br /&gt;
&lt;br /&gt;
These facts are not true for all &amp;quot;Spectrum Ports&amp;quot; because some ended up decent.&lt;br /&gt;
&lt;br /&gt;
There is anger from Amstrad users in general, because they feel that if more time had had been taken on the Amstrad version, we could have had a version that used the abilities of the Amstrad better, looked better, perhaps sounded better, and played as well or better than the Spectrum version.&lt;br /&gt;
&lt;br /&gt;
On a more positive tone, those speccy ports had the merit to exist, or else Amstrad would have a smaller games catalogue.&lt;br /&gt;
&lt;br /&gt;
It is worth noting that Spectrum ports also existed on [[MSX]], [[Enterprise]] 64/128, [[SAM Coupé]] and non-[[Z80]] [[Thomson]] MO/TO, [[Commodore 64|C64]].&lt;br /&gt;
&lt;br /&gt;
==List of Spectrum Ports==&lt;br /&gt;
[[List of Speccy Ports]]&lt;br /&gt;
&lt;br /&gt;
==How these should have looked==&lt;br /&gt;
&lt;br /&gt;
This section shows games which were made specifically for the Amstrad's abilities or Spectrum ports that were done correctly.&lt;br /&gt;
&lt;br /&gt;
Here are some examples of Amstrad games done well, and how these games could have looked if more care was taken.&lt;br /&gt;
&lt;br /&gt;
The following list shows how a game can be done right using the cpc capabilities. These do not necessarily share any Spectrum code, and are not necessarily recoloured from the Spectrum:&lt;br /&gt;
&lt;br /&gt;
* Renegade&lt;br /&gt;
* Gryzor&lt;br /&gt;
* Xyphoes Fantasy&lt;br /&gt;
* [[Head Over Heels]]&lt;br /&gt;
* Atic Atac&lt;br /&gt;
&lt;br /&gt;
Some CPC games share similarities with the Spectrum version, and probably share a lot of code, yet are in mode 0 (16 colours, lowest resolution). [[Ocean]] made a lot lilke and thanks to a more professional graphic treatment (compared to many other British companies) and actually good porting tactics this produced some of the finest CPC games.&lt;br /&gt;
&lt;br /&gt;
Those games are examples:&lt;br /&gt;
&lt;br /&gt;
*'''Robocop'''&lt;br /&gt;
*'''Chase HQ'''&lt;br /&gt;
&lt;br /&gt;
Some of the games in the list below use mode 1 but fully supported the 2bpp re-coding of graphics done right (by a human, not by an automatic method) and hence got properly coloured backgrounds and sprites.&lt;br /&gt;
&lt;br /&gt;
*'''Shadow of the Beast'''&lt;br /&gt;
*'''Midnight Resistance'''&lt;br /&gt;
*'''Wec le Mans'''&lt;br /&gt;
&lt;br /&gt;
=Reasons for a Spectrum Port=&lt;br /&gt;
&lt;br /&gt;
The [[ZX Spectrum]] shared similar hardware with the Amstrad CPC (see Machine comparisons).&lt;br /&gt;
&lt;br /&gt;
The Spectrum was very popular and with the CPC having a much smaller market share, it made sense to develop the Spectrum version first and to save on time and money, the Spectrum code, music and graphics were re-used.   (A typical port to the Amstrad is said to have been done in 3 days so was financially good).&lt;br /&gt;
&lt;br /&gt;
This phenomenon was more prominent in the UK, where the Speccy was the dominant machine. In other markets, such as France or Spain, where the CPC was very popular, games were coded from scratch for the CPC, often using an [[Atari|Atari ST]] for  [[Games Crossdev|Cross Development]]&lt;br /&gt;
&lt;br /&gt;
= Machine comparisons =&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*The Spectrum 48K was released in the UK in 1982 and was the successor of the ZX80/ZX81 with upgraded graphics and config (RAM/ROM). The Amstrad CPC464 was released in the UK in 1984 and was a Z80 based computer with AY sound and a simplified yet upgraded custom IBM PC CGA display for Video.&lt;br /&gt;
&lt;br /&gt;
*Spectrum 48K sold for £99. The CPC464 with Green Screen monitor sold for £299 and with colour monitor for £399. One selling point was that the Amstrad needed only 1 plug, and that you didn't need to use the family television to use it. Also the Spectrum 48k wasn't supplied with any monitor nor storage device. &lt;br /&gt;
&lt;br /&gt;
* The Spectrum was designed to be used with a television, the Amstrad was designed to be used with and was sold with either a green screen or colour monitor. &lt;br /&gt;
&lt;br /&gt;
* Amstrad's monitors include the powersupply for the Amstrad CPC. A &amp;quot;TV connection + power supply&amp;quot; solution was also available : [[Amstrad MP1/MP2 modulator]]&lt;br /&gt;
&lt;br /&gt;
* The Spectrum was sold as a games machine, the Amstrad was sold more as a multi purpose machine (in the UK anyway).&lt;br /&gt;
&lt;br /&gt;
* The Amstrad's BASIC and firmware are said to be better than the Spectrum's BASIC and OS functions.&lt;br /&gt;
&lt;br /&gt;
====CPU, RAM and basic Hardware====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Spectrum 48K machine has 48K RAM, approx 6.5k of this is screen. The Amstrad CPC464 and 664 have 64K ram, approx 16K of this is screen.&lt;br /&gt;
&lt;br /&gt;
*Latter Spectrum were supplied with 128K RAM (Spectrum 128, +2 and +3) and Amstrad CPC6128 was supplied with 128K RAM too (same amount of RAM used by Video as earlier machines)&lt;br /&gt;
&lt;br /&gt;
*Spectrum and Amstrad both have a Z80 CPU.&lt;br /&gt;
&lt;br /&gt;
* The CPU runs at a similar speed (3.5Mhz in Spectrum, 4Mhz in Amstrad) (Note, both systems do not run at optimum speed due to waits inserted by the video hardware).&lt;br /&gt;
&lt;br /&gt;
*The Spectrum 48k can't do double buffering in hardware (the later 128K machines can), the Amstrad could from the start. On the Amstrad and Spectrum 128K you can use hardware double buffering, but then you need to sacrific twice as much video ram (e.g. For Amstrad: 2 x 16K).&lt;br /&gt;
&lt;br /&gt;
*The Spectrum has 1 interrupt per 50Hz frame, the Amstrad has 6 in fixed locations through the frame.&lt;br /&gt;
&lt;br /&gt;
*Neither have hardware sprites, therefore you have to use the CPU to both draw and erase the sprites.&lt;br /&gt;
&lt;br /&gt;
*Amstrad has hardware scrolling, Spectrum does not.&lt;br /&gt;
&lt;br /&gt;
* The Spectrum 48 didn't come with a joystick port, you had to buy one. There was two variants, Sinclair and Kempston, thankfully the hardware was cheap and easy to obtain, and both were well supported by software. The Amstrad came with a joystick port built in.&lt;br /&gt;
&lt;br /&gt;
* The original Sinclair ZX Spectrums didn't come with a tape player, you had to buy one. The Amstrad CPC464 had a tape player built in, however neither the CPC664 or CPC6128 had a tape player built in, you had to buy one if you wanted to use tape based software with them. &lt;br /&gt;
&lt;br /&gt;
* Later Amstrad's ZX Spectrums (+2 and +3...) had in-built storage devices as they shared the common Amstrad CPC design.&lt;br /&gt;
&lt;br /&gt;
* Both the Spectrum and Amstrad had to use the CPU for loading or saving on cassette. The Spectrum ROM loader used the border colours to indicate loading (especially the use of striped bars in the border to indicate each data bit) a small block for a header, and then loaded the program with one larger block. The checksum/error detection was done using XOR. The Amstrad's ROM loader used many smaller blocks (so you could rewind if there was an error), it indicated loading progress with text that updated on the display, and used the better CRC for error detection. However, if the loading messages were turned off, you didn't have any indication of loading progress.&lt;br /&gt;
&lt;br /&gt;
* The Spectrum 48K's keyboard was made from rubber, the CPC had a proper keyboard. The later Spectrum's had proper keyboards too.&lt;br /&gt;
&lt;br /&gt;
* The Amstrad had connections for printer, stereo sound output and expansion. It had an internal speaker, with volume control. The Spectrum 48K had connections for tape player, TV aerial and expansion. It had an internal piezo electric buzzer, the volume of which couldn't be controlled.&lt;br /&gt;
  &lt;br /&gt;
* The Amstrad could control the cassette motor, turning it on and off under software control to pause loading of software. The Spectrum didn't have this, you had to manually stop and play the tape.&lt;br /&gt;
&lt;br /&gt;
* The Amstrad had function/numeric keys. Only the later Spectrums (+2 and +3) had these.&lt;br /&gt;
&lt;br /&gt;
* Later Spectrums (+2 and +3) had a RS232/Midi port, the CPC didn't have this. If you wanted this on the CPC, you needed to buy extra hardware.&lt;br /&gt;
&lt;br /&gt;
====Video====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Spectrum and Amstrad both have a '''bitmapped''' display.&lt;br /&gt;
&lt;br /&gt;
*while''' ZX spectrum''' has a quite '''basic 1bpp character based colour display''', '''Amstrad CPC''' can be considered an '''upgraded CGA display minus the Character based text modes''' (with a 16colours modes such as the Tandy's own custom &amp;quot;CGA&amp;quot; had... and a differently logic based palette), with a range or 4bpp low resolution, 2bpp square resolution and 1bpp high resolution Attribute free video display.&lt;br /&gt;
&lt;br /&gt;
*'''They have a similar screen size.'''  But '''Amstrad CPC''' actually produces smaller pixels in it's &amp;quot;equivalent&amp;quot; video mode (mode 1). The normal display resolution on the Amstrad CPC is '''320x200''' (mode 1) while '''ZX Spectrum''' produces &amp;quot;only&amp;quot;  '''256x192''' pixels. Amstrad's screen can be reduced in size to match the Spectrum's (256x192, in Mode1) but then the actual display window is quite smaller than on a spectrum (on the same monitor) and has a larger border because the generated pixels are slightly smaller.&lt;br /&gt;
&lt;br /&gt;
*The size and aspect of the pixels in the Spectrum's bitmapped display are comparable to the pixels in Amstrad's mode 1 bitmapped display in that both produce approximately square pixels.&lt;br /&gt;
&lt;br /&gt;
*The '''Spectrum''''s '''video ram''' takes approx '''6K'''. &lt;br /&gt;
&lt;br /&gt;
*The '''Amstrad CPC''''s '''video ram''' takes '''16K''' (approx 12K when screen is reduced to Speccie's resolution).&lt;br /&gt;
&lt;br /&gt;
*The '''Spectrum''' has a fixed '''palette of 15 colours''' (8 colours with bright versions of each making 15 in total - LIGHT black is still black). &lt;br /&gt;
&lt;br /&gt;
* The Amstrad has 3 different [[Video modes|Video Modes]]. Mode 0 is 160x200 with 16 colours, mode 1 is 320x200 with 4 colours, mode 2 is 640x200 with 2 colours. All are bitmapped. The Spectrum only has 1 video mode, 256x192 which is bitmapped.&lt;br /&gt;
&lt;br /&gt;
*'''Amstrad CPC''' has a '''palette of 27 colours.''' In mode 0 you can choose 16 of these, in mode 1 you can choose 4 of these, in mode 2 you can choose 2 of these. The Amstrad's palette includes equivalent colours that match closely the Spectrum's colours.&lt;br /&gt;
&lt;br /&gt;
*The Spectrum's screen is &amp;quot;attribute&amp;quot; based. Each 8x8 cell can be assigned a background and foreground colour (and both colours must either be non-bright or bright). There is also the choice to flash the colours in each cell (the flash is a fixed rate and alternates between paper/pen and pen/paper).  This colouring results in &amp;quot;attribute/colour clash&amp;quot; on the Spectrum. The Amstrad's screen doesn't have this, and there is no restriction on how the colours can be placed.&lt;br /&gt;
&lt;br /&gt;
* The colours of each 8x8 &amp;quot;attribute&amp;quot; cell is defined by a block of ram following the Spectrum's bitmapped screen, each byte represents one cell and each byte defines paper colour, pen colour, flash enabled and bright enabled. The colours for the pens on the Amstrad are defined by writing to the Gate-Array's palette I/O registers. The pens are read from the pixel data and the resulting colour is looked up in the palette registers.&lt;br /&gt;
&lt;br /&gt;
*The '''Spectrum''' can display all '''15 colours on the screen.'''. With limitations (2 colours per 8x8pix squares...)&lt;br /&gt;
&lt;br /&gt;
* The Amstrad can only reproduce the attributes and 15 colours at the same time as shown by the Spectrum by using Amstrad's 16 colour mode, mode 0. However, this has wider pixels (approx 2x1 ratio) and a lower horizontal resolution. If the CPC's mode 1 resolution is chosen, it is not possible because only 4 colours can be chosen. &lt;br /&gt;
&lt;br /&gt;
* On the Amstrad the 6 raster interrupts allow palette colours to be changed allowing more than the theorical amount but this is also with limitations. This technique was commonly used in Speccy ports.&lt;br /&gt;
&lt;br /&gt;
*Normally Spectrum graphics is stored in 2 colours, which means 8 pixels for each byte. In Amstrad mode 1, each byte defines 4 pixels. So for the same graphics you often need twice the RAM on the Amstrad. (This is a case where graphics without transparency are used). If transparency is used, then the amount of data can be the same.&lt;br /&gt;
&lt;br /&gt;
* The Amstrad's screen size and position can be reprogrammed, the Spectrum's screen size and position is fixed. It is possible to program the Amstrad's screen to use the entire monitor display area (at the expensive of approx. 22K of video ram being used).&lt;br /&gt;
&lt;br /&gt;
====Sound====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Spectrum (128K model and later) and Amstrad both have an AY-3-8912 sound chip. (1.7Mhz clock for AY in spectrum, 1.0Mhz clock for AY in Amstrad). &lt;br /&gt;
&lt;br /&gt;
*Spectrum 48K had a 1-bit beeper sound. Playing sounds through the beeper is very CPU intensive. The Amstrad doesn't have a beeper. The only way to simulate the beeper sound would be to convert it to AY sound.&lt;br /&gt;
&lt;br /&gt;
====Input====&lt;br /&gt;
&lt;br /&gt;
* Spectrum has multiple joystick standards. The common standards are Kempston, Sinclair and Cursor. Kempston was a common interface used on the Sinclair made Spectrum's. It plugged into the back of the machine and provided support for a single joystick. This type of joystick doesn't clash with the keyboard. The Sinclair standard is used on the Amstrad made Spectrums. These machines have two joystick ports. The Sinclair standard works by simulating keys pressed on the Spectrum keyboard. (Does the sinclair joystick cause keyboard clash?) All of these standard for the Spectrum supported the directions and 1 fire button. In comparison the Amstrad CPC models have a single joystick port which with a splitter cable can support two joysticks. The joysticks support the directions and up to 3 fire buttons on the CPC, but only 2 fire buttons on the later Plus machines. In addition using the joysticks and keyboard together on the Amstrad CPC causes keyboard clash where unwanted keys are pressed. Clash between joysticks and keys can be avoided with careful choice of keys. This clash was resolved on the Plus and can be resolved with diodes on the CPC joystick port. In general though, Amstrad games supported a single joystick, they didn't use key mappings that would avoid clash and many users didn't have these fixes so the games would suffer from keyboard clash. An example of this can be seen when playing two player Gauntlet where players could be fighting to move where they wanted to.&lt;br /&gt;
&lt;br /&gt;
* The 48K spectrums had a rubber membrane keyboard, later versions had proper keys, and the Amstrad made Spectrum's have the best keyboards. The early Amstrad CPC464's and 664's had really good strong keyboards, comparable to those on the BBC Micro, whereas later ones were more flat and less good. Both Amstrad and Spectrum have a good selection of keys.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTE: Sinclair Research (the Spectrum's manufacturer) was acquired by Amstrad after the Spectrum 128K had been made. '''&lt;br /&gt;
&lt;br /&gt;
Amstrad then improved the build quality and enhanced the Spectrum's design. The result was that the Spectrum +2, which was closer in looks and build to the CPC464/6128 (same kind of compact keyboard as CPC6128, but built-in &amp;quot;Datacorder&amp;quot;). The Spectrum +3 was also quite similar to the Amstrad CPC6128 because both had a internal 3&amp;quot; drive. So the Spectrum became closer in design to the CPC. However, the overall hardware of the Spectrum didn't change, the graphics were the same, the sound was the same, but those later Spectrum's had built in joysticks, built in cassette or disc, connections for printer etc, just like the CPC, but almost all of which the Amstrad had starting with the CPC464.&lt;br /&gt;
&lt;br /&gt;
===Disc drive===&lt;br /&gt;
&lt;br /&gt;
The Spectrum didn't have an official floppy disc interface so there were different interfaces.&lt;br /&gt;
In Russia the Betadisk interface is common, this used a WD1793 disc controller and 3.5&amp;quot; discs. This interface is incompatible with the Amstrad's.&lt;br /&gt;
&lt;br /&gt;
When Amstrad designed the +3, the used a similar disc interface to the Amstrad.&lt;br /&gt;
&lt;br /&gt;
The Amstrad designed Spectrum +3 has the following in common with the CPC6128:&lt;br /&gt;
* same disc media (3&amp;quot;)&lt;br /&gt;
* same disc controller (NEC765 compatible)&lt;br /&gt;
* the floppy controller is polled for data transfer&lt;br /&gt;
* Similar disc format (CP/M based)&lt;br /&gt;
&lt;br /&gt;
However, the Spectrum+3 uses a different DOS than the Amstrad CPC6128. This means that the functions for reading/writing files are different on the Spectrum compared to the CPC.&lt;br /&gt;
&lt;br /&gt;
The Spectrum's DOS is more powerful than the CPC's. It can read CPC discs, Spectrum +3 and PCW discs easily. In order for the Amstrad to read Spectrum and PCW discs, it needs to have a special XDPB (Expanded Disc Parameter Block) configuration installed.&lt;br /&gt;
&lt;br /&gt;
The Spectrum +3's DOS is based on the disc functions in Locoscript the CPC's DOS is AMSDOS. The Spectrum's DOS was developed after the CPCs, so clearly they saw the weakness in the CPC's DOS design and improved it.&lt;br /&gt;
&lt;br /&gt;
The Spectrum Technical wiki can be found here. This describes the Spectrum hardware in more depth:&lt;br /&gt;
&lt;br /&gt;
http://scratchpad.wikia.com/wiki/ZX_Spectrum_technical_information&lt;br /&gt;
&lt;br /&gt;
=Consequences of a Spectrum Port=&lt;br /&gt;
&lt;br /&gt;
==Input==&lt;br /&gt;
&lt;br /&gt;
The Spectrum has more joystick standards than the CPC, however reading the keyboard and joysticks and handling the input on the Spectrum is much simpler, takes less code and takes less CPU time than on the Amstrad. &lt;br /&gt;
&lt;br /&gt;
On the Amstrad it is best to read the keyboard and joystick in one pass and store the data into a buffer which can then be queried later. Then read from this buffer when you need to check the inputs.&lt;br /&gt;
&lt;br /&gt;
==Disc Loading==&lt;br /&gt;
&lt;br /&gt;
The Spectrum +3's disc interface had a design that was close to the Amstrad CPC6128's. This meant that disc loading software that used the disc interface directly could be modified easily to be used on the CPC. There are disc versions of the Alkatraz, Hexagon and Speedlock loaders common to both the CPC and Spectrum.&lt;br /&gt;
&lt;br /&gt;
However, the method for accessing the DOS is different.&lt;br /&gt;
&lt;br /&gt;
The good thing is that both shared good disc interfaces, so a disc loading system on the Spectrum, if ported to the CPC would not be a bad thing.&lt;br /&gt;
&lt;br /&gt;
==Tape Loading==&lt;br /&gt;
&lt;br /&gt;
Both the Spectrum and Amstrad had a similar method for loading or saving on cassette. For both it is CPU intensive and for both the method of representing the 1 or 0 bits is the same. &lt;br /&gt;
&lt;br /&gt;
Some CPC games used the original block loader which meant loading took much longer compared to Spectrum, some used the firmware headerless block loader (CAS READ) which was a bit faster, and some CPC games used a modified Spectrum tape loader (extracted from the Spectrum's ROM and modified for the Amstrad's hardware). &lt;br /&gt;
&lt;br /&gt;
Sometimes the Spectrum loader was modified for the CPC without exact knowledge of how it worked, this resulted in some games with bad loaders that either didn't check for errors, or which didn't work in some circumstances. This lead to unreliable loading. &lt;br /&gt;
&lt;br /&gt;
Loaders like this were used in a variety of games, not limited to Speccy Ports.&lt;br /&gt;
&lt;br /&gt;
Two good loaders that appeared on both systems are Alkatraz and Speedlock. Both were reliable and fast.&lt;br /&gt;
&lt;br /&gt;
The Amstrad's ROM loader was a bit better than the Spectrum's ROM loader because it had CRC error checking, compared to XOR based checksum and block based loading (so you could rewind and try a block again) compared to a single load.&lt;br /&gt;
&lt;br /&gt;
Consequences for porting to CPC:&lt;br /&gt;
&lt;br /&gt;
*If the loader was modified for CPC without good knowledge the loading would be unreliable. (e.g. errors are not detected, timings are bad, edge detection is dodgy).&lt;br /&gt;
&lt;br /&gt;
*On the good side, the Spectrum utilised the border to indicate both the stage of loading (indicated by different colours used in the border) and the loading progress, so a modified loader for CPC would also indicate loading progress. If messages were turned off in the Amstrad ROM loader you didn't have any indication of loading progress.&lt;br /&gt;
&lt;br /&gt;
Examples of loaders common to both Amstrad and Spectrum:&lt;br /&gt;
* Speedlock (commonly used by Ocean).&lt;br /&gt;
* Alkatraz (commonly used by US Gold).&lt;br /&gt;
&lt;br /&gt;
Spectrum loader ported to Amstrad:&lt;br /&gt;
* Aliens (UK version, original release).&lt;br /&gt;
&lt;br /&gt;
==Colours==&lt;br /&gt;
&lt;br /&gt;
The Spectrum palette (15 colours, bright at bottom):&lt;br /&gt;
&lt;br /&gt;
[[image:ZXSpectrum_palette.png|Spectrum palette (from wikipedia)]]&lt;br /&gt;
&lt;br /&gt;
The Amstrad palette (27 colours):&lt;br /&gt;
&lt;br /&gt;
[[image:AmstradCPC_palette.png|Amstrad palette (from wikipedia)]]&lt;br /&gt;
&lt;br /&gt;
A comparison of the palettes in CPC palette:&lt;br /&gt;
&lt;br /&gt;
[[image:CPC_Speccy_palette_comparison.png|Comparison of the palettes ]]&lt;br /&gt;
&lt;br /&gt;
From the comparison you can see that the Amstrad can reproduce the Spectrum's colours well, and its additional colours can provide extra shades and some colours the Spectrum can't show (e.g. orange).&lt;br /&gt;
&lt;br /&gt;
Consequences for porting to CPC:&lt;br /&gt;
* If the game was ported directly using only the Spectrum colours then the Amstrad version would have similar colours, when more appropiate colour's from it's palette could be used.&lt;br /&gt;
&lt;br /&gt;
What they should do for CPC:&lt;br /&gt;
* Recolour the graphics using the Amstrad's palette to improve the look.&lt;br /&gt;
&lt;br /&gt;
==Colour Clash from the Cell based colouring==&lt;br /&gt;
&lt;br /&gt;
The cell based colouring used on the Spectrum has its disadvantages. [[image:clash.png|right|thumb|Colour clashing in Knight Tyme. Observe the appearance of the character sprite as it merges with the background. (Background colours have priority here in this game.)]]&lt;br /&gt;
&lt;br /&gt;
When moving a sprite over a background, or a sprite over another sprite, and if both have colours you have to decide which colours take priority. &lt;br /&gt;
&lt;br /&gt;
It is not possible to have all the colours together because of the colour limitation within each 8x8 cell. &lt;br /&gt;
&lt;br /&gt;
This then means that the graphics with a lower priority then takes on the colour of the higher priority graphics.&lt;br /&gt;
&lt;br /&gt;
If a sprite's colours takes priority, and it moves with pixel by pixel movement, as soon as it enters a new cell, the background will take on it's colours. The colour clash seems to extend furthur than the sprite. This is down to the 8x8 cell colouring.&lt;br /&gt;
&lt;br /&gt;
The 6 raster interrupts on the CPC can be used to change the colours on the screen. You can redefine all the available colours, e.g. each interrupt you could re-program all the 4 available colours in mode 1. This can be done to increase the number of colours visible.&lt;br /&gt;
However, while there are more visible colours, each region is still limited to the number of available colours (e.g. limited to 4 colours in mode 1). &lt;br /&gt;
&lt;br /&gt;
If a sprite passes between two raster interrupt regions it will suffer from a form of colour clash, where the part in the new region takes the colours from that region, and the part in the old region remains in the colours from that region.&lt;br /&gt;
&lt;br /&gt;
Various ports use the raster interrupts, but how they chose to use them differs.&lt;br /&gt;
&lt;br /&gt;
'''Possible resolutions on Spectrum:'''&lt;br /&gt;
* Remove colour from the display so that background and sprites use the same colours, clash is eliminated but the game is monocolour..&lt;br /&gt;
* Move sprites in cell based movements. The colours still take priority but the clash is less of a problem.&lt;br /&gt;
* Add a black border around the sprites. Clash occurs, but because of the border it is not/less seen.&lt;br /&gt;
&lt;br /&gt;
'''Consequences for porting to CPC:'''&lt;br /&gt;
* If colour priority, colour clash exists: CPC version has the colour clash simulated which is unnecessary.&lt;br /&gt;
* If 2 colours are used and colour clash eliminated: CPC version lacks colour, same as Spectrum&lt;br /&gt;
* If cell based movement is done, then CPC version has the same movement whereas it could be pixel perfect on CPC.&lt;br /&gt;
* If black border is used, CPC has the unnecessary black border.&lt;br /&gt;
* The CPC can't replicate the Spectrum's colour attribute system, this means a game converted to Amstrad's mode 1 has even less colours than the Spectrum version. The CPC version then has 4 colours, compared to up to 15 possible colours on the Spectrum.&lt;br /&gt;
&lt;br /&gt;
'''What should be done on CPC:'''&lt;br /&gt;
* Recolour and redesign the graphics appropiately for the CPC in either mode 1 or mode 0.&lt;br /&gt;
* Use the Amstrad interrupts and change the colours multiple times each frame, this will give each region (between each interrupt) it's own colours increasing the number of colours on screen. Each region is 52 scanlines in height, and the whole screen in width. Note that the colours must be set for each region for each frame to maintain them, and that the pixels within each region are still limited to 4 colours in mode 1. The colour regions like this are ideal for having different colours for the HUD and for the main game area. This can be a CPU intensive technique.&lt;br /&gt;
&lt;br /&gt;
Examples of colour clash ported to the CPC:&lt;br /&gt;
(These examples show colour clash implemented on the CPC in the same way as the spectrum would show it)&lt;br /&gt;
* Bionic Commando&lt;br /&gt;
&lt;br /&gt;
Examples of attribute based colour system ported to CPC:&lt;br /&gt;
* Badlands&lt;br /&gt;
&lt;br /&gt;
Examples of games with little colour because attribute colours have been removed:&lt;br /&gt;
* Peter Pack Rat&lt;br /&gt;
&lt;br /&gt;
Examples of using raster interrupts to increase colours:&lt;br /&gt;
* Pacmania and Black Tiger (main play area remains 2 colours)&lt;br /&gt;
* Strider 4 colours in game area, 4 colours in status panel.&lt;br /&gt;
* Super Wonder Boy (Monochrome background and monochrome sprites)&lt;br /&gt;
* [[Deflektor]] (main play area has one set of colours, status panel has another set)&lt;br /&gt;
&lt;br /&gt;
==Advantages of the cell based colouring==&lt;br /&gt;
&lt;br /&gt;
The Spectrum's cell based colouring has advantages.&lt;br /&gt;
&lt;br /&gt;
=== Conveying state on a HUD ===&lt;br /&gt;
&lt;br /&gt;
The state of a game play element on the HUD can be coloured accordingly. e.g. a bomb that is about to explode could change colour from white to red.&lt;br /&gt;
&lt;br /&gt;
'''What should be done on CPC:'''&lt;br /&gt;
* If you have enough free palette entries, e.g. mode 0, then you can change the colour for the pen used to display the item in the palette. This is quick. However if you are using mode 1, then the number of palette entries is much more limited and you should draw the bomb in a different way. The consequence of this is that you may need to store additional graphics for this and it will take much longer to update the HUD than on the Spectrum.&lt;br /&gt;
&lt;br /&gt;
=== General colouring ===&lt;br /&gt;
&lt;br /&gt;
Since the background and foreground colour can be defined per cell then you can use all the Palette of the Spectrum at once.&lt;br /&gt;
&lt;br /&gt;
'''What should be done on CPC:'''&lt;br /&gt;
* If you are using mode 0 then you are free to define the colours per pixel from the 16 colour palette. This is ok if the chunkier pixels can be used, not so good if there is detail in the graphics that needs to be retained.&lt;br /&gt;
* If you are using mode 1 then you will see less colour. You can set the colour palette for multiple regions on the screen, or you can use the 4 colour palette more creatively.&lt;br /&gt;
&lt;br /&gt;
==Sound==&lt;br /&gt;
&lt;br /&gt;
There is 1 sound source on 48K spectrums: its beeper, and 2 sources of sound on 128K spectrums: beeper and AY.&lt;br /&gt;
&lt;br /&gt;
Beeper sound is simple. The spectrum has a speaker which you can turn on/off through a I/O port on the Spectrum's ULA. To make different sounds, you turn it on and off at different rates, all under control of the CPU. Speaker sound is CPU intensive because the timing is all done through the CPU and delay loops. The consequence on the Spectrum is that not many games have beeper music during the game, and those that do are often staccato like (e.g. Manic Miner) (the game takes some time to update, then some time for sound, and this repeats). If the sound was made for the Spectrum beeper, this would need to be converted to AY sound for the CPC, the result would not be exactly the same.&lt;br /&gt;
&lt;br /&gt;
Sound written for the AY in the Spectrum can't be ported directly because it would be out of tune, this is down to the difference in master clock given to the AY (1.7Mhz on Spectrum, 1.0Mhz on Amstrad). The music would need to be altered. When this is done, the music is almost the same.&lt;br /&gt;
&lt;br /&gt;
It is worth noting that mostly the 128K version of Spectrum games had AY tunes, because the 128K model of the Spectrum is when the AY was introduced.&lt;br /&gt;
&lt;br /&gt;
Consequences for porting to CPC:&lt;br /&gt;
* No sound (if beeper only sound and it's not translated)&lt;br /&gt;
* Sound out of tune on CPC (if AY sound without some conversion)&lt;br /&gt;
* Sound is beeper like and staccato when it could be AY &amp;quot;native&amp;quot;&lt;br /&gt;
&lt;br /&gt;
What they should do for the CPC:&lt;br /&gt;
* Compose the tune for CPC&lt;br /&gt;
* For AY sounds, convert the music/effects to the CPC's AY master clock so that it is in tune (the tune may loose some of it's accuracy if this is done, especially regarding the hardware envelopes and noise, and this means the sound will not be exactly the same, but is much more acceptable).&lt;br /&gt;
&lt;br /&gt;
Examples of Spectrum Beeper sound converted to AY:&lt;br /&gt;
* Knightmare&lt;br /&gt;
* Last Ninja 2&lt;br /&gt;
* Super Hang On&lt;br /&gt;
&lt;br /&gt;
==Graphics==&lt;br /&gt;
&lt;br /&gt;
The Spectrum's graphics use 1 bit per pixel to define them. Each byte defines 8 pixels. The colour of each pixel is then defined by the attribute system.&lt;br /&gt;
&lt;br /&gt;
The attribute &amp;quot;ram&amp;quot; define the background colour (where a bit is 0), a foreground colour (where a bit is 1), if the dark variant of the colours should be used, or if the colours should flash at a fixed rate.&lt;br /&gt;
&lt;br /&gt;
If the background is a single colour, the sprites can be ORed on. If shading is to be used a mask is often stored with the pixels. The mask is used to remove or retain (depending on the mask type) pixels on the screen. The final result on the screen is the result of the mask then the sprite pixels.&lt;br /&gt;
&lt;br /&gt;
On the Amstrad, the number of bits to define a pixel, the number of colours that can be used, and the width of the pixels is different for each mode. &lt;br /&gt;
* Mode 0 uses 4 bits for each pixel. Each byte defines 2 pixels. 16 colours can be used without restriction. Wide pixels. This is lower resolution than the spectrum.&lt;br /&gt;
* Mode 1 uses 2 bits for each pixel. Each byte defines 4 pixels.  4 colours can be used without restriction. Pixels the same size as the spectrum.&lt;br /&gt;
* Mode 2 uses 1 bit for each pixel. Each byte defines 8 pixels. 2 colours can be used without restrictions. Pixels are thinner than the spectrum. This is higher resolution.&lt;br /&gt;
&lt;br /&gt;
Consequences:&lt;br /&gt;
* The pixel data and colours are stored in a different way than the CPC, so some conversion must be done before the graphics can be used. Either the graphics are remade, or often converted through some automatic process.&lt;br /&gt;
* There is a trade off between mode 1, keeping the same resolution as the Spectrum but having only 4 colours, or using mode 0, with half the horizontal resolution but 16 colours. The choice depends on the detail required in the graphics.&lt;br /&gt;
&lt;br /&gt;
The following sections describe possible ways to handle the graphics on the Amstrad.&lt;br /&gt;
&lt;br /&gt;
===Techniques used for Graphics===&lt;br /&gt;
&lt;br /&gt;
====Graphics with transparency====&lt;br /&gt;
&lt;br /&gt;
=====Storage=====&lt;br /&gt;
&lt;br /&gt;
A common way to do this is on the Spectrum is to store 1 byte of mask, followed by 1 byte of pixel data, and to repeat this for the width of the sprite divided by 8. (Each byte representing a 8 pixel wide single line slice of the sprite).&lt;br /&gt;
&lt;br /&gt;
If we consider a sprite which is 16x16. Each byte contains 8 pixels. For each line 2 bytes would be needed for pixel data and 2 bytes for mask. The total storage space required would be (2+2)*16 = 64 bytes.&lt;br /&gt;
&lt;br /&gt;
If we consider mode 1 on the Amstrad, and we used the same representation, we could freely use 4 colours for the sprites. The Amstrad would also need 2 times the ram space to store the data, because in mode 1 there is half the number of pixels per byte.&lt;br /&gt;
So, each byte contains 4 pixels. For each line 4 bytes would be needed for pixel data and 4 for mask: (4+4)*16 = 128 bytes.&lt;br /&gt;
&lt;br /&gt;
However, if we sacrifice 1 colour, so we have 1 pen which is fully transparent and 3 for opaque sprite colours then we don't need the mask to be stored this way. The mask is common for all sprites and we could store this as a single 256 byte array. We would still need 4 bytes for the pixel data but the result now is: 4*16 = 64 bytes. The same weight as the Spectrum.&lt;br /&gt;
&lt;br /&gt;
Mode 2 is generally not used for games on the Amstrad because of it's lack of colour. The pixels in this mode are half as wide as the Spectrum's. If the Spectrum data was used directly, which it could be, then the sprites would be half the width of the Spectrum's. In this case the data storage is the same as on the Spectrum. If we wanted to maintain the same resolution we would need to double up each pixel, effectively magnifying it in the width by 2. The result would be twice the size of the Spectrum data.&lt;br /&gt;
&lt;br /&gt;
If mode 0 is used, we could either store a mask and byte, as for the Spectrum, or more commonly we use pen 0 for full transparent and leave the other 15 pens to define the sprite. We could then use half the number of pixels horizontally and lower resolution too. Each byte now contains 2 pixels. The sprite is 8x16 now = (8/2)*16 = 64 bytes. This the same storage size as for mode 1. If the size of the sprites were too small, then we would need to increase the size and the storage space.&lt;br /&gt;
&lt;br /&gt;
Therefore, depending on the representation, this would determine how much ram is consumed on the Amstrad.&lt;br /&gt;
&lt;br /&gt;
The best choices are to go for mode 1, and use a common mask table, with 3 colours per sprite. Or use mode 0, use a common mask table, with 15 colours per sprite. In both cases we use 256 bytes more than the Spectrum equivalent graphics. &lt;br /&gt;
&lt;br /&gt;
So we show that some games could be recoloured and still use about the same amount of data as the Spectrum.&lt;br /&gt;
&lt;br /&gt;
The above do not consider the size or speed of the code to clip or draw the sprite to the Amstrad's screen compared to the Spectrum code. The values above assume the Spectrum version is not storing pre-shifted sprites, or using a pre-shift table, and when drawing to pixel positions is shifting the pixel data during draw. The comparison becomes more complicated when these are involved.&lt;br /&gt;
&lt;br /&gt;
Examples of games probably ported from the Spectrum (the use a Spectrum sized screen), in mode 1 and recoloured:&lt;br /&gt;
* HeroQuest&lt;br /&gt;
* [[Head Over Heels]]&lt;br /&gt;
* Shadow of the Beast&lt;br /&gt;
&lt;br /&gt;
Examples of games where re colouring could have been done:&lt;br /&gt;
* [[Pacmania]]&lt;br /&gt;
&lt;br /&gt;
====Graphics without transparency====&lt;br /&gt;
&lt;br /&gt;
=====Storage=====&lt;br /&gt;
&lt;br /&gt;
Tiles are often used to define background graphics. These are opaque and don't need masks. The benefit here is that on CPC we can use all the colours in the palette, so for mode 1, all 4 colours can be used and in mode 0 all 16 colours can be used.&lt;br /&gt;
&lt;br /&gt;
However on CPC generally non-transparent graphics will often take more storage space:&lt;br /&gt;
&lt;br /&gt;
For the spectrum a 8x16 tile: (8/8)x16 = 16 bytes.&lt;br /&gt;
&lt;br /&gt;
CPC mode 0: (4/2)x16 = 32 bytes&lt;br /&gt;
&lt;br /&gt;
CPC mode 1: (8/4)x16 = 32 bytes&lt;br /&gt;
&lt;br /&gt;
CPC mode 2: (8/8)x16 = 16 bytes&lt;br /&gt;
&lt;br /&gt;
In mode 0 and mode 1, the tiles on the CPC will take twice as much space compared to the Spectrum. This will impact the memory used and depending on the number of tiles this is a significant memory impact.&lt;br /&gt;
&lt;br /&gt;
====Real-Time Conversion of Spectrum graphics====&lt;br /&gt;
&lt;br /&gt;
A common way to get the Speccy game running on the CPC and using the same storage space for the graphics was to perform real-time conversion from the Spectrum graphics.&lt;br /&gt;
&lt;br /&gt;
* Graphics are stored on the Amstrad in the same format as on the Spectrum (2 colour, 1BPP with sprites having masks)&lt;br /&gt;
* Amstrad's mode 1 is used to maintain the same pixel resolution.&lt;br /&gt;
* A function converts the graphics on-demand, while the game is running, into the form that is displayed for the screen.&lt;br /&gt;
&lt;br /&gt;
Needless to say, this enabled the port without the use of additional graphics artists. Therefore it would be cheaper and easier if a programmer was tasked with making a conversion alone.&lt;br /&gt;
&lt;br /&gt;
Disadvantages:&lt;br /&gt;
* This process takes a lot more CPU power compared to the Spectrum version, because in addition to drawing and erasing the sprites, the pixel data must also be converted at the same time. &lt;br /&gt;
* This resulted in a significantly slower game.&lt;br /&gt;
* Amstrad version had less colours (often as little as 2 colours)&lt;br /&gt;
&lt;br /&gt;
Advantages:&lt;br /&gt;
* Pixel data took less RAM than if it&lt;br /&gt;
&lt;br /&gt;
====Mode 0====&lt;br /&gt;
&lt;br /&gt;
When using mode 0, the screen can be reprogrammed to use the same sized screen as when using mode 1. However the resolution would be 128x192.&lt;br /&gt;
&lt;br /&gt;
Using mode 0 has additional impact on the gameplay and game logic:&lt;br /&gt;
- there are fewer pixels horizontally therefore  both tiles and sprites are described by fewer pixels in width (although pixels are wider). Then any calculations that use pixel coordinates will need to be adjusted. This includes positioning sprites on the screen, sprite to sprite collision, converting sprite pixel coordinates to a tile map location, converting sprite pixel coordinates to a collision map location, determining if a sprite is moving off the right side of the screen. &lt;br /&gt;
&lt;br /&gt;
If the original sprites were square on the Spectrum (e.g. 16x16), then with mode 0 they are 8x16, and we may need additional code for these calculations to handle that.&lt;br /&gt;
&lt;br /&gt;
- movement per pixel will be faster horizontally than vertically. We can accept that, or if movement is meant to be the same in all directions then sprites may need to move faster vertically to ensure the movement is consistent. This then has an impact on gameplay because sprites will take less time to move over the screen and any time based goals may need to be adjusted to compensate and make the game goals consistent.&lt;br /&gt;
&lt;br /&gt;
Using mode 1 is the route to a quicker port because there are less changes to the game code.&lt;br /&gt;
 was stored in an Amstrad native form so the game could run on a 64K Ram machine (CPC464 and CPC664, 464Plus).&lt;br /&gt;
* If the colour attributes of the Spectrum were not simulated then the attribute data would not need to be stored for the CPC.&lt;br /&gt;
&lt;br /&gt;
====Mode 1====&lt;br /&gt;
&lt;br /&gt;
Amstrad's mode 1 is the closest mode which compares with the Spectrum's graphical abilities.&lt;br /&gt;
&lt;br /&gt;
The pixels are almost the same size. The CPCs screen dimensions can be reprogrammed to re-create the Spectrum's 256x192 resolution.&lt;br /&gt;
&lt;br /&gt;
However, the CPC has a different &amp;quot;pixel clock&amp;quot; compared to the Spectrum. The CPC was designed for a 320x200 display instead of a 256x192 display and in fact the the pixels are smaller on the screen when you compare mode 1 (the closest equivalent on the CPC) to the Spectrum.&lt;br /&gt;
&lt;br /&gt;
So when the screen is reprogrammed you end up with a larger border on the CPC.&lt;br /&gt;
&lt;br /&gt;
This (the larger border) led to the false argument that the CPC's resolution was inferior to the Spectrum one although the amount of pixels on the screen is EXACTLY the same.&lt;br /&gt;
&lt;br /&gt;
====Double buffering====&lt;br /&gt;
&lt;br /&gt;
TODO:&lt;br /&gt;
&lt;br /&gt;
==Screen dimensions==&lt;br /&gt;
&lt;br /&gt;
By setting CRTC register settings the Amstrad's screen dimensions can be reprogrammed to match the Spectrum's.&lt;br /&gt;
The normal values used are R1=32, R6=24.&lt;br /&gt;
&lt;br /&gt;
There are advantages to reprogramming the screen dimension to match the Spectrum's.&lt;br /&gt;
* The gameplay is similar because the player sees the same amount of map and there are the same number of enemies and they move in the same way.&lt;br /&gt;
* Graphics/levels would not need to be designed for a wider screen (e.g. in mode 1, 320 compared to 256)&lt;br /&gt;
* For a smaller screen less memory is used for the screen (16KB vs 12K). The memory used by the screen is the same regardless of CPC mode used. Unused areas can be used to store graphics, code and music. For a CPC screen at &amp;amp;c000, the unused areas are: c600-c7ff, ce00-cfff, d600-d7ff, de00-dfff, e600-e7ff, ee00-efff, f600-f7ff, fe00-ffff&lt;br /&gt;
&lt;br /&gt;
==Random numbers==&lt;br /&gt;
&lt;br /&gt;
Sometimes Spectrum games generate random numbers by reading from the Spectrum's ROM which is always readable in the memory range &amp;amp;0000-&amp;amp;3fff.&lt;br /&gt;
&lt;br /&gt;
''Consequences for CPC:''&lt;br /&gt;
&lt;br /&gt;
* There is often not enough memory to store the Spectrum ROM in the Amstrad's memory. If the range read could be determined then possible a smaller range could be stored. &lt;br /&gt;
* It would be wasteful to store part or all of the Spectrum's ROM in the memory&lt;br /&gt;
* It is not legal to store any part of the Spectrum's ROM in memory&lt;br /&gt;
&lt;br /&gt;
Some games may use the 'R' register to generate a semi-random number.&lt;br /&gt;
&lt;br /&gt;
''Consequences for CPC:''&lt;br /&gt;
&lt;br /&gt;
* The R register value is based on the number and which instructions are executed. It is likely that the number of instructions between each read of the 'R' register could differ.&lt;br /&gt;
&lt;br /&gt;
For both of these methods the consequences for CPC are:&lt;br /&gt;
&lt;br /&gt;
* the numbers generated are likely to produce numbers which will differ compared to the Spectrum version and therefore the gameplay could be different. It may be subtle, it may be significant.&lt;br /&gt;
* reading a random number may take more CPU instructions to do this making it slightly slower.&lt;br /&gt;
&lt;br /&gt;
Where possible the Spectrum and Amstrad versions should use the same random number generation based on a stored seed.&lt;br /&gt;
&lt;br /&gt;
==Memory arrangement==&lt;br /&gt;
&lt;br /&gt;
Spectrum game's often use the memory from &amp;amp;5500-&amp;amp;ffff.&lt;br /&gt;
&lt;br /&gt;
''Consequences for CPC:''&lt;br /&gt;
- If you are not using a custom disc or tape loader then during loading you will need to preserve the firmware memory regions. The easiest thing to do is start the game lower in memory (&amp;amp;0040), use the default screen at &amp;amp;c000-&amp;amp;ffff, and then once loaded copy data over these areas (provided you are not doing furthur loading/saving).&lt;br /&gt;
&lt;br /&gt;
==Original consequences (under construction)==&lt;br /&gt;
&lt;br /&gt;
The Amstrad CPC was one of the best 8-bit computers of its time in terms of graphical capabilities. But those advanced capabilities had an impact on CPU resources. &lt;br /&gt;
As so many games were ported from the Spectrum, a machine with decidedly lower visual specs, the Amstrad range could hardly benefit from its main advantage while lack of optimization meant that aspects as scroll or playing area fared even worse than the Spectrum versions. You have to remember that Spectrum had less resources taken by Video RAM, so could handle animation or scrolling more easily. It is also a misconception to believe the screen was downsized in those games to gain processor resources. It was only done to use the Speccy graphics more easily, and we can doubt the code was (re-)designed so such a screen reduction would even gain CPU resources.&lt;br /&gt;
&lt;br /&gt;
Interestingly, games in Mode 1 could have been good despite the lack of colours, if only those colours were used properly more often.&lt;br /&gt;
&lt;br /&gt;
Most of them got their graphic totally unchanged, displaying some kind of colour attributes &amp;quot;artifacts&amp;quot;, a tell-tale sign of a Speccy port.&lt;br /&gt;
&lt;br /&gt;
On the other hand, as mentioned before, those games weren't always bad. Games with no need of scrolling and with re-coded graphics could actually be good.&lt;br /&gt;
&lt;br /&gt;
=Investigation into a Speccy Port=&lt;br /&gt;
&lt;br /&gt;
Arnoldemu attempted a Speccy Port in 2022-2023 and the result is 'Mayhem'. The documentation with this game has comparisons and describes the decisions made when making this conversion. You can read about the elements of this journey.&lt;br /&gt;
&lt;br /&gt;
=Lists of speccy ports=&lt;br /&gt;
Note: these lists are by no means comprehensive, they just include the most high-profile releases.&lt;br /&gt;
&lt;br /&gt;
* [[Mayhem]] - [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=18884] A recent Speccy port to CPC and PCW done by a single person. Read the document to see the comparison, issues encountered, choices made, read about the journey.&lt;br /&gt;
&lt;br /&gt;
=='''Computer originals Hits'''==&lt;br /&gt;
(most of them ended up being decent) :&lt;br /&gt;
&lt;br /&gt;
*[[H.A.T.E Hostile All Terrain Encounter]]&lt;br /&gt;
*Highway encounter&lt;br /&gt;
*Lotus turbo Esprit challenge&lt;br /&gt;
*Fighting Warrior&lt;br /&gt;
*Vendetta&lt;br /&gt;
*Hard Drivin' &lt;br /&gt;
*Way of the Tiger&lt;br /&gt;
*Last Ninja2 &lt;br /&gt;
*Myth, history in the making&lt;br /&gt;
*[[Saboteur]] I&lt;br /&gt;
*Saboteur II &lt;br /&gt;
*SWIV &lt;br /&gt;
*Shadow of the beast&lt;br /&gt;
&lt;br /&gt;
The numerous CodeMaster or Hewson games are not listed. Many of them were cheap budget Speccy games to begin with, and were quite well ported or remained good...&lt;br /&gt;
&lt;br /&gt;
=='''Well known franchises'''==&lt;br /&gt;
*Scooby Doo&lt;br /&gt;
*Thundercats.&lt;br /&gt;
*MASK 3 : Venom Strike Back &lt;br /&gt;
*Airwolf 2&lt;br /&gt;
*Batman: The Caped Crusader&lt;br /&gt;
&lt;br /&gt;
=='''Adult games'''==&lt;br /&gt;
*Sabrina &lt;br /&gt;
*Samantha fox strip poker.&lt;br /&gt;
*Strip poker II&lt;br /&gt;
&lt;br /&gt;
=='''Movie Franchises'''==&lt;br /&gt;
*Indianna Jones 3 action game.&lt;br /&gt;
*Back to the future 2 (half of the parts were Speccy Port)&lt;br /&gt;
*Big Trouble In Little China&lt;br /&gt;
&lt;br /&gt;
=='''Arcade hits'''==&lt;br /&gt;
*[[R-Type]] &lt;br /&gt;
*[[Pac-Mania]]&lt;br /&gt;
*Salamander&lt;br /&gt;
*Dragon Breed&lt;br /&gt;
*Scramble Spirits&lt;br /&gt;
*[[Black Tiger]] - [[Black Tiger CPC-Spectrum Comparison]]&lt;br /&gt;
*Strider&lt;br /&gt;
*Bionic Commando&lt;br /&gt;
*Super Wonderboy&lt;br /&gt;
*Double Dragon 3&lt;br /&gt;
*Super Hang-On&lt;br /&gt;
*Enduro Racer&lt;br /&gt;
*Toobin'&lt;br /&gt;
*Xybots&lt;br /&gt;
*Pit fighter&lt;br /&gt;
*Cabal&lt;br /&gt;
*Street Fighter&lt;br /&gt;
*Karnov&lt;br /&gt;
*Dynasty Wars&lt;br /&gt;
*Gauntlet 3&lt;br /&gt;
*Midnight resistance&lt;br /&gt;
&lt;br /&gt;
=='''Best known speccy ports'''==&lt;br /&gt;
&lt;br /&gt;
All those games are frequently used in 8bit wars style videos and reviews, hence they have served as a counter-argument to the CPC's superior abilities. Those games were well known hits ported on pretty much all computers of their time and therefore constituted the very basis of comparison between most systems of the era.&lt;br /&gt;
&lt;br /&gt;
*Shadow of the beast&lt;br /&gt;
*Myth, history in the making &lt;br /&gt;
*Gauntlet 3&lt;br /&gt;
*SWIV &lt;br /&gt;
*R-Type &lt;br /&gt;
*PacMania&lt;br /&gt;
*Salamander&lt;br /&gt;
*Dragon Breed&lt;br /&gt;
*Scramble Spirits&lt;br /&gt;
*Black Tiger&lt;br /&gt;
*Strider&lt;br /&gt;
*Bionic Commando&lt;br /&gt;
*SuperWonderboy&lt;br /&gt;
*Double Dragon3&lt;br /&gt;
*Super Hang-On&lt;br /&gt;
*Enduro Racer&lt;br /&gt;
*Toobin&lt;br /&gt;
*Xybots&lt;br /&gt;
*Pit fighter&lt;br /&gt;
*Cabal&lt;br /&gt;
*Last Ninja2 &lt;br /&gt;
*Thundercats.&lt;br /&gt;
*Hard Drivin'&lt;br /&gt;
*Sabrina&lt;br /&gt;
*Samantha fox strip poker.&lt;br /&gt;
*Strip Poker II&lt;br /&gt;
*Airwolf 2&lt;br /&gt;
*Indianna Jones 3 action game.&lt;br /&gt;
*Back to the future 2&lt;br /&gt;
*Vendetta&lt;br /&gt;
&lt;br /&gt;
=The 3 levels of Speccy porting=&lt;br /&gt;
&lt;br /&gt;
Of course the level of porting could greatly depend on whatever strategy the programmers/graphists used to port the original Spectrum game.&lt;br /&gt;
&lt;br /&gt;
*A monochrome game could remain monochrome or be recolored for the CPC, or only parts of it (only sprites or Tiles but not both - mostly only sprites.)&lt;br /&gt;
*A colored game with design-wise graphics (character based design) could be the exact same yet with even less colours.&lt;br /&gt;
*Or Tiles/sprites could simply be completely well re-done/re-drawn, even in Mode 0 sometimes.&lt;br /&gt;
&lt;br /&gt;
==Rushed and Lazy==&lt;br /&gt;
&lt;br /&gt;
The game is exactly as on the Spectrum, even displaying graphical artifacts as Colour attributes and/or monochrome display for the game's window but not always the HUD, which may even often feature extra colours thanks to Raster colour changes, yet this doesn't really help to see what happens on the game's window.&lt;br /&gt;
&lt;br /&gt;
Also sprites may display Transparency/translucency with background's colour (=colour clash), a typical Spectrum &amp;quot;feature&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Probably achieved by using almost the exact Spectrum code and emulating the Spectrum attributes on the CPC.&lt;br /&gt;
&lt;br /&gt;
Examples : &lt;br /&gt;
*'''PacMania'''&lt;br /&gt;
[[File:Pacmania title.png]]&lt;br /&gt;
[[File:Pac04.png]]&lt;br /&gt;
&lt;br /&gt;
Typical example, yet it managed to be a nice game despite this. The title screen and HUD shows the color attributes and were almost completely unchanged, yet with less colours on screen than the Speccy version.&lt;br /&gt;
&lt;br /&gt;
Ironically, the game manages to display 6 colours in the 4 colours Mode1 - yet the game's area remains completely monochromatic (coded in 1 bit) and colour attributes artifacts are still present.&lt;br /&gt;
&lt;br /&gt;
*'''[[Black Tiger]]''': Same as PacMania&lt;br /&gt;
*'''Super Hang On''' : graphics Transparency/translucency&lt;br /&gt;
*'''Enduro Racer''' : same as Super Hang On, even more displayed as Sprites more often cross the different colored parts of the screen (while jumping)&lt;br /&gt;
*'''Bionic Commando''' : there are even inverted/negative colored sprites&lt;br /&gt;
*'''Sabrina''' : same as Bionic commando&lt;br /&gt;
*'''Gauntlet 3''' : HUD is properly recolored (3 shades) but in-game window is monochrome (1bit coded sprites and tiles)&lt;br /&gt;
*'''[[R-Type]]''' : Monochrome background while sprites still are &amp;quot;coloured&amp;quot; as with Colour attributes, hence even featuring less colours than original Spectrum game, while the entire screen still displays more than the only 4 Mode1 colours...(HUD raster trick). This game was done in 3 weeks by only one man, who simply emulated the speccy stuff on CPC. Given that the Spectrum game was a great release the CPC port is not too bad.&lt;br /&gt;
&lt;br /&gt;
An special mention must go for '''Mevlut &amp;quot;Speccy&amp;quot; Dinc''', one of the worst offenders with nightmares as '''Big Trouble In Little China''', '''Enduro Racer''', '''Hammerfist''', '''Knightmare''', '''Last Ninja 2''', '''Last Ninja 2 Remix''', '''Prodigy''', '''Super Hang-On''' and '''Time Machine'''.&lt;br /&gt;
&lt;br /&gt;
==Semi-lazy==&lt;br /&gt;
&lt;br /&gt;
Well redone graphically, but not always as would actually be needed. &lt;br /&gt;
&lt;br /&gt;
Examples :&lt;br /&gt;
*'''HeroQuest''':  still has monochrome feeling (2 blue shades being used) while actually being properly 2 bit re-coded. Ditherings  use 3-colour gradients instead of the Spectrum's 2, and the grey adds a feeling of more colour.&lt;br /&gt;
*'''Strider''' has recoloured sprites, displaying no attributes, but Backgrounds remains monochrome, and the game is sluggish (because the CPU must still convert 1bpp graphics into 2bpp), yet the HUD+Raster trick enable a 6 colours displayed on screen and the HUD looks good.&lt;br /&gt;
*'''Shadow of the Beast''': No real 3-4 coloured ditherings or even additional colours thanks to dithering the 2 medium colours together in many graphics (exteriors or for many sprites), yet the square Spectrum attributes are not displayed, while the Spectrum version remains monochrome (in game window, not HUD) in order to simply avoid Colour clashes. Would have needed more development time and a real CPC version.&lt;br /&gt;
&lt;br /&gt;
==Good Job==&lt;br /&gt;
Those games are often more to be seen as proper Cross-Dev.&lt;br /&gt;
&lt;br /&gt;
Graphics, despite sharing a common ancestry, are well redone, and take into account the Amstrad power. Sometimes those games are not that well ported, yet their concept and gameplay are such that this is not that important: the game is simply too good to be annoyed by such detail as the use of Mode1, and they were still sufficiently re-done.&lt;br /&gt;
&lt;br /&gt;
*[[Head Over Heels]]&lt;br /&gt;
*[[Deflektor]]&lt;br /&gt;
*'''Switchblade''': the GX4000 cartridge version displays extra features such as large vertical ditherings in a lot of Red shades (sky) or PLUS Hardware sprites &amp;quot;patches&amp;quot; as extra coloured tiles. This is more than enough to get a properly coloured feeling.&lt;br /&gt;
&lt;br /&gt;
Some Speccy ports &amp;quot;done right&amp;quot; may also use Mode 0 instead of Mode 1, hence being graphically fully CPC (yet tiles or sprites are still comparable in dimensions). The result may vary from awful (the code is not optimised enough for CPC) to great (a well optimised Z80 game management engine with a different and accurate/efficient graphic display engine). This can be seen in '''Space Gun''': Mode 0 and even PLUS features, yet the attribute-designed-unmasked sprites remain, in a sluggish game.&lt;br /&gt;
&lt;br /&gt;
=Techniques used=&lt;br /&gt;
&lt;br /&gt;
==Monochromatic playfield and Sprite Masks==&lt;br /&gt;
&lt;br /&gt;
Having a monochrome playfield on ZX Spectrum is a common way to have no colour clashes - simply because there are no colours to clash! Also, most of those games then had masked sprites. This meant that each set of sprites had another &amp;quot;sprite set&amp;quot; for the mask, being actually 2x1bpp (bit per pixel) sets of data.&lt;br /&gt;
&lt;br /&gt;
Some games coders actually used this to get the Sprites coded in 2bpp and used one of the 4 inks in mode1 to be the mask. This then took up almsot no more RAM used by data than the original (concerning masked Graphics). As a result some of those speccy ports have sprites in another colour than the background, which is actually better in terms of playability/look.&lt;br /&gt;
&lt;br /&gt;
An example of this is '''Super wonder boy''' which could have even used one more colour for the sprites, but didn't.&lt;br /&gt;
&lt;br /&gt;
Needless to say, the Background Tiles and Letter fonts were still in 1bpp converted in real time so the CPU had no rest and such games weren't faster nor that much better looking.&lt;br /&gt;
&lt;br /&gt;
On the other hand, some games, despite having such Masked sprite totaling 2bpp had absolutely no sprite re-code at all (although this could have easily been prevented). '''Black Tiger''' is such a case.&lt;br /&gt;
&lt;br /&gt;
Nevertheless, those games had one advantage : the smooth movement of sprites.&lt;br /&gt;
&lt;br /&gt;
'''Examples :''' &lt;br /&gt;
&lt;br /&gt;
*Batman: The Caped Crusader&lt;br /&gt;
&lt;br /&gt;
Decently ported, As it use the 2bpp for the sprites in full potential. The sprites use 3 colours and the background 2 colours, including colour the unused by sprites, this make a poor background but the differently coloured sprites enable a better visibility.&lt;br /&gt;
&lt;br /&gt;
*Strider : like Batman: The Caped Crusader... sprites use 3 colours and background 2... the difference in used inks give the sprites some extra visibility.&lt;br /&gt;
&lt;br /&gt;
Strider also features some raster effect to get the HUD with extra colours, yet this certainly slow down the game a bit..&lt;br /&gt;
&lt;br /&gt;
*Super wonderboy (wonderboy2) : poor port... the sprites use only 2 colours while they could actually use 3 with no extra effort but some graphical job.&lt;br /&gt;
Yet compaired to spectrum version, the CPC version manage to have the sprite more visible thanks to their different ink.&lt;br /&gt;
&lt;br /&gt;
==Masked Backgrounds==&lt;br /&gt;
&lt;br /&gt;
Some (rare) games actually used a mask for the Bakcground tiles too. This explains why they could be fully recoded with no notable additional weight for the data. Such games are often Isometric games and are considered among the good speccy ports (or actual Cross-Dev).&lt;br /&gt;
&lt;br /&gt;
'''Examples :'''&lt;br /&gt;
&lt;br /&gt;
*'''Heroquest''': the Background tiles are also in 3 colours. Yet there is a really poor use of the mask colour.&lt;br /&gt;
*'''Head over Heels''': yet the colours are better used than in Heroquest. If you look carefully, there are 2 kind of &amp;quot;background&amp;quot; elements. &lt;br /&gt;
**Real non-masked Background (floor, walls) which use  the full 4 colours, &lt;br /&gt;
**and masked elements such as Sprites, Doors, Platforms... which are 3 colours only.&lt;br /&gt;
&lt;br /&gt;
==Unmasked games and CPC colour clashes==&lt;br /&gt;
This category includes some of the worse examples, since actual Spectrum deficiencies were ported to the CPC.&lt;br /&gt;
&lt;br /&gt;
*'''Bionic Commando'''&lt;br /&gt;
*'''Enduro Racer'''&lt;br /&gt;
&lt;br /&gt;
==Attribute/Character based Sprites and Animation==&lt;br /&gt;
&lt;br /&gt;
The cell based colouring used on the Spectrum has it's disadvantages. &lt;br /&gt;
&lt;br /&gt;
When moving a sprite over a background, or a sprite over another sprite, and if both have colours you have to decide which colours take priority. &lt;br /&gt;
&lt;br /&gt;
It is not possible to have all the colours together because of the colour limitation within each 8x8 cell. &lt;br /&gt;
&lt;br /&gt;
The problem then comes down to is that the graphics with a lower priority then takes the colour of the higher priority graphics. &lt;br /&gt;
&lt;br /&gt;
Such games had no smooth movement of sprites. The sprite moved &amp;quot;character per character&amp;quot;. As such the sprites are often unmasked, being not really more than &amp;quot;tile-mapped&amp;quot;. This meant the sprites had to actually fill the character tile or there would be artifacts introduced for the unmasked character's corner.&lt;br /&gt;
&lt;br /&gt;
This was a &amp;quot;good&amp;quot; other way to get rid of Attributes Clashes and having actual &amp;quot;colours&amp;quot; on ZX Spectrum. But some speccy ports were then emulating the attribute system, which can be quite bad because CPC in Mode1 has half the colours the Speccy has.&lt;br /&gt;
&lt;br /&gt;
*'''R-Type''' : the background has a smooth scrolling while the sprites are fixed character grid based.&lt;br /&gt;
&lt;br /&gt;
*'''Space gun''': this game was even released for Amstrad PLUS... Although coming very late in the CPC era is not really good and was probably rushed to the release. &lt;br /&gt;
&lt;br /&gt;
Yet the Character based engine enabled enormous sprites - but lacked smooth movement. Such a technique was actually used for quite a fair amount of Mode0 games. This is not &amp;quot;Speccy port&amp;quot; but it is good to to mention, as it was a common game design technique for both machines.&lt;br /&gt;
&lt;br /&gt;
*'''AMC (Astro Marines corps)''' : speccy version has no attribute clashes and is great. Amstrad version is in Mode0, feature multiscroll effect and remains fast.&lt;br /&gt;
&lt;br /&gt;
*'''Satan''' : this one is like R-Type, but the sprite layer is masked, so the game is monocolour on Spectrum. Still the Character system for the sprite has the advantage of giving good speed. The CPC version is fully in Mode0 and great, still the engine is clearly shared with speccy.&lt;br /&gt;
&lt;br /&gt;
==Rasters==&lt;br /&gt;
A common cheat was to get some Raster interrupt colour change so you could argue that the game is actually displaying more than 4 colours on screen while being Mode1. This is only to mimic some sort or Raster based Colours attributes yet is actually not a clever move in some way as getting some raster interrupt may take lots of CPU cycles. Also, despite the game displaying more than the allowed colours on screen, the playing area was still monochrome. In the end, all this did was getting the game even slower.&lt;br /&gt;
&lt;br /&gt;
On the other hand this could also be done right:&lt;br /&gt;
*'''Deflektor''' : Raster done right.&lt;br /&gt;
*'''Strider''' : Raster done right. (useless but good looking)&lt;br /&gt;
*'''Thundercats''' : (though there are more playing area colours)&lt;br /&gt;
*'''R-Type'''&lt;br /&gt;
*'''PacMania'''&lt;br /&gt;
*'''Black Tiger'''&lt;br /&gt;
&lt;br /&gt;
Many (if not all) of those games can actually run faster just by getting rid of CPU-wasting rasters.&lt;br /&gt;
&lt;br /&gt;
Providing a game had to deal with 1bpp to 2 bpp conversion, Software Sprites and Scrolling and complicated gameplay, adding some Raster interrupt to the equation is a really bad move and a good way to waste even more CPU time.&lt;br /&gt;
&lt;br /&gt;
==Amstrad interrupt positions==&lt;br /&gt;
&lt;br /&gt;
The following image shows where the Amstrad's interrupt positions are located relative to the screen. Here the CRTC Register values used are R1=32, R2=42, R6=24 and R7=30 and the colours are changed at the start of the interrupt. &lt;br /&gt;
&lt;br /&gt;
To have different positions vertically you can change the value of R7 (and if the monitor will accept it R5) to move the screen up and down.&lt;br /&gt;
For example Gryzor sets R7=29 to have a 1 char tall panel at the bottom in mode 1.&lt;br /&gt;
&lt;br /&gt;
To change at later positions you can also use a software timing loop, or fill the time with other code to delay the colour change from a chosen interrupt position.&lt;br /&gt;
 &lt;br /&gt;
[[File:Interrupt_positions_spectrum_sized_screen.png|Screenshot of Amstrad interrupt positions showing where mode and colours can be changed quickly relative to pixel graphics. R1=32, R2=42, R6=24,R7=30]]&lt;br /&gt;
&lt;br /&gt;
This image demonstrates that if you wish to use mode 1, and change palette colours for HUD and game area, then the graphics need to be arranged or re-sized so that the colour change positions are most optimal. For some games, the dimensions of the HUD or play area may not allow the palette to be changed easily.&lt;br /&gt;
&lt;br /&gt;
[[Category: Games| ]][[Category:Programming]][[Category:Games Programming]][[Category:CrossDev]][[Category:CPC History]][[Category:Non CPC Computers]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=80_Column_Mode_1&amp;diff=127397</id>
		<title>80 Column Mode 1</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=80_Column_Mode_1&amp;diff=127397"/>
				<updated>2026-05-10T11:08:44Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= BASIC example: 80 column text (4x8) in MODE 1 =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 10 DIM a(10):MODE 1:SYMBOL AFTER 32:FOR t=33 TO 255:PRINT CHR$(t);:NEXT:y=398:PRINT:sy=33&lt;br /&gt;
 20 FOR n=1 TO 6:FOR p=2 TO 640 STEP 16&lt;br /&gt;
 30 FOR k=1 TO 8&lt;br /&gt;
 40 b$=&amp;quot;&amp;quot;:FOR x=1 TO 16 STEP 4:IF TEST(p+x,y)=0 THEN b$=b$+&amp;quot;0&amp;quot; ELSE b$=b$+&amp;quot;1&amp;quot;&lt;br /&gt;
 50 NEXT&lt;br /&gt;
 60 y=y-2:b$=b$+b$:a(k)=VAL(&amp;quot;&amp;amp;x&amp;quot;+b$):NEXT:y=y+16&lt;br /&gt;
 70 SYMBOL sy,a(1),a(2),a(3),a(4),a(5),a(6),a(7),a(8)&lt;br /&gt;
 80 POKE &amp;amp;B7C3,2:PRINT CHR$(sy);:POKE &amp;amp;B7C3,1:sy=sy+1:IF sy&amp;gt;255 THEN GOTO 110&lt;br /&gt;
 90 NEXT&lt;br /&gt;
 100 y=y-16:NEXT&lt;br /&gt;
 110 MODE 2:CALL &amp;amp;BA11:POKE &amp;amp;B7C3,1:PEN 1:POKE &amp;amp;B7C3,2:PRINT&amp;quot;SMALL FONT PEN 1&amp;quot;&lt;br /&gt;
 120 POKE &amp;amp;B7C3,1:PEN 2:POKE &amp;amp;B7C3,2:PRINT&amp;quot;SMALL FONT PEN 2&amp;quot;&lt;br /&gt;
 130 POKE &amp;amp;B7C3,1:PEN 3:POKE &amp;amp;B7C3,2:PRINT&amp;quot;SMALL FONT PEN 3&amp;quot;&lt;br /&gt;
 140 KEY 1,&amp;quot;POKE &amp;amp;B7C3,1:PEN 1:POKE &amp;amp;B7C3,2&amp;quot;+CHR$(13)&lt;br /&gt;
 150 KEY 2,&amp;quot;POKE &amp;amp;B7C3,1:PEN 2:POKE &amp;amp;B7C3,2&amp;quot;+CHR$(13)&lt;br /&gt;
 160 KEY 3,&amp;quot;POKE &amp;amp;B7C3,1:PEN 3:POKE &amp;amp;B7C3,2&amp;quot;+CHR$(13)&lt;br /&gt;
 170 KEY 4,&amp;quot;CALL &amp;amp;BA11&amp;quot;+CHR$(13)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Source code]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=The_Mojon_Twins&amp;diff=127396</id>
		<title>The Mojon Twins</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=The_Mojon_Twins&amp;diff=127396"/>
				<updated>2026-05-09T21:09:28Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: /* Link */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:TMT.png|right]]&lt;br /&gt;
'''The Mojon Twins''' is a Spanish team of game developers since 2007.&lt;br /&gt;
&lt;br /&gt;
Perhaps recently one of the most active team still releasing games on Amstrad CPC.&lt;br /&gt;
&lt;br /&gt;
Oh, and they should put an english version on their site. ;-p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ports and Crossdev==&lt;br /&gt;
&lt;br /&gt;
[[The Mojon Twins]] are a company who release on multiple Z80 based machines.&lt;br /&gt;
&lt;br /&gt;
This features [[MSX]] computers, [[ZX Spectrum]] computers and of course Amstrad CPC computers, all of them used to be quite popular in Spain in the 80's.&lt;br /&gt;
&lt;br /&gt;
As a method they developed some Game engines in C language that can be easily ported on most of those machines with only few changes (for example [[Cprslib]] by Artaburu) to manage the different video issues.&lt;br /&gt;
&lt;br /&gt;
These games can be seen as some kind of [[Manic Miner]] like. They also put a lot of sexy women in their games...&lt;br /&gt;
&lt;br /&gt;
==Productions==&lt;br /&gt;
* [https://www.bitmapsoft.co.uk/product/chronicles-of-nanako/ Chronicles of Nanako] (remastered)&lt;br /&gt;
** [[Nanako Descends to Hell]], 2009&lt;br /&gt;
** [[Nanako in Classic Japanese Monster Castle]], 2007 (using [[CPCRSlib]])&lt;br /&gt;
* [[Cheril of the Bosque]], 2010&lt;br /&gt;
* [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=10069 Uwol quest for money], 2009&lt;br /&gt;
* [[Platform medley]]&lt;br /&gt;
* Mariano the Dragon, 2008&lt;br /&gt;
* [[Phantomas Tales #1]], 2009&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;The Mojon Engine&amp;quot;===&lt;br /&gt;
* Mark 1 in 2013&lt;br /&gt;
* Mark 2 in 2014&lt;br /&gt;
* Mark 3 in 2017&lt;br /&gt;
The mscmk1 (Mojontwins Script Compiler for MK1) is written in FreeBASIC.&lt;br /&gt;
* Ramiro el vampiro&lt;br /&gt;
** [[Ramiro III]], 2022&lt;br /&gt;
** [[Ramiro IV]], 2021&lt;br /&gt;
* [[Red Planet]], 2022 ''MK1''&lt;br /&gt;
* [[Jet Paco]], 2020&lt;br /&gt;
* [[Sgt. Helmet]], 2020&lt;br /&gt;
* [[Cheman]], 2019 ''MK3''&lt;br /&gt;
* [[Cheril in the Bosque en otro Bosque]], 2018 ''MK3''&lt;br /&gt;
* [[Lala The Magical Prologue]], 2010, 2022 ''MK1 La Churrera''&lt;br /&gt;
* Sir Ababol&lt;br /&gt;
** [[Sir Ababol]] NES-OM Edition, 2020&lt;br /&gt;
** [[Sir Ababol II]], 2013&lt;br /&gt;
** [[Sir Ababol]], 2010&lt;br /&gt;
* [[Uwol 2]], 2011&lt;br /&gt;
* [[Tenebra]], 2022&lt;br /&gt;
* [[Tenebra 2]], 2023&lt;br /&gt;
* Pestecé, 2023 ''MK1''&lt;br /&gt;
* Master Piece, 2025 ''MK1''&lt;br /&gt;
* Phantomas en el Museo, 2025 ''MK1''&lt;br /&gt;
* El Hobbit, 2025 ''MK1v4''&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mojontwins.com/juegos_mojonos/ Their site in Spanish]&lt;br /&gt;
** [https://github.com/mojontwins?tab=repositories&amp;amp;q=CPC Repos]&lt;br /&gt;
** [https://zxart.ee/eng/groups/t/the-mojon-twins/ ZX-Art]&lt;br /&gt;
** [https://computeremuzone.com/amstrad/compania/mojon+twins&amp;amp;l=en Games list]&lt;br /&gt;
* [https://www.mojontwins.com/juegos_mojonos/la-churrera-english/ La Churrera]&lt;br /&gt;
** https://mojontwins.itch.io/lala-prologue-cpc-2022&lt;br /&gt;
** https://github.com/salvakantero/RedPlanet_CPC&lt;br /&gt;
&lt;br /&gt;
[[Category:CPC scene members]] [[Category:Stub]] [[Category:Active CPC Game Developers]] [[Category:Modern Amstrad Software Publishers]] [[Category:CrossDev]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=The_Speaker&amp;diff=127395</id>
		<title>The Speaker</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=The_Speaker&amp;diff=127395"/>
				<updated>2026-05-09T20:49:05Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:SpeakerROM.jpg|thumbnail|Speaker ROM]]&lt;br /&gt;
&lt;br /&gt;
== The Speaker ==&lt;br /&gt;
&lt;br /&gt;
The Speaker is a software speech synthesizer for the Amstrad. It was published as a BASIC listing in French Magazine CPC Infos by Xavier Grossetete in 1991. This was based on a port of the Spectrum Speech program by Superior Software, published in 1986. The Speaker was then retyped by [https://norecess464.weebly.com/news/the-speaker-an-impressive-text-to-speech-program-for-the-amstrad-cpc NoRecess] in 2011 and distributed as a DSK file called -SAY.dsk.&lt;br /&gt;
&lt;br /&gt;
The original code has been disassembled by [[CPSoft]] and has been converted into a ROM extension format.&lt;br /&gt;
The Z80 assembly source code will also be available to download.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Add SpeakerROM.rom to a ROM bank on your Amstrad emulator.&lt;br /&gt;
&lt;br /&gt;
Type |SPHELP to view the usage instructions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;|SAY,&amp;quot;HELLO WORLD&amp;quot;&amp;lt;/code&amp;gt; - Say a phrase. The program converts the string into phonemes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;|SPEAK,&amp;quot;/HEH4/HEH3/HEH2/HEH1/&amp;quot;&amp;lt;/code&amp;gt; - Say a phrase without the program converting phonemes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;|SPEED,1-20&amp;lt;/code&amp;gt; - Alter the speed of the speech&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;|CENTRE&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;|CENTER&amp;lt;/code&amp;gt;) - Output speech using channel B&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;|LEFT&amp;lt;/code&amp;gt; - Output speech using channel A&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;|RIGHT&amp;lt;/code&amp;gt; - Output speech using channel C&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;|SPON&amp;lt;/code&amp;gt; - Turn on automatic text to speech output (&amp;amp;BB5A jumpblock patched)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;|SPOF&amp;lt;/code&amp;gt; - Turn off automatic text to speech output&lt;br /&gt;
&lt;br /&gt;
== Still to do ==&lt;br /&gt;
&lt;br /&gt;
* Investigate if there is a way of outputting speech without disabling interrupts.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
* [[Media:SpeakerROM.zip|Speaker ROM]] - The Speaker Speech Synthesizer in ROM format&lt;br /&gt;
&lt;br /&gt;
Source code for Speaker ROM can be downloaded from [https://github.com/chrisperver/speakerrom GitHub]&lt;br /&gt;
&lt;br /&gt;
[[Category:Applications]]&lt;br /&gt;
[[Category:Music and sound]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Z-Machine&amp;diff=127387</id>
		<title>Z-Machine</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Z-Machine&amp;diff=127387"/>
				<updated>2026-04-30T07:53:21Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Z-Machine is a text based interpreter which runs text adventures made by Infocom and Z-code files.&lt;br /&gt;
&lt;br /&gt;
It is available for CPC for different OS.&lt;br /&gt;
&lt;br /&gt;
* A version for CPM&lt;br /&gt;
* A version for AMSDOS&lt;br /&gt;
* A version for SymbOS&lt;br /&gt;
&lt;br /&gt;
[[CPCZVM]] is a Z-Machine interpreter for the CPC. It is a modification of ZXZVM, an interpreter made by [[John Elliott]] for the PCW.  The Amstrad version was converted by [[Kevin Thacker]]. There are two versions, for CPM and AMSDOS.&lt;br /&gt;
&lt;br /&gt;
Zym is a Z-Machine interpreter for SymbOS, made by [[prevtenet]].&lt;br /&gt;
&lt;br /&gt;
[[Vezza]] is another Z-machine interpreter.&lt;br /&gt;
&lt;br /&gt;
=CPM version=&lt;br /&gt;
&lt;br /&gt;
CPCZVM for CPM features a virtual memory system supporting both the Z-machines RAM and ROM. It runs under CPM2.2 and CPM+. CPCZVM has been written to be as compatible with CPM as possible and should run on other CPMs for the Amstrad.&lt;br /&gt;
&lt;br /&gt;
CPCZVM will not run under Amstrad's CPM2.2 distribution because it doesn't have enough TPA. However you can use [[DkTronics_CPM]] which has a larger TPA.&lt;br /&gt;
&lt;br /&gt;
==Running an adventure==&lt;br /&gt;
&lt;br /&gt;
* Copy CPCZVM.COM, ZXZVM.BIN and the game file (e.g. ADVENT.Z3) to media which has at least 64KB free. All of these should  be in the same location. &lt;br /&gt;
* Boot into CP/M.&lt;br /&gt;
* Select the disc (e.g. B:)&lt;br /&gt;
* Type: CPCZVM ADVENT.Z3 to start.&lt;br /&gt;
&lt;br /&gt;
Not supported:&lt;br /&gt;
* Timed input&lt;br /&gt;
* Italics, Bold and other font styles.&lt;br /&gt;
* Colours&lt;br /&gt;
* Sound&lt;br /&gt;
&lt;br /&gt;
NOTE:&lt;br /&gt;
* CPM2.2 version is better than the CPM+ version because it can use windows like the AMSDOS version to allow individual sections of the display to be split or scrolling. Amstrad's implementation of CPM is assumed and that printing goes to the firmware functions and the firmware control codes can be executed. &lt;br /&gt;
* CPM+ version uses the VT52 terminal emulation but because that doesn't support windows it is less powerful.&lt;br /&gt;
* Using a RAMdisk under CPM+ doesn't make much of a difference to the speed of loading.&lt;br /&gt;
&lt;br /&gt;
==Technical Information==&lt;br /&gt;
&lt;br /&gt;
* The program reads the first 64KB of the game file, padding with 0's if less than 64KB, and writes out a SWAP.DAT file. A Z-machine has a maximum of 64KB of RAM. Therefore the disc which CPCZVM is run from must have at least 64KB free and be writeable. When the RAM is written to this swap file is updated. This swap file is also re-generated from the game file when the game is restarted.&lt;br /&gt;
&lt;br /&gt;
* Part of the CPC's memory is used for the virtual memory cache. A page table describes which virtual memory blocks are loaded and their physical location within RAM. This is initially populated from the start from the game file. When a read is done, the virtual memory address is looked up in the page table, and if it is mapped to physical memory then the physical memory is read. A write is similar to a read with an additional flag being set if a write has been made to a mapped page. If a virtual memory page is not currently loaded, then depending on the metric used, a page is chosen to be evicted. If the page has been modified it is committed to the swap file. Then the new page is loaded into the same physical location. During game play, any access to virtual memory in the first 64KB comes from the swap file, and any accesses above 64KB come from the game file. In this way the virtual memory supports both Z-Machine RAM and Z-Machine ROM.&lt;br /&gt;
&lt;br /&gt;
* CP/M is used because it has a random access filesystem compared to AMSDOS which doesn't. The random access is required to read blocks from the swap and game file when needed.&lt;br /&gt;
&lt;br /&gt;
* Disc accesses use normal CP/M functions so it should work with other devices such as RAM discs, Harddisks etc.&lt;br /&gt;
&lt;br /&gt;
=AMSDOS version=&lt;br /&gt;
&lt;br /&gt;
CPCZVM for AMSDOS requires additional Dk'tronics compatible memory (e.g. [[X-MEM]] ). The entire game file is loaded into available RAM so it is recommended to use a 512KB RAM expansion. Loading uses CAS IN CHAR so is very slow.&lt;br /&gt;
&lt;br /&gt;
NOTES:&lt;br /&gt;
* This version supports the v1.0 specification &lt;br /&gt;
* It has been tested against oztest, czech, etude and strict tests.&lt;br /&gt;
&lt;br /&gt;
==What is supported==&lt;br /&gt;
* Transcript (goes to printer)&lt;br /&gt;
* Timed input&lt;br /&gt;
* Font styles (bold, italics etc)&lt;br /&gt;
* Z-Machine window opcodes&lt;br /&gt;
 &lt;br /&gt;
==What isn't supported==&lt;br /&gt;
* UNDO&lt;br /&gt;
* V6 or V7 games&lt;br /&gt;
* Colours (this requires that all the colours can be displayed at once)&lt;br /&gt;
&lt;br /&gt;
==Running an adventure==&lt;br /&gt;
* Copy CPCZVM.BAS and the game file (e.g. ADVENT.Z3) to media. Both of these should  be in the same location. &lt;br /&gt;
* Make a simple BASIC loader with this form:&lt;br /&gt;
 &lt;br /&gt;
  5 BORDER 0:INK 0,0:INK 1,13&lt;br /&gt;
 10 a$=&amp;quot;advent.z3&amp;quot;&lt;br /&gt;
 20 chain&amp;quot;cpczvm&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and save it:&lt;br /&gt;
&lt;br /&gt;
 save&amp;quot;advent&lt;br /&gt;
&lt;br /&gt;
* Now you can run your adventure:&lt;br /&gt;
&lt;br /&gt;
 run&amp;quot;advent&lt;br /&gt;
&lt;br /&gt;
NOTES:&lt;br /&gt;
* In the example above 'advent.z3' is the name of the game file. It should not have a header. &lt;br /&gt;
* 'a$' variable must be used. You can't use another name because CPCZVM.BAS requires it to have this name.&lt;br /&gt;
* In the example above 'advent' is the name of your basic loader. You can name it as you wish.&lt;br /&gt;
* It is advised to use a large ram expansion (&amp;gt;64KB) because many game files are large and you need plenty of extra ram to load large game files.&lt;br /&gt;
* If the adventure will not fit on a normal CPC Data format disk, use [[ParaDOS]] and copy the files to a ROMDOS D1 format disc.&lt;br /&gt;
&lt;br /&gt;
==Technical information==&lt;br /&gt;
&lt;br /&gt;
* The CPCZVM.BAS contains a fixed basic stub followed by the machine code. The BASIC stub must not be modified or it will break CPCZVM.BAS. Using a BASIC stub means I don't need to re-enable any ROMs (like I would if RUN was used) and the current drive and filesystem remains active allowing hard disks and other DOS to be used. In addition I can pass HIMEM to know if there is enough RAM free (expansion ROMs can modify HIMEM to allocate work space) and a string variable containing the game filename.&lt;br /&gt;
* The program uses the firmware except TXT WRITE CHAR is patched so that bold, italics and inverse is supported. The font is manipulated as it is drawn.&lt;br /&gt;
* Transcript goes to the printer.&lt;br /&gt;
* The program detects the amount of additional RAM and will warn if there is not enough when loading the game file. &lt;br /&gt;
* The program only supports Dk'Tronics compatible RAM.&lt;br /&gt;
* The entire game file is loaded into extra ram using &amp;quot;CAS IN CHAR&amp;quot; functions. This is used because the extra memory is paged in 16KB at a time and [[BIOS_Function_Summary#Cassette_.28or_Diskette.29_Functions|CAS IN DIRECT]] reads in an entire block and the game files exceed the size of 16KB and do not require an AMSDOS header to be added.&lt;br /&gt;
* The BASIC boot program allows a game filename to be passed to CPCZVM.BAS without requiring it to be modified. The use of CHAIN keeps the defined variables and HIMEM.&lt;br /&gt;
* This version should run from [[X-MASS]] or other hardware.&lt;br /&gt;
&lt;br /&gt;
=SymbOS Version=&lt;br /&gt;
&lt;br /&gt;
Zym is a Z-Machine interpreter for SymbOS written in C. It supports Z-machine versions 3, 4, 5, and 8, so it can run most of the games published by Infocom, as well as thousands of other Z-code games created by the interactive fiction community. Zym supports different terminal window sizes and also runs on ALL SymbOS platforms, not only CPC.&lt;br /&gt;
&lt;br /&gt;
Zym requires SymbOS 3.1 or higher and at least 256 KB of RAM to load most games.&lt;br /&gt;
&lt;br /&gt;
https://i.imgur.com/W8AmmFE.png&lt;br /&gt;
&lt;br /&gt;
=Downloads=&lt;br /&gt;
&lt;br /&gt;
* [https://www.seasip.info/ZX/zxzvm.html ZXZVM homepage]&lt;br /&gt;
* [https://www.seasip.info/index.html John Elliott's website]&lt;br /&gt;
* [[File:Zvm.zip]] Source code (CPM+AMSDOS+Disks)&lt;br /&gt;
* [http://www.symbos.de/appinfo.htm?00054 SymbOS homepage]&lt;br /&gt;
&lt;br /&gt;
[[Category:Emulator| ]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Speccy_Port&amp;diff=127324</id>
		<title>Speccy Port</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Speccy_Port&amp;diff=127324"/>
				<updated>2026-04-06T22:02:49Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: /* Lists of speccy ports */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[Image:Vs.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
A '''Speccy Port''' or '''Spectrum port''' is the name given to a game which has been converted directly from the Sinclair Spectrum with little or no changes to the Amstrad CPC. &lt;br /&gt;
&lt;br /&gt;
Mostly the Amstrad version ended up fairing worse than the original Spectrum version with the following results:&lt;br /&gt;
* Less colours&lt;br /&gt;
* Slower gameplay&lt;br /&gt;
&lt;br /&gt;
These facts are not true for all &amp;quot;Spectrum Ports&amp;quot; because some ended up decent.&lt;br /&gt;
&lt;br /&gt;
There is anger from Amstrad users in general, because they feel that if more time had had been taken on the Amstrad version, we could have had a version that used the abilities of the Amstrad better, looked better, perhaps sounded better, and played as well or better than the Spectrum version.&lt;br /&gt;
&lt;br /&gt;
On a more positive tone, those speccy ports had the merit to exist, or else Amstrad would have a smaller games catalogue.&lt;br /&gt;
&lt;br /&gt;
It is worth noting that Spectrum ports also existed on [[MSX]], [[Enterprise]] 64/128, [[SAM Coupé]] and non-[[Z80]] [[Thomson]] MO/TO, [[Commodore 64|C64]].&lt;br /&gt;
&lt;br /&gt;
==List of Spectrum Ports==&lt;br /&gt;
[[List of Speccy Ports]]&lt;br /&gt;
&lt;br /&gt;
==How these should have looked==&lt;br /&gt;
&lt;br /&gt;
This section shows games which were made specifically for the Amstrad's abilities or Spectrum ports that were done correctly.&lt;br /&gt;
&lt;br /&gt;
Here are some examples of Amstrad games done well, and how these games could have looked if more care was taken.&lt;br /&gt;
&lt;br /&gt;
The following list shows how a game can be done right using the cpc capabilities. These do not necessarily share any Spectrum code, and are not necessarily recoloured from the Spectrum:&lt;br /&gt;
&lt;br /&gt;
* Renegade&lt;br /&gt;
* Gryzor&lt;br /&gt;
* Xyphoes Fantasy&lt;br /&gt;
* [[Head Over Heels]]&lt;br /&gt;
* Atic Atac&lt;br /&gt;
&lt;br /&gt;
Some CPC games share similarities with the Spectrum version, and probably share a lot of code, yet are in mode 0 (16 colours, lowest resolution). [[Ocean]] made a lot lilke and thanks to a more professional graphic treatment (compared to many other British companies) and actually good porting tactics this produced some of the finest CPC games.&lt;br /&gt;
&lt;br /&gt;
Those games are examples:&lt;br /&gt;
&lt;br /&gt;
*'''Robocop'''&lt;br /&gt;
*'''Chase HQ'''&lt;br /&gt;
&lt;br /&gt;
Some of the games in the list below use mode 1 but fully supported the 2bpp re-coding of graphics done right (by a human, not by an automatic method) and hence got properly coloured backgrounds and sprites.&lt;br /&gt;
&lt;br /&gt;
*'''Shadow of the Beast'''&lt;br /&gt;
*'''Midnight Resistance'''&lt;br /&gt;
*'''Wec le Mans'''&lt;br /&gt;
&lt;br /&gt;
=Reasons for a Spectrum Port=&lt;br /&gt;
&lt;br /&gt;
The [[ZX Spectrum]] shared similar hardware with the Amstrad CPC (see Machine comparisons).&lt;br /&gt;
&lt;br /&gt;
The Spectrum was very popular and with the CPC having a much smaller market share, it made sense to develop the Spectrum version first and to save on time and money, the Spectrum code, music and graphics were re-used.   (A typical port to the Amstrad is said to have been done in 3 days so was financially good).&lt;br /&gt;
&lt;br /&gt;
This phenomenon was more prominent in the UK, where the Speccy was the dominant machine. In other markets, such as France or Spain, where the CPC was very popular, games were coded from scratch for the CPC, often using an [[Atari|Atari ST]] for  [[Games Crossdev|Cross Development]]&lt;br /&gt;
&lt;br /&gt;
= Machine comparisons =&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*The Spectrum 48K was released in the UK in 1982 and was the successor of the ZX80/ZX81 with upgraded graphics and config (RAM/ROM). The Amstrad CPC464 was released in the UK in 1984 and was a Z80 based computer with AY sound and a simplified yet upgraded custom IBM PC CGA display for Video.&lt;br /&gt;
&lt;br /&gt;
*Spectrum 48K sold for £99. The CPC464 with Green Screen monitor sold for £299 and with colour monitor for £399. One selling point was that the Amstrad needed only 1 plug, and that you didn't need to use the family television to use it. Also the Spectrum 48k wasn't supplied with any monitor nor storage device. &lt;br /&gt;
&lt;br /&gt;
* The Spectrum was designed to be used with a television, the Amstrad was designed to be used with and was sold with either a green screen or colour monitor. &lt;br /&gt;
&lt;br /&gt;
* Amstrad's monitors include the powersupply for the Amstrad CPC. A &amp;quot;TV connection + power supply&amp;quot; solution was also available : [[Amstrad MP1/MP2 modulator]]&lt;br /&gt;
&lt;br /&gt;
* The Spectrum was sold as a games machine, the Amstrad was sold more as a multi purpose machine (in the UK anyway).&lt;br /&gt;
&lt;br /&gt;
* The Amstrad's BASIC and firmware are said to be better than the Spectrum's BASIC and OS functions.&lt;br /&gt;
&lt;br /&gt;
====CPU, RAM and basic Hardware====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Spectrum 48K machine has 48K RAM, approx 6.5k of this is screen. The Amstrad CPC464 and 664 have 64K ram, approx 16K of this is screen.&lt;br /&gt;
&lt;br /&gt;
*Latter Spectrum were supplied with 128K RAM (Spectrum 128, +2 and +3) and Amstrad CPC6128 was supplied with 128K RAM too (same amount of RAM used by Video as earlier machines)&lt;br /&gt;
&lt;br /&gt;
*Spectrum and Amstrad both have a Z80 CPU.&lt;br /&gt;
&lt;br /&gt;
* The CPU runs at a similar speed (3.5Mhz in Spectrum, 4Mhz in Amstrad) (Note, both systems do not run at optimum speed due to waits inserted by the video hardware).&lt;br /&gt;
&lt;br /&gt;
*The Spectrum 48k can't do double buffering in hardware (the later 128K machines can), the Amstrad could from the start. On the Amstrad and Spectrum 128K you can use hardware double buffering, but then you need to sacrific twice as much video ram (e.g. For Amstrad: 2 x 16K).&lt;br /&gt;
&lt;br /&gt;
*The Spectrum has 1 interrupt per 50Hz frame, the Amstrad has 6 in fixed locations through the frame.&lt;br /&gt;
&lt;br /&gt;
*Neither have hardware sprites, therefore you have to use the CPU to both draw and erase the sprites.&lt;br /&gt;
&lt;br /&gt;
*Amstrad has hardware scrolling, Spectrum does not.&lt;br /&gt;
&lt;br /&gt;
* The Spectrum 48 didn't come with a joystick port, you had to buy one. There was two variants, Sinclair and Kempston, thankfully the hardware was cheap and easy to obtain, and both were well supported by software. The Amstrad came with a joystick port built in.&lt;br /&gt;
&lt;br /&gt;
* The original Sinclair ZX Spectrums didn't come with a tape player, you had to buy one. The Amstrad CPC464 had a tape player built in, however neither the CPC664 or CPC6128 had a tape player built in, you had to buy one if you wanted to use tape based software with them. &lt;br /&gt;
&lt;br /&gt;
* Later Amstrad's ZX Spectrums (+2 and +3...) had in-built storage devices as they shared the common Amstrad CPC design.&lt;br /&gt;
&lt;br /&gt;
* Both the Spectrum and Amstrad had to use the CPU for loading or saving on cassette. The Spectrum ROM loader used the border colours to indicate loading (especially the use of striped bars in the border to indicate each data bit) a small block for a header, and then loaded the program with one larger block. The checksum/error detection was done using XOR. The Amstrad's ROM loader used many smaller blocks (so you could rewind if there was an error), it indicated loading progress with text that updated on the display, and used the better CRC for error detection. However, if the loading messages were turned off, you didn't have any indication of loading progress.&lt;br /&gt;
&lt;br /&gt;
* The Spectrum 48K's keyboard was made from rubber, the CPC had a proper keyboard. The later Spectrum's had proper keyboards too.&lt;br /&gt;
&lt;br /&gt;
* The Amstrad had connections for printer, stereo sound output and expansion. It had an internal speaker, with volume control. The Spectrum 48K had connections for tape player, TV aerial and expansion. It had an internal piezo electric buzzer, the volume of which couldn't be controlled.&lt;br /&gt;
  &lt;br /&gt;
* The Amstrad could control the cassette motor, turning it on and off under software control to pause loading of software. The Spectrum didn't have this, you had to manually stop and play the tape.&lt;br /&gt;
&lt;br /&gt;
* The Amstrad had function/numeric keys. Only the later Spectrums (+2 and +3) had these.&lt;br /&gt;
&lt;br /&gt;
* Later Spectrums (+2 and +3) had a RS232/Midi port, the CPC didn't have this. If you wanted this on the CPC, you needed to buy extra hardware.&lt;br /&gt;
&lt;br /&gt;
====Video====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Spectrum and Amstrad both have a '''bitmapped''' display.&lt;br /&gt;
&lt;br /&gt;
*while''' ZX spectrum''' has a quite '''basic 1bpp character based colour display''', '''Amstrad CPC''' can be considered an '''upgraded CGA display minus the Character based text modes''' (with a 16colours modes such as the Tandy's own custom &amp;quot;CGA&amp;quot; had... and a differently logic based palette), with a range or 4bpp low resolution, 2bpp square resolution and 1bpp high resolution Attribute free video display.&lt;br /&gt;
&lt;br /&gt;
*'''They have a similar screen size.'''  But '''Amstrad CPC''' actually produces smaller pixels in it's &amp;quot;equivalent&amp;quot; video mode (mode 1). The normal display resolution on the Amstrad CPC is '''320x200''' (mode 1) while '''ZX Spectrum''' produces &amp;quot;only&amp;quot;  '''256x192''' pixels. Amstrad's screen can be reduced in size to match the Spectrum's (256x192, in Mode1) but then the actual display window is quite smaller than on a spectrum (on the same monitor) and has a larger border because the generated pixels are slightly smaller.&lt;br /&gt;
&lt;br /&gt;
*The size and aspect of the pixels in the Spectrum's bitmapped display are comparable to the pixels in Amstrad's mode 1 bitmapped display in that both produce approximately square pixels.&lt;br /&gt;
&lt;br /&gt;
*The '''Spectrum''''s '''video ram''' takes approx '''6K'''. &lt;br /&gt;
&lt;br /&gt;
*The '''Amstrad CPC''''s '''video ram''' takes '''16K''' (approx 12K when screen is reduced to Speccie's resolution).&lt;br /&gt;
&lt;br /&gt;
*The '''Spectrum''' has a fixed '''palette of 15 colours''' (8 colours with bright versions of each making 15 in total - LIGHT black is still black). &lt;br /&gt;
&lt;br /&gt;
* The Amstrad has 3 different [[Video modes|Video Modes]]. Mode 0 is 160x200 with 16 colours, mode 1 is 320x200 with 4 colours, mode 2 is 640x200 with 2 colours. All are bitmapped. The Spectrum only has 1 video mode, 256x192 which is bitmapped.&lt;br /&gt;
&lt;br /&gt;
*'''Amstrad CPC''' has a '''palette of 27 colours.''' In mode 0 you can choose 16 of these, in mode 1 you can choose 4 of these, in mode 2 you can choose 2 of these. The Amstrad's palette includes equivalent colours that match closely the Spectrum's colours.&lt;br /&gt;
&lt;br /&gt;
*The Spectrum's screen is &amp;quot;attribute&amp;quot; based. Each 8x8 cell can be assigned a background and foreground colour (and both colours must either be non-bright or bright). There is also the choice to flash the colours in each cell (the flash is a fixed rate and alternates between paper/pen and pen/paper).  This colouring results in &amp;quot;attribute/colour clash&amp;quot; on the Spectrum. The Amstrad's screen doesn't have this, and there is no restriction on how the colours can be placed.&lt;br /&gt;
&lt;br /&gt;
* The colours of each 8x8 &amp;quot;attribute&amp;quot; cell is defined by a block of ram following the Spectrum's bitmapped screen, each byte represents one cell and each byte defines paper colour, pen colour, flash enabled and bright enabled. The colours for the pens on the Amstrad are defined by writing to the Gate-Array's palette I/O registers. The pens are read from the pixel data and the resulting colour is looked up in the palette registers.&lt;br /&gt;
&lt;br /&gt;
*The '''Spectrum''' can display all '''15 colours on the screen.'''. With limitations (2 colours per 8x8pix squares...)&lt;br /&gt;
&lt;br /&gt;
* The Amstrad can only reproduce the attributes and 15 colours at the same time as shown by the Spectrum by using Amstrad's 16 colour mode, mode 0. However, this has wider pixels (approx 2x1 ratio) and a lower horizontal resolution. If the CPC's mode 1 resolution is chosen, it is not possible because only 4 colours can be chosen. &lt;br /&gt;
&lt;br /&gt;
* On the Amstrad the 6 raster interrupts allow palette colours to be changed allowing more than the theorical amount but this is also with limitations. This technique was commonly used in Speccy ports.&lt;br /&gt;
&lt;br /&gt;
*Normally Spectrum graphics is stored in 2 colours, which means 8 pixels for each byte. In Amstrad mode 1, each byte defines 4 pixels. So for the same graphics you often need twice the RAM on the Amstrad. (This is a case where graphics without transparency are used). If transparency is used, then the amount of data can be the same.&lt;br /&gt;
&lt;br /&gt;
* The Amstrad's screen size and position can be reprogrammed, the Spectrum's screen size and position is fixed. It is possible to program the Amstrad's screen to use the entire monitor display area (at the expensive of approx. 22K of video ram being used).&lt;br /&gt;
&lt;br /&gt;
====Sound====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Spectrum (128K model and later) and Amstrad both have an AY-3-8912 sound chip. (1.7Mhz clock for AY in spectrum, 1.0Mhz clock for AY in Amstrad). &lt;br /&gt;
&lt;br /&gt;
*Spectrum 48K had a 1-bit beeper sound. Playing sounds through the beeper is very CPU intensive. The Amstrad doesn't have a beeper. The only way to simulate the beeper sound would be to convert it to AY sound.&lt;br /&gt;
&lt;br /&gt;
====Input====&lt;br /&gt;
&lt;br /&gt;
* Spectrum has multiple joystick standards. The common standards are Kempston, Sinclair and Cursor. Kempston was a common interface used on the Sinclair made Spectrum's. It plugged into the back of the machine and provided support for a single joystick. This type of joystick doesn't clash with the keyboard. The Sinclair standard is used on the Amstrad made Spectrums. These machines have two joystick ports. The Sinclair standard works by simulating keys pressed on the Spectrum keyboard. (Does the sinclair joystick cause keyboard clash?) All of these standard for the Spectrum supported the directions and 1 fire button. In comparison the Amstrad CPC models have a single joystick port which with a splitter cable can support two joysticks. The joysticks support the directions and up to 3 fire buttons on the CPC, but only 2 fire buttons on the later Plus machines. In addition using the joysticks and keyboard together on the Amstrad CPC causes keyboard clash where unwanted keys are pressed. Clash between joysticks and keys can be avoided with careful choice of keys. This clash was resolved on the Plus and can be resolved with diodes on the CPC joystick port. In general though, Amstrad games supported a single joystick, they didn't use key mappings that would avoid clash and many users didn't have these fixes so the games would suffer from keyboard clash. An example of this can be seen when playing two player Gauntlet where players could be fighting to move where they wanted to.&lt;br /&gt;
&lt;br /&gt;
* The 48K spectrums had a rubber membrane keyboard, later versions had proper keys, and the Amstrad made Spectrum's have the best keyboards. The early Amstrad CPC464's and 664's had really good strong keyboards, comparable to those on the BBC Micro, whereas later ones were more flat and less good. Both Amstrad and Spectrum have a good selection of keys.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTE: Sinclair Research (the Spectrum's manufacturer) was acquired by Amstrad after the Spectrum 128K had been made. '''&lt;br /&gt;
&lt;br /&gt;
Amstrad then improved the build quality and enhanced the Spectrum's design. The result was that the Spectrum +2, which was closer in looks and build to the CPC464/6128 (same kind of compact keyboard as CPC6128, but built-in &amp;quot;Datacorder&amp;quot;). The Spectrum +3 was also quite similar to the Amstrad CPC6128 because both had a internal 3&amp;quot; drive. So the Spectrum became closer in design to the CPC. However, the overall hardware of the Spectrum didn't change, the graphics were the same, the sound was the same, but those later Spectrum's had built in joysticks, built in cassette or disc, connections for printer etc, just like the CPC, but almost all of which the Amstrad had starting with the CPC464.&lt;br /&gt;
&lt;br /&gt;
===Disc drive===&lt;br /&gt;
&lt;br /&gt;
The Spectrum didn't have an official floppy disc interface so there were different interfaces.&lt;br /&gt;
In Russia the Betadisk interface is common, this used a WD1793 disc controller and 3.5&amp;quot; discs. This interface is incompatible with the Amstrad's.&lt;br /&gt;
&lt;br /&gt;
When Amstrad designed the +3, the used a similar disc interface to the Amstrad.&lt;br /&gt;
&lt;br /&gt;
The Amstrad designed Spectrum +3 has the following in common with the CPC6128:&lt;br /&gt;
* same disc media (3&amp;quot;)&lt;br /&gt;
* same disc controller (NEC765 compatible)&lt;br /&gt;
* the floppy controller is polled for data transfer&lt;br /&gt;
* Similar disc format (CP/M based)&lt;br /&gt;
&lt;br /&gt;
However, the Spectrum+3 uses a different DOS than the Amstrad CPC6128. This means that the functions for reading/writing files are different on the Spectrum compared to the CPC.&lt;br /&gt;
&lt;br /&gt;
The Spectrum's DOS is more powerful than the CPC's. It can read CPC discs, Spectrum +3 and PCW discs easily. In order for the Amstrad to read Spectrum and PCW discs, it needs to have a special XDPB (Expanded Disc Parameter Block) configuration installed.&lt;br /&gt;
&lt;br /&gt;
The Spectrum +3's DOS is based on the disc functions in Locoscript the CPC's DOS is AMSDOS. The Spectrum's DOS was developed after the CPCs, so clearly they saw the weakness in the CPC's DOS design and improved it.&lt;br /&gt;
&lt;br /&gt;
The Spectrum Technical wiki can be found here. This describes the Spectrum hardware in more depth:&lt;br /&gt;
&lt;br /&gt;
http://scratchpad.wikia.com/wiki/ZX_Spectrum_technical_information&lt;br /&gt;
&lt;br /&gt;
=Consequences of a Spectrum Port=&lt;br /&gt;
&lt;br /&gt;
==Input==&lt;br /&gt;
&lt;br /&gt;
The Spectrum has more joystick standards than the CPC, however reading the keyboard and joysticks and handling the input on the Spectrum is much simpler, takes less code and takes less CPU time than on the Amstrad. &lt;br /&gt;
&lt;br /&gt;
On the Amstrad it is best to read the keyboard and joystick in one pass and store the data into a buffer which can then be queried later. Then read from this buffer when you need to check the inputs.&lt;br /&gt;
&lt;br /&gt;
==Disc Loading==&lt;br /&gt;
&lt;br /&gt;
The Spectrum +3's disc interface had a design that was close to the Amstrad CPC6128's. This meant that disc loading software that used the disc interface directly could be modified easily to be used on the CPC. There are disc versions of the Alkatraz, Hexagon and Speedlock loaders common to both the CPC and Spectrum.&lt;br /&gt;
&lt;br /&gt;
However, the method for accessing the DOS is different.&lt;br /&gt;
&lt;br /&gt;
The good thing is that both shared good disc interfaces, so a disc loading system on the Spectrum, if ported to the CPC would not be a bad thing.&lt;br /&gt;
&lt;br /&gt;
==Tape Loading==&lt;br /&gt;
&lt;br /&gt;
Both the Spectrum and Amstrad had a similar method for loading or saving on cassette. For both it is CPU intensive and for both the method of representing the 1 or 0 bits is the same. &lt;br /&gt;
&lt;br /&gt;
Some CPC games used the original block loader which meant loading took much longer compared to Spectrum, some used the firmware headerless block loader (CAS READ) which was a bit faster, and some CPC games used a modified Spectrum tape loader (extracted from the Spectrum's ROM and modified for the Amstrad's hardware). &lt;br /&gt;
&lt;br /&gt;
Sometimes the Spectrum loader was modified for the CPC without exact knowledge of how it worked, this resulted in some games with bad loaders that either didn't check for errors, or which didn't work in some circumstances. This lead to unreliable loading. &lt;br /&gt;
&lt;br /&gt;
Loaders like this were used in a variety of games, not limited to Speccy Ports.&lt;br /&gt;
&lt;br /&gt;
Two good loaders that appeared on both systems are Alkatraz and Speedlock. Both were reliable and fast.&lt;br /&gt;
&lt;br /&gt;
The Amstrad's ROM loader was a bit better than the Spectrum's ROM loader because it had CRC error checking, compared to XOR based checksum and block based loading (so you could rewind and try a block again) compared to a single load.&lt;br /&gt;
&lt;br /&gt;
Consequences for porting to CPC:&lt;br /&gt;
&lt;br /&gt;
*If the loader was modified for CPC without good knowledge the loading would be unreliable. (e.g. errors are not detected, timings are bad, edge detection is dodgy).&lt;br /&gt;
&lt;br /&gt;
*On the good side, the Spectrum utilised the border to indicate both the stage of loading (indicated by different colours used in the border) and the loading progress, so a modified loader for CPC would also indicate loading progress. If messages were turned off in the Amstrad ROM loader you didn't have any indication of loading progress.&lt;br /&gt;
&lt;br /&gt;
Examples of loaders common to both Amstrad and Spectrum:&lt;br /&gt;
* Speedlock (commonly used by Ocean).&lt;br /&gt;
* Alkatraz (commonly used by US Gold).&lt;br /&gt;
&lt;br /&gt;
Spectrum loader ported to Amstrad:&lt;br /&gt;
* Aliens (UK version, original release).&lt;br /&gt;
&lt;br /&gt;
==Colours==&lt;br /&gt;
&lt;br /&gt;
The Spectrum palette (15 colours, bright at bottom):&lt;br /&gt;
&lt;br /&gt;
[[image:ZXSpectrum_palette.png|Spectrum palette (from wikipedia)]]&lt;br /&gt;
&lt;br /&gt;
The Amstrad palette (27 colours):&lt;br /&gt;
&lt;br /&gt;
[[image:AmstradCPC_palette.png|Amstrad palette (from wikipedia)]]&lt;br /&gt;
&lt;br /&gt;
A comparison of the palettes in CPC palette:&lt;br /&gt;
&lt;br /&gt;
[[image:CPC_Speccy_palette_comparison.png|Comparison of the palettes ]]&lt;br /&gt;
&lt;br /&gt;
From the comparison you can see that the Amstrad can reproduce the Spectrum's colours well, and its additional colours can provide extra shades and some colours the Spectrum can't show (e.g. orange).&lt;br /&gt;
&lt;br /&gt;
Consequences for porting to CPC:&lt;br /&gt;
* If the game was ported directly using only the Spectrum colours then the Amstrad version would have similar colours, when more appropiate colour's from it's palette could be used.&lt;br /&gt;
&lt;br /&gt;
What they should do for CPC:&lt;br /&gt;
* Recolour the graphics using the Amstrad's palette to improve the look.&lt;br /&gt;
&lt;br /&gt;
==Colour Clash from the Cell based colouring==&lt;br /&gt;
&lt;br /&gt;
The cell based colouring used on the Spectrum has its disadvantages. [[image:clash.png|right|thumb|Colour clashing in Knight Tyme. Observe the appearance of the character sprite as it merges with the background. (Background colours have priority here in this game.)]]&lt;br /&gt;
&lt;br /&gt;
When moving a sprite over a background, or a sprite over another sprite, and if both have colours you have to decide which colours take priority. &lt;br /&gt;
&lt;br /&gt;
It is not possible to have all the colours together because of the colour limitation within each 8x8 cell. &lt;br /&gt;
&lt;br /&gt;
This then means that the graphics with a lower priority then takes on the colour of the higher priority graphics.&lt;br /&gt;
&lt;br /&gt;
If a sprite's colours takes priority, and it moves with pixel by pixel movement, as soon as it enters a new cell, the background will take on it's colours. The colour clash seems to extend furthur than the sprite. This is down to the 8x8 cell colouring.&lt;br /&gt;
&lt;br /&gt;
The 6 raster interrupts on the CPC can be used to change the colours on the screen. You can redefine all the available colours, e.g. each interrupt you could re-program all the 4 available colours in mode 1. This can be done to increase the number of colours visible.&lt;br /&gt;
However, while there are more visible colours, each region is still limited to the number of available colours (e.g. limited to 4 colours in mode 1). &lt;br /&gt;
&lt;br /&gt;
If a sprite passes between two raster interrupt regions it will suffer from a form of colour clash, where the part in the new region takes the colours from that region, and the part in the old region remains in the colours from that region.&lt;br /&gt;
&lt;br /&gt;
Various ports use the raster interrupts, but how they chose to use them differs.&lt;br /&gt;
&lt;br /&gt;
'''Possible resolutions on Spectrum:'''&lt;br /&gt;
* Remove colour from the display so that background and sprites use the same colours, clash is eliminated but the game is monocolour..&lt;br /&gt;
* Move sprites in cell based movements. The colours still take priority but the clash is less of a problem.&lt;br /&gt;
* Add a black border around the sprites. Clash occurs, but because of the border it is not/less seen.&lt;br /&gt;
&lt;br /&gt;
'''Consequences for porting to CPC:'''&lt;br /&gt;
* If colour priority, colour clash exists: CPC version has the colour clash simulated which is unnecessary.&lt;br /&gt;
* If 2 colours are used and colour clash eliminated: CPC version lacks colour, same as Spectrum&lt;br /&gt;
* If cell based movement is done, then CPC version has the same movement whereas it could be pixel perfect on CPC.&lt;br /&gt;
* If black border is used, CPC has the unnecessary black border.&lt;br /&gt;
* The CPC can't replicate the Spectrum's colour attribute system, this means a game converted to Amstrad's mode 1 has even less colours than the Spectrum version. The CPC version then has 4 colours, compared to up to 15 possible colours on the Spectrum.&lt;br /&gt;
&lt;br /&gt;
'''What should be done on CPC:'''&lt;br /&gt;
* Recolour and redesign the graphics appropiately for the CPC in either mode 1 or mode 0.&lt;br /&gt;
* Use the Amstrad interrupts and change the colours multiple times each frame, this will give each region (between each interrupt) it's own colours increasing the number of colours on screen. Each region is 52 scanlines in height, and the whole screen in width. Note that the colours must be set for each region for each frame to maintain them, and that the pixels within each region are still limited to 4 colours in mode 1. The colour regions like this are ideal for having different colours for the HUD and for the main game area. This can be a CPU intensive technique.&lt;br /&gt;
&lt;br /&gt;
Examples of colour clash ported to the CPC:&lt;br /&gt;
(These examples show colour clash implemented on the CPC in the same way as the spectrum would show it)&lt;br /&gt;
* Bionic Commando&lt;br /&gt;
&lt;br /&gt;
Examples of attribute based colour system ported to CPC:&lt;br /&gt;
* Badlands&lt;br /&gt;
&lt;br /&gt;
Examples of games with little colour because attribute colours have been removed:&lt;br /&gt;
* Peter Pack Rat&lt;br /&gt;
&lt;br /&gt;
Examples of using raster interrupts to increase colours:&lt;br /&gt;
* Pacmania and Black Tiger (main play area remains 2 colours)&lt;br /&gt;
* Strider 4 colours in game area, 4 colours in status panel.&lt;br /&gt;
* Super Wonder Boy (Monochrome background and monochrome sprites)&lt;br /&gt;
* [[Deflektor]] (main play area has one set of colours, status panel has another set)&lt;br /&gt;
&lt;br /&gt;
==Advantages of the cell based colouring==&lt;br /&gt;
&lt;br /&gt;
The Spectrum's cell based colouring has advantages.&lt;br /&gt;
&lt;br /&gt;
=== Conveying state on a HUD ===&lt;br /&gt;
&lt;br /&gt;
The state of a game play element on the HUD can be coloured accordingly. e.g. a bomb that is about to explode could change colour from white to red.&lt;br /&gt;
&lt;br /&gt;
'''What should be done on CPC:'''&lt;br /&gt;
* If you have enough free palette entries, e.g. mode 0, then you can change the colour for the pen used to display the item in the palette. This is quick. However if you are using mode 1, then the number of palette entries is much more limited and you should draw the bomb in a different way. The consequence of this is that you may need to store additional graphics for this and it will take much longer to update the HUD than on the Spectrum.&lt;br /&gt;
&lt;br /&gt;
=== General colouring ===&lt;br /&gt;
&lt;br /&gt;
Since the background and foreground colour can be defined per cell then you can use all the Palette of the Spectrum at once.&lt;br /&gt;
&lt;br /&gt;
'''What should be done on CPC:'''&lt;br /&gt;
* If you are using mode 0 then you are free to define the colours per pixel from the 16 colour palette. This is ok if the chunkier pixels can be used, not so good if there is detail in the graphics that needs to be retained.&lt;br /&gt;
* If you are using mode 1 then you will see less colour. You can set the colour palette for multiple regions on the screen, or you can use the 4 colour palette more creatively.&lt;br /&gt;
&lt;br /&gt;
==Sound==&lt;br /&gt;
&lt;br /&gt;
There is 1 sound source on 48K spectrums: its beeper, and 2 sources of sound on 128K spectrums: beeper and AY.&lt;br /&gt;
&lt;br /&gt;
Beeper sound is simple. The spectrum has a speaker which you can turn on/off through a I/O port on the Spectrum's ULA. To make different sounds, you turn it on and off at different rates, all under control of the CPU. Speaker sound is CPU intensive because the timing is all done through the CPU and delay loops. The consequence on the Spectrum is that not many games have beeper music during the game, and those that do are often staccato like (e.g. Manic Miner) (the game takes some time to update, then some time for sound, and this repeats). If the sound was made for the Spectrum beeper, this would need to be converted to AY sound for the CPC, the result would not be exactly the same.&lt;br /&gt;
&lt;br /&gt;
Sound written for the AY in the Spectrum can't be ported directly because it would be out of tune, this is down to the difference in master clock given to the AY (1.7Mhz on Spectrum, 1.0Mhz on Amstrad). The music would need to be altered. When this is done, the music is almost the same.&lt;br /&gt;
&lt;br /&gt;
It is worth noting that mostly the 128K version of Spectrum games had AY tunes, because the 128K model of the Spectrum is when the AY was introduced.&lt;br /&gt;
&lt;br /&gt;
Consequences for porting to CPC:&lt;br /&gt;
* No sound (if beeper only sound and it's not translated)&lt;br /&gt;
* Sound out of tune on CPC (if AY sound without some conversion)&lt;br /&gt;
* Sound is beeper like and staccato when it could be AY &amp;quot;native&amp;quot;&lt;br /&gt;
&lt;br /&gt;
What they should do for the CPC:&lt;br /&gt;
* Compose the tune for CPC&lt;br /&gt;
* For AY sounds, convert the music/effects to the CPC's AY master clock so that it is in tune (the tune may loose some of it's accuracy if this is done, especially regarding the hardware envelopes and noise, and this means the sound will not be exactly the same, but is much more acceptable).&lt;br /&gt;
&lt;br /&gt;
Examples of Spectrum Beeper sound converted to AY:&lt;br /&gt;
* Knightmare&lt;br /&gt;
* Last Ninja 2&lt;br /&gt;
* Super Hang On&lt;br /&gt;
&lt;br /&gt;
==Graphics==&lt;br /&gt;
&lt;br /&gt;
The Spectrum's graphics use 1 bit per pixel to define them. Each byte defines 8 pixels. The colour of each pixel is then defined by the attribute system.&lt;br /&gt;
&lt;br /&gt;
The attribute &amp;quot;ram&amp;quot; define the background colour (where a bit is 0), a foreground colour (where a bit is 1), if the dark variant of the colours should be used, or if the colours should flash at a fixed rate.&lt;br /&gt;
&lt;br /&gt;
If the background is a single colour, the sprites can be ORed on. If shading is to be used a mask is often stored with the pixels. The mask is used to remove or retain (depending on the mask type) pixels on the screen. The final result on the screen is the result of the mask then the sprite pixels.&lt;br /&gt;
&lt;br /&gt;
On the Amstrad, the number of bits to define a pixel, the number of colours that can be used, and the width of the pixels is different for each mode. &lt;br /&gt;
* Mode 0 uses 4 bits for each pixel. Each byte defines 2 pixels. 16 colours can be used without restriction. Wide pixels. This is lower resolution than the spectrum.&lt;br /&gt;
* Mode 1 uses 2 bits for each pixel. Each byte defines 4 pixels.  4 colours can be used without restriction. Pixels the same size as the spectrum.&lt;br /&gt;
* Mode 2 uses 1 bit for each pixel. Each byte defines 8 pixels. 2 colours can be used without restrictions. Pixels are thinner than the spectrum. This is higher resolution.&lt;br /&gt;
&lt;br /&gt;
Consequences:&lt;br /&gt;
* The pixel data and colours are stored in a different way than the CPC, so some conversion must be done before the graphics can be used. Either the graphics are remade, or often converted through some automatic process.&lt;br /&gt;
* There is a trade off between mode 1, keeping the same resolution as the Spectrum but having only 4 colours, or using mode 0, with half the horizontal resolution but 16 colours. The choice depends on the detail required in the graphics.&lt;br /&gt;
&lt;br /&gt;
The following sections describe possible ways to handle the graphics on the Amstrad.&lt;br /&gt;
&lt;br /&gt;
===Techniques used for Graphics===&lt;br /&gt;
&lt;br /&gt;
====Graphics with transparency====&lt;br /&gt;
&lt;br /&gt;
=====Storage=====&lt;br /&gt;
&lt;br /&gt;
A common way to do this is on the Spectrum is to store 1 byte of mask, followed by 1 byte of pixel data, and to repeat this for the width of the sprite divided by 8. (Each byte representing a 8 pixel wide single line slice of the sprite).&lt;br /&gt;
&lt;br /&gt;
If we consider a sprite which is 16x16. Each byte contains 8 pixels. For each line 2 bytes would be needed for pixel data and 2 bytes for mask. The total storage space required would be (2+2)*16 = 64 bytes.&lt;br /&gt;
&lt;br /&gt;
If we consider mode 1 on the Amstrad, and we used the same representation, we could freely use 4 colours for the sprites. The Amstrad would also need 2 times the ram space to store the data, because in mode 1 there is half the number of pixels per byte.&lt;br /&gt;
So, each byte contains 4 pixels. For each line 4 bytes would be needed for pixel data and 4 for mask: (4+4)*16 = 128 bytes.&lt;br /&gt;
&lt;br /&gt;
However, if we sacrifice 1 colour, so we have 1 pen which is fully transparent and 3 for opaque sprite colours then we don't need the mask to be stored this way. The mask is common for all sprites and we could store this as a single 256 byte array. We would still need 4 bytes for the pixel data but the result now is: 4*16 = 64 bytes. The same weight as the Spectrum.&lt;br /&gt;
&lt;br /&gt;
Mode 2 is generally not used for games on the Amstrad because of it's lack of colour. The pixels in this mode are half as wide as the Spectrum's. If the Spectrum data was used directly, which it could be, then the sprites would be half the width of the Spectrum's. In this case the data storage is the same as on the Spectrum. If we wanted to maintain the same resolution we would need to double up each pixel, effectively magnifying it in the width by 2. The result would be twice the size of the Spectrum data.&lt;br /&gt;
&lt;br /&gt;
If mode 0 is used, we could either store a mask and byte, as for the Spectrum, or more commonly we use pen 0 for full transparent and leave the other 15 pens to define the sprite. We could then use half the number of pixels horizontally and lower resolution too. Each byte now contains 2 pixels. The sprite is 8x16 now = (8/2)*16 = 64 bytes. This the same storage size as for mode 1. If the size of the sprites were too small, then we would need to increase the size and the storage space.&lt;br /&gt;
&lt;br /&gt;
Therefore, depending on the representation, this would determine how much ram is consumed on the Amstrad.&lt;br /&gt;
&lt;br /&gt;
The best choices are to go for mode 1, and use a common mask table, with 3 colours per sprite. Or use mode 0, use a common mask table, with 15 colours per sprite. In both cases we use 256 bytes more than the Spectrum equivalent graphics. &lt;br /&gt;
&lt;br /&gt;
So we show that some games could be recoloured and still use about the same amount of data as the Spectrum.&lt;br /&gt;
&lt;br /&gt;
The above do not consider the size or speed of the code to clip or draw the sprite to the Amstrad's screen compared to the Spectrum code. The values above assume the Spectrum version is not storing pre-shifted sprites, or using a pre-shift table, and when drawing to pixel positions is shifting the pixel data during draw. The comparison becomes more complicated when these are involved.&lt;br /&gt;
&lt;br /&gt;
Examples of games probably ported from the Spectrum (the use a Spectrum sized screen), in mode 1 and recoloured:&lt;br /&gt;
* HeroQuest&lt;br /&gt;
* [[Head Over Heels]]&lt;br /&gt;
* Shadow of the Beast&lt;br /&gt;
&lt;br /&gt;
Examples of games where re colouring could have been done:&lt;br /&gt;
* [[Pacmania]]&lt;br /&gt;
&lt;br /&gt;
====Graphics without transparency====&lt;br /&gt;
&lt;br /&gt;
=====Storage=====&lt;br /&gt;
&lt;br /&gt;
Tiles are often used to define background graphics. These are opaque and don't need masks. The benefit here is that on CPC we can use all the colours in the palette, so for mode 1, all 4 colours can be used and in mode 0 all 16 colours can be used.&lt;br /&gt;
&lt;br /&gt;
However on CPC generally non-transparent graphics will often take more storage space:&lt;br /&gt;
&lt;br /&gt;
For the spectrum a 8x16 tile: (8/8)x16 = 16 bytes.&lt;br /&gt;
&lt;br /&gt;
CPC mode 0: (4/2)x16 = 32 bytes&lt;br /&gt;
&lt;br /&gt;
CPC mode 1: (8/4)x16 = 32 bytes&lt;br /&gt;
&lt;br /&gt;
CPC mode 2: (8/8)x16 = 16 bytes&lt;br /&gt;
&lt;br /&gt;
In mode 0 and mode 1, the tiles on the CPC will take twice as much space compared to the Spectrum. This will impact the memory used and depending on the number of tiles this is a significant memory impact.&lt;br /&gt;
&lt;br /&gt;
====Real-Time Conversion of Spectrum graphics====&lt;br /&gt;
&lt;br /&gt;
A common way to get the Speccy game running on the CPC and using the same storage space for the graphics was to perform real-time conversion from the Spectrum graphics.&lt;br /&gt;
&lt;br /&gt;
* Graphics are stored on the Amstrad in the same format as on the Spectrum (2 colour, 1BPP with sprites having masks)&lt;br /&gt;
* Amstrad's mode 1 is used to maintain the same pixel resolution.&lt;br /&gt;
* A function converts the graphics on-demand, while the game is running, into the form that is displayed for the screen.&lt;br /&gt;
&lt;br /&gt;
Needless to say, this enabled the port without the use of additional graphics artists. Therefore it would be cheaper and easier if a programmer was tasked with making a conversion alone.&lt;br /&gt;
&lt;br /&gt;
Disadvantages:&lt;br /&gt;
* This process takes a lot more CPU power compared to the Spectrum version, because in addition to drawing and erasing the sprites, the pixel data must also be converted at the same time. &lt;br /&gt;
* This resulted in a significantly slower game.&lt;br /&gt;
* Amstrad version had less colours (often as little as 2 colours)&lt;br /&gt;
&lt;br /&gt;
Advantages:&lt;br /&gt;
* Pixel data took less RAM than if it&lt;br /&gt;
&lt;br /&gt;
====Mode 0====&lt;br /&gt;
&lt;br /&gt;
When using mode 0, the screen can be reprogrammed to use the same sized screen as when using mode 1. However the resolution would be 128x192.&lt;br /&gt;
&lt;br /&gt;
Using mode 0 has additional impact on the gameplay and game logic:&lt;br /&gt;
- there are fewer pixels horizontally therefore  both tiles and sprites are described by fewer pixels in width (although pixels are wider). Then any calculations that use pixel coordinates will need to be adjusted. This includes positioning sprites on the screen, sprite to sprite collision, converting sprite pixel coordinates to a tile map location, converting sprite pixel coordinates to a collision map location, determining if a sprite is moving off the right side of the screen. &lt;br /&gt;
&lt;br /&gt;
If the original sprites were square on the Spectrum (e.g. 16x16), then with mode 0 they are 8x16, and we may need additional code for these calculations to handle that.&lt;br /&gt;
&lt;br /&gt;
- movement per pixel will be faster horizontally than vertically. We can accept that, or if movement is meant to be the same in all directions then sprites may need to move faster vertically to ensure the movement is consistent. This then has an impact on gameplay because sprites will take less time to move over the screen and any time based goals may need to be adjusted to compensate and make the game goals consistent.&lt;br /&gt;
&lt;br /&gt;
Using mode 1 is the route to a quicker port because there are less changes to the game code.&lt;br /&gt;
 was stored in an Amstrad native form so the game could run on a 64K Ram machine (CPC464 and CPC664, 464Plus).&lt;br /&gt;
* If the colour attributes of the Spectrum were not simulated then the attribute data would not need to be stored for the CPC.&lt;br /&gt;
&lt;br /&gt;
====Mode 1====&lt;br /&gt;
&lt;br /&gt;
Amstrad's mode 1 is the closest mode which compares with the Spectrum's graphical abilities.&lt;br /&gt;
&lt;br /&gt;
The pixels are almost the same size. The CPCs screen dimensions can be reprogrammed to re-create the Spectrum's 256x192 resolution.&lt;br /&gt;
&lt;br /&gt;
However, the CPC has a different &amp;quot;pixel clock&amp;quot; compared to the Spectrum. The CPC was designed for a 320x200 display instead of a 256x192 display and in fact the the pixels are smaller on the screen when you compare mode 1 (the closest equivalent on the CPC) to the Spectrum.&lt;br /&gt;
&lt;br /&gt;
So when the screen is reprogrammed you end up with a larger border on the CPC.&lt;br /&gt;
&lt;br /&gt;
This (the larger border) led to the false argument that the CPC's resolution was inferior to the Spectrum one although the amount of pixels on the screen is EXACTLY the same.&lt;br /&gt;
&lt;br /&gt;
====Double buffering====&lt;br /&gt;
&lt;br /&gt;
TODO:&lt;br /&gt;
&lt;br /&gt;
==Screen dimensions==&lt;br /&gt;
&lt;br /&gt;
By setting CRTC register settings the Amstrad's screen dimensions can be reprogrammed to match the Spectrum's.&lt;br /&gt;
The normal values used are R1=32, R6=24.&lt;br /&gt;
&lt;br /&gt;
There are advantages to reprogramming the screen dimension to match the Spectrum's.&lt;br /&gt;
* The gameplay is similar because the player sees the same amount of map and there are the same number of enemies and they move in the same way.&lt;br /&gt;
* Graphics/levels would not need to be designed for a wider screen (e.g. in mode 1, 320 compared to 256)&lt;br /&gt;
* For a smaller screen less memory is used for the screen (16KB vs 12K). The memory used by the screen is the same regardless of CPC mode used. Unused areas can be used to store graphics, code and music. For a CPC screen at &amp;amp;c000, the unused areas are: c600-c7ff, ce00-cfff, d600-d7ff, de00-dfff, e600-e7ff, ee00-efff, f600-f7ff, fe00-ffff&lt;br /&gt;
&lt;br /&gt;
==Random numbers==&lt;br /&gt;
&lt;br /&gt;
Sometimes Spectrum games generate random numbers by reading from the Spectrum's ROM which is always readable in the memory range &amp;amp;0000-&amp;amp;3fff.&lt;br /&gt;
&lt;br /&gt;
''Consequences for CPC:''&lt;br /&gt;
&lt;br /&gt;
* There is often not enough memory to store the Spectrum ROM in the Amstrad's memory. If the range read could be determined then possible a smaller range could be stored. &lt;br /&gt;
* It would be wasteful to store part or all of the Spectrum's ROM in the memory&lt;br /&gt;
* It is not legal to store any part of the Spectrum's ROM in memory&lt;br /&gt;
&lt;br /&gt;
Some games may use the 'R' register to generate a semi-random number.&lt;br /&gt;
&lt;br /&gt;
''Consequences for CPC:''&lt;br /&gt;
&lt;br /&gt;
* The R register value is based on the number and which instructions are executed. It is likely that the number of instructions between each read of the 'R' register could differ.&lt;br /&gt;
&lt;br /&gt;
For both of these methods the consequences for CPC are:&lt;br /&gt;
&lt;br /&gt;
* the numbers generated are likely to produce numbers which will differ compared to the Spectrum version and therefore the gameplay could be different. It may be subtle, it may be significant.&lt;br /&gt;
* reading a random number may take more CPU instructions to do this making it slightly slower.&lt;br /&gt;
&lt;br /&gt;
Where possible the Spectrum and Amstrad versions should use the same random number generation based on a stored seed.&lt;br /&gt;
&lt;br /&gt;
==Memory arrangement==&lt;br /&gt;
&lt;br /&gt;
Spectrum game's often use the memory from &amp;amp;5500-&amp;amp;ffff.&lt;br /&gt;
&lt;br /&gt;
''Consequences for CPC:''&lt;br /&gt;
- If you are not using a custom disc or tape loader then during loading you will need to preserve the firmware memory regions. The easiest thing to do is start the game lower in memory (&amp;amp;0040), use the default screen at &amp;amp;c000-&amp;amp;ffff, and then once loaded copy data over these areas (provided you are not doing furthur loading/saving).&lt;br /&gt;
&lt;br /&gt;
==Original consequences (under construction)==&lt;br /&gt;
&lt;br /&gt;
The Amstrad CPC was one of the best 8-bit computers of its time in terms of graphical capabilities. But those advanced capabilities had an impact on CPU resources. &lt;br /&gt;
As so many games were ported from the Spectrum, a machine with decidedly lower visual specs, the Amstrad range could hardly benefit from its main advantage while lack of optimization meant that aspects as scroll or playing area fared even worse than the Spectrum versions. You have to remember that Spectrum had less resources taken by Video RAM, so could handle animation or scrolling more easily. It is also a misconception to believe the screen was downsized in those games to gain processor resources. It was only done to use the Speccy graphics more easily, and we can doubt the code was (re-)designed so such a screen reduction would even gain CPU resources.&lt;br /&gt;
&lt;br /&gt;
Interestingly, games in Mode 1 could have been good despite the lack of colours, if only those colours were used properly more often.&lt;br /&gt;
&lt;br /&gt;
Most of them got their graphic totally unchanged, displaying some kind of colour attributes &amp;quot;artifacts&amp;quot;, a tell-tale sign of a Speccy port.&lt;br /&gt;
&lt;br /&gt;
On the other hand, as mentioned before, those games weren't always bad. Games with no need of scrolling and with re-coded graphics could actually be good.&lt;br /&gt;
&lt;br /&gt;
=Investigation into a Speccy Port=&lt;br /&gt;
&lt;br /&gt;
Arnoldemu attempted a Speccy Port in 2022-2023 and the result is 'Mayhem'. The documentation with this game has comparisons and describes the decisions made when making this conversion. You can read about the elements of this journey.&lt;br /&gt;
&lt;br /&gt;
=Lists of speccy ports=&lt;br /&gt;
Note: these lists are by no means comprehensive, they just include the most high-profile releases.&lt;br /&gt;
&lt;br /&gt;
* [[Mayhem]] - [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=18884] A recent Speccy port to CPC and PCW done by a single person. Read the document to see the comparison, issues encountered, choices made, read about the journey.&lt;br /&gt;
&lt;br /&gt;
=='''Computer originals Hits'''==&lt;br /&gt;
(most of them ended up being decent) :&lt;br /&gt;
&lt;br /&gt;
*[[H.A.T.E Hostile All Terrain Encounter]]&lt;br /&gt;
*Highway encounter&lt;br /&gt;
*Lotus turbo Esprit challenge&lt;br /&gt;
*Fighting Warrior&lt;br /&gt;
*Vendetta&lt;br /&gt;
*Hard Drivin' &lt;br /&gt;
*Way of the Tiger&lt;br /&gt;
*Last Ninja2 &lt;br /&gt;
*Myth, history in the making&lt;br /&gt;
*[[Saboteur]] I&lt;br /&gt;
*Saboteur II &lt;br /&gt;
*SWIV &lt;br /&gt;
*Shadow of the beast&lt;br /&gt;
&lt;br /&gt;
The numerous CodeMaster or Hewson games are not listed. Many of them were cheap budget Speccy games to begin with, and were quite well ported or remained good...&lt;br /&gt;
&lt;br /&gt;
=='''Well known franchises'''==&lt;br /&gt;
*Scooby Doo&lt;br /&gt;
*Thundercats.&lt;br /&gt;
*MASK 3 : Venom Strike Back &lt;br /&gt;
*Airwolf 2&lt;br /&gt;
*Batman: The Caped Crusader&lt;br /&gt;
&lt;br /&gt;
=='''Adult games'''==&lt;br /&gt;
*Sabrina &lt;br /&gt;
*Samantha fox strip poker.&lt;br /&gt;
*Strip poker II&lt;br /&gt;
&lt;br /&gt;
=='''Movie Franchises'''==&lt;br /&gt;
*Indianna Jones 3 action game.&lt;br /&gt;
*Back to the future 2 (half of the parts were Speccy Port)&lt;br /&gt;
*Big Trouble In Little China&lt;br /&gt;
&lt;br /&gt;
=='''Arcade hits'''==&lt;br /&gt;
*[[R-Type]] &lt;br /&gt;
*[[Pac-Mania]]&lt;br /&gt;
*Salamander&lt;br /&gt;
*Dragon Breed&lt;br /&gt;
*Scramble Spirits&lt;br /&gt;
*[[Black Tiger]] - [[Black Tiger CPC-Spectrum Comparison]]&lt;br /&gt;
*Strider&lt;br /&gt;
*Bionic Commando&lt;br /&gt;
*Super Wonderboy&lt;br /&gt;
*Double Dragon 3&lt;br /&gt;
*Super Hang-On&lt;br /&gt;
*Enduro Racer&lt;br /&gt;
*Toobin'&lt;br /&gt;
*Xybots&lt;br /&gt;
*Pit fighter&lt;br /&gt;
*Cabal&lt;br /&gt;
*Street Fighter&lt;br /&gt;
*Karnov&lt;br /&gt;
*Dynasty Wars&lt;br /&gt;
*Gauntlet 3&lt;br /&gt;
*Midnight resistance&lt;br /&gt;
&lt;br /&gt;
=='''Best known speccy ports'''==&lt;br /&gt;
&lt;br /&gt;
All those games are frequently used in 8bit wars style videos and reviews, hence they have served as a counter-argument to the CPC's superior abilities. Those games were well known hits ported on pretty much all computers of their time and therefore constituted the very basis of comparison between most systems of the era.&lt;br /&gt;
&lt;br /&gt;
*Shadow of the beast&lt;br /&gt;
*Myth, history in the making &lt;br /&gt;
*Gauntlet 3&lt;br /&gt;
*SWIV &lt;br /&gt;
*R-Type &lt;br /&gt;
*PacMania&lt;br /&gt;
*Salamander&lt;br /&gt;
*Dragon Breed&lt;br /&gt;
*Scramble Spirits&lt;br /&gt;
*Black Tiger&lt;br /&gt;
*Strider&lt;br /&gt;
*Bionic Commando&lt;br /&gt;
*SuperWonderboy&lt;br /&gt;
*Double Dragon3&lt;br /&gt;
*Super Hang-On&lt;br /&gt;
*Enduro Racer&lt;br /&gt;
*Toobin&lt;br /&gt;
*Xybots&lt;br /&gt;
*Pit fighter&lt;br /&gt;
*Cabal&lt;br /&gt;
*Last Ninja2 &lt;br /&gt;
*Thundercats.&lt;br /&gt;
*Hard Drivin'&lt;br /&gt;
*Sabrina&lt;br /&gt;
*Samantha fox strip poker.&lt;br /&gt;
*Strip Poker II&lt;br /&gt;
*Airwolf 2&lt;br /&gt;
*Indianna Jones 3 action game.&lt;br /&gt;
*Back to the future 2&lt;br /&gt;
*Vendetta&lt;br /&gt;
&lt;br /&gt;
=The 3 levels of Speccy porting=&lt;br /&gt;
&lt;br /&gt;
Of course the level of porting could greatly depend on whatever strategy the programmers/graphists used to port the original Spectrum game.&lt;br /&gt;
&lt;br /&gt;
*A monochrome game could remain monochrome or be recolored for the CPC, or only parts of it (only sprites or Tiles but not both - mostly only sprites.)&lt;br /&gt;
*A colored game with design-wise graphics (character based design) could be the exact same yet with even less colours.&lt;br /&gt;
*Or Tiles/sprites could simply be completely well re-done/re-drawn, even in Mode 0 sometimes.&lt;br /&gt;
&lt;br /&gt;
==Rushed and Lazy==&lt;br /&gt;
&lt;br /&gt;
The game is exactly as on the Spectrum, even displaying graphical artifacts as Colour attributes and/or monochrome display for the game's window but not always the HUD, which may even often feature extra colours thanks to Raster colour changes, yet this doesn't really help to see what happens on the game's window.&lt;br /&gt;
&lt;br /&gt;
Also sprites may display Transparency/translucency with background's colour (=colour clash), a typical Spectrum &amp;quot;feature&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Probably achieved by using almost the exact Spectrum code and emulating the Spectrum attributes on the CPC.&lt;br /&gt;
&lt;br /&gt;
Examples : &lt;br /&gt;
*'''PacMania'''&lt;br /&gt;
[[File:Pacmania title.png]]&lt;br /&gt;
[[File:Pac04.png]]&lt;br /&gt;
&lt;br /&gt;
Typical example, yet it managed to be a nice game despite this. The title screen and HUD shows the color attributes and were almost completely unchanged, yet with less colours on screen than the Speccy version.&lt;br /&gt;
&lt;br /&gt;
Ironically, the game manages to display 6 colours in the 4 colours Mode1 - yet the game's area remains completely monochromatic (coded in 1 bit) and colour attributes artifacts are still present.&lt;br /&gt;
&lt;br /&gt;
*'''[[Black Tiger]]''': Same as PacMania&lt;br /&gt;
*'''Super Hang On''' : graphics Transparency/translucency&lt;br /&gt;
*'''Enduro Racer''' : same as Super Hang On, even more displayed as Sprites more often cross the different colored parts of the screen (while jumping)&lt;br /&gt;
*'''Bionic Commando''' : there are even inverted/negative colored sprites&lt;br /&gt;
*'''Sabrina''' : same as Bionic commando&lt;br /&gt;
*'''Gauntlet 3''' : HUD is properly recolored (3 shades) but in-game window is monochrome (1bit coded sprites and tiles)&lt;br /&gt;
*'''R-type''' : Monochrome background while sprites still are &amp;quot;coloured&amp;quot; as with Colour attributes, hence even featuring less colours than original Spectrum game, while the entire screen still displays more than the only 4 Mode1 colours...(HUD raster trick). This game was done in 3 weeks by only one man, who simply emulated the speccy stuff on CPC. Given that the Spectrum game was a great release the CPC port is not too bad.&lt;br /&gt;
&lt;br /&gt;
An special mention must go for '''Mevlut &amp;quot;Speccy&amp;quot; Dinc''', one of the worst offenders with nightmares as '''Big Trouble In Little China''', '''Enduro Racer''', '''Hammerfist''', '''Knightmare''', '''Last Ninja 2''', '''Last Ninja 2 Remix''', '''Prodigy''', '''Super Hang-On''' and '''Time Machine'''.&lt;br /&gt;
&lt;br /&gt;
==Semi-lazy==&lt;br /&gt;
&lt;br /&gt;
Well redone graphically, but not always as would actually be needed. &lt;br /&gt;
&lt;br /&gt;
Examples :&lt;br /&gt;
*'''HeroQuest''':  still has monochrome feeling (2 blue shades being used) while actually being properly 2 bit re-coded. Ditherings  use 3-colour gradients instead of the Spectrum's 2, and the grey adds a feeling of more colour.&lt;br /&gt;
*'''Strider''' has recoloured sprites, displaying no attributes, but Backgrounds remains monochrome, and the game is sluggish (because the CPU must still convert 1bpp graphics into 2bpp), yet the HUD+Raster trick enable a 6 colours displayed on screen and the HUD looks good.&lt;br /&gt;
*'''Shadow of the Beast''': No real 3-4 coloured ditherings or even additional colours thanks to dithering the 2 medium colours together in many graphics (exteriors or for many sprites), yet the square Spectrum attributes are not displayed, while the Spectrum version remains monochrome (in game window, not HUD) in order to simply avoid Colour clashes. Would have needed more development time and a real CPC version.&lt;br /&gt;
&lt;br /&gt;
==Good Job==&lt;br /&gt;
Those games are often more to be seen as proper Cross-Dev.&lt;br /&gt;
&lt;br /&gt;
Graphics, despite sharing a common ancestry, are well redone, and take into account the Amstrad power. Sometimes those games are not that well ported, yet their concept and gameplay are such that this is not that important: the game is simply too good to be annoyed by such detail as the use of Mode1, and they were still sufficiently re-done.&lt;br /&gt;
&lt;br /&gt;
*[[Head Over Heels]]&lt;br /&gt;
*[[Deflektor]]&lt;br /&gt;
*'''Switchblade''': the GX4000 cartridge version displays extra features such as large vertical ditherings in a lot of Red shades (sky) or PLUS Hardware sprites &amp;quot;patches&amp;quot; as extra coloured tiles. This is more than enough to get a properly coloured feeling.&lt;br /&gt;
&lt;br /&gt;
Some Speccy ports &amp;quot;done right&amp;quot; may also use Mode 0 instead of Mode 1, hence being graphically fully CPC (yet tiles or sprites are still comparable in dimensions). The result may vary from awful (the code is not optimised enough for CPC) to great (a well optimised Z80 game management engine with a different and accurate/efficient graphic display engine). This can be seen in '''Space Gun''': Mode 0 and even PLUS features, yet the attribute-designed-unmasked sprites remain, in a sluggish game.&lt;br /&gt;
&lt;br /&gt;
=Techniques used=&lt;br /&gt;
&lt;br /&gt;
==Monochromatic playfield and Sprite Masks==&lt;br /&gt;
&lt;br /&gt;
Having a monochrome playfield on ZX Spectrum is a common way to have no colour clashes - simply because there are no colours to clash! Also, most of those games then had masked sprites. This meant that each set of sprites had another &amp;quot;sprite set&amp;quot; for the mask, being actually 2x1bpp (bit per pixel) sets of data.&lt;br /&gt;
&lt;br /&gt;
Some games coders actually used this to get the Sprites coded in 2bpp and used one of the 4 inks in mode1 to be the mask. This then took up almsot no more RAM used by data than the original (concerning masked Graphics). As a result some of those speccy ports have sprites in another colour than the background, which is actually better in terms of playability/look.&lt;br /&gt;
&lt;br /&gt;
An example of this is '''Super wonder boy''' which could have even used one more colour for the sprites, but didn't.&lt;br /&gt;
&lt;br /&gt;
Needless to say, the Background Tiles and Letter fonts were still in 1bpp converted in real time so the CPU had no rest and such games weren't faster nor that much better looking.&lt;br /&gt;
&lt;br /&gt;
On the other hand, some games, despite having such Masked sprite totaling 2bpp had absolutely no sprite re-code at all (although this could have easily been prevented). '''Black Tiger''' is such a case.&lt;br /&gt;
&lt;br /&gt;
Nevertheless, those games had one advantage : the smooth movement of sprites.&lt;br /&gt;
&lt;br /&gt;
'''Examples :''' &lt;br /&gt;
&lt;br /&gt;
*Batman: The Caped Crusader&lt;br /&gt;
&lt;br /&gt;
Decently ported, As it use the 2bpp for the sprites in full potential. The sprites use 3 colours and the background 2 colours, including colour the unused by sprites, this make a poor background but the differently coloured sprites enable a better visibility.&lt;br /&gt;
&lt;br /&gt;
*Strider : like Batman: The Caped Crusader... sprites use 3 colours and background 2... the difference in used inks give the sprites some extra visibility.&lt;br /&gt;
&lt;br /&gt;
Strider also features some raster effect to get the HUD with extra colours, yet this certainly slow down the game a bit..&lt;br /&gt;
&lt;br /&gt;
*Super wonderboy (wonderboy2) : poor port... the sprites use only 2 colours while they could actually use 3 with no extra effort but some graphical job.&lt;br /&gt;
Yet compaired to spectrum version, the CPC version manage to have the sprite more visible thanks to their different ink.&lt;br /&gt;
&lt;br /&gt;
==Masked Backgrounds==&lt;br /&gt;
&lt;br /&gt;
Some (rare) games actually used a mask for the Bakcground tiles too. This explains why they could be fully recoded with no notable additional weight for the data. Such games are often Isometric games and are considered among the good speccy ports (or actual Cross-Dev).&lt;br /&gt;
&lt;br /&gt;
'''Examples :'''&lt;br /&gt;
&lt;br /&gt;
*'''Heroquest''': the Background tiles are also in 3 colours. Yet there is a really poor use of the mask colour.&lt;br /&gt;
*'''Head over Heels''': yet the colours are better used than in Heroquest. If you look carefully, there are 2 kind of &amp;quot;background&amp;quot; elements. &lt;br /&gt;
**Real non-masked Background (floor, walls) which use  the full 4 colours, &lt;br /&gt;
**and masked elements such as Sprites, Doors, Platforms... which are 3 colours only.&lt;br /&gt;
&lt;br /&gt;
==Unmasked games and CPC colour clashes==&lt;br /&gt;
This category includes some of the worse examples, since actual Spectrum deficiencies were ported to the CPC.&lt;br /&gt;
&lt;br /&gt;
*'''Bionic Commando'''&lt;br /&gt;
*'''Enduro Racer'''&lt;br /&gt;
&lt;br /&gt;
==Attribute/Character based Sprites and Animation==&lt;br /&gt;
&lt;br /&gt;
The cell based colouring used on the Spectrum has it's disadvantages. &lt;br /&gt;
&lt;br /&gt;
When moving a sprite over a background, or a sprite over another sprite, and if both have colours you have to decide which colours take priority. &lt;br /&gt;
&lt;br /&gt;
It is not possible to have all the colours together because of the colour limitation within each 8x8 cell. &lt;br /&gt;
&lt;br /&gt;
The problem then comes down to is that the graphics with a lower priority then takes the colour of the higher priority graphics. &lt;br /&gt;
&lt;br /&gt;
Such games had no smooth movement of sprites. The sprite moved &amp;quot;character per character&amp;quot;. As such the sprites are often unmasked, being not really more than &amp;quot;tile-mapped&amp;quot;. This meant the sprites had to actually fill the character tile or there would be artifacts introduced for the unmasked character's corner.&lt;br /&gt;
&lt;br /&gt;
This was a &amp;quot;good&amp;quot; other way to get rid of Attributes Clashes and having actual &amp;quot;colours&amp;quot; on ZX Spectrum. But some speccy ports were then emulating the attribute system, which can be quite bad because CPC in Mode1 has half the colours the Speccy has.&lt;br /&gt;
&lt;br /&gt;
*'''R-Type''' : the background has a smooth scrolling while the sprites are fixed character grid based.&lt;br /&gt;
&lt;br /&gt;
*'''Space gun''': this game was even released for Amstrad PLUS... Although coming very late in the CPC era is not really good and was probably rushed to the release. &lt;br /&gt;
&lt;br /&gt;
Yet the Character based engine enabled enormous sprites - but lacked smooth movement. Such a technique was actually used for quite a fair amount of Mode0 games. This is not &amp;quot;Speccy port&amp;quot; but it is good to to mention, as it was a common game design technique for both machines.&lt;br /&gt;
&lt;br /&gt;
*'''AMC (Astro Marines corps)''' : speccy version has no attribute clashes and is great. Amstrad version is in Mode0, feature multiscroll effect and remains fast.&lt;br /&gt;
&lt;br /&gt;
*'''Satan''' : this one is like R-Type, but the sprite layer is masked, so the game is monocolour on Spectrum. Still the Character system for the sprite has the advantage of giving good speed. The CPC version is fully in Mode0 and great, still the engine is clearly shared with speccy.&lt;br /&gt;
&lt;br /&gt;
==Rasters==&lt;br /&gt;
A common cheat was to get some Raster interrupt colour change so you could argue that the game is actually displaying more than 4 colours on screen while being Mode1. This is only to mimic some sort or Raster based Colours attributes yet is actually not a clever move in some way as getting some raster interrupt may take lots of CPU cycles. Also, despite the game displaying more than the allowed colours on screen, the playing area was still monochrome. In the end, all this did was getting the game even slower.&lt;br /&gt;
&lt;br /&gt;
On the other hand this could also be done right:&lt;br /&gt;
*'''Deflektor''' : Raster done right.&lt;br /&gt;
*'''Strider''' : Raster done right. (useless but good looking)&lt;br /&gt;
*'''Thundercats''' : (though there are more playing area colours)&lt;br /&gt;
*'''R-Type'''&lt;br /&gt;
*'''PacMania'''&lt;br /&gt;
*'''Black Tiger'''&lt;br /&gt;
&lt;br /&gt;
Many (if not all) of those games can actually run faster just by getting rid of CPU-wasting rasters.&lt;br /&gt;
&lt;br /&gt;
Providing a game had to deal with 1bpp to 2 bpp conversion, Software Sprites and Scrolling and complicated gameplay, adding some Raster interrupt to the equation is a really bad move and a good way to waste even more CPU time.&lt;br /&gt;
&lt;br /&gt;
==Amstrad interrupt positions==&lt;br /&gt;
&lt;br /&gt;
The following image shows where the Amstrad's interrupt positions are located relative to the screen. Here the CRTC Register values used are R1=32, R2=42, R6=24 and R7=30 and the colours are changed at the start of the interrupt. &lt;br /&gt;
&lt;br /&gt;
To have different positions vertically you can change the value of R7 (and if the monitor will accept it R5) to move the screen up and down.&lt;br /&gt;
For example Gryzor sets R7=29 to have a 1 char tall panel at the bottom in mode 1.&lt;br /&gt;
&lt;br /&gt;
To change at later positions you can also use a software timing loop, or fill the time with other code to delay the colour change from a chosen interrupt position.&lt;br /&gt;
 &lt;br /&gt;
[[File:Interrupt_positions_spectrum_sized_screen.png|Screenshot of Amstrad interrupt positions showing where mode and colours can be changed quickly relative to pixel graphics. R1=32, R2=42, R6=24,R7=30]]&lt;br /&gt;
&lt;br /&gt;
This image demonstrates that if you wish to use mode 1, and change palette colours for HUD and game area, then the graphics need to be arranged or re-sized so that the colour change positions are most optimal. For some games, the dimensions of the HUD or play area may not allow the palette to be changed easily.&lt;br /&gt;
&lt;br /&gt;
[[Category: Games| ]][[Category:Programming]][[Category:Games Programming]][[Category:CrossDev]][[Category:CPC History]][[Category:Non CPC Computers]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Silent_Service&amp;diff=127323</id>
		<title>Silent Service</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Silent_Service&amp;diff=127323"/>
				<updated>2026-04-06T21:59:30Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Silent service title.png|thumb|Title screen]]&lt;br /&gt;
[[File:Silent service.png|thumb|Looking through the periscope]]&lt;br /&gt;
&lt;br /&gt;
'''''Silent Service''''' is a 1986 WW II Pacific warfare submarine simulation designed by [[Sid Meier]] and published by [[Microprose]].&lt;br /&gt;
&lt;br /&gt;
The was (and continues to be) highly respected, despite not being the most realistic or detailed sub sim. The CPC port suffers a bit from the choice of MODE 1 for the game (typical [[Speccy Port|Spectrum port]]). On a [[GT64/GT65|GT65]], some of the graphics (black ships on a dark blue sea) have very low contrast, making the game almost unplayable. This game should really have included an alternative palette for green screens.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
* {{CPCPower|1937}}&lt;br /&gt;
* {{EnWiki|Silent_Service_(video_game)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Games]]&lt;br /&gt;
[[Category:Games 1986]]&lt;br /&gt;
[[Category:Marine]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Main_Page&amp;diff=127232</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Main_Page&amp;diff=127232"/>
				<updated>2026-04-04T06:39:11Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: Alien the Xenomorph&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&amp;lt;center&amp;gt;This site is an encyclopaedia on all things [[Amstrad|Amstrad]] [[CPC|CPC]] related. There are now '''[[Special:Allpages|{{NUMBEROFARTICLES}} articles]]''' about the CPC available.&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:forum.png|300px|link=http://www.cpcwiki.eu/forum]]      [[Image:Vs.png|300px|link=http://www.cpcwiki.eu/index.php/Speccy_Port]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid rgb(255, 201, 201); margin: 0px 0px 5px; padding: 0.5em 1em; background-color: rgb(255, 243, 243);&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Amstrad Addict Magazine ad.jpg|190px|thumb|left]]&lt;br /&gt;
'''AMSTRAD ADDICT MAGAZINE ANNOUNCED&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A new 60-page Amstrad magazine - '''Amstrad Addict''' - edited by '''David Crookes''' (Retro Gamer, PC Pro, GamesTM, Wireframe, Amstrad Action, WACCI) is in stock!&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; It includes an interview with '''Lord Sugar''' and in-depth articles by Roland Perry, Auntie John, Adam Peters, Nich Campbell, Xyphoe, Rob Scott, Themistocles &amp;quot;gryzor&amp;quot; Papassilekas, Neil Reive, Stuart &amp;quot;Balrog&amp;quot; Whyte, Steve &amp;quot;WACCI&amp;quot; Williams and Andy Price. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;There's an amazing type-in by Sean McManus, interviews with Richard Fairhurst and behind the scenes looks at Toki... and Vespertino. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;And more. Like interviews with the people behind Protext and OCP Advanced Art Studio&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Order PDF or printed magazine '''[https://www.pixel.addict.media/shop/amstrad-addict-magazine here]''' or follow the discussion '''[https://www.cpcwiki.eu/forum/news-events/amstrad-addict-magazine here]'''!&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid rgb(255, 201, 201); margin: 0px 0px 5px; padding: 0.5em 1em; background-color: rgb(255, 243, 243);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; '''CPC Related News''' &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- 8 last news only, see http://www.cpcwiki.eu/index.php/OldNews --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;overflow:auto; border: 0px solid #FFC9C9&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Dez80_intro.png|thumb|256px|[http://www.cpcwiki.eu/index.php/DEZ80 Mastering Z80 Assembler Course]]]&lt;br /&gt;
&lt;br /&gt;
*04/04/26: '''Alien the Xenomorph''' [https://capasoft.itch.io/alien-the-xenomorph has been released].&lt;br /&gt;
*11/02/25: '''[[Qbert | Q*bert]]''' beta version has been released for the Amstrad Plus range.&lt;br /&gt;
*24/12/25: '''[[FutureOS]] 2025''' released! Many new features :-)&lt;br /&gt;
*10/11/25: '''Pitfall II''' [https://21bloques.itch.io/pitfall2 has been released].&lt;br /&gt;
*02/11/25: '''Bug's Quest 2''' [https://yb-software.itch.io/bugs-quest-2 has been released].&lt;br /&gt;
*08/10/25: [[Future View VI]] released! In English, French, German, Spanish and Turkish.&lt;br /&gt;
*06/08/25: '''El Hobbit''' using [[the Mojon Twins]] engine [https://mojontwins.itch.io/el-hobbit-vah-kas-cut has been released].&lt;br /&gt;
*31/07/25: [[Oh Mummy Resurrected]] has been released for the Amstrad Plus range.&lt;br /&gt;
*03/06/25: [[On File]] (2025) DBMS which supports Graphics has been released.&lt;br /&gt;
*27/05/25: '''[[CPCGamesCD-CPCLoader | CPCGamesCD]]''' has been updated. [https://amstrad.es/cpcgamescd]&lt;br /&gt;
*25/04/25: '''Phantomas en el Museo''' using [[the Mojon Twins]] engine [https://mojontwins.itch.io/phantomas-en-el-museo-amstrad-cpc is released].&lt;br /&gt;
*05/04/25: [[ROManager]] 2.50 released!&lt;br /&gt;
*08/03/25: '''[https://tartessos-games.itch.io/master-piece Master Piece]''', the latest game from Tartessos Games, has been released.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=right&amp;gt;...[[OldNews|Older News]]...&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- WEIRD TABLE START --&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; class=&amp;quot;FCK__ShowTableBorders&amp;quot; &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| &amp;lt;div style=&amp;quot;border: 1px solid rgb(176, 176, 176); margin: 0px 0px 5px; padding: 0.5em 1em; background-color: rgb(238, 238, 238);&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CPCWiki related ===&lt;br /&gt;
*[[CPCWiki updates]]&lt;br /&gt;
*[[Donors]]&lt;br /&gt;
&lt;br /&gt;
'''Become an Author!'''&lt;br /&gt;
&amp;lt;createbox&amp;gt; &lt;br /&gt;
default=Enter name of article to create &lt;br /&gt;
buttonlabel=Create article! &lt;br /&gt;
width=40 &lt;br /&gt;
&amp;lt;/createbox&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid rgb(176, 176, 176); margin: 0px 0px 5px; padding: 0.5em 1em; background-color: rgb(238, 238, 238);&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: right;&amp;quot;&amp;gt;&amp;lt;small&amp;gt;'''All [[Special:Wantedpages|wanted articles]]''' &amp;amp;#124; [[:Category:Stub|Extendable Stubs]] | '''[[Special:ContributionScores|List of most active contributors]]'''&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; style=&amp;quot;vertical-align: top;&amp;quot; | &amp;lt;div style=&amp;quot;border: 1px solid rgb(228, 222, 222); margin: 0px 0px 5px; padding: 0.5em 1em; background-color: rgb(249, 249, 249);&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Did you know?  ===&lt;br /&gt;
&lt;br /&gt;
*When the CPC 664 was being developed, Sugar was already looking (and hinting publicly!) at the CPC 6128.&lt;br /&gt;
*The [[472|CPC 472]] was a 464 + 8 KB unwired RAM, released in Spain to circumvent a tax charging 64 KB computers.&lt;br /&gt;
*With a total of '''768×288''' pixels, the [[CPC|CPC]] was the 8-bit with the highest displayable resolution on a CRT screen.&lt;br /&gt;
*'''OpenOffice''' is the descendant of [[Star-Division|StarWriter]] for CPC. &lt;br /&gt;
*'''Excel''' is the direct descendant of  [[Multiplan]] for CP/M. &lt;br /&gt;
*[[SymbOS|SymbOS]] supports '''50x''' bigger hard drives than Win95A. &lt;br /&gt;
*[[FutureOS|FutureOS]] can load a 178 KB floppy disc in '''9 seconds'''.&lt;br /&gt;
*[[FutureOS|FutureOS]] can manage up to '''4 MB''' of extended RAM and '''32 GB''' of mass storage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=User:Polluks&amp;diff=127228</id>
		<title>User:Polluks</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=User:Polluks&amp;diff=127228"/>
				<updated>2026-04-01T10:06:36Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://arcadegamedesigner.proboards.com AGD] [[List of games created using The Graphic Adventure Creator]]&lt;br /&gt;
&lt;br /&gt;
[[Keyboard_Versions#English_2]]&lt;br /&gt;
&lt;br /&gt;
* [[ACE (Emulator)]]&lt;br /&gt;
** [[Tennis_Cup_2_(cartridge)|Analogue joystick]] analog.acepansion&lt;br /&gt;
** [[BIOS Function Summary]] [[Amstrad LP-1 light pen|lp-1]].acepansion&lt;br /&gt;
&lt;br /&gt;
[[CPC-Cplink]] [[Emulator IDs]]&lt;br /&gt;
&lt;br /&gt;
== My Literature ==&lt;br /&gt;
[[Image:CPC Schneider International Sonderheft 4-1987.jpg|150px|right]]&lt;br /&gt;
* [[Das Maschinensprachebuch zum CPC464]], 2nd edn.&lt;br /&gt;
* [[CPC Schneider International Sonderheft, Issue 4]]&lt;br /&gt;
* [[Das große Buch der Public-Domain-Software]], M. Kotulla&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
* [[Gorilla]] https://github.com/sblendorio/gorilla-cpm/blob/master/dists/gorilla-cpc.dsk?raw=true&lt;br /&gt;
* [[TRSDOS]]&lt;br /&gt;
* [[Nevada Pascal]], [[Nevada PILOT]], [[Nevada Fortran]]&lt;br /&gt;
* [[Space Taxi]]&lt;br /&gt;
* [[CPC/IP]]&lt;br /&gt;
* [[Pinball Dreams]] (Preview)&lt;br /&gt;
* [[Legend of Steel]]&lt;br /&gt;
* [[Jarlac]]&lt;br /&gt;
* [https://www.forum64.de/index.php?thread/63639-k%C3%A4sek%C3%A4stchen-ein-neues-gsx-basiertes-spiel-f%C3%BCr-joyce-pcw-und-cpc/ Käsekästchen]&lt;br /&gt;
* [http://hampa.ch/pce/pics-cpm80.html CP/M]&lt;br /&gt;
* [[Bomb Jack Extra Sugar]]&lt;br /&gt;
* [[L'Abbaye des Morts]] https://github.com/retrodeluxe/AbbayeMSX&lt;br /&gt;
* [[The Ghosts of Blackwood Manor]]&lt;br /&gt;
&lt;br /&gt;
=== Livingstone ===&lt;br /&gt;
&amp;quot;In its day they coded it with a Phillips PMDS for the Amstrad initially, being later ported to Spectrum, MSX 2 (one of the few European MSX titles that is not a direct port from Spectrum), Commodore 64, PC, and even the Atari ST. The Z80 version was made by themselves and the C64 version was outsourced to a specialized freelace programmer. The C64 version probably does not share the original z80 code at all.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== People ==&lt;br /&gt;
* [[Joshua]]&lt;br /&gt;
* [[Vanity]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Nanako_in_Classic_Japanese_Monster_Castle&amp;diff=127218</id>
		<title>Nanako in Classic Japanese Monster Castle</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Nanako_in_Classic_Japanese_Monster_Castle&amp;diff=127218"/>
				<updated>2026-03-26T15:20:26Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: /* Ports */ https://www.msxblog.es/uwol-quest-for-money-y-nanako-in-cjmc-%c2%bfpara-cuando/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A platform and latter game by [[The Mojon Twins]].&lt;br /&gt;
&lt;br /&gt;
== Game plot  ==&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Nanako in Classic Japanese Monster Castle screenshots&amp;quot;&amp;gt;&lt;br /&gt;
Image:monster castle 1.png|&lt;br /&gt;
Image:monster castle 2.png|&lt;br /&gt;
Image:monster castle 3.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Ports ==&lt;br /&gt;
* [[ZX Spectrum]]: 2007&lt;br /&gt;
* &amp;lt;s&amp;gt;[[MSX]]: 2007&amp;lt;/s&amp;gt;&lt;br /&gt;
* [[Commodore 64]]: 2010&lt;br /&gt;
* [[ZX81]]: 2011&lt;br /&gt;
* [[Amstrad CPC]] Chronicles of Nanako: 2019&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
* [[Media:sortem.dsk|sortem.dsk]] (DSK file for emulators)&lt;br /&gt;
* [http://www.cpcwiki.eu/imgs/5/56/Mojon-Twins--Nanako-In-Classic-Japanese-Monster-Castle--CPC--src.rar source code]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[http://www.mojontwins.com/juegos_mojonos/nanako-in-classic-japanese-monster-castle-v2/ Home of Nanako in Classic Japanese Monster Castle] (Spanish)&lt;br /&gt;
&lt;br /&gt;
[[Category:Games 2009]] [[Category:Games]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Amstrad_CPC&amp;diff=127217</id>
		<title>Amstrad CPC</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Amstrad_CPC&amp;diff=127217"/>
				<updated>2026-03-26T15:05:24Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: Redirected page to CPC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[CPC]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Nanako_in_Classic_Japanese_Monster_Castle&amp;diff=127216</id>
		<title>Nanako in Classic Japanese Monster Castle</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Nanako_in_Classic_Japanese_Monster_Castle&amp;diff=127216"/>
				<updated>2026-03-26T15:02:28Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: /* Ports */ Chronicles of Nanako&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A platform and latter game by [[The Mojon Twins]].&lt;br /&gt;
&lt;br /&gt;
== Game plot  ==&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Nanako in Classic Japanese Monster Castle screenshots&amp;quot;&amp;gt;&lt;br /&gt;
Image:monster castle 1.png|&lt;br /&gt;
Image:monster castle 2.png|&lt;br /&gt;
Image:monster castle 3.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Ports ==&lt;br /&gt;
* [[ZX Spectrum]]: 2007&lt;br /&gt;
* &amp;lt;s&amp;gt;[[MSX]]: 200x&amp;lt;/s&amp;gt;&lt;br /&gt;
* [[Commodore 64]]: 2010&lt;br /&gt;
* [[ZX81]]: 2011&lt;br /&gt;
* [[Amstrad CPC]] Chronicles of Nanako: 2019&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
* [[Media:sortem.dsk|sortem.dsk]] (DSK file for emulators)&lt;br /&gt;
* [http://www.cpcwiki.eu/imgs/5/56/Mojon-Twins--Nanako-In-Classic-Japanese-Monster-Castle--CPC--src.rar source code]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[http://www.mojontwins.com/juegos_mojonos/nanako-in-classic-japanese-monster-castle-v2/ Home of Nanako in Classic Japanese Monster Castle] (Spanish)&lt;br /&gt;
&lt;br /&gt;
[[Category:Games 2009]] [[Category:Games]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Nanako_in_Classic_Japanese_Monster_Castle&amp;diff=127215</id>
		<title>Nanako in Classic Japanese Monster Castle</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Nanako_in_Classic_Japanese_Monster_Castle&amp;diff=127215"/>
				<updated>2026-03-26T14:40:50Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: /* Ports */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A platform and latter game by [[The Mojon Twins]].&lt;br /&gt;
&lt;br /&gt;
== Game plot  ==&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Nanako in Classic Japanese Monster Castle screenshots&amp;quot;&amp;gt;&lt;br /&gt;
Image:monster castle 1.png|&lt;br /&gt;
Image:monster castle 2.png|&lt;br /&gt;
Image:monster castle 3.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Ports ==&lt;br /&gt;
* [[ZX Spectrum]]: 2007&lt;br /&gt;
* [[Commodore 64]]: 2010&lt;br /&gt;
* [[ZX81]]: 2011&lt;br /&gt;
* &amp;lt;s&amp;gt;[[MSX]]: 200x&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
* [[Media:sortem.dsk|sortem.dsk]] (DSK file for emulators)&lt;br /&gt;
* [http://www.cpcwiki.eu/imgs/5/56/Mojon-Twins--Nanako-In-Classic-Japanese-Monster-Castle--CPC--src.rar source code]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[http://www.mojontwins.com/juegos_mojonos/nanako-in-classic-japanese-monster-castle-v2/ Home of Nanako in Classic Japanese Monster Castle] (Spanish)&lt;br /&gt;
&lt;br /&gt;
[[Category:Games 2009]] [[Category:Games]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=ZX81&amp;diff=127214</id>
		<title>ZX81</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=ZX81&amp;diff=127214"/>
				<updated>2026-03-26T14:40:18Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: Redirected page to ZX80/81&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[ZX80/81]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Nanako_in_Classic_Japanese_Monster_Castle&amp;diff=127213</id>
		<title>Nanako in Classic Japanese Monster Castle</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Nanako_in_Classic_Japanese_Monster_Castle&amp;diff=127213"/>
				<updated>2026-03-26T14:38:25Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: Ports&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A platform and latter game by [[The Mojon Twins]].&lt;br /&gt;
&lt;br /&gt;
== Game plot  ==&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Nanako in Classic Japanese Monster Castle screenshots&amp;quot;&amp;gt;&lt;br /&gt;
Image:monster castle 1.png|&lt;br /&gt;
Image:monster castle 2.png|&lt;br /&gt;
Image:monster castle 3.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Ports ==&lt;br /&gt;
* [[ZX Spectrum]]: 2007&lt;br /&gt;
* [[Commodore 64]]: 2010&lt;br /&gt;
* ZX81: 2011&lt;br /&gt;
* &amp;lt;s&amp;gt;[[MSX]]: 200x&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
* [[Media:sortem.dsk|sortem.dsk]] (DSK file for emulators)&lt;br /&gt;
* [http://www.cpcwiki.eu/imgs/5/56/Mojon-Twins--Nanako-In-Classic-Japanese-Monster-Castle--CPC--src.rar source code]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[http://www.mojontwins.com/juegos_mojonos/nanako-in-classic-japanese-monster-castle-v2/ Home of Nanako in Classic Japanese Monster Castle] (Spanish)&lt;br /&gt;
&lt;br /&gt;
[[Category:Games 2009]] [[Category:Games]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=MYM&amp;diff=127212</id>
		<title>MYM</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=MYM&amp;diff=127212"/>
				<updated>2026-03-26T14:08:11Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MYM is a file format for ripped [[PSG]] tunes, created by Marq/Lieves!Tuore &amp;amp; Fit (marq@iki.fi)&lt;br /&gt;
&lt;br /&gt;
== Players ==&lt;br /&gt;
&lt;br /&gt;
2 MYM players exist for the Amstrad CPC: [[Media:Mymcpc.dsk|MYMPlay by Andy Cadley]] and another one by Morpheus.&lt;br /&gt;
&lt;br /&gt;
Both can be downloaded with their sources at http://www.kameli.net/lt/prod.htm&lt;br /&gt;
&lt;br /&gt;
Here you'll find a pile of songs suitable for the MYM player: http://ftp.kameli.net/pub/mym/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File format ==&lt;br /&gt;
&lt;br /&gt;
I have not been able to find a formal specification of this file format.&lt;br /&gt;
&lt;br /&gt;
The best we have is the commented source code of the original converters from YM to MYM files and vice versa.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ym2mym.c ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
    ym2mym.c&lt;br /&gt;
&lt;br /&gt;
    Converts _unpacked_ YM tunes to a format better suitable for&lt;br /&gt;
    MSX1. Supports YM2 and YM3 types well plus YM5 somehow.&lt;br /&gt;
&lt;br /&gt;
    30.1.2000 Marq/Lieves!Tuore &amp;amp; Fit (marq@iki.fi)&lt;br /&gt;
&lt;br /&gt;
    3.2.2000  - Added a rude YM5 loader. Skips most of the header.&lt;br /&gt;
&lt;br /&gt;
    Output format:&lt;br /&gt;
&lt;br /&gt;
    Rows in the tune, 16 bits (lobyte first)&lt;br /&gt;
    For each register, 0 - fragment contains only unchanged data&lt;br /&gt;
                       1 - fragment contains packed data&lt;br /&gt;
&lt;br /&gt;
    In a packed fragment, 0  - register value is the same as before&lt;br /&gt;
                          11 - raw register data follows. Only regbits[i]&lt;br /&gt;
                               bits, not full 8&lt;br /&gt;
                          10 - offset + number of bytes from preceding&lt;br /&gt;
                               data. As many bits as are required to hold&lt;br /&gt;
                               fragment offset &amp;amp; counter data (OFFNUM).&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define REGS 14&lt;br /&gt;
#define FRAG 128    /*  Nuber of rows to compress at a time   */&lt;br /&gt;
#define OFFNUM 14   /*  Bits needed to store off+num of FRAG  */&lt;br /&gt;
&lt;br /&gt;
void writebits(unsigned data,int bits,FILE *f);&lt;br /&gt;
&lt;br /&gt;
int main(int argc,char *argv[])&lt;br /&gt;
{&lt;br /&gt;
    unsigned char   *data[REGS];    /*  The unpacked YM data    */&lt;br /&gt;
    &lt;br /&gt;
    unsigned    current[REGS];&lt;br /&gt;
&lt;br /&gt;
    char    id[5]={0,0,0,0,0},ym_new=0,&lt;br /&gt;
            LeOnArD[8];             /*  Check string    */&lt;br /&gt;
&lt;br /&gt;
    FILE    *f;&lt;br /&gt;
&lt;br /&gt;
    long    n,i,row,change,pack,biggest=0,hits,oldrow,remain,offi,&lt;br /&gt;
            regbits[REGS]={8,4,8,4, 8,4,5,8, 5,5,5,8, 8,8}, /* Bits per PSG reg */&lt;br /&gt;
            /*  AND values to mask out extra bits from register data */&lt;br /&gt;
            regand[REGS]={255,15,255,15, 255,15,31,255, 31,31,31,255, 255,255};&lt;br /&gt;
&lt;br /&gt;
    unsigned long   length,         /*  Song length     */&lt;br /&gt;
                    ldata;          /*  Needed in the loader    */&lt;br /&gt;
&lt;br /&gt;
    if(argc!=3)&lt;br /&gt;
    {&lt;br /&gt;
        printf(&amp;quot;Usage: ym2mym source.ym destination.mym\n&amp;quot;);&lt;br /&gt;
        printf(&amp;quot;Raw YM files only. Uncompress with LHA.\n&amp;quot;);&lt;br /&gt;
        return(EXIT_FAILURE);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if((f=fopen(argv[1],&amp;quot;rb&amp;quot;))==NULL)&lt;br /&gt;
    {&lt;br /&gt;
        printf(&amp;quot;File open error.\n&amp;quot;);&lt;br /&gt;
        return(EXIT_FAILURE);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    fseek(f,0,SEEK_END);&lt;br /&gt;
    length=ftell(f)-4;&lt;br /&gt;
    fseek(f,0,SEEK_SET);&lt;br /&gt;
&lt;br /&gt;
    fread(id,1,4,f);&lt;br /&gt;
    if(strcmp(id,&amp;quot;YM2!&amp;quot;))               /*  YM2 is ok   */&lt;br /&gt;
        if(strcmp(id,&amp;quot;YM3!&amp;quot;))           /*  YM3 is ok   */&lt;br /&gt;
            if(strcmp(id,&amp;quot;YM3b&amp;quot;))       /*  YM3b is ok  */&lt;br /&gt;
            {&lt;br /&gt;
                if(!strcmp(id,&amp;quot;YM5!&amp;quot;))  /*  YM5 is ok but needs a   */&lt;br /&gt;
                    ym_new=1;           /*  different loader        */&lt;br /&gt;
                else&lt;br /&gt;
                {&lt;br /&gt;
                    printf(&amp;quot;Unknown file format.\n&amp;quot;);&lt;br /&gt;
                    exit(EXIT_FAILURE);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                fread(id,1,4,f);    /*  Skip restart for YM3b   */&lt;br /&gt;
                length-=4;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
    if(ym_new)  /*  New YM5 format loader       */&lt;br /&gt;
    {&lt;br /&gt;
        fread(LeOnArD,1,8,f);           /*  Skip checkstring        */&lt;br /&gt;
        for(n=length=0;n&amp;lt;4;n++)         /*  Number of VBL's    */&lt;br /&gt;
        {&lt;br /&gt;
            length&amp;lt;&amp;lt;=8;&lt;br /&gt;
            length+=fgetc(f);&lt;br /&gt;
        }&lt;br /&gt;
        length*=REGS;&lt;br /&gt;
&lt;br /&gt;
        fread(&amp;amp;ldata,1,3,f);            /*  Skip first 3 bytes of info */&lt;br /&gt;
        if(!(fgetc(f)&amp;amp;1))&lt;br /&gt;
        {&lt;br /&gt;
            printf(&amp;quot;Only interleaved data supported.\n&amp;quot;);&lt;br /&gt;
            return(EXIT_FAILURE);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if(fgetc(f) || fgetc(f))        /*  Number of digidrums     */&lt;br /&gt;
        {&lt;br /&gt;
            printf(&amp;quot;Digidrums not supported.\n&amp;quot;);&lt;br /&gt;
            return(EXIT_FAILURE);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        fread(&amp;amp;ldata,1,4,f);            /*  Skip external freq      */&lt;br /&gt;
        fread(&amp;amp;ldata,1,2,f);            /*  Skip VBL freq           */&lt;br /&gt;
        fread(&amp;amp;ldata,1,4,f);            /*  Skip loop position      */&lt;br /&gt;
        fread(&amp;amp;ldata,1,2,f);            /*  Skip additional data    */&lt;br /&gt;
&lt;br /&gt;
        while(fgetc(f))                 /*  Skip song name          */&lt;br /&gt;
            ;&lt;br /&gt;
        while(fgetc(f))                 /*  Skip author name        */&lt;br /&gt;
            ;&lt;br /&gt;
        while(fgetc(f))                 /*  Skip comments           */&lt;br /&gt;
            ;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*  Old YM2/YM3 format loader   */&lt;br /&gt;
    for(n=0;n&amp;lt;REGS;n++)     /*  Allocate memory &amp;amp; read data */&lt;br /&gt;
    {&lt;br /&gt;
        /*  Allocate extra fragment to make packing easier  */&lt;br /&gt;
        if((data[n]=malloc(length/REGS+FRAG))==NULL)&lt;br /&gt;
        {&lt;br /&gt;
            printf(&amp;quot;Out of memory.\n&amp;quot;);&lt;br /&gt;
            return(EXIT_FAILURE);&lt;br /&gt;
        }&lt;br /&gt;
        memset(data[n],0,length/REGS+FRAG);&lt;br /&gt;
        fread(data[n],1,length/REGS,f);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if(ym_new)  /*  Let's mask the extra YM5 data out   */&lt;br /&gt;
    {&lt;br /&gt;
        for(n=0;n&amp;lt;REGS;n++)&lt;br /&gt;
            for(row=0;row&amp;lt;length/REGS;row++)&lt;br /&gt;
                data[n][row]&amp;amp;=regand[n];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    fclose(f);&lt;br /&gt;
&lt;br /&gt;
    if((f=fopen(argv[2],&amp;quot;wb&amp;quot;))==NULL)&lt;br /&gt;
    {&lt;br /&gt;
        printf(&amp;quot;Cannot open destination file.\n&amp;quot;);&lt;br /&gt;
        return(EXIT_FAILURE);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for(n=0;n&amp;lt;REGS;n++)     /*  Set current values to impossible   */&lt;br /&gt;
        current[n]=0xffff;&lt;br /&gt;
&lt;br /&gt;
    fputc(length/REGS&amp;amp;0xff,f);  /*  Write tune length   */&lt;br /&gt;
    fputc(length/REGS&amp;gt;&amp;gt;8,f);&lt;br /&gt;
&lt;br /&gt;
    for(n=0;n&amp;lt;length/REGS;n+=FRAG)  /*  Go through fragments...    */&lt;br /&gt;
    {&lt;br /&gt;
        for(i=0;i&amp;lt;REGS;i++)         /*  ... for each register      */&lt;br /&gt;
        {&lt;br /&gt;
            for(row=change=0;row&amp;lt;FRAG;row++)&lt;br /&gt;
                if(data[i][n+row]!=current[i])&lt;br /&gt;
                    change=1;&lt;br /&gt;
&lt;br /&gt;
            if(!change) /*  No changes in the whole fragment    */&lt;br /&gt;
            {&lt;br /&gt;
                writebits(0,1,f);&lt;br /&gt;
                continue;   /*  Skip the next pass              */&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                writebits(1,1,f);&lt;br /&gt;
&lt;br /&gt;
            for(row=0;row&amp;lt;FRAG;row++)&lt;br /&gt;
            {&lt;br /&gt;
                if(data[i][n+row]!=current[i])&lt;br /&gt;
                {&lt;br /&gt;
                    change=1;&lt;br /&gt;
                    current[i]=data[i][n+row];&lt;br /&gt;
&lt;br /&gt;
                    biggest=0;&lt;br /&gt;
                    if(n)       /*  Skip first fragment */&lt;br /&gt;
                    {&lt;br /&gt;
                        offi=0;&lt;br /&gt;
                        remain=FRAG-row;&lt;br /&gt;
&lt;br /&gt;
                        /* Go through the preceding data and try to find&lt;br /&gt;
                           similar data     */&lt;br /&gt;
                        for(oldrow=0;oldrow&amp;lt;FRAG;oldrow++)&lt;br /&gt;
                        {&lt;br /&gt;
                            hits=0;&lt;br /&gt;
                            for(pack=0;pack&amp;lt;remain;pack++)&lt;br /&gt;
                            {&lt;br /&gt;
                                if(data[i][n+row+pack]==data[i][n-FRAG+row+oldrow+pack]&lt;br /&gt;
                                   &amp;amp;&amp;amp; oldrow+pack&amp;lt;FRAG)&lt;br /&gt;
                                    hits++;&lt;br /&gt;
                                else&lt;br /&gt;
                                    break;&lt;br /&gt;
                            }&lt;br /&gt;
                            if(hits&amp;gt;biggest)    /* Bigger sequence found */&lt;br /&gt;
                            {&lt;br /&gt;
                                biggest=hits;&lt;br /&gt;
                                offi=oldrow;&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                    if(biggest&amp;gt;1)   /* Could we pack data? */&lt;br /&gt;
                    {&lt;br /&gt;
                        row+=biggest-1;&lt;br /&gt;
                        current[i]=data[i][n+row];&lt;br /&gt;
                        writebits(2,2,f);&lt;br /&gt;
                        writebits((offi&amp;lt;&amp;lt;OFFNUM/2)+(biggest-1),OFFNUM,f);&lt;br /&gt;
                    }&lt;br /&gt;
                    else    /*  Nope, write raw bits    */&lt;br /&gt;
                    {&lt;br /&gt;
                        writebits(3,2,f);&lt;br /&gt;
                        writebits(data[i][n+row],regbits[i],f);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                else    /*  Same as former value, write 0   */&lt;br /&gt;
                    writebits(0,1,f);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    writebits(0,0,f);   /* Pad to byte size */&lt;br /&gt;
    fclose(f);&lt;br /&gt;
    return(EXIT_SUCCESS);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*  Writes bits to a file. If bits is 0, pads to byte size. */&lt;br /&gt;
void writebits(unsigned data,int bits,FILE *f)&lt;br /&gt;
{&lt;br /&gt;
    static unsigned char    byte=0;&lt;br /&gt;
&lt;br /&gt;
    static int  off=0;&lt;br /&gt;
&lt;br /&gt;
    int n;&lt;br /&gt;
&lt;br /&gt;
    if(!bits &amp;amp;&amp;amp; off)&lt;br /&gt;
    {&lt;br /&gt;
        off=byte=0;&lt;br /&gt;
        fputc(byte,f);&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* Go through the bits and write a whole byte if needed */&lt;br /&gt;
    for(n=0;n&amp;lt;bits;n++) &lt;br /&gt;
    {&lt;br /&gt;
        if(data&amp;amp;(1&amp;lt;&amp;lt;bits-1-n))&lt;br /&gt;
            byte|=0x80&amp;gt;&amp;gt;off;&lt;br /&gt;
&lt;br /&gt;
        if(++off==8)&lt;br /&gt;
        {&lt;br /&gt;
            fputc(byte,f);&lt;br /&gt;
            off=byte=0;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*  EOS */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mym2ym.c ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
    mym2ym.c&lt;br /&gt;
&lt;br /&gt;
    Converts MYM files back to upacked YM3.&lt;br /&gt;
&lt;br /&gt;
    31.1.2000 Marq/Lieves!Tuore &amp;amp; Fit (marq@iki.fi)&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define REGS 14&lt;br /&gt;
#define FRAG 128    /*  Nuber of rows to compress at a time   */&lt;br /&gt;
#define OFFNUM 14   /*  Bits needed to store off+num of FRAG  */&lt;br /&gt;
&lt;br /&gt;
unsigned readbits(int bits,FILE *f);&lt;br /&gt;
&lt;br /&gt;
int main(int argc,char *argv[])&lt;br /&gt;
{&lt;br /&gt;
    unsigned char   *data[REGS],    /*  The unpacked YM data    */&lt;br /&gt;
                    c;&lt;br /&gt;
&lt;br /&gt;
    unsigned    current[REGS];&lt;br /&gt;
&lt;br /&gt;
    FILE    *f;&lt;br /&gt;
&lt;br /&gt;
    long    n,i,row,index,compoff,compnum,&lt;br /&gt;
            bytes=0,&lt;br /&gt;
            regbits[REGS]={8,4,8,4, 8,4,5,8, 5,5,5,8, 8,8}; /* Bits per PSG reg */&lt;br /&gt;
&lt;br /&gt;
    unsigned long   rows;&lt;br /&gt;
&lt;br /&gt;
    if(argc!=3)&lt;br /&gt;
    {&lt;br /&gt;
        printf(&amp;quot;Usage: mym2ym source.mym destination.ym\n&amp;quot;);&lt;br /&gt;
        printf(&amp;quot;Raw YM files only. Compress with LHA.\n&amp;quot;);&lt;br /&gt;
        return(EXIT_FAILURE);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if((f=fopen(argv[1],&amp;quot;rb&amp;quot;))==NULL)&lt;br /&gt;
    {&lt;br /&gt;
        printf(&amp;quot;File open error.\n&amp;quot;);&lt;br /&gt;
        return(EXIT_FAILURE);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    rows=fgetc(f);    /*  Read the number of rows */&lt;br /&gt;
    rows+=fgetc(f)&amp;lt;&amp;lt;8u;&lt;br /&gt;
&lt;br /&gt;
    for(n=0;n&amp;lt;REGS;n++)     /*  Allocate memory for rows    */&lt;br /&gt;
    {&lt;br /&gt;
        if((data[n]=malloc(rows+FRAG))==NULL)&lt;br /&gt;
        {&lt;br /&gt;
            printf(&amp;quot;Out of memory.\n&amp;quot;);&lt;br /&gt;
            exit(EXIT_FAILURE);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for(n=0;n&amp;lt;rows;n+=FRAG) /*  Go through rows...  */&lt;br /&gt;
    {&lt;br /&gt;
        for(i=0;i&amp;lt;REGS;i++) /*  ... and registers   */&lt;br /&gt;
        {&lt;br /&gt;
            index=0;&lt;br /&gt;
            if(!readbits(1,f))  /*  Totally unchanged fragment */&lt;br /&gt;
            {&lt;br /&gt;
                for(row=0;row&amp;lt;FRAG;row++)&lt;br /&gt;
                    data[i][n+row]=current[i];&lt;br /&gt;
                continue;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            while(index&amp;lt;FRAG)   /*  Packed fragment */&lt;br /&gt;
            {&lt;br /&gt;
                if(!readbits(1,f))  /*  Unchanged register  */&lt;br /&gt;
                {&lt;br /&gt;
                    &lt;br /&gt;
                    data[i][n+index]=current[i];&lt;br /&gt;
                    index++;&lt;br /&gt;
                }&lt;br /&gt;
                else&lt;br /&gt;
                {&lt;br /&gt;
                    if(readbits(1,f))   /*  Raw data    */&lt;br /&gt;
                    {&lt;br /&gt;
                        c=readbits(regbits[i],f);&lt;br /&gt;
                        current[i]=data[i][n+index]=c;&lt;br /&gt;
                        index++;&lt;br /&gt;
                    }&lt;br /&gt;
                    else    /*  Reference to previous data */&lt;br /&gt;
                    {&lt;br /&gt;
                        compoff=readbits(OFFNUM/2,f)+index;&lt;br /&gt;
                        compnum=readbits(OFFNUM/2,f)+1;&lt;br /&gt;
&lt;br /&gt;
                        for(row=0;row&amp;lt;compnum;row++)&lt;br /&gt;
                        {&lt;br /&gt;
                            c=data[i][n-FRAG+compoff+row];&lt;br /&gt;
                            data[i][n+index]=current[i]=c;&lt;br /&gt;
                            index++;&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    fclose(f);&lt;br /&gt;
&lt;br /&gt;
    if((f=fopen(argv[2],&amp;quot;wb&amp;quot;))==NULL)&lt;br /&gt;
    {&lt;br /&gt;
        printf(&amp;quot;Cannot open destination file.\n&amp;quot;);&lt;br /&gt;
        return(EXIT_FAILURE);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*  Write uncompressed data to YM3 format   */&lt;br /&gt;
    fwrite(&amp;quot;YM2!&amp;quot;,1,4,f);&lt;br /&gt;
    for(n=0;n&amp;lt;REGS;n++)&lt;br /&gt;
        fwrite(data[n],1,rows,f);&lt;br /&gt;
    fclose(f);&lt;br /&gt;
&lt;br /&gt;
    return(EXIT_SUCCESS);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*  Reads bits from a while */&lt;br /&gt;
unsigned readbits(int bits,FILE *f)&lt;br /&gt;
{&lt;br /&gt;
    static unsigned char    byte;&lt;br /&gt;
&lt;br /&gt;
    static int  off=7;&lt;br /&gt;
&lt;br /&gt;
    unsigned    n,data=0;&lt;br /&gt;
&lt;br /&gt;
    /* Go through the bits and read a whole byte if needed */&lt;br /&gt;
    for(n=0;n&amp;lt;bits;n++) &lt;br /&gt;
    {&lt;br /&gt;
        data&amp;lt;&amp;lt;=1;&lt;br /&gt;
        if(++off==8)&lt;br /&gt;
        {&lt;br /&gt;
            byte=fgetc(f);&lt;br /&gt;
            off=0;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        if(byte&amp;amp;(0x80&amp;gt;&amp;gt;off))&lt;br /&gt;
            data++;&lt;br /&gt;
    }&lt;br /&gt;
    return(data);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*  EOS */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Music and sound]]&lt;br /&gt;
[[Category:Source code]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=GSED&amp;diff=127211</id>
		<title>GSED</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=GSED&amp;diff=127211"/>
				<updated>2026-03-20T09:06:40Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: /* Screenshots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The GSEd (Grafischer Spielfeld Editor, Graphic Playground/Matrix Editor) is an application for the creation of maps / playgrounds / matrixes for 2D and 3D games. It runs under [[FutureOS|FutureOS]]. It has the following ... &lt;br /&gt;
&lt;br /&gt;
[[Image:GSED_1.jpg|300px|thumb|right|Main Menu]] &lt;br /&gt;
&lt;br /&gt;
= Features =&lt;br /&gt;
&lt;br /&gt;
*Load screens to use them as source for graphic elements (GEs)&lt;br /&gt;
*Cut GEs (graphic elements) out of 17 KB or [[The Advanced OCP Art Studio|OCP]] screens (compressed). One GE has 16 * 16 Pixel (Mode 0) and is the basic element of the matrix of every game&lt;br /&gt;
*Create collections (GE sets) of up to 128 different GEs. One GE set is 16 KB in size and has the file extension .GEs &lt;br /&gt;
*Create maps of up to 8190 GEs per map. One matrix-file / map-file is 16 KB in size and has the extension .Fld &lt;br /&gt;
*Assign field-attributes to positions in the matrix of the map / playground / matrix. That's one of the main issues of GSEd &lt;br /&gt;
&lt;br /&gt;
== Field Attributes ==&lt;br /&gt;
&lt;br /&gt;
*Normal field, character can/can't run over it, different directions (coming/going) are possible.&lt;br /&gt;
*Foreground or background (character can move before or behind)&lt;br /&gt;
*Jump field (brings you to another level or position) &lt;br /&gt;
*Person field (there NPCs can appear) &lt;br /&gt;
*&amp;quot;Things&amp;quot; field (where things can be found) &lt;br /&gt;
*Rotation field (shows different types of animation). This fields are in constant movement, you can select the speed and the number of phases (2-9) of the animation&lt;br /&gt;
&lt;br /&gt;
*Special field (very different features). This kind of fields make a game unique and must be specially adapted&lt;br /&gt;
&lt;br /&gt;
= Projects using GSEd =&lt;br /&gt;
&lt;br /&gt;
*[[Gerelakos|Gerelakos]] &lt;br /&gt;
*[[Return of the Sisters|Return of the Sisters]]&lt;br /&gt;
*39 Seconds&lt;br /&gt;
&lt;br /&gt;
= Screenshots =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:GSED_1.jpg|Main Menu&lt;br /&gt;
Image:GSED_4.jpg|Load Source Gfx&lt;br /&gt;
Image:GSED_2.jpg|Assign Attributes&lt;br /&gt;
Image:GSED_3.jpg|Manage GEs&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Web links =&lt;br /&gt;
Download GSEd at http://www.FutureOS.de (download section)&lt;br /&gt;
&lt;br /&gt;
[[Category:Applications]][[Category:Extended RAM Software]][[Category:FutureOS]][[Category:Graphic]][[Category:RPG]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Schneider_RS232_Interface&amp;diff=127185</id>
		<title>Schneider RS232 Interface</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Schneider_RS232_Interface&amp;diff=127185"/>
				<updated>2026-03-02T14:51:48Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: /* I/O Ports */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[RS232]] Interface for the CPC by [[Schneider]]. Schneider is the German distributor for Amstrad CPC hardware (however, this interface was Schneider's own invention, not an [[Amstrad]] product).&lt;br /&gt;
&lt;br /&gt;
== Clones ==&lt;br /&gt;
&lt;br /&gt;
The original [[Schneider RS232 Interface]] was released around 1985. Two years later, in 1987, a software-compatible clone was released as DIY schematic in a German book ([[Maschinenspracheprogramme und Hardware-Erweiterungen für Schneider CPC's|link]]). Even later, around 1996, a copy of that DIY schematic also circulated in the internet ([[Tim Riemann's RS232 interface|link]]). The DIY port address, timings and handshake signals are exactly the same as in the original Schneider version - except that DCD (Data Carrier Detect) isn't implemented in the DIY version.&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;The Schneider RS232 interface&amp;quot;&amp;gt;&lt;br /&gt;
Image:Schneider rs232.jpg|Interface&lt;br /&gt;
Image:schneider rs232 1.jpg|Description&lt;br /&gt;
Image:Terje Schneider RS232 PCB top.jpg|PCB top&lt;br /&gt;
Image:Terje Schneider RS232 PCB bottom.jpg|PCB bottom&lt;br /&gt;
Image:Schneider RS232 Interface.jpg|Interface&lt;br /&gt;
Image:Schneider-sio-front.jpg|Front Plate&lt;br /&gt;
Image:Schneider-sio-label.jpg|Label&lt;br /&gt;
Image:Schneider-sio-lead.jpg|Expansion Port Cable&lt;br /&gt;
Image:Schneider-sio-psu.jpg|Power Supply&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Schneider RS232 interface 300dpi scans by Robcfg&amp;quot;&amp;gt;&lt;br /&gt;
Image:Schneider_RS232_Unit.jpg|Interface&lt;br /&gt;
Image:Schneider_RS232_Unit_Bottom.jpg|Front Plate&lt;br /&gt;
Image:Schneider_RS232_PCB_Top.jpg|PCB Top&lt;br /&gt;
Image:Schneider_RS232_PCB_Bottom.jpg|PCB Bottom&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I/O Ports ==&lt;br /&gt;
&lt;br /&gt;
Default I/O addresses are F8E0h-F8EFh (though the interface can be jumpered to use different addresses).&lt;br /&gt;
&lt;br /&gt;
 F8E0h - [[Z80-STI]] Indirect Data Register&lt;br /&gt;
 F8E1h - Z80-STI General Purpose I/O Data Register&lt;br /&gt;
 F8E2h - &amp;lt;s&amp;gt;Z80-STI Interrupt Pending Register B&amp;lt;/s&amp;gt;      ;\&lt;br /&gt;
 F8E3h - &amp;lt;s&amp;gt;Z80-STI Interrupt Pending Register A&amp;lt;/s&amp;gt;      ;&lt;br /&gt;
 F8E4h - &amp;lt;s&amp;gt;Z80-STI Interrupt in-Service Register B&amp;lt;/s&amp;gt;   ; not used&lt;br /&gt;
 F8E5h - &amp;lt;s&amp;gt;Z80-STI Interrupt in-Service Register A&amp;lt;/s&amp;gt;   ;&lt;br /&gt;
 F8E6h - &amp;lt;s&amp;gt;Z80-STI Interrupt Mask Register B&amp;lt;/s&amp;gt;         ;&lt;br /&gt;
 F8E7h - &amp;lt;s&amp;gt;Z80-STI Interrupt Mask Register A&amp;lt;/s&amp;gt;         ;/&lt;br /&gt;
 F8E8h - Z80-STI Indirect Index and Interrupt Vector Register&lt;br /&gt;
 F8E9h - &amp;lt;s&amp;gt;Z80-STI Timers A and B Control Register&amp;lt;/s&amp;gt;   ;\&lt;br /&gt;
 F8EAh - &amp;lt;s&amp;gt;Z80-STI Timer B Data Register&amp;lt;/s&amp;gt;             ; not used&lt;br /&gt;
 F8EBh - &amp;lt;s&amp;gt;Z80-STI Timer A Data Register&amp;lt;/s&amp;gt;             ;/&lt;br /&gt;
 F8ECh - Z80-STI USART Control Register&lt;br /&gt;
 F8EDh - Z80-STI Receiver Status Register&lt;br /&gt;
 F8EEh - Z80-STI Transmitter Status Register&lt;br /&gt;
 F8EFh - Z80-STI USART Data Register&lt;br /&gt;
&lt;br /&gt;
Aside from the above 16 directly addressable registers, there are 8 indirectly addressable ones. For details on the direct &amp;amp; indirect registers, see [[Z80-STI]].&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
* Supported by &amp;quot;Starwriter&amp;quot;.&lt;br /&gt;
* BASIC example (for the official version) is found in the Schneider RS232 manual (see below scans)&lt;br /&gt;
* ASM example (for the DIY version) is included with [[Tim Riemann's RS232 interface]]&lt;br /&gt;
&lt;br /&gt;
== Manual (German) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:SchneiderSioManualPage1.jpg|Page 1 (cable / jumpers)&lt;br /&gt;
File:SchneiderSioManualPage2.jpg|Page 2 (schematic)&lt;br /&gt;
File:SchneiderSioManualPage3.jpg|Page 3 (z80-sti registers)&lt;br /&gt;
File:SchneiderSioManualPage4.jpg|Page 4 (blank / footer)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Note ==&lt;br /&gt;
&lt;br /&gt;
The uncommon shape of the housing dates back to a Schneider BTX modul (which was being intended to be plugged into Schneider Television Sets). Apparently Schneider produced too many housings, and re-used them for the RS232 interface. Actually, a RS232 interface is very much the same as a BTX interface (the actual BTX modem must be rented separately from Deutsche Bundespost), so even the PCB may be (almost/exactly?) the same for both devices.&lt;br /&gt;
&lt;br /&gt;
== Reviews ==&lt;br /&gt;
&lt;br /&gt;
A review appeared in German magazine [[CPC Schneider International]] (issue 12-1985, pages [[Media:Schneider International 8512-p038 - Schneider RS232.jpg|38]], [[Media:Schneider International 8512-p039 - Schneider RS232.jpg|39]]).&lt;br /&gt;
&lt;br /&gt;
== Datasheet ==&lt;br /&gt;
&lt;br /&gt;
* A [[Media:Mostek_3801_Data.pdf|&amp;quot;Z80 STI&amp;quot;]] is a 40pin [[Media:Mostek_3801_Data.pdf|MK3801]] chip from Mostek. Details on that chip are from the &amp;quot;MOSTEK 1982/1983 Microelectronic Data Book&amp;quot; (kindly made available by John Robertson).&lt;br /&gt;
&lt;br /&gt;
[[Category:Peripherals]] [[Category:Serial_interfaces]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CPC_parties&amp;diff=127168</id>
		<title>CPC parties</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CPC_parties&amp;diff=127168"/>
				<updated>2026-02-18T13:46:02Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: /* Germany */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of CPC scene parties, which took place or will take place in different countries. &lt;br /&gt;
&lt;br /&gt;
You may also check the categories at bottom of the page for more complete or up to date lists.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Upcoming CPC parties and CPC related events  ==&lt;br /&gt;
&lt;br /&gt;
*[[Mittwintermeeting 13|Mittwintermeeting 13]] - Mar 15. - 27. of 2019 (Kirchen, Germany)&lt;br /&gt;
&lt;br /&gt;
== CPC parties in the past  ==&lt;br /&gt;
&lt;br /&gt;
''Please use the chronological order also inside one year.'' &lt;br /&gt;
&lt;br /&gt;
=== France  ===&lt;br /&gt;
&lt;br /&gt;
*'''1990'''&lt;br /&gt;
**[[Euromeeting 0|Euromeeting 0]] - Stains (93)&lt;br /&gt;
**[[Amstrad Expo 1990|Amstrad Expo 1990]]&lt;br /&gt;
 &lt;br /&gt;
*'''1992'''&lt;br /&gt;
**[[AFC Expo 1|AFC Expo 1]] - Antony (92)&lt;br /&gt;
**[[Euromeeting 2|Euromeeting 2]] - Reims (51)&lt;br /&gt;
**[[Bordelik Meeting I|Bordelik Meeting I]] - Mouazé (35)&lt;br /&gt;
**[[Bordelik Meeting II|Bordelik Meeting II]] - La Ferté Bernard (72)&lt;br /&gt;
 &lt;br /&gt;
*'''1993'''&lt;br /&gt;
**[[Bordelik Meeting III|Bordelik Meeting III]] - Bethune (62)&lt;br /&gt;
 &lt;br /&gt;
*'''1994'''&lt;br /&gt;
**[[Bugs Meeting 2|Bugs Meeting 2]] - Bethoncourt (25)&lt;br /&gt;
&lt;br /&gt;
*'''1995'''&lt;br /&gt;
**[[Freedelire Meeting|Freedelire Meeting]] - Bapaume (62)&lt;br /&gt;
**[[Bugs Party 3|Bugs Party 3]] - Masnière (59)&lt;br /&gt;
**[[Bordelik Meeting IV|Bordelik Meeting IV]] - Monterfil (35)&lt;br /&gt;
**[[Ze Meeting 1995|Ze Meeting 1995]] - Bassoues (32)&lt;br /&gt;
 &lt;br /&gt;
*'''1996'''&lt;br /&gt;
**[[Ovl 96|Ovl 96]] - Savigny-le-Temple (77)&lt;br /&gt;
**[[Byte'96|Byte'96]] - Oye-Plage (62)&lt;br /&gt;
**[[Ze Meeting 1996|Ze Meeting 1996]] - Bassoues (32)&lt;br /&gt;
 &lt;br /&gt;
*'''1997'''&lt;br /&gt;
**[[Ze Meeting 1997|Ze Meeting 1997]] - Castelmaurou (31)&lt;br /&gt;
 &lt;br /&gt;
*'''1998'''&lt;br /&gt;
**[[Byte'98|Byte'98]] - Marck (62)&lt;br /&gt;
**[[Ze Meeting 98|Ze Meeting 98]] - Bassoues (32)&lt;br /&gt;
**[[Camembert Meeting 4|Camembert Meeting 4]] - Drubec (14)&lt;br /&gt;
 &lt;br /&gt;
*'''1999'''&lt;br /&gt;
**[[Byte'99|Byte'99]] - Marck (62)&lt;br /&gt;
**[[Ze Meeting 1999|Ze Meeting 1999]] - Bassoues (32)&lt;br /&gt;
**[[Croco Chanel N°1|Croco Chanel N°1]] - Catenoy (60)&lt;br /&gt;
 &lt;br /&gt;
*'''2000'''&lt;br /&gt;
**[[Amstrad Expo 2000|Amstrad Expo 2000]] - Coutances (50)&lt;br /&gt;
**[[Ze Meeting 2000|Ze Meeting 2000]] - Bassoues (32)&lt;br /&gt;
**[[Croco Chanel N°2|Croco Chanel N°2]] - Catenoy (60)&lt;br /&gt;
 &lt;br /&gt;
*'''2001'''&lt;br /&gt;
**[[Amstrad Expo 2001|Amstrad Expo 2001]] - Coutances (50)&lt;br /&gt;
**[[Ze Meeting 2001|Ze Meeting 2001]] - Bassoues (32)&lt;br /&gt;
**[[Croco Chanel N°3|Croco Chanel N°3]] - Catenoy (60)&lt;br /&gt;
 &lt;br /&gt;
*'''2002'''&lt;br /&gt;
**[[Amstrad Expo 2002|Amstrad Expo 2002]] - Coutances (50)&lt;br /&gt;
**[[Ze Meeting 2002|Ze Meeting 2002]] - Bassoues (32)&lt;br /&gt;
**[[Bordelik Meeting V|Bordelik Meeting V]] - Rennes (35)&lt;br /&gt;
 &lt;br /&gt;
*'''2003'''&lt;br /&gt;
**[[Amstrad Expo 2003|Amstrad Expo 2003]] - Coutances (50)&lt;br /&gt;
**[[Ovl 2003|Ovl 2003]] - Savigny-le-Temple (77)&lt;br /&gt;
**[[Ze Meeting 2003|Ze Meeting 2003]] - Bassoues (32)&lt;br /&gt;
 &lt;br /&gt;
*'''2004'''&lt;br /&gt;
**[[Amstrad Expo 2004|Amstrad Expo 2004]] - Coutances (50)&lt;br /&gt;
**[[Improvized Meeting|Improvized Meeting]] - Coutances (50)&lt;br /&gt;
**[[Ze Meeting 2004|Ze Meeting 2004]] - Bassoues (32)&lt;br /&gt;
 &lt;br /&gt;
*'''2005'''&lt;br /&gt;
**[[Amstrad Expo 2005|Amstrad Expo 2005]] - Coutances (50)&lt;br /&gt;
**[[CPCinoche|CPCinoche]] - Ploërmel (56)&lt;br /&gt;
**[[Ze Meeting 2005|Ze Meeting 2005]] - Bassoues (32)&lt;br /&gt;
**[[CPC at Work|CPC At Work]] - Coutances (50)&lt;br /&gt;
 &lt;br /&gt;
*'''2006'''&lt;br /&gt;
**[[Ze Meeting 2006|Ze Meeting 2006]] - Bassoues (32)&lt;br /&gt;
**[[Castellum Secretum Meeting 1|Castellum Secretum Meeting 1]] - Segré (49)&lt;br /&gt;
 &lt;br /&gt;
*'''2007'''&lt;br /&gt;
**[[Croco Chanel N°4|Croco Chanel N°4]] - Laigneville (60)&lt;br /&gt;
**[[Castellum Secretum Meeting 2|Castellum Secretum Meeting 2]] - Segré (49)&lt;br /&gt;
 &lt;br /&gt;
*'''2008'''&lt;br /&gt;
**[[CPC Meuuuhting|CPC Meuuuhting]] - Coutances (50)&lt;br /&gt;
**[[Castellum Secretum Meeting 3|Castellum Secretum Meeting 3]] - Segré (49)&lt;br /&gt;
&lt;br /&gt;
*'''2009'''&lt;br /&gt;
**AC 2009 (Congis, France)&lt;br /&gt;
&lt;br /&gt;
=== Germany  ===&lt;br /&gt;
&lt;br /&gt;
*'''1989''' &lt;br /&gt;
**[[GOS I|GOS I]] (Bad Hersfeld) &lt;br /&gt;
*'''1990''' &lt;br /&gt;
**[[GOS II|GOS II]] (Bad Hersfeld) &lt;br /&gt;
*'''1991''' &lt;br /&gt;
**[[Cebit '91|Cebit '91]] (Hannover) &lt;br /&gt;
**[[Euromeeting 1|Euromeeting 1]] (Osnabrück) &lt;br /&gt;
**[[GOS III|GOS III]] (Bad Hersfeld) &lt;br /&gt;
*'''1992''' &lt;br /&gt;
**[[Cebit '92|Cebit '92]] (Hannover) &lt;br /&gt;
**[[Castle Party 1|Castle Party 1]] (Castle Sommershausen) &lt;br /&gt;
**[[HJT Mini Meeting 1|HJT Mini Meeting 1]] (Castle Sommershausen) &lt;br /&gt;
**[[Marabu Meeting 1992|Marabu Meeting 1992]] (Ulm) &lt;br /&gt;
**[[GOS IV|GOS IV]] (Bad Hersfeld) &lt;br /&gt;
**[[Xmas 1992 Party|Xmas 1992 Party]] (Obermaubach) &lt;br /&gt;
*'''1993''' &lt;br /&gt;
**[[Cebit '93|Cebit '93]] (Hannover) &lt;br /&gt;
**[[Castle Party 1a|Castle Party 1a]] (Castle Sommershausen) &lt;br /&gt;
**[[Euromeeting 3|Euromeeting 3]] (Wuppertal) &lt;br /&gt;
**[[GOS V|GOS V]] (Bad Hersfeld) &lt;br /&gt;
**[[Dreamer Party|Dreamer Party]] (Münster) &lt;br /&gt;
*'''1994''' &lt;br /&gt;
**[[FutureOS release meeting]] - (Munich)&lt;br /&gt;
**[[Cebit '94|Cebit '94]] (Hannover) &lt;br /&gt;
*'''1995''' &lt;br /&gt;
**[[G.o.St.-SOFT Meeting 1|G.o.St.-SOFT Meeting 1]] (July) (Oldenburg) &lt;br /&gt;
**[[Inicron Party|Inicron Party]] (?) &lt;br /&gt;
**[[Odiesoft Party 1|Odiesoft Party 1]] (Aalen) &lt;br /&gt;
**[[SCUG Meeting|SCUG Meeting]] (Munich) &lt;br /&gt;
**[[G.o.St.-SOFT Meeting 2|G.o.St.-SOFT Meeting 2]] (December) (Oldenburg) &lt;br /&gt;
**[[End Of 1995|End Of 1995]] (Edewecht?) &lt;br /&gt;
*'''1996''' &lt;br /&gt;
**[[Trip 2 Future|Trip 2 Future]] (Winnweiler) &lt;br /&gt;
*'''1997''' &lt;br /&gt;
**[[COM|COM]] (Munich) &lt;br /&gt;
**[[Future Soft Party|Future Soft Party]] (Munich) &lt;br /&gt;
**[[Odiesoft Party 2|Odiesoft Party 2]] (Konstanz) &lt;br /&gt;
**[[Xmas Meeting|Xmas Meeting]] (Erlangen) &lt;br /&gt;
*'''1999''' &lt;br /&gt;
**[[XzentriX Meeting 1999|XzentriX Meeting 1999]] (Seeshaupt) &lt;br /&gt;
*'''2000''' &lt;br /&gt;
**[[XzentriX Meeting 2000|XzentriX Meeting 2000]] (Seeshaupt) &lt;br /&gt;
*'''2001''' &lt;br /&gt;
**[[CPC Reunion 1|CPC Reunion 1]] (aka CPC Klassentreffen 2001) (Erlangen) &lt;br /&gt;
**[[XzentriX Meeting 2001|XzentriX Meeting 2001]] (Seeshaupt) &lt;br /&gt;
*'''2002''' &lt;br /&gt;
**[[CPC Reunion 2|CPC Reunion 2]] (Erlangen) &lt;br /&gt;
**[[XzentriX Meeting 2002|XzentriX Meeting 2002]] (Seeshaupt) &lt;br /&gt;
*'''2003''' &lt;br /&gt;
**[[Bergtreffen 2003|Bergtreffen 2003]] (Erlangen) &lt;br /&gt;
**[[XzentriX Meeting 2003|XzentriX Meeting 2003]] (Seeshaupt) &lt;br /&gt;
*'''2004''' &lt;br /&gt;
**[[COM II|COM II]] (Frankfurt am Main) &lt;br /&gt;
**[[Bergtreffen 2004|Bergtreffen 2004]] (Erlangen) &lt;br /&gt;
**[[XzentriX Meeting 2004|XzentriX Meeting 2004]] (Seeshaupt) &lt;br /&gt;
*'''2005''' &lt;br /&gt;
**[[SymbOS Preview party|SymbOS Preview party]] (Moers) &lt;br /&gt;
**[[COM III|COM III]] (Frankfurt am Main) &lt;br /&gt;
**[[Bergtreffen 2005|Bergtreffen 2005]] (Erlangen) &lt;br /&gt;
**[[Z-Fest 2005|Z-Fest 2005]] (Fuldatal-Knickhagen) &lt;br /&gt;
**[[XzentriX Meeting 2005|XzentriX Meeting 2005]] (Seeshaupt) &lt;br /&gt;
*'''2006''' &lt;br /&gt;
**[[Mittwintermeeting 1|Mittwintermeeting 1]] (Kirchen) &lt;br /&gt;
**[[Castle Party 2006|Castle Party 2006]] (Castle Sommershausen) &lt;br /&gt;
**[[VCFe 7|VCFe 7]] (München) &lt;br /&gt;
**[[Bergtreffen 2006|Bergtreffen 2006]] (Herzogenaurach/Erlangen) &lt;br /&gt;
**[[Z-Fest 2006|Z-Fest 2006]] (Fuldatal-Knickhagen) &lt;br /&gt;
**[[XzentriX Meeting 2006|XzentriX Meeting 2006]] (Seeshaupt) &lt;br /&gt;
**[[Mittwintermeeting 2|Mittwintermeeting 2]] (Kirchen) &lt;br /&gt;
*'''2007''' &lt;br /&gt;
**[[Bergtreffen 2007|Bergtreffen_2007]] (Herzogenaurach/Erlangen) &lt;br /&gt;
**[[XzentriX Meeting 2007|XzentriX Meeting 2007]] (Seeshaupt) &lt;br /&gt;
*'''2008''' &lt;br /&gt;
**[[Mittwintermeeting 3|Mittwintermeeting 3]] (Kirchen) &lt;br /&gt;
**[[Bergtreffen 2008|Bergtreffen 2008]] (Erlangen) &lt;br /&gt;
**[[XzentriX Meeting 2008|XzentriX Meeting 2008]] (Seeshaupt) &lt;br /&gt;
*'''2009''' &lt;br /&gt;
**[[Mittwintermeeting 4|Mittwintermeeting 4]] (Kirchen) &lt;br /&gt;
**[[CPC Reunion 2009|CPC Reunion 2009]] (Erlangen)&lt;br /&gt;
**[[XzentriX Meeting 2009|XzentriX Meeting 2009]] (Seeshaupt)&lt;br /&gt;
*'''2010'''&lt;br /&gt;
**[[Mittwintermeeting 5|Mittwintermeeting 5]] (Kirchen)&lt;br /&gt;
**[[Castle Party 2010]] (Castle Sommershausen)&lt;br /&gt;
**[[XzentriX Meeting 2010]] (Seeshaupt)&lt;br /&gt;
*'''2011'''&lt;br /&gt;
**[[Mittwintermeeting 6|Mittwintermeeting 6]] (Kirchen)&lt;br /&gt;
**[[Bergtreffen 2011]] (Erlangen)&lt;br /&gt;
**[[XzentriX Meeting 2011]] (Seeshaupt)&lt;br /&gt;
*'''2012'''&lt;br /&gt;
**[[Mittwintermeeting 7]] (Kirchen)&lt;br /&gt;
**[[XzentriX Meeting 2012]] (Seeshaupt)&lt;br /&gt;
&lt;br /&gt;
=== Spain  ===&lt;br /&gt;
&lt;br /&gt;
*'''2004''' &lt;br /&gt;
**[[BCNParty 100|BCNParty 100]] (Barcelona) &lt;br /&gt;
*'''2005''' &lt;br /&gt;
**[[BCNParty 101|BCNParty 101]] (Barcelona) &lt;br /&gt;
**[[RetroEuskal 2005|RetroEuskal 2005]] (Bilbao) &lt;br /&gt;
*'''2006''' &lt;br /&gt;
**[[BCNParty 110|BCNParty 110]] [http://www.bcnparty.org] (Barcelona) &lt;br /&gt;
**[[RetroEuskal 2006|RetroEuskal 2006]] (Bilbao) &lt;br /&gt;
*'''2007''' &lt;br /&gt;
**[[MadriSX 2007|MadriSX 2007]] (Madrid)&lt;br /&gt;
**[[RetroEuskal 2007|RetroEuskal 2007]] - July 20. - 23. of 2007 (Bilbao, Spain)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* '''Memory Full''' website covers many of those parties : http://memoryfull.net/events.php&lt;br /&gt;
&lt;br /&gt;
[[Category:CPC_events|*]][[Category:Demo Parties|*]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CPC_parties&amp;diff=127167</id>
		<title>CPC parties</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CPC_parties&amp;diff=127167"/>
				<updated>2026-02-18T13:42:01Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: /* France */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of CPC scene parties, which took place or will take place in different countries. &lt;br /&gt;
&lt;br /&gt;
You may also check the categories at bottom of the page for more complete or up to date lists.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Upcoming CPC parties and CPC related events  ==&lt;br /&gt;
&lt;br /&gt;
*[[Mittwintermeeting 13|Mittwintermeeting 13]] - Mar 15. - 27. of 2019 (Kirchen, Germany)&lt;br /&gt;
&lt;br /&gt;
== CPC parties in the past  ==&lt;br /&gt;
&lt;br /&gt;
''Please use the chronological order also inside one year.'' &lt;br /&gt;
&lt;br /&gt;
=== France  ===&lt;br /&gt;
&lt;br /&gt;
*'''1990'''&lt;br /&gt;
**[[Euromeeting 0|Euromeeting 0]] - Stains (93)&lt;br /&gt;
**[[Amstrad Expo 1990|Amstrad Expo 1990]]&lt;br /&gt;
 &lt;br /&gt;
*'''1992'''&lt;br /&gt;
**[[AFC Expo 1|AFC Expo 1]] - Antony (92)&lt;br /&gt;
**[[Euromeeting 2|Euromeeting 2]] - Reims (51)&lt;br /&gt;
**[[Bordelik Meeting I|Bordelik Meeting I]] - Mouazé (35)&lt;br /&gt;
**[[Bordelik Meeting II|Bordelik Meeting II]] - La Ferté Bernard (72)&lt;br /&gt;
 &lt;br /&gt;
*'''1993'''&lt;br /&gt;
**[[Bordelik Meeting III|Bordelik Meeting III]] - Bethune (62)&lt;br /&gt;
 &lt;br /&gt;
*'''1994'''&lt;br /&gt;
**[[Bugs Meeting 2|Bugs Meeting 2]] - Bethoncourt (25)&lt;br /&gt;
&lt;br /&gt;
*'''1995'''&lt;br /&gt;
**[[Freedelire Meeting|Freedelire Meeting]] - Bapaume (62)&lt;br /&gt;
**[[Bugs Party 3|Bugs Party 3]] - Masnière (59)&lt;br /&gt;
**[[Bordelik Meeting IV|Bordelik Meeting IV]] - Monterfil (35)&lt;br /&gt;
**[[Ze Meeting 1995|Ze Meeting 1995]] - Bassoues (32)&lt;br /&gt;
 &lt;br /&gt;
*'''1996'''&lt;br /&gt;
**[[Ovl 96|Ovl 96]] - Savigny-le-Temple (77)&lt;br /&gt;
**[[Byte'96|Byte'96]] - Oye-Plage (62)&lt;br /&gt;
**[[Ze Meeting 1996|Ze Meeting 1996]] - Bassoues (32)&lt;br /&gt;
 &lt;br /&gt;
*'''1997'''&lt;br /&gt;
**[[Ze Meeting 1997|Ze Meeting 1997]] - Castelmaurou (31)&lt;br /&gt;
 &lt;br /&gt;
*'''1998'''&lt;br /&gt;
**[[Byte'98|Byte'98]] - Marck (62)&lt;br /&gt;
**[[Ze Meeting 98|Ze Meeting 98]] - Bassoues (32)&lt;br /&gt;
**[[Camembert Meeting 4|Camembert Meeting 4]] - Drubec (14)&lt;br /&gt;
 &lt;br /&gt;
*'''1999'''&lt;br /&gt;
**[[Byte'99|Byte'99]] - Marck (62)&lt;br /&gt;
**[[Ze Meeting 1999|Ze Meeting 1999]] - Bassoues (32)&lt;br /&gt;
**[[Croco Chanel N°1|Croco Chanel N°1]] - Catenoy (60)&lt;br /&gt;
 &lt;br /&gt;
*'''2000'''&lt;br /&gt;
**[[Amstrad Expo 2000|Amstrad Expo 2000]] - Coutances (50)&lt;br /&gt;
**[[Ze Meeting 2000|Ze Meeting 2000]] - Bassoues (32)&lt;br /&gt;
**[[Croco Chanel N°2|Croco Chanel N°2]] - Catenoy (60)&lt;br /&gt;
 &lt;br /&gt;
*'''2001'''&lt;br /&gt;
**[[Amstrad Expo 2001|Amstrad Expo 2001]] - Coutances (50)&lt;br /&gt;
**[[Ze Meeting 2001|Ze Meeting 2001]] - Bassoues (32)&lt;br /&gt;
**[[Croco Chanel N°3|Croco Chanel N°3]] - Catenoy (60)&lt;br /&gt;
 &lt;br /&gt;
*'''2002'''&lt;br /&gt;
**[[Amstrad Expo 2002|Amstrad Expo 2002]] - Coutances (50)&lt;br /&gt;
**[[Ze Meeting 2002|Ze Meeting 2002]] - Bassoues (32)&lt;br /&gt;
**[[Bordelik Meeting V|Bordelik Meeting V]] - Rennes (35)&lt;br /&gt;
 &lt;br /&gt;
*'''2003'''&lt;br /&gt;
**[[Amstrad Expo 2003|Amstrad Expo 2003]] - Coutances (50)&lt;br /&gt;
**[[Ovl 2003|Ovl 2003]] - Savigny-le-Temple (77)&lt;br /&gt;
**[[Ze Meeting 2003|Ze Meeting 2003]] - Bassoues (32)&lt;br /&gt;
 &lt;br /&gt;
*'''2004'''&lt;br /&gt;
**[[Amstrad Expo 2004|Amstrad Expo 2004]] - Coutances (50)&lt;br /&gt;
**[[Improvized Meeting|Improvized Meeting]] - Coutances (50)&lt;br /&gt;
**[[Ze Meeting 2004|Ze Meeting 2004]] - Bassoues (32)&lt;br /&gt;
 &lt;br /&gt;
*'''2005'''&lt;br /&gt;
**[[Amstrad Expo 2005|Amstrad Expo 2005]] - Coutances (50)&lt;br /&gt;
**[[CPCinoche|CPCinoche]] - Ploërmel (56)&lt;br /&gt;
**[[Ze Meeting 2005|Ze Meeting 2005]] - Bassoues (32)&lt;br /&gt;
**[[CPC at Work|CPC At Work]] - Coutances (50)&lt;br /&gt;
 &lt;br /&gt;
*'''2006'''&lt;br /&gt;
**[[Ze Meeting 2006|Ze Meeting 2006]] - Bassoues (32)&lt;br /&gt;
**[[Castellum Secretum Meeting 1|Castellum Secretum Meeting 1]] - Segré (49)&lt;br /&gt;
 &lt;br /&gt;
*'''2007'''&lt;br /&gt;
**[[Croco Chanel N°4|Croco Chanel N°4]] - Laigneville (60)&lt;br /&gt;
**[[Castellum Secretum Meeting 2|Castellum Secretum Meeting 2]] - Segré (49)&lt;br /&gt;
 &lt;br /&gt;
*'''2008'''&lt;br /&gt;
**[[CPC Meuuuhting|CPC Meuuuhting]] - Coutances (50)&lt;br /&gt;
**[[Castellum Secretum Meeting 3|Castellum Secretum Meeting 3]] - Segré (49)&lt;br /&gt;
&lt;br /&gt;
*'''2009'''&lt;br /&gt;
**AC 2009 (Congis, France)&lt;br /&gt;
&lt;br /&gt;
=== Germany  ===&lt;br /&gt;
&lt;br /&gt;
*'''1989''' &lt;br /&gt;
**[[GOS I|GOS I]] (Bad Hersfeld) &lt;br /&gt;
*'''1990''' &lt;br /&gt;
**[[GOS II|GOS II]] (Bad Hersfeld) &lt;br /&gt;
*'''1991''' &lt;br /&gt;
**[[Cebit '91|Cebit '91]] (Hannover) &lt;br /&gt;
**[[Euromeeting 1|Euromeeting 1]] (Osnabrück) &lt;br /&gt;
**[[GOS III|GOS III]] (Bad Hersfeld) &lt;br /&gt;
*'''1992''' &lt;br /&gt;
**[[Cebit '92|Cebit '92]] (Hannover) &lt;br /&gt;
**[[Castle Party 1|Castle Party 1]] (Castle Sommershausen) &lt;br /&gt;
**[[HJT Mini Meeting 1|HJT Mini Meeting 1]] (Castle Sommershausen) &lt;br /&gt;
**[[Marabu Meeting 1992|Marabu Meeting 1992]] (Ulm) &lt;br /&gt;
**[[GOS IV|GOS IV]] (Bad Hersfeld) &lt;br /&gt;
**[[Xmas 1992 Party|Xmas 1992 Party]] (Obermaubach) &lt;br /&gt;
*'''1993''' &lt;br /&gt;
**[[Cebit '93|Cebit '93]] (Hannover) &lt;br /&gt;
**[[Castle Party 1a|Castle Party 1a]] (Castle Sommershausen) &lt;br /&gt;
**[[Euromeeting 3|Euromeeting 3]] (Wuppertal) &lt;br /&gt;
**[[GOS V|GOS V]] (Bad Hersfeld) &lt;br /&gt;
**[[Dreamer Party|Dreamer Party]] (Münster) &lt;br /&gt;
*'''1994''' &lt;br /&gt;
**[[FutureOS release meeting]] - (Munich)&lt;br /&gt;
**[[Cebit '94|Cebit '94]] (Hannover) &lt;br /&gt;
*'''1995''' &lt;br /&gt;
**[[G.o.St.-SOFT Meeting 1|G.o.St.-SOFT Meeting 1]] (July) (Oldenburg) &lt;br /&gt;
**[[Inicron Party|Inicron Party]] (?) &lt;br /&gt;
**[[Odiesoft Party 1|Odiesoft Party 1]] (Aalen) &lt;br /&gt;
**[[SCUG Meeting|SCUG Meeting]] (Munich) &lt;br /&gt;
**[[G.o.St.-SOFT Meeting 2|G.o.St.-SOFT Meeting 2]] (December) (Oldenburg) &lt;br /&gt;
**[[End Of 1995|End Of 1995]] (Edewecht?) &lt;br /&gt;
*'''1996''' &lt;br /&gt;
**[[Trip 2 Future|Trip 2 Future]] (Winnweiler) &lt;br /&gt;
*'''1997''' &lt;br /&gt;
**[[COM|COM]] (Munich) &lt;br /&gt;
**[[Future Soft Party|Future Soft Party]] (Munich) &lt;br /&gt;
**[[Odiesoft Party 2|Odiesoft Party 2]] (Konstanz) &lt;br /&gt;
**[[Xmas Meeting|Xmas Meeting]] (Erlangen) &lt;br /&gt;
*'''1999''' &lt;br /&gt;
**[[XzentriX Meeting 1999|XzentriX Meeting 1999]] (Seeshaupt) &lt;br /&gt;
*'''2000''' &lt;br /&gt;
**[[XzentriX Meeting 2000|XzentriX Meeting 2000]] (Seeshaupt) &lt;br /&gt;
*'''2001''' &lt;br /&gt;
**[[CPC Reunion 1|CPC Reunion 1]] (aka CPC Klassentreffen 2001) (Erlangen) &lt;br /&gt;
**[[XzentriX Meeting 2001|XzentriX Meeting 2001]] (Seeshaupt) &lt;br /&gt;
*'''2002''' &lt;br /&gt;
**[[CPC Reunion 2|CPC Reunion 2]] (Erlangen) &lt;br /&gt;
**[[XzentriX Meeting 2002|XzentriX Meeting 2002]] (Seeshaupt) &lt;br /&gt;
*'''2003''' &lt;br /&gt;
**[[Bergtreffen 2003|Bergtreffen 2003]] (Erlangen) &lt;br /&gt;
**[[XzentriX Meeting 2003|XzentriX Meeting 2003]] (Seeshaupt) &lt;br /&gt;
*'''2004''' &lt;br /&gt;
**[[COM II|COM II]] (Frankfurt am Main) &lt;br /&gt;
**[[Bergtreffen 2004|Bergtreffen 2004]] (Erlangen) &lt;br /&gt;
**[[XzentriX Meeting 2004|XzentriX Meeting 2004]] (Seeshaupt) &lt;br /&gt;
*'''2005''' &lt;br /&gt;
**[[SymbOS Preview party|SymbOS Preview party]] (Moers) &lt;br /&gt;
**[[COM III|COM III]] (Frankfurt am Main) &lt;br /&gt;
**[[Bergtreffen 2005|Bergtreffen 2005]] (Erlangen) &lt;br /&gt;
**[[Z-Fest 2005|Z-Fest 2005]] (Fuldatal-Knickhagen) &lt;br /&gt;
**[[XzentriX Meeting 2005|XzentriX Meeting 2005]] (Seeshaupt) &lt;br /&gt;
*'''2006''' &lt;br /&gt;
**[[Mittwintermeeting 1|Mittwintermeeting 1]] (Kirchen) &lt;br /&gt;
**[[Castle Party 2006|Castle Party 2006]] (Castle Sommershausen) &lt;br /&gt;
**[[VCFe 7|VCFe 7]] (München) &lt;br /&gt;
**[[Bergtreffen 2006|Bergtreffen 2006]] (Herzogenaurach/Erlangen) &lt;br /&gt;
**[[Z-Fest 2006|Z-Fest 2006]] (Fuldatal-Knickhagen) &lt;br /&gt;
**[[XzentriX Meeting 2006|XzentriX Meeting 2006]] (Seeshaupt) &lt;br /&gt;
**[[Mittwintermeeting 2|Mittwintermeeting 2]] (Kirchen) &lt;br /&gt;
*'''2007''' &lt;br /&gt;
**[[Bergtreffen 2007|Bergtreffen_2007]] (Herzogenaurach/Erlangen) &lt;br /&gt;
**[[XzentriX Meeting 2007|XzentriX Meeting 2007]] (Seeshaupt) &lt;br /&gt;
*'''2008''' &lt;br /&gt;
**[[Mittwintermeeting 3|Mittwintermeeting 3]] (Kirchen) &lt;br /&gt;
**[[Bergtreffen 2008|Bergtreffen 2008]] (Erlangen) &lt;br /&gt;
**[[XzentriX Meeting 2008|XzentriX Meeting 2008]] (Seeshaupt) &lt;br /&gt;
*'''2009''' &lt;br /&gt;
**[[Mittwintermeeting 4|Mittwintermeeting 4]] (Kirchen) &lt;br /&gt;
**[[CPC Reunion 2009|CPC Reunion 2009]] (Erlangen)&lt;br /&gt;
**[[XzentriX Meeting 2009|XzentriX Meeting 2009]] (Seeshaupt)&lt;br /&gt;
*'''2010'''&lt;br /&gt;
**[[Mittwintermeeting 5|Mittwintermeeting 5]] (Kirchen)&lt;br /&gt;
**[[Castle Party 2010]] (Castle Sommershausen)&lt;br /&gt;
**[[XzentriX Meeting 2010]] (Seeshaupt)&lt;br /&gt;
*'''2011'''&lt;br /&gt;
**[[Mittwintermeeting 6|Mittwintermeeting 6]] (Kirchen)&lt;br /&gt;
**[[Bergtreffen 2011]] (Erlangen)&lt;br /&gt;
**[[XzentriX Meeting 2011]] (Seeshaupt)&lt;br /&gt;
*'''2012'''&lt;br /&gt;
**[[Mittwintermeeting 7]] (Kirchen)&lt;br /&gt;
**[[XzentriX Meeting 2012]] (Seeshaupt]&lt;br /&gt;
&lt;br /&gt;
=== Spain  ===&lt;br /&gt;
&lt;br /&gt;
*'''2004''' &lt;br /&gt;
**[[BCNParty 100|BCNParty 100]] (Barcelona) &lt;br /&gt;
*'''2005''' &lt;br /&gt;
**[[BCNParty 101|BCNParty 101]] (Barcelona) &lt;br /&gt;
**[[RetroEuskal 2005|RetroEuskal 2005]] (Bilbao) &lt;br /&gt;
*'''2006''' &lt;br /&gt;
**[[BCNParty 110|BCNParty 110]] [http://www.bcnparty.org] (Barcelona) &lt;br /&gt;
**[[RetroEuskal 2006|RetroEuskal 2006]] (Bilbao) &lt;br /&gt;
*'''2007''' &lt;br /&gt;
**[[MadriSX 2007|MadriSX 2007]] (Madrid)&lt;br /&gt;
**[[RetroEuskal 2007|RetroEuskal 2007]] - July 20. - 23. of 2007 (Bilbao, Spain)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* '''Memory Full''' website covers many of those parties : http://memoryfull.net/events.php&lt;br /&gt;
&lt;br /&gt;
[[Category:CPC_events|*]][[Category:Demo Parties|*]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CPSoft&amp;diff=127159</id>
		<title>CPSoft</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CPSoft&amp;diff=127159"/>
				<updated>2026-02-14T22:03:50Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: /* Programming environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;My name Chris Perver and I am from Northern Ireland. My first Amstrad was a CPC 464, a Christmas present from my parents around the year 1987. I really enjoyed playing the [[Amsoft]] games the machine was bundled with, as well as typing in the many example programs contained in the manual. I bought a 464+ in the nineties, unfortunately after the machine had already flopped. I always had a great interest in programming, and reminiscing about my childhood days, decided to teach myself Z80 assembly. Using WinAPE's built-in assembler, and following examples from [https://www.chibiakumas.com/z80/AmstradCPC.php ChibiAkumas] and other websites, I gradually learned how to code in assembly. I had a desire to create an open world game, using procedural generation, and so began programming my first assembly game [[Mimo's Quest]]. Although development on this has paused. I have also upgraded some of my favourite childhood games by disassembling them and redeveloping them for the Plus. Hence the name 'CPSoft', as this was the shortest name that could fit into the Harrier Attack scoreboard! I am currently working on an 'arcade perfect' conversion of [[Qbert|Q*bert]] and hope to develop other games when this project is completed. I would heartily recommend anyone learning Z80 assembly!&lt;br /&gt;
&lt;br /&gt;
== Programming environment ==&lt;br /&gt;
&lt;br /&gt;
[[File:Environment.png|thumbnail|Programming environment]]&lt;br /&gt;
&lt;br /&gt;
The programming environment I use is Xubuntu Linux, with Notepad++ running through Wine emulation. I find Notepad++ very handy for categorizing project files. Its Z80 assembly syntax highlighter makes the code very readable, and its label name completion function saves a lot of time.&lt;br /&gt;
&lt;br /&gt;
I use [[RASM]] to compile my source code, along with RomInject and BuildCPR to create the Amstrad Plus cartridge files, and 2CDT to create the emulated tape files. This enables me to make modifications to my code and see the results within a few seconds.&lt;br /&gt;
&lt;br /&gt;
I use WinAPE as my Amstrad emulator. Its debugger is very useful for inspecting memory addresses.&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
[[Mimo's Quest]] - Development paused&amp;lt;br&amp;gt;&lt;br /&gt;
[[Harrier Attack Reloaded]] - An adaption of [[Harrier Attack]] for the Plus range&amp;lt;br&amp;gt;&lt;br /&gt;
[[Oh Mummy Resurrected]] - An adaption of [[Oh Mummy]] for the Plus range&amp;lt;br&amp;gt;&lt;br /&gt;
[[Qbert|Q*bert]] - Currently in development&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Source code for some of my games is available on [https://github.com/chrisperver GitHub].&lt;br /&gt;
You can also visit my own website [https://www.mimosquest.com Mimo's Quest].&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=AGD&amp;diff=127138</id>
		<title>AGD</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=AGD&amp;diff=127138"/>
				<updated>2026-02-08T22:44:28Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: /* WinAGD IDE */ VZ200&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Arcade Game Designer''' by Jonathan Cauldwell written in 2008.&lt;br /&gt;
&lt;br /&gt;
(16×16 sprites)&lt;br /&gt;
* [[Prospector]], 2024&lt;br /&gt;
* [[Kyd Cadet]], 2020, 2014&lt;br /&gt;
* [[Aeon Part 1]], 2019&lt;br /&gt;
* [[Apulija 13]], 2019&lt;br /&gt;
* [[Foggy's Quest]], 2019&lt;br /&gt;
* [[Lab Escape]], 2013&lt;br /&gt;
&lt;br /&gt;
* [https://arcadegamedesigner.proboards.com Forum]&lt;br /&gt;
* [https://github.com/tonyt73/AGD-Studio AGD-Studio] (Windows)&lt;br /&gt;
* [https://github.com/tonyt73/AGD-Viewer AGD-Viewer] (Windows)&lt;br /&gt;
&lt;br /&gt;
== AGDx ==&lt;br /&gt;
&lt;br /&gt;
=== AGDx mini ===&lt;br /&gt;
(8×8 sprites)&lt;br /&gt;
* Little Fish Big Tale, 2019&lt;br /&gt;
* Mage Rage, 2019&lt;br /&gt;
* Moon Ranger, 2020&lt;br /&gt;
* Paintball 2048, 2019&lt;br /&gt;
* Rat-A-Tat, 2020&lt;br /&gt;
* Road Trippin', 2020&lt;br /&gt;
* The Legend of the Frog Prince, 2019&lt;br /&gt;
&lt;br /&gt;
== MPAGD ==&lt;br /&gt;
[https://jonathan-cauldwell.itch.io/multi-platform-arcade-game-designer Multi-Platform Arcade Game Designer]&lt;br /&gt;
(16×16 sprites)&lt;br /&gt;
;Requirements&lt;br /&gt;
* Z80/6502/6809 CPU&lt;br /&gt;
* 256×192 pixels&lt;br /&gt;
&lt;br /&gt;
=== WinAGD IDE ===&lt;br /&gt;
Platforms&lt;br /&gt;
* Sinclair&lt;br /&gt;
** [[ZX Spectrum]] (8×8 attribute) https://github.com/kieranhj/Atomic-AGD-Suite/tree/master/ZX%20Suite&lt;br /&gt;
** Spectrum Timex (8×1 attribute)&lt;br /&gt;
** Spectrum Next (8×1 attribute)&lt;br /&gt;
* [[MSX]] https://github.com/jltursan/AGD-MSX-Suite&lt;br /&gt;
* CPC (mode 0) https://github.com/kieranhj/Atomic-AGD-Suite/tree/master/CPC%20Suite&lt;br /&gt;
* Acorn https://github.com/kieranhj/Atomic-AGD-Script-Compiler&lt;br /&gt;
** Atom (by Kees van Oss) https://github.com/kieranhj/Atomic-AGD-Suite/tree/master/Atom%20Suite&lt;br /&gt;
** BBC B (by Kieran Connell) https://github.com/kieranhj/Atomic-AGD-Suite/tree/master/BBC%20Suite&lt;br /&gt;
** BBC B +16 kB Sideway RAM&lt;br /&gt;
* Dragon/Coco (by Kees van Oss) https://github.com/oss003/Dragon-AGD-Suite&lt;br /&gt;
* [[Enterprise]]&lt;br /&gt;
* VZ200 compatibles&lt;br /&gt;
** VZ200/VZ300&lt;br /&gt;
** Laser 200/310&lt;br /&gt;
** Seltron 200&lt;br /&gt;
** Salora Fellow&lt;br /&gt;
** Texet TX8000&lt;br /&gt;
** Dynasty Smart-Alec Jr&lt;br /&gt;
&lt;br /&gt;
=== AGD Musicizer ===&lt;br /&gt;
Lets you add [[AY]] music.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://arcadegamedesigner.proboards.com Official Wiki]&lt;br /&gt;
&lt;br /&gt;
[[Category:Games Programming]] [[Category:CrossDev]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=AGD&amp;diff=127137</id>
		<title>AGD</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=AGD&amp;diff=127137"/>
				<updated>2026-02-08T22:30:33Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: Links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Arcade Game Designer''' by Jonathan Cauldwell written in 2008.&lt;br /&gt;
&lt;br /&gt;
(16×16 sprites)&lt;br /&gt;
* [[Prospector]], 2024&lt;br /&gt;
* [[Kyd Cadet]], 2020, 2014&lt;br /&gt;
* [[Aeon Part 1]], 2019&lt;br /&gt;
* [[Apulija 13]], 2019&lt;br /&gt;
* [[Foggy's Quest]], 2019&lt;br /&gt;
* [[Lab Escape]], 2013&lt;br /&gt;
&lt;br /&gt;
* [https://arcadegamedesigner.proboards.com Forum]&lt;br /&gt;
* [https://github.com/tonyt73/AGD-Studio AGD-Studio] (Windows)&lt;br /&gt;
* [https://github.com/tonyt73/AGD-Viewer AGD-Viewer] (Windows)&lt;br /&gt;
&lt;br /&gt;
== AGDx ==&lt;br /&gt;
&lt;br /&gt;
=== AGDx mini ===&lt;br /&gt;
(8×8 sprites)&lt;br /&gt;
* Little Fish Big Tale, 2019&lt;br /&gt;
* Mage Rage, 2019&lt;br /&gt;
* Moon Ranger, 2020&lt;br /&gt;
* Paintball 2048, 2019&lt;br /&gt;
* Rat-A-Tat, 2020&lt;br /&gt;
* Road Trippin', 2020&lt;br /&gt;
* The Legend of the Frog Prince, 2019&lt;br /&gt;
&lt;br /&gt;
== MPAGD ==&lt;br /&gt;
[https://jonathan-cauldwell.itch.io/multi-platform-arcade-game-designer Multi-Platform Arcade Game Designer]&lt;br /&gt;
(16×16 sprites)&lt;br /&gt;
;Requirements&lt;br /&gt;
* Z80/6502/6809 CPU&lt;br /&gt;
* 256×192 pixels&lt;br /&gt;
&lt;br /&gt;
=== WinAGD IDE ===&lt;br /&gt;
Platforms&lt;br /&gt;
* Sinclair&lt;br /&gt;
** [[ZX Spectrum]] (8×8 attribute) https://github.com/kieranhj/Atomic-AGD-Suite/tree/master/ZX%20Suite&lt;br /&gt;
** Spectrum Timex (8×1 attribute)&lt;br /&gt;
** Spectrum Next (8×1 attribute)&lt;br /&gt;
* [[MSX]] https://github.com/jltursan/AGD-MSX-Suite&lt;br /&gt;
* CPC (mode 0) https://github.com/kieranhj/Atomic-AGD-Suite/tree/master/CPC%20Suite&lt;br /&gt;
* Acorn https://github.com/kieranhj/Atomic-AGD-Script-Compiler&lt;br /&gt;
** Atom (by Kees van Oss) https://github.com/kieranhj/Atomic-AGD-Suite/tree/master/Atom%20Suite&lt;br /&gt;
** BBC B (by Kieran Connell) https://github.com/kieranhj/Atomic-AGD-Suite/tree/master/BBC%20Suite&lt;br /&gt;
** BBC B +16 kB Sideway RAM&lt;br /&gt;
* Dragon/Coco (by Kees van Oss) https://github.com/oss003/Dragon-AGD-Suite&lt;br /&gt;
* [[Enterprise]]&lt;br /&gt;
* VZ200&lt;br /&gt;
&lt;br /&gt;
=== AGD Musicizer ===&lt;br /&gt;
Lets you add [[AY]] music.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://arcadegamedesigner.proboards.com Official Wiki]&lt;br /&gt;
&lt;br /&gt;
[[Category:Games Programming]] [[Category:CrossDev]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Main_Page&amp;diff=127127</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Main_Page&amp;diff=127127"/>
				<updated>2026-02-01T20:22:07Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: Pitfall II&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&amp;lt;center&amp;gt;This site is an encyclopaedia on all things [[Amstrad|Amstrad]] [[CPC|CPC]] related. There are now '''[[Special:Allpages|{{NUMBEROFARTICLES}} articles]]''' about the CPC available.&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:forum.png|300px|link=http://www.cpcwiki.eu/forum]]      [[Image:Vs.png|300px|link=http://www.cpcwiki.eu/index.php/Speccy_Port]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid rgb(255, 201, 201); margin: 0px 0px 5px; padding: 0.5em 1em; background-color: rgb(255, 243, 243);&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Amstrad Addict Magazine ad.jpg|190px|thumb|left]]&lt;br /&gt;
'''AMSTRAD ADDICT MAGAZINE ANNOUNCED&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A new 60-page Amstrad magazine - '''Amstrad Addict''' - edited by '''David Crookes''' (Retro Gamer, PC Pro, GamesTM, Wireframe, Amstrad Action, WACCI) is in stock!&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; It includes an interview with '''Lord Sugar''' and in-depth articles by Roland Perry, Auntie John, Adam Peters, Nich Campbell, Xyphoe, Rob Scott, Themistocles &amp;quot;gryzor&amp;quot; Papassilekas, Neil Reive, Stuart &amp;quot;Balrog&amp;quot; Whyte, Steve &amp;quot;WACCI&amp;quot; Williams and Andy Price. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;There's an amazing type-in by Sean McManus, interviews with Richard Fairhurst and behind the scenes looks at Toki... and Vespertino. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;And more. Like interviews with the people behind Protext and OCP Advanced Art Studio&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Order PDF or printed magazine '''[https://www.pixel.addict.media/shop/amstrad-addict-magazine here]''' or follow the discussion '''[https://www.cpcwiki.eu/forum/news-events/amstrad-addict-magazine here]'''!&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid rgb(255, 201, 201); margin: 0px 0px 5px; padding: 0.5em 1em; background-color: rgb(255, 243, 243);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; '''CPC Related News''' &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- 8 last news only, see http://www.cpcwiki.eu/index.php/OldNews --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;overflow:auto; border: 0px solid #FFC9C9&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Dez80_intro.png|thumb|256px|[http://www.cpcwiki.eu/index.php/DEZ80 Mastering Z80 Assembler Course]]]&lt;br /&gt;
&lt;br /&gt;
*24/12/25: '''[[FutureOS]] 2025''' released! Many new features :-)&lt;br /&gt;
*10/11/25: '''Pitfall II''' [https://21bloques.itch.io/pitfall2 has been released].&lt;br /&gt;
*02/11/25: '''Bug's Quest 2''' [https://yb-software.itch.io/bugs-quest-2 has been released].&lt;br /&gt;
*08/10/25: [[Future View VI]] released! In English, French, German, Spanish and Turkish.&lt;br /&gt;
*06/08/25: '''El Hobbit''' using [[the Mojon Twins]] engine [https://mojontwins.itch.io/el-hobbit-vah-kas-cut has been released].&lt;br /&gt;
*31/07/25: [[Oh Mummy Resurrected]] beta version has been released for the Amstrad Plus range.&lt;br /&gt;
*03/06/25: [[On File]] (2025) DBMS which supports Graphics has been released.&lt;br /&gt;
*27/05/25: '''[[CPCGamesCD-CPCLoader | CPCGamesCD]]''' has been updated. [https://amstrad.es/cpcgamescd]&lt;br /&gt;
*25/04/25: '''Phantomas en el Museo''' using [[the Mojon Twins]] engine [https://mojontwins.itch.io/phantomas-en-el-museo-amstrad-cpc is released].&lt;br /&gt;
*05/04/25: [[ROManager]] 2.50 released!&lt;br /&gt;
*08/03/25: '''[https://tartessos-games.itch.io/master-piece Master Piece]''', the latest game from Tartessos Games, has been released.&lt;br /&gt;
*11/02/25: '''[[Harrier Attack Reloaded]]''' has been released for the Amstrad Plus range.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=right&amp;gt;...[[OldNews|Older News]]...&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- WEIRD TABLE START --&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; class=&amp;quot;FCK__ShowTableBorders&amp;quot; &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| &amp;lt;div style=&amp;quot;border: 1px solid rgb(176, 176, 176); margin: 0px 0px 5px; padding: 0.5em 1em; background-color: rgb(238, 238, 238);&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CPCWiki related ===&lt;br /&gt;
*[[CPCWiki updates]]&lt;br /&gt;
*[[Donors]]&lt;br /&gt;
&lt;br /&gt;
'''Become an Author!'''&lt;br /&gt;
&amp;lt;createbox&amp;gt; &lt;br /&gt;
default=Enter name of article to create &lt;br /&gt;
buttonlabel=Create article! &lt;br /&gt;
width=40 &lt;br /&gt;
&amp;lt;/createbox&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid rgb(176, 176, 176); margin: 0px 0px 5px; padding: 0.5em 1em; background-color: rgb(238, 238, 238);&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: right;&amp;quot;&amp;gt;&amp;lt;small&amp;gt;'''All [[Special:Wantedpages|wanted articles]]''' &amp;amp;#124; [[:Category:Stub|Extendable Stubs]] | '''[[Special:ContributionScores|List of most active contributors]]'''&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; style=&amp;quot;vertical-align: top;&amp;quot; | &amp;lt;div style=&amp;quot;border: 1px solid rgb(228, 222, 222); margin: 0px 0px 5px; padding: 0.5em 1em; background-color: rgb(249, 249, 249);&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Did you know?  ===&lt;br /&gt;
&lt;br /&gt;
*When the CPC 664 was being developed, Sugar was already looking (and hinting publicly!) at the CPC 6128.&lt;br /&gt;
*The [[472|CPC 472]] was a 464 + 8 KB unwired RAM, released in Spain to circumvent a tax charging 64 KB computers.&lt;br /&gt;
*With a total of '''768×288''' pixels, the [[CPC|CPC]] was the 8-bit with the highest displayable resolution on a CRT screen.&lt;br /&gt;
*'''OpenOffice''' is the descendant of [[Star-Division|StarWriter]] for CPC. &lt;br /&gt;
*'''Excel''' is the direct descendant of  [[Multiplan]] for CP/M. &lt;br /&gt;
*[[SymbOS|SymbOS]] supports '''50x''' bigger hard drives than Win95A. &lt;br /&gt;
*[[FutureOS|FutureOS]] can load a 178 KB floppy disc in '''9 seconds'''.&lt;br /&gt;
*[[FutureOS|FutureOS]] can manage up to '''4 MB''' of extended RAM and '''32 GB''' of mass storage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Atari_2600&amp;diff=127126</id>
		<title>Atari 2600</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Atari_2600&amp;diff=127126"/>
				<updated>2026-02-01T20:16:43Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Atari 2600 is the first successful programmable games console; having been introduced in 1977 it was not discontinued until 1992.&lt;br /&gt;
&lt;br /&gt;
It is therefore notable for the extremely limited hardware provided and for the extent to which programmers were incentivised to try to exploit it and their prolonged opportunity for doing so.&lt;br /&gt;
&lt;br /&gt;
The 2600's video chip, the Television Interface Adaptor ('TIA') has no memory access interface. It provides registers to which the programmer can push 20 pixels of background graphics data (either repeated or mirrored for a 40-pixel background scaled up to fill all 160 pixels of the display), two sets of 8 pixels of sprite data and enable/disable selections for three further fixed-rectangular entites: two 'shots' and one 'ball'. Various options exist for scaling the movable objects (e.g. displaying a sprite's 8 pixels as 16 by doubling each) and for repeating them (e.g. having a sprite painted both at its current position and also sixteen pixels to the right).&lt;br /&gt;
&lt;br /&gt;
Further complexity comes from the fact that the TIA does not request that a programmer specify where a movable object should appear, but when it should appear. Each movable object is represented by a counter that runs for a 160-pixel period and then resets. The movable object is drawn when the counter resets. The programmer can also reset it at any time, thereby setting the horizontal position of the sprite. In practice the programmer needs to do so only coarsely, since the TIA also provides some help in moving an existing object left or right by optionally also clocking it in the border period. It extends the border by eight pixels on the left edge to buy the correct amount of time to do so — this leads to a trademark feature of many Atari games that small horizontal chunks are cut out of the left side of the display and move up and down with sprites.&lt;br /&gt;
&lt;br /&gt;
Given the requirements of sprite positioning, that the TIA has only enough storage for a single line of information, and that it generates horizontal sync automatically but not vertical, Atari 2600 games tend to be based around a display kernel, which simply runs in parallel with the raster and pushes new information to the TIA as the display paints. This is the famous 'racing the beam'.&lt;br /&gt;
&lt;br /&gt;
This isn't quite as hard as it might sound since the TIA offers a sync feature, whereby the programmer can retire the processor until the next horizontal sync. So a simple kernel's job is: wake up, set the values for the current line and/or enable sync, go to sleep again until next horizontal sync.&lt;br /&gt;
&lt;br /&gt;
A complicated kernel is aware of exactly when different pushed values will be referenced and updates them live — e.g. dynamically changing the contents of a sprite that is repeated three times to make it look like three different sprites with a fixed spacing. Using the two sprites together in this manner is commonly used to produce a six-digit score line. Changing the 20 pixels of provided background information so that all 40 pixels of drawn background are distinct is also relatively common.&lt;br /&gt;
&lt;br /&gt;
The Atari uses a cut-down version of the [[6502]] with a restricted number of address lines. As a result the window for cartridges is only 4kb. Therefore several on-cartridge banking schemes exist. Only one cartridge is known to try to extend the hardware beyond greater addressing: Pitfall II provides some additional timers and an additional built-in sound generator. The processor copies one PCM sample from the cartridge to the TIA each line.&lt;br /&gt;
&lt;br /&gt;
An advantage of the primitive hardware that ties the TIA directly to the task of composite video generation is an unexpectedly large colour palette: 128 colours in its native NTSC. This is because each 7-bit colour selection is converted directly to a 4-bit phase offset applied to the colour subcarrier and a 3-bit amplitude applied to the luminance output, allowing two very cheap bits of electronics to produce a wide range of colours at the cost of those colours being dictated by the mathematics rather than by any human judgement.&lt;br /&gt;
&lt;br /&gt;
[[Category:Non CPC Computers]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Atari_2600&amp;diff=127125</id>
		<title>Atari 2600</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Atari_2600&amp;diff=127125"/>
				<updated>2026-02-01T20:15:03Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Atari 2600 is the first successful programmable games console; having been introduced in 1977 it was not discontinued until 1992.&lt;br /&gt;
&lt;br /&gt;
It is therefore notable for the extremely limited hardware provided and for the extent to which programmers were incentivised to try to exploit it and their prolonged opportunity for doing so.&lt;br /&gt;
&lt;br /&gt;
The 2600's video chip, the Television Interface Adaptor ('TIA') has no memory access interface. It provides registers to which the programmer can push 20 pixels of background graphics data (either repeated or mirrored for a 40-pixel background scaled up to fill all 160 pixels of the display), two sets of 8 pixels of sprite data and enable/disable selections for three further fixed-rectangular entites: two 'shots' and one 'ball'. Various options exist for scaling the movable objects (e.g. displaying a sprite's 8 pixels as 16 by doubling each) and for repeating them (e.g. having a sprite painted both at its current position and also sixteen pixels to the right).&lt;br /&gt;
&lt;br /&gt;
Further complexity comes from the fact that the TIA does not request that a programmer specify where a movable object should appear, but when it should appear. Each movable object is represented by a counter that runs for a 160-pixel period and then resets. The movable object is drawn when the counter resets. The programmer can also reset it at any time, thereby setting the horizontal position of the sprite. In practice the programmer needs to do so only coarsely, since the TIA also provides some help in moving an existing object left or right by optionally also clocking it in the border period. It extends the border by eight pixels on the left edge to buy the correct amount of time to do so — this leads to a trademark feature of many Atari games that small horizontal chunks are cut out of the left side of the display and move up and down with sprites.&lt;br /&gt;
&lt;br /&gt;
Given the requirements of sprite positioning, that the TIA has only enough storage for a single line of information, and that it generates horizontal sync automatically but not vertical, Atari 2600 games tend to be based around a display kernel, which simply runs in parallel with the raster and pushes new information to the TIA as the display paints. This is the famous 'racing the beam'.&lt;br /&gt;
&lt;br /&gt;
This isn't quite as hard as it might sound since the TIA offers a sync feature, whereby the programmer can retire the processor until the next horizontal sync. So a simple kernel's job is: wake up, set the values for the current line and/or enable sync, go to sleep again until next horizontal sync.&lt;br /&gt;
&lt;br /&gt;
A complicated kernel is aware of exactly when different pushed values will be referenced and updates them live — e.g. dynamically changing the contents of a sprite that is repeated three times to make it look like three different sprites with a fixed spacing. Using the two sprites together in this manner is commonly used to produce a six-digit score line. Changing the 20 pixels of provided background information so that all 40 pixels of drawn background are distinct is also relatively common.&lt;br /&gt;
&lt;br /&gt;
The Atari uses a cut-down version of the 6502 with a restricted number of address lines. As a result the window for cartridges is only 4kb. Therefore several on-cartridge banking schemes exist. Only one cartridge is known to try to extend the hardware beyond greater addressing: Pitfall II provides some additional timers and an additional built-in sound generator. The processor copies one PCM sample from the cartridge to the TIA each line.&lt;br /&gt;
&lt;br /&gt;
An advantage of the primitive hardware that ties the TIA directly to the task of composite video generation is an unexpectedly large colour palette: 128 colours in its native NTSC. This is because each 7-bit colour selection is converted directly to a 4-bit phase offset applied to the colour subcarrier and a 3-bit amplitude applied to the luminance output, allowing two very cheap bits of electronics to produce a wide range of colours at the cost of those colours being dictated by the mathematics rather than by any human judgement.&lt;br /&gt;
&lt;br /&gt;
[[Category:Non CPC Computers]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Qbert&amp;diff=127116</id>
		<title>Qbert</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Qbert&amp;diff=127116"/>
				<updated>2026-01-24T19:25:00Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:qbertloader.jpg|thumbnail|Loading screen]]&lt;br /&gt;
[[File:qbertmenu.jpg|thumbnail|Q*bert main menu]]&lt;br /&gt;
[[File:qbertmenu2.jpg|thumbnail|Q*bert instructions]]&lt;br /&gt;
[[File:qbertlevel1.jpg|thumbnail|Q*bert level screen]]&lt;br /&gt;
[[File:qbertgame.jpg|thumbnail|Q*bert game]]&lt;br /&gt;
&lt;br /&gt;
== Q*bert - The original game ==&lt;br /&gt;
&lt;br /&gt;
Q*bert was programmed by Gottlieb in 1982. The arcade game inspired a plethora of ports to many home computers in the early 80s, including several clones for the Amstrad CPC (Er*bert and Englebert). Despite this, there has never been a version for the Amstrad Plus machines that takes advantage of its advanced capabilities. I hope to be able to release a faithful rendition of the game for the Amstrad Plus platform.&lt;br /&gt;
&lt;br /&gt;
== Proposed features ==&lt;br /&gt;
&lt;br /&gt;
* Graphically as close as possible to the arcade version as the Amstrad allows&lt;br /&gt;
* Multicoloured hardware sprites&lt;br /&gt;
* All the original game mechanics, levels and sprites to be recreated&lt;br /&gt;
* Hopefully Q*bert's speech to be recreated by synthesis software&lt;br /&gt;
* Redefinable keys&lt;br /&gt;
* Joystick enabled menu and scoreboard controls for GX4000&lt;br /&gt;
* Cartridge version, floppy disc and cassette version&lt;br /&gt;
&lt;br /&gt;
== Making Q*bert ==&lt;br /&gt;
&lt;br /&gt;
[https://www.mimosquest.com/downloads/CreatingQBert.pdf Developing Q*bert PDF] - How I developed Q*bert from the original arcade game&lt;br /&gt;
&lt;br /&gt;
[[Category:Arcade Port]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Multi_Cartridge_8_ROMs&amp;diff=127048</id>
		<title>Multi Cartridge 8 ROMs</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Multi_Cartridge_8_ROMs&amp;diff=127048"/>
				<updated>2025-12-29T00:19:12Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Multicart8Rom.jpg|thumbnail|assembled]]&lt;br /&gt;
[[File:Multicart8RomPcb.jpg|thumbnail|PCB]]&lt;br /&gt;
&lt;br /&gt;
An GX4000 / Amstrad Plus cartridge typically holds a ROM/EPROM with 128KB, 256KB or 512KB of data. E.g. all original GX4000 games were using 128K ROMs but more recent released games often need more storage and can hold up to 512K, like e.g. &amp;quot;La Culotte de Zelda&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Multi-Cartridges have been available for many years now, the most famous probably being the 32-in-1 which holds all original, commercial releases for the GX4000. A multi-cartridge usually carries one or more EPROMs where each EPROM can store more than a single game. The games can be selected via DIP switches. While the 32-in-1 is a nice thing, it's biggest downside is, that it is much bigger than an original cartridge and doesn't even fit into a Amstrad Plus computers.&lt;br /&gt;
&lt;br /&gt;
The cartridge here resembles the dimensions of the original cartridge PCB and fits into a standard cartridge case. It can hold up to 8 games on a single EPROM (depending on the selected games and EPROM types).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* Put up to 8 games on a single cartridge&lt;br /&gt;
* Supports ROM image sizes of 128K, 256K and 512K&lt;br /&gt;
* Game selection via dip switches&lt;br /&gt;
* same PCB size as original cartridges&lt;br /&gt;
* no ACID required (implements noACID patch based on Shinings design)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Full documentation and most recent Gerbers can be found on Github: https://github.com/etomuc/gx4000-multi-cartridge&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(eto)&lt;br /&gt;
&lt;br /&gt;
[[Category:DIY]][[Category:Cartridges| ]][[Category:DATA Storage]][[Category:CPC Plus]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=User:Polluks&amp;diff=127038</id>
		<title>User:Polluks</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=User:Polluks&amp;diff=127038"/>
				<updated>2025-12-22T02:46:14Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: /* Software */ URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ACE (Emulator)]]&lt;br /&gt;
&lt;br /&gt;
[http://arcadegamedesigner.proboards.com AGD] [[List of games created using The Graphic Adventure Creator]]&lt;br /&gt;
&lt;br /&gt;
[[Keyboard_Versions#English_2]]&lt;br /&gt;
&lt;br /&gt;
* [[Tennis_Cup_2_(cartridge)|Analogue joystick]] analog.acepansion&lt;br /&gt;
* [[BIOS Function Summary]] [[Amstrad LP-1 light pen|lp-1]].acepansion&lt;br /&gt;
&lt;br /&gt;
[[CPC-Cplink]] [[Emulator IDs]]&lt;br /&gt;
&lt;br /&gt;
== My Literature ==&lt;br /&gt;
[[Image:CPC Schneider International Sonderheft 4-1987.jpg|150px|right]]&lt;br /&gt;
* [[Das Maschinensprachebuch zum CPC464]], 2nd edn.&lt;br /&gt;
* [[CPC Schneider International Sonderheft, Issue 4]]&lt;br /&gt;
* [[Das große Buch der Public-Domain-Software]], M. Kotulla&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
* [[Gorilla]] https://github.com/sblendorio/gorilla-cpm/blob/master/dists/gorilla-cpc.dsk?raw=true&lt;br /&gt;
* [[TRSDOS]]&lt;br /&gt;
* [[Nevada Pascal]], [[Nevada PILOT]], [[Nevada Fortran]]&lt;br /&gt;
* [[Space Taxi]]&lt;br /&gt;
* [[CPC/IP]]&lt;br /&gt;
* [[Pinball Dreams]] (Preview)&lt;br /&gt;
* [[Legend of Steel]]&lt;br /&gt;
* [[Jarlac]]&lt;br /&gt;
* [https://www.forum64.de/index.php?thread/63639-k%C3%A4sek%C3%A4stchen-ein-neues-gsx-basiertes-spiel-f%C3%BCr-joyce-pcw-und-cpc/ Käsekästchen]&lt;br /&gt;
* [http://hampa.ch/pce/pics-cpm80.html CP/M]&lt;br /&gt;
* [[Bomb Jack Extra Sugar]]&lt;br /&gt;
* [[L'Abbaye des Morts]] https://github.com/retrodeluxe/AbbayeMSX&lt;br /&gt;
* [[The Ghosts of Blackwood Manor]]&lt;br /&gt;
&lt;br /&gt;
=== Livingstone ===&lt;br /&gt;
&amp;quot;In its day they coded it with a Phillips PMDS for the Amstrad initially, being later ported to Spectrum, MSX 2 (one of the few European MSX titles that is not a direct port from Spectrum), Commodore 64, PC, and even the Atari ST. The Z80 version was made by themselves and the C64 version was outsourced to a specialized freelace programmer. The C64 version probably does not share the original z80 code at all.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== People ==&lt;br /&gt;
* [[Joshua]]&lt;br /&gt;
* [[Vanity]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Dan_Dare:_Pilot_Of_The_Future&amp;diff=127035</id>
		<title>Dan Dare: Pilot Of The Future</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Dan_Dare:_Pilot_Of_The_Future&amp;diff=127035"/>
				<updated>2025-12-21T22:28:30Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Dan Dare 1 Cover.JPG|thumb|250px|right|Dan Dare game cover]]&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable|width: 700px; font-size: 2em;}}&lt;br /&gt;
|Title:|| '''Dan Dare'''&lt;br /&gt;
|-&lt;br /&gt;
|Company:|| [[Mastertronic]]&lt;br /&gt;
|-&lt;br /&gt;
|Type:|| 2D Levels&lt;br /&gt;
|-&lt;br /&gt;
|Year:|| 1986&lt;br /&gt;
|-&lt;br /&gt;
|No of Players:|| 1&lt;br /&gt;
|-&lt;br /&gt;
|Language:|| English&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
2D Levels game based on the famous Dan Dare comic character created by Frank Hampson.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plot ==&lt;br /&gt;
&lt;br /&gt;
Dan was appearing on &amp;quot;This Is Your Life&amp;quot;, all of his friends were there to speak glowingly of his achievements, but as Dan moved forward to speak, the screen went blank and then slowly the evil green face of the Mekon appeared. An Astroid was heading for the Earth, either the powers that be gave in, and announced him as commander of the universe, or the earth was destroyed.&lt;br /&gt;
&lt;br /&gt;
Dan has decided that Professor Peabody and Digby should keep the Anastasia in orbit and out of danger, while he is lowered down on a rope to go and investigate. However unknown to Dan and his friends their arrival had been closely monitored by the Treens, the Mekon's faithful followers. No sooner had he left the ship than he was attacked. Luckily there was a discarded laser lying nearby, Dan rolled to it and picked it up, one shot and the Treen lay dead. There was now no time to loose, he must stop the evil Mekon's plan.&lt;br /&gt;
&lt;br /&gt;
Dan will encounter Treens, mounted wall guns and other hazards, if he is injured by any of these his energy will be sapped, if it reaches zero he will fall unconscious. Should this happen or should he come into contact with a Treen, he will be captured. Fortunately the prisons door are not well secured and Dan will have little difficulty to open them. However he will lose vital time finding his way back through the maze.&lt;br /&gt;
&lt;br /&gt;
The Mekon has left a self-destruct mechanism active, in case Earth should give in to his demands. Dan must find the five parts that are scattered throughout the complex and take them, one by one, to the control room. This is easily recognised as it has five empty sockets. When you put a part into the correct socket it starts to glow. When the last part is in place, Dan must quickly make his way to the surface where his friends are waiting in the Anastasia.&lt;br /&gt;
&lt;br /&gt;
== Reviews ==&lt;br /&gt;
&lt;br /&gt;
10/10 - Computing with the Amstrad&lt;br /&gt;
&lt;br /&gt;
100% - ZZap&lt;br /&gt;
&lt;br /&gt;
== Game map ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Game map of Dan Dare&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Image:dan dare map.jpg&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cover  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Image:Dan_Dare_Cover.JPG|Tape Version Cover&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Easter Egg ==&lt;br /&gt;
&lt;br /&gt;
In July, 2010, an Easter Egg was [http://cpcwiki.eu/forum/index.php/topic,1131 posted in the CPCwiki forum] by Sophie. Here's how to get to it:&lt;br /&gt;
&lt;br /&gt;
1. First, go to the screen to the right of the guy who tells you &amp;quot;Get more things Dan&amp;quot;. Make sure that the moving laser gun on the right isn't in your way - shoot at it when it's high up.&lt;br /&gt;
&lt;br /&gt;
[[Image:DD1.png|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Run to the end of the platform and jump off, so that you fall down near the right hand side of the screen. You'll get the normal message about falling unconscious and being captured by the Treens, but instead of falling down to the cell screen, you'll land on an invisible platform on the right-hand side of the screen.&lt;br /&gt;
&lt;br /&gt;
[[Image:DD2.png|200px]]&lt;br /&gt;
&lt;br /&gt;
3. On the platform, go right and jump before reaching the end of the screen. The next screen you enter is the start of a series of hidden screens with messages on them. Keep going right to read everything, and make sure that for the first few screens at least, you jump just before hitting the right hand edge, as the platforms on the next screens don't extend all the way to the left hand edge.&lt;br /&gt;
&lt;br /&gt;
[[Image:DD3.png|200px]]&lt;br /&gt;
[[Image:DD4.png|200px]]&lt;br /&gt;
[[Image:DD5.png|200px]]&lt;br /&gt;
[[Image:DD6.png|200px]]&lt;br /&gt;
[[Image:DD7.png|200px]]&lt;br /&gt;
[[Image:DD8.png|200px]]&lt;br /&gt;
&lt;br /&gt;
(watch out for the gap between the L and the I on this one, you're stuck if you get in there)&lt;br /&gt;
&lt;br /&gt;
[[Image:DD9.png|200px]]&lt;br /&gt;
[[Image:DD10.png|200px]]&lt;br /&gt;
[[Image:DD11.png|200px]]&lt;br /&gt;
[[Image:DD12.png|200px]]&lt;br /&gt;
[[Image:DD13.png|200px]]&lt;br /&gt;
&lt;br /&gt;
At the end, you have a lift going down, which just takes you to a screen with one platform and no way to continue other than by jumping off:&lt;br /&gt;
&lt;br /&gt;
[[Image:DD14.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Jumping off will result in falling into a black screen, then going back to the normal 'captured by the Treens' code.&lt;br /&gt;
&lt;br /&gt;
By the way, if you fall during any of these screens (well, the ones you *can* fall on, anyway), you'll notice that you fall into a later section of the game, so this could even be used as a kind of cheat. The reason it works is because when Dan falls, he normally falls into an empty room (except for the invisible platform mentioned above), then falls *again* from that room into the prison. To avoid an infinite loop, the code that moves Dan to the empty room is disabled for the second fall; the empty room really is located above the prison. Because you end up averting the second fall, you can then fall from the secret rooms into the rooms below. (This is also why there's a black screen at the end when you fall; there's no game data defined for that screen.)&lt;br /&gt;
&lt;br /&gt;
[[Category:Games]] [[Category:Games 1986]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Oh_Mummy_Resurrected&amp;diff=127004</id>
		<title>Oh Mummy Resurrected</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Oh_Mummy_Resurrected&amp;diff=127004"/>
				<updated>2025-11-24T10:11:09Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:OhMummyResurrected.jpg|thumbnail|Loading screen]]&lt;br /&gt;
[[File:Omr-startscreen.jpg|thumbnail|Start screen]]&lt;br /&gt;
[[File:Omr-menu.jpg|thumbnail|Menu]]&lt;br /&gt;
[[File:Omr-game.jpg|thumbnail|Game]]&lt;br /&gt;
&lt;br /&gt;
== Oh Mummy - The original game ==&lt;br /&gt;
&lt;br /&gt;
[[Oh Mummy]] was created by a company called Gem Software in 1984. Originally programmed by Daren White and John Line, it was published by [[Amsoft]] and formed part of the Amsoft 12-pack, bundled free with the Amstrad. Its simple concept and addictive gameplay made it easily accessible for any age group, giving it an enduring appeal that spans generations. But its reliance on the keyboard for menu control has restricted its availability to the classic Amstrad range. By disassembling the original game, I hope to be able to release an updated edition that will work on the GX4000, and bring this classic game to the [[Plus]] platform.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* Redefinable keys&lt;br /&gt;
* Joystick enabled menu and scoreboard controls for GX4000&lt;br /&gt;
* Multicoloured hardware sprites&lt;br /&gt;
* Special sprite effects&lt;br /&gt;
* A &amp;quot;mummy&amp;quot; mummy that erases the player's tracks if they are too slow&lt;br /&gt;
* Additional artifacts to uncover&lt;br /&gt;
* Two-player cooperative mode&lt;br /&gt;
* Cartridge version, floppy disc and cassette version&lt;br /&gt;
* Physical cartridge edition to follow&lt;br /&gt;
&lt;br /&gt;
== Making Oh Mummy Resurrected ==&lt;br /&gt;
&lt;br /&gt;
[https://www.mimosquest.com/downloads/CreatingOhMummyResurrected.pdf Creating Oh Mummy Resurrected] - How I disassembled the original game and redeveloped it.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
* [[Media:OhMummyResurrected.cpr.zip|Download CPR for 464+/6128+/GX4000 ]]&lt;br /&gt;
* [[Media:OhMummyResurrected.dsk.zip|Download DSK for 464+/6128+ ]]&lt;br /&gt;
* [[Media:OhMummyResurrected.cdt.zip|Download CDT for 464+/6128+ ]]&lt;br /&gt;
&lt;br /&gt;
[[Category:CPC Plus Games]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Main_Page&amp;diff=126935</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Main_Page&amp;diff=126935"/>
				<updated>2025-11-02T22:31:54Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: Bug's Quest 2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&amp;lt;center&amp;gt;This site is an encyclopaedia on all things [[Amstrad|Amstrad]] [[CPC|CPC]] related. There are now '''[[Special:Allpages|{{NUMBEROFARTICLES}} articles]]''' about the CPC available.&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:forum.png|300px|link=http://www.cpcwiki.eu/forum]]      [[Image:Vs.png|300px|link=http://www.cpcwiki.eu/index.php/Speccy_Port]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid rgb(255, 201, 201); margin: 0px 0px 5px; padding: 0.5em 1em; background-color: rgb(255, 243, 243);&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Amstrad Addict Magazine ad.jpg|190px|thumb|left]]&lt;br /&gt;
'''AMSTRAD ADDICT MAGAZINE ANNOUNCED&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A new 60-page Amstrad magazine - '''Amstrad Addict''' - edited by '''David Crookes''' (Retro Gamer, PC Pro, GamesTM, Wireframe, Amstrad Action, WACCI) is in stock!&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; It includes an interview with '''Lord Sugar''' and in-depth articles by Roland Perry, Auntie John, Adam Peters, Nich Campbell, Xyphoe, Rob Scott, Themistocles &amp;quot;gryzor&amp;quot; Papassilekas, Neil Reive, Stuart &amp;quot;Balrog&amp;quot; Whyte, Steve &amp;quot;WACCI&amp;quot; Williams and Andy Price. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;There's an amazing type-in by Sean McManus, interviews with Richard Fairhurst and behind the scenes looks at Toki... and Vespertino. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;And more. Like interviews with the people behind Protext and OCP Advanced Art Studio&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Order PDF or printed magazine '''[https://www.pixel.addict.media/shop/amstrad-addict-magazine here]''' or follow the discussion '''[https://www.cpcwiki.eu/forum/news-events/amstrad-addict-magazine here]'''!&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid rgb(255, 201, 201); margin: 0px 0px 5px; padding: 0.5em 1em; background-color: rgb(255, 243, 243);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; '''CPC Related News''' &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- 8 last news only, see http://www.cpcwiki.eu/index.php/OldNews --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;overflow:auto; border: 0px solid #FFC9C9&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Dez80_intro.png|thumb|256px|[http://www.cpcwiki.eu/index.php/DEZ80 Mastering Z80 Assembler Course]]]&lt;br /&gt;
&lt;br /&gt;
*02/11/25: '''Bug's Quest 2''' [https://yb-software.itch.io/bugs-quest-2 has been released].&lt;br /&gt;
*08/10/25: [[Future View VI]] released! In English, French, German, Spanish and Turkish.&lt;br /&gt;
*06/08/25: '''El Hobbit''' using [[the Mojon Twins]] engine [https://mojontwins.itch.io/el-hobbit-vah-kas-cut has been released].&lt;br /&gt;
*31/07/25: [[Oh Mummy Resurrected]] beta version has been released for the Amstrad Plus range.&lt;br /&gt;
*03/06/25: [[On File]] (2025) DBMS which supports Graphics has been released.&lt;br /&gt;
*27/05/25: '''[[CPCGamesCD-CPCLoader | CPCGamesCD]]''' has been updated. [https://amstrad.es/cpcgamescd]&lt;br /&gt;
*25/04/25: '''Phantomas en el Museo''' using [[the Mojon Twins]] engine [https://mojontwins.itch.io/phantomas-en-el-museo-amstrad-cpc is released].&lt;br /&gt;
*05/04/25: [[ROManager]] 2.50 released!&lt;br /&gt;
*08/03/25: '''[https://tartessos-games.itch.io/master-piece Master Piece]''', the latest game from Tartessos Games, has been released.&lt;br /&gt;
*11/02/25: '''[[Harrier Attack Reloaded]]''' has been released for the Amstrad Plus range.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=right&amp;gt;...[[OldNews|Older News]]...&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- WEIRD TABLE START --&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; class=&amp;quot;FCK__ShowTableBorders&amp;quot; &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| &amp;lt;div style=&amp;quot;border: 1px solid rgb(176, 176, 176); margin: 0px 0px 5px; padding: 0.5em 1em; background-color: rgb(238, 238, 238);&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CPCWiki related ===&lt;br /&gt;
*[[CPCWiki updates]]&lt;br /&gt;
*[[Donors]]&lt;br /&gt;
&lt;br /&gt;
'''Become an Author!'''&lt;br /&gt;
&amp;lt;createbox&amp;gt; &lt;br /&gt;
default=Enter name of article to create &lt;br /&gt;
buttonlabel=Create article! &lt;br /&gt;
width=40 &lt;br /&gt;
&amp;lt;/createbox&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid rgb(176, 176, 176); margin: 0px 0px 5px; padding: 0.5em 1em; background-color: rgb(238, 238, 238);&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: right;&amp;quot;&amp;gt;&amp;lt;small&amp;gt;'''All [[Special:Wantedpages|wanted articles]]''' &amp;amp;#124; [[:Category:Stub|Extendable Stubs]] | '''[[Special:ContributionScores|List of most active contributors]]'''&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; style=&amp;quot;vertical-align: top;&amp;quot; | &amp;lt;div style=&amp;quot;border: 1px solid rgb(228, 222, 222); margin: 0px 0px 5px; padding: 0.5em 1em; background-color: rgb(249, 249, 249);&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Did you know?  ===&lt;br /&gt;
&lt;br /&gt;
*When the CPC 664 was being developed, Sugar was already looking (and hinting publicly!) at the CPC 6128.&lt;br /&gt;
*The [[472|CPC 472]] was a 464 + 8 KB unwired RAM, released in Spain to circumvent a tax charging 64 KB computers.&lt;br /&gt;
*With a total of '''768×288''' pixels, the [[CPC|CPC]] was the 8-bit with the highest displayable resolution on a CRT screen.&lt;br /&gt;
*'''OpenOffice''' is the descendant of [[Star-Division|StarWriter]] for CPC. &lt;br /&gt;
*'''Excel''' is the direct descendant of  [[Multiplan]] for CP/M. &lt;br /&gt;
*[[SymbOS|SymbOS]] supports '''50x''' bigger hard drives than Win95A. &lt;br /&gt;
*[[FutureOS|FutureOS]] can load a 178 KB floppy disc in '''9 seconds'''.&lt;br /&gt;
*[[FutureOS|FutureOS]] can manage up to '''4 MB''' of extended RAM and '''32 GB''' of mass storage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Speech&amp;diff=126931</id>
		<title>Speech</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Speech&amp;diff=126931"/>
				<updated>2025-10-25T23:37:09Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:SymbOS-Speech.gif|thumb|320px|Speech screenshot]]&lt;br /&gt;
&lt;br /&gt;
'''Speech''' has been developed and published 1986 by [[Amsoft]]. It is a software based voice synthesizer with very good results, which can be compared with hardware solutions. [[Prodatron]] ported it to [[SymbOS]] and added a GUI-based user environment.&lt;br /&gt;
&lt;br /&gt;
You can enter texts, and the CPC will read and speak it for you.&lt;br /&gt;
&lt;br /&gt;
== Web links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.symbos.de/apps.htm SymbOS applications]&lt;br /&gt;
&lt;br /&gt;
[[Category:Applications]]&lt;br /&gt;
[[Category:Music and sound]]&lt;br /&gt;
[[Category:SymbOS]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Dk%27tronics_Lightpen&amp;diff=126924</id>
		<title>Dk'tronics Lightpen</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Dk%27tronics_Lightpen&amp;diff=126924"/>
				<updated>2025-10-23T14:12:41Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: /* Technical */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:dktronics light pen.jpg|right|thumb|250px|The dktronics lightpen - speccy version]]&lt;br /&gt;
[[Image:dktronics lightpen amstrad.jpg‎|right|thumb|250px|The Dk'tronics Lightpen for the CPC464]]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
A Lightpen by [[dk'tronics]].&lt;br /&gt;
&lt;br /&gt;
The lightpen was distributed with an art package. &lt;br /&gt;
&lt;br /&gt;
The dk'Tronics lightpen came in two versions.&lt;br /&gt;
&lt;br /&gt;
A version where the art package was put on an ROM located on the interface.&lt;br /&gt;
&lt;br /&gt;
A version where the art package had to be loaded from disc. &lt;br /&gt;
&lt;br /&gt;
The lightpen came in two different casings. One for the CPC464 and one for the CPC6128. The contents however were the same.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
The ROM version of the art package was started with the bar command |Lightpen. The art package used an on-screen menu system consisting of 5 menus and 3 sub menus which could be navigated using the lightpen. Each menu offered 3 - 5 large icons to choose the commands. The selected command displayed a square bracket around the icon.&lt;br /&gt;
&lt;br /&gt;
Menus&lt;br /&gt;
* Menu 1 - Saving and loading files from disc or tape&lt;br /&gt;
* Menu 2 - Clear screen / Calibrate Pen / Next Menu&lt;br /&gt;
* Menu 3 - Draw / Fill / Set Colour / Set Pencil / Next Menu&lt;br /&gt;
* Menu 4 - Rubber Band / Outline / Set Colour / Set Pencil / Next Menu&lt;br /&gt;
* Menu 5 - Circle / Rectangle / Copy (Sub menu) / Text (Sub menu) / Scratch Pad (Sub menu)&lt;br /&gt;
&lt;br /&gt;
Sub Menus&lt;br /&gt;
* Copy Menu - Copy &amp;amp; Expand / Shrink&lt;br /&gt;
* Text Menu - Vertical Text / Horizontal Text / Set Colour&lt;br /&gt;
* Scratch Pad - Screen to Pad / Edit / Pad to Screen&lt;br /&gt;
&lt;br /&gt;
Rubber Band was a method of drawing curves and irregular shapes by defining points on the screen to be joined by a line.&lt;br /&gt;
The scratch pad was a simple copy/paste area which could be edited seperately.&lt;br /&gt;
&lt;br /&gt;
The handbook also gave instructions in both BASIC and assembly to use the lightpen within your own programs. A small routine to return the X and Y coordinates which worked in all screen modes:&lt;br /&gt;
&lt;br /&gt;
 10 out &amp;amp;1C00, 17 : L=inp(&amp;amp;1F00) : out &amp;amp;1C00, 16 : H=inp(&amp;amp;1F00)&lt;br /&gt;
 20 L=H*256+L-12292 : Y=L/40 : X=L-Y*40&lt;br /&gt;
&lt;br /&gt;
The value 12292 needed to be slightly adjusted to match the monitor being used. This could also be achieved in software by incorporating a simple manual calibration routine.&lt;br /&gt;
&lt;br /&gt;
== Technical ==&lt;br /&gt;
&lt;br /&gt;
Uses I/O ports: [[I/O_Port_Summary|#1C00]] and [[I/O_Port_Summary|#1F00]] (as shown in above BASIC example) (and as on page 1-26 and 1-27 of the original manual)&lt;br /&gt;
* #1C00 and #1F00 are bad decodings/mirrors of [[CRTC]] ports #BC00 and #BF00&lt;br /&gt;
* These ports will clash with other hardware (but do work more or less)&lt;br /&gt;
* A15=0 doesn't trigger the [[Gate Array]] (which would also require A14=1)&lt;br /&gt;
* A13=0 does trigger [[Upper ROM Bank Number]] (but the IN's don't cause problems since the ROM bank is write-only, the OUT's do activate bank 16 and 17, but usually don't cause problems since these banks usually contain mirrors of the BASIC ROM)&lt;br /&gt;
&lt;br /&gt;
The Lightpen uses the CRTC /LPEN input on the expansion port.&lt;br /&gt;
&lt;br /&gt;
== dk'Tronics lightpen artpackage screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;caption=&amp;quot;dk'Tronics artipackage&amp;quot;&amp;gt;&lt;br /&gt;
Image:Dktronics lightpen screenshot 1.png|&lt;br /&gt;
Image:Dktronics lightpen screenshot 2.png|&lt;br /&gt;
Image:Dktronics lightpen screenshot 3.png|&lt;br /&gt;
Image:Dktronics lightpen screenshot 4.png|&lt;br /&gt;
Image:Dktronics lightpen 1.jpg|The device for the CPC464&lt;br /&gt;
Image:Dktronics lightpen 2.jpg|The device for the CPC464&lt;br /&gt;
&amp;lt;/gallery&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;dk'tronics CPC6128 Lightpen interface&amp;quot;&amp;gt;&lt;br /&gt;
Image:Lightpen_Front.jpg|Front&lt;br /&gt;
Image:Lightpen_Back.jpg|Back&lt;br /&gt;
Image:Lightpen_Top.jpg|Top&lt;br /&gt;
Image:Lightpen_Side.jpg|Side&lt;br /&gt;
Image:Lightpen_Pen.jpg|Pen&lt;br /&gt;
Image:Lightpen_PCB_Top.jpg|PCB Top&lt;br /&gt;
Image:Lightpen_PCB_Bottom.jpg|PCB Bottom&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Manuals ==&lt;br /&gt;
&lt;br /&gt;
* [[Media:DKTronics_Lightpen_Manual.pdf|DK'Tronics Lightpen Manual]] (pdf) {{EN}}&lt;br /&gt;
* [[Media:DK'Tronics Peripheral - Technical Manual (Edition 1).pdf|DK'Tronics Peripheral - (Edition 1) Technical Manual]] (pdf) {{EN}}&lt;br /&gt;
* [[Media:DK'Tronics Graphics Lightpen (ROM Version) Manual.pdf|DK'Tronics Graphics Lightpen (ROM Version) Manual]] (pdf) {{EN}}&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
* [[Media:Dk'Tronics Graphics Lightpen (tape).zip|Dk'Tronics Graphics Lightpen (tape).zip]] (CDT for Emulators)&lt;br /&gt;
* [[Media:Dk'Tronics Lightpen Printer Routines (tape).zip|Dk'Tronics Lightpen Printer Routines (tape).zip]] (CDT for Emulators)&lt;br /&gt;
* [[File:DktronicsLightpenDisk.zip]] - for ROM-less version (original cassette driver on disc)&lt;br /&gt;
* [[Media:Dk'tronicsLightPenRomImage.zip|Dk'tronics Lightpen (rom).zip]] (ROM for Emulators)&lt;br /&gt;
&lt;br /&gt;
[[Category:Input Device]] [[Category:Peripherals]] [[Category:Manual]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CP/M_3.0&amp;diff=126907</id>
		<title>CP/M 3.0</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CP/M_3.0&amp;diff=126907"/>
				<updated>2025-10-13T19:56:22Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:cpm30boot.jpg|thumb|300px|CP/M 3.0 after boot]]&lt;br /&gt;
&lt;br /&gt;
CPM 3.0 (also known as CPM+) was available on the 2nd [[System Disk]] Disc for CPC6128 but there were other implementations available.&lt;br /&gt;
&lt;br /&gt;
== Dobbertin's implementation of CP/M+ ==&lt;br /&gt;
&lt;br /&gt;
* [[Dobbertin CPM+]]&lt;br /&gt;
&lt;br /&gt;
== Graduate Software's implementation of CP/M+ on ROM ==&lt;br /&gt;
&lt;br /&gt;
* [[Graduate Software]]&lt;br /&gt;
&lt;br /&gt;
== Amstrad's implementation of CP/M+ ==&lt;br /&gt;
&lt;br /&gt;
Amstrad distributed CP/M+ on the side 4 of the system discs that came with the CPC6128. It requires a Dk'Tronics compatible ram expansion. It provided 61K TPA. To get 61K TPA, CPM+ uses 'C1' and 'C2' RAM configuration with TPA in the 2nd bank and the CCP, BDOS, BIOS, screen and firmware in the 1st 64KB of RAM. This arrangement allows 61KB useable for programs.&lt;br /&gt;
&lt;br /&gt;
On side 1 of the system discs was CP/M 2.2.&lt;br /&gt;
&lt;br /&gt;
* Amstrad CP/M+ uses Amstrad's &amp;quot;System&amp;quot; format. This is 40 tracks, 1 side, 9 sectors per track numbered &amp;amp;41-&amp;amp;49. Each sector is 512bytes. There are two reserved tracks, then the directory which has 64 entries (which occupies 4 sectors) and then the data area. &lt;br /&gt;
* CP/M is booted using an RSX command &amp;quot;|CPM&amp;quot; which is implemented in the Amstrad disc rom (AMSDOS).&lt;br /&gt;
* |CPM loads track 0, side 0, sector &amp;amp;41 into RAM at &amp;amp;100-&amp;amp;2ff. This is the boot sector and contains the boot program.&lt;br /&gt;
* The boot program then loads the directory from track 2, sector &amp;amp;41.&lt;br /&gt;
* The boot program locates a program with extension &amp;quot;EMS&amp;quot;.&lt;br /&gt;
* This program is loaded into RAM at &amp;amp;c00.&lt;br /&gt;
* This is then executed. (EMS contains the BIOS, BDOS and relocates and re-configures the memory. CP/M doesn't use the CP/M 2.2 BIOS from the Amstrad disc ROM.)&lt;br /&gt;
&lt;br /&gt;
=== Creating a minimal boot disc ===&lt;br /&gt;
&lt;br /&gt;
Using CPM2.2:&lt;br /&gt;
* Use disckit2 to format a vendor format disc&lt;br /&gt;
* Use BOOTGEN to put the CPM+ boot sector onto your disc. (Source is CPM+, Destination is your disk).&lt;br /&gt;
* Use FILECOPY to put C10CPM3.EMS onto your disc (FILECOPY C10CPM3.EMS. Source is CPM+, Destination is your disk).&lt;br /&gt;
* Your minimal CP/M+ disc is bootable.&lt;br /&gt;
&lt;br /&gt;
Using CPM3.3:&lt;br /&gt;
* Use disckit3 to format and install the boot sector onto the disc.&lt;br /&gt;
* Use PIP to copy C10CPM3.EMS to your disc (B:=A:C10CPM3.EMS)&lt;br /&gt;
* Your minimal CP/M+ disc is bootable.&lt;br /&gt;
&lt;br /&gt;
=== Terminal font ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;CP/M 3.0 terminal font&amp;quot;&amp;gt;&lt;br /&gt;
Image:Cpmplus.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Console Input ===&lt;br /&gt;
&lt;br /&gt;
Console input (via BDOS functions) uses firmware functions and returns firmware key codes when a key is pressed. i.e. &amp;amp;f0 is cursor up.&lt;br /&gt;
&lt;br /&gt;
=== Console Output/Terminal emulation ===&lt;br /&gt;
&lt;br /&gt;
Console output is processed via the terminal emulation. Console output doesn't execute firmware control codes.&lt;br /&gt;
&lt;br /&gt;
A simplified VT52 terminal is emulated. Home means the top-left position.&lt;br /&gt;
&lt;br /&gt;
The following are supported:&lt;br /&gt;
&lt;br /&gt;
 ESC 0 - disable status line&lt;br /&gt;
 ESC 1 - enable status line&lt;br /&gt;
 ESC 2 - set language&lt;br /&gt;
 ESC 3 - set screen mode&lt;br /&gt;
 ESC A - cursor up&lt;br /&gt;
 ESC B - cursor down&lt;br /&gt;
 ESC C - cursor right&lt;br /&gt;
 ESC D - cursor left&lt;br /&gt;
 ESC E - clear screen and move cursor to home&lt;br /&gt;
 ESC H - move cursor to home&lt;br /&gt;
 ESC I - reverse line feed&lt;br /&gt;
 ESC J - erase to end of screen&lt;br /&gt;
 ESC K - erase to end of line&lt;br /&gt;
 ESC L - insert line&lt;br /&gt;
 ESC M - delete current&lt;br /&gt;
 ESC N - delete character and move characters up&lt;br /&gt;
 ESC Y - set cursor position&lt;br /&gt;
 ESC d - erase all above&lt;br /&gt;
 ESC b - set foreground&lt;br /&gt;
 ESC c - set background (and border)&lt;br /&gt;
 ESC e - enable cursor&lt;br /&gt;
 ESC f - disable cursor&lt;br /&gt;
 ESC j - save cursor pos&lt;br /&gt;
 ESC k - restore cursor pos&lt;br /&gt;
 ESC l - erase and above cursor&lt;br /&gt;
 ESC o - erase current line&lt;br /&gt;
 ESC p - invert on&lt;br /&gt;
 ESC q - invert off&lt;br /&gt;
 ESC r - select bright (recognised but not implemented)&lt;br /&gt;
 ESC u - cancel bright (recognised but not implemented)&lt;br /&gt;
 ESC v - wrap on&lt;br /&gt;
 ESC w - wrap off&lt;br /&gt;
 ESC x - mono mode&lt;br /&gt;
 ESC y - mono c080 mode&lt;br /&gt;
&lt;br /&gt;
PCW and Spectrum support viewports. This is not supported on CPC. CPC assumes a single viewport covering the entire screen and it is moved up/down using software when using insert line or delete current, but moved up using hardware otherwise.&lt;br /&gt;
&lt;br /&gt;
==== ESC 2 - set language ====&lt;br /&gt;
&lt;br /&gt;
ESC 2 &amp;lt;language&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;language&amp;gt; is 0 based. The value is anded with 7. Internally this will transfer language specific character graphics into the font for display.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ESC 3 - set display mode ====&lt;br /&gt;
&lt;br /&gt;
Set the display mode:&lt;br /&gt;
&lt;br /&gt;
ESC 3 &amp;lt;mode number&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mode number&amp;gt; is 0 based. The value is anded with 3.&lt;br /&gt;
&lt;br /&gt;
e.g. to set mode 0:&lt;br /&gt;
&lt;br /&gt;
ESC,3,0&lt;br /&gt;
&lt;br /&gt;
==== ESC b - set foreground ====&lt;br /&gt;
&lt;br /&gt;
Set the foreground (pen 1) colour:&lt;br /&gt;
&lt;br /&gt;
ESC b &amp;lt;colour&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Colour is 0 based with 32 added. It is a 2 bits per pixel %00rrggbb colour.&lt;br /&gt;
&lt;br /&gt;
==== ESC c - set background ====&lt;br /&gt;
&lt;br /&gt;
Set the background (pen 0 and border) colour:&lt;br /&gt;
&lt;br /&gt;
ESC c &amp;lt;colour&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Colour is 0 based with 32 added. It is a 2 bits per pixel %00rrggbb colour.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ESC Y - set cursor position ====&lt;br /&gt;
&lt;br /&gt;
Set the cursor position:&lt;br /&gt;
&lt;br /&gt;
ESC Y &amp;lt;y&amp;gt; &amp;lt;x&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Coordinates are relative to top-left and are 0 based with 32 added.&lt;br /&gt;
&lt;br /&gt;
e.g. for x,y of 2,10: &lt;br /&gt;
&lt;br /&gt;
 ESC,'Y',10+32,2+32&lt;br /&gt;
&lt;br /&gt;
=== Memory layout ===&lt;br /&gt;
&lt;br /&gt;
* 1st 64KB has Amstrad's XBIOS (callable using 'userf'), CCP, BDOS, BIOS, screen and firmware. Screen is at &amp;amp;4000-&amp;amp;7fff. Firmware is used. AMSDOS is not used.&lt;br /&gt;
## &amp;amp;c1/&amp;amp;c2 are used, so that there is common code at &amp;amp;c000-&amp;amp;ffff. This common code has a small BDOS and BIOS. Most of the functions use trampoline code to transition to bank 0 and call into the XBIOS.&lt;br /&gt;
* 2nd 64KB has the TPA and the shared code.&lt;br /&gt;
## Page C4 has WBOOT and BDOS jump + &amp;amp;100-&amp;amp;3f00 of the TPA. This calls to functions in Page c7.&lt;br /&gt;
## Page C5 has &amp;amp;4000-&amp;amp;7fff of the TPA.&lt;br /&gt;
## Page C6 has &amp;amp;8000-&amp;amp;bfff of the TPA.&lt;br /&gt;
## Page C7 has &amp;amp;c000-&amp;amp;f2fb of the TPA. From &amp;amp;f2fc to &amp;amp;ffff is the trampoline code which transitions * to 1st bank of 64KB.&lt;br /&gt;
&lt;br /&gt;
=== Extra memory ===&lt;br /&gt;
&lt;br /&gt;
CPM+ on the CPC uses 128KB of memory. Therefore selections C4,C5,C6,C7 must be avoided if you have additional memory. Due to the design of DkTronic's compatible RAM expansions all memory accesses to additional RAM must occur from bank 0 (i.e. 'C1') and be transferred to the TPA in bank 1 (i.e. 'C2').&lt;br /&gt;
&lt;br /&gt;
Therefore access to the additional RAM follows a pattern such as this:&lt;br /&gt;
* From running CPM program in bank 1 you need to go via code in C000-FFFF to transition to bank 0. This can be done using 'userf'.&lt;br /&gt;
* Within bank 0, your extra memory access code must lie within the regions 0000-3FFF or  8000-BFFF. 4000-7FFF is where the paging will take place so is out of bounds. C000-FFFF is where the memory trampoline code is paged in and out so using this area is much harder.&lt;br /&gt;
* Remember the current memory configuration (e.g. C1,C3,C0) &lt;br /&gt;
* In bank 0 set the memory selection (e.g. 'CC') then perform your read from the extra RAM into a temporary buffer within one of the safe areas. For write you copy from a safe area into the extra memory.&lt;br /&gt;
* Then you need to restore the memory configuration (e.g. C1,C3,C0) and trampoline back to the TPA.&lt;br /&gt;
&lt;br /&gt;
Therefore extra memory access on the CPC is not as fast as it could be compared to running under AMSDOS.&lt;br /&gt;
&lt;br /&gt;
=== Implementing a storage device driver ===&lt;br /&gt;
&lt;br /&gt;
Using &amp;quot;drvtable&amp;quot; gets the list of DPH addresses for each drive. This is actually fixed at FE2F and is referenced by the XBIOS.&lt;br /&gt;
&lt;br /&gt;
Amstrad implemented the extended DPH in the Digital Research sample BIOS. The ten bytes before a DPH give the addresses of read/write functions:&lt;br /&gt;
&lt;br /&gt;
* -10,-9 - address of sector write function&lt;br /&gt;
* -8,-7 - address of sector read function&lt;br /&gt;
* -6,-5 - address of drive select function&lt;br /&gt;
* -4,-3 - address of drive init function (never called)&lt;br /&gt;
* -2 - physical drive number (for B: this is 0 on a single-drive system and 1 on a two-drive system)&lt;br /&gt;
* -1 - drive type&lt;br /&gt;
&lt;br /&gt;
The XBIOS calls these and assumes bank 0 is active. If you write a driver in TPA space you will need to transition to and from bank 1 using selbnk etc.&lt;br /&gt;
&lt;br /&gt;
The parameters for the read / write functions are at 0BEF0h:&lt;br /&gt;
 	DB	@adrv	;Selected logical drive&lt;br /&gt;
  	DB	@rdrv	;Selected physical drive (from the byte at DPH-2)&lt;br /&gt;
 	DW	@trk	;Track passed to SETTRK.&lt;br /&gt;
 	DW	@sect	;Sector passed to SETSEC.&lt;br /&gt;
 	DW	@dma	;DMA address passed to SETDMA.&lt;br /&gt;
 	DB	@cnt	;Multiple I/O count passed to MULTIO&lt;br /&gt;
 	DB	@dbnk	;DMA bank passed to SETBNK&lt;br /&gt;
&lt;br /&gt;
=== PALETTE.COM ===&lt;br /&gt;
&lt;br /&gt;
PALETTE is a COM program written by Locomotive Software and allows the colours to be changed.&lt;br /&gt;
The syntax is:&lt;br /&gt;
&lt;br /&gt;
 PALETTE &amp;lt;background&amp;gt; &amp;lt;foreground&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;background&amp;gt; and &amp;lt;foreground&amp;gt; are r,g,b colour codes with 2 bits for each colour defined in binary as r1 r0 g1 g0 b1 b0. Therefore black is 000000, bright white is 111111, white (grey) is 010101 and bright red is 110000.&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* [https://www.seasip.info/Cpm/index.html John Elliott's information about CPM 2.2 and CPM+ on the Amstrad]&lt;br /&gt;
*[[Media:CPM Plus Handbook.pdf|CP/M Plus handbook]]&lt;br /&gt;
&lt;br /&gt;
[[Category:CP/M]] [[Category:Operating System]] [[Category:Extended RAM Software]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Joshua&amp;diff=126906</id>
		<title>Joshua</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Joshua&amp;diff=126906"/>
				<updated>2025-10-13T11:35:31Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: /* Utilities */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Membership ==&lt;br /&gt;
* [[ALC]]&lt;br /&gt;
* [[Exodus]]&lt;br /&gt;
&lt;br /&gt;
== Releases ==&lt;br /&gt;
=== Demos ===&lt;br /&gt;
* [[The Future (Exodus)|The Future]] (1996)&lt;br /&gt;
* [[X-Mas '95 Demo]]&lt;br /&gt;
=== Utilities  ===&lt;br /&gt;
&lt;br /&gt;
*[[Advanced Music Creator]] (1996)&lt;br /&gt;
*[[Outch!Noter]] (1996)&lt;br /&gt;
&lt;br /&gt;
[[Category:CPC_scene_members]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Connector:Stereo_sound&amp;diff=126879</id>
		<title>Connector:Stereo sound</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Connector:Stereo_sound&amp;diff=126879"/>
				<updated>2025-09-30T11:27:41Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: /* Aleste Tape/Sound Connector (female) */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CPC Stereo ==&lt;br /&gt;
&lt;br /&gt;
Stereo Sound Connector (3.5mm, female)&lt;br /&gt;
  1  Left   (the contact at the tip of the plug)&lt;br /&gt;
  2  Right  (the middle contact)&lt;br /&gt;
  3  Ground (the contact at the cable-end of the plug)&lt;br /&gt;
Note: The CPC+ additionally has stereo sound output on the Monitor connector.&lt;br /&gt;
&lt;br /&gt;
== KC Compact Stereo ==&lt;br /&gt;
[[KC Compact]] uses a 5pin DIN connector&lt;br /&gt;
  1      Left (A+B)           __ __&lt;br /&gt;
  2      GND                 /  -  \&lt;br /&gt;
  3      NC                 |       |&lt;br /&gt;
  4      Right (C+B)        |3     1|&lt;br /&gt;
  5      NC                  \5_2_4/&lt;br /&gt;
  Shield GND&lt;br /&gt;
* Aside from the above DIN connector, the KC compact additionally outputs Stereo on the Scart connector, and Mono on the Tape connector, and Mono on the UHF modulated video signal.&lt;br /&gt;
* Unlike the CPC, the KC Compact does NOT include an internal speaker.&lt;br /&gt;
&lt;br /&gt;
== Aleste Tape/Sound Connector (female) ==&lt;br /&gt;
[[Aleste 520EX]] uses a 5pin female DIN connector&lt;br /&gt;
  1      Tape In              __ __&lt;br /&gt;
  2      GND                 /  -  \&lt;br /&gt;
  3      Sound Mono-Left    |       |&lt;br /&gt;
  4      Tape Out           |3     1|&lt;br /&gt;
  5      Sound Mono-Right    \5_2_4/&lt;br /&gt;
  Shield GND&lt;br /&gt;
* The Left/Right pins are actually shortcut with each other on the Aleste mainboard, so sound is mono. The mono sound is also output on the Aleste's Monitor connector.&lt;br /&gt;
* There is no Tape Motor Control (the corresponding PIO bit is mis-used as Printer Strobe in the Aleste).&lt;br /&gt;
&lt;br /&gt;
[[Category:Peripherals]][[Category:CPC Internal Components]][[Category:Clones]][[Category:CPC Plus]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=OldNews&amp;diff=126865</id>
		<title>OldNews</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=OldNews&amp;diff=126865"/>
				<updated>2025-09-14T20:09:51Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: archived 2024&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*06/12/24: '''Le Secret Du Tombeau''' English translation '''[https://www.cpcwiki.eu/forum/games/le-secret-du-tombeau-translation-project/msg245301/#msg245301 released]!!!&lt;br /&gt;
*29/11/24: Release of CPCs comprehensive text editor '''[[FutureTex]]'''&lt;br /&gt;
*10/11/24: '''[http://amsnet.chez.com UniLoad]''' game launcher official release.&lt;br /&gt;
*31/10/24: [[Future View V]] the Halloween issue of the disc mag&lt;br /&gt;
*27/10/24: '''[[FutureOS]]''' Update 2024 [http://www.FutureOS.de released].&lt;br /&gt;
*09/09/24: '''The Key''', a new adventure by Pakete Soft [https://www.paketesoft.com/es/the-key-eng-version has been released].&lt;br /&gt;
*04/09/24: '''[[UniDOS]]''' 1.51 [https://unidos.cpcscene.net released].&lt;br /&gt;
*12/07/24: Comprehensive update of text editor [[FutureTex]] to 0.5.2. Text / Block management up to 3,5 MB&lt;br /&gt;
*07/06/24: [[On File]] database management system as well as [[No One Like You Demo]] have been released by [[KSL]].&lt;br /&gt;
*05/06/24: [https://snauts.itch.io/pulzar Pulzar] by Snauts, double feature: ZX &amp;amp; CPC release.&lt;br /&gt;
*17/05/24: '''[https://www.usebox.net/jjm/heart-of-salamanderland/ The Heart of Salamanderland]''', a new action platformer, has been released.&lt;br /&gt;
&lt;br /&gt;
*21/09/23: '''[https://amsnews.fr AMSnews.fr]''', a new french information site about the Amstrad. '''''Be the first to know'''''.&lt;br /&gt;
*07/06/23: '''Gates to Heaven''', a new platformer by [[ESP Soft]] [https://amstrad-esp.itch.io/gates-to-heaven-amstrad-cpc has been released], and their previous game, '''CPC Jewels''', can now be [https://amstrad-esp.itch.io/cpc-jewels-amstrad-cpc downloaded for free].&lt;br /&gt;
*27/02/23: '''SOH Tactics GX''', a new GX4000/plus strategy game [http://www.sohde.co.uk/SOHTacticsGX.html released].&lt;br /&gt;
*21/12/22: '''[[Current_Sources_Of_Software]]''', now as a wiki page.&lt;br /&gt;
*09/12/22: '''Hyperdrive''', a new vertical scrolling SHMUP [https://www.usebox.net/jjm/hyperdrive/ has been released].&lt;br /&gt;
*04/11/22: '''[[UniDOS]]''' 1.50 has been released [https://unidos.cpcscene.net].&lt;br /&gt;
*30/10/22: '''''Ramiro el vampiro III''''' using [[the Mojon Twins]] engine [https://mojontwins.itch.io/ramiro-el-vampiro-iii is released].&lt;br /&gt;
*17/07/22: '''''Lala Prologue''''' using [[the Mojon Twins]] engine [https://www.indieretronews.com/2022/07/lala-prologue-stunning-platformer-by.html is released].&lt;br /&gt;
*24/01/22: '''''[[SymAmp]] 4.0''''', with Amiga MOD support and more [http://www.symbos.org/appinfo.htm?00005 is released].&lt;br /&gt;
&lt;br /&gt;
*30/12/21: '''''[[SymbOS]] 3.1''''', with a lot of new hardware support and applications [http://www.symbos.org/download.htm is released].&lt;br /&gt;
*12/11/21: '''''Josh''''',  new game by [http://retropoke.canalblog.com/archives/2021/10/30/39170787.html RetroPoke] is released.&lt;br /&gt;
*02/11/21: '''''Shovel Adventure''''',  new game by [https://greenwebsevilla.itch.io/shovel-adventure Pat Morita Team] is released.&lt;br /&gt;
*23/10/21: '''''Puzzle Bobble''''',  new game by [https://crazypiri.itch.io/puzzle-bobble Crazy Piri] is released.&lt;br /&gt;
*12/04/21: '''''Oil Panic''''',  another game by [https://crazypiri.itch.io/oil-panic Crazy Piri] is released. CPC port of the well known ''Game &amp;amp; Watch'' game.&lt;br /&gt;
*07/01/21: '''[[CPCemu]]''' has been released as [https://cpc-emu.org/news.html version 2.0] after 11 years.&lt;br /&gt;
*23/12/20: '''''[[Ninja Carnage]]''''', new adventure by [http://games.resistance.no/ninjac/ Resistance], has been released&lt;br /&gt;
*15/10/20: '''''Crazy Blaster''''', an action game by [https://www.thefuturewas8bit.com/cas011.html Misfit]&lt;br /&gt;
*13/10/20: Preview of '''''[https://media.assembly.org/gamedev/2020/CORSAIR_TRAINER.zip Corsair Trainer]''''', shoot'em up by Bitplane Technomantes&lt;br /&gt;
*08/10/20: Preview of '''''[https://github.com/shaymanjohn/aticatac-cpc/releases/download/v0.5/aticatac.dsk Atic Atac]''''', CPC port by John Ward&lt;br /&gt;
*10/09/20: '''''CPC Soccer''''', Kick Off like game published by [[Bitmap Soft]]&lt;br /&gt;
*12/07/20: '''''[[Mimo's Quest]]''''', a new game by [[:User:Evenmore|Chris Perver]], is under development&lt;br /&gt;
*29/04/20: '''''[[Dirk Headstrong and the Martian Madness]]''''', a new game by [[:User:ZoeRobinson|Zoë Robinson]], is released&lt;br /&gt;
*16/04/20: '''''Kitsune's Curse''''', new game by [https://www.usebox.net/jjm/kitsunes-curse/ usebox.net]&lt;br /&gt;
*09/06/19: '''''[[The Arbiter: Episode 1]]''''', a new text adventure coded live on YouTube, has been released!&lt;br /&gt;
*13/04/19: [http://www.spinpoint.org/2019/04/13/imperium-solo/ Imperium Solo] [http://www.cpcwiki.eu/forum/amstrad-cpc-hardware/usb-game-controllers-and-mice/msg173181/#msg173181 released!]&lt;br /&gt;
*01/03/19: [https://www.4mhz.es/operation-alexandra/ Operation Alexandra] released!&lt;br /&gt;
*26/01/19: Text adventure '''''[[The Quest For The CPCine Disk of Power!]]''''' released!&lt;br /&gt;
*01/10/18: [http://www.cpcwiki.eu/forum/applications/cubeios-fat16fat32-rom-for-the-cpc's-with-xmass/ CubeMDOS / FAT16+FAT32-IDE-OS - for XMASS   *** NEW: Symbiface 3,HXC/Gotek ***]&lt;br /&gt;
*20/08/18: [https://www.usebox.net/jjm/dawn-of-kernel/ The Dawn of Kernel] released!&lt;br /&gt;
*06/06/18: We now have a list of [[Missing software]] to enhance the community's archival program&lt;br /&gt;
*31/05/18: [[Hangman|The Equalizor]] releases his [[RomboRedux|Rombo Redux]]&lt;br /&gt;
*30/04/18: [http://www.cpcwiki.eu/forum/games/galactic-tomb-is-done-!!!/ Galactic-Tomb is done !!!]&lt;br /&gt;
*28/03/18: '''[http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip LambdaSpeak RSX]'''  released&lt;br /&gt;
*23/03/18: [http://www.cpcwiki.eu/forum/applications/cubeios-fat16fat32-rom-for-the-cpc's-with-xmass/ CubeIOS - FAT16 &amp;amp; FAT32-OS for Amstrad's with XMASS]&lt;br /&gt;
*02/03/18: '''[[DEZ80]]''': Mastering Z80 Assembler Course.&lt;br /&gt;
*30/08/17: '''[http://www.symbos.org/download.htm SymbOS 3 final]''' released. [http://www.cpcwiki.eu/forum/news-events/symbos-3-released/ Forum]&lt;br /&gt;
*25/08/17: '''[https://doomsdayproductions.org Doomsday Lost Echoes]''' [[PAWS]] adventure released.&lt;br /&gt;
*07/06/17: '''[http://www.amstrad.es/forum/viewtopic.php?f=4&amp;amp;p=65869&amp;amp;sid=e37557917abfdec8d1a5768ea00fcbeb#p65869/ Alphakhor Spanish translation]''' released. [http://www.cpcwiki.eu/forum/games/new-game-translation-to-spanish-alphakhor/ Forum]&lt;br /&gt;
*16/04/17: '''[http://cpc.scifinet.org/ Pentomino]''' released.[http://www.cpcwiki.eu/forum/games/pentomino Forum]&lt;br /&gt;
*11/02/17: '''Norton-Commander-Clone for M4DOS released. [http://www.cpcwiki.eu/forum/applications/yet-another-norton-commander-clone Forum]&lt;br /&gt;
*11/02/17: '''File-Launcher released (ACMEDOS,M4DOS,AMSDOS). [http://www.cpcwiki.eu/forum/applications/filelauncher-(acmedosm4dos) Forum]&lt;br /&gt;
*03/02/17: '''Amstrad CPC to Scart diagram''' updated. [http://www.cpcwiki.eu/index.php/TV_SCART_cable#John_King.27s_Comments_about_CPC_to_Television_Scart_Lead]&lt;br /&gt;
*15/01/17: '''M4 board''' firmware v2.0.0 released. [http://www.cpcwiki.eu/index.php/M4_Board#Firmware]&lt;br /&gt;
*07/01/17: Update to new game [http://www.cpcwiki.eu/forum/games/chibi-akuma(s)-out-now!/ Chibi Akuma(s) (チビ悪魔)] '''[http://www.chibiakumas.com/download/ Inet]'''&lt;br /&gt;
*11/12/16: '''[[CPCGamesCD-CPCLoader | CPCGamesCD]]''' has been updated. [http://cpcgamescd.amstrad.es]&lt;br /&gt;
*10/10/16: '''[http://julien-nevo.com/mahjong/ Imperial Mahjong]''' released. [http://www.cpcwiki.eu/forum/games/imperial-mahjong-cargosoft-new-game/ Forum]&lt;br /&gt;
*01/10/16: '''[[Get The Cash]]''' released.&lt;br /&gt;
*29/09/16: '''[http://espsoft.blogspot.com.es/2016/09/tower-of-despair.html/ Tower of Despair]''' released. [http://www.cpcwiki.eu/forum/games/tower-of-despair/ Forum]&lt;br /&gt;
*12/09/16: '''Cyber Chicken''' on DSK released. [http://www.cc-cpc.de/site/cpage/4]&lt;br /&gt;
*08/09/16: '''Norton-Commander-Clone released (ACMEDOS+AMSDOS). [http://www.cpcwiki.eu/forum/applications/yet-another-norton-commander-clone Forum]&lt;br /&gt;
*11/08/16: '''[http://cpc.scifinet.org/ Defence]''' released. A new game for your CPC. [http://www.cpcwiki.eu/forum/games/new-game-defence Forum]&lt;br /&gt;
*11/08/16: '''Orgams &amp;quot;Codigo Con CPC&amp;quot;''' released. [http://orgams.wikidot.com/releases Download page]&lt;br /&gt;
*10/08/16: '''[http://www.cpcwiki.eu/forum/games/new-game-golden-tail/ Golden tail]''' released. &lt;br /&gt;
*17/07/16: '''[[ACE (Emulator)|ACE]]''' 1.12 released. [http://aminet.net/package/misc/emu/ACE-MorphOS Download]&lt;br /&gt;
*16/05/16: '''MultiPlay''' add a [http://www.cpcwiki.eu/forum/amstrad-cpc-hardware/multiplay-mx4-expansion/ dual joystick/mouse] to your CPC.&lt;br /&gt;
*07/05/16: '''[[M4_Board]]''' - a WLAN-Adapter and more for CPC - is released. [http://www.cpcwiki.eu/forum/amstrad-cpc-hardware/amstrad-cpc-wifi/ M4 Board] &lt;br /&gt;
*04/04/16: '''[[Dobbertin Smart Watch]]''' as new batch released by dxs&lt;br /&gt;
*22/03/16: '''[http://www.cpcwiki.eu/forum/games/new-game-a-prelude-to-chaos-cpc/ A Prelude to Chaos]''' by EgoTrip released!&lt;br /&gt;
*15/03/16: '''[http://unpasadomejor.wix.com/amstradeterno Amstrad Eterno]''' event in Spain announced for April the 16th!&lt;br /&gt;
*05/01/16: '''[[WinApe|WinAPE]]''' 2.0 Beta 2 released. [http://www.winape.net/ Download]&lt;br /&gt;
*20/12/15: After more than one decade Overlanders released [http://www.pouet.net/prod.php?which=66699/ Points Barres]&lt;br /&gt;
*27/11/15: New game released! [http://www.cpcwiki.eu/forum/games/new-game-the-return-of-traxtor/ The Return of Traxtor]&lt;br /&gt;
*02/09/15: '''iMPdraw Lite v1.132''' is now released. [http://www.cpcwiki.eu/forum/programming/impdraw-v1-0f/60/ Download]&lt;br /&gt;
*28/08/15: '''[[FutureOS]] system .8''' comprehensive update released. [http://futureos.cpc-live.com Download]&lt;br /&gt;
*27/08/15: [[ROManager|ROManager]] 2.14 released. [http://futureos.cpc-live.com/files/ROManager_ALL.zip Download]&lt;br /&gt;
&lt;br /&gt;
*14/12/14: '''X-MASS''', Add a [http://www.cpcwiki.eu/forum/news-events/x-mass-a-mass-storage-expansion-for-all-cpc/msg91048/#msg91048 128MB mass-storage] to your CPC.&lt;br /&gt;
*30/08/14: '''[[SymbOS]]''' 2.1 Final [http://www.cpcwiki.eu/forum/news-events/symbos-2-1-final-released released]&lt;br /&gt;
*14/08/14: '''[[PlayCity]]''', add [http://www.cpcwiki.eu/forum/amstrad-cpc-hardware/playcity-aka-ctc-ay-(mx4)-for-august-!!!/ 6ch stereo audio, Z80 CTC...] to your CPC.&lt;br /&gt;
*22/04/14: '''X-MEM''', add up to [http://www.cpcwiki.eu/forum/news-events/x-mem-a-new-memory-expansion-for-all-cpc/ 512K RAM/ROM] on your 464/664/6128.&lt;br /&gt;
*20/04/14: '''Breaking Baud''', [http://www.cpcwiki.eu/forum/demos/breaking-baud/ THE tape demo]. 2nd place at Revision!&lt;br /&gt;
*30/03/14: '''Superpix''', a new Picross-style game was [http://www.cpc-power.com/index.php?page=detail&amp;amp;num=10000 released].&lt;br /&gt;
*24/03/14: '''SAMdisk''' 3.8.2 [http://simonowen.com/samdisk/ released].&lt;br /&gt;
*23/03/14: [[PSX controller mod for Amstrad CPC]] by [[User:Forcy|Forcy]]&lt;br /&gt;
*11/03/14: '''CPCDiskXP ''' 2.5.1 [http://www.cpcwiki.eu/forum/news-events/cpcdiskxp-v2-1-released/msg76939/#msg76939 released] - a nice update!&lt;br /&gt;
*03/02/14: '''La Guerra de Gamber''' [http://www.amstrad.es/juegosamstrad/decargajuegos/la-guerra-de-gamber.php released] by ESP Soft!&lt;br /&gt;
&lt;br /&gt;
*16/12/13: [[Cyber Huhn|Cyber Chicken]] released on disc. Only 111 unique boxes available.&lt;br /&gt;
*05/12/13: '''Billy La Banlieue''' remake [http://www.billy-la-banlieue.com/index.html in the works].&lt;br /&gt;
*23/11/13: '''[http://pcwwiki.amstrad.es/doku.php?id=en:start PCW Wiki]''' now open :)&lt;br /&gt;
*20/10/13: Interview with developer '''[[Stephen_Curtis|Stephen N. Curtis]]''' ([[Chopper Squad]],[[Into Oblivion]],[[Nonterraqueous]],[[Nonterraqueous_2_(Soul_of_a_Robot)|Soul of a Robot]],[[Terra_Cognita|Terra Cognita]]) added!!!&lt;br /&gt;
*27/09/13: Collaboration to convert CPC games to ROM, find all your favourites here:[[ROM_List#Game_ROMs|ROM Games]]&lt;br /&gt;
*17/07/13: New '''[http://cpcwiki.eu/index.php/CPCGamesCD-CPCLoader CPCGamesCD]''' version, with PCW support :)&lt;br /&gt;
*01/07/13: '''16KB ROM competition ended. [http://www.cpcwiki.eu/forum/games/cpcwiki-rom-game-competition-voting/ Vote here!]'''.&lt;br /&gt;
*08/06/13: '''[http://www.norecess.net/ Phortem]''', the new Condense demo is here.&lt;br /&gt;
*31/03/13: '''Revision 2013: [http://www.pouet.net/prod.php?which=61177 Still Rising]''', the Vanity's answer to Batman Forever.&lt;br /&gt;
*07/01/13: '''[http://www.cpcwiki.eu/forum/news-events/'teodoro-no-sabe-volar'-for-amstrad-cpc-is-here!!!!/ Teodoro No Sabe Volar] '''released!&lt;br /&gt;
*01/01/13: Announcing the first '''[[Amstrad_CPC_16KBs_ROM_Game_Development_Competition_2013|Amstrad CPC 16KBs ROM Game Development Competition]].'''&lt;br /&gt;
&lt;br /&gt;
*01/12/12: Major CPCWiki software upgrade; please report any bugs in the forum.&lt;br /&gt;
*28/10/12: [http://www.futureos.de Update] available of '''[[FutureOS]]'''.&lt;br /&gt;
*03/10/12: '''Australian magazines''' ('89 &amp;amp; '91 [http://cpcwiki.eu/index.php/The_Amstrad_User here] &amp;amp; '''New Zealand''' ones ('''Bits &amp;amp; Bytes''') [http://cpcwiki.eu/index.php/Bits_and_Bytes here].&lt;br /&gt;
*27/04/12: [http://cpcrulez.fr/forum/viewtopic.php?f=2&amp;amp;t=4852 Interview] with '''Marc Maulin''', co-author of legendary '''[[Discology]]'''.&lt;br /&gt;
*07/04/12: '''[http://pouet.net/prod.php?which=59073 Wake Up!]''' by '''[http://bnd.pushnpop.net Benediction]''' (and associates) reached the 3rd place in Olschool demo compo at the '''[http://www.revision-party.net/ Revision Party 2012]''' in Germany.&lt;br /&gt;
*01/04/12: '''[http://www.cpcwiki.eu/forum/news-events/april-fool/ Pac-Man Emulator]''' released!&lt;br /&gt;
*08/02/12: '''[http://www.cpcwiki.eu/forum/applications/dsktools-0-2-3-can-write-r-type-128k dsktools 0.2.3]''' can copy '''R-Type!&lt;br /&gt;
*06/02/12: '''R-Type''' remake [http://cpc.rtype.fr/ released] finally - and is awesome!&lt;br /&gt;
&lt;br /&gt;
*26/12/11: '''Bubble Bobble''' remake [http://www.cpcwiki.eu/forum/games/bubble-bobble-remake-(bb4cpc)/msg36311/#msg36311 released]!!! Happy holidays!  &lt;br /&gt;
*14/11/11: '''[http://www.windowsphonegeek.com/news/xnacpc-xbox-360-amstrad-cpc-emulator-released?utm_medium=twitter&amp;amp;utm_source=twitterfeed XNACPC]''', a CPC emulator for the Xbox 360, released!&lt;br /&gt;
*31/10/11: [http://lotharek.pl/ '''Lotharek'''], supplier of the Jeff's HxC Floppy Emulators, has been interviewed on [http://pushnpop.net/articles-66.html '''Push'N'Pop''']. &lt;br /&gt;
*23/10/11: Definite, CPCWiki version of '''Zynaps''' [http://www.cpcwiki.eu/forum/index.php?topic=2821.msg32849#msg32849 released] by '''tastefulmrship'''!&lt;br /&gt;
*09/10/11: Hidden music from '''Teenage Mutant Ninja Turtles''' [http://www.cpcwiki.eu/forum/index.php?topic=2685.msg31741#msg31741 ripped] by '''SyX'''!&lt;br /&gt;
*01/10/11: '''NoRecess''' [http://www.norecess.net/3/post/2011/09/quickcmd-v23-released.html released v.2.3] (Dead Link) '''[http://norecess.cpcscene.net/news/quickcmd-v23-released Updated Link]''' of '''QuickCMD''', now with command history support!&lt;br /&gt;
*22/09/11: '''NoRecess''' released v2.4 of his '''[http://www.norecess.net/hxc-floppy-emulator-manager.html HxC Floppy Emulator Manager]''' (Dead Link) '''[http://norecess.cpcscene.net/hxc-floppy-emulator-manager.html Updated Link]''' and '''TFM''' updated his '''[http://www.colorado-boys-muenchen.de/users/futureos/ ROManager]''', now both work with HxC set as drive B!&lt;br /&gt;
*18/09/11: NEW GAME!!! '''[http://www.cpcwiki.eu/forum/index.php?topic=2724.0 Edge Grinder]''' by '''Paul Kooistra'''!&lt;br /&gt;
*17/09/11: '''[http://www.norecess.net/3/post/2011/09/quickcmd-v22-released.html QuickCMD 2.2]''' released - support for '''[[MegaFlash]] added!&lt;br /&gt;
*15/09/11: [http://www.cpcwiki.eu/forum/index.php?topic=2714.msg27881;topicseen#new Call] for a Megademo to celebrate the CPC's '''30th anniversary'''!&lt;br /&gt;
*15/08/11: Benediction and Brainstorm's demo named '''[http://pouet.net/prod.php?which=57525 Bloc Us!]''' ranked 9th at the Evoke 2011 this week-end. &lt;br /&gt;
*15/08/11: '''[http://www.cpcwiki.eu/forum/index.php?topic=2572.new#new JavaCPC Desktop]''' 1.0 official release!&lt;br /&gt;
*06/08/11: '''[http://www.cpcwiki.eu/forum/index.php?topic=2527.0 Megaflash]''', the programmable 512kb ROMbox by '''Bryce''' finally begun production!&lt;br /&gt;
*05/08/11: '''[http://www.cpcwiki.eu/forum/index.php?topic=2522.0 PC-CPC]''', a lovely new emulator has been released by '''Demoniak'''!&lt;br /&gt;
*05/08/11: '''[http://www.cpcwiki.eu/forum/index.php?topic=2514 Winape]''' at last updated to v2.0a18, too many changes to list here :)&lt;br /&gt;
*05/08/11: '''[http://genesis8.free.fr/index.php#caprice-v28-and-copacabana-v075-for-palm-os Caprice v28 and Copacabana v075]''' for PalmOS!&lt;br /&gt;
*05/08/11: '''[http://www.cpcwiki.eu/forum/index.php?topic=2243 Roland]''', the Javascript emulator, has been updated - now with a huge online games archive! &lt;br /&gt;
*27/07/11: Automatic Installer for [[FutureOS]] released. Works with the new [[MegaFlash]]. (English, French, German)&lt;br /&gt;
*26/07/11: '''[[WinApe|WinAPE 2.0A18]]''' released, get it from '''[http://www.winape.net/downloads.jsp WinAPE downloads]''' (if it doesn't update automatically).&lt;br /&gt;
*23/07/11: '''[[QuickCMD|Quickcmd v2.1]]''' released!&lt;br /&gt;
*21/07/11: Bryce has released the '''[[MegaFlash|MegaFlash]]'''. Also the [[MegaFlashROManager]] was released by TFM.&lt;br /&gt;
*05/07/11: '''[http://www.cpcwiki.eu/forum/index.php?topic=2426.msg25923#msg25923 Now That’s What I Call Chip Tunes]''' - a great music disk by '''Mr.Ship'''!&lt;br /&gt;
*05/07/11: '''[http://roland.antoniovillena.es/ Roland]''', the online javascript emulator, now supports sound!&lt;br /&gt;
*05/07/11: New version of '''[http://www.cpcalive.com/cpcalive_en.html CPCAlive]''' with Z80 debugger improvement and corrections.&lt;br /&gt;
*28/06/11: Results and report (soon!) for the ReSeT #0 Party are '''[http://pushnpop.net/index.php?action=meetings&amp;amp;id=14 here]'''&lt;br /&gt;
*21/06/11: Major new release of '''[http://www.cpcbox.com/ CPCbox]''', now with sound!!&lt;br /&gt;
*09/05/11: '''[http://www.pushnpop.net/reset ReSeT #0 Party]''' is a CPC Meeting in France: 24-25-26 June 2011!&lt;br /&gt;
*03/05/11: '''[http://www.cpcmania.com/index2.asp?urldest=cpcdiskxp/cpcdiskxp.htm CPCDiskXP]''' 2.1 released :)&lt;br /&gt;
*27/04/11: A new game! This time a port of Dinamic's '''Arquimedes XXI''' by '''Devilmarkus, PulkoMandy, voXfReaX''' and '''MiguelSky''', over [http://www.amstrad.es/juegosamstrad/decargajuegos/arquimedesxxi.php here]!&lt;br /&gt;
*27/04/11: '''NoRecess''' published a great [http://www.norecess.net/interview-richard-wilson.html interview] (Dead Link) with '''Richard Wilson''' of '''ParaDOS''' and '''WinApe''' fame :) '''New Page:'''can be found [http://norecess.cpcscene.net/interview-richard-wilson.html here]&lt;br /&gt;
*17/04/11: '''ACID''' well and truly [http://www.octoate.de/wp/2011/04/15/another-acid-implementation-on-the-way/ ripped apart] :)&lt;br /&gt;
*17/04/11: '''NoRecess''' released v.2.2 of [http://www.norecess.net/hxc-floppy-emulator-manager.html HxC Floppy Emulator Manager]&lt;br /&gt;
*16/04/11: A very detailed interview of the Batman Forever Team published on '''[http://pushnpop.net/ Push'N'Pop]'''&lt;br /&gt;
*11/04/11: New game!!! '''[http://www.amstrad.es/juegosamstrad/decargajuegos/hora-bruja.php Hora Bruja]''' released! :)&lt;br /&gt;
*08/04/11: Another [http://www.norecess.net/1/post/2011/04/added-interview-of-longshot-logon-system.html interview] by Recess, this time with '''Longshot / Logon System'''!&lt;br /&gt;
*06/04/11: NoRecess added an [http://www.norecess.net/interview-face-hugger.html interview with '''Face Huggger''']! (Dead Link) '''[http://norecess.cpcscene.net/interview-face-hugger.html Updated Link]'''&lt;br /&gt;
*23/03/11: '''[http://zx81.zx81.free.fr/serendipity/index.php?/archives/502-Caanoo-CAP32-Amstrad-CPC-Emulator-for-Caanoo-v1.1.2.html Caanoo-CAP32]''' for the Gamepark Caanoo updated!&lt;br /&gt;
*17/03/11: '''[http://www.retroreview.com/iang/UberCassette/ UberCassette]''' (wav-&amp;gt;CDT) now supports Amstrad CPC :)&lt;br /&gt;
*15/02/11: [http://cpcwiki.eu/forum/index.php/topic,1982 Sub Hunter] released! Read Axelay's interview [http://www.norecess.net/interview-axelay.html here]!&lt;br /&gt;
*10/03/11: {FR} A fantastic [http://www.phenixinformatique.com/modules/smartsection/item.php?itemid=244 interview with '''Marion Vannier'''], head of Amstrad France!&lt;br /&gt;
*09/03/11: Yeah!!! '''[http://fmsdevel.wisecoding.es/blog/cpcdroid---2011-03-02 CPCDroid]''', a great emulator for '''Android''', has been released!!!&lt;br /&gt;
*09/03/11: Small update of [http://cngsoft.no-ip.org/cpce/index.htm CPCE] released&lt;br /&gt;
*13/01/11: [http://www.mojontwins.com/juegos_mojonos/uwol-2-cpc/ Uwol 2 (Quest for Money)], a new game by the Mojon Twins!!&lt;br /&gt;
*13/01/11: New version of the [http://www.telefonica.net/web2/emilioguerrero/ccz80/ccz80.html CCZ80 compiler]&lt;br /&gt;
*13/01/11: [http://www.norecess.net/sdcc2pasmo.html SDCC2Pasmo v1.0] tool released for SDCC-&amp;gt;Pasmo assembler conversions&lt;br /&gt;
*13/01/11: [http://cpcparts.net CPCParts] has a real domain name now!&lt;br /&gt;
*12/01/11: [http://cpcwiki.eu/forum/index.php/topic,1871.0.html CPCInAJar], CPC emu in *exactly* 128kB released by Devilmarkus!&lt;br /&gt;
&lt;br /&gt;
*15/12/10: [[Xmas_2010_Demo]] Released by Redbox :) &lt;br /&gt;
*01/12/10: New [http://cpcwiki.eu/forum/index.php/topic,1608.0.html Amstrad Repair Service]! &lt;br /&gt;
*17/10/10: [[MegaROM]] DIY ROMBoard released by Bryce! &lt;br /&gt;
*15/10/10: [http://www.mojontwins.com/juegos_mojonos/sir-ababol-cpc/ Sir Ababol] released by Mojon Twins! &lt;br /&gt;
*11/10/10: [http://cpcwiki.eu/forum/index.php/topic,1425.new.html#new Blue Angel 69] released!!! &lt;br /&gt;
*11/10/10: [http://www.mojontwins.com/juegos_mojonos/cheril-of-the-bosque-cpc/ Cheril of the Bosque] released by Mojon Twins!&lt;br /&gt;
*11/10/10: Arnoldemu released [http://cpcwiki.eu/forum/index.php/topic,1416.msg13821 Drivetest] to help you diagnose drive problems!&lt;br /&gt;
*10/10/10: [[CPCE]] 1.94 is released. &lt;br /&gt;
*06/10/10: Impressive 4Kb demo realesed by [http://vanitycrew.free.fr/ Vanity Crew] during the Main#5 Party. &lt;br /&gt;
*07/09/10: 1st CPC emulator written in Javascript, [http://www.cpcbox.com/ CPCBox] is released! &lt;br /&gt;
*02/09/10: [[ROManager_BASIC]] is released! &lt;br /&gt;
*16/08/10: [[FilmeMacher]] updated! &lt;br /&gt;
*29/07/10: 2cdt [http://cpcwiki.eu/forum/index.php/topic,1203.msg11699 updated!!!] &lt;br /&gt;
*23/06/10: New [http://simonowen.com/samdisk/ SAMDisk] version released! Also, don't forget DevilMarkus' [http://cpc-live.com/data/download.php?type=-tool&amp;amp;fichier=DiskUtil_1_2.zip CPCXfs &amp;amp; SAMDisk GUI]!!&lt;br /&gt;
*20/06/10: [http://www.julien-nevo.com/arkos/tools.html Arkos Tracker v1.0 Beta 3] released! &lt;br /&gt;
*11/05/10: [http://www.portabledev.com/pages/ds/jeuxdev.-perso/ameds.php AmeDS], a DS CPC emulator has been released! &lt;br /&gt;
*26/04/10: [http://www.amstradcpc.info/ Amstrad Expo 2010] will take place in Coutances (France) from 25th to 27th June.&lt;br /&gt;
*20/04/10: [http://www.cpcalive.com/cpcalive_en.htm CPCAlive] 1.9 released with new screen modes.&lt;br /&gt;
*24/03/10: Program in C on a CPC: [http://cpcwiki.eu/forum/index.php/topic,639.0/ PhrozenC] is out!!!&lt;br /&gt;
*17/03/10: New [[CPCGamesCD-CPCLoader]] version released!&lt;br /&gt;
*25/02/10: [http://cpcwiki.eu/forum/index.php/topic,585.0.html Dead On Time], a new game by Axelay!&lt;br /&gt;
*31/01/10: Flynn, of WinCPC's fame, released [http://www.wincpc.ch/index.php?topic=projects-maccpc MacCPC]!!&lt;br /&gt;
*27/01/10: New Plus demo [[Blob_Demo|released]] by ''' redbox'''!&lt;br /&gt;
&lt;br /&gt;
*24/12/09: [[Rick_dangerous_128%2B]] released on schedule - get playing!!!&lt;br /&gt;
*23/12/09: New X-Max demo [[XMas-tro 2009]]&lt;br /&gt;
*23/12/09: New game [[3D-Maze]] released!&lt;br /&gt;
*14/10/09: Another game by the [[The Mojon Twins]] : [[Platform Medley Block 1|Platform Medley Block #1]]&lt;br /&gt;
*10/10/09: New puzzle game [http://amstrad.es/juegosamstrad/decargajuegos/ilogicall.php Ilogicall] released!&lt;br /&gt;
*07/09/09: [[Protext]] goes [http://www.linuxlore.co.uk/09/09/07/protext-now-free FREE!]&lt;br /&gt;
*27/08/09: [[Robotron_6128|Robotron 6128]], by Lachlan Keown, released!&lt;br /&gt;
*04/08/09: [[From Scratch]] from [[Vanity]] is available on [http://pouet.net/prod.php?which=53596 pouet.net]&lt;br /&gt;
*28/07/09: [[Arome Tomate]] is available on [http://pouet.net/prod.php?which=53561 pouet.net]&lt;br /&gt;
*27/07/09: Sudoku Master is available on [http://binarysciences.com/ Binary Sciences]&lt;br /&gt;
*27/07/09: Cosmic Prison Commando [http://carnivacgames.blogspot.com/09/07/cpc-demo-11-topic.html demo] 1.1 released! A great CPC-looking game for the PC :)&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Main_Page&amp;diff=126864</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Main_Page&amp;diff=126864"/>
				<updated>2025-09-14T20:08:17Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: archived&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&amp;lt;center&amp;gt;This site is an encyclopaedia on all things [[Amstrad|Amstrad]] [[CPC|CPC]] related. There are now '''[[Special:Allpages|{{NUMBEROFARTICLES}} articles]]''' about the CPC available.&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:forum.png|300px|link=http://www.cpcwiki.eu/forum]]      [[Image:Vs.png|300px|link=http://www.cpcwiki.eu/index.php/Speccy_Port]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid rgb(255, 201, 201); margin: 0px 0px 5px; padding: 0.5em 1em; background-color: rgb(255, 243, 243);&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Amstrad Addict Magazine ad.jpg|190px|thumb|left]]&lt;br /&gt;
'''AMSTRAD ADDICT MAGAZINE ANNOUNCED&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A new 60-page Amstrad magazine - '''Amstrad Addict''' - edited by '''David Crookes''' (Retro Gamer, PC Pro, GamesTM, Wireframe, Amstrad Action, WACCI) is in stock!&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; It includes an interview with '''Lord Sugar''' and in-depth articles by Roland Perry, Auntie John, Adam Peters, Nich Campbell, Xyphoe, Rob Scott, Themistocles &amp;quot;gryzor&amp;quot; Papassilekas, Neil Reive, Stuart &amp;quot;Balrog&amp;quot; Whyte, Steve &amp;quot;WACCI&amp;quot; Williams and Andy Price. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;There's an amazing type-in by Sean McManus, interviews with Richard Fairhurst and behind the scenes looks at Toki... and Vespertino. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;And more. Like interviews with the people behind Protext and OCP Advanced Art Studio&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Order PDF or printed magazine '''[https://www.pixel.addict.media/shop/amstrad-addict-magazine here]''' or follow the discussion '''[https://www.cpcwiki.eu/forum/news-events/amstrad-addict-magazine here]'''!&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid rgb(255, 201, 201); margin: 0px 0px 5px; padding: 0.5em 1em; background-color: rgb(255, 243, 243);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; '''CPC Related News''' &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- 8 last news only, see http://www.cpcwiki.eu/index.php/OldNews --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;overflow:auto; border: 0px solid #FFC9C9&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Dez80_intro.png|thumb|256px|[http://www.cpcwiki.eu/index.php/DEZ80 Mastering Z80 Assembler Course]]]&lt;br /&gt;
&lt;br /&gt;
*06/08/25: '''El Hobbit''' using [[the Mojon Twins]] engine [https://mojontwins.itch.io/el-hobbit-vah-kas-cut has been released].&lt;br /&gt;
*31/07/25: [[Oh Mummy Resurrected]] beta version has been released for the Amstrad Plus range.&lt;br /&gt;
*03/06/25: [[On File]] (2025) DBMS which supports Graphics has been released.&lt;br /&gt;
*27/05/25: '''[[CPCGamesCD-CPCLoader | CPCGamesCD]]''' has been updated. [https://amstrad.es/cpcgamescd]&lt;br /&gt;
*25/04/25: '''Phantomas en el Museo''' using [[the Mojon Twins]] engine [https://mojontwins.itch.io/phantomas-en-el-museo-amstrad-cpc is released].&lt;br /&gt;
*05/04/25: [[ROManager]] 2.50 released!&lt;br /&gt;
*08/03/25: '''[https://tartessos-games.itch.io/master-piece Master Piece]''', the latest game from Tartessos Games, has been released.&lt;br /&gt;
*11/02/25: '''[[Harrier Attack Reloaded]]''' has been released for the Amstrad Plus range.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=right&amp;gt;...[[OldNews|Older News]]...&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- WEIRD TABLE START --&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; class=&amp;quot;FCK__ShowTableBorders&amp;quot; &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| &amp;lt;div style=&amp;quot;border: 1px solid rgb(176, 176, 176); margin: 0px 0px 5px; padding: 0.5em 1em; background-color: rgb(238, 238, 238);&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CPCWiki related ===&lt;br /&gt;
*[[CPCWiki updates]]&lt;br /&gt;
*[[Donors]]&lt;br /&gt;
&lt;br /&gt;
'''Become an Author!'''&lt;br /&gt;
&amp;lt;createbox&amp;gt; &lt;br /&gt;
default=Enter name of article to create &lt;br /&gt;
buttonlabel=Create article! &lt;br /&gt;
width=40 &lt;br /&gt;
&amp;lt;/createbox&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid rgb(176, 176, 176); margin: 0px 0px 5px; padding: 0.5em 1em; background-color: rgb(238, 238, 238);&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: right;&amp;quot;&amp;gt;&amp;lt;small&amp;gt;'''All [[Special:Wantedpages|wanted articles]]''' &amp;amp;#124; [[:Category:Stub|Extendable Stubs]] | '''[[Special:ContributionScores|List of most active contributors]]'''&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; style=&amp;quot;vertical-align: top;&amp;quot; | &amp;lt;div style=&amp;quot;border: 1px solid rgb(228, 222, 222); margin: 0px 0px 5px; padding: 0.5em 1em; background-color: rgb(249, 249, 249);&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Did you know?  ===&lt;br /&gt;
&lt;br /&gt;
*When the CPC 664 was being developed, Sugar was already looking (and hinting publicly!) at the CPC 6128.&lt;br /&gt;
*The [[472|CPC 472]] was a 464 + 8 KB unwired RAM, released in Spain to circumvent a tax charging 64 KB computers.&lt;br /&gt;
*With a total of '''768×288''' pixels, the [[CPC|CPC]] was the 8-bit with the highest displayable resolution on a CRT screen.&lt;br /&gt;
*'''OpenOffice''' is the descendant of [[Star-Division|StarWriter]] for CPC. &lt;br /&gt;
*'''Excel''' is the direct descendant of  [[Multiplan]] for CP/M. &lt;br /&gt;
*[[SymbOS|SymbOS]] supports '''50x''' bigger hard drives than Win95A. &lt;br /&gt;
*[[FutureOS|FutureOS]] can load a 178 KB floppy disc in '''9 seconds'''.&lt;br /&gt;
*[[FutureOS|FutureOS]] can manage up to '''4 MB''' of extended RAM and '''32 GB''' of mass storage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=User:Polluks&amp;diff=126856</id>
		<title>User:Polluks</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=User:Polluks&amp;diff=126856"/>
				<updated>2025-09-04T21:41:46Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ACE (Emulator)]]&lt;br /&gt;
&lt;br /&gt;
[http://arcadegamedesigner.proboards.com AGD] [[List of games created using The Graphic Adventure Creator]]&lt;br /&gt;
&lt;br /&gt;
[[Keyboard_Versions#English_2]]&lt;br /&gt;
&lt;br /&gt;
* [[Tennis_Cup_2_(cartridge)|Analogue joystick]] analog.acepansion&lt;br /&gt;
* [[BIOS Function Summary]] [[Amstrad LP-1 light pen|lp-1]].acepansion&lt;br /&gt;
&lt;br /&gt;
[[CPC-Cplink]] [[Emulator IDs]]&lt;br /&gt;
&lt;br /&gt;
== My Literature ==&lt;br /&gt;
[[Image:CPC Schneider International Sonderheft 4-1987.jpg|150px|right]]&lt;br /&gt;
* [[Das Maschinensprachebuch zum CPC464]], 2nd edn.&lt;br /&gt;
* [[CPC Schneider International Sonderheft, Issue 4]]&lt;br /&gt;
* [[Das große Buch der Public-Domain-Software]], M. Kotulla&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
* [[Gorilla]] https://github.com/sblendorio/gorilla-cpm/blob/master/dists/gorilla-cpc.dsk?raw=true&lt;br /&gt;
* [[TRSDOS]]&lt;br /&gt;
* [[Nevada Pascal]], [[Nevada PILOT]], [[Nevada Fortran]]&lt;br /&gt;
* [[Space Taxi]]&lt;br /&gt;
* [[CPC/IP]]&lt;br /&gt;
* [[Pinball Dreams]] (Preview)&lt;br /&gt;
* [[Legend of Steel]]&lt;br /&gt;
* [[Jarlac]]&lt;br /&gt;
* [https://www.forum64.de/index.php?thread/63639-k%C3%A4sek%C3%A4stchen-ein-neues-gsx-basiertes-spiel-f%C3%BCr-joyce-pcw-und-cpc/ Käsekästchen]&lt;br /&gt;
* [http://hampa.ch/pce/pics-cpm80.html CP/M]&lt;br /&gt;
* [[Bomb Jack Extra Sugar]]&lt;br /&gt;
* [[L'Abbaye des Morts]]&lt;br /&gt;
* [[The Ghosts of Blackwood Manor]]&lt;br /&gt;
&lt;br /&gt;
=== Livingstone ===&lt;br /&gt;
&amp;quot;In its day they coded it with a Phillips PMDS for the Amstrad initially, being later ported to Spectrum, MSX 2 (one of the few European MSX titles that is not a direct port from Spectrum), Commodore 64, PC, and even the Atari ST. The Z80 version was made by themselves and the C64 version was outsourced to a specialized freelace programmer. The C64 version probably does not share the original z80 code at all.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== People ==&lt;br /&gt;
* [[Joshua]]&lt;br /&gt;
* [[Vanity]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=User:Polluks&amp;diff=126855</id>
		<title>User:Polluks</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=User:Polluks&amp;diff=126855"/>
				<updated>2025-09-04T21:40:50Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: /* Software */ The Ghosts of Blackwood Manor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ACE (Emulator)]]&lt;br /&gt;
&lt;br /&gt;
[http://arcadegamedesigner.proboards.com AGD] [[List of games created using The Graphic Adventure Creator]]&lt;br /&gt;
&lt;br /&gt;
[[Keyboard_Versions#English_2]]&lt;br /&gt;
&lt;br /&gt;
* [[Tennis_Cup_2_(cartridge)|Analogue joystick]] analog.acepansion&lt;br /&gt;
* [[BIOS Function Summary]] [[Amstrad LP-1 light pen|lp-1]].acepansion&lt;br /&gt;
&lt;br /&gt;
[[CPC-Cplink]] [[Emulator IDs]]&lt;br /&gt;
&lt;br /&gt;
== My Literature ==&lt;br /&gt;
[[Image:CPC Schneider International Sonderheft 4-1987.jpg|150px|right]]&lt;br /&gt;
* [[Das Maschinensprachebuch zum CPC464]], 2nd edn.&lt;br /&gt;
* [[CPC Schneider International Sonderheft, Issue 4]]&lt;br /&gt;
* [[Das große Buch der Public-Domain-Software]], M. Kotulla&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
* [[Gorilla]] https://github.com/sblendorio/gorilla-cpm/blob/master/dists/gorilla-cpc.dsk?raw=true&lt;br /&gt;
* [[TRSDOS]]&lt;br /&gt;
* [[Nevada Pascal]], [[Nevada PILOT]], [[Nevada Fortran]]&lt;br /&gt;
* [[Space Taxi]]&lt;br /&gt;
* [[CPC/IP]]&lt;br /&gt;
* [[Pinball Dreams]] (Preview)&lt;br /&gt;
* [[Legend of Steel]]&lt;br /&gt;
* [[Jarlac]]&lt;br /&gt;
* [https://www.forum64.de/index.php?thread/63639-k%C3%A4sek%C3%A4stchen-ein-neues-gsx-basiertes-spiel-f%C3%BCr-joyce-pcw-und-cpc/ Käsekästchen]&lt;br /&gt;
* [http://hampa.ch/pce/pics-cpm80.html CP/M]&lt;br /&gt;
* [[Bomb Jack Extra Sugar]]&lt;br /&gt;
* [[The Ghosts of Blackwood Manor]]&lt;br /&gt;
&lt;br /&gt;
* [[L'Abbaye des Morts]]&lt;br /&gt;
&lt;br /&gt;
=== Livingstone ===&lt;br /&gt;
&amp;quot;In its day they coded it with a Phillips PMDS for the Amstrad initially, being later ported to Spectrum, MSX 2 (one of the few European MSX titles that is not a direct port from Spectrum), Commodore 64, PC, and even the Atari ST. The Z80 version was made by themselves and the C64 version was outsourced to a specialized freelace programmer. The C64 version probably does not share the original z80 code at all.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== People ==&lt;br /&gt;
* [[Joshua]]&lt;br /&gt;
* [[Vanity]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Light_pen_driver&amp;diff=126820</id>
		<title>Light pen driver</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Light_pen_driver&amp;diff=126820"/>
				<updated>2025-08-21T07:30:32Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: label incomplete&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
;; Dissassembled and commented from MCPEN.BIN&lt;br /&gt;
&lt;br /&gt;
        org 09c40h&lt;br /&gt;
&lt;br /&gt;
sub_9c40h:&lt;br /&gt;
        call 0bd19h ;; mc wait flyback&lt;br /&gt;
        di&lt;br /&gt;
        ld bc,0f40eh ;; we want to select AY register 14&lt;br /&gt;
        out (c),c&lt;br /&gt;
        ld b,0f6h&lt;br /&gt;
        in a,(c)&lt;br /&gt;
        and 030h&lt;br /&gt;
        ld c,a&lt;br /&gt;
        or 0c0h   ;; AY control select register.&lt;br /&gt;
        out (c),a&lt;br /&gt;
        out (c),a ;; BUG. Should be out (c),c to be compatible with Plus.&lt;br /&gt;
        inc b&lt;br /&gt;
        ld a,092h &lt;br /&gt;
        out (c),a&lt;br /&gt;
        push bc&lt;br /&gt;
        ld bc,0f649h ;; AY control read from register and select keyboard line 9 (joystick)&lt;br /&gt;
        out (c),c&lt;br /&gt;
        out (c),c ;; BUG? No need to do this twice.&lt;br /&gt;
        ld b,0f4h&lt;br /&gt;
&lt;br /&gt;
;; loop reading joystick until input seen or timeout&lt;br /&gt;
&lt;br /&gt;
        ld hl,0fa66h ;; timeout is 0-FA66 because it counts up from this starting point.&lt;br /&gt;
                     ;; timeout is 59A loops.&lt;br /&gt;
l9c68:&lt;br /&gt;
        in a,(c)&lt;br /&gt;
        cp 0fdh  ;; 11111101. Bits are '1' if 'no press', but '0' if pressed. checking joy 0 down.&lt;br /&gt;
        jr z,l9c79&lt;br /&gt;
        inc l&lt;br /&gt;
        jr nz,l9c68&lt;br /&gt;
        inc h&lt;br /&gt;
        jr nz,l9c68&lt;br /&gt;
      &lt;br /&gt;
        ;; timeout. not detected&lt;br /&gt;
        ld hl,0ffffh&lt;br /&gt;
        jr l9cbdh&lt;br /&gt;
l9c79:&lt;br /&gt;
        ;; detected.&lt;br /&gt;
        ld de,00420h&lt;br /&gt;
        add hl,de&lt;br /&gt;
l9cbd:&lt;br /&gt;
        ld (data_0a410h),hl ;; detected 'position' or 'ffff' for not detected&lt;br /&gt;
        pop bc&lt;br /&gt;
        ld a,082h&lt;br /&gt;
        out (c),a&lt;br /&gt;
        dec b&lt;br /&gt;
        out (c),c ;; Set AY control inactive.&lt;br /&gt;
        ei&lt;br /&gt;
        ret&lt;br /&gt;
&lt;br /&gt;
sub_9c8ah:&lt;br /&gt;
        call sub_9da6h ;; screen to buffer&lt;br /&gt;
&lt;br /&gt;
        call sub_9ce4h&lt;br /&gt;
&lt;br /&gt;
        call sub_9db2h ;; buffer to screen&lt;br /&gt;
        ret&lt;br /&gt;
&lt;br /&gt;
;; HL = HL/DE&lt;br /&gt;
sub_9c94:&lt;br /&gt;
        ld a,h&lt;br /&gt;
        ld c,l&lt;br /&gt;
        ld b,010h ;; 16 bits.&lt;br /&gt;
        ld hl,00000h&lt;br /&gt;
l9cdbh:&lt;br /&gt;
        rl c&lt;br /&gt;
        rla&lt;br /&gt;
        adc hl,hl&lt;br /&gt;
        sbc hl,de&lt;br /&gt;
        jr nc,l9ce5h&lt;br /&gt;
        add hl,de&lt;br /&gt;
l9ce5h:&lt;br /&gt;
        ccf&lt;br /&gt;
        djnz l9cdbh&lt;br /&gt;
        rl c&lt;br /&gt;
        rla&lt;br /&gt;
        ld h,a&lt;br /&gt;
        ld l,c&lt;br /&gt;
        ret&lt;br /&gt;
&lt;br /&gt;
;; HL = HL * DE&lt;br /&gt;
sub_9caeh:&lt;br /&gt;
        ld a,l&lt;br /&gt;
        ld c,h&lt;br /&gt;
        ld b,010h ;; 16 bits&lt;br /&gt;
        ld hl,00000h&lt;br /&gt;
l9cf5h:&lt;br /&gt;
        srl c&lt;br /&gt;
        rra&lt;br /&gt;
        jr nc,l9cfbh&lt;br /&gt;
        add hl,de&lt;br /&gt;
l9cfbh:&lt;br /&gt;
        ex de,hl&lt;br /&gt;
        add hl,hl&lt;br /&gt;
        ex de,hl&lt;br /&gt;
        djnz l9cf5h&lt;br /&gt;
        ret&lt;br /&gt;
&lt;br /&gt;
sub_9cc1h:&lt;br /&gt;
        call sub_9c40h ;; detect&lt;br /&gt;
        ld a,0ffh&lt;br /&gt;
        cp h&lt;br /&gt;
        ret z&lt;br /&gt;
&lt;br /&gt;
        ;; detected.&lt;br /&gt;
        ld de,00002h&lt;br /&gt;
        call sub_9c94h ;; HL = HL/DE&lt;br /&gt;
        ld de,00064h&lt;br /&gt;
        call sub_9caeh ;; HL = HL*DE&lt;br /&gt;
        ld de,00084h&lt;br /&gt;
        call sub_9c94h ;; HL = HL/DE&lt;br /&gt;
        ex de,hl&lt;br /&gt;
        ld hl,0018fh&lt;br /&gt;
        sbc hl,de&lt;br /&gt;
        ld (data_0a410),hl&lt;br /&gt;
        ret&lt;br /&gt;
&lt;br /&gt;
sub_9ce4h:&lt;br /&gt;
        ld a,000h&lt;br /&gt;
        ld bc,01a1ah&lt;br /&gt;
        call 0bc32h ;; scr set ink&lt;br /&gt;
        call 0bc14h ;; scr clear&lt;br /&gt;
        ld a,001h&lt;br /&gt;
        call 0bbdeh ;; gra set pen&lt;br /&gt;
        call sub_9cc1h ;; get position&lt;br /&gt;
        ld a,0ffh&lt;br /&gt;
        cp h&lt;br /&gt;
        ret z&lt;br /&gt;
        ld de,0000ah&lt;br /&gt;
        and a&lt;br /&gt;
        sbc hl,de&lt;br /&gt;
        &lt;br /&gt;
        ;; BUG? This is jumping just after 0x021 of LD HL and then executing two nops before LD DE,0000h&lt;br /&gt;
        ;;jr nc,$+2&lt;br /&gt;
        jr nc,l9d06&lt;br /&gt;
        ld hl,00000h&lt;br /&gt;
l9d06:&lt;br /&gt;
        ld de,00000h&lt;br /&gt;
        call 0bbc0h ;; gra move absolute&lt;br /&gt;
        ld a,001h&lt;br /&gt;
        ld bc,01a1ah&lt;br /&gt;
        call 0bc32h ;; scr set ink&lt;br /&gt;
        ld a,000h&lt;br /&gt;
        ld bc,00000h&lt;br /&gt;
        call 0bc32h ;; scr set ink&lt;br /&gt;
        ld b,00ah&lt;br /&gt;
l9d1e:&lt;br /&gt;
        call 0bd19h ;; mc wait flyback&lt;br /&gt;
        &lt;br /&gt;
        ;; BUG? this is jumping back to the 0x0a in     LD B,0ah&lt;br /&gt;
        ;; djnz $-4&lt;br /&gt;
        djnz l9d1e&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        ld b,020h ;; number of lines&lt;br /&gt;
l9d65h:&lt;br /&gt;
        push bc&lt;br /&gt;
        call sub_9d35h ;; draw lines&lt;br /&gt;
        call sub_9c40h ;;detect&lt;br /&gt;
        pop bc&lt;br /&gt;
        ld a,0ffh&lt;br /&gt;
        cp h&lt;br /&gt;
        jr nz,l9d91h&lt;br /&gt;
        djnz l9d65h&lt;br /&gt;
        ret&lt;br /&gt;
&lt;br /&gt;
sub_9d35h:&lt;br /&gt;
        ld bc,(data_0a418)&lt;br /&gt;
l9d79h:&lt;br /&gt;
        push bc&lt;br /&gt;
        ld de,00000h&lt;br /&gt;
        ld hl,00014h&lt;br /&gt;
        call 0bbf9h ;; gra line relative&lt;br /&gt;
        ld de,(data_0a416)&lt;br /&gt;
        ld hl,0ffech&lt;br /&gt;
        call 0bbc3h ;; gra move relative&lt;br /&gt;
        pop bc&lt;br /&gt;
        djnz l9d79h&lt;br /&gt;
        ret&lt;br /&gt;
l9d91h:&lt;br /&gt;
        ld de,0ffech ;; -20&lt;br /&gt;
        ld hl,00000h&lt;br /&gt;
        call 0bbc3h  ;; gra move relative&lt;br /&gt;
l9d9ah:&lt;br /&gt;
        ld a,000h&lt;br /&gt;
        call 0bbdeh ;; gra set pen&lt;br /&gt;
        call sub_09d35h ;; lines&lt;br /&gt;
        ld a,001h&lt;br /&gt;
        call 0bbdeh ;; gra set pen&lt;br /&gt;
        ld de,0ffech ;; -20&lt;br /&gt;
        ld hl,00000h&lt;br /&gt;
        call 0bbc3h ;; gra move relative&lt;br /&gt;
        ld bc,(data_0a420)&lt;br /&gt;
l9db4h:&lt;br /&gt;
        push bc&lt;br /&gt;
        call sub_9cc1h ;; get position&lt;br /&gt;
        ld a,0ffh&lt;br /&gt;
        cp h&lt;br /&gt;
        jr nz,sub_9d9ah&lt;br /&gt;
        ld de,00000h&lt;br /&gt;
        ld hl,00014h&lt;br /&gt;
        call 0bbf9h ;; gra line relative&lt;br /&gt;
        ld de,(data_0a416)&lt;br /&gt;
        ld hl,0ffech ;; -20&lt;br /&gt;
        call 0bbc3h ;; gra move relative&lt;br /&gt;
        pop bc&lt;br /&gt;
        djnz l9db4h&lt;br /&gt;
        ld hl,0ffffh&lt;br /&gt;
        ld (data_0a410),hl&lt;br /&gt;
        ret&lt;br /&gt;
sub_9d9ah:&lt;br /&gt;
        pop bc&lt;br /&gt;
        ld (data_0a410),hl&lt;br /&gt;
        call 0bbc6h ;; gra ask cursor&lt;br /&gt;
        ld (data_0a412),de&lt;br /&gt;
        ret&lt;br /&gt;
&lt;br /&gt;
;; screen to buffer&lt;br /&gt;
;; c000-&amp;gt;5bfe length 3fd0&lt;br /&gt;
sub_9da6h:&lt;br /&gt;
        ld bc,03fd0h&lt;br /&gt;
        ld hl,0c000h&lt;br /&gt;
        ld de,05bfeh&lt;br /&gt;
        ldir&lt;br /&gt;
        ret&lt;br /&gt;
&lt;br /&gt;
;; buffer to screen&lt;br /&gt;
;; 5bfe-&amp;gt;c000 length 3fd0&lt;br /&gt;
&lt;br /&gt;
sub_9db2h:&lt;br /&gt;
        ld bc,03fd0h&lt;br /&gt;
        ld hl,05bfeh&lt;br /&gt;
        ld de,0c000h&lt;br /&gt;
        ldir&lt;br /&gt;
        ret&lt;br /&gt;
&lt;br /&gt;
sub_9dbeh:&lt;br /&gt;
        push hl&lt;br /&gt;
        push de&lt;br /&gt;
        call sub_09e08h&lt;br /&gt;
        ld (data_0a414),hl&lt;br /&gt;
        ld de,05398h&lt;br /&gt;
        ld b,004h&lt;br /&gt;
l9e0bh:&lt;br /&gt;
        push bc&lt;br /&gt;
        ld hl,(data_0a414)&lt;br /&gt;
        ld c,b&lt;br /&gt;
        ld b,000h&lt;br /&gt;
        inc hl&lt;br /&gt;
        and a&lt;br /&gt;
        sbc hl,bc&lt;br /&gt;
        ld b,00bh&lt;br /&gt;
l9e18h:&lt;br /&gt;
        ld a,(hl)&lt;br /&gt;
        ld (de),a&lt;br /&gt;
        inc de&lt;br /&gt;
        call 0bc29h ;; scr prev line&lt;br /&gt;
        djnz l9e18h&lt;br /&gt;
        pop bc&lt;br /&gt;
        djnz l9e0bh&lt;br /&gt;
        pop de&lt;br /&gt;
        pop hl&lt;br /&gt;
        ret&lt;br /&gt;
&lt;br /&gt;
sub_9de6h:&lt;br /&gt;
        push hl&lt;br /&gt;
        push de&lt;br /&gt;
        ld de,05398h&lt;br /&gt;
        ld b,004h&lt;br /&gt;
l9e2dh:&lt;br /&gt;
        push bc&lt;br /&gt;
        ld hl,(data_0a414)&lt;br /&gt;
        ld c,b&lt;br /&gt;
        ld b,000h&lt;br /&gt;
        inc hl&lt;br /&gt;
        and a&lt;br /&gt;
        sbc hl,bc&lt;br /&gt;
        ld b,00bh&lt;br /&gt;
l9e3ah:&lt;br /&gt;
        ld a,(de)&lt;br /&gt;
        ld (hl),a&lt;br /&gt;
        inc de&lt;br /&gt;
        call 0bc29h ;; scr prev line&lt;br /&gt;
        djnz l9e3ah&lt;br /&gt;
        pop bc&lt;br /&gt;
        djnz l9e2dh&lt;br /&gt;
        pop de&lt;br /&gt;
        pop hl&lt;br /&gt;
        ret&lt;br /&gt;
&lt;br /&gt;
sub_9e08h:&lt;br /&gt;
        push de&lt;br /&gt;
        ld de,00002h&lt;br /&gt;
        call sub_9c94h ;; HL = HL/DE&lt;br /&gt;
        pop de&lt;br /&gt;
        push hl&lt;br /&gt;
        ex de,hl&lt;br /&gt;
        ld de,(data_0a416)&lt;br /&gt;
        call sub_9c94h ;; HL = HL/DE&lt;br /&gt;
        ex de,hl&lt;br /&gt;
        pop hl&lt;br /&gt;
        call 0bc1dh ;; scr dot position&lt;br /&gt;
        ret&lt;br /&gt;
&lt;br /&gt;
sub_9e1fh:&lt;br /&gt;
        call sub_9c8ah&lt;br /&gt;
        ld hl,(data_0a418)&lt;br /&gt;
        ld (data_0a420h),hl&lt;br /&gt;
        ld hl,(data_0a410)&lt;br /&gt;
        ld a,0ffh&lt;br /&gt;
        cp h&lt;br /&gt;
        ret z&lt;br /&gt;
        ld (data_a41c),hl&lt;br /&gt;
        ld de,(data_0a412)&lt;br /&gt;
        ld (data_a41a),de&lt;br /&gt;
l9e7ah:&lt;br /&gt;
        ld de,0000ah&lt;br /&gt;
        and a&lt;br /&gt;
        sbc hl,de&lt;br /&gt;
        jr nc,l9e85h&lt;br /&gt;
        ld hl,00000h&lt;br /&gt;
l9e85h:&lt;br /&gt;
        push hl&lt;br /&gt;
        ld hl,(data_a412)&lt;br /&gt;
        add hl,de&lt;br /&gt;
        ex de,hl&lt;br /&gt;
        pop hl&lt;br /&gt;
        call sub_09dbeh&lt;br /&gt;
        call 0bbc0h ;; gra move absolute&lt;br /&gt;
sub_9e52h:&lt;br /&gt;
        call sub_09ed2h&lt;br /&gt;
        call sub_09de6h&lt;br /&gt;
        ld hl,(data_a410)&lt;br /&gt;
        ld a,0ffh&lt;br /&gt;
        cp h&lt;br /&gt;
        jr nz,l9ea9h&lt;br /&gt;
        ld a,02fh&lt;br /&gt;
        call 0bb1eh ;; km test key&lt;br /&gt;
        ret z&lt;br /&gt;
        jp sub_9e52h&lt;br /&gt;
&lt;br /&gt;
l9ea9h:&lt;br /&gt;
        call sub_09eb7h&lt;br /&gt;
        ld a,02fh&lt;br /&gt;
        call 0bb1eh ;; km test key&lt;br /&gt;
        ret z&lt;br /&gt;
        ld hl,(data_a41c)&lt;br /&gt;
        ld de,(data_a41a)&lt;br /&gt;
        call 0bbc0h ;; gra move absolute&lt;br /&gt;
        ld hl,(data_a410)&lt;br /&gt;
        ld de,(data_a412)&lt;br /&gt;
        ld a,(data_a41e)&lt;br /&gt;
        call 0bbdeh ;; gra set pen&lt;br /&gt;
        ld (data_a41c),hl&lt;br /&gt;
        ld (data_a41a),de&lt;br /&gt;
        call 0bbf6h ;; gra line absolute&lt;br /&gt;
        ld hl,(0a410h)&lt;br /&gt;
        jr l9e7ah&lt;br /&gt;
&lt;br /&gt;
sub_09e98h:&lt;br /&gt;
        ld de,0ffech&lt;br /&gt;
        ld hl,00000h&lt;br /&gt;
        call 0bbc3h ;; gra move relative&lt;br /&gt;
        ld a,001h&lt;br /&gt;
        call 0bbdeh ;; gra set pen&lt;br /&gt;
        call sub_09d35h&lt;br /&gt;
        ld a,000h&lt;br /&gt;
        call 0bbdeh ;; gra set pen&lt;br /&gt;
        call sub_9cc1h ;; get position&lt;br /&gt;
        ld a,0ffh&lt;br /&gt;
        cp h&lt;br /&gt;
        ret nz&lt;br /&gt;
        pop de&lt;br /&gt;
        ret&lt;br /&gt;
&lt;br /&gt;
sub_9eb7h:&lt;br /&gt;
        ld hl,(data_a41a)&lt;br /&gt;
        ld de,(data_a412)&lt;br /&gt;
        and a&lt;br /&gt;
        sbc hl,de&lt;br /&gt;
        ret z&lt;br /&gt;
        jp p,l9ecbh&lt;br /&gt;
&lt;br /&gt;
        ld hl,l9f15h&lt;br /&gt;
        jp l09eceh&lt;br /&gt;
&lt;br /&gt;
l9ecbh:&lt;br /&gt;
        ld hl,sub_9ed2h&lt;br /&gt;
l9eceh:&lt;br /&gt;
        ld (l9e52h+1),hl&lt;br /&gt;
        ret&lt;br /&gt;
&lt;br /&gt;
sub_9ed2h:&lt;br /&gt;
        call sub_9e98h&lt;br /&gt;
&lt;br /&gt;
        ld de,0ffech&lt;br /&gt;
        ld hl,00000h&lt;br /&gt;
        call 0bbc3h ;; gra move relative&lt;br /&gt;
        ld bc,(data_a420)&lt;br /&gt;
        push bc&lt;br /&gt;
        ld de,00000h&lt;br /&gt;
        ld hl,00014h&lt;br /&gt;
        call 0bbf9h ;; gra line relative&lt;br /&gt;
        call sub_9cc1h&lt;br /&gt;
        ld a,0ffh&lt;br /&gt;
        cp h&lt;br /&gt;
        jp nz,sub_9efeh&lt;br /&gt;
sub_9ef5h:&lt;br /&gt;
        ld hl,(data_a422)&lt;br /&gt;
        ld (data_a410),hl&lt;br /&gt;
        jp sub_9d9ah&lt;br /&gt;
&lt;br /&gt;
sub_9efeh:&lt;br /&gt;
        ld (data_a422),hl&lt;br /&gt;
        ld de,(data_a416)&lt;br /&gt;
        ld hl,0ffech&lt;br /&gt;
        call 0bbc3h ;; gra move relative&lt;br /&gt;
        pop bc&lt;br /&gt;
        djnz l9f22h&lt;br /&gt;
        ld hl,0ffffh&lt;br /&gt;
        ld (data_a410),hl&lt;br /&gt;
        ret&lt;br /&gt;
&lt;br /&gt;
sub_9f82h:&lt;br /&gt;
        call sub_9e98h&lt;br /&gt;
        ld bc,(data_a420)&lt;br /&gt;
l9f5ch:&lt;br /&gt;
        push bc&lt;br /&gt;
        ld de,00000h&lt;br /&gt;
        ld hl,00014h&lt;br /&gt;
        call 0bbf9h ;; gra line relative&lt;br /&gt;
        call sub_9cc1h&lt;br /&gt;
        ld a,0ffh&lt;br /&gt;
        cp h&lt;br /&gt;
        jp z,sub_9ef5h&lt;br /&gt;
&lt;br /&gt;
        ld (data_0a422),hl&lt;br /&gt;
        ld de,(data_a416)&lt;br /&gt;
        ld hl,00000h&lt;br /&gt;
        and a&lt;br /&gt;
        sbc hl,de&lt;br /&gt;
        push hl&lt;br /&gt;
        pop de&lt;br /&gt;
        ld hl,0ffech&lt;br /&gt;
        call 0bbc3h ;; gra move relative&lt;br /&gt;
        pop bc&lt;br /&gt;
        djnz l9f5ch&lt;br /&gt;
        ld hl,00000h&lt;br /&gt;
        ld de,00014h&lt;br /&gt;
        call 0bbc3h ;; gra move relative&lt;br /&gt;
        jp l9f0eh&lt;br /&gt;
&lt;br /&gt;
        db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0&lt;br /&gt;
        db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0&lt;br /&gt;
        db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0&lt;br /&gt;
        db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0&lt;br /&gt;
        db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0&lt;br /&gt;
        db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0&lt;br /&gt;
        db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0&lt;br /&gt;
&lt;br /&gt;
;; screen dump to printer.&lt;br /&gt;
sub_0a028h:&lt;br /&gt;
        ld a,013h ;; INC instruction&lt;br /&gt;
        ld (la124),a&lt;br /&gt;
        ld a,00eh&lt;br /&gt;
        ld (la0e1+1),a&lt;br /&gt;
        ld a,(data_a133)&lt;br /&gt;
        bit 1,a&lt;br /&gt;
        jr z,la083h&lt;br /&gt;
        ld a,000h  ;; NOP instruction&lt;br /&gt;
        ld (la124),a&lt;br /&gt;
        ld a,007h&lt;br /&gt;
        ld (la0e1+1),a&lt;br /&gt;
la083h:&lt;br /&gt;
        call 0bd28h ;; mc reset printer&lt;br /&gt;
&lt;br /&gt;
        ld de,00000h&lt;br /&gt;
        ld hl,00000h&lt;br /&gt;
        ld (data_a12d),de&lt;br /&gt;
sub_a050h:&lt;br /&gt;
        ld a,000h&lt;br /&gt;
        ld (data_a12c),a ;; accumulated pixels.&lt;br /&gt;
&lt;br /&gt;
        ld de,(data_a12d)&lt;br /&gt;
        call sub_a10dh ;; store current graphics position&lt;br /&gt;
&lt;br /&gt;
        call 0bbf0h ;; gra test absolute&lt;br /&gt;
        ld de,00001h&lt;br /&gt;
        call sub_a11dh ;; get pixel&lt;br /&gt;
        ld de,00002h&lt;br /&gt;
        call sub_a11dh ;; get pixel&lt;br /&gt;
        ld de,00004h&lt;br /&gt;
        call sub_a11dh ;; get pixel&lt;br /&gt;
        ld de,00008h&lt;br /&gt;
        call sub_a11dh ;; get pixel&lt;br /&gt;
        ld de,00010h&lt;br /&gt;
        call sub_a11dh ;; get pixel&lt;br /&gt;
        ld de,00020h&lt;br /&gt;
        call sub_a11dh ;; get pixel&lt;br /&gt;
        ld de,00040h&lt;br /&gt;
        call sub_a0ffh ;; get pixel&lt;br /&gt;
la0c9h:&lt;br /&gt;
        call 0bd2eh ;; mc busy printer&lt;br /&gt;
        jr c,la0c9h&lt;br /&gt;
        call 0bd28h ;; mc reset printer&lt;br /&gt;
        ld a,01bh    ;; ESC&lt;br /&gt;
        call 0bd2bh ;; mc print char&lt;br /&gt;
        ld a,04bh   ;; K&lt;br /&gt;
        call 0bd2bh ;; mc print char&lt;br /&gt;
        ld a,000h   ;; number of columns low byte&lt;br /&gt;
        call 0bd2bh ;; mc print char&lt;br /&gt;
        ld a,(data_a133)&lt;br /&gt;
        bit 0,a&lt;br /&gt;
        jr z,la0b4h&lt;br /&gt;
        ld a,002h   ;; number of columns high byte?&lt;br /&gt;
        call 0bd2bh ;; mc print char&lt;br /&gt;
&lt;br /&gt;
        ld a,(data_a12c) ;; pixel data&lt;br /&gt;
        call 0bd2bh ;; mc print char&lt;br /&gt;
        jr la0f9h&lt;br /&gt;
la0b4h:&lt;br /&gt;
        ld a,001h   ;; number of columns high byte?&lt;br /&gt;
        call 0bd2bh ;; mc print char&lt;br /&gt;
la0f9h:&lt;br /&gt;
        ld a,(data_a12c) ;; pixel data&lt;br /&gt;
        call 0bd2bh ;; mc print char&lt;br /&gt;
&lt;br /&gt;
        call sub_a115h&lt;br /&gt;
        inc hl&lt;br /&gt;
        inc hl&lt;br /&gt;
        call sub_a10dh&lt;br /&gt;
        ld a,h&lt;br /&gt;
        cp 001h&lt;br /&gt;
        jp nz,sub_a050h&lt;br /&gt;
        ld a,l&lt;br /&gt;
        cp 090h&lt;br /&gt;
        jp nz,sub_a050h&lt;br /&gt;
        ld a,00ah   ;; next line&lt;br /&gt;
        call 0bd2bh ;; mc print char&lt;br /&gt;
&lt;br /&gt;
        ld a,02fh  ;; 47 - space&lt;br /&gt;
        call 0bb1eh ;; km test key&lt;br /&gt;
        ret nz&lt;br /&gt;
        ld hl,(data_a12d)&lt;br /&gt;
la0e1:&lt;br /&gt;
        ld de,0000eh&lt;br /&gt;
        add hl,de&lt;br /&gt;
        ld (data_a12d),hl&lt;br /&gt;
        ld hl,00000h&lt;br /&gt;
        call sub_a10dh&lt;br /&gt;
        ld de,(data_a12d)&lt;br /&gt;
        ld a,d&lt;br /&gt;
        cp 002h&lt;br /&gt;
        jp nz,sub_a050h&lt;br /&gt;
        ld a,e&lt;br /&gt;
        cp 084h&lt;br /&gt;
        jp nz,sub_a050h&lt;br /&gt;
        ret&lt;br /&gt;
&lt;br /&gt;
;; accumulate pixels&lt;br /&gt;
sub_a0ffh:&lt;br /&gt;
        ld b,a&lt;br /&gt;
&lt;br /&gt;
        call 0bb99h ;; txt get paper&lt;br /&gt;
        cp b        ;; was the colour read the same as the paper?&lt;br /&gt;
        ret z&lt;br /&gt;
&lt;br /&gt;
        ;; any pixel which is not the same as the paper will be considered foreground&lt;br /&gt;
        ;; and the printer will draw a dot. Any pixel the same as the paper will&lt;br /&gt;
        ;; be considered background and no dot is drawn by the printer.&lt;br /&gt;
&lt;br /&gt;
        ;; pixel is set to foreground. accumulate it into the pixel data so far&lt;br /&gt;
        ld hl,(data_a12c)&lt;br /&gt;
        add hl,de&lt;br /&gt;
        ld (data_a12c),hl&lt;br /&gt;
        ret&lt;br /&gt;
&lt;br /&gt;
sub_a10dh:&lt;br /&gt;
        ld (data_a12f),hl&lt;br /&gt;
        ld (data_a131),de&lt;br /&gt;
        ret&lt;br /&gt;
&lt;br /&gt;
sub_a115h:&lt;br /&gt;
        ld hl,(data_a12f)&lt;br /&gt;
        ld de,(data_a131)&lt;br /&gt;
        ret&lt;br /&gt;
&lt;br /&gt;
sub_a11dh:&lt;br /&gt;
        call sub_a0ffh ;; accumulate a pixel for printing.&lt;br /&gt;
        call sub_a115h ;; get current X/Y graphics position&lt;br /&gt;
        inc de         ;; increment X to next pixel accross screen.&lt;br /&gt;
la124:&lt;br /&gt;
        inc de&lt;br /&gt;
        call sub_a10dh ;; set current X/Y graphics position&lt;br /&gt;
        call 0bbf0h ;; gra test absolute&lt;br /&gt;
        ret&lt;br /&gt;
data_a12c:&lt;br /&gt;
        db 00h&lt;br /&gt;
data_a12d:&lt;br /&gt;
        db 84h,02h&lt;br /&gt;
data_a12f:&lt;br /&gt;
        db 00h,00h&lt;br /&gt;
data_a131:&lt;br /&gt;
        dw 000eh&lt;br /&gt;
data_a133: &lt;br /&gt;
        db 00h&lt;br /&gt;
data_a134:&lt;br /&gt;
        db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0&lt;br /&gt;
&lt;br /&gt;
sub_a154h:&lt;br /&gt;
        call 0bc11h ;; scr get mode&lt;br /&gt;
        cp 000h&lt;br /&gt;
        jr nz,la19dh&lt;br /&gt;
        ld b,004h&lt;br /&gt;
la19dh:&lt;br /&gt;
        cp 001h&lt;br /&gt;
        jr nz,la1a3h&lt;br /&gt;
        ld b,002h&lt;br /&gt;
la1a3h:&lt;br /&gt;
        cp 002h&lt;br /&gt;
        jr nz,la1a9h&lt;br /&gt;
        ld b,001h&lt;br /&gt;
la1a9h:&lt;br /&gt;
        ld a,b&lt;br /&gt;
la1aah:&lt;br /&gt;
        ld (data_a254),a&lt;br /&gt;
        call 0bbc6h ;; gra ask cursor&lt;br /&gt;
        ld (data_a250),hl&lt;br /&gt;
        ld (data_a250+2),de&lt;br /&gt;
la1b7h:&lt;br /&gt;
        call 0bb99h ;; txt get paper&lt;br /&gt;
        ld (pen_cmp+1),a&lt;br /&gt;
        ld bc,00000h&lt;br /&gt;
        ld (data_a24c),bc&lt;br /&gt;
        ld (data_a24e),bc&lt;br /&gt;
        call sub_a210&lt;br /&gt;
la18bh:&lt;br /&gt;
        ld a,02fh  ;; 47 - space&lt;br /&gt;
        call 0bb1eh ;; km test key&lt;br /&gt;
        ret nz&lt;br /&gt;
        ld hl,(data_a24e)&lt;br /&gt;
        inc hl&lt;br /&gt;
        inc hl&lt;br /&gt;
        ld a,004h&lt;br /&gt;
        cp h&lt;br /&gt;
        jr nz,la1deh&lt;br /&gt;
        ld hl,00000h&lt;br /&gt;
la1deh:&lt;br /&gt;
        ld (data_a24e),hl&lt;br /&gt;
        ld bc,05398h&lt;br /&gt;
        add hl,bc&lt;br /&gt;
        ld (buffer_addr3+2),hl ;; +2 to skip ED,53&lt;br /&gt;
buffer_addr3:&lt;br /&gt;
        ld de,(055e0h)&lt;br /&gt;
        ld hl,(data_a24e)&lt;br /&gt;
sub_a1efh:&lt;br /&gt;
        ld bc,057e4h&lt;br /&gt;
        add hl,bc&lt;br /&gt;
        ld (buffer_addr4+1),hl ;; +1 to skip 22&lt;br /&gt;
buffer_addr4:&lt;br /&gt;
        ld hl,(05a2ch)&lt;br /&gt;
        ld (data_a257),hl&lt;br /&gt;
        ld (data_a255),de&lt;br /&gt;
        ld bc,00000h&lt;br /&gt;
        ld a,(data_a254)&lt;br /&gt;
        ld c,a&lt;br /&gt;
        ex de,hl&lt;br /&gt;
        add hl,bc&lt;br /&gt;
        ex de,hl&lt;br /&gt;
        call sub_a1efh&lt;br /&gt;
        and a&lt;br /&gt;
        ex de,hl&lt;br /&gt;
        sbc hl,bc&lt;br /&gt;
        ex de,hl&lt;br /&gt;
        call sub_a1efh&lt;br /&gt;
        inc hl&lt;br /&gt;
        inc hl&lt;br /&gt;
        call sub_a1efh&lt;br /&gt;
        dec hl&lt;br /&gt;
        dec hl&lt;br /&gt;
        call sub_a1efh&lt;br /&gt;
        ld hl,(data_a24e)&lt;br /&gt;
        ld de,(data_a24c)&lt;br /&gt;
        inc hl&lt;br /&gt;
        inc hl&lt;br /&gt;
        and a&lt;br /&gt;
        sbc hl,de&lt;br /&gt;
        ret z&lt;br /&gt;
        jp la18bh&lt;br /&gt;
&lt;br /&gt;
sub_a1efh:&lt;br /&gt;
        push de&lt;br /&gt;
        push hl&lt;br /&gt;
        push bc&lt;br /&gt;
        call 0bbf0h ;; gra test absolute&lt;br /&gt;
        pop bc&lt;br /&gt;
        pop hl&lt;br /&gt;
        pop de&lt;br /&gt;
pen_cmp:&lt;br /&gt;
        cp 000h&lt;br /&gt;
        jr nz,la248h&lt;br /&gt;
        ld (data_a250),hl&lt;br /&gt;
        ld (data_a252),de&lt;br /&gt;
        push bc&lt;br /&gt;
        call sub_0a210h&lt;br /&gt;
        pop bc&lt;br /&gt;
la248h:&lt;br /&gt;
        ld hl,(data_a257)&lt;br /&gt;
        ld de,(data_a255)&lt;br /&gt;
        ret&lt;br /&gt;
sub_a210:&lt;br /&gt;
        ld hl,(data_a250)&lt;br /&gt;
        ld de,(data_a252)&lt;br /&gt;
        call 0bbeah ;; gra plot absolute&lt;br /&gt;
        ld hl,(data_a24c)&lt;br /&gt;
        inc hl&lt;br /&gt;
        inc hl&lt;br /&gt;
        ld a,004h&lt;br /&gt;
        cp h&lt;br /&gt;
        jr nz,la267h&lt;br /&gt;
        ld hl,00000h&lt;br /&gt;
la267h:&lt;br /&gt;
        ld (data_a24c),hl&lt;br /&gt;
        ld bc,05398h&lt;br /&gt;
        add hl,bc&lt;br /&gt;
        ld de,(data_a252)&lt;br /&gt;
        ld (buffer_addr1+2),hl ;; +2 to skip ED, 53&lt;br /&gt;
buffer_addr1:&lt;br /&gt;
        ld (05648h),de&lt;br /&gt;
        ld hl,(data_a24c)&lt;br /&gt;
        ld bc,057e4h&lt;br /&gt;
        add hl,bc&lt;br /&gt;
        ld de,(data_a250)&lt;br /&gt;
        ld (buffer_addr+2),hl ;; +2 to skip ED, 53&lt;br /&gt;
buffer_addr2:&lt;br /&gt;
        ld (05a94h),de&lt;br /&gt;
        ret&lt;br /&gt;
&lt;br /&gt;
;;Data area&lt;br /&gt;
data_a24c:&lt;br /&gt;
        defw 02b0h&lt;br /&gt;
data_a24e:&lt;br /&gt;
        defw 0248h&lt;br /&gt;
data_a250:&lt;br /&gt;
        defw 0beh&lt;br /&gt;
data_a252:&lt;br /&gt;
        defw 0120h&lt;br /&gt;
data_a254:&lt;br /&gt;
        defb 04h&lt;br /&gt;
data_a255:&lt;br /&gt;
        defw 0120h&lt;br /&gt;
data_a257:&lt;br /&gt;
        defw 0bch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;; detected light pen position&lt;br /&gt;
data_a410:&lt;br /&gt;
        defw 0&lt;br /&gt;
data_a412:&lt;br /&gt;
        defw 0&lt;br /&gt;
;; memory/buffer address&lt;br /&gt;
data_a414:&lt;br /&gt;
        defw 0&lt;br /&gt;
data_a416:&lt;br /&gt;
        defw 0&lt;br /&gt;
data_a418:&lt;br /&gt;
        defw 0&lt;br /&gt;
&lt;br /&gt;
;; gra x,y position&lt;br /&gt;
data_a41a:&lt;br /&gt;
        defw 0&lt;br /&gt;
data_a41c: &lt;br /&gt;
        defw 0&lt;br /&gt;
;; graphics pen&lt;br /&gt;
data_a41e:&lt;br /&gt;
        defb 0&lt;br /&gt;
        defb 0&lt;br /&gt;
data_a420:&lt;br /&gt;
        defw 0&lt;br /&gt;
        end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Source code]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=The_Mojon_Twins&amp;diff=126792</id>
		<title>The Mojon Twins</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=The_Mojon_Twins&amp;diff=126792"/>
				<updated>2025-08-06T18:42:25Z</updated>
		
		<summary type="html">&lt;p&gt;Polluks: /* &amp;quot;The Mojon Engine&amp;quot; */ El Hobbit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:TMT.png|right]]&lt;br /&gt;
'''The Mojon Twins''' is a Spanish team of game developers since 2007.&lt;br /&gt;
&lt;br /&gt;
Perhaps recently one of the most active team still releasing games on Amstrad CPC.&lt;br /&gt;
&lt;br /&gt;
Oh, and they should put an english version on their site. ;-p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ports and Crossdev==&lt;br /&gt;
&lt;br /&gt;
[[The Mojon Twins]] are a company who release on multiple Z80 based machines.&lt;br /&gt;
&lt;br /&gt;
This features [[MSX]] computers, [[ZX Spectrum]] computers and of course Amstrad CPC computers, all of them used to be quite popular in Spain in the 80's.&lt;br /&gt;
&lt;br /&gt;
As a method they developed some Game engines in C language that can be easily ported on most of those machines with only few changes (for example [[Cprslib]] by Artaburu) to manage the different video issues.&lt;br /&gt;
&lt;br /&gt;
These games can be seen as some kind of [[Manic Miner]] like. They also put a lot of sexy women in their games...&lt;br /&gt;
&lt;br /&gt;
==Productions==&lt;br /&gt;
* [https://www.bitmapsoft.co.uk/product/chronicles-of-nanako/ Chronicles of Nanako] (remastered)&lt;br /&gt;
** [[Nanako Descends to Hell]], 2009&lt;br /&gt;
** [[Nanako in Classic Japanese Monster Castle]], 2007 (using [[CPCRSlib]])&lt;br /&gt;
* [[Cheril of the Bosque]], 2010&lt;br /&gt;
* [https://www.cpc-power.com/index.php?page=detail&amp;amp;num=10069 Uwol quest for money], 2009&lt;br /&gt;
* [[Platform medley]]&lt;br /&gt;
* Mariano the Dragon, 2008&lt;br /&gt;
* [[Phantomas Tales #1]], 2009&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;The Mojon Engine&amp;quot;===&lt;br /&gt;
* Mark 1 in 2013&lt;br /&gt;
* Mark 2 in 2014&lt;br /&gt;
* Mark 3 in 2017&lt;br /&gt;
The mscmk1 (Mojontwins Script Compiler for MK1) is written in FreeBASIC.&lt;br /&gt;
* Ramiro el vampiro&lt;br /&gt;
** [[Ramiro III]], 2022&lt;br /&gt;
** [[Ramiro IV]], 2021&lt;br /&gt;
* [[Red Planet]], 2022 ''MK1''&lt;br /&gt;
* [[Jet Paco]], 2020&lt;br /&gt;
* [[Sgt. Helmet]], 2020&lt;br /&gt;
* [[Cheman]], 2019 ''MK3''&lt;br /&gt;
* [[Cheril in the Bosque en otro Bosque]], 2018 ''MK3''&lt;br /&gt;
* [[Lala The Magical Prologue]], 2010, 2022 ''MK1 La Churrera''&lt;br /&gt;
* Sir Ababol&lt;br /&gt;
** [[Sir Ababol]] NES-OM Edition, 2020&lt;br /&gt;
** [[Sir Ababol II]], 2013&lt;br /&gt;
** [[Sir Ababol]], 2010&lt;br /&gt;
* [[Uwol 2]], 2011&lt;br /&gt;
* [[Tenebra]], 2022&lt;br /&gt;
* [[Tenebra 2]], 2023&lt;br /&gt;
* Pestecé, 2023 ''MK1''&lt;br /&gt;
* Master Piece, 2025 ''MK1''&lt;br /&gt;
* Phantomas en el Museo, 2025 ''MK1''&lt;br /&gt;
* El Hobbit, 2025 ''MK1v4''&lt;br /&gt;
&lt;br /&gt;
==Link==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mojontwins.com/juegos_mojonos/ Their site in Spanish]&lt;br /&gt;
** [https://github.com/mojontwins?tab=repositories&amp;amp;q=CPC Repos]&lt;br /&gt;
** [https://zxart.ee/eng/groups/t/the-mojon-twins/ ZX-Art]&lt;br /&gt;
** [https://computeremuzone.com/amstrad/compania/mojon+twins&amp;amp;l=en Games list]&lt;br /&gt;
* [https://www.mojontwins.com/juegos_mojonos/la-churrera-english/ La Churrera]&lt;br /&gt;
** https://mojontwins.itch.io/lala-prologue-cpc-2022&lt;br /&gt;
** https://github.com/salvakantero/RedPlanet_CPC&lt;br /&gt;
&lt;br /&gt;
[[Category:CPC scene members]] [[Category:Stub]] [[Category:Active CPC Game Developers]] [[Category:Modern Amstrad Software Publishers]] [[Category:CrossDev]]&lt;/div&gt;</summary>
		<author><name>Polluks</name></author>	</entry>

	</feed>