Bards Tale 1 - Speed Running

Discussions and help for Bard's Tale I: Tales of the Unknown
coldfoxred
Posts: 11
Joined: Wed Jan 29, 2020 5:20 am

Bards Tale 1 - Speed Running

Post by coldfoxred »

I grew up with the MSDOS version of this game in the early 1990s. I recently rediscovered it and have been making attempts to speed run through it. I made a small website to document my attempts (largely for my own benefit). Anyway, find it at BardsTaleSpeedRun.com

My current best speedrun is 3 hours 42 mins or so. I start with a clean install, delete the default heroes, and create 6 heroes. I then hex edit the heroes to have the maximum appropriate stats for level 1 that can be rolled. (This saves me about 30-45 minutes of rolling. I may change how I do this in the future, but for now, I'm not interested in endless hours of rolling every time I suffer an early team wipe.) The game then begins and moves forward like a normal BT1 game until Mangar is beaten.

I expect to be sub-3 hours very soon, and when I install and test some screen recording software, I will post some Youtube videos.

I've also posted my current understanding (which may be wrong or incomplete) about the more complicated game mechanics in the MSDOS version like saving throws, flee chances, and binary outcome spells (e.g., DEST, SPBI). This forum was rather helpful in helping me learn about the mechanics. So thank you everyone, and enjoy.

If you have comments or suggestions, please post here or PM me or EM me at my forum handle (coldfoxred) via hotmail.
coldfoxred
Posts: 11
Joined: Wed Jan 29, 2020 5:20 am

Re: Bards Tale 1 - Speed Running

Post by coldfoxred »

For what it's worth, I'm at 3 hours 4 minutes for a speed run. Targeting 2.5 hours now, but doing in-game rolling as part of the speedrun.

Some outstanding questions I have which are only partially answered on this forum include:
  • Are the saving throws for DEST and STTO calculated differently in the MSDOS version (4 points or higher saving roll by victim repels the spell)? Otherwise, except for casting these on a party member, they are entirely redundant, and STTO is 6 points cheaper.
  • How is the hit/miss chance calculated when a player attacks a monster (and vice-versa) in the MSDOS version? (the actual math with respect to relative AC/Dex/etc.)
  • What is the saving throw math (player saving throw, trap saving throw, trap type/level, levitation, etc.) for traps in the MSDOS version?
  • What is the saving throw math for damage rooms (e.g., the walk of death up to the Square/Triangle/Circle door in Mangar 5)?

Depending on the answer to the last questions about traps, I'm of the belief that a level 1 hobbit bard and level 1 hobbit monk could stay level 1 and complete the entire game in less than an hour (maybe 30 mins) with perfect luck. I'll do a little writeup on it for kicks. I might even try to test it if I can find a DOS emulator with easy to use save states to recover from bad RNG rolls.
drifting
Posts: 153
Joined: Wed Dec 07, 2011 10:21 pm

Re: Bards Tale 1 - Speed Running

Post by drifting »

coldfoxred wrote: Wed Feb 05, 2020 2:45 am For what it's worth, I'm at 3 hours 4 minutes for a speed run. Targeting 2.5 hours now, but doing in-game rolling as part of the speedrun.

Some outstanding questions I have which are only partially answered on this forum include:
  • Are the saving throws for DEST and STTO calculated differently in the MSDOS version (4 points or higher saving roll by victim repels the spell)? Otherwise, except for casting these on a party member, they are entirely redundant, and STTO is 6 points cheaper.
There is no difference in saving throws between those two spells (or any two spells). The only difference in the spells is what effect kills the target.
coldfoxred wrote: Wed Feb 05, 2020 2:45 am
  • How is the hit/miss chance calculated when a player attacks a monster (and vice-versa) in the MSDOS version? (the actual math with respect to relative AC/Dex/etc.)
Character to hit is entirely based on AC with lower AC being better. The full formula is AC - classMeleeBonus - songToHitBonus + wordOfFearPenalty with a maximum of -10.

One interesting thing about the classMeleeBonus is that there is an overflow in the DOS version. Summons and illusions weren't taken into consideration so the overflow means that illusions will always attack with an AC of -10. They basically get a classMeleeBonus of 20.

Class bonus:
  • Warrior: 2
  • Paladin: 2
  • Rogue: 1
  • Bard: 1
  • Hunter: 2
  • Monk: 3
coldfoxred wrote: Wed Feb 05, 2020 2:45 am
  • What is the saving throw math (player saving throw, trap saving throw, trap type/level, levitation, etc.) for traps in the MSDOS version?
For traps, each individual player's saving throw is checked, not just the first party member. The trap saving throw uses (dungeonLevel << 4) + 1 as the MonsterIndex.

Trap type is randomly selected. Doesn't look like dungeon level matters for trap type.
Trap damage is (dungeon level * trap type damage)d4.
coldfoxred wrote: Wed Feb 05, 2020 2:45 am
  • What is the saving throw math for damage rooms (e.g., the walk of death up to the Square/Triangle/Circle door in Mangar 5)?
No saving throw for life drain squares
coldfoxred
Posts: 11
Joined: Wed Jan 29, 2020 5:20 am

Re: Bards Tale 1 - Speed Running

Post by coldfoxred »

That's really helpful, thanks! A few followup questions:

AC - Once the hit chance is calculated, how is that compared against a monster with a given AC to determine if a hit happens? For example, if a Lvl 18 Paladin with -7 AC maxes out his hit chance at -9 (-7 AC - 2 class - 0 bard + 0 penalty), how is that chance weighed to evaluate whether he hits or misses a Demon Lord with an AC of -10/LO? And how is the monster to hit chance calculated and how is it weighed? (if there's another post that discusses this feel free to point there, but I've not seen it)

What's the saving throw with respect to whether a trap is sprung in the first instance? (if levitating there seems to be a chance based on 1st party member's luck/saving throw that the trap is not sprung)

What are the dice for life drain squares?

Thank you again for the input!
drifting
Posts: 153
Joined: Wed Dec 07, 2011 10:21 pm

Re: Bards Tale 1 - Speed Running

Post by drifting »

coldfoxred wrote: Sun Feb 09, 2020 5:35 am That's really helpful, thanks! A few followup questions:

AC - Once the hit chance is calculated, how is that compared against a monster with a given AC to determine if a hit happens? For example, if a Lvl 18 Paladin with -7 AC maxes out his hit chance at -9 (-7 AC - 2 class - 0 bard + 0 penalty), how is that chance weighed to evaluate whether he hits or misses a Demon Lord with an AC of -10/LO?
It's a direct comparison. If the characters to-hit chance is lower than the monster's AC, then it is a hit with a tie going to the attacker. A paladin with -9 to-hit chance will always miss a Demon Lord with L0/-10.
coldfoxred wrote: Sun Feb 09, 2020 5:35 am And how is the monster to hit chance calculated and how is it weighed? (if there's another post that discusses this feel free to point there, but I've not seen it)
Monsters have a to-hit table. The to-hit chance is (monsterToHit+2d7+2+magicBonus). That gets subtracted from 10 and compared against the players' AC. Lowest wins.
coldfoxred wrote: Sun Feb 09, 2020 5:35 am What's the saving throw with respect to whether a trap is sprung in the first instance? (if levitating there seems to be a chance based on 1st party member's luck/saving throw that the trap is not sprung)
No saving throw for hitting a trap. If you have levitation, you have a 75% chance of not springing the trap.
coldfoxred wrote: Sun Feb 09, 2020 5:35 am What are the dice for life drain squares?

Thank you again for the input!
No dice for life drain squares. It is dungeonLevel+1 damage per tick.
coldfoxred
Posts: 11
Joined: Wed Jan 29, 2020 5:20 am

Re: Bards Tale 1 - Speed Running

Post by coldfoxred »

This is good stuff, thank you again. A few more questions based on some testing:

Character to Hit Monster - In doing my own testing in the MSDOS version, I found that sometimes a character can miss or hit a monster, especially when the character's AC is high/positive. But the next round the character will hit the monster. This suggests to me that there's some element of randomness for the Character attacking Monster comparison. Is the monsterToHit table a factor in this?

Monster to Hit Character - is there a copy of that monsterToHit table somewhere?

Monster Target Selection - I've noticed that some of the statute guardians (esp. the Samurai and Ogre Lords) in the city have a specific bias for targeting the special character slot. But that does not seem to (always) extend to other monsters. What does the logic for monster target selection among the special slot and the front 3 look like generally? Is the coding different for some or all of the statutes? For city monsters?

At the end of the day, I'm mostly just trying to get a sense of where the -AC breaks are for the guardian statutes and for certain dungeon levels for xp/gold farming efficiency purposes. Also, it's helpful to have a sense of how nasty the Mangar crew is for end game planning.

Thank you again for the input!

FYI, at a 2h21m speedrun in the MSDOS version, inclusive of time spent rolling. See http://bardstalespeedrun.com/2020/02/12 ... ure-rules/
drifting
Posts: 153
Joined: Wed Dec 07, 2011 10:21 pm

Re: Bards Tale 1 - Speed Running

Post by drifting »

coldfoxred wrote: Wed Feb 12, 2020 1:56 am This is good stuff, thank you again. A few more questions based on some testing:

Character to Hit Monster - In doing my own testing in the MSDOS version, I found that sometimes a character can miss or hit a monster, especially when the character's AC is high/positive. But the next round the character will hit the monster. This suggests to me that there's some element of randomness for the Character attacking Monster comparison. Is the monsterToHit table a factor in this?
There is no random element to a character hitting a monster in the code. It is very simple:

Code: Select all

l_monIsTarget:
        mov     al, actionTarget		; Action target is the monster group | 0x80
        sub     ah, ah
        mov     si, ax
        and     si, 7Fh				; Strip out the 0x80 bit
        mov     bl, monsGroupType[si]		; Get the monster group type
        sub     bh, bh
        mov     al, monstrAttribArray[bx]	; Get the monster type AC
        and     ax, 1Fh				; Low 5 bits of the value
        mov     cl, mgroup_acPenalty[si]	; Subtract AC penalties
        sub     ch, ch
        sub     ax, cx
        mov     [bp+targetAC], ax 		; Save the target AC
        or      ax, ax				; If the target AC is less than zero...
        jge     short loc_19741
        mov     [bp+targetAC], 0		; ...then set it to zero

loc_19741:
        mov     ax, 10
        sub     ax, [bp+targetAC]		; Normalize AC value with player AC (10 - ac value)

l_setTargetAc:
        mov     [bp+targetAC], ax		; Save it
And the player sourceAttack calculation:

Code: Select all

        mov     ax, [bx+character_t.ac]
        mov     [bp+sourceAttack], ax
...
loc_197B6:
        mov     bx, [bp+charP]
        mov     bx, [bx+character_t.class]
        mov     bl, someClassMap[bx]	; This looks like an overflow. The class field is
                                ; 10 for a monster and 11 for an illusion. The
                                ; someClassMap array only has 0-9 and overflows when
                                ; called with a summon.
                                ; The map for c_summon is 0
                                ; The map for c_illusion = 19
        sub     bh, bh
        mov     al, bat_meleeClassBonus[bx] ; The meleeClassBonus for:
                                ; c_summon = 0
                                ; c_illusion = 0x20
                                ; This means that an illusion should never miss
        sub     ah, ah
        sub     [bp+sourceAttack], ax	; Subtract the melee class bonus
        mov     al, songToHitBonus
        sub     [bp+sourceAttack], ax	; Subtract the song to-hit bonus
        mov     al, fearPenalty
        add     [bp+sourceAttack], ax	; Add the spell fear penalty
 
        cmp     [bp+sourceAttack], 10	; ----
        jle     short loc_197E4		; This block of code sets the limits at +10 and -10
        mov     [bp+sourceAttack], 10
        jmp     short l_compareAttack

loc_197E4:
        cmp     [bp+sourceAttack], -10
        jge     short l_compareAttack
        mov     [bp+sourceAttack], -10	; ----

l_compareAttack:
        mov     ax, [bp+targetAC]
        cmp     [bp+sourceAttack], ax
        jle     short loc_197FC
        
        ; sourceAttack is higher than targetAc. Swing and a miss
        sub     ax, ax
        jmp     l_return
coldfoxred
Posts: 11
Joined: Wed Jan 29, 2020 5:20 am

Re: Bards Tale 1 - Speed Running

Post by coldfoxred »

Thanks, this has been quite helpful.

FYI, I clocked in a 1 hour 51 minute speedrun, inclusive of time spent rolling. See:
http://bardstalespeedrun.com/2020/03/03 ... ure-rules/

Since I'm well under two hours for a party speedrun, my next task is to try a single hero speedrun. Unfortunately, the game has four barriers that certain classes cannot ever overcome alone: These include:
1. the Throne to access Harkyn 2
2. the Crystal Golem in Kylearan's Tower,
3. the Portal up from Mangar 4 to Mangar 5, and
4. the Possession Trap in Mangar 5.

Magic users can deal with 1, 3, and 4, but there seems to be no solution for the Crystal Golem. Monks and Rogues can deal with 3, but not 1, 2, or 4. Warriors/Paladins/Hunters can overcome 2, but not 1, 3, or 4. Bards can overcome 1 and 2, but not 3 or 4.

[The possession trap is, in theory, not a complete bar to progress, but the Mangar fight is essentially impossible without divinely good RNG (i.e., 1/Million odds).]

As such, is anyone aware of an in-game way to get past the Crystal Golem (or more particularly, get the Onyx Key) without the Crystal Sword? [PC Version]

I've tried the vast majority of spells (damage, stone touch, DEST, anti-magic, spellbind, etc.) to no avail. Having the crystal sword in inventory and not equiped is not enough. No summonable monster will permanently kill it, including Demon Lords with their stone touch attack. There's no teleport or phase door options that I'm able to figure out in Kylearan's Tower. And there's no other way to get an Onyx Key outside of Mangar except from Kylearan. There's also no way I can figure out to enter Mangar without the Onyx Key.

Does anyone else have any thoughts about how a spellcaster could get an Onyx Key or enter Mangar alone in-game?

If not, I'm considering just editing the game files to make the Crystal Sword wieldable by all classes just for the sake of enabling a solo run. I might do something similar for Ali's Carpet and Exorwands.

Of note, in the PC version, a dead bard can sit on the Throne to open the door to Harkyn 2. And a dead hero with the crystal sword equiped is enough to win the Crystal Golem fight and progress further. So the alternative to editing the game files is to haul around a dead bard for certain game tasks. That's sortof doing it solo.....
User avatar
Darendor
Posts: 1502
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Re: Bards Tale 1 - Speed Running

Post by Darendor »

Well, I've only ever bothered with the C64 version of the game, so my advice/wisdom/insanity is derived from that version only.

The Crystal Golem fight is supposed to clear itself once you defeat it, provided that someone in the party has the Crystal Sword in inventory. If the MS-DOS version doesn't do this, well, that's a porting error. The MS-DOS version is replete with such errors, sadly.

There is no way to get the Onyx key except to meet Kylearan himself and have him give it to you. This means that you must go through all of the puzzles/traps in his tower to get this. If you attempt to enter Mangar's tower without it in inventory a magic mouth rebuffs you and denies you entry.

There is also no way around the portal up, and the possession trap.

I think you're probably biting off more than you can chew by attempting it with a single-character party, but best of luck.
coldfoxred
Posts: 11
Joined: Wed Jan 29, 2020 5:20 am

Re: Bards Tale 1 - Speed Running

Post by coldfoxred »

So, my first completed attempt at a single-hero (Conj->Magi->Sorc->Wiz) party clocked in a 2 hours 15 minutes with no deaths. see http://bardstalespeedrun.com/2020/03/04 ... solo-yolo/

Since there is no way around the Crystal Golem (that I'm aware of), for a single party member, I just used a Level 1 Bard to equip the Crystal Sword to pass it.

Subsequent attempts suggest a 1h30m solo run should be doable, but there are some strategy issues to work out. In particular, I am beginning to suspect that the Possession trap requires a very high saving throw (roughly level 30 wizard?) to allow a single party member to end the fight while still being possessed.

I've been entering the possession trap at around 1h40m only to very slowly die as a lvl 20 Sorcerer and 22ish Wizard. But a level 37+ wizard can escape. So maybe around lvl 30-36 there's hope. This level / saving throw issue may put a lower bound on the necessary time, but I still think 1h30m may be reasonable.

Interestingly, the surprising quickness of a single magic user hero has me noodling over strategies for the team speed-run. One thought in particular is that dragging 5 low level orc hunters into Mangar with a single lvl 20+ magic user could allow for an easy path through the Possession trap and a much easier first round at the final Mangar fight.
User avatar
Darendor
Posts: 1502
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Re: Bards Tale 1 - Speed Running

Post by Darendor »

Do you have a video of your speedrun posted anywhere?
coldfoxred
Posts: 11
Joined: Wed Jan 29, 2020 5:20 am

Re: Bards Tale 1 - Speed Running

Post by coldfoxred »

Finally, posted some youtube videos. Find my little channel at:
https://www.youtube.com/channel/UCq1xLo ... AhyONK9jg/

Find my 1 hour 26 min speedrun at:
https://www.youtube.com/watch?v=QtPwZVq7XhA&t=63s

Find my 2 hour 10 min speedrun at:
https://www.youtube.com/watch?v=yh0EEJ5iwIk

I'm now trying to see if I can get a speedrun done in under 1 hour. Should be doable with some luck.
Maven
Posts: 138
Joined: Sat Apr 16, 2011 9:39 pm

Re: Bards Tale 1 - Speed Running

Post by Maven »

Sweet!

Glad to see someone else is using the Magician trick.

I tried a couple of speed runs back in the day, but I barely made it in less than 2 hours. You have done a lot better than I did.

To always resist Demon Lords, a Wizard with a luckshield only needs to be level 34. You probably don't need to resist the Demon Lords -- you just have to keep out of melee range. To resist Mangar, you could get away with level 32. To resist the Vampire Lords, 30. You could probably get away with a lot less, and still survive with some decent dice rolls. If you tried your idea of cannon fodder for the possession trap, you wouldn't need to resist everything. However, if you fail the flee from the 5 storm giants, you could be in trouble there. I'd say at least level 26 to be safe there.

Two other suggestions that could save you some time and spell points: To instantly kill any Special, simply cast Target Dummy. Or Animated Sword. And maybe try Disrupt Illusion on doppelgangers.
coldfoxred
Posts: 11
Joined: Wed Jan 29, 2020 5:20 am

Re: Bards Tale 1 - Speed Running

Post by coldfoxred »

So. New speedrun. There and back again in 54:59. My first complete run under one hour.

I used a hobbit bard, a half-orc magician, and several of the original team that always loads when the game is first started (e.g., Merlin, El Cid, et al.). The first and the last fights in the game were a team effort. More details at my blog.

https://bardstalespeedrun.com/2021/09/08/55-and-under/

I think the overall same approach can be improved to come in just under 50 minutes. Improvement times beyond that require a deeper analysis of the gold economy. Extremely lucky RNG offers a lot of speedups. If it was possible to manipulate or predict item drops there could be some significant speedups.

These improvements come from a fairly deep analysis of the minimal acts needed to 1. get to, and 2. win the Mangar fight. Turns out, Magician's PHDO and REST are not strictly necessary. Sorcerer's MIBL and our favorite Red Dragon are also not strictly necessary. A Conjurer's APAR is (?) required. And almost everything a Wizard does is really helpful.

Ultimately, gold is the limiting factor at several key junctions. I think there's some potential in re-thinking the early gold economy.

The final fight with Mangar was really interesting. Spellbind is powerful and efficient.

I'll reply again with a Youtube link when I get some time to edit the video.
drifting
Posts: 153
Joined: Wed Dec 07, 2011 10:21 pm

Re: Bards Tale 1 - Speed Running

Post by drifting »

If you're not running glitchless, there are/were techniques for getting infinite gold in the guild. Not sure if any of them work in the DOS version. Worth a look though.
Post Reply