Post AdQL8PSVOpXMZjO3Lk by [email protected] | |
More posts by [email protected] | |
Post #Acmi8T5wPHe6TWQsbY by [email protected] | |
0 likes, 0 repeats | |
wait a fucking second...it has been ZERO DAYS since I found an off-by-one error… | |
Post #AcmiHMfRfmRN9CHVwW by [email protected] | |
0 likes, 0 repeats | |
So here's the zoomed out (F1) view in Railroad Tycoon. It's supposed to… | |
Post #AcmiQwahTnabAUd70y by [email protected] | |
0 likes, 0 repeats | |
Here's some lakes north of Winnipeg. We can see that they go right up to th… | |
Post #Acmiot32Iu1R87IhDE by [email protected] | |
0 likes, 0 repeats | |
So let's hit F4 and zoom in and NOPE.The eastern part of the lake that goes… | |
Post #AcmiowAahGqcoPrGu8 by [email protected] | |
0 likes, 0 repeats | |
The zoomed-out view is missing a single line of tiles from the top of the map! | |
Post #Acmj13ONfb6qgf5OAC by [email protected] | |
0 likes, 0 repeats | |
SIDNEY K. MEIER, THIS IS UNACCEPTABLE | |
Post #AcmjGIoyaUsysnnTJg by [email protected] | |
0 likes, 0 repeats | |
@foone (*squints) So you found one yesterday? | |
Post #AcmjGItEKgHx5zmrwm by [email protected] | |
0 likes, 0 repeats | |
@flyingsaceur heh | |
Post #AcmjS9Y2tH4Db8WpTE by [email protected] | |
0 likes, 0 repeats | |
It does it on all 4 cardinal directions.I notice there's a white rectangle … | |
Post #AcmjSCFiprBzzAyjpI by [email protected] | |
0 likes, 0 repeats | |
I noticed another error: the code that determines which shorelines to draw brea… | |
Post #AcmjSD1vwbl0OhXEyO by [email protected] | |
0 likes, 0 repeats | |
This only happens on the West and South borders. The North and East borders are… | |
Post #Acmkb5M3wyhF9YkMO8 by [email protected] | |
0 likes, 0 repeats | |
apparently the save file grows by 4 bytes for every single piece of track you p… | |
Post #Acmku3aajt4pBAaZIu by [email protected] | |
0 likes, 0 repeats | |
I think I just found an off-by-two error?if you are in F4 mode and right click … | |
Post #Acml4MGq8Xxa0xGJjU by [email protected] | |
0 likes, 0 repeats | |
interesting: The game's internal coordinate system is a 16-bit unsigned int… | |
Post #AcmlGY2oBjwE0MVmoy by [email protected] | |
0 likes, 0 repeats | |
although the coordinates are... weird. Some of them aren't on the map, I th… | |
Post #AcmlP52PP2wOeJOR8q by [email protected] | |
0 likes, 0 repeats | |
yeah.So the point I'd call (1,0) is point 200.So 199 should be at (0,199) r… | |
Post #AcmliqaoopL5dluiLg by [email protected] | |
0 likes, 0 repeats | |
this would make some amount of sense if they were just stuffing the coordinates… | |
Post #AcmlqwidvRsSxPR3Eu by [email protected] | |
0 likes, 0 repeats | |
also why combine the X+Y coordinates into this idea of point numbers? the map i… | |
Post #AcmnyXH6bsmkGiIlZQ by [email protected] | |
0 likes, 0 repeats | |
okay, the 4 bytes added are encoded like this:16-bit ushort: tile number8-bit i… | |
Post #AcmoFKXPDfMrgivz0K by [email protected] | |
0 likes, 0 repeats | |
bridge types are set up like:00: tunnel01: wood10: stone11: iron | |
Post #AcmolQhTqJqk4Ex7zM by [email protected] | |
0 likes, 0 repeats | |
@crobbler something like 212,576 bytes? | |
Post #AcmpBBX4rJRCYRMrzc by [email protected] | |
0 likes, 0 repeats | |
track tiles are <63if the number has the 64 bit on, it means it's for th… | |
Post #AcmpfG4AZDSrIrBcMS by [email protected] | |
0 likes, 0 repeats | |
arg. all this starts at a fixed offset, except it stops being fixed if you name… | |
Post #AcmppGhd3VQCAmPswa by [email protected] | |
0 likes, 0 repeats | |
@crobbler it gets tight if you have more than one save, though, especially sinc… | |
Post #AcmpyY6JjrpCjrODku by [email protected] | |
0 likes, 0 repeats | |
if bridge types 1 and 2 are on (11), it means there's a station there. | |
Post #AcmqA5ogj19qUWeFgO by [email protected] | |
0 likes, 0 repeats | |
trying to figure out the naming thing in a highly scientific way: I keep rewind… | |
Post #AcmqbWZxKb4tJPq0NU by [email protected] | |
0 likes, 0 repeats | |
crap. I can't find any obvious header stuff that changes length based on th… | |
Post #AcmquHuk4vjtKfVWk4 by [email protected] | |
0 likes, 0 repeats | |
lemme hit it from the other end:maybe there's a header field that says how … | |
Post #AcmrGeIPXoD17RF03k by [email protected] | |
0 likes, 0 repeats | |
got it. offset 0x3738 is a 16-bit int of how many tracks there are.so we just n… | |
Post #AcmrXNfebpy6Tp5hlA by [email protected] | |
0 likes, 0 repeats | |
huh. I somehow bugged the game without even trying! I started a new map, connec… | |
Post #AcmrezHt9LPdAnbOFM by [email protected] | |
0 likes, 0 repeats | |
for some reason it thinks they both go way off to the west. | |
Post #AcmsrYAHP1EQlwb5ii by [email protected] | |
0 likes, 0 repeats | |
I want to test my theory on how railroad player numbering works, but player 3 r… | |
Post #Acmt1WqVA4D5Zr6XKa by [email protected] | |
0 likes, 0 repeats | |
FINALLY.yeah, it works how I expected. | |
Post #AcmtL31JlHp4rnTGBE by [email protected] | |
0 likes, 0 repeats | |
also my track number thing is wrong.that seems to just be for P1 tracks, so I n… | |
Post #AcoLR1Hi7SA360jbO4 by [email protected] | |
0 likes, 0 repeats | |
I found the other player's track count, which seems to store all the other … | |
Post #AcoM36mW88fV9GJ2h6 by [email protected] | |
0 likes, 0 repeats | |
I also found another bug: There's a limit to how long a train can pathfind.… | |
Post #AcoMDh9Zksteqk8ii8 by [email protected] | |
0 likes, 0 repeats | |
also the "miles of track" indication on your end of fiscal period sum… | |
Post #AcoNX9AZuqJvCFRpOC by [email protected] | |
0 likes, 0 repeats | |
interesting: the game doesn't defragment the track list. so if you build 8… | |
Post #AcoNuVPtMswir3kVI8 by [email protected] | |
0 likes, 0 repeats | |
and it never fills those spots back in, it seems. it just adds them to the end. | |
Post #AcoNuY7ZJT4VF6CPeC by [email protected] | |
0 likes, 0 repeats | |
OH MY GOD IT'S A BLOCKCHAIN! (/joke) | |
Post #AcoNuYtmQDdVeckunI by [email protected] | |
0 likes, 0 repeats | |
I have a bad idea:so the game stores saves in two files.the RR?.SVE file, and t… | |
Post #AcoOoZTHTp2FeA4IAC by [email protected] | |
0 likes, 0 repeats | |
so I've connected Chișinău, Moldova to Vinnytsia, Ukraine.or Kisinev to V… | |
Post #AcoOoc87awtNtPBw6C by [email protected] | |
0 likes, 0 repeats | |
and now I'm connecting Knoxville, Tennessee to Lexington, Kentucky.TIME FOR… | |
Post #AcoOoctGlebeFdFaaW by [email protected] | |
0 likes, 0 repeats | |
So, it turns out stations remember what city they're connected to, even whe… | |
Post #AcoOodePwMJubrJF4q by [email protected] | |
0 likes, 0 repeats | |
Belgrade is in Maryland now. That seems normal.I think it's because there&#… | |
Post #AcoOoePZ742Ay5MtZA by [email protected] | |
0 likes, 0 repeats | |
(notice that this is clearly eastern america but my current is in pounds) | |
Post #AcoOofAMJ5SrJDGGVE by [email protected] | |
0 likes, 0 repeats | |
uhhh. I think this one is my fault | |
Post #AcoQZu84al2BHTHZlg by [email protected] | |
0 likes, 0 repeats | |
found it: the byte at 0x38E4.00: Eastern US01: Western US02: England03: Europe | |
Post #AcoR1sdvi8pSmPWVA8 by [email protected] | |
0 likes, 0 repeats | |
@foone True, there aren't any mermaids in the Atlantic.Not since The Incide… | |
Post #AcoR1siBSKEQzbVtnE by [email protected] | |
0 likes, 0 repeats | |
@kawa ahh, yes. Project Azorian. | |
Post #AcoVfjCMe29ct6szTs by [email protected] | |
0 likes, 0 repeats | |
@foone Did the terminal driver explode? | |
Post #AcoVfjGcODYb6IsO6y by [email protected] | |
0 likes, 0 repeats | |
@mos_8502 I think the video card is in a text mode, but the game thinks it'… | |
Post #AcoVoyTBEh4WrCA0kC by [email protected] | |
0 likes, 0 repeats | |
@foone new pride flag dropped | |
Post #AcoVoyXQysTV4O9PNI by [email protected] | |
0 likes, 0 repeats | |
@lilbatscholar don't even joke about that. I'm always on the hunt for m… | |
Post #AcogoG5FMSCEgxpKoy by [email protected] | |
0 likes, 0 repeats | |
@foone but how do you convert pounds to ampers? | |
Post #AcogoG997xJct3eRto by [email protected] | |
0 likes, 0 repeats | |
@nikiel carefully | |
Post #AcomYkAmK1F76UOpyC by [email protected] | |
0 likes, 0 repeats | |
ahh, I figured out why my old hacking attempted died out: I don't know how … | |
Post #Acomj6bvkkQXac2aQK by [email protected] | |
0 likes, 0 repeats | |
but I have a workaround where I use a hacked version of the EXE which renders a… | |
Post #Acomj9pVmi4bZbPyVc by [email protected] | |
0 likes, 0 repeats | |
which wouldn't be a problem, it looks fine, except the MAP variant of the P… | |
Post #AcomyGfedFwB8N0pjU by [email protected] | |
0 likes, 0 repeats | |
so like, here on my test map we've got a lumber mill and a coal mine | |
Post #AconD5mrNckriqS43M by [email protected] | |
0 likes, 0 repeats | |
but on the MAP file, both of those end up as that purple color | |
Post #AconD8VxEw0yBHZ6cS by [email protected] | |
0 likes, 0 repeats | |
so I need to figure out on my own how to decode the PIC/MAP files.which is a pr… | |
Post #AconxdAhab2iaEnLFo by [email protected] | |
0 likes, 0 repeats | |
and you'd think they'd skip out on compressing saved games, but NOPE! t… | |
Post #Aconxfo7mzlWl5Fqym by [email protected] | |
0 likes, 0 repeats | |
I think it's some kind of LZ* compression, given how it seems back-referenc… | |
Post #AconxgYZ0Kud56ywMa by [email protected] | |
0 likes, 0 repeats | |
it's also possible this is a wild goose chase and the different industry bl… | |
Post #AconxhJ0Dg3jP8i1kO by [email protected] | |
0 likes, 0 repeats | |
nope. it's definitely in the map. I did the SVE/MAP switcheroo and it stil… | |
Post #Acooy1NtfNtZdGiUpk by [email protected] | |
0 likes, 0 repeats | |
back to the decompilation mines | |
Post #Acoq04LNjaNlLP53j6 by [email protected] | |
0 likes, 0 repeats | |
oh goody function pointers, my favorite | |
Post #Acoq9jiTHXlcGTUSNU by [email protected] | |
0 likes, 0 repeats | |
oh yeah they interleaved the write-file and read-file functions by misusing JMP | |
Post #AcoqykFn2lDwhTOiJ6 by [email protected] | |
0 likes, 0 repeats | |
because to have fread() and fwrite() as separate functions would waste somethin… | |
Post #AcoswhMd14J94DkRCC by [email protected] | |
0 likes, 0 repeats | |
so it opens the file, sets a pointer to a function, then calls another function… | |
Post #Acotr14ytz4qQiLeV6 by [email protected] | |
0 likes, 0 repeats | |
oh god I think I found the compression functions but it seems it involves abusi… | |
Post #Acotr4APQGCY0PuWsS by [email protected] | |
0 likes, 0 repeats | |
and it's not a normal decompression function where there's a in-buffer … | |
Post #AcoxevPEZLn5AyJLfM by [email protected] | |
0 likes, 0 repeats | |
I got distracted and extracted the text out of an apple II game about sex.this … | |
Post #Acoyzadz3bm4opczgW by [email protected] | |
0 likes, 0 repeats | |
"JMP BP"yeah, this assembly was written by a human.emphasis on ASSemb… | |
Post #Acoz5fEUuOOWmxbSng by [email protected] | |
0 likes, 0 repeats | |
WHY WOULD YOU JUMP TO THE FRAME POINTER? | |
Post #AcozoahsaDhBmZlkki by [email protected] | |
0 likes, 0 repeats | |
it's at the start of the function, too.like, you just called a function, wh… | |
Post #Acp0bCMTt1ReT0wDqa by [email protected] | |
0 likes, 0 repeats | |
@foone I'm not sure if this is better or worse than jumping to VRAM, which … | |
Post #Acp0bCR5bt8ChJ5u1w by [email protected] | |
0 likes, 0 repeats | |
@endrift there's one SNES game that jumps to the DMA registers.not DMA'… | |
Post #Acp1wahqfWSc0QhHvc by [email protected] | |
0 likes, 0 repeats | |
@foone @endrift Was that Another World by @burgerbecky ? | |
Post #Acp1wam6PhraDcggYi by [email protected] | |
0 likes, 0 repeats | |
@gentarkin @endrift @burgerbecky YUP! | |
Post #Acp26AIBjIsYyrGBOq by [email protected] | |
0 likes, 0 repeats | |
I set a breakpoint at the address 1000:0AD6it hit at 093D:7D0Abug in DOSBox?No!… | |
Post #Acp3ItgUtAAhBtGW0m by [email protected] | |
0 likes, 0 repeats | |
@foone every address has... 256 addresses? have I done my math right? | |
Post #Acp3ItkOefI5Nz5d5c by [email protected] | |
0 likes, 0 repeats | |
@alilly I think it's 4096? because a segment is 65536 bytes, and you can se… | |
Post #Acp4d8713YWhgQsg7s by [email protected] | |
0 likes, 0 repeats | |
I'm afraid, Dave. Dave, my mind is going. I can feel it. I can feel it. My … | |
Post #Acp5at504lMOR5Qsro by [email protected] | |
0 likes, 0 repeats | |
the whole thing about call BP makes even less sense when you follow up the call… | |
Post #Acp97mmUoWnsJv9kI4 by [email protected] | |
0 likes, 0 repeats | |
oh okay, I think the (de)compression routine is line based.I found that the &q… | |
Post #Acp9GUUQBtCiCEqw5Y by [email protected] | |
0 likes, 0 repeats | |
A fun thing about the saved maps is that they're 320x200.The game maps are … | |
Post #AcpAFW7uidaQwDQOMC by [email protected] | |
0 likes, 0 repeats | |
ahh, 0x2E96, a hex number that makes floating point calculators confused | |
Post #AcpAYeNAHiUE0xgJmq by [email protected] | |
0 likes, 0 repeats | |
naturally in the middle of the "decompress the saved-game map" functi… | |
Post #AcpAqhG6IEj4B5yydE by [email protected] | |
0 likes, 0 repeats | |
but yeah it happens because they have the graphics code implemented in separate… | |
Post #AcpBGamB1B2xbMKkxU by [email protected] | |
0 likes, 0 repeats | |
wait the code is loading a 320x200 pixel bitmap and immediately drawing it into… | |
Post #AcpBXh7QglseCEQhFY by [email protected] | |
0 likes, 0 repeats | |
I don't understand. It's loading the map file and writing it right out … | |
Post #AcpCaQMPYJJp2nIpFI by [email protected] | |
0 likes, 0 repeats | |
railswhy is there an EXE header at offset 0x17400 in your binary? | |
Post #AcpCvbEKKo0upwcPR2 by [email protected] | |
0 likes, 0 repeats | |
and 0x15800and 0x16600and 0x18600and 0x19000and 0x19800and 0x1A000and 0x1AC00an… | |
Post #AcpDG63HRvNqDkE2Ay by [email protected] | |
0 likes, 0 repeats | |
this file has INTERNAL OVERLAYS?! | |
Post #AcpDoHNPqnYxBowXFg by [email protected] | |
0 likes, 0 repeats | |
@fooneyou mean a dos header pointing to a coff header? | |
Post #AcpDoHRJcIgLNuleKW by [email protected] | |
0 likes, 0 repeats | |
@tthbaltazar no, a dos header, and then many more DOS headers | |
Post #AcpE7YplAZHcpmOXq4 by [email protected] | |
0 likes, 0 repeats | |
I thought the UNP extraction stuff had removed those and merged it all together… | |
Post #AcpE7c90rRSz6MQSlU by [email protected] | |
0 likes, 0 repeats | |
in other words, TIME FOR GO TO BED | |
Post #AcpE7curzVkPUmogMK by [email protected] | |
0 likes, 0 repeats | |
at least I know where the decompression functions are. I can extract those and … | |
Post #AcpF7URPbLT5AGXK0u by [email protected] | |
0 likes, 0 repeats | |
@foone So maybe it's a way to reduce the number of files?I have vague recol… | |
Post #AcpF7UVfLWs3NSWie0 by [email protected] | |
0 likes, 0 repeats | |
@pare I don't think so, this game has a ton of files already with no attemp… | |
Post #AcqQmtuj5lvIh59mIy by [email protected] | |
0 likes, 0 repeats | |
@smammy which is impressive, because this game takes place at the height of rob… | |
Post #AcqRLugcDDbdE0FfDk by [email protected] | |
0 likes, 0 repeats | |
@foone railroad tycoon. Recently covered this on my amiga cracking stream. Easy… | |
Post #AcqRLulDw5IBSIPLP6 by [email protected] | |
0 likes, 0 repeats | |
@h0ffman neat! hopefully that's not the case here, because just about every… | |
Post #AcqULi17cFOhnJRBvE by [email protected] | |
0 likes, 0 repeats | |
okay manually stepping through the decompression confirms my theory that the de… | |
Post #AcqUVAMfacpCJq1frk by [email protected] | |
0 likes, 0 repeats | |
So far, I've got this:00 01 Ocean02 Clear03 Forest04 05 Coal Mine06 07 Foot… | |
Post #AcqUt4Q7LIA2ph2Lzc by [email protected] | |
0 likes, 0 repeats | |
okay I've made a key discovery that makes some of the weirdness make more s… | |
Post #AcqV1b6Dj5ZGVAnQvI by [email protected] | |
0 likes, 0 repeats | |
I found this out by modifying it while it is being loaded: the changes appear o… | |
Post #AcqVn2uE9y3kLvoOgK by [email protected] | |
0 likes, 0 repeats | |
well I stepped through all the invocations of this function (which I have insig… | |
Post #AcqW1L81CpXKvH4vBY by [email protected] | |
0 likes, 0 repeats | |
so it loads the MAP filethen faces.picsprites.pictrack.piclocos1.pic...and noth… | |
Post #AcqWKqrBSr20pSVYw4 by [email protected] | |
0 likes, 0 repeats | |
so from selecting save, it calls int 21,AH=3D with:RR0.SVERR0.MAPits own EXE (o… | |
Post #AcqXRByRxpOY0xUh0K by [email protected] | |
0 likes, 0 repeats | |
but wait, if it's smuggling out the map data, why don't my changes get … | |
Post #AcqXcgOdC9OZYLDefA by [email protected] | |
0 likes, 0 repeats | |
if so, there's only one place it could do that... and it's in an overla… | |
Post #AcqXvDyr4I5QvQ0J96 by [email protected] | |
0 likes, 0 repeats | |
and that overlay is NEVER CALLED! | |
Post #AcqZ0nTAeGMoOVPATg by [email protected] | |
0 likes, 0 repeats | |
please, PLEASE tell me they don't save the map inside the graphics overlay(… | |
Post #AcqZXtwXbH7g1ovb96 by [email protected] | |
0 likes, 0 repeats | |
this function is DOUBLE THUNKED?! | |
Post #AcqZzR1WiSNeRbOBPM by [email protected] | |
0 likes, 0 repeats | |
whelp, I dug into the EGRAPHICS.EXE file and found what was getting called, and… | |
Post #AcqaHlnKEFbe4oUOcy by [email protected] | |
0 likes, 0 repeats | |
EGRAPHICS.EXE is amusing. The entry pointer leads to a function at 1000:0010, w… | |
Post #AcqaWY5lSOcvvGA3Xc by [email protected] | |
0 likes, 0 repeats | |
which doesn't make a lot of sense, honestly.that's because it's not… | |
Post #AcqaWb8M9DTzMAOfUu by [email protected] | |
0 likes, 0 repeats | |
to which all I can say is:INC SIPUSH BPINC BXDEC BXPOP DIPOP C… | |
Post #Acqbf1PgQPXl8E59eq by [email protected] | |
0 likes, 0 repeats | |
@BetaRays yeah I didn't bother roundtripping it so it probably doesn't … | |
Post #AcqcwI1s05tzXfk2Pg by [email protected] | |
0 likes, 0 repeats | |
@foone Just removing the E prefix from each register seems to work. | |
Post #AcqcwI67kHIxkrjR2m by [email protected] | |
0 likes, 0 repeats | |
@BetaRays thanks. fixed. | |
Post #AcqdDUSJ3KRn0MJCcK by [email protected] | |
0 likes, 0 repeats | |
okay, time to take another approach: I'm gonna go into debug mode, then cap… | |
Post #AcqdX6tINKYtiCHvVY by [email protected] | |
0 likes, 0 repeats | |
this'll obviously fail if they store it in a modified form, however | |
Post #AcqdX9up86ZD5o1go4 by [email protected] | |
0 likes, 0 repeats | |
or worse, they never store it uncompressed at all.maybe they just re-decompress… | |
Post #AcqdXAfcK7ztQvv3k8 by [email protected] | |
0 likes, 0 repeats | |
this game WILL run on an original IBM PC (if upgraded to 512kb of ram)maybe the… | |
Post #AcqdXBQlUpi9n9yiES by [email protected] | |
0 likes, 0 repeats | |
unrelated note, I should hack the amiga version tooit looks like they went all-… | |
Post #AcqeJKFzz1jZ4AtlNA by [email protected] | |
0 likes, 0 repeats | |
interestingly, Railroad Tycoon Deluxe seems to use basically the same save/map … | |
Post #AcqepyKEXtkMbQRiyW by [email protected] | |
0 likes, 0 repeats | |
See? Uncompressed. | |
Post #AcqkZ8OATanCcFdnFY by [email protected] | |
0 likes, 0 repeats | |
if I can figure out the compression method I may be able to re-inject the Delux… | |
Post #AcqlfHvE2qelsGbLqy by [email protected] | |
0 likes, 0 repeats | |
it's not a question anyone has asked, but now you know:you can't copy t… | |
Post #AcqlzdDwYRtRjU3bbE by [email protected] | |
0 likes, 0 repeats | |
and it seems that railroad tycoon and railroad tycoon deluxe cannot read each o… | |
Post #AcqmMCNuVa7x9WTorg by [email protected] | |
0 likes, 0 repeats | |
@foone what's the end goal? Extracting assets, or full recompilation? | |
Post #AcqmMCSAFlWvMiTDUm by [email protected] | |
0 likes, 0 repeats | |
@viraptor just the usual, wanting to look inside games I spent a lot of time wi… | |
Post #AcqmYlfv7oOy4xthaa by [email protected] | |
0 likes, 0 repeats | |
okay it definitely doesn't store the maps in memory as-decoded. I did a sea… | |
Post #Acqn1De8ip7CwGdBia by [email protected] | |
0 likes, 0 repeats | |
@foone oh, I guess I need new Friday night plans. | |
Post #Acqn1Di2UKEb8MSInQ by [email protected] | |
0 likes, 0 repeats | |
@mima I know, right? it ruins all my plans! | |
Post #AcqpOyIFehueBFqYy0 by [email protected] | |
0 likes, 0 repeats | |
I realized my plan to try and VM-hax the decompression routine won't really… | |
Post #AcqpUkNyHFCmmfHBaK by [email protected] | |
0 likes, 0 repeats | |
so realistically to VM-hax the decompression routine, I'd need to stuff not… | |
Post #AcqpbArUkhJ2dU9NrM by [email protected] | |
0 likes, 0 repeats | |
so what if I attack it in a completely different way?I've got it running in… | |
Post #AcqqMeUaP8Fq8y4esi by [email protected] | |
0 likes, 0 repeats | |
or I could actually figure out the compression algorithm.like an adult.but I do… | |
Post #AcqszjAJAEoTq3LjX6 by [email protected] | |
0 likes, 0 repeats | |
okay so I have extracted some data. I have a 48-byte file that I know extracts … | |
Post #AcquozuWlS8MUqynTM by [email protected] | |
0 likes, 0 repeats | |
20 61 in the input results in a 01 written to the output.how.why? we may never … | |
Post #AcqvDvDPMKFTAohBtw by [email protected] | |
0 likes, 0 repeats | |
OH GOD I DESTROYED THE WEST COAST AGAIN | |
Post #AcqvVmfLsrMRs3HdeC by [email protected] | |
0 likes, 0 repeats | |
and now the area around Vancouver is a desert that looks like a swamp | |
Post #AcqwCy915CiTvGkd2u by [email protected] | |
0 likes, 0 repeats | |
@foone Foone I believe that's the east coast | |
Post #AcqwCyCuqhps7MZk7k by [email protected] | |
0 likes, 0 repeats | |
@SteveSyfuhs it is now, but it wasn't when I started! | |
Post #AcqwWNB4Ec9t3zxklE by [email protected] | |
0 likes, 0 repeats | |
So, this decompression function:3+1 functions interleaved. (The +1 is for the e… | |
Post #Acqwcdweo2linxDEo4 by [email protected] | |
0 likes, 0 repeats | |
of the 13 global variables, I currently understand one of them, and maybe half … | |
Post #Acqwlkxa5uDlAQzSBk by [email protected] | |
0 likes, 0 repeats | |
if that wasn't bad enough, the middle of the three functions DOES NOT HAVE … | |
Post #AcqwyqItXO9TVOCQVM by [email protected] | |
0 likes, 0 repeats | |
it's possible this code doesn't make sense because it's not all the… | |
Post #AcqzAsiMbFrMMiyr8S by [email protected] | |
0 likes, 0 repeats | |
I have figured out TWO global variables now.one of them specifies if we're … | |
Post #AcqzppIcCctPe7Se0G by [email protected] | |
0 likes, 0 repeats | |
so the for loop inside the internal decompress, it starts at 8, compares it is … | |
Post #Acr1z0VC7U7UuDqmTA by [email protected] | |
0 likes, 0 repeats | |
I think I'm up to three | |
Post #Acr26GWqvmpQdg5SWu by [email protected] | |
0 likes, 0 repeats | |
but I also found a table that's 768 bytes long. so I'm also kinda down … | |
Post #Acr2P2JdzztK3mrLXs by [email protected] | |
0 likes, 0 repeats | |
and experimentally that weird stack-jump only goes to two locations in the call… | |
Post #Acr3ROy0qyyEqQQvQ0 by [email protected] | |
0 likes, 0 repeats | |
I've run out of brains for today. But I will continue | |
Post #AcsWwcKSJd575l7yVs by [email protected] | |
0 likes, 0 repeats | |
so I think this compression format is specialized to writing nibbles. like, I t… | |
Post #AcsXQwAX7ECvJOwb3Y by [email protected] | |
0 likes, 0 repeats | |
it might actually be 0x0N0N? but again, it doesn't seem to be possible to t… | |
Post #AcsYnpdDgfKveRqJxQ by [email protected] | |
0 likes, 0 repeats | |
god this is terrible.so there's like three ways things can get pushed onto … | |
Post #AcsYyUlDcpUQ6ffXhA by [email protected] | |
0 likes, 0 repeats | |
I can't easily tell WHEN they get saved because, of course, ghidra can'… | |
Post #AcsZ9dTNZcneJRdYK8 by [email protected] | |
0 likes, 0 repeats | |
and the dictionary makes no sense. it's 768 bytes long, and it's format… | |
Post #AcsZ9ggxbaRiIR0wPQ by [email protected] | |
0 likes, 0 repeats | |
okay great. but then there's code that searches it to find a "slot&quo… | |
Post #AcsZQXHZqI3w2KAvQW by [email protected] | |
0 likes, 0 repeats | |
except I step through the decompression of the first line of code and THE DICTI… | |
Post #AcsZZZy9DsrCyWOpWq by [email protected] | |
0 likes, 0 repeats | |
I think I need to officially stop looking at the decompilation for this code. i… | |
Post #AcsZs1KgE1213OjSq0 by [email protected] | |
0 likes, 0 repeats | |
REVERSE ENGINEERING COMPRESSION CODE IS THE WORST | |
Post #Acsa1UZsrSyiMXMOX2 by [email protected] | |
0 likes, 0 repeats | |
this is actually decompression code, to be accurate.and I know there IS compres… | |
Post #AcsaRlvUyxBvhJ09su by [email protected] | |
0 likes, 0 repeats | |
I hope I'm misunderstanding this code, because if I'm not, they fucked … | |
Post #AcsbTanVQiyhiOh9IO by [email protected] | |
0 likes, 0 repeats | |
the programmers of this code don't seem to believe in passing arguments bet… | |
Post #AcsbdWoB7HX4ErkNrk by [email protected] | |
0 likes, 0 repeats | |
or they pass width/height of a bitmap into fopen() and then fopen() does nothin… | |
Post #AcsbdZWD2XwQe0MZm4 by [email protected] | |
0 likes, 0 repeats | |
<Garth Marenghi> I KNOW PROGRAMMERS WHO USE PURE FUNCTIONS AND THEY'R… | |
Post #Acsbwu6SjMlrzMXRbc by [email protected] | |
0 likes, 0 repeats | |
they're also checking the return code of this function after calling it, bu… | |
Post #Acsc6cg4NEx2q7pNgW by [email protected] | |
0 likes, 0 repeats | |
@[email protected] wh.. what do they do instead, global variables? | |
Post #Acsc6ckK7QM13JomJc by [email protected] | |
0 likes, 0 repeats | |
@sekoiatree yes! some of which are reused for different purposes in different s… | |
Post #Acse14dVi8a3it72Ia by [email protected] | |
0 likes, 0 repeats | |
@foone I reverse engineered an LZSS-based compression format in a GBA game in 2… | |
Post #Acse14hPTdhRuyw9NQ by [email protected] | |
0 likes, 0 repeats | |
@endrift how much caffeine and adderall did it take? | |
Post #Acse8dAfi3BSrGE7xg by [email protected] | |
0 likes, 0 repeats | |
@foone Have you written more software than you’ve used? | |
Post #Acse8dEvSEaR4SDWam by [email protected] | |
0 likes, 0 repeats | |
@michaelgemar that would be hard to do! | |
Post #AcseME7ddaeZDyI6ls by [email protected] | |
0 likes, 0 repeats | |
THE SAVE GAME FUNCTION THUNKS INTO THE VIDEO DRIVER OVERLAY!? | |
Post #AcseMGllnLwXR15BbM by [email protected] | |
0 likes, 0 repeats | |
I need to go find my copy of Sid Meier's autobiography. maybe there's a… | |
Post #AcseMHWYzNNDm8yYXQ by [email protected] | |
0 likes, 0 repeats | |
oh sweet lord jesus it's reading from the video ram | |
Post #AcsexXLn6tJnZfhZSK by [email protected] | |
0 likes, 0 repeats | |
@foone The sample code for the API I'm using just puts parameters into envi… | |
Post #AcsexXQ2r4ilmrgy5Q by [email protected] | |
0 likes, 0 repeats | |
@aburka AHHHHHHHHHHHHHHHH | |
Post #AcsfF27nwdonwUVDn6 by [email protected] | |
0 likes, 0 repeats | |
WHY WOULD YOU STORE YOUR MAP IN THE VIDEO RAM YOU FUCKING WEIRDO | |
Post #AcsfN6VVXFrzqnRD9c by [email protected] | |
0 likes, 0 repeats | |
dosbox-x needs a "dump vram" option | |
Post #AcsfY3IXo5wz5DawiW by [email protected] | |
0 likes, 0 repeats | |
any the weird thing is that I don't think the map is IN vram when it goes t… | |
Post #AcsfhAyad4IPVEc0C8 by [email protected] | |
0 likes, 0 repeats | |
but I found the compression code. it's... simpler? slightly? at least it se… | |
Post #AcshsTPubi9bmzuGKO by [email protected] | |
0 likes, 0 repeats | |
AHH THE SAVE GAME FUNCTION IS CALLED FROM ANOTHER OVERLAYif it's the fuckin… | |
Post #Acsjn7thOAmrVYPv1c by [email protected] | |
0 likes, 0 repeats | |
thank fuck, it's not, it's one of the other internal overlays.the ones … | |
Post #AcsjnAb1M4d3sUhXpQ by [email protected] | |
0 likes, 0 repeats | |
minor breakthrough:the save_game_map function repeatedly calls compress_map(N,M… | |
Post #AcsjnBNESpC4I1G2yW by [email protected] | |
0 likes, 0 repeats | |
now, compress_map does the following:first, it checks for the tile being 0x90. … | |
Post #AcsjnC9RZZl4hXoY7c by [email protected] | |
0 likes, 0 repeats | |
and if the repeat count is less than (or equal to 3), it just calls inner_compr… | |
Post #AcsjnCw0f0bf8AXKoy by [email protected] | |
0 likes, 0 repeats | |
which kinda seems like it'd write a file like this:all bytes are written as… | |
Post #AcsjnDhrn4t5WavYPo by [email protected] | |
0 likes, 0 repeats | |
very simple RLE, right?except that's absolutely not what the file ends up l… | |
Post #AcsjnETiv9AVv1Jm0e by [email protected] | |
0 likes, 0 repeats | |
because that's the thing with this format: as is, it'd make pretty bad … | |
Post #AcsjnFGdzGIgMkCqGG by [email protected] | |
0 likes, 0 repeats | |
so I think they added another layer of indirection, doing something like encodi… | |
Post #AcsjnG2V7Ka6lAb3r6 by [email protected] | |
0 likes, 0 repeats | |
okay so, the first level of encoding is RLE.The map is RLE'd into the follo… | |
Post #AcsjnGp4ClQhBnJqYS by [email protected] | |
0 likes, 0 repeats | |
that gets turned into a stream of bytes passed into inner_compress, where bytes… | |
Post #AcslcxbJ15oYaO5tFg by [email protected] | |
0 likes, 0 repeats | |
@foone None, I avoided coffee until 2015 and I wasn't about to take other s… | |
Post #AcslcxfYlHDWna5Hsm by [email protected] | |
0 likes, 0 repeats | |
@endrift dear godare you sure you're human and not some kind of robot made … | |
Post #AcsnntxZ5sYCO4qnRI by [email protected] | |
0 likes, 0 repeats | |
@foone I believe that in one episode Garth said he had written more books than … | |
Post #Acsnnu1SrNfaaAfuW8 by [email protected] | |
0 likes, 0 repeats | |
@michaelgemar oh right, I forgot the reference! | |
Post #Acso3JExNquH8ZKfdQ by [email protected] | |
0 likes, 0 repeats | |
@foone it’s hillarious that nearly all the things you find astounding in this… | |
Post #Acso3JJZ6iapMrULom by [email protected] | |
0 likes, 0 repeats | |
@foone i guess after a while one has “seen it all” | |
Post #Acso3JNSsDiDYxJStc by [email protected] | |
0 likes, 0 repeats | |
@clairely_undaunted I think it just means that you too have been slightly damag… | |
Post #AcsoTpx6Nr3S7Yd8gi by [email protected] | |
0 likes, 0 repeats | |
now the final transformation is the one I don't understand, but I can cheat… | |
Post #AcsoTt9GV5ZC29LOYy by [email protected] | |
0 likes, 0 repeats | |
so yeah. Compression is a 3 step process:Map -> RLE tuples -> RLE Bytestr… | |
Post #AcsoTtwBZChMTsESoa by [email protected] | |
0 likes, 0 repeats | |
so we've got a function that should write 3 16-bit words to memory. where d… | |
Post #AcsoTujSc076whHocS by [email protected] | |
0 likes, 0 repeats | |
well I can at least put aside the brainhurty figuring out stuff for some bookke… | |
Post #Acsp2O3C76fPijxFZI by [email protected] | |
0 likes, 0 repeats | |
@foone I once printed out a bunch of code just so I could set fire to it in a p… | |
Post #Acsp2O7RrI4NvvweCO by [email protected] | |
0 likes, 0 repeats | |
@sungo that's a good idea. where's my dot matrix printer? | |
Post #AcspsmcxyxBb0FfgGG by [email protected] | |
0 likes, 0 repeats | |
@foone this may be the right moment to note that much of what we call "the… | |
Post #AcspsmhDj8aZDRf4tM by [email protected] | |
0 likes, 0 repeats | |
@SvenGeier as MST3K said, "It's the Eighties. Do a lot of coke and vot… | |
Post #AcsqATRC4IaShPbGiG by [email protected] | |
0 likes, 0 repeats | |
I've Trantored/Coruscanted the west coast! it's all cities, all the tim… | |
Post #AcsqAWClmNpdHXsI9A by [email protected] | |
0 likes, 0 repeats | |
well, mostly. some tiles didn't get changed to cities (I'm not sure why… | |
Post #AcsqgMg6jeDR0Amaw4 by [email protected] | |
0 likes, 0 repeats | |
ugh I keep crashing this game that I'm hacking the code of at runtimewho co… | |
Post #AcsqtJC508KBxZuS7E by [email protected] | |
0 likes, 0 repeats | |
okay finally got it working. Here we go. From Alabama to the Pacific ocean (and… | |
Post #Acsr6Ka59g1u1iLW4G by [email protected] | |
0 likes, 0 repeats | |
And here's what happens when you zoom in: It's not ACTUALLY all city, e… | |
Post #AcsrJ5zGj3AuWtDIe0 by [email protected] | |
0 likes, 0 repeats | |
@Nekoplanet Nah, it came out on PC first. There were ports, but they were all t… | |
Post #AcsrTWsvZjXSqaDs5Q by [email protected] | |
0 likes, 0 repeats | |
now here's the question: does the industry pattern break at the bottom of t… | |
Post #AcsrkHf1QqlsYKhwA4 by [email protected] | |
0 likes, 0 repeats | |
it's discontinuous! so yeah, it uses tile numbers. | |
Post #AcstEtRlblxqO0fQgq by [email protected] | |
0 likes, 0 repeats | |
so it turns out it uses the positional thing for more than just cities.tile_typ… | |
Post #AcstSkgKzd1RFx5hA0 by [email protected] | |
0 likes, 0 repeats | |
here's the really weird part. This map, despite looking like that, is actua… | |
Post #AcstrfqM7S31UQf0m8 by [email protected] | |
0 likes, 0 repeats | |
here's the 0A ("farm") tile: it turns out it's a mix of farms… | |
Post #Acsu6ONXKqU3fRCO6y by [email protected] | |
0 likes, 0 repeats | |
@foone i just know how the sausage was/is made, i look forward to blissful igno… | |
Post #Acsu6OS93iAbtjM4IK by [email protected] | |
0 likes, 0 repeats | |
@clairely_undaunted I'm sure that's completely unrelated to the instanc… | |
Post #AcsuCQlDONeGnB9ZwW by [email protected] | |
0 likes, 0 repeats | |
0b (foothills) are not special. set it to all 0b, and you really get all 0b | |
Post #AcsuMO1WQIIrCQWoWO by [email protected] | |
0 likes, 0 repeats | |
villages are also paper mills, stock yards, factories, and food proc. | |
Post #AcsudgXUpqqLY1jUBs by [email protected] | |
0 likes, 0 repeats | |
@foone absofuckinglutely though tbh it’s just a different type of programming | |
Post #AcsudgbObLxjk7YbGi by [email protected] | |
0 likes, 0 repeats | |
@clairely_undaunted heh. makes me think of a security engineer who is really in… | |
Post #AcsutjMa6UK8wJHJom by [email protected] | |
0 likes, 0 repeats | |
okay checked the rest (except rivers, because... no)so 05 and 08 are mines, 0a … | |
Post #AcsviJZnjoFrjRa9oG by [email protected] | |
0 likes, 0 repeats | |
judging by how this worksI think it might be writing data files in 47-bit chunk… | |
Post #AcsvqUyTFEErOm1W9Q by [email protected] | |
0 likes, 0 repeats | |
so, a datapoint:a map entirely full of 01 and a map entirely full of 02 are dif… | |
Post #AcsvqY61db4354a5qK by [email protected] | |
0 likes, 0 repeats | |
it's possible the intermediate RLE is making this weirder than it should be… | |
Post #AcuW2JwxqjFQBrDPns by [email protected] | |
0 likes, 0 repeats | |
so I need to write 256 bytes into RAM, without a pointer to it, in... 5 bytes.o… | |
Post #AcuWF353sfXDdS4WSu by [email protected] | |
0 likes, 0 repeats | |
okay maybe I can take out a function callthat gives me like, 45 bytes. more tha… | |
Post #AcuWotcuVYssjszviS by [email protected] | |
0 likes, 0 repeats | |
MOV AL, 01MOV DI, [BP-6]MOV CX, 320REP STOSBthat's 10 bytes. | |
Post #AcuXiXnqpnZ7GseNkW by [email protected] | |
0 likes, 0 repeats | |
well my code was supposed to generate a world that's entirely water, but I … | |
Post #AcuXqnwkhGuHekkihs by [email protected] | |
0 likes, 0 repeats | |
@foone Mind the direction flag | |
Post #AcuXqo0eSm1fqqZpmi by [email protected] | |
0 likes, 0 repeats | |
@Computeum good point. I'll stick a CLD in there | |
Post #AcuZEdwlcx9rXxgsbo by [email protected] | |
0 likes, 0 repeats | |
oh I'm a doofus.I was trying to hack the game to save a game where every ti… | |
Post #AcuZWAXrgG7BZVOqCu by [email protected] | |
0 likes, 0 repeats | |
and done.I was so busy trying to use my HACKER SKILLS to realize I didn't n… | |
Post #AcuZic1zJZKEICQHhY by [email protected] | |
0 likes, 0 repeats | |
okay so a map of all the same tile results in an 83 byte file, which only varie… | |
Post #AcuZif73rAALqnosWe by [email protected] | |
0 likes, 0 repeats | |
now the reason it's not smaller is that a map actually looks like this:It&#… | |
Post #AcuaPiAuLc7Fnd98ZU by [email protected] | |
0 likes, 0 repeats | |
NOPE! I decoded (using my load-it-as-a-logo trick) the all-1 and all-2 tiles an… | |
Post #AcuaPiFW4Tno1vIokq by [email protected] | |
0 likes, 0 repeats | |
so what the heck | |
Post #AcuahPZIGWRNIvzbNo by [email protected] | |
0 likes, 0 repeats | |
well I interestingly corrupted it | |
Post #Acub2neRv6S04ubRVw by [email protected] | |
0 likes, 0 repeats | |
yeah I'm randomly corrupting it, and this isn't any RLE. This is defini… | |
Post #Acub2qIw3Y1YJ3Yntg by [email protected] | |
0 likes, 1 repeats | |
who wants to play Railroad Tycoon on Memory Uninitialized World? | |
Post #AcubXw1uopzf2aQR2e by [email protected] | |
0 likes, 0 repeats | |
fun fact: because the saved game map files are the same format as PIC, you can … | |
Post #AcueyxlykLCy7yYCvo by [email protected] | |
0 likes, 0 repeats | |
@foone What does the zoomed-out version look like? | |
Post #AcueyxpsVqKMK4NK0e by [email protected] | |
0 likes, 0 repeats | |
@jtlg that's the left image! | |
Post #AcujpFbm4zXGJmxwqu by [email protected] | |
0 likes, 0 repeats | |
@foone For a worrying moment I thought this was Railroad Tycoon over SSTV | |
Post #AcujpFg1pAwEWyxLU0 by [email protected] | |
0 likes, 0 repeats | |
@tryst I'll have to do that next. Most of my TV stuff is analog ntsc but I&… | |
Post #AcwYQUVCr9S85lnwx6 by [email protected] | |
0 likes, 0 repeats | |
god help me I don't want to have to write an extension to link ghidra and d… | |
Post #AcwZIbQFLNy3BwHrVo by [email protected] | |
0 likes, 0 repeats | |
I might just write my own debugger. the dosbox one is slightly terrible. | |
Post #AcwZdpkdGUDbiFwizg by [email protected] | |
0 likes, 0 repeats | |
basically I need to watch the input buffer, the output buffer, about 15 random … | |
Post #AcwcoO5Cm5NmwvIDtw by [email protected] | |
0 likes, 0 repeats | |
@foone that first picture looks like what I call Rainbow Death Snow when it app… | |
Post #AcwdoZyodrRJnjxZI0 by [email protected] | |
0 likes, 0 repeats | |
it's kinda telling about how my brain works that I keep running into revers… | |
Post #Acwf9E7VDAym2VQrDc by [email protected] | |
0 likes, 0 repeats | |
@foone An idea I've been mulling for a while is to hack up a copy of MAME/M… | |
Post #Acwf9EBkxMNkFhQFqi by [email protected] | |
0 likes, 0 repeats | |
@curtmack yeah, something like that would be awesome | |
Post #AcwfK92cR0KnTPM168 by [email protected] | |
0 likes, 0 repeats | |
@foone but what if you wrote a generic, retargetable, debugger construction kit? | |
Post #AcwfK96sBBjlgbLPjE by [email protected] | |
0 likes, 0 repeats | |
@StompyRobot yes why not? why not turn a simple "hack one game" proje… | |
Post #Acwfry87VbjfTj3WJE by [email protected] | |
0 likes, 0 repeats | |
@foone Obviously this would slow down emulation, but I think it would still be … | |
Post #AcwfryCNFn8dgv2uwK by [email protected] | |
0 likes, 0 repeats | |
@curtmack yeah. and even if slow, you could have it be togglable: you turn it o… | |
Post #Ad0vlHHkGdl2l8EFyC by [email protected] | |
0 likes, 0 repeats | |
I think I'm gonna try abusing external memory reading into letting me watch… | |
Post #Ad0vuh3lo7a7IuBLGa by [email protected] | |
0 likes, 0 repeats | |
that's one of the problems with being a game hacker: you don't use &quo… | |
Post #Ad13rNjQ0onM7gav20 by [email protected] | |
0 likes, 0 repeats | |
here's why I hate reversing compression code:there's no shortcuts. | |
Post #Ad144eRTC6RxiLWhoe by [email protected] | |
0 likes, 0 repeats | |
I am a fucking MASTER at finding shortcuts. I have endless tools and tricks and… | |
Post #Ad144hD2uBh8ITnjFY by [email protected] | |
0 likes, 0 repeats | |
compression is the ultimate "you stare at this code until you understand i… | |
Post #Ad14SlVkYzB0aY1jXs by [email protected] | |
0 likes, 0 repeats | |
and I have EXACTLY the wrong kind of brain to be any good at that. my brain is … | |
Post #Ad14SoCiYCjcwO94nQ by [email protected] | |
0 likes, 0 repeats | |
I do not have a smart brain, I have a clever brain. they are not the same. and … | |
Post #Ad15BYuEH9noWdpzkG by [email protected] | |
0 likes, 0 repeats | |
@Sweetshark exactly | |
Post #Ad15HlPMhosH2PMHaa by [email protected] | |
0 likes, 0 repeats | |
this debugger needs a "step backwards" command | |
Post #Ad18nsnj3QUT5zlBWS by [email protected] | |
0 likes, 0 repeats | |
@foone you know about debuggers that do have such a command then, yes | |
Post #Ad18nssKmIB1KHurho by [email protected] | |
0 likes, 0 repeats | |
@thorsummoner yes. dosbox-x doesn't have it, though | |
Post #Ad19aC1msAJacuNCka by [email protected] | |
0 likes, 0 repeats | |
ahh I've hit another function where ghidra has decided it can no longer ren… | |
Post #Ad1EcETLFrPWYe3Nb6 by [email protected] | |
0 likes, 0 repeats | |
it's physically impossible to stare at x86 code for long without wanting to… | |
Post #Ad1FUUD0xjBF0AHqBk by [email protected] | |
0 likes, 0 repeats | |
@secretasianman I've not done much work in those architectures, so I don… | |
Post #Ad1GDDQiC2nxzf1R1k by [email protected] | |
0 likes, 0 repeats | |
although it's amusing when you see code like:MOV BX, AXADD BX, AXADD BX, AX… | |
Post #Ad1GMOIDAt5yI4QBH6 by [email protected] | |
0 likes, 0 repeats | |
it probably does but this code is targeting 8086 so it couldn't use it yet | |
Post #Ad1WMe83tV5GfkokZU by [email protected] | |
0 likes, 0 repeats | |
maybe I just need to write an x86 emulatorlike you do | |
Post #Ad1WSdWh32EEXaC9yK by [email protected] | |
0 likes, 0 repeats | |
I haven't written an x86 emulator since... oh yeah the last time I tried to… | |
Post #Ad1Wn5cuHWcdU2r1hQ by [email protected] | |
0 likes, 0 repeats | |
@foone time for a DAYS SINCE FOONE WROTE AN X86 EMULATOR counter. | |
Post #Ad1Wn5hA1i1bhEqQKW by [email protected] | |
0 likes, 0 repeats | |
@alys it was at 3227 days! I was out, but they pulled me back in | |
Post #Ad1XzkO4eyEDKWW2kK by [email protected] | |
0 likes, 0 repeats | |
I've gotten weirder and I tried dumping a compressed map into a bitmap rend… | |
Post #Ad1YDh6berDvCpzo6y by [email protected] | |
0 likes, 0 repeats | |
okay it only appears in my super-compressed files. not in the semi-compressed o… | |
Post #Ad1aJIf9eG7D2mxM00 by [email protected] | |
0 likes, 0 repeats | |
okay so I've done an interesting experiment: I turned off the RLE.So the fu… | |
Post #Ad1aVTdUfyOWYGzBjM by [email protected] | |
0 likes, 0 repeats | |
and there's again an interesting pattern at 9-bits wide. | |
Post #Ad1d7rwOxVkSqRGRzU by [email protected] | |
0 likes, 0 repeats | |
made a BIG discovery:the labs.PIC file in railroad tycoon is identical to the o… | |
Post #Ad1dHrKE6RbZpaAiZ6 by [email protected] | |
0 likes, 0 repeats | |
and you know WHY that's a big deal? THERE'S TOOLS THAT CAN EXTRACT COVE… | |
Post #Ad1dHuDFMqnwmnvgbQ by [email protected] | |
0 likes, 0 repeats | |
https://github.com/jarikomppa/covert_action | |
Post #Ad1dTyv3h6IYrIBEjw by [email protected] | |
0 likes, 0 repeats | |
it's LZW! the same one that powers GIF | |
Post #Ad1deyiCnzFXOvPbOK by [email protected] | |
0 likes, 0 repeats | |
SID MEIER'S RAILROAD TYCOON VIOLATED THE UNISYS GIF PATENT | |
Post #Ad1e1ohSCE0j0dwzoG by [email protected] | |
0 likes, 0 repeats | |
well it's not decoding it exactly right, but it's... close? | |
Post #Ad1h6y5J1zkNQTFsoq by [email protected] | |
0 likes, 0 repeats | |
And it works. We have decoding of Railroad Tycoon MAP files! | |
Post #Ad1hF2Md0Kh70zCmEi by [email protected] | |
0 likes, 0 repeats | |
this thread has been going for a week and I finally got the result I needed and… | |
Post #Ad1hF5UBOhWIhHlLvc by [email protected] | |
0 likes, 0 repeats | |
(okay not really. I had to modify the code, and the modifications were only pos… | |
Post #Ad1hYFAlbdsUF5ocbI by [email protected] | |
0 likes, 0 repeats | |
@foone I always dreamed of having a public hash database, where you put the has… | |
Post #Ad1hYFEfN8zsRBdjg8 by [email protected] | |
0 likes, 0 repeats | |
@andrea yeah! I've thought about doing something like that for DOS games, p… | |
Post #Ad1hhmvJUVGxWb8dhg by [email protected] | |
0 likes, 0 repeats | |
so I need to do some stuff to modify this to not write PNG files but instead wr… | |
Post #Ad1hhpbDXfypp8l8IS by [email protected] | |
0 likes, 0 repeats | |
as well as put this code online and make a pull request.but all that can wait. … | |
Post #Ad1i7eQxg43wixH35M by [email protected] | |
0 likes, 0 repeats | |
time to close every tab and program I have open.it's over. I won. all that&… | |
Post #Ad1l3Kh3Qho6CjQx0K by [email protected] | |
0 likes, 0 repeats | |
@foone it's over? I honestly expected to see a trans flag as a map tomorrow… | |
Post #Ad1l3Klf9ZUeR1adBg by [email protected] | |
0 likes, 0 repeats | |
@viraptor sigh.I'LL DO IT TOMORROWassuming I can. I have limited colors her… | |
Post #Ad1lANFALY9m8mkLho by [email protected] | |
0 likes, 0 repeats | |
@viraptor what do you want me to do, remap the palette used by the game?actuall… | |
Post #Ad1ujxRidbIo8xf1fc by [email protected] | |
0 likes, 0 repeats | |
@foone not an expert, but PPM might be the right image format for you: it's… | |
Post #Ad1ujxVyNmhmM9eQIi by [email protected] | |
0 likes, 0 repeats | |
@andrea the image format isn't the problem, it's just that I don't … | |
Post #Ad3AjlLzOEW542ryBk by [email protected] | |
0 likes, 0 repeats | |
@foone Is this how Xorg got its x86 emulator to run vbioses :blobcatthink: | |
Post #Ad3AjlPt9jdTG8h5Ga by [email protected] | |
0 likes, 0 repeats | |
@NanoSector ahh, x86. the lingua franca of computers | |
Post #Ad3ReYD6Wl7u4doXZY by [email protected] | |
0 likes, 0 repeats | |
@dpflug I sure did! I'll never learn! | |
Post #Ad7ES7dKzZofOsfRwm by [email protected] | |
0 likes, 0 repeats | |
bah. dosbox doesn't let me set breakpoints on io ports. WHY NOT? | |
Post #Ad7G4sORgklJNikGXI by [email protected] | |
0 likes, 0 repeats | |
@JackEric I'VE BEEN BREAKING THINGS SINCE I WAS OLD ENOUGH TO HOLD A SCREWD… | |
Post #Ad7GjPcrYATW29olOq by [email protected] | |
0 likes, 0 repeats | |
ugh. so the palette-setup call is into an external overlay and called from an i… | |
Post #Ad7HpBBAH94ev5Aybw by [email protected] | |
0 likes, 0 repeats | |
I'm sure that's fine | |
Post #Ad7LKdWbEizLfitSnA by [email protected] | |
0 likes, 0 repeats | |
@Ephraim_Bane always! | |
Post #Ad7NUSWpAw6IN5oIYS by [email protected] | |
0 likes, 0 repeats | |
so the EGA/VGA driver handles colors in a weird way: The main EXE passes a list… | |
Post #Ad7NVcBMlfiWbOKB6W by [email protected] | |
0 likes, 0 repeats | |
@ironiridis I'll fix that before I'm done | |
Post #Ad7NmzFsEmG15FiU9g by [email protected] | |
0 likes, 0 repeats | |
that list, btw, is the following:00 01 02 03 04 00 06 07 08 09 0A 0B 0C 0D 0E 0… | |
Post #Ad7O6Sk4pSay2S89J2 by [email protected] | |
0 likes, 0 repeats | |
this translation means the actual colors end up being:00 01 02 03 04 00 06 07 1… | |
Post #Ad7OF5Q2ufSaJFsCrQ by [email protected] | |
0 likes, 0 repeats | |
@foone does it really drop the 4th bit? | |
Post #Ad7OF5TwgAZyVLhJwG by [email protected] | |
0 likes, 0 repeats | |
@Flux yep | |
Post #Ad7OS5H2lRAbcjrOjI by [email protected] | |
0 likes, 0 repeats | |
Turning off the color-shifting logic makes the intro a bit uglier | |
Post #Ad7P6iCBTR1pv7xaNc by [email protected] | |
0 likes, 0 repeats | |
it's still not working. I think something deeply fucky is happening inside … | |
Post #Ad7R0GRlvftq1xIwVM by [email protected] | |
0 likes, 0 repeats | |
@foone can it do Hercules Graphics card mode … say, 640x350 with something r… | |
Post #Ad7R0GW1frIoF9IL8S by [email protected] | |
0 likes, 0 repeats | |
@HoustonDog I'm not sure. The game has separate graphics drivers for hercul… | |
Post #Ad7RUdXCee5cK5KMtc by [email protected] | |
0 likes, 0 repeats | |
I don't get it.I'm using the following:INP 0x3CA; Clear 3c0 indexOUTP 0… | |
Post #Ad7Rb9G9cAVASCSSPY by [email protected] | |
0 likes, 0 repeats | |
but instead of a pink color for index 1, I'm getting grey. AAAAAA grey. | |
Post #Ad7RobiL8Gb0T83k8G by [email protected] | |
0 likes, 0 repeats | |
it's in EGA/VGA video mode 0D: that's 320x200, 16 colors, 8 pages. I do… | |
Post #Ad7S5LV6fOlv6fqpcG by [email protected] | |
0 likes, 0 repeats | |
that grey color is color index 07: so it's acting like it's truncating … | |
Post #Ad7SNVA7U52AHegyES by [email protected] | |
0 likes, 0 repeats | |
ugh. maybe the mod register has the shift register turned off? that supposedly … | |
Post #Ad7TDToxiS9zBMa5Dc by [email protected] | |
0 likes, 0 repeats | |
ah-ha! I found a hint:EGA apparently only supports color remapping in 350-line … | |
Post #Ad7TpcnInn4e14zeTY by [email protected] | |
0 likes, 0 repeats | |
yeah that's fine | |
Post #Ad7U7Wp7ju4ciANmQC by [email protected] | |
0 likes, 0 repeats | |
there's my pink! it's just rendering completely incorrectly because I&#… | |
Post #Ad7UQRAF0NLaf3HC3E by [email protected] | |
0 likes, 0 repeats | |
so one way I could fix this is to stay in mode 0D (320x200x16) but use the VGA … | |
Post #Ad7UwsCvzfP1nl0Ewi by [email protected] | |
0 likes, 0 repeats | |
it helps if you don't have your DOSBox set to emulate an EGA card, I'm … | |
Post #Ad7V6M7GAEF7AQs0jg by [email protected] | |
0 likes, 0 repeats | |
THAT WAS THE WRONG INDEX OH GOD | |
Post #Ad7VCsfc2dltry39N2 by [email protected] | |
0 likes, 0 repeats | |
@foone I would listen to a podcast that is nothing but highly esoteric DOS era … | |
Post #Ad7VCskDlVSS6GCpYO by [email protected] | |
0 likes, 0 repeats | |
@shram86 god yeah | |
Post #Ad7VdQo1kSWjGie70a by [email protected] | |
0 likes, 0 repeats | |
but there we go. There's my pink. Just needed to use the VGA registers inst… | |
Post #Ad7Wi1vZlwwdVovwWW by [email protected] | |
0 likes, 1 repeats | |
there we go. Using my patches to pic2png/png2pic and modifying EGRAPHICS.EXE to… | |
Post #Ad7WqMPtTjnJNH5RQ0 by [email protected] | |
0 likes, 0 repeats | |
now I just need to write this onto a floppy disk (or two) so I can take it down… | |
Post #Ad7XktXXVvWIJycXS4 by [email protected] | |
0 likes, 0 repeats | |
I need to figure out where to stuff 60 bytes of VGA manipulation code though, m… | |
Post #Ad7ZIZ5IApcCgB1jzU by [email protected] | |
0 likes, 0 repeats | |
turns out the copyright notice is 63 bytes long | |
Post #Ad7ZR7uKaNMGzwyz7w by [email protected] | |
0 likes, 0 repeats | |
@foone deluxe? | |
Post #Ad7ZR7yELsTfC2o6Cm by [email protected] | |
0 likes, 0 repeats | |
@JLab8 No, the original. I have a lot of hate for deluxe | |
Post #Ad7ZX2HMQRFbHMZXpw by [email protected] | |
0 likes, 0 repeats | |
@foone it sounds like what is quickly becoming apparent is that EGA wasn't … | |
Post #Ad7ZX2LGBwMzTSOeum by [email protected] | |
0 likes, 0 repeats | |
@ranvel well, I mean, this is the video card where they programmed the BIOS to … | |
Post #Ad7ZjarlemeA1Zabb6 by [email protected] | |
0 likes, 0 repeats | |
MY FLOPPY DISK HAS DEVELOPED A BAD TRACK ZERO?TRANSPHOBIA! | |
Post #Ad7aInI7S8EQhAhSbo by [email protected] | |
0 likes, 0 repeats | |
and another.I even tried on a different disk. HOW MANY FLOPPIES ARE GONNA DIE O… | |
Post #Ad7aUvulDXxyumYwF6 by [email protected] | |
0 likes, 0 repeats | |
I grabbed another random floppy disk and it turns out it has been formatted wit… | |
Post #Ad7agbEbvkRGFiPV3o by [email protected] | |
0 likes, 0 repeats | |
@foone ....what. | |
Post #Ad7agbIrfvqESuOtgu by [email protected] | |
0 likes, 0 repeats | |
@x4nw I suspect this was the fault of Foone. That fucker is always doing weird … | |
Post #Ad7armpRAGfHObyCAq by [email protected] | |
0 likes, 0 repeats | |
@x4nw yep. confirmation:https://twitter.com/Foone/status/1455304578606370819 | |
Post #Ad7bIaIFsVeaKzEACG by [email protected] | |
0 likes, 0 repeats | |
I love that it's 2023 and I just did "copy *.* A:" like it's … | |
Post #Ad7cIBJ0skRWnFxC5Y by [email protected] | |
0 likes, 1 repeats | |
There we go. The trans-continental railroad tycoon. | |
Post #Ad7cVsxRtaFTwWOyUC by [email protected] | |
0 likes, 0 repeats | |
if you go into the game to see what's what, it turns out the blue is clear … | |
Post #Ad7cd8L36oulfjtf6m by [email protected] | |
0 likes, 0 repeats | |
also, my trans agenda has apparently sunk the city of Redding, CA. | |
Post #Ad7hT6fexC0VNKZjHc by [email protected] | |
0 likes, 0 repeats | |
@foone considering what's going on in that city, that's perhaps a good … | |
Post #Ad7hT6kGg3h3bcjPSy by [email protected] | |
0 likes, 0 repeats | |
@12 I don't know what's happening in Redding so I'll just assume th… | |
Post #Ad7hrD94X9F8PBpJY0 by [email protected] | |
0 likes, 0 repeats | |
@foone totally here for the cool and refreshing pink lemonade ocean | |
Post #Ad7hrDDKHKe6cNoiB6 by [email protected] | |
0 likes, 0 repeats | |
@thepi that's the gender fluid! | |
Post #Ad8xlhci64fTcP2qNU by [email protected] | |
0 likes, 0 repeats | |
@foone @12 want to find the portal to a rabbit hole? look into the Bethel Churc… | |
Post #AdMZnKsLxvs4xa2x16 by [email protected] | |
0 likes, 0 repeats | |
so I figured out the patterns of the tile types 5 and 8 (they're identical!… | |
Post #AdMbXafffdsbDvjb6m by [email protected] | |
0 likes, 0 repeats | |
ugh. I'm gonna have to write some hacky code to explore the map and figure … | |
Post #AdMbhZOjG97uAdZJ8i by [email protected] | |
0 likes, 0 repeats | |
anyway here's my partial rendering of a full Railroad Tycoon map. All unhan… | |
Post #AdMztesb6NxhXxpuWe by [email protected] | |
0 likes, 0 repeats | |
You ever stay up until 5:30 am and you're really really tired but you also … | |
Post #AdOPB3Km7sIOKHMpM0 by [email protected] | |
0 likes, 0 repeats | |
I have taken 1,324 screenshots. that should help. | |
Post #AdQ7YbhT6tvuiCz2bg by [email protected] | |
0 likes, 0 repeats | |
okay I have now similar-image recognized my 1324 screenshots.There are apparent… | |
Post #AdQ88MduZROGRBN0MK by [email protected] | |
0 likes, 0 repeats | |
FUCK something in my recognition is wrong. Those numbers are not correct | |
Post #AdQ8UhZXR5ppigyZKS by [email protected] | |
0 likes, 0 repeats | |
FUCKmy recognition is right.my screenshots were NOT. I think my program was tak… | |
Post #AdQ8kBkjVXClfPb43k by [email protected] | |
0 likes, 0 repeats | |
yeah look.two cursors. that's not right. | |
Post #AdQ8tZUuauMbusfeCW by [email protected] | |
0 likes, 0 repeats | |
ARGH this process already takes 15 minutes to run and now I need to fix it by s… | |
Post #AdQB0CKJLFATzL02bI by [email protected] | |
0 likes, 0 repeats | |
I ran it again... and it didn't work. FUCK | |
Post #AdQE2k7kxD7RFd250i by [email protected] | |
0 likes, 0 repeats | |
okay. regenerated. 197 grains, 196 livestock. | |
Post #AdQEJzqNlGzqvb8JU0 by [email protected] | |
0 likes, 0 repeats | |
(0, 118), (1, 137), (2, 156), (3, 175), (8, 14), (9, 33), (10, 52), (11, 71), (… | |
Post #AdQFSdToNbSg7yG8Om by [email protected] | |
0 likes, 0 repeats | |
okay I gave up and just stuck the list of known positions into the script. Here… | |
Post #AdQGw4lu5XM17jK89Y by [email protected] | |
0 likes, 0 repeats | |
this is terrible. did you even pay attention to what you were making, Sidney? | |
Post #AdQH43ymuwmSz29uSW by [email protected] | |
0 likes, 0 repeats | |
I of course mean these 4 stray pixels.whatta heck | |
Post #AdQI0Kj6oI1Jifbu88 by [email protected] | |
0 likes, 0 repeats | |
wow. the river layout code worked first try! I'm a better programmer than I… | |
Post #AdQIHzVURWkx7WezQW by [email protected] | |
0 likes, 0 repeats | |
uh oh. there's some incorrectly placed blocks | |
Post #AdQIPw9um5Qj3NMDk8 by [email protected] | |
0 likes, 0 repeats | |
hmm. I can't load up the riverworld (damn you Philip José Farmer!) because… | |
Post #AdQJoCdxEl9B5EXj3Q by [email protected] | |
0 likes, 0 repeats | |
okay I have a HALF RIVER WORLD, which does load properly. | |
Post #AdQK7RyQSpNk8CIQ5o by [email protected] | |
0 likes, 0 repeats | |
@foone wouldn't it be fun to have different cursors for left and right clic… | |
Post #AdQK7S2gD0miLOHoiu by [email protected] | |
0 likes, 0 repeats | |
@1000millimeter isn't that just Portal? :) | |
Post #AdQL8PSVOpXMZjO3Lk by [email protected] | |
0 likes, 0 repeats | |
okay I think I've found a problem.I can generate single-tile maps and they … | |
Post #AdQLFXM4RL1D5lm9gW by [email protected] | |
0 likes, 0 repeats | |
so I think I've fundamentally misunderstood how this works.my theory was th… | |
Post #AdQLMeQaXdfP3UHUS8 by [email protected] | |
0 likes, 0 repeats | |
but I don't think this is actually how the game works. I think it's mor… | |
Post #AdQLVkhmZWXV88fBYW by [email protected] | |
0 likes, 0 repeats | |
meaning my individual per-tile work isn't helping. fuck.I'm gonna need … | |
Post #AdQMYnkjnUF1PC3zaC by [email protected] | |
0 likes, 0 repeats | |
@foone I fear I don't know portal | |
Post #AdQMYnozXfdzcO3ODI by [email protected] | |
0 likes, 0 repeats | |
@1000millimeter well one of the main mechanics involves creating wormholes in s… | |
Post #AdQMmrrzHsASECA5wm by [email protected] | |
0 likes, 0 repeats | |
anyway I have touched that shit yet, but I finished up the ocean stuff: | |
Post #AdQP4lZlctD7pRIm12 by [email protected] | |
0 likes, 0 repeats | |
gah this is weird.the tracks tilesheet is 20x20, right? but the rest of the til… | |
Post #AdQQIV8rcjyIrspb3A by [email protected] | |
0 likes, 0 repeats | |
found another bug:the game doesn't use the same bridge logic for AI players… | |
Post #AdQRHjJ3ZjdqSknKxE by [email protected] | |
0 likes, 0 repeats | |
completely normal train layout | |
Post #AdQRPYUreIGVFp37C4 by [email protected] | |
0 likes, 0 repeats | |
oh godyou can have double tracks, right?but where are the tiles for the double … | |
Post #AdQSebMBOijMQEj8NM by [email protected] | |
0 likes, 0 repeats | |
I thought I might could cheat and just pull the generated tiles from RAM but I … | |
Post #AdQTydKxqPlgJHGyae by [email protected] | |
0 likes, 0 repeats | |
yeah I can't fully decode this (TOO PLANAR) but I'm pretty sure there&#… | |
Post #AdQUS6edvE53dNWzPk by [email protected] | |
0 likes, 0 repeats | |
yeah it seems to basically draw the regular track, but it offsets it tangent to… | |
Post #AdQVu4z3pKlMVzz3ey by [email protected] | |
0 likes, 0 repeats | |
gah.There's 4 types of stations: and three types of stations in the tiles.t… | |
Post #AdQWyzKmMMnwOY2yOm by [email protected] | |
0 likes, 0 repeats | |
they store the type of the station outside of the tracks list, which is weird. … | |
Post #AdQX7bMKrpLKe0skxk by [email protected] | |
0 likes, 0 repeats | |
anyway this is where I'm leaving it for now:stations are all rendered as De… | |
Post #AdQexytzHQpoOlXvTk by [email protected] | |
0 likes, 0 repeats | |
@foone This started me thinking what was their minimum target spec.Much of this… | |
Post #AdQexyyF1cEmbxXK6q by [email protected] | |
0 likes, 0 repeats | |
@pare the original minimum specs were 512kb ram | |
Post #AdR6fAeaA4kK3l9weW by [email protected] | |
0 likes, 0 repeats | |
@foone I distinctly remember the instructions telling me that there were forbid… | |
Post #AdaXIWQDVWyo66VJhY by [email protected] | |
0 likes, 0 repeats | |
THEY FUCKING THUNK INTO THE GRAPHICS DRIVER TO READ MAP CONTENTSI suspected thi… | |
Post #AdaXbx74UiegNfoXei by [email protected] | |
0 likes, 0 repeats | |
in any case I have discovered that the tile ids used when the game is running a… | |
Post #AdaXbxBKEu3earnwHo by [email protected] | |
0 likes, 0 repeats | |
this is done for a simple understandable reason:Sid Meier hates me personally | |
Post #AdaYMbMJC5DeWPBXuq by [email protected] | |
0 likes, 0 repeats | |
The in-memory tile IDs are: 00 Clear01 Forest 02 Desert03 FootHills04 Hills05 M… | |
Post #AdaYf3liJ1HlqTrzLE by [email protected] | |
0 likes, 0 repeats | |
anyway it's proving how terrible this question is.I want to find where the … | |
Post #AdaYw4sxPGwUESNAbQ by [email protected] | |
0 likes, 0 repeats | |
and yeah, that VRAM is memory mapped, but not directly and not completely. You … | |
Post #AdaYw7fx25JyszJKFM by [email protected] | |
0 likes, 0 repeats | |
and I can't easily decode the function that does it, because it's not i… | |
Post #AdaYw8TE4sjjLoMg3E by [email protected] | |
0 likes, 0 repeats | |
the worst part is that while there is a get_map_tile_at_position function, it g… | |
Post #AdaYw9FnAJaJmR5Ska by [email protected] | |
0 likes, 0 repeats | |
and each one has to toggle through multiple EGA planes to fully pull out ONE si… | |
Post #AdaYwA3QBnHeGMJ66i by [email protected] | |
0 likes, 0 repeats | |
so the EGA planes get manipulated something like 768 times EVERY TIME YOU SCROL… | |
Post #Adaa1ELFm89sxkd3B2 by [email protected] | |
0 likes, 0 repeats | |
@foone uh, fascinating :DI wonder how you found out and how is the code like. (… | |
Post #Adaa1EPrUzqRC2mjMO by [email protected] | |
0 likes, 0 repeats | |
@korpiq I found out through a combination of DOSBox's debugger and Ghidra | |
Post #Adaalctko6cmRatDF2 by [email protected] | |
0 likes, 0 repeats | |
uVar1 = (uint)('\0' < (char)(*(byte *)(*(int *)(y * 2 + 0x241a) + (x… |