Submission #3553: turska & Ilari's DOS Avoid the Noid in 03:33.52

(Link to video)
DOS
baseline
JPC-rr 11.6
12811
59.99878232117684
10083
Unknown
Submitted by turska on 4/2/2012 8:31:43 PM
Submission Comments

THE AUDIO HAS BEEN FIXED

This is a tool-assisted speedrun of Avoid the Noid.
Avoid the Noid is a platform computer game for the Commodore 64 and MS-DOS, written in 1989 to promote Domino's Pizza. It was modeled after the company's ad campaign during the late 1980s. The ads featured a "noid" that destroyed pizzas and must be avoided. The game is surprisingly entertaining and well-made for a promotional game.
The protagonist must traverse a 30-story building and deliver the pizza within 30 minutes. Colorful rabbits armed with booby traps, phone bombs, rocket launchers and bomber planes that drop water balloons seek to prevent the delivery. The premise would probably not be received too well these days.
Work on the run started on 2012-03-30. A collaborative effort wasn't initially planned, but the authors soon found themselves working as partners in crime. With superior manpower, the game was quickly mauled into oblivion.
According to the ingame clock, the run is finished with 7:42.00 elapsed and 22:18.75 to spare. Input is ended as early as possible, allowing the customer to treasure the valuable delicacy while the score climbs and slow fades occur.
  • Abuses programming errors
  • Manipulates luck
  • Aims for fastest time
  • Genre: Platform

Movie information

JPC-RR v11.6 was used to make the movie.
This TAS uses the EGA version of the game (this version also has music).
Here is the ImageMaker report on the disk image used:
Type               : HDD
Tracks             : 16
Sides              : 16
Sectors            : 63
Total sectors      : 16128
Primary extent size: 1788
Storage Method     : 3
Sectors present    : 756
Calculated Disk ID : 6414E26734ECBD8B25B800E4C5811FC9
Claimed Disk ID    : 6414e26734ecbd8b25b800e4c5811fc9

Comments section:

Entry: N/A            N/A                                      32 /
Entry: 19900101000000 411aaa5402889d5368c8556feaf2e06b       4545 /BACKGR.XYZ
Entry: 19900101000000 f71f46bd6e34ca9db973442304e528ed      12573 /BNOID.XYZ
Entry: 19900101000000 12d1ef24a7aceb1972c86518efb2e005       2001 /BONUS.XYZ
Entry: 19900101000000 7efdb6df749de1f9329e2de4805f8d5b       1647 /CLUEBOX.XYZ
Entry: 19900101000000 fb94cffcad0eb85547a755eedf216d26       7111 /COMPUTER.XYZ
Entry: 19900101000000 fe55eadc8d885a0d91deb702f755c76d       6159 /CREDITS.XYZ
Entry: 19900101000000 2ee444275f11879588c226de30a112b4      14105 /FINAL.XYZ
Entry: 19900101000000 805e36a37694f04654596aaf6ccf77d7       2559 /FINALD.XYZ
Entry: 19900101000000 c8a6c46832a5797e277294bacdc4309c       5672 /FLOOR0.XYZ
Entry: 19900101000000 14d6238b05ac46ab85332ee96aaf53e9       4163 /FLOOR1.XYZ
Entry: 19900101000000 77ef35f705101f67250e10b33538648e       4407 /FLOOR2.XYZ
Entry: 19900101000000 42881d0e9c6d31666ad982ad98d21670       5501 /FLOOR3.XYZ
Entry: 19900101000000 b0817494839cb64b7623283228e4c50a       4444 /FLOOR4.XYZ
Entry: 19900101000000 280907e3f9549409a2ce9b9ec1662a7e       4421 /FLOOR5.XYZ
Entry: 19900101000000 04fc10998bafaccd5b17276a14fd229c       4935 /FLOOR6.XYZ
Entry: 19900101000000 8770ac79021218324e897e2c476688c3       5050 /FLOOR7.XYZ
Entry: 19900101000000 473f5752e1b5dbec24790583b8540f01       4584 /FLOOR8.XYZ
Entry: 19900101000000 bf29a56bd5c49352bd0f4e9ffffd6518       5600 /FLOOR9.XYZ
Entry: 19900101000000 67160e4ad99b5806524f5b2321028516       1199 /FONT.XYZ
Entry: 19900101000000 399010a3229002afd2ff1c0f970b9a60       1885 /GAMEOVER.XYZ
Entry: 19900101000000 6df0a721b63a76d4f2ae9b889f1378f7       8152 /GROUND.XYZ
Entry: 19900101000000 e7f88bbf0531bc886db51024d0de9eea       2868 /HELPSCR.XYZ
Entry: 19900101000000 14163347380dbb43ab67b8475534902e       1670 /KEYBOX.XYZ
Entry: 19900101000000 03ba723cf5fed300726c3e6cc93f1a36       1974 /LAUGH2
Entry: 19900101000000 4a43c4cbc254a2ebf0754c5d60a04ac8      25509 /MAN.XXZ
Entry: 19900101000000 423ba2278bf1bbb0f83e19cb64eb4b0f       8755 /MDIDF.BIN
Entry: 19900101000000 6559aa513f6fb521bd2c02a944cd7a88     106292 /NOID.EXE
Entry: 19900101000000 c6ac235ed4ab0a51d1e5b783278f01fb      23101 /NOID.XXZ
Entry: 19900101000000 8012a2a669f6bc64acacfa023f409221       7239 /NTITLE.XYZ
Entry: 19900101000000 8aa4281d4466edca31313c6028c43f47      38810 /PHONE.XYZ
Entry: 19900101000000 0b0a9307ccb563aaac5c2f51461af856       4205 /ROOF.XYZ
Entry: 19900101000000 d4154f7faa67a189d298c62afa6aba80       5273 /SOUNDS.SND

The random number generator

Seeding:

The random number generator is seeded with time in seconds since some unknown epoch modulo 65536.

Iteration

The random number state is iterated by:
X' = (22695477 * X + 1) mod 2^32
This formula is invertible:
X = (690295837 * (X' - 1) ) mod 2^32
The RNG has a single cycle of 2^32 numbers.

Random numbers

To generate a random number, the RNG is iterated once, then the RNG state is taken, divided by 65536 and ANDed with 32767.
Typically the resulting number is then divded by something depending on what the random number is used for and taking the remainder, e.g.:
  • 11 when determining the type of fade to perform
  • 1000 when determining the securty code

RNG usage:

  • The first throw is for security code, the second throw is for type of the first fade.
  • Using the noid remover uses 75 random numbers.
  • Some fade types use random numbers (amount unknown)
  • Launching of bazooka might use one extra random number per frame?
  • Floors use number of random numbers per frame, depending on the floor.
 * Number of enemies doesn't seem to matter
 

Fades

Each time character transitions between rooms, a dialog box appears or disappears there is a fade.
This fade is random, and the fades vary wildly in length, so this is a good subject for luck manipulation.
Most fades are very slow.
The fade type is determined by taking a random number, dividing 11 and taking the remainder:
RemainderFade typeNotes
0Whole screen randomFast
1From top and bottom to center
2Random from topUses random numbers
3Striped from top and bottom
4From center to top and bottom
5From left and right to center
6From center to left and rightCan be canceled
7Random from bottomUses random numbers
8Random from leftUses random numbers
9Random from rightUses random numbers
10Diagonal
The fade type 6 is special: It can be canceled by a keypress. No other fade type behaves that way.
The fade type 0 is greatly faster than others (except canceled type 6).

The missing three keys

The missing three keys are in following places:
  • Phone on floor 9 (use it to pick the key)
  • Phone on floor 11 (use it to pick the key)
  • Phone on floor 29 (use it to pick the key).
 * The security has to be deactivated first, otherwise it will blow up.

Tricks

Jump trick

This only works when moving left for some reason.
Hit either roll or jump when running. The character speed increases to 12 for one frame (normal running is 8).

Event invincibility

  • When jumping or rolling, the character is invincible to melee attacks, but not projectile attacks.
  • When between floors, the character seems invincible to all attacks.

Phones with optional stuff:

  • Floor 18: The first digit of security code.
  • Floor 20 (left): The second digit of security code.
  • Floor 26: The third digit of security code.
  • Floor 28: Two extra pizzas and two noid removers.

Noid removers

Using noid remover will:
  • Use 75 random numbers
  • Remove all noids and missiles on screen
  • If you have been knocked back by a melee attack, save your pizza.

Memory addresses

The addresses can change, here are addresses from one playthrough (this one)
Even if these addresses change, the differences between addresses should remain constant.
0x1E344WordCharacter X position
0x1E3B4WordTime left minutes
0x1E3BAWordTime left seconds
0x1E3BEWordTime left quater seconds
0x1DE34DwordRNG state
0x1707CWordSecurity code (0-999)

The roof

The roof is a bizarre area. Balloons are dropped in random patterns; the ones featured in the run might seem to slow the delivery down, but that's not the case. Key spawn locations aren't random; only the pizza boy's position affects them. Grabbing keys earlier is always preferable; the time it takes for the next key to spawn is constant and starts running when the key is grabbed.

Luck manipulation

Luck manipulation is the essence of this run. Room transitions and other fades tricky to manipulate, especially if many of them occur in a row. Many transitions and object interactions are slightly delayed to manipulate the fade; making luck manipulation subtle was a central stylistic goal when executing the run in its final form. The 29th floor was especially frustrating; it features four fades that are very difficult to delay inconspicuously. After that hurdle was cleared, the rest of the run went extremely well with excellent luck throughout.

What doesn't work

What was tried and found not to work:
  • Grabbing the key from floor 29 phone before deactivating security (the phone blows up).
  • Hitching a door opening from missile or noid (the door acts like closed to player).

Suggested screenshots

[dead links removed]

Nach: This movie seems well executed. However, the game is rather repetitive, and despite the effort put in, the movement looks more random than well played. Due to the lack of appearing impressive, and many people being really bored with something so short, I'm rejecting this.

Nach: Accepting for vault.

turska: Processing.
Last Edited by adelikat on 9/26/2023 5:03 PM
Page History Latest diff List referrers