Super Mario World Memory Map
smwcentral.net
smwcentral.net
In many ways, a game like SMW is more complex than a lot of the fully 3D games that came out in the following decade.
Sure, a game like Quake or Tomb Raider had to crunch a lot more math for each frame of their fully 3D worlds. However, 2D games like SMW offered a much richer range of interactions between player/enemy/environment compared to those early 3D titles. It was quite a while before 3D games caught up.
I don't think Super Mario World had richer interaction than Super Mario 64—quite the opposite, in fact, even putting aside the addition of 3D.
(Super Mario World is a better game though.)
Detailed physics and AI, on the other hand, is a thing that is largely beyond the ability of the SNES platform, and that's something that started to pick up along with 3D gaming. We don't greatly appreciate these things in video games because we can pretty easily play with blocks and balls or find live opponents in the real world, but it's a realm that still has a lot of untapped potential.
The physics it implements is cartoony in that max velocity is capped such that acceleration is limited, but it's an implementation of verlet integration, more or less.
You can see the devs playing with it in a few levels. For example there's that long vertical fall with multiple objects falling along with you that leads into the 8th world.
Or a few levels where an enemy causes chaos with a turtle shell.
> This is probably only true if you're thinking of
> the complexity in terms of board-game style
> complexity, with characters and items and abilities
> that you can enumerate in a list.
> Detailed physics and AI, on the other hand, is a
> thing that is largely beyond the ability of the SNES
> platform, and that's something that started to pick
> up along with 3D gaming.
Errr... yes? Obviously, nobody is claiming that the SNES was capable of "detailed physics and AI."My first thought was that perhaps you were replying to the wrong post, but there aren't many replies. You certainly don't seem to be replying to what I wrote, so I'm baffled.
Let's go back to what I said. I said it took a while for 3D games to catch up to latter-day 2D titles in terms of "range of interactions."
In SMW, Mario can...
- Walk - Run - Jump - Spin - Swim - Hold an item - Throw an item - Throw a fireball (as Fire Mario) - Drop a reserve item - Run jump - Super jump (with Yoshi) - Fly (as Cape Mario) - Crouch - Climb - Smash into the ground - Swallow an item (with Yoshi) - Spit out an item (with Yoshi, will have different effects depending on what was eaten) - Transition between different states (small, big, Fire, Caped, each with or w/o Yoshi)
Mario has dozens of abilities in SMW depending on which powerup is active and which (if any) of the Yoshis he's riding, as well as depending upon what Yoshi has eaten. There are dozens of objects with which they can interact, and many of those objects can also interact with each other. There is a physics engine, albeit a simplified 2D one, with gravity and momentum.
Contrast this with, say, Quake. You are of course inhabiting a fully 3D world, but there are a smaller range of interactions possible.
As I said, "a lot of" 3D games from the following decade (SMW came out in 1990) didn't have as rich of a range of interactions available. They were 3D, but there was generally less to do.
I can think of some exceptions, mainly from the latter half of the 1990s, but as I said, it generally took a while for 3D games to catch up.
Static memory allocation also makes things easier for hackers. No need to find and follow pointers. Many emulators have Lua support and it's possible to interface with the game this way. Amazing tools can be built. For example:
https://github.com/brock-heinz/NESDev/blob/master/Emulators/...
More data:
https://datacrystal.romhacking.net/wiki/Category:RAM_maps
Video games are soft real time applications: performance visibly degrades if the targeted frame rate is not met. Given the hardware of the time, they had to be practical and efficient.
This might not be the case anymore. Today we have hardware with incredible performance but some of that speed powers abstractions that make it easier to develop the game. Older games had complete control of the machine but now they are merely one program scheduled to run by the operating system.
> What baffles me is how often I find a game design to be far more elegant than that of common software.
I think it's because of how little abstraction there is. The data structures we find in the code of older games are directly related to the game itself. It's rare to find a retro game with a separate game engine.
Of course, game developers tried to put as much data as possible into the part of RAM that is faster to access.
Highly recommended channel. The video about blanking is a particularly awesome entry in this series and it even features Super Mario World:
I just don't know what to do with the information!