Page 1 of 1

Porting from one platform to another

Posted: Tue Nov 30, 2004 2:59 pm
by Kon-Tiki
Got a couple of questions 'bout this. I want to port The Newzealand Story to PC (Dos or Windows, depends on what is easiest) and want to know what I need to know to do this, and what is needed to do this. Also, I want to know which platform is easiest to do this from... got the choice out of Atari ST, Amiga, C64 and ZX Spectrum (assuming Nes, Genesis and Sega master System are harder to port)

Re:Porting from one platform to another

Posted: Wed Dec 01, 2004 2:45 am
by Solar
Existing software uses a given "source" API, which is not available on the target system. So you have to provide a mapping from the "source" API to the "destination" API.

You have to find out what the best "level" to do this is - creating an "emulation lib" outside the app that does the mapping, or modify the application sources to access the other API.

As much as I like the platform, I'd advise against the Amiga sources. The Amiga had a very special hardware, and if the Amiga version was properly adapted to it, it will be next to impossible to port. On the other hand, of the platforms quoted the Amiga has the strongest graphics / sound / multitasking abilities, so the Amiga version might be the "richest".

The C64 was very limited in its features; I don't know the ZX Spectrum, but as for return-on-investment considerations I'd go for the Atari version as source, unless you are an Amiga grok.

Re:Porting from one platform to another

Posted: Wed Dec 01, 2004 9:18 am
by Kon-Tiki
I'll look into Atari then. What's the difference between creating an "emulation" lib and editing the target API's source itself? I don't want to make an emulator... just want it to run on old Dos computers, so got to make sure that I know what is what ;)

Re:Porting from one platform to another

Posted: Thu Dec 02, 2004 3:50 am
by Solar
Kon-Tiki wrote: What's the difference between creating an "emulation" lib and editing the target API's source itself?
Writing an emulation lib will require you to get all the original platform's features right, which is a *lot* of work. But in the end, you can use that emu lib as basis for the next project.

If you edit the application itself, that's probably easier done, but you can't re-use that code in the next project.

Re:Porting from one platform to another

Posted: Thu Dec 02, 2004 9:03 am
by Kon-Tiki
So an emulation lib is a one-time job, while editing the game itself requires me to do that again and again.

Both will run the game by starting its executable, just like normal Dos-games, right?

Re:Porting from one platform to another

Posted: Fri Dec 03, 2004 4:24 am
by Solar
If you edit the game itself, of course you end up with a recompiled executable. With the emulation lib, that lib is linked into the recompiled executable, so again you have a single exe.

Note that this is just the big picture. You might end up with incompatible graphics formats, timing problems, and countless other issues. Porting isn't easy, porting games even less as they tended to bang the hardware of those old systems pretty hard.

Re:Porting from one platform to another

Posted: Fri Dec 03, 2004 10:08 am
by Kon-Tiki
In other words: I'll learn more from it than I first thought ;D

The emulation lib's the easiest way, right? What do I need to learn for that?

Re:Porting from one platform to another

Posted: Sun Dec 05, 2004 5:16 am
by Solar (lazy)
You need a solid understanding of both the original system (i.e. Atari HW / API) and the target (i.e. DOS / Windows API), of course.

I'm still not really sure what you're trying to accomplish, though. You are aware that there are full-fledged emulators available for all the "source" systems you mentioned?

If all you want is playing the game on a PC, UAE et al. are much less work... ?:-)

Re:Porting from one platform to another

Posted: Sun Dec 05, 2004 6:12 am
by Kon-Tiki
I know of the emulators and've worked with them, but it's not for just being able to play these games that I'm trying to do this. It's to get them to be playable for people who don't want to use emulators. That and out of interest, of course.

Re:Porting from one platform to another

Posted: Tue Dec 07, 2004 2:14 pm
by Kon-Tiki
Ok, found some hardware information. Now I'm only novice at electronics, but my bro's able to figure it out and probably'll be able to translate it into comprehensible info for me.

This what I need for hardware info on it?

Re:Porting from one platform to another

Posted: Wed Dec 08, 2004 2:02 am
by Solar
Erm... that's a page on how to build your own ZX80 / ZX81!?!

What you need is:

* sources for a given platform;
* good knowledge on that platform's API (so you know what "ReadChunkyPixel( int, int, int, int )" actually does);
* good knowledge on the target platform API (so you get the idea that ReadChunkyPixel( int, int, int, int ) could be replaced with "ReadRGB( int, int, int )" after doing foo() on the fourth int value)),

As none of your source platforms includes the ZX80, that website won't be of much help to you.

Re:Porting from one platform to another

Posted: Wed Dec 08, 2004 7:34 am
by Kon-Tiki
Hmmm ZX Spectrum's not ZX80 then? I'll keep on looking.