20

Doom was ported to the Super Nintendo using a Super FX 2 chip on the cartridge. It has most of the features of the full game, though with a few omissions, such as absence of sound propagation, probably due to the SNES having a much weaker CPU than a 386 PC.

One omission that surprises me is the lack of textures on the floor and ceiling. I would've thought that was exactly the kind of thing the SNES mode 7 was for.

Was it for some reason impossible to combine mode 7 with the Super FX 2, or was there some other reason for the omission?

2
  • 1
    I did not know the SNES even had Doom on it, or that there were FX chip games beyond Starfox and F-Zero.
    – DKNguyen
    Jan 2 at 2:21
  • 1
    I think it does use Mode 7 for the automap though.
    – Dai
    Jan 2 at 13:32
33

Mode 7 is just an image warp — the programmer sets a 2d offset that is applied between each pixel and the next when proceeding in raster order. That allows 2d rotation and scaling to be applied; if you change the start position and scale per line then that’s how you get a flat perspective plane.

Doom can’t make use of this for at least two reasons:

  • it would need to draw multiple perspective planes, not just one, so the hardware is insufficient;
  • if it were having the SNES apply display warping, it’d then have no way to draw the walls flat.

There’s also the concern that the drawing is only part of the problem. Doom knows the shape of the floor areas as vertical spans but it needs to convert those into horizontal spans for efficient pixel plotting. That’s another CPU cost and, as you observe, the SNES is already struggling.

1
  • 1
    Do you think that the flat walls could be sprites, and that raster interrupts could arrange for a ceiling and floor to be different mode7 configurations?
    – OmarL
    Jan 1 at 17:15
21

Among other reasons: floors and ceilings of different heights would be very difficult due to the way Mode 7 is used to imitate a projective transformed plane.

The effect works by setting the rotation, scale and offset of the tilemap on each scanline and these remain constant for the entire horizontal line. This can be used to render a single perfectly flat plane that spans the screen, but not one with holes or gaps in (unless these are represented by solid colour/other effects).

You can't change these parameters midway through a scanline to render floors at different heights, so the blue and grey floors here would be incredibly difficult to render textured on a single horizontal screen line using that mode.

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.