Introduction
Introduction Statistics Contact Development Disclaimer Help
Post AwG4tzZOdUHDX5EOCu by [email protected]
More posts by [email protected]
Post #AwDjECwq1H3hVYVhmi by [email protected]
0 likes, 0 repeats
I started hacking on another game (Super Star Wars for DOS (which Mobygames doe…
Post #AwDjiJvIeOAPpR9L5k by [email protected]
0 likes, 0 repeats
@foone Some good memories there.
Post #AwDjvRKEROBGYC4EKG by [email protected]
0 likes, 0 repeats
@foone Looks like the EXE is just a loader, yeah, all the chonk is in the Resou…
Post #AwDkWUoSRACC56sIqG by [email protected]
0 likes, 0 repeats
the game switches between cutscenes, platforming stages, and 3d speedracer segm…
Post #AwDkzp1QNYn99mvKSG by [email protected]
0 likes, 0 repeats
@foone I bet they had some assembly programmer very proud of his loader.
Post #AwDlfGzrH4aVn9xMoq by [email protected]
0 likes, 0 repeats
hah, it's got files named like T_MODE7.PAL in the resource file. mode7 is a…
Post #AwDnQ99qKxJ52oXeW8 by [email protected]
0 likes, 0 repeats
oh they're doing some fun shit here. one of the first things the EXE does i…
Post #AwDnctUjsnQSEOOUlc by [email protected]
0 likes, 0 repeats
@foone The developers were Danish, maybe the demoscene is where they got their …
Post #AwDoHvAqXp77JOeWxM by [email protected]
0 likes, 0 repeats
@foone My DOS days and my programming days are far enough apart, that I don&#39…
Post #AwDpG3VegKs4XV3my0 by [email protected]
0 likes, 0 repeats
okay so the new intf1 looks at AX. if it's FFFF it quits to DOS. otherwise …
Post #AwDq37IjNE2IUKPQ9o by [email protected]
0 likes, 0 repeats
ooh, all the strings are $-terminated.this isn't C! this is some manual ass…
Post #AwDqKxlhYSNM8STArg by [email protected]
0 likes, 0 repeats
"This program requires at least a 386 SX (So go out and buy one and become…
Post #AwDrPQohayOzL8ZGBE by [email protected]
0 likes, 0 repeats
@foone "Detroit: Buy a 386 SX"
Post #AwDvxf79LMADLTm4GW by [email protected]
0 likes, 0 repeats
@foone Not really Fx interrupts are reserved for user programs. A convention ex…
Post #AwE4YUD3eIhzsBbkNk by [email protected]
0 likes, 0 repeats
@foone that's a memory mapper overlay manager alright
Post #AwE78CBKLyv4IGxBQW by [email protected]
0 likes, 1 repeats
@foone I stuck with my 4.7 MHz 8088 PC until the 386 SX clones came around.
Post #AwE7YspaPHtu66VgoK by [email protected]
0 likes, 0 repeats
@foone Does this mean that I get to skip being a human if I don't go out an…
Post #AwE7oLVu32ydOlg0m0 by [email protected]
0 likes, 0 repeats
@foone wonder if it counts if it's in a Cool Whip tub in my garage
Post #AwE7rvPt1C4ZcOZLDU by [email protected]
0 likes, 0 repeats
@foone Could have been somebody's idea of a shared library in MS-DOS world?
Post #AwE7wETg5ikhtTOdhA by [email protected]
0 likes, 0 repeats
@foone could it be some fun way to do cooperative multitasking?
Post #AwEGk4qqxFcA9QW0GW by [email protected]
0 likes, 0 repeats
@riley @foone custom overlay? C++-style virtual table?
Post #AwEz6DxSApMGkRyOdU by [email protected]
0 likes, 0 repeats
@foone The $ termination suggests DOS strings (inherited from CP/M and used wit…
Post #AwFLsSC4kKUBn8DPWa by [email protected]
0 likes, 0 repeats
@baljemmett oh, right, DOS, not bios. I misremembered.
Post #AwFerOVarPazCYYLiq by [email protected]
0 likes, 0 repeats
So I wrote some code to list the contents of resource.001. Resource.dir is a pr…
Post #AwFeuJbXYAtorPj9cW by [email protected]
0 likes, 0 repeats
first idea: breakpoint the game in DOSBox, find it reading a chunk, and see wha…
Post #AwFexedpn8jKyTOPR2 by [email protected]
0 likes, 0 repeats
Int 21/AH=3Fh, where are you?
Post #AwFfIZpMsvbw7plQyu by [email protected]
0 likes, 0 repeats
I wonder how hard it would be to make this better (IO tracing).probably "q…
Post #AwFfOTdeo9iKfV6FXc by [email protected]
0 likes, 0 repeats
maybe I make it generic and hack in a way to add ad-hoc logging to dosbox. like…
Post #AwFfRENG19CWC9k4Dg by [email protected]
0 likes, 0 repeats
then build an IO tracer on that
Post #AwFfVc5Fo8Pwt5PWvA by [email protected]
0 likes, 0 repeats
@foone lzw lossless algorithm
Post #AwFfuv2gSPdMvTH8FM by [email protected]
0 likes, 0 repeats
hmm. they read resource.dir in one read of 16384 bytes. but the file is current…
Post #AwFfyqJPzAPFPjyQZE by [email protected]
0 likes, 0 repeats
reverse engineering is a fun drug that makes you think about potential bugs tha…
Post #AwFg5xNE86UHLG9CEK by [email protected]
0 likes, 0 repeats
I did some manual tracing of file handles to file names.it turns out that file …
Post #AwFgGdzkWGeOQRGJBQ by [email protected]
0 likes, 0 repeats
hmm. that may be just designed into their IO system, it seems they're readi…
Post #AwFgJWpfbdwl50vHpA by [email protected]
0 likes, 0 repeats
@foone It's even more fun when you do that and it ends in a CVE for a curre…
Post #AwFhCBL1Du74LLeA3k by [email protected]
0 likes, 0 repeats
oh hey that's the EMS page size. that's definitely related
Post #AwFhVr38Mgi3DAf6Yq by [email protected]
0 likes, 0 repeats
oh fuck me do they just inhale the whole file into RAM?
Post #AwFhZxaE0y6MdM67P6 by [email protected]
0 likes, 0 repeats
the pirates who wrote the info.txt file say the minimum ram is 4mb, and the dat…
Post #AwFhzrvLg7FubwKfIW by [email protected]
0 likes, 0 repeats
this code is an interesting mixture I've not personally run into before: it…
Post #AwFi3jBw5TX8gavmpk by [email protected]
0 likes, 0 repeats
at least for now. maybe it switches into protected mode for each sub-game?
Post #AwFibrG0bc57Xz6uxM by [email protected]
0 likes, 0 repeats
@foone do you not?
Post #AwFir0aiBVZyq71D5k by [email protected]
0 likes, 0 repeats
@neko yeah but I live in 2025 where I have 16gb of ram even on this shit laptop…
Post #AwFj8HL9AKUxhyyP1U by [email protected]
0 likes, 0 repeats
@foone Oh, no way, I live in 2025 too!... wouldn't recommend it.
Post #AwFjBSatmP9VTsrGQS by [email protected]
0 likes, 0 repeats
hmm. this code reads 0x8000 bytes each pass, but the pointer stays the same: 0.…
Post #AwFjf08CAWjbtNWD20 by [email protected]
0 likes, 0 repeats
the game definitely does seem to be trying to read the whole datafile into RAM.…
Post #AwFkCHiLoeSDyvIiIq by [email protected]
0 likes, 0 repeats
it only allocates one (16kb) page? WHAT ARE YOU EVEN DOING
Post #AwFkGkHfXKhRkNwofg by [email protected]
0 likes, 0 repeats
@foone time lord allocation
Post #AwFkO3GFNXj8d9lZqa by [email protected]
0 likes, 0 repeats
I'm looking at the wrong fucking code.this is the code to load the resource…
Post #AwFkRHG9myUWunGKTQ by [email protected]
0 likes, 0 repeats
@ozzelot ooh, I want a tardis::malloc function! reserve ram in chips that are b…
Post #AwFkiUBQzXhrv8G7kW by [email protected]
0 likes, 0 repeats
okay. the first file it loads is "main.drv". makes sense.
Post #AwFl5bcbVDu3eMzYY4 by [email protected]
0 likes, 0 repeats
@foone My 60GB iPod had a tendency to show up as being implausibly large; don&#…
Post #AwFn92BrNS98pQFGIS by [email protected]
0 likes, 0 repeats
arg. can't find the compression. the CPU trace starts skipping after a poin…
Post #AwFntGdxyLYWyXRB0S by [email protected]
0 likes, 0 repeats
hey future foone: this is past foone. hi. turn off the dynamic core. it fucks u…
Post #AwFoPCY4jVKDXduQiW by [email protected]
0 likes, 0 repeats
ugh. this call goes directly to a function that instantly RETs.that makes me su…
Post #AwFpCPuZq3AvAwtysK by [email protected]
0 likes, 0 repeats
hmm. a bunch of functions start with NOP. and a bunch start with RET.those are …
Post #AwFqaec0vwQ7fmL9n6 by [email protected]
0 likes, 0 repeats
@foone new debugger plugin which monitors for writes to code and makes the comp…
Post #AwFqaeiOYDWZzZKFjk by [email protected]
0 likes, 0 repeats
@alilly I tend to scream anyway when that happens
Post #AwFsHu9H934EGT5M24 by [email protected]
0 likes, 0 repeats
@foone could be an optimization to remove a dynamic check on something that cha…
Post #AwFtIouyB6WuHlOVpQ by [email protected]
0 likes, 0 repeats
this game makes use of the optimization that filenames are exactly 4 words long.
Post #AwFtMsmrjZmVRbXbBQ by [email protected]
0 likes, 0 repeats
12345678.ABCit writes it as one 32bit int (1234), another (5678), and a third (…
Post #AwFtPtDuZJvvfLcpA8 by [email protected]
0 likes, 0 repeats
except 4321,8765,CBA. because little endian
Post #AwFvsZGi2Uhe5DjijY by [email protected]
0 likes, 0 repeats
@foone Did the game come from Eastern Europe?
Post #AwFvsZMjg5WWNuYX7w by [email protected]
0 likes, 0 repeats
@riley Denmark, apparently.
Post #AwFywqsApRF3hcziSm by [email protected]
0 likes, 0 repeats
I still can't find the decompression routine! I've manually stepped thr…
Post #AwG0YWXGzQZTaQkHsu by [email protected]
0 likes, 0 repeats
ugh i think I found the dynamic code. it doesn't make any sense, it's o…
Post #AwG1Zg3ZB1cxMIxrG4 by [email protected]
0 likes, 0 repeats
I found a function that vaguely looks like a decompression routine... naturally…
Post #AwG4tzZOdUHDX5EOCu by [email protected]
0 likes, 0 repeats
@foone automation
Post #AwG5IrWBi1wJnfabI0 by [email protected]
0 likes, 0 repeats
@foone This shows up in some historic stuff, like how OS/8 on the PDP-8 had two…
Post #AwG7at2YzKc7drSHh2 by [email protected]
0 likes, 0 repeats
I've mapped out 27 of the 80 possible f1 subfunctions
Post #AwGAMB6fps7VBz3WWe by [email protected]
0 likes, 0 repeats
@foone I wrote a game like that back in the day, probably in a similar timefram…
Post #AwGECvExr9qDC6m9Ts by [email protected]
0 likes, 0 repeats
@foone although widely believed to have been released by Intel in 1985, new res…
Post #AwGHwPGdMasrDNw8dk by [email protected]
0 likes, 0 repeats
@foone Unreal Mode?
Post #AwGHwPN0yrzJXAvEaO by [email protected]
0 likes, 0 repeats
@NekoEd no, they're not doing anything tricky with segment registers, they&…
Post #AwGKRQOlPL4hbmeq9Y by [email protected]
0 likes, 0 repeats
@foone Ah.
Post #AwGQrJnt9I3oPR8jjM by [email protected]
0 likes, 0 repeats
@deater78 @foone can you set a segment to be 32-bit in real mode or do you just…
Post #AwGQrc4VEG2t4B3G7s by [email protected]
0 likes, 0 repeats
@gloriouscow @foone It's been a *really* long time since I did this but I t…
Post #AwHJpqblhrML3BmZ9s by [email protected]
0 likes, 0 repeats
okay so I can breakpoint two points:A. when (and thus where) the compressed dat…
Post #AwHJzP9EepsymPzeVs by [email protected]
0 likes, 0 repeats
the main problem is that I'm not 100% sure that there's only one step A…
Post #AwHK72SOuDGSipb8YS by [email protected]
0 likes, 0 repeats
back to the debugger mines
Post #AwHNKN7Th51uQtrRIm by [email protected]
0 likes, 0 repeats
okay so I've identified f1 subfunction 0501, which looks up a chunk by name…
Post #AwHNN5YDTEEyoTfAIq by [email protected]
0 likes, 0 repeats
why must you do this to me, game
Post #AwHNUdLeDAGRf1Njge by [email protected]
0 likes, 1 repeats
sometimes I dream of a world where every game doesn't design their own WAD …
Post #AwHNvXvoSUI0gD8AdM by [email protected]
0 likes, 0 repeats
@foone *raises hand* I was guilty of that as recently as Acronia.Never again.
Post #AwHOb7yRMIC4KuBfe4 by [email protected]
0 likes, 0 repeats
@foone You know it's weird. One of the times I got far enough along in game…
Post #AwHOb85suc9GhzfcFU by [email protected]
0 likes, 0 repeats
@trysdyn @foone I love how devs sometimes get so bent out of shape doing this t…
Post #AwHOb8CGWtFj1meiC8 by [email protected]
0 likes, 0 repeats
@rotopenguin @trysdyn I know people who use FAT32 in 2025 and they're all c…
Post #AwHPc3T9gxfWbpYmcC by [email protected]
0 likes, 0 repeats
@foone "find the entry point and shove it into unicorn"?
Post #AwHQ4UaCTfqcoDPnrU by [email protected]
0 likes, 0 repeats
@whitequark possibly! I gotta find it first, which is proving to be the tricky …
Post #AwHQAdedf8mWgJQEAy by [email protected]
0 likes, 0 repeats
@foone A wannabe game developer I knew claimed in the early 2000s that games co…
Post #AwHQAdl1HPsz06PK7c by [email protected]
0 likes, 0 repeats
@juliancalaby @foone i think this observation is still true today, though somew…
Post #AwHQI7lm5sBs6oKTia by [email protected]
0 likes, 0 repeats
@foone i do wonder what you would do with all your free time in that timeline :P
Post #AwHQZWiuZM1UQOHvYe by [email protected]
0 likes, 0 repeats
@foone Me too.
Post #AwHR5JB2TB3tg6bCu8 by [email protected]
0 likes, 0 repeats
@rakslice hack more games, since I wouldn't have spent half my game-hacking…
Post #AwHRE6WqrfL73Zzp4K by [email protected]
0 likes, 0 repeats
okay it seems to be decompressing in the function I called load_some_chunks.it&…
Post #AwHRIDe6LVegHuLiGu by [email protected]
0 likes, 0 repeats
my kingdom for a step-to-return in dosbox's debugger
Post #AwHRLdXiWAVzTUzbkm by [email protected]
0 likes, 0 repeats
I'm gonna rewrite the whole debugger in python so I can add 5000 features. …
Post #AwHRye6kLpGiWLyj3Y by [email protected]
0 likes, 0 repeats
Finally got an example of compressed data & uncompressed data
Post #AwHSUA5vTVe2hecf3o by [email protected]
0 likes, 0 repeats
@fooneDo it. I believe in you.
Post #AwHTjnT3T8wj79Sap6 by [email protected]
0 likes, 0 repeats
@foone That's so weird, what is all the '...' padding for in the un…
Post #AwHcfdro7bmhld8DiK by [email protected]
0 likes, 0 repeats
@Ra @foone Fixed length fields maybe? Inefficient with space but very easy to a…
Post #AwHcjLkJR8S2izOTxo by [email protected]
0 likes, 0 repeats
me repairing windows by reformatting the 100mb fat32 ESP partition and rebuildi…
Post #AwHfitnxcYqRvfZpo0 by [email protected]
0 likes, 0 repeats
@foone but but we can't assume there will always be a filesystem! /s
Post #AwHkrOp8g06qDj06iG by [email protected]
0 likes, 0 repeats
@foone hey so I have good news for you about Kitsune Tails
Post #AwHoraFObUnZSycqOG by [email protected]
0 likes, 0 repeats
@foone #PortalFoxesTD uses the open GLB format for models, WAV for audio, and t…
Post #AwHyD0RZIhwoNiborg by [email protected]
0 likes, 0 repeats
@foone you can get the game here, I was going to link the internet archive vers…
Post #AwHyD0YItfKqiblCMa by [email protected]
0 likes, 0 repeats
@deater78 @foone The banned sequel: Damage to Realistic Objects.
Post #AwIp3wxICDNmWk0xNY by [email protected]
0 likes, 0 repeats
@foone sorry we love to just mmap
Post #AwJAQ1MYaVDnbZCHz6 by [email protected]
0 likes, 0 repeats
@pyromuffin this is game from 1995! there is no mmap yet!
Post #AwJYuDBTbBZJr5wXxI by [email protected]
0 likes, 0 repeats
the code looks relatively RLE but from looking closer at the compressed/uncompr…
Post #AwJZrOvPadMtM2eXRI by [email protected]
0 likes, 0 repeats
cleaned up the output of my resources script, using the rtable formatter I was …
Post #AwJaT6HtKcxEYW8zR2 by [email protected]
0 likes, 0 repeats
this compression uses BP as the variable for how much into the loaded data it i…
Post #AwJb87c1JN3sXM7TMm by [email protected]
0 likes, 0 repeats
@foone It's a free register.
Post #AwJbUDzoG27YhrmoeO by [email protected]
0 likes, 0 repeats
compression_mask = (1 << num_bits) - 1;oh hey math! that formula gives yo…
Post #AwJc9pcdGkZXH6mjia by [email protected]
0 likes, 0 repeats
interesting. this code keeps a running checksum of the decompression, using the…
Post #AwJcdlEi8kEwMNrq6q by [email protected]
0 likes, 0 repeats
@foone uncheckedsum
Post #AwJctVZM9og0P326nA by [email protected]
0 likes, 0 repeats
they read every byte twice in their inner loop. come on guys, AL already has th…
Post #AwJdcY6tYaShJaCJhA by [email protected]
0 likes, 0 repeats
every time they read a byte, they rotate a 16bit word in memory that's init…
Post #AwJdiGzk6WfvyCa7Ki by [email protected]
0 likes, 0 repeats
this saves like one byte on the traditional way to do this, where you have a va…
Post #AwJdkpyr01RJ3UO9WS by [email protected]
0 likes, 0 repeats
which is a nice optimization on something they forgot to use
Post #AwJgGa9hZVXj9LjA1I by [email protected]
0 likes, 0 repeats
there are definitely two functions that read chunks, but they do it slightly di…
Post #AwJhXOiNSeSKXnWqPo by [email protected]
0 likes, 0 repeats
ahh! one of them allocates some memory for the loaded chunk, the other one take…
Post #AwJiar2Yhhn9DWBGGO by [email protected]
0 likes, 0 repeats
@cinebox nice
Post #AwJyNLXK7b4n0n9Rlg by [email protected]
0 likes, 0 repeats
I've named 121 of 123 functions.but keep in mind, at least 16 of them are N…
Post #AwfH4NlPaxATrkZQ0m by [email protected]
0 likes, 0 repeats
@foone Couldn't the first one just call the second one after allocation?
Post #AwfJYi7Ch1jna4LvLk by [email protected]
0 likes, 0 repeats
@marcel you'd think. maybe there's more to it that I don't understa…
Post #AwfVfSZG5yzuq1SZHc by [email protected]
0 likes, 0 repeats
@foone Maybe the original author(s) didn't completely understand what they …
You are viewing proxied material from pleroma.anduin.net. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.