| Post AwE7rvPt1C4ZcOZLDU 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'… | |
| 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 #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 #AwfJYi7Ch1jna4LvLk by [email protected] | |
| 0 likes, 0 repeats | |
| @marcel you'd think. maybe there's more to it that I don't understa… |