If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Development:NARC (Arcade)

From The Cutting Room Floor
Jump to navigation Jump to search

This page details development materials of NARC (Arcade).

The source code and related development files for NARC were uploaded to the Historical Source Github repository in April 2021.

This included:

  • Source code for Version 7.00 of NARC (as per NARCHELP.ASM).
  • Program ROMs for v6.00 and v7.00 (the former had not previously been dumped at the time).
  • Graphics ROMs matching those already dumped for the game.
  • Sound ROMs that had not previously been dumped at the time.
  • Various text documents outlining parts of game code and notes on the game/its development.

According to NARC.ASM, development started on August 1, 1987.

Text Documents

DUMP.DOC

A summary of location testing of v1.91 of the game around America on January 21, 1989. "Dump" seems to refer to the register dumps listed in the document from where the game crashed on location that are catalogued there to aid bug fixing.

The following information was obtained from the Version 
1.91 test games on Saturday afternoon  1/21/89:


Chicago Game Co.                 527 Plays......0 Dumps of any kind
         No Mr. Big Kills
         Only 2 trips to the silver safe.

----------------------------------------------------------------------------------


Times Square                     876 Plays......2 "Survived Lockup"

         No Mr. Big Kills
         Continuous Buy-in observed in the Silver safe and beyond.

     A0        A1    A2           A3      A4      A5       A6       A7       A8
1070C90  FFA46560    20     FFE71760  8B006D   22000  2D02000  104C0F0  10709F0

10709F0  FF926120    20     FF914230  8B006D   22000     2000  104C0F0  10709F0

----------------------------------------------------------------------------------
Alladin's Castle                 704 Plays.......1 Watchdog

         Mr. big killed twice.
         Report that helicoptor can be made to disappear by violent
         car action.

     A0        A1      A2         A3      A4      A5       A6       A7       A8
     21         0   20030   FFE6E210  720000    7070  AAA0707  1023470        5

----------------------------------------------------------------------------------
Galaxy Game Center               617 Plays......1 Lockup

         No Mr. Big Kills.
         Players not able to find blue card in drug lab witnessed.

     A0        A1      A2         A3      A4      A5       A6       A7       A8
106FCD0  FFE75550   10010   FF908B30  600A46   70E15 CCCC062F        0   B80000

----------------------------------------------------------------------------------

EGROUTIN.DOC

Enemy Generation Routine
------------------------
	Routine Name = xxxxCOLD

		Parameters:
		----------
		A5  = [y,x]
		A6  = [0,z]	if A5 & A6 = 0, then random position.
		A14 = [par1;par2,OID]
				par1 = undefined 	(8 bits)
				par2 = # to start 	(hi nybble)
				       # random to add 	(lo nybble)	
				OID  = >0E 		(hi byte)
				       enemy type 	(hi nybble,lo byte)
				       enemy sub-type 	(lo nybble,lo byte)

NARC.DOC

How to build the game in interlaced or non-interlaced screen modes and for the two different-sized ROM types the game came in.

                        Assembling NARC
			---------------

	There are two published versions of NARC. The first being the
normal 25kHz horizontal scan version (400x512). The second being the
interlaced 16kHz horizontal scan (400x512).

To Assemble 25kHz version:

	1) cd \VIDEO\NARC
	2) run "LOADIMG NARC1 /T"	;This will create the image tables	
	3) set INTERLACE = 0 in \VIDEO\SYS.INC	
	4) cd DIAG
	5) run "ALLDIAG"		;This will assemble the low level diag
	6) cd ..	
	7) run "ALLNARC"		;This will assemble and link the game
	8) done NARC.OUT is the executable object

To Assemble 16kHz version:

	1) cd \VIDEO\NARC
	2) run "LOADIMG NARC1 /T"	;This will create the image tables	
	3) set INTERLACE = 1 in \VIDEO\SYS.INC	
	4) cd DIAG
	5) run "ALLDIAG"		;This will assemble the low level diag
	6) cd ..	
	7) run "ALLNARC"		;This will assemble and link the game
	8) done NARC.OUT is the executable object
	

			Making ROMs for NARC
			--------------------

	Again there are two options when burning ROMs for NARC. The first
being the version for 27010 (1 Mbit) ROMs. The second is for the less
expensive 27512 (512 Kbit) ROMs.

To make 27010's:

	1) cd \VIDEO\NARC
	2) run MAKEROMS		;This will take you through all the steps.
		a) when in SYSCHECK.SET set ROM512 = 0
		b) copy DATAIO checksums for FC roms when given
		c) insert these checksums into ROMCHIPS.ASM when it appears. 
		   Also, set the FE checksums to FFFFh (this is important).
		d) copy DATAIO checksums for FE roms when given
		e) insert these checksums into ROMCHIPS.ASM when it appears. 
		f) calculate FE fudge bytes using FE checksums (see below).
		g) insert fudge bytes in an empty area of each FE rom.
		h) check final DATAIO checksums against theoretical(optional).
		i) burn NARCFC.0 (U42), NARCFC.1 (U24),
			NARCFE.0 (U41), NARCFE.1 (U23)  with PP
		j) done.

To make 27512's:

	1) cd \VIDEO\NARC
	2) run MAKER512		;This will take you through all the steps.
		a) when in SYSCHECK.SET set ROM512 = 1
		b) copy DATAIO checksums for F9, FA, and FD roms when given
		c) insert these checksums into ROMCHIPS.ASM when it appears. 
		   Also, set the FE checksums to FFFFh (this is important).
		d) copy DATAIO checksums for FE roms when given
		e) insert these checksums into ROMCHIPS.ASM when it appears. 
		f) calculate FE fudge bytes using FE checksums (see below).
		g) insert fudge bytes in an empty area of each FE rom.
		h) check final DATAIO checksums against theoretical(optional).
		i) burn NARCF9.0 (U78), NARCF9.1 (U60),
			NARCFA.0 (U77), NARCFA.1 (U59),
			NARCFC.0 (U42), NARCFC.1 (U24),
			NARCFE.0 (U41), NARCFE.1 (U23)	  with PP
		j) done.		


			Calculating FE fudge bytes
			--------------------------

	Using the two 16 bit DATAIO FE checksums that were inserted into
the file ROMCHIPS.ASM in place of the previously inserted FFFFh's, perform
these simple operations.

	1) Subtract the low bytes of each checksum from FFh.
	   These are the fudge bytes for NARCFE.0

	2) Subtract the high bytes of each checksum from FFh.
	   These are the fudge bytes for NARCFE.1


example:

	NARCFE.0 checksum = 0345h	NARCFE.1 checksum = 67ACh

	NARCFE.0 fudge bytes	       NARCFE.1 fudge bytes
	--------------------	       --------------------
	   FFh - 45h = BAh	          FFh - 03h = FCh
	   FFh - ACh = 53h	          FFh - 67h = 98h


			Reserved Fudge Byte Area
			------------------------

	With the NORTON utilities you can scan the ROM file for a copyright
message, "NARC COPYRIGHT (C) 1988 WILLIAMS ELECTRONICS GAMES, INC." In front
of this message should be four bytes all equal to 0. Feel free to use any
of these to insert the two fudge bytes. Yes, you can use the same NORTON
utility to find the area and insert the fudge bytes.


That is all and have a nice day. (GNP - 7/31/89)

NARCLOG.DOC

NARC Error Log format
			---------------------

A0 = Possible Object Pointer, Current A0 at time of Error.
A1 = Calling Routine Return Address.
A2 = [Error type, Game State Variable]
	0 = Recoverable
	1 = System error
	2 = "Watchdog caught" error
A3 = Current PC
A4 = [Player 1 Starts, World Top Left]
A5 = [Wave #, *A0(OID)]
A6 = [Current Process ID, *A8(OID)]
A7 = Current Process Pointer
A8 = Possible Object Pointer, Current A8 at time of Error.

NARCREVS.DOC

A version history of the game. Interestingly, this does not include v1.91, the location test outlined in DUMP.DOC.

			NARC REVISION LIST
			------------------

REV.		NOTES
----		-----
1.0 		INITIAL SOFTWARE FOR AMOA 1988 - GNP (11/3/88)

1.1 		FIXED DRIVING WAVE "FIVE DOLLAR MILE", A CAR LEFT BEHIND	
		IS DELETED AND WARPED AHEAD - GNP (11/14/88)

1.2 		INITIAL ON-SIGHT TEST SOFTWARE.
		FIXED "CENTUAR" PLAYER CHARACTER.
		ADDED:	PLAYER HIT BY EXPLOSIONS AND ROCKETS.
			COIN ROUTINES AND AUDITS. - GNP	(11/19/88)

1.3 		FIXED: SECOND PLAYER BUYIN DURING CRIME SCENE LOCKUP.	
		ADDED: MORE AUDITS AND CORE DUMP SOFTWARE - GNP	(11/21/88)

1.8		FIRST GAME RELEASE FOR PROTO RUN (250 GAMES) RELEASED
		FOR GREED REASONS, DEFINITELY NOT AT THE RECOMMENDATION
		OF THE DESIGN TEAM. - GNP (12/18/88)

2.00		PRODUCTION RELEASE NUMBER 1, MUCH WAS ADDED AND CHANGED
		FROM V1.8, IN FACT, TOO MUCH TO ITEMIZE, WE'LL CONSIDER
		THIS THE STARTING POINT FOR PRODUCTION REVISIONS. - GNP(1/16/89)

3.00		- MORE DATA STRUCTURES INITIALIZED ON SECRET BONUS.
		- BAD TRAP JUMPS TO SECRET BONUS ANYTIME DURING GAMEPLAY.
		- FIXED PLAYER COLD START SUPPLEMENTAL LIST KNOT BUG.
		- ADDED SOUND FOR EXPLODING SGT. SKYHIGHS.
		- WHEELCHAIRS AND SAFE CARDS ARE NO LONGER XFERED.
		- ADDED MORE GAMEPLAY PER ATTRACT MODE CYCLE.
		- FIXED THE ENDLESS BUY-IN MUSIC.
		- NEW AND IMPROVED JOYSTICK LEFT/RIGHT FLIP RESPONSE.
		- AN UNLOCKED CARD SLOT DOOR LETS EITHER PLAYER OUT NOW.
		- MADE BOTH PLAYERS WALK THROUGH THE SAFE DOORS.- GNP(2/5/89)

3.10		PRODUCTION RUN RELEASE NUMBER 2.
		- IF A CASH CARD EXISTS AND ONLY ONE PLAYER IS ACTIVE
		  THEN THAT PLAYER ACTIVATES THE CASH MACHINE REGARDLESS.
		- MADE BEAKERS AND SUCH IN DRUG LAB EASIER TO POP W/BULLETS.
		- FACTORY DIFFICULTY SETTING LOWERED TO 3
		- GERMAN FACTORY DIFFICULTY = 2, BUYIN = EASY
		- PLAYER PORSCHE TOP SPEED LOWERED, ALSO COLLISION WITH
		  A DUMPSTER IS MUCH KINDER.- GNP(2/9/89)

3.20		ADDED STUPID PEA BRAINED IDEA TO MARK A ROM GOOD IF 
		IT ONLY DROPPED ONE BIT IN A BYTE. THIS WAS FOR ROM
		TEST. THIS WAS DONE BECAUSE THE 512 PARTS THAT WERE
		PURCHASED WOULD LOSE BITS OVER TIME. THIS DECISION WAS
		MADE BY WILLIAMS MANAGEMENT, AND IS ALSO A PRIME EXAMPLE
		OF THERE INIFINITE WISDOM. SURELY I JEST.- GNP(2/13/89)

3.30		AS IT TURNS OUT, THE BAD 512'S ARE DROPPING MORE THAN ONE
		BIT PER BYTE IN SOME CASES. WILLIAMS MANAGEMENT HAS NOW
		DECIDED THAT THE ROM CHECK CHANGE SHOULD BE REMOVED. 
		JUST REMEBER, THERE IS A DIFFERENCE BETWEEN PRODUCTION
		AND DEVELOPMENT, THEY SHOULD NOT BE MIXED.- GNP(2/14/89)

3.31		THIS IS THE SAME AS 3.30, EXCEPT IT IS MADE TO BE BURNED
		ON 1 MBIT ROMS.- GNP(2/14/89)

4.00		SAME AS 3.30, BUT GURNEE DID NOT LIKE OUR REVISION NUMBER.
		IT WAS TOO HARD TO DISTINGUISH.- GNP(2/17/89)

5.00		SAME AS 3.31, FOR THE REVISION # REASON.- GNP(2/17/89)

6.00		FIXES PLAYER BUY-IN TO INVISIBILITY BUG. IT WAS HARD TO
		FIND BUT WE FINGERED IT. - GNP(2/20/89)

7.00		SAME AS 6.00 BUT FOR 1 MBIT ROMS. - GNP(2/20/89)

NARCSTUF.DOC

Todo/idea list from an unknown point of early development.

Things to do on NARC
--------------------

x Make player jump hang time longer, this needs to be a playable feature.
  Also fix bug, holding weapon select while moving, then left off the
  joystick, player velocity is not zero'd.

x Flame Thrower even extension, there's quite a jump from short to long.
  If player switches direction, switch Flamer for him.

x Have Loffredo enemies carry different weapons, when you kill him his
  weapon falls to the ground. Certain enemies should carry drugs and or money
  these guys will look as if they're going somewhere, the player must chase
  them in order to get their stache. Surrendering?

- Background area maps, a routine which returns a code pertaining to what
  an object is standing in (i.e. 0=solid surface, 1 = opening).

x Find a way not to use the interrupt pending flag, if possible.

x Add player/enemy collision with background objects in the movement routines.

x Do text string output routines.

- Driver scoring: Driver hit by explosion(lowest score), driver hit by bullet
  from the front(middle score), driver hit by bullet from behind(next),
  finally, driver hit by rocket is the highest scoring.

- Loffredo needs to shoot while laying down, the major velocity to his jump.

x Add the whore snatcher.

x Add Dumpster man.

x Add the sewer dude.

x Possibly use a different collision routine for player bullets, no Z detect.

- Unlimited rockets for 20 secs ?

x Car stuff

x Bonus count, also enemy, dollars, drugs, etc. limiting

x MAKE SURE ALL GETOBJ CALLS ARE CHECKED FOR A BLOCK FAIL

x USE DELSOBJ FOR ANYTHING THAT MIGHT HAVE A SHADOW

x BE CAREFUL WITH KILOBJ, SHADOWS SHOULD BE DELETED BY HAND

x ADD A STRTPLAY FLAG TO INDICATE WHEN THE WAVE PLAY SHOULD BEGIN

x REMOVE GAME START FROM P1 AND P2 ROCKET BOMB BUTTONS, ONCE T & E GET START BUTTONS

x ADD GAMSTATE VARIABLE, 00 = GAMEOVER 01 = TEST 02 = STARTED 03 = INPLAY, ETC.

x FIX HIT WHILE JUMPING FUCK UP

x SINGLE SHOT JUMP BUTTON

x ADD COLLISION VECTOR LIST

x NO DELAY ON JUMP

x CAN SUPER JUMP

x CONTINUOUS ENERGY COUNT DOWN

x BULLET COUNT, DISPLAY ICON AND #. PLAYER GETS ONE SHOT ON SCREEN WHEN OUT.

x ROCKET DISPLAY #

x TWO PART PLAYER SHADOWS

- PLAYER INTERACTION WITH BACKGROUND

x IF PLAYER IS IN BUYIN TIME AT END OF WAVE, PUT HIM BACK AT THE START OF
  BUYIN TIME AT THE BEGINNING OF THE NEXT WAVE. IF THE PLAYER IS LYING ON
  THE GROUND, THEN CAN HIM.

x SCROLL BOTH X DIRECS.

x RE-ADJUST PLAYER IF CAUGHT WHILE JUMPING AT END OF WAVE

x DON'T FUCK WITH FLAGS ON PLREINIT

x ADD 0FFFEH,PAL # TO ANIMATION SCRIPT

- 2X BONUS FOR PLAYER WHO FINISHED FIRST, TIE BOTH GET IT

x TAKE THE GAME OUT OF FREE PLAY WHEN WE GET THE COIN ROUTINES

x RESTART AUTO ERASE SCHEME

- RETURN NOBJ TO 200 !!!!!!!!

- MAKE WAVE # SIGNIFICANT TO MORE THAN FOUR BITS IN WAVEINIT, GETWAV AND
  TESTDISP.

- Have one High Score table per difficulty level if we have big CMOS

x Fix Cadillac bug, car explosion while trunk opening causes lock-up

x MAKE THE BIG CAR EXPLOSION GET ADDED TO THE PLAYER BULLETS LIST

x SOME BUG LETS BULLETS & ROCKETS GET AWAY, FIND IT!

x SOME CADILLAC EXPLOSION LOCK UP

x Make sure that a door cannot be entered within one "Buy-In" time length
  from the last door entry. This could cause infinite existence!

- Last, but not Least, equate the DEBUG constant in d:\video\sys.inc to 0

WAVMUSIC.DOC

A list of what music is used where in v1.1.

			NARC VERSION 1.1 WAVE TUNES

	WAVE  1  JUNKYARD	..........	TUNE 7 - NARC THEME
	 	 SUBWAY		..........	TUNE 8 - SSR TRIBUTE 

	WAVE  2	 KRAK STREET	..........	TUNE 9 - THE STICK
		 WAREHOUSE	..........	TUNE 3 - ML 6/8

	WAVE  3	 THE BRIDGE	..........	TUNE 6 - DRIVING THEME

	WAVE  4	 THE DISTRICT	..........	TUNE 2 - MR. BIG THEME
		 DOG ROOM	..........	TUNE 3 - ML 6/8	 
		 BUG ROOM	..........	TUNE 3 - ML 6/8
		 TRASH ROOM	..........	TUNE 3 - ML 6/8

	WAVE  5	 DOWNTOWN	..........	TUNE 7 - NARC THEME
		 MR.BIG LOBBY	..........	TUNE 9 - THE STICK
		 RED SAFE	..........	TUNE 8 - SSR TRIBUTE
		 BLUE SAFE	..........	TUNE 2 - MR. BIG
		 SILVER SAFE	..........	TUNE 7 - NARC THEME
		 GOLD SAFE	..........	TUNE 6 - DRIVING THEME

	GAME FINISH PAGE	..........	TUNE 6 - DRIVING THEME

	HIGH SCORE ENTRY PAGE	..........	TUNE 4 - NARC RAP