BT 3 MSDOS version

Any developer realated stuff
MattCruikshank
Posts: 4
Joined: Thu Sep 24, 2009 6:30 am

Re: BT 3 MSDOS version

Post by MattCruikshank »

Again, anyone still have the files?
altsan
Posts: 14
Joined: Fri Sep 22, 2017 8:10 pm

Re: BT 3 MSDOS version

Post by altsan »

Can I add my profound thanks to drifting for his work? I've been replaying the trilogy for the first time in decades and the patched thiefp.exe is a game-saver. It's actually playable now, which I appreciate tremendously.

That said, I did find several more DOS port bugs that I haven't seen mentioned here yet, and one of them is a doozy: Bard songs only last a single round in combat, and don't stack.

I compared with the C64 version. If I play Bringaround Ballad while exploring, then enter combat, my characters heal every round on C64, but not on DOS. Furthermore, on DOS, if I play Bringaround Ballad in combat, it only lasts 1 round: if I want to keep healing, I have to play it every round. On C64, by contrast, it stays in effect for the entire combat, and if I play it again then its effects are increased.

As another test (on DOS), I tried Sanctuary Score. It gives my characters an AC bonus in combat... but only for one round, and only after the bard takes his action. If the bard doesn't get to play until the end of the round (after the monsters have attacked), then it's completely useless. Everyone's AC resets to normal at the end of the round.

Similarly, Rhyme of Duotime played while exploring gives everyone an extra attack if they enter combat... on C64. Not on DOS. I have to play it in combat to get an extra attack for one round and one round only. And again, if the bard happens to play after everyone else has already attacked... too bad, the song is wasted.

So basically, one of BT's marquee features is thoroughly broken in BT3 for DOS. It's pretty obvious that whoever ported this game to MS-DOS not only never tried playing it, but had almost certainly never played a Bard's Tale game at all. :/ It's thanks to people like drifting that make it even playable to at all. Hats off again.
Mordred
Posts: 21
Joined: Mon Nov 10, 2014 8:51 pm
Location: Germany

Re: BT 3 MSDOS version

Post by Mordred »

new links: (above links are outdated)
bt1 items, spells monsters in a zip:
https://www.dropbox.com/s/x3p2kad1jsb4l ... n.zip?dl=0
bt2 items, spells monsters in a zip:
https://www.dropbox.com/s/ts0u48f8c6cia ... n.zip?dl=0
bt3 items, spells monsters in a zip:
https://www.dropbox.com/s/ccqy4cgckh40z ... n.zip?dl=0
Mordred
Posts: 21
Joined: Mon Nov 10, 2014 8:51 pm
Location: Germany

Re: BT 3 MSDOS version

Post by Mordred »

I made a JavaFX Application to conveniently show/filter the items contained in the JSON-Files above.
It lets you show all items (of BT3) with their (hidden) stats.
you can filter by class and slot.
i attach a first screenshot. I take a look how i can give you the app too.
Attachments
screen.PNG
screen.PNG (29.93 KiB) Viewed 9838 times
Mordred
Posts: 21
Joined: Mon Nov 10, 2014 8:51 pm
Location: Germany

Re: BT 3 MSDOS version

Post by Mordred »

I made a zip File containing the first version of my "Bards Tale Item Viewer".
Download it, extract it and double click on the *.jar File.

Java Runtime has to be installed on your system.
(download here
https://java.com/de/download/
or here
http://www.oracle.com/technetwork/java/ ... 33155.html
)

i already used JavaFX. I dont know if you have to download it additionally. give it a try.
Attachments
BT_ItemViewer.zip
(252.5 KiB) Downloaded 353 times
altsan
Posts: 14
Joined: Fri Sep 22, 2017 8:10 pm

Re: BT 3 MSDOS version

Post by altsan »

Mordred wrote:new links: (above links are outdated)
bt1 items, spells monsters in a zip:
https://www.dropbox.com/s/x3p2kad1jsb4l ... n.zip?dl=0
bt2 items, spells monsters in a zip:
https://www.dropbox.com/s/ts0u48f8c6cia ... n.zip?dl=0
bt3 items, spells monsters in a zip:
https://www.dropbox.com/s/ccqy4cgckh40z ... n.zip?dl=0
Very interesting, thanks!
altsan
Posts: 14
Joined: Fri Sep 22, 2017 8:10 pm

Re: BT 3 MSDOS version

Post by altsan »

altsan wrote: I compared with the C64 version. If I play Bringaround Ballad while exploring, then enter combat, my characters heal every round on C64, but not on DOS. ...
Similarly, Rhyme of Duotime played while exploring gives everyone an extra attack if they enter combat... on C64. Not on DOS. I have to play it in combat to get an extra attack for one round and one round only.
OK, I have to correct myself partially here: it seems that exploration songs do carry over into combat. I'm not sure what was going on in my original testing where it didn't appear to work.

However, it's definitely true that combat bard songs only last 1 round, and don't stack.

The good news is that I've been playing with drifting's patch sources, and I think I've figured out how to modify it so that bard songs last the entire combat. (Multiple playings of the same song aren't cumulative, but at least multiple different songs can be in effect, and last until the end of battle.)

I need to test this for a while still, though...
drifting
Posts: 153
Joined: Wed Dec 07, 2011 10:21 pm

Re: BT 3 MSDOS version

Post by drifting »

altsan wrote: However, it's definitely true that combat bard songs only last 1 round, and don't stack.

The good news is that I've been playing with drifting's patch sources, and I think I've figured out how to modify it so that bard songs last the entire combat. (Multiple playings of the same song aren't cumulative, but at least multiple different songs can be in effect, and last until the end of battle.)

I need to test this for a while still, though...
The manual says that only one song can be played at a time and that combat songs only last one round.
altsan
Posts: 14
Joined: Fri Sep 22, 2017 8:10 pm

Re: BT 3 MSDOS version

Post by altsan »

drifting wrote: The manual says that only one song can be played at a time and that combat songs only last one round.
Hmm, you're right. That's odd, since the C64 version definitely doesn't behave that way. Nor do Bard's Tale I or II for DOS.

I wonder if the manual in this case was based on the DOS port behavior?
drifting
Posts: 153
Joined: Wed Dec 07, 2011 10:21 pm

Re: BT 3 MSDOS version

Post by drifting »

altsan wrote:
drifting wrote: The manual says that only one song can be played at a time and that combat songs only last one round.
Hmm, you're right. That's odd, since the C64 version definitely doesn't behave that way. Nor do Bard's Tale I or II for DOS.

I wonder if the manual in this case was based on the DOS port behavior?
It looks more like a bug in BTI and II. The manuals for both state that songs sung in combat only last one turn. It's not implemented that way though.
altsan
Posts: 14
Joined: Fri Sep 22, 2017 8:10 pm

Re: BT 3 MSDOS version

Post by altsan »

drifting wrote:
altsan wrote:
drifting wrote: The manual says that only one song can be played at a time and that combat songs only last one round.
Hmm, you're right. That's odd, since the C64 version definitely doesn't behave that way. Nor do Bard's Tale I or II for DOS.

I wonder if the manual in this case was based on the DOS port behavior?
It looks more like a bug in BTI and II. The manuals for both state that songs sung in combat only last one turn. It's not implemented that way though.
I suppose it depends on whether one takes the C64 version or the manual as canon. :|

In any event, I'm testing a modification to match the C64 behaviour w.r.t. combat songs. If I end up satisfied that it works, would you like me to send you a diff (probably via Github ticket) or not interested? (It's only about 4 changed lines.) :)

I've been trying to track down a few other extant BT3 DOS quirks (Giant Fgn not working, spellpoint drain squares not being reported by SESI, etc.) but since my ASM knowledge is very limited it's probably going to be more like a long-term self-education exercise, and nothing more may come of it... Still, I've appreciated the opportunity to pick up some assembly-language knowledge. :lol:

Thanks again for the terrific contribution!
Maven
Posts: 138
Joined: Sat Apr 16, 2011 9:39 pm

Re: BT 3 MSDOS version

Post by Maven »

Even in the Bard's Tale 1 DOS version, implementation of the songs in combat is inconsistent. Traveler's tune stacks, and Falken's Fury stacks, but Badhr Kilnfest doesn't stack. So even though you only have to play the heal song once and you'll recover one hit point per round, playing it twice doesn't make you recover two hits per round. Too bad, because that could be useful.

But you can get LO armor class using the armor class song, and you can do serious melee damage if you sing the damage song enough times.

I think sometimes game programming is somewhat arbitrary. It reminds me of a quote I read once by one of my favorite Science Fiction authors. Some fan was giving him a hard time once about some apparent inconsistency in the fictional world in one of his books, and he said, "You do realize, we just make this stuff up, right?" Which is kinda the definition of fiction.
altsan
Posts: 14
Joined: Fri Sep 22, 2017 8:10 pm

Re: BT 3 MSDOS version

Post by altsan »

With extensive testing and comparison, I've confirmed that my alterations are entirely consistent with the C64 version. (Incidentally, multiple bards in the party can also play different songs in combat now - I suspect this was also not working previously.)

Even if the manual claims that bard songs only last 1 round, the game never behaved that way on any other platform/version that I can determine. In retrospect, that behaviour makes no sense anyway. In many cases, and especially in the late game, the bard's combat action will take place after most of the monsters and melee characters have attacked. As described, any song played will therefore have no effect in that round - and if the song effect ends with the round, it is completely useless. The way the game is actually written in BT1, BT2, and BT3 for C64, makes much more sense.

Anyway, my diffs are available in a github ticket for anyone to poke at, although I think they're rather behind the current repo (probably my fault; if I have another burst of energy I may try to resync them).


On a related note, I found and wrote down a number of other BT3 MS-DOS port bugs in the course of my playing. For posterity, I'll list them here, although I have no particular plans to tackle them.

I have confirmed all of these do not occur in the C64 version, and are therefore bugs in the MS-DOS port.
  • 'Rhyme of Duotime' only boosts SP regen effects from sunlight and regen squares. It does not boost Mage/Yellow Staff regeneration.
  • Drinking in a tavern only restores 1 song at a time, but drinking from a wineskin restores the bard to maximum songs.
  • Trash entries (ASCII garbage) occasionally appear at the end of the character list in the Refugee Camp.
  • Giant Fgn does not work (nothing is summoned).
  • Stepping on a square with a trap will always clear the trap, even if the trap was not triggered (due to levitation etc.).
  • Stepping on a square with 'an explosion' does not clear it - that square will continue to trigger 'an explosion' indefinitely.
  • The music for songs 1 and 4 are switched. So is the music for songs 2 and 3.
There are also a couple of possible bugs that I have not yet been able to confirm by comparing with C64.

First, it looks as though NUTS and POSS may not have any actual effect on a character (they appear to continue behaving normally and remain under player control).

Second, there are several barkeep clues that don't ever appear to be given out (I have never been able to get them from any barkeep in any dimension), although they are in the code:
  • "There lies another bar in Celaria Bree, seek it. It exists only in the dimension called Lucencia."
  • "Go to the bard's hall and listen to the songs they sing. They contain useful information."
  • "Ack! It's not just a word, but a state of mind."
  • "The key to finding Sceadu is finding the lock."
  • "Seek Werra in Tarmitia."
drifting
Posts: 153
Joined: Wed Dec 07, 2011 10:21 pm

Re: BT 3 MSDOS version

Post by drifting »

altsan wrote: Second, there are several barkeep clues that don't ever appear to be given out (I have never been able to get them from any barkeep in any dimension), although they are in the code:
  • "There lies another bar in Celaria Bree, seek it. It exists only in the dimension called Lucencia."
  • "Go to the bard's hall and listen to the songs they sing. They contain useful information."
  • "Ack! It's not just a word, but a state of mind."
  • "The key to finding Sceadu is finding the lock."
  • "Seek Werra in Tarmitia."
That's a good one. Bad data port from the 8 bit machines. The tip amount is a 16 bit word on the Apple/C64. The DOS port only has the low 8 bits. So 2 out of 5 sayings was unreachable
Post Reply