VOGONS


Ancient DOS Games Webshow

Topic actions

Reply 3080 of 3091, by Gemini000

User metadata
Rank l33t
Rank
l33t

Ancient DOS Games Pro 11 - Maximum Score - Dangerous Dave is online!

This was a neat challenge to tackle, given that the game visually caps the score at 99,999, so I've always been curious just how high the score could go, but it turns out that figuring out the maximum possible score was ANYTHING but easy and required digging into some glitches and tracking extra lives too! :o

--- Kris Asick (Gemini)
--- Pixelmusement Website: www.pixelships.com
--- Ancient DOS Games Webshow: www.pixelships.com/adg

Reply 3081 of 3091, by K1n9_Duk3

User metadata
Rank Member
Rank
Member

it would be nice if someone could path the DOS version of the game at some point to add in a sixth digit to the score counter

Challenge accepted.

The following patch script adds the sixth digit to the score counter. You'll need my patching utility to apply the patch. Just copy the patch script into a plain text file and open it with the patching utility.

%exefile DAVE.EXE 172336

# allocate 2*7 bytes instead of 2*6 bytes
%patch $A39 $0E

# initialize first string with one 0 byte instead of 6
# (we don't actually need to initialize it at all, but
# this is easier than disabling the code entirely)
%patch $A46 $F9 # string var starts at bp-7 now
%patch $A4E $0001w

# initialize the second string with 6 '0' chars instead of
# five (+ terminating nul). The additional '0' char is placed
# in the now unused parts of the initialization for the first
# string.
%patch $25C9D "000000" 0 # new initial string data
%patch $A56 $F2 # string var starts at bp-14 now
%patch $A5A $07CDw # new offset of initial string data
%patch $A5E $0007w # copy 7 bytes into string var

# change maximum score value from 99,999 to 999,999
%patch $AEC $0F # high "word" (default: 1)
%patch $AF5 $423Fw # low word (default: $869F)

%patch $AFD $423Fw # low word (default: $869F)
%patch $B03 $000Fw # high "word" (default: 1)


# change score drawing code
%patch $B05
$56 # push si
$57 # push di
$B8 10w # mov ax, 10
$50 # push ax
$8D $46 $F9 # lea ax, bp-7
$50 # push ax
$FF $36 $4C62w # push word ptr score+2
$FF $36 $4C60w # push word ptr score
$E8 $989Cw # call _ultoa
$83 $C4 $08 # add sp, 8
$8D $46 $F9 # lea ax, bp-7
$50 # push ax
$E8 $9CA7w # call _strlen
$59 # pop cx
$50 # push ax ;length arg for movmem
$BA 6w # mov dx, 6
$2B $D0 # sub dx, ax
$8D $46 $F2 # lea ax, bp-14
$8B $F0 # mov si, ax
$03 $D0 # add dx, ax
$52 # push dx
$8D $46 $F9 # lea ax, bp-7
$50 # push ax
$E8 $993Ew # call _movmem
$83 $C4 $06 # add sp, 6
$BF 64w # mov di, 64
#drawdigit:
$8B $1E $4F86w # mov bx, grtype
$D1 $E3 # shl bx, 1
$8B $87 $01EAw # mov ax, word_1EA[bx]
Show last 23 lines
	$50		#	push	ax
$AC # lodsb
$98 # cbw
$5A # pop dx
$03 $D0 # add dx, ax
$83 $C2 $D0 # add dx, -48
$52 # push dx
$B8 $0001w # mov ax, 1
$50 # push ax
$57 # push di
$E8 $0E28w # call sub_0_1984
$83 $C4 $06 # add sp, 6
$83 $C7 $08 # add di, 8
$83 $FF 112 # cmp di, 112
$7C $D9 # jl drawdigit
$5F # pop di
$5E # pop si
$8B $E5 # mov sp, bp
$5D # pop bp
$C3 # retn


%end

Note that this will only modify the in-game score counter. The high scores still use 5 digits and will probably become somewhat corrupted when the score number has 6 digits. Fixing this would require a complete rewrite of the highscore code and file format. And since the highscore code has always been somewhat broken in the original release (it only uses the low 16 bits of the existing score values for comparison when trying to add in a new score), I didn't bother rewriting all of that bs.

Reply 3082 of 3091, by Gemini000

User metadata
Rank l33t
Rank
l33t
K1n9_Duk3 wrote:

Challenge accepted.

The following patch script adds the sixth digit to the score counter. You'll need my patching utility to apply the patch. Just copy the patch script into a plain text file and open it with the patching utility.

Someone else in the comments of the video pulled this off too... checking the date codes though, you did it first. ;)

--- Kris Asick (Gemini)
--- Pixelmusement Website: www.pixelships.com
--- Ancient DOS Games Webshow: www.pixelships.com/adg

Reply 3083 of 3091, by K1n9_Duk3

User metadata
Rank Member
Rank
Member
Gemini000 wrote on 2020-01-16, 11:38:

Someone else in the comments of the video pulled this off too...

Strange, I can't see any comment like that. More Youtube weirdness, I guess...

I also noticed another problem in the code that makes your current maximum score invalid - at least as far as the original (unpatched) game is concerned. The game doesn't just display your score as 99,999, it actually sets your score back to 99,999 every time you get more points, which means you won't get any extra lives for reaching 120,000 points and above... because your score isn't allowed to go that high. You can still get the extra life for 100,000 points because the check for the extra life is executed before the score is reset to 99,999.

Reply 3084 of 3091, by konc

User metadata
Rank Oldbie
Rank
Oldbie
K1n9_Duk3 wrote on 2020-01-16, 21:40:

You can still get the extra life for 100,000 points because the check for the extra life is executed before the score is reset to 99,999.

This means that you get an extra life every single time you get an item while at 99,999 points? Not that it matters of course (hey this whole thing is pointless), just for the laughs.

Reply 3085 of 3091, by K1n9_Duk3

User metadata
Rank Member
Rank
Member

No, once your score reaches 100,000 or above, the score limit for the next extra life will be set to 120,000. But since the score is reset to 99,999 every time the score counter is updated, you will never be able to reach 120,000 points and therefore will not get any more extra lives. In theory, you could still get the extra life for 120,000 points if you do something that gives you 20,001 points or more all at once, but nothing in the game is worth that many points.

Reply 3086 of 3091, by Gemini000

User metadata
Rank l33t
Rank
l33t

Ancient DOS Games Episode 262 - Rise of the Dragon is online!

It's interesting to see Dynamix's first forays into inventory-based adventure gaming... they definitely focussed so heavily on immersion that the end result kind of has a weird feel that's hard to give an overall comment on... Definitely gave it a try though!

And as for replies prior...

K1n9_Duk3 wrote on 2020-01-16, 21:40:
Gemini000 wrote on 2020-01-16, 11:38:

Someone else in the comments of the video pulled this off too...

Strange, I can't see any comment like that. More Youtube weirdness, I guess...

I also noticed another problem in the code that makes your current maximum score invalid - at least as far as the original (unpatched) game is concerned. The game doesn't just display your score as 99,999, it actually sets your score back to 99,999 every time you get more points, which means you won't get any extra lives for reaching 120,000 points and above... because your score isn't allowed to go that high. You can still get the extra life for 100,000 points because the check for the extra life is executed before the score is reset to 99,999.

The comment's in there. You may just have to switch out of "Top Comments" to "Newest First" as only showing the top comments will truncate the list. :P

As for the score, I can confirm that you DO still get extra lives properly even though the score is visually being held at 99,999. There's absolutely something more going on in the background. :B

EDIT: Uhh... I just tested this and discovered that... well... the way you get extra lives once you hit 99,999 is that all zero-point items (ie: gun and jetpack) now award maximum lives. O_O

That... kinda changes things a bit... ^_^;;;

--- Kris Asick (Gemini)
--- Pixelmusement Website: www.pixelships.com
--- Ancient DOS Games Webshow: www.pixelships.com/adg

Reply 3087 of 3091, by DracoNihil

User metadata
Rank Oldbie
Rank
Oldbie
Gemini000 wrote on 2020-01-18, 18:20:

The comment's in there. You may just have to switch out of "Top Comments" to "Newest First" as only showing the top comments will truncate the list. 😜

Just a slight suggestion, but Youtube does provide the option to default the viewing of comments from "Top Comments" to "Newest First" and I highly, highly recommend using this option. Youtube back in the early days only displayed comments in chronological order, and I don't really appreciate the whole "Top Comments" sorting because it's extremely unfair and biased by design.

I don't know if Youtube allows uploaders to change that setting en masse across the entire channels videos, but it does let you change the defaults for newly uploaded videos.

Steam Profile
YouTube Channel
Seal of Nehahra

Reply 3088 of 3091, by K1n9_Duk3

User metadata
Rank Member
Rank
Member
Gemini000 wrote on 2020-01-18, 18:20:

b]EDIT:[/b] Uhh... I just tested this and discovered that... well... the way you get extra lives once you hit 99,999 is that all zero-point items (ie: gun and jetpack) now award maximum lives. O_O

That... kinda changes things a bit... ^_^;;;

Yeah, I double-checked the code and discovered that the original C code would have looked something like this:

if (score - lastextra >= 20000)          // unsigned comparison!
{
lastextra = (score / 20000) * 20000; // unsigned integer division and multiplication (round down to multiples of 20000)
if (lives < 3) // signed comparison
{
lives++;
}
}
if (score > 99999) // unsigned comparison
{
score = 99999;
}

So reaching 100,000 points for the first time gives you an extra life if you need one and sets lastextra to 100,000 points. Collecting something that doesn't give you any points while lastextra is 100,000 and score is 99,999 gives you an extra life if you need one (because of the unsigned comparison the the beginning) and sets lastextra to 80,000. Collecting anything worth points while lastextra is 80,000 and score is 99,999 increases your score to 100,000 or above and thus gives you an extra life (if you need one) and sets lastextra to 100,000. Rinse and repeat.

Reply 3089 of 3091, by Gemini000

User metadata
Rank l33t
Rank
l33t
DracoNihil wrote on 2020-01-18, 19:19:

Just a slight suggestion, but Youtube does provide the option to default the viewing of comments from "Top Comments" to "Newest First" and I highly, highly recommend using this option.

I mean, it SOUNDS like a good idea to default to that view on videos, but the reason I don't is to significantly reduce repeat informational comments. Typically, a person with good intentions who wants to provide extra info is going to, at the very least, skim the comments for a brief moment to see if anyone's posted the info they intend to post and will thumbs up such posts instead of burning time posting repeat info. Showing top comments by default also disseminates the most interesting comments for people who only want to check the first few instead of reading an essay worth of comments. Switching to the chronological view takes two clicks and is better suited for people who want to take time reading all of the comments, meaning they're also the most likely people to spend time making those two clicks to change the mode.

Yeah, I put a ton of thought into this and do appreciate the suggestion! ...but my vids will continue to default to Top Comments mode. ;)

--- Kris Asick (Gemini)
--- Pixelmusement Website: www.pixelships.com
--- Ancient DOS Games Webshow: www.pixelships.com/adg

Reply 3090 of 3091, by DracoNihil

User metadata
Rank Oldbie
Rank
Oldbie

Well don't "Pinned comments" always show on top regardless of the option? I never did look into that either but I figured if something is pinned it doesn't matter what the option is set to, it'll always be bumped to the top.

There probably is a userscript people can use to automatically set the option to chronological order, now that I think about it. But I personally try to keep the option on my channel stuck on "Newest first" simply because I've been on Youtube *way* before the whole "popularity matters" craze.

Steam Profile
YouTube Channel
Seal of Nehahra

Reply 3091 of 3091, by Gemini000

User metadata
Rank l33t
Rank
l33t
DracoNihil wrote on 2020-01-19, 17:10:

Well don't "Pinned comments" always show on top regardless of the option? I never did look into that either but I figured if something is pinned it doesn't matter what the option is set to, it'll always be bumped to the top.

So here's a fun fact about that: You can't actually pin a comment to a video from your comments aggregator, you can ONLY do it from the page for a video itself... which means the moment you go to do that, you've now technically watched your video, so it starts cluttering your history, causes the algorithm to start recommending you watch your own videos, and even triggers ads to start playing which, by YouTube's rules, you're not supposed to watch as you're not supposed to be triggering ads on your own videos.

Basically, the process of pinning a comment is actually an extreme hassle for a variety of reasons since it's not just a simple click or two. To do it without violating YouTube's rules I have to:

1. Select a comment from my aggregator that I want to pin and middle click to view the comment on the video page itself in a separate tab.
2. Wait for the video page to load.
3. Wait to see if the video or ads start playing back automatically and stop them if they do... though there's a random chance they will stop themselves and ALSO a random chance the page will automatically seek to the comment I intended to view whether playback starts and/or stops... which is also seemingly random.
4. Find the comment. There's a random chance it won't be highlighted properly.
5. Click the appropriate ... menu and select "Pin".
6. Go into my watch history and remove the video from it.
7. Close the tab.

...yeah... all because YouTube doesn't want to add a "Pin" option into the comment aggregator. >_>

I'd rather just let the Top Comments algorithm do its thing. :P

--- Kris Asick (Gemini)
--- Pixelmusement Website: www.pixelships.com
--- Ancient DOS Games Webshow: www.pixelships.com/adg