Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1. THE TIME COUNTDOWN:
- A couple of frame-rate related auxiliary counters are used to determine when
- the main counter should be increased. That main counter which is also used to
- update the hockey mask picture in the status display starts with 0 and is
- increased by 1 about every 10 seconds. If the main timeout counter reaches a
- value >= 192 (after roughly 32 minutes [*]), the game ends with the "you ran
- out of time message".
- No time is lost while the game is playing the scream-sample or redrawing the
- screen when changing between rooms, because all counters are stopped for the
- time it takes until the action resumes.
- There is also a time penalty for attacking harmless campers: every time the
- player hits one with his weapon, the main timeout counter is increased by 2.
- But since the countdown is running so awfully slow that doesn't have any
- measurable effect on the gameplay unless one focuses completely on hitting the
- harmless campers :-)
- [*] measured on a PAL C64, the countdown should be about 20% faster on NTSC
- machines due to the higher refresh rate)
- 2. SCORING:
- For every camper in prayer mode, 10 pts per second are awarded.
- For each hit on Jason, a different amount of points is added to the score,
- depending on the weapon used:
- -600 points for hitting Jason with the pitchfork, chainsaw or kitchen knife.
- -100 points for all throwable weapons except the hammer
- -150 points for the hammer
- -1200 points for the big axe or the cutlass
- Note that if you drop a throwable weapon while it is still in mid-flight,
- the points you score for a hit will be different due to a bug.
- For every surviving camper one _should_ gain 1000 points at the end of a
- round, but there are several bugs in the bonus computation (see bug notes at
- the very end of this document).
- 3. THE PLAYER CHARACTERS:
- Each character has an individual starting strength and panic-factor by which
- the panic level is raised under certain circumstances (see panic-level):
- Gerry: strength 75, panic-factor 4
- Wendy: strength 35, panic-factor 7
- Amanda: strength 45, panic-factor 9
- Brian: strength 50, panic-factor 5
- Stuart: strength 70, panic-factor 7
- 4. THE PLAYER PANIC LEVEL:
- The starting panic level at each round is 5, the maximum value is 80. The
- panic rises on two occasions:
- a) When Jason is in kill mode and his current target goes into "victim mode"
- (that is when Jason arrives at the target camper's location and the target
- camper stops moving around), it is increased by the character-specific panic
- factor.
- b) The panic raises by twice the panic-factor if one of the two shocking
- pictures are shown. This happens in about 18% of the cases where the player
- enters a screen with a corpse lying around that he hasn't seen before (Since
- that is only checked when the player changes between screens, one can kill a
- camper, exit the screen and return, and the game considers the cadaver to be a
- new discovery, even though it was made by the player).
- The panic doesn't rise at all if a new body is found but no scary picture is
- shown.
- The higher the panic level, the more likely Jason will pick the player as his
- next victim.
- There's also a slight glitch in the panic-meter that causes it to show the
- minimum panic haircut instead of the hairs going all up to the sky when the
- panic level reaches 80.
- 5. THE CAMPERS:
- The campers always start at the same locations (see map at the end of this
- text).
- Their strength and panic level is randomized at the start of each round except
- for camper#2, which always has a fixed panic level of 60. Panic will range from
- 10 to 74 points, while strength is a value between 20 and 59. The camper panic
- has two effects:
- a) it will determine how long the camper will stay at the cross while in
- "prayer-mode". When the player has found the cross and touches a camper, he/she
- will stay in prayer-mode for 90-paniclevel seconds. During that time, 10
- points/second are added to the scrore and the camper will walk to the room with
- the cross and stay there until pray time is up.
- b) the camper with the highest panic level is picked as Jason's next target
- unless he is currently in prayer-mode. In that case the camper with the next
- highest panic level is chosen. Given that camper #2 always starts with a fixed,
- rather high panic level, this camper will very often become Jason's first
- victim.
- There are two occasions on which the campers' panic level is increased by 2
- points:
- a) When Jason's target goes into "victim-mode" (more on that in the next
- section).
- b) When the player is carrying a weapon and touches a camper, but only if the
- room with the cross has been discoverd before and the camper isn't already in
- prayer-mode.
- As long as the campers are neither in victim-mode nor in prayer-mode, their
- movement is controlled by a routine that guides them to a previously randomly
- selected destination screen. When they arrive at a certain position within that
- screen, a new destination next to the current screen is randomly selected to
- keep the campers moving.
- After praying or if they escape from Jason, their starting location is set as
- their destination, probably to avoid that too many campers gather at the same
- place (what would result in some of them not being shown correctly if the
- player enters that screen).
- 6. JASON:
- Each hit by Jason will reduce the victim's strength by 8 in the 1st round, 9
- in the second round and so on... until at round 121 the hitpower will become -
- 128 due to a sign overflow bug. This will actually increase the player's
- strength, but still result in instant death as another overflow bug in the
- remaining strength computation is triggered if the strength surpasses 127. At
- the following levels Jason's hitpower will be -127, -126 and so on, until the
- overflow bug strikes again at round 249. Then the hitpower will be exactly 0,
- making Jason pretty harmless.
- After setting up all the camper's strength and panic-levels at the start of
- each round, one of them is randomly selected to be Jason. As long as he is
- "undercover", he does exactly what the other campers are told to do by the game-
- code. But about every 15 seconds, it is checked if he should go into kill mode:
- If a random number between 20 and 20+elapsed time since round start is greater
- than elapsed time, he will stay in disguise, otherwise he'll go into kill mode
- (this way, the more time has elapsed the more likely Jason will go into kill
- mode when checked).
- In kill mode, Jason drops his disguise and picks the camper with the highest
- panic level who is not currently praying as victim. That check also includes
- the player, thus if the player's panic level is the highest among all the
- campers, Jason will go after him!
- Jason will then head towards the victim's location. If he arrives there, the
- player's and all other campers' panic levels rise as previously described, and
- the target camper enters victim-mode and stops motion to make Jason's job
- easier. However, there is a slim chance for the victim to escape:
- A random number between 0 and 60 is generated and compared to the victim's
- panic level. If the random number is greater, both the victim and Jason return
- to normal mode. Jason also returns to his starting screen then, and to
- compensate for the failed attack his strength is increased by 3 points up to a
- maximum of 80 points.
- If the player attacks Jason while he is busy with another camper, he goes into
- kill mode with the player as his new victim, and the old target returns to
- normal mode. But the random-escape-routine mentioned above is also triggered,
- and that is one of the reasons why Jason often rather unmasks for a brief
- moment only and then pretends to be an ordinary camper again instead of
- mercilessly attacking the player.
- The other reason is that Jason will go into praymode if the player had
- discovered the cross and manages to touch him while he is currently "stunned"
- by a hit of the player's weapon. This happens quite frequently when attacking
- with the kitchen knife (or whatever that small blue/white thingy is), since the
- lack of range of the knife requires to get really close to Jason.
- Furthermore, if the player uses a weapon with very low hitpower, any hit on
- the camoflagued Jason will actually increase his strength a wee bit when the
- random-escape-routine is triggered.
- 7. THE WEAPONS & CROSS:
- For each of the playable characters there is a specific list of 11 weapons.
- The weapons in that list are placed at random screens at the start of each
- round, and any screen may only contain one weapon. Weapon #11 is always the
- cross, and the cross can only be placed within buildings at the start of a
- round. If you pick up the cross, any camper in prayer-mode will immediately
- return to normal operation.
- The other weapons are:
- 0 - the pitchfork, effectiveness = 6 hitpoints
- 1 - the chainsaw, 6 hitpoints
- 2 - the kitchen knife(?), 6 hitpoints
- 3 - the small, throwable axe (what is it called in English?), 2 hitpoints
- 4 - the javelin, 2 hitpoints
- 5 - the trowable hammer, 3 hitpoints
- 6 - the throwable fork(?), 2 hitpoints
- 7 - the big axe, 8 hitpoints
- 8 - the machete or whatever that white pixel bar used by Jason is, 8 hitpoints
- 9 - the big axe again, 8 hitpoints
- Note that if you drop a throwable weapon while it is still in mid-flight,
- the hitpoints will be different due to a bug.
- Furthermore, some of the weapons will be replaced by #0 - the pitchfork with 6
- hitpoints
- for certain characters:
- Wendy: #6 - the throwable fork
- Amanda: #5 - the hammer
- Brian: #4 - the javelin
- Stuart: #3 - the throwable axe
- The game only allows one weapon pickup per screen. If you drop your weapon at
- a screen that already contains another weapon or the cross and don't pick those
- up before leaving the screen, the other weapon/cross will be secretly placed at
- another randomly selected screen when the player walks away from the scene.
- But the random screen selection routine used for that does not restrict the
- placement of the cross to screens within buildings. It is thus possible to
- make the cross randomly appear at one of the outdoor screens by dropping a
- weapon in the room with the cross and leaving that room.
- 8. SOME NOTES ON THE MORE INTERESTING BUGS FOR THE TECHNICALLY MINDED:
- - Jason's sprite goes crazy when he is hit while disguised as harmless camper:
- This bug is caused by the way the spritepointers for "campers under attack"
- are computed. There's a total of 5 different sprite sets for the different
- camper types and Jason, with each set containing up to 20 different sprite
- graphics for the various animations of the corresponding type stored in
- sequence (e.g spriteblock #n = type 1, 1st animation frame, block #n+1 = type
- 1, 2nd frame ... block #n+19 = type 1, last frame).
- When a camper is hit by a weapon, there's two sprite graphics to show the
- camper bending back, one facing left, the other facing right. Which one is used
- depends on where the camper was heading, but since the camper is forced to a
- full stop when hit, the actual x- and y- speeds can't be used to determine the
- proper sprite (it would result in the camper spinning around under certain
- circumstances) after the initial contact. Therefore the game tries to select
- the proper sprite by using a kind of "sprite-pointer backup" variable:
- When the camper is not under attack, this backup variable is set to 0 to
- signal later checks that there was no attack on the camper last time. If a hit
- on a camper is detected, the backup variable is checked: If it is still =0,
- then the actual spritepointer is still valid and used for some complicated
- calculations:
- The camper's type is determinded. The spritepointer for that type's 1st
- animation sprite is picked from a table and substracted from the currently used
- spritepointer for that camper to isolate the animaton offset (which can be a
- value between 0 and about 20). This number is then used to pick the proper
- "under attack"-animation offset from another table. The value from that table
- is then added back to the 1st animation state spritepointer. Now that result is
- the proper "under attack" spritepointer and is copied to the backup variable.
- If the backup variable was !=0 at the "under attack" -check, not the actual
- spritepointer but the backup result is used for the spritepointer computation
- described above.
- That's fine for normal campers, but when Jason is hit, his type will change
- from some camper-type to "unmasked Jason" after the first under-attack-
- spritepointer computation. Now there's a mismatch between the actual 1st
- animaton sprite-pointer and the backup value from which it is substracted, so
- the substraction result will be off by a mile, and the routine trying to pick
- the "under-attack" animation offset from the table will read some arbitrary
- value from somewhere else in memory instead, add that to jason's base spriteptr
- and thereby mess it up.
- - Screen flickers when the music switches to another song:
- The main reason for the flickering when a new song is launched is that the
- music driver is integral part of the irq-routines, but parts of it are also
- called from the main code.
- There are two raster interrupts per frame that are selected by testing the 9th
- bit of raster: the first at raster #$0b2 that sets the screen to text mode for
- the status display area and the second at raster #$100 to set the display to
- bitmap mode for displaying the "playfield" area at the upper 2/3rd of the
- screen. That 2nd interrupt does also playback the music, and it does so BEFORE
- it switches the display mode and BEFORE it clears the irq-latch.
- Now, the main code calls the song change routine that therefore has to disable
- interrupts while setting up the track-pointers to temporary halt the playback
- for otherwise the music would likely get out of sync. The setup takes a long
- time as only the start of the first track is stored in the song-table, the
- track then has to be scanned for its end-mark to find the start of the second
- track, which has again to be scanned to find the start of the third.
- This takes an awful lot of time for huge songs like the main theme and makes
- it likely to miss the right time to change to bitmap screen. But even worse,
- when interrupts are reenabled after setup, the actual raster is usually
- somewhere near the top of the screen, too. Since the latch wasn't cleared, an
- unwanted interrupt occurs, checks raster bit 9, finds it cleared and therefore
- decides to turn on text mode, when in fact bitmap mode should be selected.
- - Bugs in the bonus point computation:
- First of all, internally the score, bonus points etc. are only 1/10th of
- what's shown on screen. Since the last score digit is always 0, the game does
- not take it into account for computations, but instead adds 1/10th of the
- appropirate bonus points for various actions to the score and then appends a
- "cosmetic zero" to the score display to show the correct number of points again.
- So far so clever. The survivor bonus routine makes no exception and thus tries
- to add the number of survivors*100 to the score, but gets confused by its own
- complexity:
- It first calculates the number of survivors, which is used to poke the proper
- digit into the end-of-round info-screen. But instead of simply adding that
- number to the 1000s-digit of the score it multiplies that number by 10, and
- then calls the "add points"-subroutine that adds that number to the score 10
- times in a loop. So, in the end, 10 * (number of survivors * 10) should be
- added.
- But in the process the number of survivors*10 and the loop counter used to
- memorize how often the "add points"-subroutine has still to be called and get
- mixed up, so the subroutine actually adds survivors*10 only on the first pass.
- On the second pass it adds the initial value of the loop counter (=10). On the
- next pass it adds that counter's value from the previous pass (=9) and so on.
- As a final result of this the player is awarded the number of survivors*10 + 54
- pts as a bonus... except if there are no survivors.
- In that case the "add points" subroutine itself will bug and add 256 instead
- of 0 pts to the score. The 54 pts caused by the previously mentioned bug are
- also added as usual, so the total bonus will be 310 pts.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement