slicey on swim

Everything technical and nerdy stuff here plz !

Re: slicey on swim

Postby JRandomNoob » 05.06.13

Regardless of the fact that this thread deserves a bump due to the awesomeness contained herein, I can’t help but brag about my leetness and post the proof.

The Algiers demo suffers from the infamous “no hands” bug, and well, long story short, today I solved a problem GlaD-don was having with an old 3.7 demo by converting and editing the crap out of it. Having discovered the tools that would allow one to abuse any demo to their heart’s content I recalled the broken Algiers demo. Now, I had recorded two very short demos (one normal, the other with the bug triggered) about a year and a half ago when I first tried fixing it, so now I could just convert and compare them. As one could imagine, the fix required changing just one byte, or in the converted XML format, under <persistants>:

<field index="3" value="3"/>

to

<field index="3" value="1"/>

The fixed demo is attached, what follows is my PM to don explaining the process of slicing his demo:

I couldn’t figure out how to make the demo play properly, but on the other hand, I was able to chop it into playable pieces, removing the GTV lobby stages (test_bigbox in the pak0 or Quake 3, no bloody clue why this would cause issues, it loads just fine with /map in UrT 3.7). The steps:

Get Quake Live Demo Tools — despite the name it also supports Quake 3 demos. Load the demo and export it (File -> Export -> Export XML). WARNING: the resulting file is pretty frickin’ large, 13 megs of CAvsICU.dm_68 resulted in a 279 MB file.

To open and edit this file, you need something that would support “huge files” (Google "text editor" "huge files" to find something that fits your system). I used the Windows-only JujuEdit.

The demo dump looks like this:

<?xml version="1.0" encoding="UTF-8"?>
<quakedemo protocol="68">

(these first two lines are necessary for parsing, whatever you delete, leave these intact)
(now we start loading the first map of the demo)
<message sequence="1354" acknowledge="7">
<gamestate sequence="93">
<config index="0">
(blah blah blah)
(loads of more tags)
<message sequence="32735" acknowledge="124">
<snapshot serverTime="608104550" deltaNum="2" snapFlags="4" areamaskLen="1" areamaskData="0xfd">
<player>
<field name="commandTime" value="608104337"/>
<persistants>
<field index="9" value="38"/>
</persistants>
</player>
</snapshot>
</message>

(this is where a new map is loaded, delete everything after or before this spot as needed and you’ll have a valid demo)
<message sequence="32736" acknowledge="124">
<gamestate sequence="1567">
<config index="0">
(blah blah blah)
(loads of more tags)
<message sequence="32735" acknowledge="124">
<snapshot serverTime="608104550" deltaNum="2" snapFlags="4" areamaskLen="1" areamaskData="0xfd">
<player>
<field name="commandTime" value="608104337"/>
<persistants>
<field index="9" value="38"/>
</persistants>
</player>
</snapshot>
</message>

(demo ends; leave the last tag intact or you’ll get a parse error)
</quakedemo>

After saving your edited XML, it’s time to load it back into QLDT (File -> Import). Converting it back to a demo is, um, a bit funny — right-click on the demo in the list and choose “Pack”. This will convert the demo and zip it up (and yes, there’s “Open” instead of “Save” in the dialog, at least in the Windows version).

*shrug* Done! Encounter any problems? Just ask, or if nothing else works, I could mangle your demos for you.

(Feel free to post this anywhere you like.)
Attachments
slicey_algiers-fixed.dm_68
(2.48 MiB) Downloaded 682 times
User avatar
JRandomNoob
DSWP Meme Artist
 
Posts: 1852
Joined: 12.05.10
Location: Estonia
-----tdm:  
nick: WidespreadPanic
skill: 618.539
kills: 12260
deaths: 10971
ratio: 1.11
-----bomb:  
nick: SelfRescuingPrincess
skill: 254.796
kills: 219
deaths: 202
ratio: 1.08

Previous

Who is online

Users browsing this forum: No registered users and 9 guests

Misc