gbadev.org forum archive

This is a read-only mirror of the content originally found on forum.gbadev.org (now offline), salvaged from Wayback machine copies. A new forum can be found here.

DS Misc > The Ur-Quan Masters DS...

#101718 - OOPMan - Thu Sep 07, 2006 5:33 pm

Okay, a while back I posted in the DS Ports thread the idea of doing a port of the Ur-Quan Masters to the DS.

Yesterday I joined the UQM forums and posted a topic on the feasibility of a DS port. I've gotten some useful feedback from in that topic, which can be found here...

I created that topic with two basic scenarios in mind. One option would be to port UQM to the DS as is and get it working in that context. The other option would be to create a data-compatible clone with the aid of the UQM source code that caters specifically for the DS's capabilities.

In a nutshell the issues raised with the idea of doing a vanilla port can be broken down into the following areas:


  • 4mb Memory Limit
  • Mildly multi-threaded nature of the UQM code
  • Suitability of SDL DS to the project
  • Limited CPU power
  • Screen configuration


I'm going to detail my thoughts on these issues and I'd like to hear your ideas on the issues as well...

4mb Memory Limit
Doing a vanilla port of UQM raises the issue of the DS's 4mb memory limit. UQM was developed using the 3DO version of Star Control 2's source code and has been targetted at PC's a bit more powerful than what ran the original SC2. Hence, it's memory requirements are a fair bit higher than might be expected.

I think this problem can be approached from a number of angles. One way too approach things would be to do an audit of the game resources and remove what isn't needed while reduce the memory consumption of everything else as much as possible while maintaing as high a standard of quality as possible that is suitable to the DS's hardware.

Now, considering that SC2 was originally designed for systems running at 320x200, there's probably only a minimal amount that can be done to the graphics. The basic SC2 music comes in the form of tracker created .mod files. Seeing as how we have a tracker application on the DS, I think it's safe to say that using the original PC version music would be do-able.

The 3DO version provided some bonuses in the form of spoken dialog. While it would be nice if we could get this working, it's not essential and would only be a later goal, if indeed it is possible, given the 3DO data...

It would also be a good idea, I think, to leverage the the useful fact that DS homebrew relies on fairly fast solid-state memory solutions. Hence, pulling data in on the fly is probably less of an issue than with a HDD, although that's no reason to get sloppy...

Mildly multi-thread nature of the UQM code
The UQM code has, over time, become somewhat multi-threaded in nature. Apparently this threading isn't strong or very vital and could be unraveled into a single thread if necessary.

Being new to DS coding I'm not too certain how the devKitARM compiler handles threaded code, or whether it even supports it. Seeing as how the multi-threaded components are apparently not vital, they could probably be dumped.

Still, the ignores the fact that UQM was originally coded for a single-processor based system, while the DS is a dual-processor system. Hence, in order to get things running really well it might be neccessary to extensively rework the code into a form more suitable for the DS's processors...

Suitability of SDL DS to the project
UQM on PC has been coded using SDL, which has been ported. The question is, though, just how efficient an implementation of SDL has been done on the DS's hardware? At present the DS version of SDL lacks support for sound and a few other things as well...

My thinking is that if extensive re-working of the UQM code is necessary then it might not be a bad idea to rip out SDL DS entirely and replace it with something more mature, such as PALib (Or one could go a bit more low level and make use of the basic NDS homebrew libraries...)

Limited CPU power
While the original SC2 game was targetted at 386 machines, the UQM code is based on the 3DO code and has been targetted at more recent PCs. Hence, it's CPU requirements are higher than one would expect...

I think that with careful coding and work, this wouldn't be such a problem. CPU intensive elements could be optimised or altered or even removed completely, as long as the gameplay itself is not affected.

Splitting the game load across the DS's two processors on a fashion that takes advantage of their roles would probably also reduce the important of this problem. Of course, that would involve some extensive re-coding of the game, since it wasn't designed with the DS in mind originally...

Screen configuration
As is, UQM's base resolution is 320x240. Although the original PC version ran at 320x200, the 3DO version jumped this up a little.

The basic UQM interface is not inherently supportive of the DS's dual screens, although certain elements such as planetary exploration do lend themselves rather more in the UQM version than in the original PC version (See the UQM wiki for details on the Version differences).

My thinking is that in the long run a port would do best to re-work the interface in such as fashion that it always makes maximum use of the DS's screen space.

During Space Navigation the navigation would occur on the top screen while the touch screen displays HUD data and any other secondary components.

Communications would see all dialog placed on the touch screen while the image display would occur on the upper screen.

Similarly, the basic planetary screen would display the planet on the upper screen while presenting planetary options on the lower screen.

Planetary exploration would occur on then upper screem, with the lower screen containg options and possibly some kind of minimap.

Melee would be handled similarly to planetary exploration, with the lower screen containg HUD info and a minimap of some kind. The upper screen would display the combat itself (If a minimap were used then certain elements of UQM's screen zooming feature could be dumped, as they catered mainly for two people playing on one machine)

My closing comments...
My opinion, having taken a look at the issues raised by posters on the UQM forums, is that doing a vanilla port would not be optimal. I believe that doing a clean clone that remains data compatible with the UQM files and incoporates and the game logic of UQM itself would be a better approach. Whiel this approach does present it's own problems, it would allow use to better make use of the DS's capabilities.

However, I am, as I've said before, new to the DS homebrew scene and hence my opinions and ideas do not have much grounding in DS coding experience. Hence, I'd really really like to hear what you guys think about all this?

Would a vanilla port be best, or should a clone be pursued? What about the issues raised? Neither a port nor a clone can ignore them. What's your take on all this?

Anyway, I hope to get some interesting discussion on this...
_________________
"My boot, your face..." - Attributed to OOPMan, Emperor of Eroticon VI

You can find my NDS homebrew projects here...

#101723 - tepples - Thu Sep 07, 2006 6:43 pm

3DO Interactive Multiplayer specs from Wikipedia article:
  • 12.5 MHz ARM CPU with FPU
  • 3 MB RAM
  • Two video coprocessors

DS specs:
  • 67 MHz ARM CPU
  • 4.6 MB RAM
  • Two video coprocessors (fixed-function T&L and polygon filler)
  • I/O coprocessor: 33.5 MHz ARM CPU

One strategy is to make a vanilla port first and then use refactoring to end up with a clone.
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.

#101725 - MiL0 - Thu Sep 07, 2006 7:13 pm

I loved star control - someone needs to do this port!

#101739 - OOPMan - Thu Sep 07, 2006 8:34 pm

Thanks for the useful specs Tepples. One thing to keep in mind, though, is that UQM has been worked on for quite a while and thus probably differs from the original 3DO source released by the developers. Hence, it has been developed with the PC in mind.

One of the people over at the UQM forums posted a link to this bit of info on why UQM has much higher system requirements than either the PC or 3DO versions...

At a look, certain of their listed problems don't really apply to us, for various reasons. We don't need to worry about OS overheads and can safely forget about using the Ogg Vorbis audio features...

Also, some additional posts on the UQM topic for this has revealed that certain problems (Such as that of the screen layout) would be less troublesome to handle than one would think (The main game window is 256 pixels wide, conveniently :-) )


Anyway, I'm going to grab the UQM source a little later tonight and take a look at what would be involved with doing a quick-and-dirty recompile and, with any luck, I can post some info on results this weekend...
_________________
"My boot, your face..." - Attributed to OOPMan, Emperor of Eroticon VI

You can find my NDS homebrew projects here...

#101784 - OOPMan - Fri Sep 08, 2006 12:37 am

Amazing what you think of in the shower...

Tepples, you're a bloody genius...

I've just had a useful insight...

UQM is based of a partial port of the original 3DO code. It's developed from that code into what it is today. What it is today is a port targeted at desktop platforms running Windows, Linux or OS X (Or pretty much any other target supported by SDL...)

The original 3DO code, on the other hand, is targetted at a home console system that is, at a glance, rather similar to the DS in terms of hardware (Same basic processor architecture, similar memory, superficially similar graphics cores)

What I'm thinking is this. If Toys For Bob were willing to release a partially ported version of the 3DO code, then they might well be willing to release the unmodified original 3DO code. The original unmodified 3DO code might prove to be easier to port than the UQM code.

I think this is a good avenue. I'm going to email TFB now and see what they say...
_________________
"My boot, your face..." - Attributed to OOPMan, Emperor of Eroticon VI

You can find my NDS homebrew projects here...

#101844 - OOPMan - Fri Sep 08, 2006 10:35 am

Well, I contacted Toys For Bob. They're were willing to help, but only in a few months time, as they're very busy completing another project at the moment...

A user on the UQM forums pointed out that the 3DO code might not be a good place to start anyway. Apparently the 3DO promoted multi-tasking on a ludicrous level and thus much of the early UQM work was devoted to untangling the multi-threaded mess that the code was :-)

Well, anyway, time to get back to the forge and get SDL DS to compile...
_________________
"My boot, your face..." - Attributed to OOPMan, Emperor of Eroticon VI

You can find my NDS homebrew projects here...

#101896 - sajiimori - Fri Sep 08, 2006 7:26 pm

SDL is so simple that porting from it is not so bad anyway. In fact, if I had my choice of source platforms to port from, it would be high on the list.

#102261 - OOPMan - Tue Sep 12, 2006 11:12 am

Okay, well, a minor progress update...

Nothing much to say, really. I've had the UQM-0.5.0 code for a few days and have been going over it in my spare time. At the moment I'm basically just working my way through the source and working out what various files are connected with and trying to get an idea of where most of the changes are going to come in...

On the subject of SDL, it's pretty likely that I'm going to be working to remove it entirely. This is not because I dislike SDL as a library. I like SDL. I like it a lot.

However, I don't really feel it's a library that's ultra-suitable to the DS. Why? Well, SDL is mainly aimed at providing interoperability between desktop platforms that run Win32 and UNIX based OSes. Hence it makes a lot of assumptions about hardware and software that just don't apply to the DS in the same way, or even at all...

Removing SDL from UQM and replacing it with code that targets the DS's hardware specifically will most likely not be a major task. According to the lads over at the UQM forums the majority of the project's code has makes almost no use of SDL.

I'm personally a little more worried about all the multi-threading. The 3DO version of SC2 was extremely multi-threaded (Something the 3DO platform apparently encouraged). The UQM project has been working towards the de-threading of the game, but hasn't quite finished that aspect of the project yet. On the plus side, any work done in this respect could well end up contributing to the base UQM project as well.

Anyway, with a bit of luck and a lot of hard work it shouldn't be a major problem, since most of the threading used at the moment is apparently pretty trivial (Ie. Not misson critical code for the most part...)

And that's about it...

Oh, yes, two more things...

First, I've already gotten one volunteer for the project. If anyone else is interested in participating, feel free to PM me...

And finally, I've applied to SourceForge for a project page. Hopefully they'll see fit to grant it :-)
_________________
"My boot, your face..." - Attributed to OOPMan, Emperor of Eroticon VI

You can find my NDS homebrew projects here...

#102375 - Durandle - Wed Sep 13, 2006 11:24 am

There was some talk of making some threading libs or whatever as needed for the DS, so instead of avoiding threading you could work on adding threading to either SDL DS (as thats one of the last things missing from it) or in its own lib. I my self would like to see this but maybe its just not what you want to do. Just a thought ^_^

God luck either way, sounds like a great project to work on.

#102377 - OOPMan - Wed Sep 13, 2006 12:00 pm

Threading libs would be nice :-)

Alas, threading is usually a service implemented at the OS level, something we can't really rely on unless you want to write games for DSLinux (Which introduces problems all of its own :-)

While I would love to say that I have the programming jiz-ma-jazz to help develop threading libraries, it would be a total lie...

Considering that the UQM project is moving in the direction of reducing/removing threading from their code anyway, I think in this case working in that direction is not really a bad idea...
_________________
"My boot, your face..." - Attributed to OOPMan, Emperor of Eroticon VI

You can find my NDS homebrew projects here...

#103150 - OOPMan - Tue Sep 19, 2006 4:30 pm

Okay guys, some more news...

Examining the source is taking some time (UQM has rather a lot), but it's proving fruitful and I'm getting a better idea of where UQM code is going to need to be changed. I am, of course, taking down all the details so that my co-developer(s) can also make use of this stuff :-)

In other news, SourceForge have approved my request for project space and thus UQM DS now has a proper base-of-operations. The project is available at:

https://sourceforge.net/projects/tau-qimp

All further news updates and development info will be handled via the SourceForge page, so I'd apprecate it if a mod could lock this thread and, possibly, sticky it...
_________________
"My boot, your face..." - Attributed to OOPMan, Emperor of Eroticon VI

You can find my NDS homebrew projects here...

#103208 - MiL0 - Tue Sep 19, 2006 11:21 pm

hmm don't lock this thread... post the news here as well :D

#103246 - OOPMan - Wed Sep 20, 2006 7:49 am

Ah well, looks like neither of the threads are getting stickied or locked just yet :-)

Mainly I asked that so:

A: People don't forget there's a project
B: Newbies don't have trouble finding it
C: Pertinent development discussion doesn't get split across 3 or more forums...

Anyway, feel free to chat about stuff in here...
_________________
"My boot, your face..." - Attributed to OOPMan, Emperor of Eroticon VI

You can find my NDS homebrew projects here...

#107874 - OOPMan - Thu Nov 02, 2006 7:11 pm

Unfortunate news, just in case any here still cares...

I've put the UQM DS project on hold until I manage to bring a coder on-board with very good graphics coding skills.

Going over the engine and the source code it's become pretty obvious that my own graphics coding skills, which are pretty crappy overall, won't cut it, especially given the relative complexity of the source code...

Unfortunately it looks like doing UQM justice on the DS would require re-writing various parts of the graphics engine and mucking around with other things as well.

Anyway, hopefully I'll be able to get some assisstance with this eventually, but for now the project is in stasis...
_________________
"My boot, your face..." - Attributed to OOPMan, Emperor of Eroticon VI

You can find my NDS homebrew projects here...

#108010 - MiL0 - Sat Nov 04, 2006 1:21 am

that's okay (for me at least) - I bought a GP2X last month :D

#108018 - OOPMan - Sat Nov 04, 2006 8:32 am

Hehehe, lucky for you :-)

A pity the GP2X port isn't kept up to date though :-(
_________________
"My boot, your face..." - Attributed to OOPMan, Emperor of Eroticon VI

You can find my NDS homebrew projects here...