Porting from one platform to another
Porting from one platform to another
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
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.
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.
Every good solution is obvious once you've found it.
Re:Porting from one platform to another
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
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.Kon-Tiki wrote: What's the difference between creating an "emulation" lib and editing the target API's source itself?
If you edit the application itself, that's probably easier done, but you can't re-use that code in the next project.
Every good solution is obvious once you've found it.
Re:Porting from one platform to another
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?
Both will run the game by starting its executable, just like normal Dos-games, right?
Re:Porting from one platform to another
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.
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.
Every good solution is obvious once you've found it.
Re:Porting from one platform to another
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?
The emulation lib's the easiest way, right? What do I need to learn for that?
Re:Porting from one platform to another
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... ?:-)
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
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
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?
This what I need for hardware info on it?
Re:Porting from one platform to another
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.
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.
Every good solution is obvious once you've found it.
Re:Porting from one platform to another
Hmmm ZX Spectrum's not ZX80 then? I'll keep on looking.