Under certain conditions, Berk will flip instantly from facing into the screen to facing out of the screen, without an intermediate turning animation.
For example, if:
Berk is at the right edge of a room,
there is no room to the right of that room,
he is not flying,
he is facing into the screen, and
right is pressed
then he will flip instantly.
The reason for this is as follows. Under the conditions above, when right is pressed, execution jumps to 36214. At 36221 his facing-into-screen flag
is reset. A check is done at 36230 that determines that Berk cannot enter a new room to the right, so the jump at 36233 takes place; execution now
jumps to 35786. The check at 35786 determines that Berk is not flying, so execution jumps to 35802. At 35802 a check determines that Berk's
facing-into-screen flag is reset (as it was previously reset by the instruction at 36221). This results in a jump to 35821 at which point the script
data for Berk facing out of the screen is executed without an intermediate turning phase.
This may occur whether or not Berk is already holding something, however it does not happen if Berk is facing into the screen because he has just picked
something up from behind him.
Graphical glitches, part 1
The graphics for the ape-beasts' eyes are located at 29510 (set 9 index 20) and 29518 (set 9 index 21). In the former, a pixel just behind the eye
is set but in the latter, this pixel is reset:
The graphic layout data for the edible eyes on level 3 uses the wrong graphic index for the eye on the right in the "looking ahead" state (40219). The
value at 40222 is 33 (eye looking to the left) when it should be 29 (eye looking ahead). To fix:
The main block of graphic layout data for level 3's edible eyes lies at 40192. This block is set up to select one of the following seven graphic
layout data addresses and render the graphic layout data at that selected address. However the following list actually contains eight addresses. The
eighth, 40247 located at 40210, is not included in the random address selection because the instruction at 40194 states that there are seven
addresses, not eight. The eighth address corresponds to the eyes looking to the left. This final address can be included in the random selection via a
POKE:
The ceiling of the door room on level 2 contains a glitch. The lower character block at the rightmost side of the left ceiling section appears to be an
eye, rather than rock! This happens because the wrong graphic index is used in the graphic layout data at 51195. This can be fixed with a couple of
POKEs:
POKE 51195,20 (to use a rock graphic rather than an eye)
POKE 51196,194 (to apply a vertical mirror to the rock graphic)
Defining duplicate controls
The routine at 47060 is used during the defining of keyboard controls to ensure that the same key is not used for two different functions. However the
routine does not function as intended, as it only checks the first five (of seven) controls for duplicates. As a result, the same key can be assigned to
both pause and restart. The routine should check the first six keys instead. To fix:
The routine at 48738 attempts to position an entity that is being carried by Berk such that it appears in Berk's hands when he moves left. This
routine should work the same way as the routine at 48727; the entity should be positioned such that its left edge is half of that entity's width to
the left of Berk's left edge. The instruction at 48741 incorrectly doubles the amount by which the carried entity is offset, resulting in a mismatch
in the positioning of carried entities when Berk moves left to the positioning when he moves right. This is particularly noticeable for wider entities,
such as the weight on level 3 or the cannon on level 4. To fix, the errant instruction should be removed:
When Berk bends down while facing forwards, he takes on the appearance defined in the graphic layout data at 58119. Berk's left hand, however, has one
character that is not quite right. A vertical mirror should be applied to this character to correct its appearance. To fix:
The routine at 36966 controls the Trap Door closing when Berk and Drutt have passed through. The conditions that have to be met for the Trap Door to
close are:
Berk is not in room 1 (Trap Door room), and
Drutt is in room 4 (room at the bottom of the Trap Door's shaft)
It is possible, however, to complete all levels in the game without meeting both of these conditions simultaneously; in this case the Trap Door would
remain open, and upon returning to level 1 at the end of the game, Berk, Boni and Drutt would all fall down the Trap Door again! The way to achieve this
would be to send Drutt down the Trap Door first and have him accomplish all of his tasks for level 1 (i.e. knock down the key and push the red sweet
into the pit). Then, leaving Drutt in the pit, switching to Berk and having him finish off the level would ensure that the Trap Door would remain open.
Fixing this issue is not such a simple matter as checking that both Berk and Drutt are not in room 1. It is possible that Berk has already gone through
the Trap Door and Drutt is jumping up from the Trap Door room to the room above. When coming back down, Drutt would find himself stranded because of the
now-closed Trap Door.
Ideally, to fix this, we would look for an occasion when Berk and Drutt are guaranteed to be in a room together, and through the Trap Door. This indeed
happens at the end of level 1 when they must both be present in the room with the exit door:
Check whether Berk is in room 9 and return if not:
POKE 36970,9
POKE 36971,192
Check whether Drutt is in room 9 and return if not:
POKE 36976,9