Difference between revisions of "Addams Family (NES)/Game Mechanics and Techniques"

From SDA Knowledge Base

Jump to: navigation, search
m
Line 87: Line 87:
  
 
===Fester's room===
 
===Fester's room===
The manual says: "''There must be something worthwhile in here.''" (the word 'something' is written in italic in the manual as to emphasize some kind of clue or riddle). There is a money bag in the upper left corner in plain sight. It seems a bit odd that this is what the manual refers to. Since it's clearly visible, there is no need make a clue about it or pretend it needs to be discovered.<br><br>
+
The manual says: "''There must be something worthwhile in here.''" (the word 'something' is written in italic in the manual as to emphasize some kind of clue or riddle). There is a money bag in the upper left corner in plain sight, but it seems a bit odd if that is what the manual refers to. Since it's clearly visible, there is little point in making a clue about it or pretend like the player needs to look hard to discover it?<br><br>
  
 
As already mentioned in the section about the middle music manuscript, it can easily be confirmed that there are no unknown rooms in the game that are missing an access. So if there really is something other than the money bag the manual refers to, it could be e.g. a hidden item or switch. Nothing seems to be triggered in the code when the middle music manuscript is played.<br><br>
 
As already mentioned in the section about the middle music manuscript, it can easily be confirmed that there are no unknown rooms in the game that are missing an access. So if there really is something other than the money bag the manual refers to, it could be e.g. a hidden item or switch. Nothing seems to be triggered in the code when the middle music manuscript is played.<br><br>
  
The most likely answer is probably that there is nothing there. Maybe whoever wrote the manual did it based on incomplete information about the game or based on content that was later removed from the game or they just tried to too hard to come up with an interesting twist to the text for this room, when really there wasn't much to say in the first place. It wouldn't be the first time a game manual contains wrong or misleading information.
+
The most likely answer is probably that there is nothing there. Maybe whoever wrote the manual did it based on incomplete information about the game or based on content that was later removed from the game or they just tried too hard to come up with an interesting twist to the text for this room, when really there wasn't much to say in the first place. It wouldn't be the first time a game manual contains wrong or misleading information.
  
 
===Locked door in the hall===
 
===Locked door in the hall===
Line 99: Line 99:
 
4/5 - x/y window coordinates<br>
 
4/5 - x/y window coordinates<br>
 
12/13 - Gomez's x/y coordinates on screen<br>
 
12/13 - Gomez's x/y coordinates on screen<br>
E/F - Appears to be used as a pointer in the code to specific events. It's e.g. used to trigger the dancers in the ballroom when Lurch plays the right music manuscript.<br>
+
E/F - Appears to be used as a pointer in the code to specific events. It's e.g. used to point to the piece of code that triggers the dancers in the ballroom when Lurch plays the right music manuscript.<br>
30 - Can be thought of as a "probability momentum". When swimming/on ice/rowing, Gomez moves a pixel in the x-direction if $30>$31. If $30>$31+#$F, Gomez will move two pixels on the same frame.<br>
+
30 - Can be thought of as a "probability momentum". See the section about swim physics for more details.<br>
31 - Used to calculate Gomez's movement when swimming/on ice/rowing. See description for $31. Every frame the value of $31 is subtracted from $30. If $30<0, #$F is added until the address contains a positive value again.<br>
+
31 - Used to calculate Gomez's movement when swimming/on ice/rowing. See the section about swim physics for more details.<br>
 
32F/33B - x/y of dancers in the ballroom<br>
 
32F/33B - x/y of dancers in the ballroom<br>
 
471 - Room number #$0-#$24. The value is only shown during room transitions, but changing while inside a room teleports to the corresponding room.<br>
 
471 - Room number #$0-#$24. The value is only shown during room transitions, but changing while inside a room teleports to the corresponding room.<br>
Line 108: Line 108:
 
4E9/4E8 - Gomez's big/small health (56 points max)<br>
 
4E9/4E8 - Gomez's big/small health (56 points max)<br>
 
623 - Contains the music manuscript when handed over to Lurch<br>
 
623 - Contains the music manuscript when handed over to Lurch<br>
636 - Contains the music manuscript in the inventory<br>
+
636 - Contains the music manuscript in Gomez's inventory<br>

Revision as of 04:43, 25 June 2022

Items

In total, there is 1.056.000$ (+ a few thousand in hundred dollar bills raining down on the balcony), 3 chunks of cheese and 3 1-ups (but only two can be collected at most) in the game.

Dollar bill.PNG - Dollar bill, worth 100$

Dollar bills.PNG - Dollar bills, worth 500$

Gold bar.PNG - Gold bar, worth 2000$

Diamond.PNG - Diamond, worth 4000$

Money bag.PNG - Money bag, worth 10000$

1-up.PNG - Extra life. The 1-ups in the secret room of the pond and the one in the freezer are mutually exclusive. Collecting one will remove the other. The 1-up in the chimney is not impacted by this.

Cheese.PNG - Cheese, restores 16 health (56 max)

RNG

Most of the movements in the game run on local timers (item on screen and in a few cases room timers). However, at least the bats appear to have a random element to them. This has not been described or investigated in detail. In TAS conditions, it can easily be seen that adding even small jumps, delaying a frame or jumping over/on a previous enemy can change the behavior of upcoming bats. Based on these observations, it's assumed that bat behavior can't be manipulated in real-time.

Movement mechanics

The basic movement in this game is very simplistic. Movement speed in the x-direction is 1 pixel/frame, with no acceleration, momentum or sub-pixels. The y-speed is slightly more sophisticated (0-3 pixels/frame) to give an impression of jumping in an arc. There are also some sections in the game that have more involved physics:

Stair mechanics

The first step on a stair can take anywhere from 1 to 10 frames and appears to be based on a global (or cyclic) timer. It does not appear to be manipulable, but the exact mechanics behind have not been investigated. The downtime can be used for x-movements in TAS-conditions, but it's difficult with the current knowledge to imagine any way to minimize stair downtime in real-time.

Swimming

Many games use sub-pixels to implement acceleration and inertia. Addams Family instead uses a somewhat convoluted calculation to achieve a similar result, but with some side effects that can be taken advantage of in a speedrun.

When Gomez takes a swim stroke (press 'A'), #$6 is added to the value in $30, up to a max of #$21. $30 can be thought of as a sort of "probability momentum". Each frame, the value in $31 is subtracted by the value in $30. If $31 ends up being negative (i.e. $30>$31), #$F is added to $31 and Gomez moves one pixel in the x-direction. If $31 is still negative, another #$F is added and Gomez moves one more pixel. The value of $31 will therefore change quite erratically every frame. As a result, when looking at swimming in frame advance, it will appear as if Gomez moves between 0-2 pixels each frame, even when the swim strokes are taken at a seemingly steady pace.

The value of $30 can decrease in two ways (if we disregard swimming into a solid object):

  • Every time $45A changes value from 0 to 1, $30 decreases by 1. $45A is a cyclic counter that counts up every frame in the range 0-3. Hence why swim strokes need to be taken at a steady pace.
  • If the d-pad is released, $30 will decrease with 1 every frame. Note that it doesn't matter which direction on the d-pad that is pressed. So it's possible to goof around between swim strokes without losing any speed.


It's also worth noting the following two important aspects about $30:

  • Taking a swim stroke when the value of $30>=#$16 does not increase the value of $30. Once a value of #$21 has been reached, the optimal swim stroke frequency is therefore every 24 frames, corresponding to the value in $30 having reduced to #$15 after 6 cycles of decreases from $45A (each one taking 4 frames).
  • Gomez can at most take a swim stroke every 9 frames. So too rapid button mashing will result in a loss of momentum.


In summary, when trying to swim quickly, there should first be an acceleration phase of 5 quick strokes every 9 frames. This will increase the value in $30 5 times by a value of #$6, but since $45A at the same time decreases the value 9 times (36 frames between the 1st and 5th stroke => $45A cycles through its 4 values 9 times), the final value will be #$21 if done optimally. From this point and onwards, a new stroke should be taken every 24 frames (and not faster!) to maintain the highest swim speed. Because of the layout of the pond, other considerations such as y-position and item collections obviously come into play as well.

Ice physics

Ice physics share the same fundamentals with swimming, but with different parameters. One is added every second frame to $30 if pressing the d-pad in the direction of movement, with a max value of #$16. Movement is calculated in the same way as swimming by subtracting the value in $30 from the value in $31. The decrease of $30 from $45A when releasing the d-pad follows again the same rules as swimming.

Some comments:

  • The physics are the same when jumping as when on the ground in the freezer.
  • As opposed to swimming, there is no difference between pressing the opposite direction on the d-pad of movement or not pressing the d-pad at all. The only thing able to decrease the value of $30 is when $45A changes value from 0 to 1 (every 4 frames).

Rowing the boat on the secret river

The boat shares fundamentally the same physics as ice and swimming, but with other parameters. Pressing the direction of movement and B at the same time increases the value of $30 by 4, up to a max of #$27. The x-movement of a frame is again calculated by looking at $31-$30. Since the max value of $30 in this case is higher than on ice or when swimming, frames with 2 pixel movements are more common.

$45A cycles through the values 0-3 and decreases $30 by 1 every time it goes from 0 to 1 (so every 4th frame). However, this is not in effect while in the air. If linking together buffered jumps, $30 can still decrease if $45A changes to 1 on the landing frame between the two jumps. This can be avoided by holding down B.

Since the x-movement isn't decreased during jumping, a good strategy in real-time is to mash B a few times when starting to row the boat (keep in mind that the initial value of $30 is $#16) and then primarily rely on buffered jumps to avoid any slowdowns. Remember to hold B down while jumping to avoid any decrease of $30 on landing frames.

Glitches and special techniques

Flying glitch

A glitch that allows Gomez to start flying after having climbed a stair. Useful in speedruns and easy to perform. It was discovered by 'ventuz', https://tasvideos.org/Forum/Posts/263156.

Item drops

It has been observed on a few occasions (only reported by 'ktwo'?) that enemies can drop cheese:
https://www.youtube.com/watch?v=20q9aWZ6tFA

This hasn't been recorded on emulator yet and is therefore difficult to analyze further. Unless money drops are possible, only the no-death category would be likely to benefit from additional cheese drops though.

Teleportation

Presumably found by 'capcomistle', https://www.youtube.com/watch?v=-hMBugFxC9k.

The secret rooms and the chimney contain hidden paths that lead to the bone rooms and the pit. There is no visual indication of where they are, but entering them is easy and don't require any precise inputs. Just press up when you're in the right spot. You'll generally end up outside the room geometry. In some of the destination rooms, it's possible to get back to a door, which can then be entered and thereby restore the normal game layout, while some teleportations lead to locking the game. By dying before the game locks up, the game can be continued as normal though.

Exploiting poor hit detection of solid walls

If turning around in the freezer, while using the inertia to continue moving, you can clip into the solid wall near the end of the room. This can be used to jump over snowballs.

A similar technique can be used in the bone rooms in the crypt to jump into the walls when riding the moving bone platforms. This can be used to trigger the movemnt of the upper bone platforms (they're only moving when Gomez is close enough to them) to reduce waiting time.

Open questions

Middle music manuscript

The manual says: "Each piece of music may help you, but you must figure out how!". The manual is quite explicit and actually explains how to solve the whole game and where to go in each step. It's often worded as mini-clues such as this, but they are pretty easy to figure out or even literally explained elsewhere in the manual. The left and right music manuscripts and their purpose are both mentioned in the manual's walkthrough and there does not seem to be anything glaring missing in the game that would need to be opened up. It can also easily be confirmed by playing around with RAM-address $471 that there are no unknown rooms that wait to be unlocked.

It can be worth mentioning how the game handles the other two music manuscripts. When a manuscript is collected, the value in $636 is changed from 0 to 1-3, depending on which one that was picked up. When taking it to Lurch, the value is copied to $623. A timer ($624/$625) then starts to count 5 full cycles (= 256 frames each) after which Lurch will start playing. If Gomez is in the correct location, the corresponding event will trigger. So when playing the left manuscript, the door in the library will start to open ($33E), and when the right manuscript is played, the dancers will move away (x/y - $32F/$33B) from the door to the wood.

The piece of code that is run is based on the values of RAM-addresses $E/$F. They change value depending on Gomez' location. This makes it a bit harder to conclusively say that the middle manuscript doesn't do anything (even though it's the likely answer). Because unless you are in the right location, the piece of code that can be triggered by this manuscript being played won't run and can be hiding anywhere in the game code.

Finally, the manual says that each manuscript may help, which is consistent with one of them not doing anything.

Fester's room

The manual says: "There must be something worthwhile in here." (the word 'something' is written in italic in the manual as to emphasize some kind of clue or riddle). There is a money bag in the upper left corner in plain sight, but it seems a bit odd if that is what the manual refers to. Since it's clearly visible, there is little point in making a clue about it or pretend like the player needs to look hard to discover it?

As already mentioned in the section about the middle music manuscript, it can easily be confirmed that there are no unknown rooms in the game that are missing an access. So if there really is something other than the money bag the manual refers to, it could be e.g. a hidden item or switch. Nothing seems to be triggered in the code when the middle music manuscript is played.

The most likely answer is probably that there is nothing there. Maybe whoever wrote the manual did it based on incomplete information about the game or based on content that was later removed from the game or they just tried too hard to come up with an interesting twist to the text for this room, when really there wasn't much to say in the first place. It wouldn't be the first time a game manual contains wrong or misleading information.

Locked door in the hall

The purpose of the door to the left on the ground floor in the hallway is unclear. It's not mentioned in the manual and there doesn't appear to be any reports of anyone claiming they've gone through it. Does it lead to Gomez's room, where Fester's imposter and the evil lawyer have locked themselves in? That could explain why Gomez needs to take such a detour via the secret river to save Morticia.

Useful RAM-addresses

4/5 - x/y window coordinates
12/13 - Gomez's x/y coordinates on screen
E/F - Appears to be used as a pointer in the code to specific events. It's e.g. used to point to the piece of code that triggers the dancers in the ballroom when Lurch plays the right music manuscript.
30 - Can be thought of as a "probability momentum". See the section about swim physics for more details.
31 - Used to calculate Gomez's movement when swimming/on ice/rowing. See the section about swim physics for more details.
32F/33B - x/y of dancers in the ballroom
471 - Room number #$0-#$24. The value is only shown during room transitions, but changing while inside a room teleports to the corresponding room.
45A - A frame counter that cycles through the values 0-3. When changing value from 0 to 1, the value of $30 is generally decreased by 1 (for more information, see description on swimming/ice physics/rowing).
45D - Gomez's movement direction
4E9/4E8 - Gomez's big/small health (56 points max)
623 - Contains the music manuscript when handed over to Lurch
636 - Contains the music manuscript in Gomez's inventory

Personal tools