Limitations in Maniac Mansion

In (any version of) Maniac Mansion, if one kid is in the hallway with Green Tentacle, any other kid (even Syd and Razor) will refuse to go up the stairs to that hallway: “I’m not going up there… that monster’s got my friend!”

Why is that?

C64:



Nintendo Entertainment System:

MS-DOS Enhanced:

(Read Maniac Mansion creator Ron Gilbert’s authoritative answer in the comments.)

19 thoughts on “Limitations in Maniac Mansion”

  1. More likely is a limit on the physical space to put people.
    Maybe the game would put them on the other side of the tentacle

  2. I’d also say it’s somehow related to the sprite limit, but I didn’t figure out how. My best guess was that the columns are sprites, and because they are too wide to fit into one sprite they are actually two horizontally adjacent sprites each. However, even then it dind’t add up: columns + actors + cursor = 2×2 + 3 + 1 = 8 = perfectly fine. So somehow I must be missing something :)

  3. On GFG 2011 Ron Gilbert holds a talk (Videos are available) about Maniac Mansion with some interesting facts about tricks they used on the C64. I don’t think its a technical problem. In Maniac Mansion there are a lot of dead ends. And what was the reason for that? Simple – they just had one guy for testing the hole game and they were working night & day for over a year for this game (and the scumm engine) so they just missed it. Its one of these funny stories you read about hardware and software developers. Sometimes they feel sorry for it. One of the developers of the vc20+c64 thought about how many hours they stole all those kids because the serial port was slower than it should be. (VC20 had a bug in the CIA Chip & on the c64 they removed 6 conducting paths to save space). :)

  4. If we assume 160×200 graphics mode, then boy’s size is about 9×53 or 10×54 pixels, while tentacle’s is 9×63 — 10×64. So boy must be at least 3 sprites high (12×21 each), and tentacle occupies 3 or 4 sprites, making it impossible for 3 characters to appear on screen at the same time (8 sprites max).

  5. WRT colors all characters are perfectly fine to coexist on the same screen: each sprite has one unique color to it (Green Tentacle — green, Dave — blue, Syd — yellow, Bernard — white), background (transparent AFAIU) and two shared colors — beige + black.

  6. I haven’t played Maniac Mansion, but this sounds like an intentional roadblock – fairly typical of adventure games. The usual reason is to prevent the player from getting themselves stuck. So if allowing the kids to go up the stairs would prevent the kid in the hallway from escaping the tentacle, and once upstairs the kids couldn’t return unless all three were present. Modern games do it too. In Portal 2 PotatOS is sitting on the button which lowers the lift to get to the next area. So you can’t advance without picking her up.
    The other possibility is technical, especially for games on 8bit platforms. In this case I’d bet it’s a memory limitation. When the game goes upstairs it doesn’t track the downstairs state anymore. Or it has to dump downstairs static data to make room for the upstairs data.

  7. I’ve found better screenshots. Dave’s size is 11×72 pixels and tentacle is 11×85. This doesn’t make sense to me though

  8. Interesting discussion about the C64 sprites :)

    Two things here…

    1/ The fact that this limitation is present on all platforms is purely a timeline reason. The first version released was the C64 one (1987), followed one year later by ST, Amiga and PC, and later on NES (1990).
    So having the limitation in the first version, solved by a hack in the script of the game, would have been propagated to all versions.

    2/ Looking at the character, they are all 24×74 pixels wide maximum. 24 is the width of a sprite, and they were 21 pixels high. Looking at it, it is clear they do not use 4 sprites per character, but you could flag each of the 8 sprites to expand them horizontally and/or vertically by a factor of 2. Looking at the vertical precision, we can admit that a character is composed of 2 24×21 sprites, expanded vertically. The tentacle is taller, so let’s assume it takes 3 sprites instead of 2, we are now using 5 sprites. Adding the cursor, we are now using 6 sprites. This leaves room for a second character.

    Besides, when you begin the game, you can see the 3 kids in the same screen (2+2+2+1 = 7 sprites).

    One can note that several C64 games which needed to display more than 8 sprites used some software multiplexer. Broadly, the idea is to follow the vertical beam and use an interruption which will modify the sprite registers on the fly. For example, you have already displayed 8 sprites in the upper part of the screen, then when the vertical beam reaches the middle of the screen, the 8 sprite registers are modified to point to new memory data blocks and coordinates. This kind of trick was heavily used in Turrican for example.
    This interruption is also used in Maniac Mansion so we can have the 160×200 multicolor mode for the graphics and the 320×200 text mode for the commands.

    At this stage, I would then rule out a sprite limitation problem, but who knows :)

    I also first ruled it out quickly because the PC had no sprites, hence all the rendering is done in a framebuffer (colors make me think of EGA, but resolution seems to be VGA). But because of 1/, I came back on this reasoning.

    Interestingly, just before posting, I checked and noted that an Apple II version was released at the same time (at least the same year) than the C64 one. As this computer had no hardware sprite and was all rendering software based, was this version limited because of the C64 hardware???

  9. Looking again at the 320×200 C64 screenshot, I see that graphics looks like 160×200, while text is 320×200, and cursor is obviously drawn in 320×200 resolution. Kids’ images are 24×72 max indeed, but they are not _vertically_ extended wholly, just the middle parts I think (same true for tentacle).
    Yes, there are 3 kids on the same screen simultaneously at the game start, but they might be drawn as s/w sprites there.

  10. This was done to simplify programming the puzzle logic, it was not done for technical reasons. Since the GT blocked one of the characters, we didn’t want to deal with another one trying to sneak by. This was almost 25 years ago, but I remember having a conversation with David and Gary about the problems it was causing and this was a simple solution.

    As for technical limitations…

    The C64 has 8 sprites that are 24×21 pixels. I used interrupts down the screen to reuse the sprites vertically, so I had 8 24 pixel wide sprites that could be as tall as the screen. I used one of the sprites for the cursor, which left 7. I seem to remember some speed limitation that wouldn’t let me bank 7 sprites in the time it took to do one scan line, so the limit was 6 characters on the screen at one time.

    So now you know.

    Ron Gilbert

  11. According to Wikipedia, the entire screen is actually in textmode — especially the graphical part! So I guess that one or more sprites are actually used for the background (the stairs maybe?) thereby leaving sprites for two players only.

  12. “Not Anonymous”,

    Think you got it: the entire screen is composed of characters. I’d guess the limitation is that, with only 256 character positions to work with, there wasn’t enough character tiles available to generate the extra kids.

  13. Funny how you guys still speculate about it, even though Ron Gilbert himself has solved the question already. And it has nothing to do with the characters. Your argument would be valid only for C64 anyway, but as you see the PC has the same limitation.

  14. The game engine is pretty smart.
    I revereded it pretty much completely for c64 and wrote a few facts in an article here:
    http://noname.c64.org/csdb/release/?id=84122
    What bugged me more, was the fact that all character sprite gfx are stored raw on disk, exceot for Sandy’s breasts which seem to be EOR’d or something. Intentional, I wonder? ;-)

Leave a Reply to Dusk Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.