Difference between revisions of "Solomon's Key (NES)/Game Mechanics"
From SDA Knowledge Base
Line 33: | Line 33: | ||
(1-space drop) - This type of drop can be made by releasing the directional pad for 2, 3 or 4 frames. If it's 2 frames, Dana will bump his head as shown in the second gif. Hugging the opposite wall will invariably mean not entering the space. This is instead done by releasing the D-pad in midair for 2, 3 or 4 frames (not important when this occurs). If it's 2 frames, Dana will hit the head, wasting 9 frames from immobilization. This might seem like a tight trick to perform, but it happens to correspond pretty well with "quickly releasing and re-pressing the D-pad". Drops from higher distances are tougher to execute because you need to press the D-pad within a specific 2 or 3 frame window (depending on the drop).<br /><br /> | (1-space drop) - This type of drop can be made by releasing the directional pad for 2, 3 or 4 frames. If it's 2 frames, Dana will bump his head as shown in the second gif. Hugging the opposite wall will invariably mean not entering the space. This is instead done by releasing the D-pad in midair for 2, 3 or 4 frames (not important when this occurs). If it's 2 frames, Dana will hit the head, wasting 9 frames from immobilization. This might seem like a tight trick to perform, but it happens to correspond pretty well with "quickly releasing and re-pressing the D-pad". Drops from higher distances are tougher to execute because you need to press the D-pad within a specific 2 or 3 frame window (depending on the drop).<br /><br /> | ||
[[File:Solomon_corner_landing.gif]]<br /> | [[File:Solomon_corner_landing.gif]]<br /> | ||
− | (corner landing) - If a corner of Dana's hitbox touches the corner of a block when jumping up, Dana will immediately land (without landing animation) instead of slightly overshooting the block and then falling down onto it. Since overshooting during a jump is basically a waste of time, the corner landing effect is technically a time-saving strat. In practice however, it's a | + | (corner landing) - If a corner of Dana's hitbox touches the corner of a block when jumping up, Dana will immediately land (without landing animation) instead of slightly overshooting the block and then falling down onto it. Since overshooting during a jump is basically a waste of time, the corner landing effect is technically a time-saving strat. In practice however, it's a 1-pixel/frame trick and therefore not really possible to perform consistently.<br /><br /> |
[[File:Solomon_edge_jump.gif]]<br /> | [[File:Solomon_edge_jump.gif]]<br /> | ||
(edge jump) - By standing on the edge of a block, you can make a jump while having a block just above without bumping the head into it. The advantage is to not having to create an additional block to stand on. There are three or so valid pixels that allow you to make this jump. The timing is slightly different depending on if one uses the left or the right edge (it's maybe more accurate to say that the block hitboxes are not entirely symmetrical with respect to the center of the block). These are not so hard to do, since (with practice), it's possible to position Dana in such a way that a quick "tap" on the d-pad corresponds to the horizontal movement necessary for landing on the edge.<br /><br /> | (edge jump) - By standing on the edge of a block, you can make a jump while having a block just above without bumping the head into it. The advantage is to not having to create an additional block to stand on. There are three or so valid pixels that allow you to make this jump. The timing is slightly different depending on if one uses the left or the right edge (it's maybe more accurate to say that the block hitboxes are not entirely symmetrical with respect to the center of the block). These are not so hard to do, since (with practice), it's possible to position Dana in such a way that a quick "tap" on the d-pad corresponds to the horizontal movement necessary for landing on the edge.<br /><br /> | ||
Line 43: | Line 43: | ||
(column building) - If creating a block while standing on the edge (same tolerance as for the edge jumps), you can create a block on the same space you stand, which also means pushing you out of the same space. However, before being pushed out, you can jump. This can be used to ascend areas when diagonal block creation is not possible. It's technically possible to create a column from the bottom to the top of a room. However, for that to save time over diagonal climbing, it pretty much needs to be combined with corner landings. This is doable, but pretty advanced stuff.<br /><br /> | (column building) - If creating a block while standing on the edge (same tolerance as for the edge jumps), you can create a block on the same space you stand, which also means pushing you out of the same space. However, before being pushed out, you can jump. This can be used to ascend areas when diagonal block creation is not possible. It's technically possible to create a column from the bottom to the top of a room. However, for that to save time over diagonal climbing, it pretty much needs to be combined with corner landings. This is doable, but pretty advanced stuff.<br /><br /> | ||
[[File:Solomon_corner_attraction.gif]]<br /> | [[File:Solomon_corner_attraction.gif]]<br /> | ||
− | (corner attraction) - If a corner of Dana's hitbox touches the corner of a block, Dana will either be turned right for a | + | (corner attraction) - If a corner of Dana's hitbox touches the corner of a block, Dana will either be turned right for a 8-9 frames and losing the horizontal momentum (if facing left) or just losing the horizontal momentum for 8-9 frames (if facing right). This is entirely a time waster... It's a one-frame/pixel trick, but still happens almost every time somewhere during a playthrough. In some rooms it can have more serious consequences than just the lost frames. For example, using the block magic while under the influence of this effect can mean creating the block to the right instead of left.<br /><br /> |
[[File:Solomon_fireblockbuilding.gif]]<br /> | [[File:Solomon_fireblockbuilding.gif]]<br /> | ||
(fire block building) - Advanced technique. Uncertain if it's even possible outside tas (probably possible on keyboard in real-time as well).<br /><br /> | (fire block building) - Advanced technique. Uncertain if it's even possible outside tas (probably possible on keyboard in real-time as well).<br /><br /> | ||
Line 49: | Line 49: | ||
(buffer jump) - If up on the D-pad (=the jump action) is released during a jump or a drop and then re-pressed, Dana will buffer a jump after a landing animation of only 5 frames instead of the usual 9. A very important side effect is that this also works between rooms, meaning that one can start a room with a jump.<br /><br /> | (buffer jump) - If up on the D-pad (=the jump action) is released during a jump or a drop and then re-pressed, Dana will buffer a jump after a landing animation of only 5 frames instead of the usual 9. A very important side effect is that this also works between rooms, meaning that one can start a room with a jump.<br /><br /> | ||
[[File:Solomon_horizontalalignment.gif]]<br /> | [[File:Solomon_horizontalalignment.gif]]<br /> | ||
− | (horizontal alignment) - Because of hitboxes not exactly corresponding with graphical sprite, it's possible to jump past enemies in spaces that are one block wide. The first jump here aligns Dana to the right side of block. The enemy will drop down on the left, allowing Dana to jump past. | + | (horizontal alignment) - Because of hitboxes not exactly corresponding with graphical sprite, it's possible to jump past enemies in spaces that are one block wide. The first jump here aligns Dana to the right side of block. The enemy will drop down on the left, allowing Dana to jump past. Very easy to do.<br /> |
==Enemies== | ==Enemies== | ||
There are several enemy types in the game. They are mostly predictable from a quick glance and will not be described below. Most enemies move in very determined patterns. However, the game does have some randomness to it. It's mostly relevant for tasing, but can also have an effect on real-time speedruns when the solutions become very tight and enemy positions have to be accurate.<br /><br /> | There are several enemy types in the game. They are mostly predictable from a quick glance and will not be described below. Most enemies move in very determined patterns. However, the game does have some randomness to it. It's mostly relevant for tasing, but can also have an effect on real-time speedruns when the solutions become very tight and enemy positions have to be accurate.<br /><br /> | ||
[[File:Solomon_saramandor.png]] - Saramandors spawn in some rooms from "devil's mirrors" (look like black tiles). They walk in a straight line and stop to breath fire when close enough to Dana. When dropping down, the direction they're heading next depends on where Dana is (left if Dana is to the left and right if Dana is to the right). This obviously means that it's possible to manipulate them. Their fire-breath hitbox is disjoint from their own hitbox, meaning that it's possible to safely stay between a Saramandor and its fire-breath.<br /><br /> | [[File:Solomon_saramandor.png]] - Saramandors spawn in some rooms from "devil's mirrors" (look like black tiles). They walk in a straight line and stop to breath fire when close enough to Dana. When dropping down, the direction they're heading next depends on where Dana is (left if Dana is to the left and right if Dana is to the right). This obviously means that it's possible to manipulate them. Their fire-breath hitbox is disjoint from their own hitbox, meaning that it's possible to safely stay between a Saramandor and its fire-breath.<br /><br /> | ||
− | [[File:Solomon_gargoyle.png]] - Gargoyles are interesting because they bring some randomness to the game. Sometimes they start a room walking to the right and the next playthrough, the same gargoyle starts walking to the left. This | + | [[File:Solomon_gargoyle.png]] - Gargoyles are interesting because they bring some randomness to the game. Sometimes they start a room walking to the right and the next playthrough (or after a death), the same gargoyle starts walking to the left. This has an impact on some of the room solutions. |
Revision as of 09:06, 5 February 2014
Contents
General game description
The fundamentals of the game are simple enough. Get the key in each room and go to the exit to advance to the next. The main character, Dana, can run, duck, jump and create and destroy blocks as many times as necessary. Picking up certain items will allow Dana to shoot a fireball. Touching anything dangerous is an instant kill. However, beyond the basics is some depth to the game that is next to impossible to figure out on your own without help, so I'm gonna start out by explaining some of that. First of all, there are 48 regular rooms (1-48). The last room is always "Solomon's room", which contains the book called "Solomon's Key" (so paradoxically, despite chasing after keys the whole game, the name of the game refers to a book). On top of these 49 rooms that one encounters in a normal playthrough, it's possible to get to 12 bonus rooms and 3 hidden rooms. The bonus rooms are accessed by picking up the constellation icons in every fourth level (fyi, the 48 rooms are divided up in the 12 constellations, but that has no importance other than giving the game story an "exotic" touch). The 3 hidden rooms are:
- Hidden room (upper part) - contains the page of time (torn out of Solomon's Key). To access it, pick up the 4 first Solomon's seals (see below for more info) and collect the constellation icon in room 20.
- Hidden room (lower part) - contains the page of space (torn out of Solomon's Key). To access it, pick up the 6 first Solomon's seals (see below for more info) and collect the constellation icon in room 44.
- Prinsess room (not a spelling mistake on my part) - contains the princess. To access it, pick up all 8 Solomon's seals (see below for more info) and this room will come after room 48.
Endings
There are four endings in the game.
- The "normal" ending - finish the game without having saved the princess or having picked up the pages of space and time. The ending sequence is the bare minimum.
- The "princess" ending - save the princess and finish the game. On top of the normal ending sequence, fairies are released and some text is added at the end.
- The "pages" ending - collect both the page of space and the page of time and finish the game (collecting only one of them doesn't affect the ending). On top of the normal ending sequence, the cave sucks in all the demons and then crumbles. Some text about the constellation being destroyed appears at the end.
- The "best" ending - finish the game after having saved the princess and having collected the pages of space and time. The ending sequence is the combination the two above endings.
Version differences
There are two versions of this game. The pal-version and the ntsc-version (ntsc-u and ntsc-j are identical). The room layout and enemies are the same between the two versions. However, as with many other games for the NES, the pal-version runs slower. Interestingly, it's not entirely slowed down by the usual 5/6 ratio. Instead, horizontal movement is ~3% faster in ntsc (both for Dana and enemies), while vertical movement and all animations keep the same frame speed (resulting in the roughly 5/6 ratio of speed between pal and ntsc). As a consequence, most rooms with enemies have different solutions between pal and ntsc. Some rooms are harder in one version and some are harder in the other. It's not possible to make any kind of comparison of times between the two versions (not even in theory).
Like many other NES-games, playing on keyboard creates a big advantage. There are even some room solutions that are likely only possible on emulator and keyboard.
Important items
- Collecting a bell releases a fairy from the exit. 10 fairies give an extra life. It's better to avoid these when possible in a speedrun as the fairies move around a bit erratically and risk getting in the way by preventing Dana from creating blocks in certain places. This is one of few random aspects of the game.
- Dana can shoot a fireball after having picked up the blue jar. The fireball will stop upon impact with an enemy or disappear when it's exhausted. The number of fireballs in Dana's inventory are shown as small flames on the scroll in the top right corner of the screen. To begin with, Dana can hold at most three fireballs at once. There is an item that can extend the scroll, but it's not useful in a speedrun. These are scattered around in the rooms (mostly in the beginning).
- Dana can shoot super fireball after having picked up the orange jar. The super fireball destroys all enemies in its way and only disappears when it's exhausted. A super fireball appears as a big flame on the inventory scroll. Be aware that you can't rearrange the fireballs on the scroll. You need to shoot in the order they were picked up. These are scattered around in the rooms. There are less super fireballs in the game than normal fireballs.
- Transforms the next fireball in the inventory scroll to a super fireball. These upgrade jars can only be earned by destroying certain enemy types (~10% chance of a drop from the right enemies). The drops in the game are random and can't be manipulated, so the upgrade jars would be a very unreliable part of the route in a real-time speedrun.
- The blue crystal extends the range of fireballs (both normal and super) by half a block. The orange crystal (can only be found by destroying certain enemy types) extends the range of fireballs (both normal and super) by two blocks. This effect has to be taken into account in a run of the pal-version, but is of no importance in ntsc.
- Finishing a room after collecting a golden wing will allow Dana to skip the next five rooms. There are golden wings in rooms 7, 15, 23, 31 and 39. Note that some of the rooms skipped by the golden wings contain items that are required for the best ending.
- The full grey jar resets the timer to 50000 and speeds up the countdown speed by 5. The half-full jar resets the timer to 25000 and speeds up the countdown by 2.5.
- Resets the timer to 5000, but has no effect on the countdown speed. There is a blue variation as well that resets the timer to 10000.
- Saramandors and demon heads on the screen are destroyed (but will soon start to spawn again).
- Hidden in rooms 9, 13, 17, 19, 21, 29, 46 and 47. They have no effect individually, but are required to open up the possibilities for obtaining the best ending.
- The 48 rooms in the game are divided into the 12 constellations (4 rooms in each). The last room in each constellation contains a constellation sign. Picking up the constellation sign and exiting the room will normally send Dana to a bonus room.
- If the first four Solomon's seals have been collected, finishing room 20 after having picked up the constellation sign will send Dana to a hidden room containing the page of time (instead of being sent to the normal bonus room). The page of time has been torn out of Solomon's key and must be collected to get the best ending.
- If the first six Solomon's seals have been collected, finishing room 44 after having picked up the constellation sign will send Dana to a hidden room containing the page of space(instead of being sent to the normal bonus room). The page of space has been torn out of Solomon's key and must be collected to get the best ending.
- If all eight Solomon's seals have been collected, Dana is sent to the Prinsess' room after room 48.
Speedrun techniques
(1-space drop) - This type of drop can be made by releasing the directional pad for 2, 3 or 4 frames. If it's 2 frames, Dana will bump his head as shown in the second gif. Hugging the opposite wall will invariably mean not entering the space. This is instead done by releasing the D-pad in midair for 2, 3 or 4 frames (not important when this occurs). If it's 2 frames, Dana will hit the head, wasting 9 frames from immobilization. This might seem like a tight trick to perform, but it happens to correspond pretty well with "quickly releasing and re-pressing the D-pad". Drops from higher distances are tougher to execute because you need to press the D-pad within a specific 2 or 3 frame window (depending on the drop).
(corner landing) - If a corner of Dana's hitbox touches the corner of a block when jumping up, Dana will immediately land (without landing animation) instead of slightly overshooting the block and then falling down onto it. Since overshooting during a jump is basically a waste of time, the corner landing effect is technically a time-saving strat. In practice however, it's a 1-pixel/frame trick and therefore not really possible to perform consistently.
(edge jump) - By standing on the edge of a block, you can make a jump while having a block just above without bumping the head into it. The advantage is to not having to create an additional block to stand on. There are three or so valid pixels that allow you to make this jump. The timing is slightly different depending on if one uses the left or the right edge (it's maybe more accurate to say that the block hitboxes are not entirely symmetrical with respect to the center of the block). These are not so hard to do, since (with practice), it's possible to position Dana in such a way that a quick "tap" on the d-pad corresponds to the horizontal movement necessary for landing on the edge.
(running edge jump) - Similar to above, but harder.
(zigzag climbing) - Just a chain of edge jumps. Risky since falling down will be a huge time loss.
(column building) - If creating a block while standing on the edge (same tolerance as for the edge jumps), you can create a block on the same space you stand, which also means pushing you out of the same space. However, before being pushed out, you can jump. This can be used to ascend areas when diagonal block creation is not possible. It's technically possible to create a column from the bottom to the top of a room. However, for that to save time over diagonal climbing, it pretty much needs to be combined with corner landings. This is doable, but pretty advanced stuff.
(corner attraction) - If a corner of Dana's hitbox touches the corner of a block, Dana will either be turned right for a 8-9 frames and losing the horizontal momentum (if facing left) or just losing the horizontal momentum for 8-9 frames (if facing right). This is entirely a time waster... It's a one-frame/pixel trick, but still happens almost every time somewhere during a playthrough. In some rooms it can have more serious consequences than just the lost frames. For example, using the block magic while under the influence of this effect can mean creating the block to the right instead of left.
(fire block building) - Advanced technique. Uncertain if it's even possible outside tas (probably possible on keyboard in real-time as well).
(buffer jump) - If up on the D-pad (=the jump action) is released during a jump or a drop and then re-pressed, Dana will buffer a jump after a landing animation of only 5 frames instead of the usual 9. A very important side effect is that this also works between rooms, meaning that one can start a room with a jump.
(horizontal alignment) - Because of hitboxes not exactly corresponding with graphical sprite, it's possible to jump past enemies in spaces that are one block wide. The first jump here aligns Dana to the right side of block. The enemy will drop down on the left, allowing Dana to jump past. Very easy to do.
Enemies
There are several enemy types in the game. They are mostly predictable from a quick glance and will not be described below. Most enemies move in very determined patterns. However, the game does have some randomness to it. It's mostly relevant for tasing, but can also have an effect on real-time speedruns when the solutions become very tight and enemy positions have to be accurate.
- Saramandors spawn in some rooms from "devil's mirrors" (look like black tiles). They walk in a straight line and stop to breath fire when close enough to Dana. When dropping down, the direction they're heading next depends on where Dana is (left if Dana is to the left and right if Dana is to the right). This obviously means that it's possible to manipulate them. Their fire-breath hitbox is disjoint from their own hitbox, meaning that it's possible to safely stay between a Saramandor and its fire-breath.
- Gargoyles are interesting because they bring some randomness to the game. Sometimes they start a room walking to the right and the next playthrough (or after a death), the same gargoyle starts walking to the left. This has an impact on some of the room solutions.