HNHacker News
TopNewBestAskShowJobs

madmoose

472 karma · joined January 12, 2010

Poking at games to see what makes them tick.

https://mastodon.social/@madmoose

submissionscomments
madmoose··on Cicoparser: Full game reverse engineering [video]
We've started reverse engineering Dune a bit for a ScummVM engine and I think it would pose a severe challenge to cicoparser.

All the areas where you currently need to manually change cicoparser, Dune does everywhere. It jumps based on flags, makes indirect jumps and calls (Dune dynamically loads in video, pcm audio and midi drivers), it jumps wildly around, into, and out of the middle of other procedures, and so on. I'd love to see you try, though.

Secondly, I don't really see a great advantage of cicoparser over emulating the CPU. You've converted the disassembled code to assembler-in-C, but you haven't reverse engineered the application. If I've successfully converted an application with cicoparser, yes, I can run it, but I haven't learned much about how the original application works. It can be a good starting point for reverse engineering though.

We had an engine in ScummVM that was created with a similar process. The application was organized well enough (with clear function boundaries, etc.) that the engine could gradually be transitioned to proper C.

madmoose··on When real world mapping meets Tolkien
Tolkien has been dead for a while now, I don’t think he minds.
madmoose··on Mitigating Memory Safety Issues in Open Source Software
> I would call C++ a memory safe language

C++ is not, in any sense, a memory safe language.

madmoose··on ScummVM “Interactive Fantasy” 2.2.0 Sees the Light
gog.com provides many DOS-based games with ScummVM, when ScummVM supports them.
madmoose··on Buying a single character domain – and 3 character FQDN – for £15
> example.com as a six-letter domain

If we're being pedantic, "example" has seven letters!

:-)

madmoose··on Reverse-engineering the Intel 8086's instruction register
I won't tell you what to work on next but I would be very interested in an analysis of the 8086/8088 instruction decoding and microcode structure. TBH I watch and read everything you do with great interest.
madmoose··on OpenDiablo2
ScummVM contains almost 80 game engines (and a lot of sub-engines) supporting hundreds of games. Most of them are made by straight reverse engineering of the original executables.

In the early days we did have a lengthy back-and-forth with a tenacious lawyer from LucasLegal but they backed off when we convinced them that we didn't support piracy.

It is not uncommon for rereleases of older games to use the ScummVM engine instead of the original engine, see for instance the recent rerelease of Westwood's Blade Runner on GOG.com, which wouldn't have happened without ScummVM.

madmoose··on Rämixx500 – An Open Hardware remake of the Commodore Amiga 500+ mainboard
I think it's very clear what you'd need to do - contact the creator and ask for a license.
madmoose··on Power Plant Turns Waste into Energy and Doubles as a Ski Slope and Climbing Wall
The designer of the chimney puffer is serving a life sentence for the brutal murder and dismemberment of a Swedish journalist, on his home-made submarine.
madmoose··on ScummVM 2.1.0
SCUMM is (was) the scripting language used to implement game logic in the various Lucasfilm/Lucasarts games. The engine was referred to as SPU (SCUMM Presentation Utility). So it's not like the whole engine was written in SCUMM. Audio, graphics, video, fonts, walkbox handling etc was in native code, of course, and especially in the first games a lot of stuff was hardcoded in the engine.

It doesn't really make sense to call it a SCUMM emulator, ScummVM has a reimplementation of the whole engine.

Of course there's also other engines in ScummVM, some based on the original source kindly donated to us by the developers, but most created by painstaking disassembly.

ScummVM does have emulation for various pieces of audio hardware but that's the only part I would consider emulation.

madmoose··on Programming Fonts – Test Drive
I use a reproduction of the IBM VGA console font called Nouveau IBM [1]. Very happy with it: https://i.imgur.com/cT0pCL4.png

[1] https://www.dafont.com/nouveau-ibm.font

madmoose··on How the Dutch created a casual biking culture
Copenhagen's history with bikes goes far back, here's some newsreels from the 20s and 30s: https://www.citylab.com/transportation/2014/05/-/9014/
madmoose··on How Voxels Became ‘The Next Big Thing’
Not Louis, but the article I linked above says they used 3D Studio Max and converted it to the slice model format.
madmoose··on How Voxels Became ‘The Next Big Thing’
Hello Louis!

I've certainly had a lot of fun figuring out how you did what you did, so thank you for that, no matter what you call it :)

You certainly crammed a lot of tech into one engine! Full screen 15 BPP videos with full z-buffer with smaller alpha-channeled videos rendered on top, character models with lighting. Even the UI is looping videos.

Once I get proper path finding working Blade Runner will be a lot more playable in our ScummVM engine.

I've probably rewatched the opening scene of the game a thousand times while working on it...

I only wished that you had used a scripting language for your game code instead of compiling it to DLLs. I know you optimized heavily for speed but it would have made our task a lot easier :)

madmoose··on How Voxels Became ‘The Next Big Thing’
The page you linked quotes Louis Castle:

> What we are using is not voxels, but sort of 'voxels plus.'

So "not voxels". Louis Castle probably called it voxel-like because he didn't want to get too technical in an interview. Their technique has not been described in detail in the press but see http://deadendthrills.com/future-imperfect-the-lost-art-of-w... for an article that calls it a "slice model"-technique.

I'm not an expert on voxels but I've reverse engineered and reimplemented most of the Blade Runner rendering engine and in my opinion it doesn't count as voxels. For one, you're never going to be able to rotate the models around any axis other than the vertical.

madmoose··on How Voxels Became ‘The Next Big Thing’
Blade Runner didn't actually use voxels, they used a rather unique technique that they called "slice animations".

The 3D models were sliced from bottom to top into a couple of hundred slices (depending on desired quality) by intersecting the model with a horizontal plane and storing the resulting polygons.

The engine can only rotate the models around the vertical axis.

I made a hacky javascript version of the renderer a long time ago: http://thomas.fach-pedersen.net/bladerunner/mccoy_anim_13_fr...

EDIT: Let me also plug our WIP Blade Runner engine for ScummVM: https://github.com/scummvm/scummvm/tree/master/engines/blade...

madmoose··on GDPR: Don't Panic
> who possibly speaks a language I don't

I'm assuming you speak English. Do you really think there's any lawyer in the EU, competent to litigate EU law, who doesn't speak near-fluent English?

(Actually, if the lawyer is from continental Europe, and you only speak English, they do speak at least one language you don't, but I'm guessing that's not what you meant.)

madmoose··on Number systems of the world, sorted by complexity of counting (2006)
As a parent of English/Danish bilingual children I have to tell you that you are very wrong on this.

My children still occasionally make mistakes when saying numbers in the range 50-99 in Danish, they haven't said the English numbers wrong for years.

That the word for 50 contains the word "tre" (three) and the word for 90 contains the word "fem" (five) is very confusing to our children, especially when the English equivalents are so simple in comparison.

madmoose··on Multiplayer Tron in the terminal
Umm actually, it's originally called Blockade.

https://en.wikipedia.org/wiki/Blockade_(video_game)

https://twitter.com/nothings/status/944092745282371584

madmoose··on Hack – A typeface designed for source code
I humbly beg to differ. This is the terminal and editor font I use: http://www.dafont.com/nouveau-ibm.font
madmoose··on Face ID, Touch ID, No ID, PINs and Pragmatic Security
TouchID was removed because it took up space on the front of the phone and Apple wanted the screen to be bigger. There's no deeper reason than that.

> Will Apple continue progress and built in PinchID - a tiny needle that sting you to test if you are you based on your blood/DNA?

I struggle to believe you when you say that's a serious question...

> Im also concerned about the data Apple will collect.

The FaceID data will be stored in the secure enclave locally on your phone, just like TouchID data was. Apple will not collect it.

madmoose··on Cap'n'Proto remote vuln: pointer overflow check optimized away by compiler
For the simplified example given in the CVE:

  word* target = segmentStart + farPointer.offset;
  if (target < segmentStart || target >= segmentEnd) {
    throwBoundsError();
  }
  doSomething(*target);
Here's how I'd do it. (Caveat emptor, not knowing all the relevant types in the example, etc.)

  size_t segmentLength = segmentEnd - segmentStart;
  if (farPointer.offset >= segmentLength) {
    throwBoundsError();
  }
  word* target = segmentStart + farPointer.offset;
  doSomething(*target);
In general you can never compare pointers unless they point into the same array or object. In fact, even creating an invalid pointer is UB, you don't event have to compare or dereference it.
madmoose··on Kristen Stewart co-authors AI paper
There was no request of any sort in your comment.
madmoose··on Apple’s rotten appeal
Too late, she won already: http://www.b.dk/aaretsdansker
madmoose··on Go fonts
That's what Ahem is for: https://www.w3.org/Style/CSS/Test/Fonts/Ahem/
madmoose··on I finally finished this awesome game called Photoshop, let me send you a video
After a quick test, VLC says:

Video: H264 - MPEG-4 AVC (part 10) (avc1) Audio: MPEG AAC Audio (mp4a) at 48000 Hz

Sadly it maxes out at 1080p.

madmoose··on CaptionBot by Microsoft
Feeding noise to a neural network is always fun: https://i.imgur.com/pPdwIGx.png
madmoose··on The Brick Wall of C++ Source Code Transformation
Any relation to http://www.csse.monash.edu.au/~damian/papers/HTML/ModestProp... ?
madmoose··on What if anything have we learned from C++? [video]
I like to call that "C with std::vector"
madmoose··on Vulnerability in Microsoft Font Driver Could Allow Remote Code Execution
Both Chrome and Firefox pass web fonts through OTS [1] before rendering them, so hopefully that mitigates the threat.

[1] https://github.com/khaledhosny/ots

← PreviousPage 3 of 4Next →