PDA

View Full Version : Exult Ultima 7 Remake WIP!


ArnimS
04-23-2007, 05:46 PM
Got exult running on the Nokia 770!

http://pupnik.de/Exult_Ultima_VII_Nokia_770_02.jpg

http://pupnik.de/exult770.html

I've hacked it to use the full 800x480 screen, which is a bit slow without pixel doubling, but not as bad as i had feared.

Sounds and speech work fine. Midi (timidity) and ogg playback not working yet. Hopefully both will be available. The ogg uses sdl's ogg playback, which isn't doing anything at the moment, although maemo's sdl-mixer appears to have this code. The exult timidity player builtin is erroring on all timidity.cfg options (such as loading soundfonts).

The original Exult engine requires two-button mouse, or on mac mouse+command key to run/walk via clicks. This is a big problem for the tablet :mad: (edit) Actually i've been playing for a while just using DPAD for movement, and once you're used to it, it's not bad. Just have to turn off button clicks in the Maemo control panel options, otherwise you get clicking sounds while holding directions down.


For the stylus, I'm working on a hack to run the whole game using just single and double screen taps. I remapped the rouble-right click to trigger path-search running if you don't click on a game object. This allows you to enter conversations, and should also allow you to pick up objects via click-drag, but that's currently still broken. (edit) Gone back to standard ui since the movement hack is breaking pickups.

In addition there are over 10 (edit nonessential) keyboard commands that could benefit from hotclick-areas, but they can also be accessed via stylus.

b Use spellbook (click on spellbook in inventory view)
c Combat mode (click on 'halo' in inventory view)
g Use Abacus (or just click in Iolo's backpack on abacus)
k Use keyring/Keys to unlock
j SI: Show jawbone
l SI: Show combat stats
m Show map (or just click on the map in backpack)
p Use lockpicks
Esc Show Game menu box and closes all open boxes (circle arrow button)
w Use watch, shows the time if you got a watch
z Show stats (click on heart icon of avatar or NPC)

i Show inventory (click character portrait open)
f Use food (drag food to character to eat)

(edit) It looks beautiful running full screen :) Graphics glitches now fixed!

(edit) Needs text input method for typing savenames and character name.

Texrat
04-23-2007, 06:40 PM
!

My kids will go nuts over this.

luketoh
04-24-2007, 05:18 AM
Will this work on the N800 too?

rachid
04-24-2007, 06:02 AM
cool...
i downloaded it, but it is complaining about "config.xml"

ArnimS
04-25-2007, 08:51 AM
Sorry, had a bad link up there.

Working on a new pre-release now. Graphics problems fixed! :) Here's the buttons mapped..

DPAD - movement
DPAD-Select = enter / select
Menu key - gets you to windowed mode and shows maemo menu

TODO:
- still need a keyboard to enter savenames and character name.
- music not working (midi or ogg)

rachid
04-25-2007, 09:23 AM
i am happy to play one day ultima on my nokia :)

thank you

framerate
04-25-2007, 10:45 AM
Download is broken :(

iball
04-25-2007, 11:31 AM
Yup, download link is broken at the moment.

ArnimS
04-25-2007, 03:18 PM
Yeah no download link yet, sorry - looking to get that up as soon as music playback and savefile name generation works.

What's gonna happen is new savefiles will get a default name in format Date+Time. If you have a keyboard you can edit that, otherwise at least you'll be able to save unique savegame names w/o keyboard input.

I couldn't get any version of timidity to reliably play back the U7 music with below 10% cpu usage. Best average was 12-14% with all options set to minimal. Maybe eventually i'll find a way to hack timidity to be more lightweight, but at this point it's not looking like a smart option.

The obvious choice is to go with mp3 played back by dsp, as this uses almost no CPU. So i've been transcoding to mp3 tonight. The latest batch is decent quality but slightly larger than ogg source.

Gstreamer was having trouble with my vbr mono encoded mp3s so i switched to 56k abr joint-stereo and haven't noticed any playback problems yet. I increased volume which led to occasional clipping, but that's preferable to not-hearing-anything during quiet passages. You'll still have the option to turn the volume down, but as they were there was no way to hear some of the sound effects/music in normal environments.

If you want to help, download and test playaback of the transcoded mp3s on the nokia, using whatever player you've got that handles dspsink playback. Audio player, mplayer and gst-launch filesrc location="FILENAME.mp3 ! dspmp3sink " all work.

Grab my Ultima7_music_mono_mp3.tgz (http://pupnik.de/Ultima7_music_mono_mp3.tgz) (Edit - now downmixed to mono, 30->13MB) Let me know if the playback breaks / aborts. Remember, test with nokia dsp / gstreamer playback only! The mp3s play fine on pc.

The default destination directory for the stuff is in folder "music" in the exult data directory. This is settable in the exult config file.

As soon as the savefiles and dsp-based gstreamer mp3 playback works, i'll put up a testing binary. Later tonight i hope. :rolleyes:

iball
04-25-2007, 06:20 PM
Music sounds good to me.

ArnimS
04-25-2007, 06:31 PM
thanks iball for testing. ... bah 24bg.mp3 is way too distorted ... redoing that one :)

OK got mp3s playing back in exult! :D It's pretty ugly!

(edit 1:00 AM) that's an understatement... the game calls play_music() every few hundred milliseconds. If it's currently playing then return... testing an external process every 0.5 seconds is bad just baad. Got to change that behavior.

(edit 3:54 AM) Ok i have to change how the game tests for currently-playing music/background sounds. I think i can do it with SIGCHLD but don't know how - possiblty waitpid() if the thing insists on polling.

(edit 6:38 AM) Testing Version Ready for download. http://pupnik.de/exult770.html:D

Grab the tarball and unpack it to /home/user. Check out the readme and set up the directories so exult can find everything. Music requires gstreamer-tools.

Some gameplay tips.
- Walking is via dpad.
- Dpad-select selects menu items and goes through dialog.
- To converse with characters double-tap them. Your double taps need to be accurate - if the position changes it doesn't count as a double tap.
- To pick up objects, tap precisely (a fine stylus helps) and drag to one of your characters.
- Activate objects with double tap.
- Bring up game options menu with circular arrow
- Currently intro movies are disabled. If you want to see them go into game setup from the introductory window and turn them on.
- Tap on character portraits at bottom-left to bring up a display of your character. Here you can access commands like 'combat mode', character inventory, stats, world map, abacus etc. Eventually we'll get quick shortcuts for the important ones.

rachid
04-26-2007, 04:07 AM
hi,
i got
./exult
./exult: relocation error: ./exult: symbol powf, version GLIBCXX_3.4 not defined in file libstdc++.so.6 with link time reference
I am using OS2007hackedEdition on my Nokia 770

rachid
04-26-2007, 04:19 AM
the music sounds good to me:)

ArnimS
04-26-2007, 10:08 AM
hi,
i got

I am using OS2007hackedEdition on my Nokia 770

Thanks rachid. I'd hoped that error was local to my nokia. I had fixed it by copying over the unstripped libstdc++ from scratchbox, which doesn't give the error.

Ok i'll try to find where that powf function gets referenced.
Ooh there, in the fm synth emu...

(edit) ok, fixed! i pulled the mt32synth code out and recompiled with some new compile-time flags - game looks to be faster now!

P.s. if you want to see how crappy it looks on a gp2x / zaurus, go into 320x240 mode an select 'point doubling' :)

rachid
04-27-2007, 03:10 AM
thank you for the new version :)
But i still got the same error. What should i do?

ArnimS
04-27-2007, 05:40 AM
thank you for the new version :)
But i still got the same error. What should i do?

Thanks for testing rachid. The build system of exult appears to not allow for cleanly disabling the features requiring that power function. New version coming soon

(edit:10:30) Pulling out code that calls the powf doesn't help, it's still linked-in to exult, meaning that error will continue to haunt.

(edit 13:45) used apt-get --reinstall install libstdc++6 to recover the old libs, copied the libstdc++ over to scratchbox and rebuilt. .. testing.. OK Fixed. Now. Really. I hope.

(edit 15:23) Added auto-savename-generation for users without keyboards

(edit 16:26) Moved all data from root filesystem and edited config files. No more data in ~/.exult or /usr/local/share. Changed sound fx to high quality. Added default keybindings. They currently are:


Fullscreen Button: Toggle Combat
Zoom Minus: Eat Food
Zoom Plus: Use World Map (circle-arrow to exit)
Dpad-Select: Enter key for menus
Circle-Arrow: Esc / Hide Menu / Toggle Game Settings
Menu-Button: Show maemo menu / toggle fullscreen


Exult for it2006 (and 2007?) 0.03 testing downloads:

exult Ultima 7 for Nokia page (http://pupnik.de/exult770)
Installation, Usage and Development Notes (http://pupnik.de/exultnotes.txt)

Check the readme for usage. Post results here :)

(Edit: Starting a new game currently requires* a BT keyboard, synergy or vnc to input the player name. An alternate input method is coming real soon now.)
(Edit: First report from an N800 user {thanks Sulis!} that this build works on Bora / 800 as well. Frame rates claimed to be 50% faster in unscaled mode)

rachid
04-30-2007, 05:02 AM
hi,
it is working :)
But it is quite unstable.
"Serpent Isle" hangs often in the intro (blue white dots).
"The Black Gate" crashes irregular with an "SDL parachute" error

ArnimS
04-30-2007, 09:53 PM
hi,
it is working :)
But it is quite unstable.
"Serpent Isle" hangs often in the intro (blue white dots).
"The Black Gate" crashes irregular with an "SDL parachute" error

OK, please test without mp3 music (turn off music in .exult.cfg or disable digital music in the in-game settings menu, accessed via circle-arrow).

(edit) Latest speed seems to be not-so-good, running on it2007. Here is a video of how fast exult can be on the 770 (full 800x480 resolution with scale2x! on it2006)

(edit) Video removed - solly.

Note also how nice it is to move with stylus. :)

(edit) Oh and another thing - if you activate the 'paper doll' option, your character-view will reflect your equipped weapons and armor. The backpack is hard to see - it is barely visible to the upper-right of your character - double-tap it to open the pack.

=DC=
04-30-2007, 11:25 PM
Very nice work ArnimS! Glad to see it working quite well on the 770 too. :)

luketoh
05-01-2007, 12:44 AM
Hi,

I managed to install the game and trying out Black Gate for the moment. It loads and I just tried moving around a bit. I've not played this version of Ultima before...I last played the REALLY old version...2D one. Anyway, looks nice, but I'm not sure how you move with the stylus as per your video. I had to move using the dpad. Also, items look really tiny on the n800...i'm not even sure some of the things I'm picking up. :)

Will let you know how things go..

Edit: I've played a bit more. I realise that some text appears off the screen at the bottom. Also, I hope the framerates can be improved. I was slightly irritated by the jerkiness. :) Not your fault...just that maybe I'm getting old...anything too jerky gives me a headache.

Luke

ArnimS
05-01-2007, 03:48 PM
I'm not sure how you move with the stylus as per your video. I had to move using the dpad.
Correct, the stylus tap movement is not yet playable - it breaks object-pick-up.
Edit: I've played a bit more. I realise that some text appears off the screen at the bottom. Also, I hope the framerates can be improved. I was slightly irritated by the jerkiness. :) Not your fault...just that maybe I'm getting old...anything too jerky gives me a headache.
Are you referring to text that occurs when you are engaged in a dialogue with someone? This should appear at top of screen, always.
Perhaps you are seeing other townspeople talking to themselves out loud, when walking around town. If those characters are off the edge of your screen, you will only see part of the text.

I share your pain about framerate and pauses while walking. But remember that Exult has been in ongoing development for many years, and the game's goal is best compatibility with the original U7 - not performance optimized for 220mhz CPUs. Don't expect me to find a magic bullet to fix the performance problems soon.

Well, actually i _can_ see a couple of ways to get better performance, but they might introduce gameplay compatibility problems. Therefore i'll implement the dangerous speed hacks as an in-game toggle called 'PupSpeed' or something :P that will give higher framerate and reduce the frequency of those annoying pauses. If that breaks game compatibility at some point, just switch toggle back to 'compatibility mode' and reload your last savegame to get past the trouble spot.

cheers

BatPenguin
01-22-2008, 02:03 PM
Hello everybody,

Hasn't been any messages here for a while so hopefully somebody's still watching this...I'm using an N810, any chance of getting this to run on it? I would imagine the new clock speed increase might do it good. I'd really love to be able to play U7 on my N810, it's one of my all time favorite games.

The gstreamer-tools package doesn't seem to be available for OS2008 in the repositories so I didn't even try installing yet, figured I'd try to ask here first.

Any chance ArnimS is still continuing with this project?

Bundyo
01-22-2008, 04:19 PM
I'm running Exult in OS2008 without any problems (besides the keyboard one, use xvkbd for the time being)

BatPenguin
01-22-2008, 05:33 PM
Great to hear! Did you do anything special to install? I didn't see the gstreamer package, that's mainly what I'm thinking of.

Bundyo
01-22-2008, 06:09 PM
What gstreamer package?

ArnimS
01-23-2008, 02:23 AM
the way exult manages music playback internally is fairly convoluted. i had to muck with it for a few days to figure it out.

let me know what is most annoying about exult. i'll try to fix it to be more playable. for me the worst part is having to use dpad to walk around - it gets really tiring.

i don't really use xkbd with exult - after choosing an avatar name, that is. the gp2x sources have some button-based text input i think. need to look at that.

exult should be great on the n8x0, just needs work. it's on the uh. top half of my list

BatPenguin
01-23-2008, 04:08 AM
Thanks Arnims, I'll try it on my N810 later. I suppose the N810's keyboard will be handy for typing in the character name/saves. I have both Black Gate and Serpent's (the Collection CD) so I'll be one happy Avatar if this works - and thanks a lot for your work!

Bundyo: I was referring to the first part of the instructions which is "1) Install gstreamer-tools from the Maemo repository.". That package is not available on the OS2008 repositories as far as I can find. That's all.

Bundyo
01-23-2008, 12:37 PM
I didn't need such package, i guess it is installed with OS2008.

BatPenguin
01-24-2008, 03:58 PM
I'm actually not having much luck with this...I downloaded the files to the appropriate directories but when I try to run "/home/user/exult", I get this error:

home/user/exult: error while loading shared libraries: libXau.so.0: cannot open shared object file: No such file or directory

Any ideas what could be causing this? Thanks.

Bundyo
01-24-2008, 04:37 PM
apt-get install libxau6

:)

BatPenguin
01-24-2008, 05:05 PM
apt-get install libxau6

:)

Thanks for the quick reply. Unfortunately I get this:


Nokia-N810-50-2:/home/user# apt-get install libxau6
Reading package lists... Done
Building dependency tree... Done
libxau6 is already the newest version.

From the application manager (after switching on Red Pill mode to see it) I saw that the version number of libxau6 is "1:1.0.3-2osso1". Does exult require some other version of this library?

Bundyo
01-24-2008, 08:02 PM
Ah, sorry, misread - you should install libxau0

BatPenguin
01-25-2008, 02:57 AM
Hmmmm, still no go. Can't find that package in blue or red pill mode. I found a thread about this:

http://www.internettablettalk.com/forums/showthread.php?p=37245&highlight=libxau0#post37245

...but that's clearly about OS2007. Could libxau0 be installed as part of some other package under OS2008? I have the maemo repositories and all, but package lists (either installed or installable) do not show libxau0 at all. Seems like the Guardian is working his dark magic to prevent my Avatar from entering Britannia :)

Bundyo
01-25-2008, 07:37 AM
Oh, i remember now.

I just symlinked /usr/lib/libXau.so.0 -> /usr/lib/libXau.so.6 :)

Not a problem after this.

BatPenguin
01-25-2008, 12:12 PM
OK Great! The symlink took care of that - got rid of that error. But still not able to play :) Now it has to do with the config file.

I know I must seem annoying by now but would you mind posting your config file - the site doesn't have it up anymore (link seems broken) and it doesn't seem to like my .exult.cfg that I copied from my Ubuntu machine and edited. I altered the paths to point to /media/mmc1/games/exult/blackgate and /media/mmc1/games/exult/blackgate/gamedat but I get the error

dpath = ./data
could not find exult.flx anywhere etc...

I tried this by copying the data directory over to /home/user/data and that did the trick enough that I saw the program lauch (and complain about missing data, didnt copy blackgate or serpentisle dirs), so clearly it's expecting the files to be under /home/user. But unfortunately I don't have the disk space available to keep the files there.

I was trying to get exult to accept my config file by launching it with "-c config" and by naming it .exult.cfg in /home/user but oh well, Guardian's still blocking the moongate :) Would you mind posting your config file so I can try with that? Maybe there's some differences between the config files of this and the Ubuntu version.

Bundyo
01-25-2008, 04:21 PM
/home/user/.exult.cfg

<config>
<disk>
<data_path>
/media/mmc1/games/exult
</data_path>
<music_path>
/media/mmc1/games/exult/music
</music_path>
<game>
<blackgate>
<path>
/media/mmc1/games/exult/blackgate
</path>
<title>
blackgate
</title>
<gamedat_path>
/media/mmc1/games/exult/blackgate/gamedat
</gamedat_path>
<savegame_path>
/media/mmc1/games/exult/savegame
</savegame_path>
<waves>
sqsfxbg.flx
</waves>
<keys>
(default)
</keys>
</blackgate>
<serpentisle>
<path>
/media/mmc1/games/exult/serpentisle
</path>
<gamedat_path>
/media/mmc1/games/exult/serpentisle/gamedat
</gamedat_path>
<savegame_path>
/media/mmc1/games/exult/savegame
</savegame_path>
<waves>
sqsfxsi.flx
</waves>
</serpentisle>
</game>
<save_compression_level>
1
</save_compression_level>
</disk>
<video>
<scale>
2
</scale>
<scale_method>
Point
</scale_method>
<fullscreen>
yes
</fullscreen>
<disable_fades>
no
</disable_fades>
<width>
400
</width>
<height>
240
</height>
<fps>
6
</fps>
</video>
<gameplay>
<right_click_closes_gumps>
yes
</right_click_closes_gumps>
<gumps_dont_pause_game>
no
</gumps_dont_pause_game>
<bg_paperdolls>
yes
</bg_paperdolls>
<mouse3rd>
no
</mouse3rd>
<fastmouse>
no
</fastmouse>
<double_click_closes_gumps>
yes
</double_click_closes_gumps>
<combat>
<difficulty>
-3
</difficulty>
<mode>
original
</mode>
<show_hits>
yes
</show_hits>
</combat>
<step_tile_delta>
12
</step_tile_delta>
<allow_double_right_move>
yes
</allow_double_right_move>
<formation>
yes
</formation>
<skip_splash>
no
</skip_splash>
<skip_intro>
no
</skip_intro>
<cheat>
no
</cheat>
<textbackground>
-1
</textbackground>
<facestats>
0
</facestats>
</gameplay>
<audio>
<disablepause>
yes
</disablepause>
<enabled>
yes
</enabled>
<midi>
<reverb>
<enabled>
no
</enabled>
<level>
0
</level>
</reverb>
<chorus>
<enabled>
no
</enabled>
<level>
0
</level>
</chorus>
<volume_curve>
1.0000
</volume_curve>
<convert>
gm
</convert>
<enabled>
yes
</enabled>
<use_oggs>
yes
</use_oggs>
<driver>
Disabled
</driver>
<looping>
yes
</looping>
</midi>
<speech>
<enabled>
yes
</enabled>
</speech>
<effects>
<enabled>
yes
</enabled>
</effects>
</audio>
</config>

BatPenguin
01-26-2008, 03:55 AM
OH yes! Got it. Wow. That looks so good on the small screen, wonderful. This has got to be the biggest reason ever to leave the car at home and take the bus to work :)

Awesome. For future reference (in case other N810 users have problems), I'll recap:

1) A symlink between /usr/lib/libXau.so.6 and /usr/lib/libXau.so.0: was needed:

ln -s /usr/lib/libXau.so.0 /usr/lib/libXau.so.6

2) I had problems with permissions (not the config file after all): I used ssh and moved everything over as root and then "chown user:users" it. For some reason, this was not enough, but same dirs and all worked fine after I just moved them as normal user (via a samba share). So: check permissions, if the config file setting don't seem to be accepted.

Thank you, Bundyo, for your help, and thank you, Arnims, for the great work porting this. Cheers!

ArnimS
01-30-2008, 03:52 AM
OH yes! Got it. Wow. That looks so good on the small screen, wonderful. This has got to be the biggest reason ever to leave the car at home and take the bus to work :)

Awesome. For future reference (in case other N810 users have problems), I'll recap:

1) A symlink between /usr/lib/libXau.so.6 and /usr/lib/libXau.so.0: was needed:

ln -s /usr/lib/libXau.so.0 /usr/lib/libXau.so.6

2) I had problems with permissions (not the config file after all): I used ssh and moved everything over as root and then "chown user:users" it. For some reason, this was not enough, but same dirs and all worked fine after I just moved them as normal user (via a samba share). So: check permissions, if the config file setting don't seem to be accepted.

Thank you, Bundyo, for your help, and thank you, Arnims, for the great work porting this. Cheers!

I think that ln -s is wrong. You want to put the destination file first, and the link file second, e.g.

ln -s /usr/lib/libXau.so.6.0.0 /usr/lib/libXau.so.0

This is the only change I needed to run the old exult binary on OS2008.

Today I built and tested latest exult cvs on OS2008. Happily my mp3 playback hack works now that gstreamer-tools are available.

Unfortunately i'm getting frequent segfaults. And the speed is... not good, and i haven't figured out how to include the pocketPC hacks for better UI. Yet. I'll try to fix up segfaults and incorporate the UI hack so we can finally move without dpad.

(edit) oh the http://pupnik.de/.exult.cfg link is now fixed.

(edit) ok i'm way too confused about C right now. Integrating the pocketpc/windows stuff is breaking the build. I managed to get everything to compile, but linking is giving me unresolveds... and i have no idea why. I'm just confused at this point. can share sources...

(edit Tue: Jan 30) Well i met j0tt over in #maemo chat and it turns out he has implemented some fixes that i was unable to do. (how fortuitous!). Unfortunately his fix is against a 2004 build, and it segfaults on me. I'll try to find a cvs that runs stably.

Meanwhile I remastered the mp3 music to fix the atrociously unbalanced volume levels. It's now 30MB and stereo. Should sound much improved on all the tablets. download at http://pupnik.de/exult770.html

salinmooch
03-08-2009, 08:44 PM
I've had my n800 for >1 year and I've never seen this thread! I was tweaking dosbox to run Ultima 6 and its a bit to slow. Then I remembered exult and was glad to see it worked well on the tablets.

I used to run this on my sharp zaurus but it was a little to slow to be fun. This works great on the tablet! It's to bad that this isn't packaged up. Not that it is a hard install, but just so people are aware that exult gives you a great, in depth good looking game for the tablets.

Thanks for your work on getting this setup.

Special.Guest
10-14-2009, 07:58 PM
genius :D ArnimS :D

great port - thank you so much ... thanks for all tipps on "how to install"

... :o I got one question left ... is there any way I could speed up avatar walking a little bit ... like in this example (http://www.youtube.com/watch?v=NOpHUzG8OnU) ...

of course I can't expect to play Ultima that fast on an n810 ... but just al bit more walking speed would increase the 'workflow' a lot !

Thanks for any suggestions

Vice
12-09-2010, 02:46 PM
I am a bit of a novice when it comes to this sort of thing, but I am a huge ultima 7 fan. Is there a way we can run U7BG on a droid? I have a samsung fasinate.

ArnimS
12-09-2010, 02:59 PM
This is why android sucks eggs. It doesn't run the linux software stack.

Someone is experimenting with a java rewrite of exult. If you want to help go to sourceforge repo.

ArnimS
12-09-2010, 03:04 PM
This is why android sucks eggs. It doesn't run the linux software stack. You can't just take a linux app and tweak a few things and get an android app.

Someone is experimenting with a java rewrite of exult. Don't hold your breath to see it playable soon. If you want to help go to sourceforge repo.