Back to writing

Night Light (1995) (¶)

    Table of contents
  1. Introduction
  2. Extracting the assets
  3. Turn on your night light
  4. The missing menu files
  5. Conclusion

Introduction (¶)

When I was a kid, one of the computer games I played was Night Light, by GTE Entertainment. It's about Pandora the cat and Pixel the dog exploring the house in the dark after all the people have gone out for the night.

This game stuck in my memory in the way that only a formative childhood game can. There is something about the game mechanic of using the mouse as a flashlight that's very appealing to me, though of course I don't know if this is cause or effect.

For the past several years, I have occasionally been reminded of the game and tried to search for it online, only to come up empty handed. Finally, in 2018, a youtuber named Vulnerose Plays did a playthrough and also uploaded the ISO to the Internet Archive. The majority of comments on that video are from other people saying they'd been searching high and low for the game, too.

At the time of this writing, I have not actually played the game using the provided iso, as it would require me to emulate an older version of Windows and I haven't gotten around to doing it yet. But, I recently had the inspiration to reproduce the basic mechanic using javascript canvas, and that brings us to today.

Extracting the assets (¶)

I think some readers might be interested to know how I got the images out of the game without playing it, so I'll walk you through a bit of that here.

I used 7-zip to open the .iso file and browse the contents. Sometimes, you'll find that a game's assets are embedded into the .exe itself, and that makes things more difficult. Graciously, this game has the majority of its assets laid out in folders as separate files, which is great. It's not too hard to find a LIGHT.BMP and DARK.BMP for each level.

These images are 512x344, and they've got a hardcoded shadow underneath the game's HUD. But what are those megabyte-sized .mov files?

These video files contain 80 frames, each a tile of a larger image. I used ffmpeg to take the video frames apart, with ffmpeg -i DARK.MOV %03d.png.

The first 16 frames can be stitched together in a 4x4 grid to produce a 1024x688 image, and the last 64 frames can be stitched 8x8 to produce a 2048x1376 image. It's quite astonishing to see these levels in such high resolution after all these years.

I deleted 01-16 from each folder, then updated my stitch.py to take a --grid argument, and stitched the remaining 64 images together for each level.

I also extracted the audio clues and converted them to flac. Unfortunately, lots of the source files were corrupted, with an excess of zero bytes making them impossible to decode.

I wrote ffdecodetest.py to help me with this sort of task. The backyard and living room levels got particularly rekt, with only three and one clue passing the test, respectively. If by some very lucky chance you have a copy of this CD, perhaps you could try re-ripping it for us.

So, all I had to do next was copy the canvas code I wrote last time and start shedding some light on things!

Turn on your night light (¶)

Double-click on each game to go fullscreen. Just to be clear, I haven't recreated any of the actual puzzle gameplay, I'm just demoing the flashlight mechanic.

Your browser might prevent the clue audios from playing if you haven't clicked on anything in the document yet. Now's a good time to click something. How about this:

The missing menu files (¶)

I'm glad that the level images were easy to extract, since those were the most important parts for me. However, I really would like to get the main menu images and the staff credit portraits out as well.

I looked through all the files with 7z, expecting to find a .bmp or a tiled .mov representing the menu, and I'm simply stumped. I don't see them anywhere. The closest thing I could find was MMCHOICE.MOV, where Pixel and Pandora discuss the level options.

The game has several of these overlays for each of the levels too, so this file isn't unique in that regard. What I mean is, it's tempting to think mmchoice.mov would contain the full menu art if only we could zoom out somehow, and the other pixels are hiding just out of frame, but I don't think that's the case. The background art should be a separate file like the levels.

Perhaps I simply missed something, or perhaps they are embedded somewhere else. The game's NIGHTMPC.EXE is 7.7 MB, which seems big enough to hold some secrets. I searched through the binary to find any BMP or MOV headers but didn't have any luck. My understanding is that the game is supposed to work on both Windows and Mac: many of the game resources are provided in duplicate (BMP/PIC, WAV/AIF), but as far as binaries go I only see exe. Is there more somewhere that I'm not seeing? Are some files missing, and would that include the menu art?

If you discover anything, send me an email!

Along the way, I also found these image masks which give a hint as to how some of the click detection was done, which I think is very clever.

Conclusion (¶)

If you watch Tom Scott, you may have seen his video about Need for Speed, a sentimental visit to the real life location after which a level from the game was modeled.

All the things that we create, whether you have a big audience or whether you're just making stuff for the folks close to you, sure, maybe those things you make will be forgotten. Or maybe those things you create will get laid down as someone's long term memory, and affect them a lot later in their life. So, make nice things. Try to give people something they'll be nostalgic about. You never know what impressions you might be making for the future.

A kind thank you to all of these people:

Have fun!


View this document's history

Contact me: writing@voussoir.net