Porting easy/hard of diffrent micro computers.

The place for codemasters or beginners to talk about programming any language for the Spectrum.
Post Reply
Nomad
Manic Miner
Posts: 600
Joined: Thu Dec 28, 2017 12:38 pm

Porting easy/hard of diffrent micro computers.

Post by Nomad »

Sure there are many systems that share a common z80 cpu, but I was curious. Assuming you are starting with a 48k spectrum assembly program - that used graphics and sound. What would be the easiest system to port to? and the most difficult?

I guess it depends on what the program actually does but I would assume it was harder to port to some systems than others because of the way the hardware on that target was setup vs the spectrum.
User avatar
Rorthron
Dynamite Dan
Posts: 1644
Joined: Sun Nov 12, 2017 10:35 pm

Re: Porting easy/hard of diffrent micro computers.

Post by Rorthron »

The Amstrad CPC was apparently pretty straightforward: Z80 processor, a similar graphics mode, AY sound chip.

I think other platforms, like the C64 or BBC, required full rewrites. They had very different silicon and graphics modes.
Hikaru
Microbot
Posts: 100
Joined: Mon Nov 13, 2017 1:42 pm
Location: Russia
Contact:

Re: Porting easy/hard of diffrent micro computers.

Post by Hikaru »

Just my impression but the easiest one might be Enterprise 128. It uses a Z80 and what seems to be a very flexible screen configuration system, apparently allowing it to emulate Speccy screen modes to a good extent.

Hardest systems I'm sure should include ZX80/ZX81. 1Kb of memory and an explanation-defying method of working with the screen that uses a mixture of ROM calls, I and R registers, and black magic among other things. :lol:
Inactive account
Nomad
Manic Miner
Posts: 600
Joined: Thu Dec 28, 2017 12:38 pm

Re: Porting easy/hard of diffrent micro computers.

Post by Nomad »

Hikaru wrote: Tue Jan 02, 2018 5:53 am Just my impression but the easiest one might be Enterprise 128. It uses a Z80 and what seems to be a very flexible screen configuration system, apparently allowing it to emulate Speccy screen modes to a good extent.

Hardest systems I'm sure should include ZX80/ZX81. 1Kb of memory and an explanation-defying method of working with the screen that uses a mixture of ROM calls, I and R registers, and black magic among other things. :lol:
I had never heard of the Enterprise 128, but 4mb of memory would give a lot of options for very large games... Not going to lie - I got the documentation to read later :D cheers! The ZX80 I can't handle the screen bouncing every time you hit the keyboard.
User avatar
Morpheus
Microbot
Posts: 124
Joined: Thu Nov 16, 2017 4:18 pm
Location: Hurworth-On-Tees, UK
Contact:

Re: Porting easy/hard of diffrent micro computers.

Post by Morpheus »

It would seem that the Amstrad CPC range and MSX were easy to port over from the Spectrum. You will often read about or hear in reviews of games on those systems that they were straight ports.
They had varying success with them as apparently the MSX games ported from the Spectrum were notorious for slowdown and it also affected the CPC as well. This tended to happen when the games were not optimised for the target platform and were simple cash grabs.
There are some reports of Spectrum conversions on the Amstrad being completed in a week.

I think for the 6502 machines the C64 & Atari 800XL/65XE were similar enough for games to be cross developed but that was more in the USA where most users had a 1541 or 1050 Floppy Drive. :geek:
R Tape loading error, 0:1
Nomad
Manic Miner
Posts: 600
Joined: Thu Dec 28, 2017 12:38 pm

Re: Porting easy/hard of diffrent micro computers.

Post by Nomad »

Well the Beeb had the z80 co-processor, but that was expensive and I didn't know anyone that owned one. I think they are pretty rare now. But that sounds like a great way to develop specy titles back in the day.

It was watching the 8-bit guy talking about porting his game from the vic-20 to the c64 like it was no big deal that got me thinking perhaps there was a similar situation with the z80 machines.
Ralf
Rick Dangerous
Posts: 2279
Joined: Mon Nov 13, 2017 11:59 am
Location: Poland

Re: Porting easy/hard of diffrent micro computers.

Post by Ralf »

Amstrad CPC and MSX and Enterprise would be the easiest, which doesn't mean easy, you need to be good at assembly programming anyway ;)
You should remember however that a direct port from Spectrum won't use 100% of these machine possibilities. Amstrad and MSX users often complained about crappy, lazy Spectrum ports ;)

Middle difficulty would be Game Boy console. It also has Z80 CPU but a smaller resolution would require rewriting not only display functions but also some game logic.

Machines with different CPU like C64 or 8-bit Atari would require writing all code from scratch, you could only transfer some data.

In case of machines much inferior than Spectrum like ZX81 or Jupiter Ace a game port could turn out to be impossible.
AndyC
Dynamite Dan
Posts: 1388
Joined: Mon Nov 13, 2017 5:12 am

Re: Porting easy/hard of diffrent micro computers.

Post by AndyC »

Vic-20 games were typically BASIC efforts and i don't think conmodore actually changed the BASIC between machines, so it would've been little more than fiddling a few POKES for the most part.

The Z80 machines could probably be ported between relatively quickly because the Speccy didn't really have much in the way of special hardware, so you really just needed to re write keyboard and video code. But that leads to poor performance when code has been optimized for the Speccy contention model. And occasional glitches because those machines didn't have attributes (note how CPC R-Type graphics "pop in" on the right hand side, where they would normally be clipped by black-on-black colours)
AndyC
Dynamite Dan
Posts: 1388
Joined: Mon Nov 13, 2017 5:12 am

Re: Porting easy/hard of diffrent micro computers.

Post by AndyC »

The Gameboy CPU isn't actually a Z80, so moving code between them may be less straightforward (depending on what instructions were used)
dfzx
Manic Miner
Posts: 673
Joined: Mon Nov 13, 2017 6:55 pm
Location: New Forest, UK
Contact:

Re: Porting easy/hard of diffrent micro computers.

Post by dfzx »

I don't think a whole lot of Spectrum software was written with what might be termed modern practises which simplify the porting effort. Modern games use abstraction and internally layered APIs to provide services such as video, sounds and I/O. You rewrite those layers, keep the API the same, and the game just works on a different console or whatever.

All that's good practise, but it takes memory and CPU performance, which are things the Spectrum and its ilk didn't have in abundance. Games which were coded with a bit of discipline and aforethought might port reasonably easily. Most were probably hammered together and changing bits and pieces of those would probably involve the claw end of the hammer quite a lot. :)
Derek Fountain, author of the ZX Spectrum C Programmer's Getting Started Guide and various open source games, hardware and other projects, including an IF1 and ZX Microdrive emulator.
Ralf
Rick Dangerous
Posts: 2279
Joined: Mon Nov 13, 2017 11:59 am
Location: Poland

Re: Porting easy/hard of diffrent micro computers.

Post by Ralf »

All that's good practise, but it takes memory and CPU performanc
Yes, "good practices" are often inefficient on weak machines. You often mix dealing with graphics, sound, logic and calculations in the same code. Try doing it "correctly", separated into modules and you'll discover that your program is running 50% slower or so.

And the user doesn't care in most cases if you wrote a pretty code or not. He doesn't see it. All he sees is performance.
Nomad
Manic Miner
Posts: 600
Joined: Thu Dec 28, 2017 12:38 pm

Re: Porting easy/hard of diffrent micro computers.

Post by Nomad »

Infocom were able to use there z machine to cross compile but they designed it to be that way from the jump start. And one could argue its much easier to do with a text adventure than say a graphics system. But it was still impressive for the time.
Post Reply