CA1281422C - Lookahead pipeline for processing object records in a video system - Google Patents

Lookahead pipeline for processing object records in a video system

Info

Publication number
CA1281422C
CA1281422C CA000549404A CA549404A CA1281422C CA 1281422 C CA1281422 C CA 1281422C CA 000549404 A CA000549404 A CA 000549404A CA 549404 A CA549404 A CA 549404A CA 1281422 C CA1281422 C CA 1281422C
Authority
CA
Canada
Prior art keywords
data
record
objects
playfield
records
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
CA000549404A
Other languages
French (fr)
Inventor
Patrick J. Mccarthy
George E. Logg
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Midway Games West Inc
Original Assignee
Atari Games Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Atari Games Corp filed Critical Atari Games Corp
Application granted granted Critical
Publication of CA1281422C publication Critical patent/CA1281422C/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/44Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment involving timing of operations, e.g. performing an action within a time slot
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/42Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of patterns using a display memory without fixed position correspondence between the display memory contents and the display position on the screen
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/20Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of the game platform
    • A63F2300/203Image generating hardware

Abstract

ABSTRACT OF THE DISCLOSURE There is disclosed herein a system for rapid processing of the data records of many moving and nonmoving objects on a playfield only part of which is displayed and for determining collisions between objects. A search pipeline using a synchrounous state machine searching a linked list of the records organized by approximate position on the playfield implements the search function. A lookahead cycle in the state machine is provided to continue searching for the next object which is to be visible while the graphic data from a previously found object is being loaded into a line buffer.

Description

4~
-L-LOOKAHEAD PIPELINE FOR PROCESSING O~JECT RECORDS
IN A VIDEO SYSTEM

BACKGROUND OF THE IN~EWTION
The in~ention pertains to the field of processing o~ data records fo~ objects to be diselayed on a video display. More particularly, the in~ention pertains to the field of video game processing of a plurality of objects on a playf ield to determine which ~ objects are visible on the ~ortion of the playfield being displayed and which objects have collided with other objects.
~ s video games ha~e become more complex and sophisticated they ha~e progressed to multiple playe~
games with multiple cha~acters in conflict with multi~le other entities with the battle taking place on eve~ more complex playfields Because standaLd video display circuitry is used to display all this action, and - because there are a large number of moving and nonmoving objects on such playfields there have developed seveLe limits on the complexity of the game than can be depicted. This is because the amount of time in which to decide which objects a~e to be displayed on a particular scan line and which objects have collided ~5 with other objects is limited by the amount of time the s~ ~ video processing circuitry takes to scan the raste~
lines in the image. Since this scanning is a fast process, the amount of time to process the data describing each object to make decisions about it is limited. Ultimatelyt this limits the number Oe objects that a system can handle and thereby limits the number of objects and elayers that the system can successfully cope with.

: !

.4~
Accordinqly, a need has acisen foc a video game pcocessing system that can capidly handle large numbecs of objects and player inputs to cause motion in desired directions of some of said objects and which can rapidly detect collisions between many such objects and many ; other objects on the playfield.
Further, a need has arisen for a video game system which can gracefully handle multi stamp motion objects which are larger than one stamp wide and one stamp tall. ~ stamp is a group of pixels and lines, ~ generally rectangular and generally 8 pixels wide and 8 - scan lines tall, which is used to provide the shape of the motion object. The pixels are wcitten with data words which define the color or shade of gray at each location in the stamp to define the identity of the motion object by its shape. Heretofore, motion objects have been only one stamp wide. This limits the size and complexity of character shapes which could be drawn on the screen because the number of pixels available for coloring was too small to define truly complex character shapes. Thus, as the sophistication of game users has increased, there has arisen a need to be able to provide them with more colorful and complex charactec shapes.

SUMMARY OF THE INVENTION
According to the teachings of the invention there is provided a video system which can process a large number of moving objects under the control of multiple users and ~ large nu~er of nonmoving objects within the t~Lng constraints i~osed by the video image ~roducin~
circuitry. In tbe preferred embodiment, the video game system comprises a central CPU which runs the main game rogram implementing the rules of the game and which reads user control inputs indicating desired movements of the characters and which controls other objects displayed on the screen. The action takes place on a playfield of which only a portion is displayed. The various moving objects and nonmoving objects which are part of the game are all placed on the playfield. The moving objects are moved in response to either user control inputs or in response to commands from the computer under the control of the main program to move the objects to create the conflict in the game. The conflict in the game is irrelevant to the invention and may be between the main characters and monsters or between the objects which the players control and other objects that the main processor controls or nonmoving obstacles. The CPU continuously evaluates the positions of the moving objects and stores data records describing both the moving and the nonmoving objects, including their positions relative to a reference point on the playfield, in a two dimensional array in a random access memory which will hereafter be referred to as the array RA~. Each location in the array maps to a certain area on the playfield. Contiguous array locations map to contiguous areas in the playfield. The nonmoving objects such as walls on the playfield are also stored in the two dimensional array as dummy motion object records which are not on the linked list but which are stored at array locations corresponding to the position where they would appear on the playfield. Hereafter, the portion of the playfield which is displayed will be referred to as the window. The dummy motion object records only contain the x and y locations of the nonmoving objects and may or may not contain a dummy picture pointer. The actual picture pointer for the ; ~ nonmoving object is stored in another arra~ in the array RAM which is accessed during a time slot devoted to :: ~ r ~, 14~ i painting the playfield picture (hereafter called the playfi01d eicture array). The picture pointer is the address in cead only memory where the ac~ual graphic information defining the appearance of ~he object is ~ 5 stored. In the preferred embodiment, each a~ray ; location for the motion object and dummy motion object data reco~ds (hereafter called the col].ision detect areay) maps to a box on the playfield that is ~6 pixels wide and 16 lines tall.
1~ The moving objects in the collision detect array are linked by an ordered, linked list but this linking is not relevant to the collision detect feature of the invention. It is only an element of ~he invention that increases the speed of display processing which determines which of the motion objects will be visi~le in the window. The ordering of the list is such that the objects a~pear on the list in the order they would be displayed if the entire playfield was displayed in raster scan fashion from left to right and top to Z bottom. In embodiments where raster scanning is not used, the linked list need not be ordered in this fashion. When the moving objects move, the linked list is reordered by the computer during its time slot for access to the array RAM to maintain the proper order in the linked list.
The video game system processes the data records in the array RAM in time multiplexed fashion. A
time slot will be given to the CPU to read records from or write records to the arcay RAM. During this time slot the CPU does any of the following things: it builds the aeray databases ~there is a collision detect array, a ~layfield picture array, an alphanumeric arLay and a slip table or array), it moves objects per user commands by changing the position offset field in the - s -record to reflect the object's new position relative to a playfield reference point (usually the upper left ; corner o~ the playfield), it updates th~ arcay entries to change the links on the linked list and change the slip table entries or to move object records to the proper locations in the collision detect array when the objects have moved, or it reads data records of objects that have been moved and neighboring objects for collision detect p~obessing. The term "slip~ as used herein, means a starting lin~ pointer or link to the correct obje~t data record on the linked list where processing for any particular raste~ scan line is to start.
Another time slot is devoted to access of nonmoving objects for pu~oses of displaying the walls and or o~her nonmoving objects which form part of ~he playfield landscape. Another time slot is devoted to access of the alphanumeric data for display of information on the screen regarding the score or other textual material.
Another time slot is dedicated to linked access to the next motion object on the linked list either through use of the link from the last object processed or hy use of a slip. The slip table lists the places on the linked list where "hit" processing should start on each raster scan line to determine which motion objects are in positions to appear on the scan line.
The slip table is updated by the CPU during its time slot when~ver the order of the linked list is changed.
Access into the slip table is generated by decoding data including the current scan line number being processed in the current window. The ~----------------~ .

., - .

~ 2~

slip data is accessed from the sliy ta~le in the arcay RAM and latched into a link register at the beginning of the scan of each new easter scan line.
The last described time slot is devoted to accessing data records from the linked list describing the y positions for the motion objects. This data is used to do y hit processing to determine if there is a eossibility that the object will apeear on the current scan line. I~ a y hit is found, the pointer to the graphic data for the motion object is retrieved and the x eosition of the object is examined to determine if there is an x hit, i.e., the object is located along the visible eortion of the x axis on the playfield which is currently being displayed. Each data record has x and y coordinate data describing the position of the motion object relative to a reference eoint on the playfield.
Each data record also has a link field containing a pointer to the next record on the linked list. To avoid needless processing of data records for objects that will not be visible, access to the data records at the correct point in the linked list is gained by using the slip pointing to the first motion object on each scan line, and, thereafter until the end of the line, by using the links to continue processing. At the end of each line, a signal is generated by a state machine/sync generator controller logic to cause the slip address to be updated to its new value and to be latched into the link register for use in access to the linked list at the eroper eoint for processing the next line.
Every time a motion object is to be moved, a collision detect process must be performed to determine if the movement would result in a collision with either another motion object or a nonmoving object on the playfield. The CPU performs this process in a rapid .

~2~4'~2 manner by comparing the position of the objec~ to be moved to the positions of only and at most the nearest objects in the path of movement since the motion object obviously will not have collided with any objects not in S the path of movement. To do this the CPU uses a two ~imensional collision detect array of data records ' describing the re}ative positions of the moving and nonmoving objects on the playfield and accesses the records of only the closest objects in a specific pattern that lies in the path of movement and which will intersect said path of movement. The position data in the data records so accessed are then comeared record by record to the position data of the object to be moved.
Both the x and y coordinates of all the objects in the array are expressed in offsets from the reference point on the playfield so that the comparison process does not have to wait for the whole array to be rewritten every time the window changes position.
The comparison is done by subtracting the x position of the first record in the pattern from the proposed new x position of the object to be moved and testing the absolute value of the result to determine if the result is smaller than a specific, constant number.
If the result is not smaller than the specific constant, then the y position comparison is skipped, and the next record in the pattern is retrieved and the ~` comparison is started on ~he new record. If the result of the x comparison for the first record is smaller than the constant, the y positions are compared in the same manner. If the absolute value of the result is smaller than the constant,a collision has occurred and all , further record comparisons are stopped since the moved object need only collide with one thing to trigger collision processing. If the absolute value of the ``;3~' , 1~8~

result is not smaller than the constant, the next record for an object in the pattern is retrieved and the ~osition compacison pLocess continues.
Once a collision has occurced, the CPU
determines which motion object has collided with which other object and the proper course of action to take for that type of collision. For example, if a laser blast motion object has collided with an attacking monster, the proper course of action may be to make the monster disappear. If a monster motion object has collided with the character being manipulated by a player, the proper course of action may be to make the character die oc lose health, power etc. If the collision was between a character and a wall on the playfield, the pcoper course of act;on may be to make the character's motion in the direction of the wall stop at the wall. The proper course of action may differ in different embodiments to implement different rules of play.
ccording to the teachings of the invention, multi stamp motion objects are provided. Motion objects may consist of an array of stamps up to 8 stamps wide and 8 stamps tall. Rach motion object record on the `' linked list consists of four words, one of which is the address of the first stamp in the array of stamps. The other words of the motion object~s data record contain the motion object~s vertical and hori~ontal size, the . .
horizontal and vertical positions and the link to the next motion object. Ducing each scan line,a chain of motion object data records are examined by logic that j 30 compares the y position of the motion objects to the y position of the current scan line, both positions being expressed in playfield relative terms. The comparison circuitry delivers a number which is the row number for the stamp in the motion object array containing the "

current scan line. The row number of the stamp and the hori~ontal size information is used to look up or calculate a motion object stamp offset number. This is the stamp number of the first stamp in the array on the row containing the current sean line. Eaeh acray of stamps is numbered with the stamps in row 1 numbered 1, 2, 3 .. up to 8. The first stamp in the second cow will then be numbered as the next number in the sequence following the number for the last stamp in row 1. A
eounter then counts as each stamp is processed to provide the relative address of suceeeding stamps in the eurrent row. The motion object pieture field also eontains a field which is the actual address in the graphies ROM of the first stamp in the array. This lS address is added to the offset from the first stamp number of the current stamp number.
The compacison circuitry also delivers a number which represents the actual scan line in the current stamp which is being scanned. This information plus the actual address of the current stamp in ROM derived from the above deseribed eireuitry is used as an address to aeeess a ROM where the graphic data in the form of a pixel pattern for that type of motion object is stored.
The corceet pixel pattern is then latched into a shift register and shifted bit by bit into the line buffer being loaded in preparation for seanning the next line.
All the foregoing proeess is done one line time ahead of the time of aetual seanning of the line and is stored in one of a pair of "ping pong" line buffers in waiting for the aetual seanning proeess. The other ping pong buffer stores the pixel pattern that is aetually being seanned at any pactieular moment According to another aspect o the teaching of the invention there is provided a lookahead feature for :

L4~

processing the linked list of motion objects to determine which will be visible in the cusLent window.
In the pceferred embodiment of the invention, a synchconous state machine in the form of a ROM coupled S to a sync generator and to several status signals is used to generate the control signals which control the time slots for multiplexing of addresses for the arcay RAM and the latching of output data from the array RAM.
The status signals which are input to the state machine indicate the match or no match condition for the vertical and horizontal position comparisons between the current motion object's position and the scan line being painted in the current window. These status in~ut signals to the state machine also indicate ~everal other things:
when the end of processing of all the stamps on one row of a motion object has occurred; when the end of each scan line is reached; and, when the state machine is entering its first cycle of 7 basic time slots which are used in looking for hits and doing other things. The state machine has a foreground cycle of 7 time slots where various addresses are selected and various data is written to or read from the RAM.
The ~oreground cycle is generally for the purpose of processing the linked list records to determine which motion objects at or beyond the slip pointer address are to be displayed on the current line. Each motion object is processed first for a y hit. This means that for an object which is a "hit", i.e., will be visible, the y position is such that- part of the object is supposed to appear on the current scan line.
If there is a y hit, the motion object is processed for an x hit in another time slot of the foreground s~ate machine cycle. This x hit processing is to determine if the x position of the object and the x position of the window and the horizontal size of the object are such "~

~- .... . . . .
4~

that the object is supposed to at least partially appear on the current scan line.
Since the process of processing a multistamp motion object to retrieve the graphic data for several S stamps on the current line takes some time to complete, the state machine also has a background cycle. This cycle is entered each time a status signal indicating that the stamps of a previous motion object are still being processed to load the graphic data into the line buffer. The pureose of the background cycle is to continue processing of the next motion objects on the linked list following the motion object last processed in the foreground states. The background processing however is limited to determination of which motion object on the linked list has both a y hit and an x hit. No picture pointer is retrieved for any motion object having a y hit and an x hit found in the - background state. Only the foreground states retrieve picture data.
To perform its function, the background cycle continues processing the motion objects further down the list from the motion object which is currently having its graphic data loaded into the line buffer so as to ; implement a lookahead function. When the background states find the next motion o~ject with ~oth an x and a y hit (in some cases, one foreground state is also involved in the lookahead unction), processing goes into a hold mode where the backgcound states continue to cycle in looking at the horizontal position of the motion object which was found, but QO new motion objects are processed. This holding continues until the foreground s~ates and the associated circuitry finish loading all ; the picture data from the original motion object into the line buffer as signaled by one of the status - ,~

, .

signals. The foreground cycle is then re-entered, and the picture poin~er is retrieved for the object so located in the background states. This pointec is used to access the graphic data from the graphics ROM for the S new motion object. If this motion object is more than one stamp wide then, as soon as this graphic data loading process commences, the status signal indicating that the graphics ROM and shift registers are busy with the graphic da~a loading process is, and the background cycle is re-entered to continue the lookahead process. A motion object which is only one stamp wide can be processed and loaded to the line buffer in one complete foreground cycle of 8 time slots, at the rate of one time slot per pixel. The background cycle is entered only if the motion object to be displayed has ~ more than one stamp horizontally which will be visible.
:~
Brief Description of the Drawin~
Figures 1~ and lB are a block diagram of the circuitry implementing the teachings of the invention.
Figure 2 is an illustration of the conventions used in describing the positions on the playfield of motion objects and playfield objects, the current window position and the stamp arrays of the objects on the playfield.
Figure 3 is an illustration of the collision detect array in the array RAM.
Figures 4A and 4B are block diagrams of the vertical and horizontal match circuits and the stamp offset calculation circuits.
Figure S is a staSe diagram of the foreground cycle.
Figure 6 is a state diagram of the background cycle.
:

.: , ,~, .~ ,,j~, `' I~f~14;~

Figure 7 is a flow diagram of the collision detect algorithm.
Figure 8 is a symbolic diagram of the conventions and tests used to determine the presence of collisions between objects on the playfield.

Detailed Description of the Preferred Embodiment RefeLring to Figures lA and lB, there is shown a block diagram of a system according to the teachings of the invention. For convenience, the reader may wish to cut both Figures lA and lB along the cut line and assemble them as one figure. These two figures will be - hereafter referred to as Figure 1. Such a system has utility in a video game or other application where lacge numbers of moving objects must be displayed on a screen andtor where collisions among them during the movements must be detected.
A computer Z0 runs a main p~ogram stored in working ROM 22 to do various functions for the system.
The main program implements the particular rules of the game, and causes the computer 20 to perform input/output operations to read user control input data from user controls and interface unit 24 and is given in Appendix A. The user control interface unit is of known design and is not critical to the invention. It provides one or more user control sets such as joysticks, fire buttons, magic buttons etc. In the preferred embodiment, four user control se~s are provided, and the computer 20 reads data from them either by interrupt vector processing or by polling of the controls. In the preferred embodiment, eolling is used. The particular rules of the game implemented by the main program such as what happens when a monster collides with a character or what happens when a character's shot or other form of lX~

assault collides with a monster are not cLitical to the invention. The teachings of the invention ace broadly applicable across the video game market and, in fact, may be useful in otheL fields such as processing radar or sonac images with large numbers of moving targets where collision or proximity must be detected.
In the preferred embodiment, the system of Figure 1 is used in a video game involving four main characters which move and fight against multiple moving monsters. Some of the characters shoot cays or bullets and these also are displayed as moving objects. All ` this action takes place on a playfield which is - essentially a maze with walls, treasures, food, keys and other stationary and nonstationary objects placed therein. All of these moving and nonmoving objects have data records stored in a database comprised of several arrays in the array RAM. Each of ~he records in the database describes certain attributes of the object.
Among these attributes for each object are the horizontal and vertical position on the elayfield.
In the preferred embodiment, the playfield has ~ multiple levels each of which are different. The - information as ~o the configuration of each level and the locations of the various nonmoving objects on each level is stored in a working ROM shown as part of memory 22. The computer uses data from this ROM to build a two dimensional playfield array in the array RAM 3Z. Each nonmoving object record in the playfield array also has a dummy motion object entry in the collision detect two dimensional array in the proper arLay location that corres~onds to the eosition of the object on the playfield. This dummy entry has the ~ eosition and y position data of the object and may or may not have a picture pointer. The presen~e or absence of the picture .~

`~

~; pointer is irrelevant to the invention. The purpose of this dummy en~ry i5 to complete the collision detect array with all the movinq and nonmoving objects on the playfield so that collision detect processing can be ; S done from one array. The nonmoving objects in the collision detect arcay may or may not be part of the linked list.
In the preferred embodiment, only a portion of the playfield is displayed. This portion of the playfield will be hereafter called the window. The playfield has a reference po;nt which can be anywhere but which is usually its upper left corner. The window also has a reference point, and it also can ~e located anywhere in the window but is usually located in the upper left corner. There may be as many as 1024 moving and nonmoving objects scattered about the playfield at any particular time, but only some of them will be visible in the window. The positions of the moving and nonmoving objects a~e expressed in terms of their offsets from the reference point on the playfield. In the preferred embodiment, the window location is moved to keep the four main characters visible at all times.
In other embodiments, the window may remain stationary or may follow the movements of some but not all the main characters. ~ major function of the system of Figure 1 is to determine which of the moving and nonmoving objects on the playfield will be visible in the window.
The system is aided in this process by the fact that the positions of all the objects on the playfield are expressed as playfield relative offsets.
The computer 20 is responsible for creating the database for all the objects and updating the datab~se when the position of the objects change. As the term is used herein, the database is comprised of several arrays ~.~8~4~

and tables. There is a collision detect two dimensional array, a playfield two dimensional array, an alphanumeric two dimensional array and a slip table in an otherwise unused paLt of the alphanumeric array. The ; 5 database also contains data regarding the current score for each player and the curLent position of the window.
All these array entries and other data are updated by the computer. For example, the comeuter is responsible for calculating the new position of the window and for 10 updating the data records which indicate where the window is currently located. Also, the computer updates the data records regarding the current score. The computer is also responsible for determining when collisions between objects in the database occur when 15 one or all objects involved in the collision move too close to the other object or objects.
Because the display is to be on a video color monitor, the speed at which each scan line is traced by the electron beam sets the basic time limit du~ing which 20 all processing of objects to determine which are to appear on the particular scan line must be completed.
Since each scan line is traced in a very short time, there is a need to process the objects in the database ~ with great efficiency to be able to finish processing } 25 them in sufficient time.
Because of the limited time available fof processing objects, both the moving and the nonmoving ~; objects are stored in the RA~ 3Z as part of the two dimensional collision detect array where each location 30 is physically mapped to a corresponding area on the display. This data organi2ation allows the collision determinations made by the computer 20 to be made in a more expeditious manner by only checking the nearest objects in the direction of movement.
.

4~

To speed up processing to determine which objects are to be visible in the window, the moving objects in the database are organized as a ~inked list.
The link organization is set by the computer zo to approximate the order in which the objects would appear if the entire playfield were displayed in raster scan fashion. When the ob jects ~ove, the computer 20 changes the lin~ks on the list to adjust the order of the list to again correspond to the physical order of appearance of the objects. To maintain the physical mapping that is necessary for the collision processing, the data record of the objects which have moved must also be moved to the addresses in the RAM which correspond to the array location which maps to the object's current location in ~he window on the elayfield.
The known synchronization signals needed by the video display 26 are generated by a sync generator 28 which is driven by a pixel clock 46. These sync signals also ser~e as a basis to generate basic timing signals used to clock the system. Some of these clocking ; signals are coupled to a state machine 30 and are used in conjunction with other status signals as address signals for a ROM which implements the state machine.
The state machine serves ~o generate the contLol signals which control the other circuitry in the system for addcess selection and latching of data coming out of the RAM. The truth table of the state machine 30 is given in ~ppendix B.
The database of records for the moving and nonmoving objects is stored in an array R~M 32. The address inputs 34 to this R~M 32 are controlled by a multiplexer 36. The multiplexer has one output coupled ; to the address ineut port of the R~M 32 and several inputs coupled to various sources for addresses. The :

4;~

state machine generates the select signals to cause the multi-plexer to select one of the several inputs for connection to the output bus 34 during each of the 7 basic time slots in the time divlsion multiplexing of the system.
The seven basic time slots established by the state machine will be explained in greater detail later when the state diagrams of the state machine 30 are explained. Basically, the time slots so that one time slot allows the computer 20 to access the database RAM to build or revise the database. Another time slot allows alphanumeric information to be displayed on the screen at specified locations such as the score of each player and other ; information about the game. Another time slot allows the link address to the next motion object to be loaded to enable continued "hit" processing to determine if the next object on the linked list is to be visible.
~nother time slot allows the vertical position of the current motion object to be examined for a "y hit".
Another time slot allows a slie pointer address to be loaded which points to the correct position on the linked list to begin processing for the curLent window position to determine which objects will be visible.
Because the data which emecges from the RA~
ducing each of the time slots is transitory, a series of latches are provided to store the data temporarily. A
;~ ~ latch 38 stores the vertical position data of the motion object record which has currently been retrieved from the RAM 32. This motion object is retrieved when the state machine either causes the slip address to be selected or the link address to be selected by the multiplexer 36. The slip address is comprised of a few ; bits from the alphanumeric address input on line 40 concatenated with the window vertical address on line 42. The link address is the address on the line 44.
' .~ 3`~

' .2~ V~ ( The slip is used to save time in processing the motion objects on the linked list to determine which ~ill be visible at the current window location. Because the linked list includes all the motion objects on the S entire playfield but the window only displays a fraction of the total playfield, the slip is used to vector the y hit processing to the proper point on the linked list to start processing. This prevents y hit processing of data records for objects which are so far abo~e the window that there is no possibility that they will be visible in ~he window. Thece is a slip for every 8 scan lines in the pre~erred embodiment. Each slip poin~s to the first motion object on the linked list that would appear on each group of eight scan lines.
There are 64 slips in the preferred embodiment, and they are sto~ed in an otherwise unused portion of the alphanumeric ~wo dimensional array in the array RAM
32. The proper slip in the slip table is accessed by selecting the window vertical addLess on line 42 with the proper bits of the alphanumeric address on line 40 and applying them to the address bus 34. The slip then appears and is latched into the link to next motion object latch 48. This process occurs once eer scan line. It is caused when the select signals on lines 50 and 52 assume states which indicate that the beginning of a new scan line is at hand, as signaled by the signal on the line 50, and when the signals on line 52 indicate that the state machine is ready to get the link to the next motion object.
A latch 54 is used to store the motion obiect horizontal eosition data when the state machine 30 causes same to be accessed. Each motion object record is com~rised of ~ words. These words cannot all be placed on the data bus 56 at the same time, and the link . ~

address on line 44 is the index into the motion object reeord. When the data desired by the state machine resides in one of the other words, the state machine ehanges the bit pattern on the motion objeet eontrol bus 58 (M.O. CTL) to seleet the desired word. The state maehine is also eoupled to the eloek or load inputs of all the latehes so that the proper one of them ean be enabled to load the data then present on the data bus 56. These are the struetures that allow the state machine to aeeess the horizontal position data for the motion objeet ~ointed to by the link addres~ (or slip) to appear on the data bus 56 and to store it in the latch 54.
The part of the mo~ion objeet record which comprises the address in ROM of the gLaphic data or aetual pixel pattern for the motion object is stored in the lateh 60.
The position on the playfield of the particular sean line being processed is tracked and stored in the window vertical eounter 62. This eounter is loaded with the playfield relative scan line number of the top of the window from a particular storage loeation in RAM
which is kept updated with the eurrent vertical location by the computer 20. This scan line number is loaded Z5 into the eoun~er 62 at the~beginning of every frame by a signal (not shown) from the sync generator or the state maehine. The counter 62 counts up from this scan line number each time the HSYNC signal from the sync geneeator 28 oecurs. The aetual signal used to cause the counting by the eounter 62 is not the actual horizontal synchronization that causes the flyback after ~ every line is painted on tha display but is a digital ; signal derived therefrom.

, . . .

The address of the playfield stamp in the graphics ROM for the current electron beam position in the window is accessed by the state machine by causing the multiplexer 36 to select the address window vertical ; 5 on line 42 and window horizontal on line 64. The address bits on these two lines define the current electron beam position on ~.he playfield in terms of an offset from the reference point on the playfield. When this address is selected,the playfield picture stamp address is output from the array RAM 32 and is latched into the playfield picture latch 64. The playfield eicture addresses are stored in a two dimensional array in the array RAM 32 which is organized so the arcay locations map to corresponding areas on the display.
The graphics data for the playfield stamps and the motion object stamps is stored in the graphics ROM
64. When the address of a motion object or playfield stamp is presented as an input on a bus 72, the graphics ROM delivers the graphics data on the graehics data output bus 74. This graphics data is routed through a multiplexer 76 under the control of the state machine.
The data is routed to either the playfield shift register 78 or the motion object shift cegister 80 depending upon what type of graphics data is being output. The shift registers shift the graphics data out serially for use in painting the particular scan line being processed. In the case of the playfield shift register 78, the data is shifted out on line 8Z as digi~al video information to a color priority and mapping circuit 84. This circuit receives as inputs, ', digital, serial information on the lines 8Z, 86 and 88.
The data on the line 86 comes from either line buf~er A
; or line buffer B in the line buffer circuit 90. The digital data on the line 86 is mo~ion object data which .

~.28~4'~ `

was shifted into the line buffer 90 by the motion object shift register ~0 via a line 92. This occurs for line buefer B ~hile line buffer A is being displayed and occurs for line buffer A when line buffer B is being displayed. The data on line 86 is the motion object data for the line currently being displayed. The digital data on line 82 is the playfield data. The shifting is done under the control of a SHIFT signal from the sync generator 28 so as to be synchronous with movement of the electron beam across the scan lines.
The digital video data on line 88 carries the pixel patterns for the alphanumecic information that is to be displayed.
In the priority and mapping circuit 84, the incoming serial. digital, video data is erioritized and a decision is made as to which information will be displayed for each particular playfield location that is visible in the window. There may, for any one playfield location, be several items that must be displayed. For example, alphanumeric information, a motion object and playfield wall may all be independently shifted into the circuit 84 for diselay at ~he location. Not all these items may be displayed there, so the circuit 84 decides which item to diselay and sends ~he proper digital video information to the digital to analog conversion, scan and display circuitry 26. The circuit 84 also adds coloc information to the data stream based upon the color palette information in the data records for the playfield and motion object data records. The palette data is stored i,n a portion of one of the words of both the motion object and the playfield data recards. The design o~ the color eriority and mapping circuit is game dependent, not critical to the invention and conventional and will not be detailed herein.
~ , .

--~, 42 ~ :

The alphanumeric information to be displayed on the screen is stored in an alphanumeric array in the array RAM 32. This information is kept current by the computer 20, and is accessed by selection of the S alphanumeric address on line 40. The alphanumeric address is expressed in window relative terms as an offset of the current elect~on beam position fcom a reference point in the window, usually the upper left hand corner. When this address is selected, the address of the alphanumeric graphic information for that particular window position is accessed from the array RAM 32 and latched in the alphanumeric latch 66. This address i5 output on the line 68 to the alphanumeric ROM
70 where the actual graphic data is stored. This causes the actual pixel pattern for the particular alphanumeric stamp accessed to be loaded in parallel format into an alphanumeric shift register 94 and to be shifted out on line 88 synchronously with mo~ement of the electron beam across the screen.
The addresses supplied for shifting of serial, motion object video data into the line buffers 90 are supplied by a playfield offset horizontal match circuit 98. This circuit has as its input the motion object ; horizontal position data on the bus 100 and the x position of the edge of the window on bus 102. The information on the bus 10Z is supplied by a window horizontal counter/latch 10~. The circuit 104 serves to store the current x position o~ the edge of the window in a latch and to count up pixel positions from the edge of the window upon receipt of pixel clock signals on line 106. The current x position of the edge of the window is stored in the latch portion of the circuit 104 by the computer 20 via the data bus 106 and the address bus 108 of the computer. Data is loaded into the x :

A~"2~L4~s~

-2~-location latch of the circuit 104 through CPU buffer 110 enabled by the computer address bus. The window horizontal counter 104 pLesets to this x location, expcessed in playfield relative terms, at the end of each scan line. Any suitable ciccuitry to implement this preset function may be used, e.g., a preset signal based upon HSYNC or upon reaching a predetermined count indicating the end of the scan line has been reached.
The playfield offset hocizontal match circuit 98 also receives data regarding the horizontal size of the motion object. From the horizontal position data, the circuit 104 generates a horizontal match or x hit signal called HMATCH on line 99 which is sent ta the state mach;ne. The horizontal match circuit 98 also uses the horizontal size data and the horizontal position data and generates an END
signal on line 101. This signal is transmitted to the state machine 3~ to indicate when the last horizontal stamp graphic data in a motion object's array of stamps on a particular scan line is being shifted into the line buffecs 90. This END signal indicates to the state ~ machine that it is permissible to re-enter the ; foreground state fcom the background state. The END
signal also means that it is permissible to continue to access and process data records for other motion objects on the linked list and to use the graphics ROM 64 for loading the pixel data into the line buffer since the graphics ROM is no longer tied up in accessing graphic data for the previous motion object. The horizontal position data of the edge of the window and the motion object ace also used to generate the window relative positions of the motion objects to be shown on the cucrent scan line being stored in the line bu~fers 90.
This screen relative position is sent on the address bus 112 ~o the line buffer to control loading thereof. The .

., .. ~

4~.~

details of this horizontal match circuit 98 will be described in more detail below.
When the computer 20 wishes to update any information in the array RAM 32, the data bus 106, address bus 108, buffer 110 and a CPU latch 112 ace used to store the data to be written into the RAM. The latch 112 is loaded for input and enabled for output of the stored data onto the data bus 56 by control signals from the s~ate machine (not shown) during time slots devoted to CPU access to the array RAM 32.
A vertical match and stamp offset address calculation circuit 114 serves to process the motion object ver~ical position and size data with ~ata regarding the vertical position of the current playfield scan line to determine whether a particular motion object is to be displayed. This circuit 114 also calculates the stamp number of the first stamp in the motion object's ar~ay of stamps in which the current scan line lies. Reference to Figure 2 will clarify this last statement. Figure 2 (not to scale) shows a typical position of the display window 11~ in a playfield 118 and shows the typical size for one stamp of video graphic data and shows a typical 6 x 6 stamp motion object 120 (the maximum size for a motion object in the prefer~ed embodiment i5 an 8 x 8 array of stamps).
Motion objects have their x and y locations expressed in terms of the playfield relative position of the first stamp in the lowest (most eositive y coordinate) IOW of stamps in the motion object~s array of stamps relative to a reference point 123 at the lower left corner of the elayfield. In the case of the motion object 120, the ~ position of stame 37 is stoed in the array RAM as the ; ~ number of scan lines up the y axis from the playfield refecence point 123 and the number of eixels to the ' . ~, ~ ;28~

right along the x axis from either the playfield reference point 122 oe refeLence point 123. The playfield dimension along the y axis can be expressed in the number of scan lines or in some other unit which can be converted to scan lines. The ~layfield scan lines ~ such as lines 1 and 2 a~ the top of the playfield are ; not video display scan lines but are, instead, fictional playfield scan lines since all areas outside the window 116 will not be visible. The scan lines that are within the boundaries of the window 116 will be visible however.
Each scan line in the window can be identified by either its playfield relative position or by its ~ screen relative position. For purposes of discùssion, the terms : "screen relative" and "window relative" are interchangeable. In the preferred embodiment, the current scan line's y position is expressed in terms of the number of scan lines down from the reference point 122. For purposes of the access to the alpha-numeric information however, the current scan line is expressed in terms of the number of scan lines down from the window position reference point 124 where the cuKrent scan line lies.
Referring again to Figure 1, the purpose of the : vertical match circuit 114 is to compare the y position of all the motion objects on $he linked list start;ng from the motion object at the slip address to the y position of the scan line currently being processed to determine if any part of the motion object will appear on that scan line. Figure 3 is a diagram of the mapping of the locations in the two dimensional collision detect array in the array RAM 32 to the corresponding locations on the playfield 118~
Two different positions for the window are shown. The array locations in the collision detect array are shown as the boxes with x and y collision detect array coordinates in the upper left corners. The motion objects on the linked list are shown as boxes with numbers in them giving thei~

:

~ .'~; .
~, ,.

position on the list. Links between the motions objects are shown as arrows connecting the boxes~ Playfield objects such as walls are shown as boxes with designations such as PF 1 in them.
Since only the motion objects which are inside or partially inside the window positions will be visible, the job of ciecuit 114 is to determine which ones of the motion objects have y positions which are within the y extents of the current window location.
This process is speeded up by the fact that the circuit 114 only has to examine the y positions of the motion objects on the linked list starting with the motion object pointed to by the current slip. The function of the slips is illustrated in Figure 3. Foc pcocessing the linked list for the window position 1, the state machine 30 would force slip 3 to be latched into the link registec 48 at the beginning of scan line 17. Thus only the data records foc motion objects 5 and following would be presented sequentially to circuit 114 for y hit processing This y hit processing is done by comparing the motion object y position (expressed playfield relative) ; on bus 128 fcom latch 38 to the current window scan line being processed (expressed playfield relative on bus 130 from latch 62. When a y hit is found, the signal VMATC~
on line 138 coupled to the status signal inputs of the state machine 30 is caused to go true.
The circuit 114 also calculates which stamp numbec in the array of stamps making up the motion object to address given the scan line that is currently being processed. To determine this, the circuit 114 compaces the current scan line number to the motion object~s vertical position and the motion object's horizontal an~ vertical size. Referring again to Fi~ure 2, if the , .;
:.

``~ Z ~.2~14;~ i curcent scan line was line 250, the circuit 114 would process motion object 120 and find a y hit because the y position of stamp 1 is within the y extents of window 116. ~fter finding the y hit, the horizontal size data on bus 132 from latch 38 of 6 stamps would be used to calculate that the first stamp number of motion object 120 would be stamp number 7 f OL that type of motion object. The address of stamp 7 would then be calculated and provided on the address bus 134 through a multiplexer 136 controlled by the state machine to the add~ess input bus 72 thereby causing access of the proper graphic data. In another embodiment, instead of using a multiplexer 136, the output of the circuits 114 and 98 may be tri-state outputs coupled to the same bus with the state machine con~rolling the tri-state control signal so that only one or the other of these circuits in non-tLi-state theLeby implementing a de facto multiplexer.
The otheL input to the multielexer 136 is the address of the playfield object picture field stored in latch 64 and coupled on bus 140 to the in~ut of the multiplexee. The multiplexer 136 is controlled by the state machine ~0 to couple the proper address at the proper time to the graphics ROM 64 to be able to access both playfield and motion object graphic data out of the same ROM.
Referring to Figure 4 (comprised of Figures 4A
and 4B), the details of the vertical match and stamp offset calculation ciecuit 114 aee given. The first step in deter~ining whether there is a y hit is to compare the y position of the motion object (playfield relative) to the y position of the current scan line being p~ocessed (also playfield relative). One way of doing this is to use two's complement arithmetic and add 4~ ( the two y positions with one or the other expressed in Z's complement form.
To implement this approach, an adder 140, an adder 148 and an AND gate 152 are used. The adder l~o adds the y position of the motion object expressed in ~ terms of the number of scan lines up (in the negative y ; direction) from the reference point 123 in Figure 2 to the y position of the current scan line expressed in terms of the number of scan lines down from the reference point 122 in Figure 2. The y ~osition of the motion object is expressed in 2's complement format in this way because a signal VBLANK on a line 160 coupled to the carry-in input of the adder 140 is a logic 1 thereby adding a 1 to the invected expression of the motion object y position. This yields the 2's complement format. The motion object y position is the offset of the bottom scan line in the motion object~s stamp array relative to reference point 123. The ~ computer stores the y position of the top scan line of ; 20 the current window in the assigned location in the array ~ RAM, and the counter 62 increments it as each scan line . ~
is finished. The result is the curcent scan line position as a playfield relative offset from the reference point 122 on the bus 130.
The equations that must be satisfied to have a y hit are as follows:

(1) SPOS - VPOS is less than or equal to o, and (2) [SPOS - VPOS] + ([VSIZE + 1] x 8) is greater than zero ;:
~ where , .~

., .......

1.4X~

SPOS is the playfield relative current scan line position as an offset from the first scan line at the top of the playfield, VPoS is the motion object vertical position expressed as an offset from the top scan line on the playfield where the reference point on the motion object stamp array is the lowest line (most positive y coordinate) in the lowest cow of stamps in the stamp arcay and the left most pixel (smallest x coordinate) ~ using the reference system o Figure 2 with reference point 122 at the origin, and VSIZE is the vertical size of the object expressed in numbers of rows of stamps with O representing a vertical size of 1 and 7 representing a vertical size of ~ rows of stamps, where each row is 8 scan lines tall.
The adder 140 is a 9 bit adder and implements equation (1~. It adds the 2's complement of VPOS to 5POS and outputs data representing the difference between the two numbers on the 6 bit bus 142 with the top three bits. i.e., bits 6, 7 and 8 represented by the line 14~. These most significant three bits are repre-se~ted ~y the simplelinel44, and are true (logic 1) when both equations (1) and (Z) are satisfied if the motion object size VSIZE is 7 (8 rows vertically in the stamp array) or less. The bus l~Z is comprised of two sub-buses. The first sub-bus, bus 158, carries the middle three bits (bits 3, 4 and S) to the input of an adder 148, a~d the second sub-bus, bus 160 caLries bits O, 1 and 2 to a latch 156. The data on the bus 158 represents the offset in rows of stamps of the bottom of the motion object fcom the current scan line.
If the current motion object having its y position examined is not 8 stamps by 8 stamps, the vertical size of the object must be examined to ~`

...
'~

determine if equations (1) and (Z) are satisfied for the vertical size of the object. In~uitively, the fact that the circuit 114 is trying to determine is whether the bottom of the motion object is lower than the current scan line, and, if so, is the motion object tall enough so that the current scan line passes thcough it. The adder 148 answers the second half of the inquiry by determining if equation (2) is satisfied for the size of the motion object being examined. The ~erm [VSIZE ~ 1]
~ x 8 is satisfied by the motion object vertical size information in rows of stamps on bus 132 being applied to the ~
input of the adder and the carry-in input of the adder being tied to logic 1 at all times when vertical match determinations are being made. This adds 1 to the vertical size infocmation. The multiplication by 8 occurs by virtue of the addition of the data at the B
; input to the data at the A input which is multiplied by 8 by virtue of the A input being connected to bits 3, 4 and 5, i.e., shifted upward ~y 2 or 8. This shift has the effect of a multiplication by 8. That is, the data on the bus 158 is SPOS - VPOS scan lines divided by 8 to equal the row in the motion object (counting from the bottom of the object) in which the current scan line resides if the motion object is 8 x 8 stamps.
The result of the addition by the adder 148 is the offset from the current scan line to the top of the motion object with the carry-out set. Thus, if the line 162 is a logic 1 and the three bits represented by line 144 are a logic 1, then the-re is a y hit, and the AND
gate 152 causes VMATC~ to go true signaling to the state machine that the current scan line passes through the current motion object and that the picture data should be retrieved if there is also an x hit.

J
, , ; ~

~.~2~ 4~

As an example of the abo~e calculation consider Figure 2. If the cucrent scan line is 250 and the motion object whose vertical position is being examined is motion object 146 with a y position of 20, the y position difference on bus 142 will be 230 scan lines, and equation (1) will not be satisfied because the result is positive and no y hit condition will be signalled. Bus 158 will contain digits ceeresenting 230 divided by 8. If, however, the motion object whose y position is on bus 128 is motion object 120, the y position on bus 128 will be the l's complement reeresentation of 2g4 and the current scan line will be 250. Thus, the ~ position difference SPOS - VPOS on bus 142 is -44 scan lines and equation (1) would be satisfied and equation (2) would be satisfied if the motion object were an 8 x 8 stamp object. Since the motion object 120 is not 8 x 8 stamps, the cesult from equation (Z) is crucial to determinat;on of whether there is an actual y hit. In the example at hand, the result of equation (2) would be -4~ + [6 + 1]] x 8 = lZ
and equation (2) would be satisfied indicating a y hit has occurred. Since scan line 250 is the 4th scan line down fcom the top scan line in stamps 7 through 12 in the motion object, i~ can be seen that the result of equation (2) is indeed the offset of the current scan line down from the first scan line in the motion object, i.e., scan line Z38. Since the result of the addition by the adder 148 is positive, the carry out on line 162 is true and the AND gate 152 causes VMATCH to be true.
; 30 The next function performed by ~he circuit 114 is a calculation of the first stamp in the row in which - the current scan line resides. In Figure 2, the stamp numbec for the first stame in the row containing current scan line 250 is stamp number 7. This process is begun .

by a lookup table stored in RO~ 164. The tcuth table for ROM 16~ is given in Apeendix C. The input of this - lookup table is the data on bus 150, i.e., the row offset of the curcent sean line from the top of the motion object, and the horizontal size of the objeet on the bus 132. ~he M.O. REFL signal on the line 166 is a 1 bit field whieh is stored in an unused eart of the wocd used to reeord the motion object's y position data. It indieates that the motion object should be a mirror image of the original motion objeet.
The lookup table 164 uses all the above information to aecess a reeord stored therein which is the stamp offset from stamp 1 in the first row to the first stamp in the row in whieh the eurrent sean line resides. The stamp of~set data indieates in the ease of the motion object 120 that the first stamp in the row in ~ which the scan line 250 resides is stamp number 7 and is ; output on the bus 168 to the ereset input of a counter 170. This counter receives a signal MFLP at its up/down input which determines whether the eounter will eount up or down each time a stame~s graphic data has all been loaded into the line buffer so as to be able to display mirroc image motion objeets. The ~H signal is generated by sync generator 28. It oecurs onee every 8 pixels, i.e., once for each stamp. A NEW M.O. signal eoupled to the load input of the counter 170 causes the data on the bus 168 to be loaded into the counter each time a new motion objeet is processed and a y hit results.
The output of the eounter is on the bus 172 and ~ 30 is the eurrent stamp offset as the scan proceeds across ; the motion object. This data is added by an adder 174 to the low byte of the motion object pieture data on the bus 176. This picture data is stored in ~he lateh 60 in Figure 1 and is accessed only upon a y hit from the data 4~ ( record for the motion object causing the y hit in the array R~M. This data is related to the actual address in the gcaphics ROM of the eixel pattern for ~he appropriate stamp of the motion object which caused the y hit when it is added to the motion object stamp offset data on line 172. The cesulting data is output on the bus 180 and is concatenated in a latch 178 with the motion object high by~e data on the bus 176 at the most ; significant bit eositions and the motion object line data on the bus 182 in the least significant bit positions. The data on the bus 182 is the actual scan line in the stamp currently pointed to by ~he stamp offset data. The output data from buffer 178 is the actual address in the graphics ROM of the actual pixel data for the 8 pixels on the current scan line in the current stamp. This address data is coupled to the graphics ROM on the bus 134 to the multiplexer 136 in Figure 1.
The horizontal eosition of motion objects which have had y hits must also be analyzed to determine if the object will be visible in the window and to detecmine where in the line buffer to write the information if the object will be visible. The circuitry tha~ does this analysis is shown in Figure 4A
ZS which is a detailed block diagram for the playfield offset/horizontal match circuit 98 in Figure 1. The examination for x hits is started by the adder. This device receives the motion object horizontal position, expressed in playfield relative terms on the bus 100.
The current x position of the edge of the window expressed in elayfield relative l's complement terms is received on the bus 10~ at the B input of adder 184. In the prefeered embodiment, the playield relative position of the edge of the window position is expressed 281~2~;:
~-35-in l's complement form by virtue of the computer 20 writing the x position of the window irlto the latch portion of the circuit 10~ in standard signed binary, elaYfield relative form followed by invecsion of the latch output. The complement output data from the latch on the bus lOZ is then input at the B input of the adder 18~ where it is converted to 2's complement form by virtue of the carry-in input of the adder being set to a logic 1 (adding 1 to a l's complement number converts it to 2's complement). The addition of the data at the A
and B inputs of the counter 184 is actually a subtraction between the motion object horizontal pos~tion and the current position of the window because of the 2's complement form of the window position.
lS The addition by the adder 184 results in the screen relative position of the left edge of the motion object on a bus 185 exeressed in units repcesenting two stamps wide. The reason for this is that only bits 4 through 8 of the output of the adder 184 are used or the bus 185 while bits O through 8 are used for the bus 191. The data on the bus 191 will be the screen celative position of the leftmost pixel on the current scan line of the current motion objec~ expressed relative to the edge of the window. Because only bits 4-8 are on bus 185, the effect is that of a division by 16 pixels or 2 stamps.
This data on bus 185 will be a negative number if the left edge of the motion object is to the left of the left edge of the current window left edge. The data on the bus 185 is input as part of ~he address for a PROM 189. The other portion of the address of the PROM
189 is the motion object horizontal size on the bus from latch 38 in Figure 1. The PROM 189 contains data that converts the playfield relative position of the left -. , . ' ~

4~

edge of the motion object and the motion object 18 horizontal size expressed in stamps extending to the right into ~he ~MATCH signal and a MOD H SIZE signal.
The tru~h table for the PROM 189 is given in Appendix S D. The PROM 189 data words are such that if the horizontal size is such that any portion of the motion object is in the window, the ~MATCH signal on a line 195 will be set to logic 1. If the left edge o~ the motion object is to the left of the current window left edge, the signal on the line 197 will be the entire horizontal extent of the motion object ex~ressed in numbers of stamps. If, however, the motion object left edge is in the window, but the right edge of the motion object is to the right of the right edge of the window, the data on the bus 197 will be the numbeL of stamps completely OL ear~ially visible in the window.
A down counter 201 counts down from the stamp number reeresented by the data on She bus 197. The count input is coupled to a signal 4HD3 from sync generatoc 28 which decrements the count every 8 pixel times. The counter is loaded with the data on the bus 197 each time a signal NEWMO goes high. This happens each time the state machine is in the foreground i erocessing state, and loading of the graphic data from ~; 25 an object having x and y hits begins. As long as the counter out~ut is not zero, the down counter outputs the END signal on the line Z03 as a logic 0, and the state machine enters the backgeound, lookahead processing s~ate. When the count reaches 0, END becomes a logic 1, and the state machine re-enters the foreground cycle in time slot 3.
Referring to Figure 5 there is shown a state diagam ~or the forPground states of the synchronous state machine 30 in Figure 1. Figure 6 shows the .: . ~ , .. ..

.i ~Z1~4~Z ( background states of the state machine 30 which ace used in the lookahead mode. The state machine 30 contcols the operation of the system ofFi~ures lA ~ 1~ by cycling through the states shown in ~'igures 5 and 6 during 7 basic time slots and generating the necessacy control ; signals to cause the multiplexer to cyele through all its states to connect each of the buses shown in Figures lA an~:llB cærying address data to the address ports of the array RAM during an assigned time slot. The state maehine also generates the proper control signals to : cause the proper one of the latches coupled to the output of the array RAM to load the data placed on the data bus 56 by the array RAM in response to the address data supplied at its address port.
The names inside each state circle indicate which address is : 15 selected during that time slot and which latch is loaded with the data that is output from the array RAM in response to the address selected during the time slot.
The background processing cycle is used when a motion object that is to be displayed, (that is a y hit and an x hit have been found) is more than one stamp wide. In all other cases, the foreground processing cycle is used. The state machine receives three clock signals on the bus from the sync generatoc 28. The sync generator 28 is in turn driven by pixel cloek signals on a bus 192 from a pixel clock 46. The pixel cloek sets the lowest common denominator of the timing of the system by marking off pixel times during which each pixel is painted by the electron beam as it scans across the raster lines. The sync generator 28 counts the pixel Simes and generates the horizontal and vertical syne signals on the bus 194 for use by the video display scan circuitry in circuit 26. The horizontal sync signal HSYNC (not the actual horizontal sync signal used by the video but celated to it) on bus 196 marks the end , z~ z~ i -3~-of each scan line and the beginning o~ the next scan line. The timing signals on the bus 190 are used by the state machine as the basic marker signals to determine which of the 7 basic time slots in which the state machine currentlv resides. Scne t;~e slots have two or m~re states. The particular state in the time slot that the state machine enters de~ends upon the logic states of several status signals. These status signals indicate such things as whether or not there are y or x hits, the state of the y hit or x hit signals on the last motion object processed, and whether the HSYNC signal is or is not true. They also indicate whether the horizontal stamp address calculation circuit in circuit 98 indicates that the last stamp of graphic data in the row of stamps containing the current scan line has been - loaded in the line buffer (END), and whether the state machine is currently in the foreground or the background state (NEWMO feedback signal from the output of the state machine~
The state machine 30 is a PROM, and uses the clock signals on bus 190 and the status signals mentioned above as ~ address signals. The data stored at the addresses made up by the : : concatenation of all the status and timing signals is then output and latched into a buffer (not shown in Figure 1). Certain bits are assigned as the load signals for the various latches in the system thereby allowing the state machine to control the storage of the various fields of data being accessed from the acray RAM. Certain bits of the data stored in t~e state machine PROM are assigned as the select bits and control the states of the select signals on the bus 52 to the multiplexer 36. Others of the output bits are control signals to other logic in the system.
The foreground cycle is started by entering state 188 in time slot O in Figure 5. If the status signals indicate that the state 188 is entered at the beginning ------------------------:
,~ .

., 814Z~ !

of a new scan line, data from the memoLy location in the PROM accessed by the address comprised of the tlming signals and status signals controls the select signals in such a way that the slip address is selected and supplied to the S array RAM. This causes an entcy from the sli~ table in the array RAM 32 to be loaded mto the 1 ~ register 48. This slip is a link to the first motion object on the linked list through which the current scanline may pass. The state machine is forced into the foceground processing state also at this time (by setting NEWMO true), and the current state of the MATCH status signal is set to false.
When the clock signals indicate time slot 1 is current, the state machine enters state 202. Hele the state machine selects the link address on line 44, and sets the M.O. CTL signal on line 58 to select the output . word in the motion object record containing the vertical position.
This causes the data record of the motion object on the linked list pointed to by the link ~o be accessed, and the vertical position data of this record to be placed on the bus S6. In state : 20 202, the state machine also generates a signal which presets the horizontal match signal HMATCH to generate an artificial x hit in case an actual y hit is found when y hit processing is completed by the time time slot 3 arrives. The reason for this will be apparent from the discussion below.
The circuitry for artificial setting of HMATCH
true in state 202 is shown in Figure ~A. In state 202, the state machine sets a signal VERTDL on a line 2L0 true. This ~resets a flip flop 212 and causes the signal CLK HMATCH on line 214 to be tcue regardless of the actual state of HMATCH on line 195.
All the timing and status signals define the address for the state machine PROM on each time slot and do not individually affect states as might be assumed by the '`'''~, reader from inspection of Fi~ures S and 6. The depiction shown in Figures 5 and 6 is symbolic only.
In state 204, the process of examining the vertical position da~a for a y hit is begun. As soon as state 204 has been entered and the proper control signals generated, the vertical position data loaded into the latch 38 is examined by the circuit 114 indeeendently as described above. The process done by circuit 114 occurs during time slot 2, and the result is 10 available as an input to the state machine durmq time slot 3.
While circuit 114 is checking for a y hit, the state machine selects address line 206 to give the CPU
control of the array RAM 32 address lines. The CPU 20 may then read or write the array RAM to update the current window position or change any of the data in any of the arrays in the array RAM.
To understand how the background and foreground cycles relate to each other, first assume that the - foreground processing cycle has been entered for the first ti~e on a new line. Since the signal MATCH was forced to 0 by the NXL signal input to the state machine during state 188, and, since 2V~TCII only chan~es states between time slots 2 and 3 (or between time slots 6 and 7, then the state machine will transition to a state 208 via a path 209 in the foreground cycle upon reaching time slot 3. In this state, the addLess on line 40 will be selected and the alphanumeric information for the current pixel posi~ion will be retrieved from the alphanumeric array in the array RAM 3Z. This pointer will be latched in the latch 66 and used by the circuitry 70, 94, 84 and 26 to paint the proper alphanumeric information in the window at the current pixel position.

~,~

- ~x~

In time slot 4, the state machine transitions to either srate 218 oc 220 depending upon the state of the MATCH signal. As can be seen from the match eircuitry shown in Figure 4A, the MATCH signal is S generally the AND funetion of the VMATCH and HMATCH
signals eloeked by the signals VERTDL and HORDL
generated by the state maehine in tha states where vertical and horizontal match information is needed.
Thus MATCH is tcue only when there has been both a y hit and an x hit. Assuming a y hit on the fiest motion objeet proeessed in the ficst eyele through the foceground states, the state machine will tcansition to the state Zl8. In this state, the link address on line 44 will be seleeted, and the M.O. CTL bits will be set to access ~he motion objects picture pOinteL field which data will be latehed into the latch 64.
The state machine will then transition to the state 222 in time slot 5 whece the link address will again be selected, and M.O. CTL will be set to access the horizontal position field of the motion object cecord. This data will be latched into the latch 5~, and will be examined by the CiLCUit 98 as detailed - above. This processing will ~esult in HMATCH being set ~ to the actual x hit status of the CULrent motion ; 25 object. The HORDL output signal from the state machine, seen on Figure 4A, will latch this status into the flip flop 212 and the AND gate 224 in Figure 4A will reevaluate the signals on the lines :: 214 and 226 and set MATCH to the logic state representing the actual x and y hit situation.
In time slot 6, state 228 will again grant CPU
~ aecess to the array RAM. Meanwhile the ho~izontal match ; examination process for presence of an x hit will be proeeeding simultaneously. The sampling of the status of HMATCH and VMATCH with the signals HORDL and VERTDL
.~ .
,~
, ,;

14~
.

will occur in time slot 6. State Z30 in time slot 7 is the time slot devoted to access of the playfield stamp data. In this state, the state machine selects the address on lines 42 and 64 and causes the access of the eroper playfield eicture pointee from the elayfield picture array in the array RAM 32. This picture pointer is a eointer to the address of the proper pla~field stamp in the graphics ROM 64 and is latched into the playfield eicture latch 64. This data is coupled to the address port of the graphics ROM 64 through the multiplexer 136 which the state machine or other suitable logic controls to select the address on the bus 140.
From state 230, the state machine transitions to either state 232 or state 188 depending upon the states of the MATCH and the MATCHDL signals. If an x hit was found by the processing started in state Z22, MATCH will be 1. In the hyeothetical case at hand, MATCHDL will be 1 because VMATCH changed states to a logic 1 six time slots earlier in state 202 and MATCHDL
will have had time to pick up this change between time slots 3 and 4. Whenever MATCHDL is a logic 1, path 232 in the foreground cycle is taken regaLdless of the state of MATCH. Path 232 is also taken when M~TCH is 0 indicating no hit regardless of the state of MATCHDL.
The path Z34 is taken only if M~TCH is a 1 indicating a hit on the current motion object and MATCHDL is a 0 indicating MATCH was O and no hit on the previous motion object occurred erior to time slots 3 and 4 of the CurLent cycle in foreground.
In the example at hand, both an x hit and a y hit were found on the first motion object processed, and the state machine has entered state 188 in time slot 0.
This causes the link to the second motion object to be ' 14~2 1 latched. Transition to state 202 then occurs and the vertical position data of the second motion object is latched. State Z04 is then enteced in time slot 2 and ; CPU access occurs.
Assume that the first motion object is more than one stamp wide (each time slot is equal to one pixel time). This means thal: END will be 0 and MATCH
and MATCHDL will still be logic 1 since the transition feom time slot 2 to time slot 3 (for MATCH) and from time slot 3 to time slot 4 (for MATCHDL) will not yet have occurred. This means that there was a hit on a motion object and the graphics data is still being retrieved and stored in the line buffer. This will cause the state machine to stop processing in the foreground cycle and enter the background cycle since path 209 is taken only for the conditions shown on Figure 5.
The state machine now enters the lookahead mode while the graphic data from the first motion object is loaded in the line buffer. Referring to Fiyure 6, the first state entered in the background mode is state 238 where the pointer to the graphic data for the alphanumeric information to be displayed at the current pixel or electron beam eosition is accessed and latched. The state machine then transitions to either state 240 or 242 depending upon the state of MATCH. If there was a y hit found in state 202 of the foreground cycle, the path 244 will be taken so that processing for an x hit can proceed. In the example at hand, and assuming that theLe was no y hit on the 2nd motion object, path 246 is taken to state 242 where the link to the next motion object is accessed and latched.
The state machine then transitions to state 248 where the vertical eosition data for the 3rd motion object on the list is accessed and latched. ~n examination foc a y hit is then performed during time slot 6. The state 248 forces HMATCH to be true while -, 12~3~4'~;~
-4~-looking for a y hit so MATCH will be true in time slot 7 if a y hit is found. A transition to state 250 once again gives the CPU access to the array RAM, and then the state machine changes to state ZSZ where the playfield picture data pointer is accessed and latched f oc purposes of painting the playfield objects.
~ ssume for this example that the 3rd motion object is not a y hit. From state 252, transition to either state 254 or 256 occurs depending upon the states of MATCH and M~TCHD~. MATCH will be 0, so transition to state 256 occurs. ~ssuming that the status signal indicating the beginning of a new line is as hand is false, state 256 will latch the link to the next motion object, i.e., ~he 4th motion object on the list.
lS Transition to the state 258 is then made, and the y position data for the 4th motion object on the list is accessed and latched. Processing for a y hit then proceeds during time slot 2 as described above while the CPU is given access to the array RAM in state 260. If the END signal changed to logic l at any time during the background cycle just described, when state 260 is reached, the state machine again enters the foreground c~cle.
Re-entry from the background cycle to the foreground cycle is to state 208 where the alphanumeric pointer is accessed. Transition then occurs to either state 2lg or 220 depending upon the current state of MATCH as determined from processing in ~he background state. In the example, no hits were found in the background state, so processing proceeds to state 220 where the link ~o the 5th motion object on the list is accessed and stored.
The state machine then transitions to state 26 where the vertical position da~a of the 5th motion . ,~., ,'~

-~5-object on the linked list is accessed and latched.
State 264 also forces HMATCH to be true as was done in s~ate 202 in time slot 1. Processing for a y hit proceeds in state 228 durinq time slot 6 as described above in the description of circuit 114. Here, the computer 20 is once again given access to the array RAM, and the state machine makes the transition to state 230.
Assume that a y hit or the 5th motion object was found in the process started by state 264. Thus, when state 230 is reached, MATCH will be 1 and MATCHDL
will be 0. This will cause the state machine to transition to state 232 where no operation is performed.
Transition to a state 266 is then made where the x position of the 5th motion object is accessed and lS latched. During time slot 2, the presence or absence of an x hit will be determined while the state machine is in state 204 where access by the computer 20 to the array RAM will again be granted. State 208 will be entered because the MATCHDL signal is a logic 0 indicating no hit on the previous motion object, and erocessing proceeds as previously described with a transition out of state 208 to state 220 for a "no hit on the current motion object"condi~ion o~ to state 218 ~ for a hit on the curcent motion object.
; 25 Assuming for our example that an x hit was found in state 266, transition will be made to state 208 because there was no hit on the previous motion object and MATCHDL will be 0. The alphanumeric information will be accessed in state 208 and transition to state 218 will be made because MATCH is equal to 1. In state 218 the picture pointer will be retrieved, and the process of loading the line buffer with the pixel data will begin. Transition to state 222 will then be made where the horizontal position data will again be ~ ~J :', exa~ined and a hit will be found again. This is not necessary, and is only an idiosyncrasy of the way in which the state machine must work. Transition through the states 228 and 230 will then occur for CPU RAM
access and accessing of playfield object data.
Transition out of state 230 will be to state 188 where the link to the next motion object will be retrieved.
Transition to state Z02 causes the vertical position of the 6th motion object to be retrieved and the examination ~or a y hit starts.
~ ssume that the 5th motion object was more than one stamp wide. MATCHDL will be 1 as determined between time slots 3 and 4 for motion object 5, and END will be O. This will cause transition out of state 204 into the background state 238 while the END signal ~emains 0.
The reason for this is that the graphics ROM and the horizontal and vertical stamp offset circuitry is busy processing the stam~s for the 5th motion object and cannot be simultaneously used tol:egin hit processinq for the 6th motion object. To avoid wasting time,the background lookahead cycle is entered to find the next hit. This architecture implements a search eipeline to speed u~
~, processing the linked list to find out which objects will be visible in the current window position.
The background cycle state first executed when the background cycle is entered is state 238 where the alphanumeric information for the motion object at the current electron beam position is accessed and th~ display process is started in the parallel channel for alphanumeric information.

Transition is then made to state 240 because of the y hit found in state 202 of the fore~round cycle. If there had been no hit in state 202 when the backgLound cycle was entered, the state 242 would be entered to access the vertical l?osition of the 7th motion object for y hit . .... .

processing. However, thece was a y hit for state 202 for the 6th motion object, so state 240 is entered.
This is a no operation state since the pic~ure information cannot be accessed for the 6th motion object while the picture information for the 5th motion object is being processed. Thus, transi~ion to sta~e 300 follows. Here the x position of the 6th motion object is cetrieved, and x hit processing is started by the circuit 98.
Assuming an x hit occucred, the background cyele must then enter a wait cycle until END goes to logic 1 indicating the graphic data processing cilcuitry is free. This wait cyele consists of continual cycling through states 300, ZS0, 252, 254, 302 (where the horizontal position is examined again--unnecessary but an idiosyncrasy of the operation of the system), state 260, state 238, state 240 and finally back to state 300 to begin the eycle again. This process continues until END goes to 1. Af~ec this time, the state machine makes a transition out of the background cycle back into the foreground cycle the next time state 260 is reached.
After re-entering the foregLound cycle, the state 20q is reached followed by state 218 where the pieture pointer for the 7th motion object found in the background cycle is retrieved. Theceaftec, ærocessing continues as described above.
Referring to Figure 7 there is shown a flow diagram of ths collision detect pcocess performed by the computer 20 each time a motion object is moved on the playfield. Before the eollision detect erocess can be performed of course, the various arrays in the array RAM
must be initialized, i.e., filled. TheLe are many different known ways of doing this, and any of the known methods that will fill the collision detect array in the 4'~

mapeed fashion shown in Figure 3 will ~uffice. Of course the elayfield and al~hanumeric arrays must also be filled, and any known method of filling them will suffice as long as the ~layfield may be painted and the alphanumecic information displayed in the proper places within the time constc~ints imposed by the time division multiplexed addressing of tne array RAM. Generally, it is good practice to orqanize the arrays so that array entries map to corresponding locations on the screen in a similar fashion to the organization shown in Figure 3.
One way of filling the arrays is to use a compacted table which describe~ the types of objects to be placed in the two dimensional array. Then starting at the upper left corner of each array, the array locations are filled from left to right.
After the arrays are filled, the computer periodically reads the player o~erated controls to get data regarding the desired movements of various motion objects. The computer 20 uses this information to move the various motion objects in the array by accessing the data record ~or each object and changing the x and y position data and the link data. Before this can be done however, each motion object to be moved must be checked against the position of its nei~hbors in the collision process of Figure 7. If the result of the collision detect process is that the move would not result in a collision, then the move is allowed. If the progcam determines that the object has moved to a new array location, then the entire record for the motion object to be moved is written into the new array location in the collision detect array. For example, if motion ~
object 12 of Figure 3 is to be moved from the box corresponding to array location 3,5 to the box corresponding to array location 4,6, then the entire record for motion object 12 will be -~9 -moved from array location 3,5 to aLray location 4,6 if the collision detect algorithm indicat~s this is permissible. In such a case, the links on the linked list will be changed so the link f~om motion object 11 points to motion obj~ct 13 and the link from motion object 14 points to motion object 12 in its new location.
This process is symbolized by the flow of Figu~e 7. The first step is to determin~ the desired movemen~s of the various motion objects. This ~rocess of reading the player controls is known and is symboli2~d by block 268. The other motion objects may be moved using the same collision algo~ithm. The direction of desired movement is game dependent and is not rele~ant to the invention. Next, a series of collision detect processes are performed dep~nding u~on the di~ection of movement of the object. The purpose of these collision detect processes is to compare the current position of the motion object with the positions of only, and at most, the nearest neiqhbors in the collision array in the direction of movement. If the direction o~ movement is along one of the erincipal two dimensional axes, then only the th~ee closest neighbors perpendicular to the axes in the nearest straight line oF neighbor locations perpendicular to the direction of movement are checked. For example, in Figure 3, if motion object 12 is to ~ be moved left along the negative x axis considering its present A~ position in box 3,5 as the origin, the collision detect algorithm would check only the contents of boxes 2,4 and 3,4 and 4,4 for a collision. However, if motion object 12 is moved to array loca-3~ tion 2,4, the contents of array locations (4,4), (3,4), (2,4~, (2,5) and (2,6) will be checked for a collision.
In Figure 7, this process is started by block 270 which is a test to determine if the motion object is moving left.
If it is, then the process of block 272 is performed to check for a left collision. If the result of the test of block 270 is no, then path 274 is taken -------------------~-----------------------. ~ ~
. . .

to the next direction collision test. In Fiyure 7, the next direction test is for a move right symbolized by block 276 but it could be any of the other directions since the sequence in which the directions a~e checked is not imeortant.
The process of checking for a left collision is ~ detailed in Figu~e 8. ~ small segment of the collision ; detect aeray is shown at 2B0 with the motion object to be moved shown at the current position and its nearest neighboes to the left shown as left 1, left 0 and left Z
~ositions. The x and y positions of the object in the left 0 location are xO and yO respectively. A similar notation is used for the left 1 and left 2 object ~ositions. The test for collision of the motion object to be moved with its neighbors is shown at 282.
Basically, the x and y positions of the cur~ent motion object, designated x and y, reseectively, are compared to the x and y positions of its neighbors by a series of subtractions. These tests may be ~erformed in any sequence. As shown, the first test is to take the absolute value of the x ~osition minus the xo position and compare it to 16. If the absolute value is less than 16, then there is a collision. If the condition is not met, the next test is perfoLmed where the absolute value of x - xl is compared to 16. If the condition is not met, then the next test is performed to determine the absolute ~alue of (x - xZ). If any of the x com~arison tests indicates a collision, then the y coordinate is checked. If the correseonding y coordinate check indicates a collision, then all further tests are abandoned since only one collision is enough to trigger collision processing.
-Block 28~ in Figure 7 symbolizes the testing erocess detailed above. Path 286 to block 288 .
,. .

4~!

symbolizes collision processing if any of the tests for collision indicates thece was same. The collision processing is game dependent. The process may include a determination of what collided with what and the result of the collision depends upon the rules of the game.
What those rules are is irrelevant to the invention.
If no collision is indicated, block 290 is performed to change the x and y eosition of the current motion object.
~fter the block 290 process is performed or after the process of block 288 is performed or if path 274 is taken, the process of block 276 is performed to perform the same type of test as was done for a move left for a move right. The tests of blocks 292 and 294 lS are performed if the movement involves up or down movement components. Basically, if a movement is not along the,x or the y axis, it will have comPonents along two of the ~ basic directions embodied by these axes. For example, if up is called north and left is called west, then a move northwest will have movement components both west and north. In such an example, the up and left tests will be performed and all the others will be skipped.
After all the appropriate tests have been performed, the test of block 29~ is performed. Here, the new position of t~e object moved is tested to determine if it is still in the correct array location corresponding to the box on the screen mapping to that array location. If the answer is no, then the process of block 298 is performed to move the data record of the object moved to the correct array location and to rearrange the linked list.
Although the invention has been described in terms of the preferred embodiment disclosed herein, ~.~

i those skilled in the art will app~eciate other ways of doing the ~unctions disclosed herein. All appaeatus and methods that achieve substalltially the same result using similar means operating in similar mannee are intended to be included within the scope of the claims appended hereto.

Claims (12)

THE EMBODIMENTS OF THE INVENTION IN WHICH AN EXCLUSIVE PROPERTY OR
PRIVILEGE IS CLAIMED ARE DEFINED AS FOLLOWS:
1. An apparatus for searching a linked list of database records describing objects on a playfield to determine which meet display criteria and for displaying at least portions of objects meeting said display criteria, comprising:
means including a cathode ray tube for displaying a window portion of said playfield and a plurality of selected objects located in said window on said cathode ray tube;
means coupled to said display means for storing graphic data defining the apperance of objects on said cathode ray tube;
means for storing a plurality of database records defining all the movable objects on said playfield, said database records organized in linked list format, each record defining the position and size of the associated object on said cathode ray tube by position and size data and containing a picture pointer portion including the address in said means for storing graphic data where the graphic data that defines the appearance of the associated object may be located, and each said data base record including a link pointer portion pointing to the address of the next database record on said linked list;
first means for determining which objects represented by records on said linked list are to be displayed in said window by sequentially retrieving selected records for objects having records linked by said linked list and, for each record so retrieved, comparing the portions of said record defining the position and size of said object on said playfield to the boundaries of said displayed window portion of said playfield and for selecting those records which meet said display criteria in that said records have position - Page 1 of Claims -and size information which indicates that the associated objects will be at least partially visible in said window portion;
second means coupled to said first means, for retrieving and storing said picture pointer portion of each said record selected by said first means as associated with an object which is to be at least partially displayed in said window portion, and for displaying, for each selected object record, at least some of the graphic data pointed to by said picture pointer portion of each selected record: and third means coupled to said first and second means for speeding the process of locating records associated with objects which have positions and sizes such that the objects will be at least partially visible within said window portion by continuing the process of sequentially retrieving position and size data for subsequent records on said linked list after a record is selected by said first means by accessing the database record pointed to by the link pointer of the database record associated with the object selected by said first means and comparing said position and size data of said subsequent record to said window position to determine if any said subsequent record meets said display criteria and for continuing to search said linked list sequentially in this manner by accessing the link pointer portion of any database record found to have a position on said playfield which will not be at least partially visible in said window portion and accessing the database record for the next record on said linked list as pointed to by said link pointer and retrieving and comparing said position and size data of said next record to the position of said window portion to determine if said display criteria is met until a database record is found for an object which meets said display criteria and for - Page 2 of Claims -causing said second means to retrieve, store and display the graphic data for any object corresponding to a database record so found by said third means when said second means finishes retrieving and storing said graphic data for the record selected by said first mean , and, if no record is found by said third means by the time said second means finishes retrieving and storing the graphic data for the object selected by said first means, for causing said first means to continue sequentially examining the records on said linked list for the next record on the linked list starting with the record on said linked list following the record last examined by said third means to locate the next record for an object which satisfies said display criteria.
2. The apparatus of claim 1 wherein said second means includes means for generating an END signal having either of two logic states indicating whether selected graphic data associated with database records selected by either said first or said third means as satisfying said display criteria has or has not been retrieved and stored for display for database record being processed, and wherein said third means includes means for receiving said END signal and, when said END signal indicates that said graphic data has been retrieved and stored for display for a particular object record being processed, for causing said first means to resume the sequential search of database records on said linked list.
3. The apparatus of claim 2 further comprising state machine means for controlling the operation of said first, second and third means by making transitions sequentially from one state to another state of a plurality of possible states, said transitions being controlled by the logic condition of a plurality of input signals - Page 3 of Claims -received from said first, second and third means, said control of said first, second and third means by generation of particular patterns of output signals for each said state which output signals control said first, second and third means.
4. The apparatus of claim 3 wherein said second means includes raster scanning circuitry, said second means for controlling said raster scanning circuitry to scan an electron beam across a plurality of scan lines on said cathode ray tube to create a video raster, and wherein said first and second means share vertical position and size comparison means for comparing the vertical position and size data for records retrieved by either said first or said third means to the vertical boundaries of said window portion and for generating a VERTICAL MATCH signal if any portion of an object associated with a record being processed is within the vertical bounds of said window portion, and wherein said first and third means share a horizontal position and size comparison means for comparing the horizontal position and size data for records retrieved by either said first or said third means to the horizontal boundaries of said window portion and for generating a HORIZONTAL
MATCH signal if any portion of an object associated with a record being processed is within the horizontal bounds of said window portion, and wherein said first and third means share means for receiving said VERTICAL MATCH and said HORIZONTAL MATCH signals and for generating a MATCH signal indicating that the object associated with the record being processed either by said first means or by said third means is associated with an object which will be at least partially visible in said window portion, and wherein a plurality of states of said state machine means are linked as a foreground cycle and a plurality of states of said state machine means are - Page 4 of Claims -linked as a background cycle, said state machine means for repeatedly making transitions between states of said foreground cycle to cause said first means to locate the first record on said linked list associated with an object which will be visible in said window portion and, upon location of the first said database record, for causing said second means to read picture pointer data from said database record and retrieve said graphic data pointed to by said picture pointer data and for transitioning to a predetermined state of said background cycle while said second means is retrieving and storing selected graphic data associated with said picture pointer data, and said state machine for repeatedly cycling through the states of said background cycle to control said third means to continue to search the records of said linked list for the next record which is associated with an object which will be at least partially visible in said window portion, and upon location of the next said record, for transitioning back to a predetermined state of said foreground cycle when said END signal indicates said second means has retrieved all necessary graphics data, said state machine also for repeatedly transitioning between all the states in said foreground cycle and background cycle as described above to continuously process records on said linked list as the positions of said window portion on said playfield moves and the positions of objects on said playfield move.
5. An apparatus for rapidly processing objects on a playfield, said objects being described by records on a linked list, each said record having position and size data and a pointer to the next record on said linked list and having a pointer to graphic data defining the appearance of said object, said graphic data being stored in a memory, said apparatus for deciding which objects or - Page 5 of Claims -portions of objects to display in a window portion of said playfield, comprising:
first means for finding the first object having position data indicating the object is to be displayed in said window portion of said playfield and for retrieving selected graphic data associated with said object using pointer to the associated graphic data in the corresponding data record; and second means for continuing to look for the next object on said linked list having position data indicating the object is to be displayed in said window portion while the graphic data for said first object located by said first means is being retrieved, and for causing said first means to retrieve the associated graphic data with any object selected by said second means after said first means has retrieved the graphic data associated with objects selected by said first means; and means for comparing said size data for objects located by either said first means or said second means to the position of said window portion to determine what portion of the graphic data associated with each said object selected by said first and second means to display.
6. The apparatus of claim 5 further comprising means for organizing the records on the list in the order of the relative positions of said objects on said playfield, and wherein said second means includes raster scan means for displaying said window portion of said playfield by scanning a plurality of scan lines that define a raster depicting a portion of said playfield.
7. The apparatus of claim 6 further comprising means for determining the current scan line being displayed by said raster scan means and for generating a starting link pointer pointing to - Page 6 of Claims -the first record on said linked list to examine for purposes of deciding whether said object will be displayed.
8. The apparatus of claim 7 wherein said means for generating said starting link pointer updates said starting link pointer every predetermined number of scan lines.
9. The apparatus of claim 8 wherein said raster is comprised of a plurality of scan lines where each scan line is comprised of a plurality of pixels, and where the objects have different sizes and types, and wherein each data record associated with each object contains size data, and wherein each object type has associated therewith type specific graphics data stored in said memory, said graphics data associated with each said object type comprising a variable size array of stamps and wherein each array of stamps is comprised of at least one stamp of graphics data and not more than a predetermined number of stamps of graphics data, each said stamp being a predetermined number of pixels wide and a predetermined number of scan lines tall, and wherein said pointer in each object database record for said associated graphics data stored in said memory points to the address in said graphics memory of the first stamp in the associated array of stamps.
10. The apparatus of claim 9 wherein said raster scan means sequentially scans said plurality of scan lines such that at any particular time there is a current scan line, and wherein said means for comparing size data includes means for calculating for objects, a portion of which is to be displayed on the current scan line, the correct stamp number offset from the first stamp in said graphics data array where the stamp number offset is the address for the stamp number in said graphics data array through which the current scan line passes, and for calculating which scan line in said stamp - Page 7 of Claims -coincides with said current scan line, and for generating the proper addresses in said graphics memory for retrieving the correct graphics data in said stamp for the current scan line and retrieving said graphics data and sending said graphics data to said raster scan means for display, and for calculating the correct address for the correct stamp and the correct graphics data for each new scan line and retrieving said correct graphics data and sending said correct graphics data to said raster scan means for display.
11. The apparatus of claim 10 further comprising means for organizing the data records for all objects on said playfield in a two dimensional collision detect array where each said object is treated as the same size for purposes of collision detection regardless of the actual object size reflected in the size data of the associated data record, and wherein each array location of said collision detect array maps to a corresponding area on said playfield, all said areas corresponding to a collision detect array location being of the same size, and for determining the existence of a collision between any object that is to be moved on said playfield with other objects on said playfield around the object to be moved by determining whether the distance between the locations of said objects as specified by the position data in the corresponding data records is less than a predetermined value, and, if no collision has occurred, for changing the position data in the data record associated with the object to be moved to move said object on said raster, and, if the position of the moved object has moved into another area on said playfield corresponding to a different collision detect array location than was originally associated with the object moved, for moving the data record for said moved object to the new location in said array corresponding - Page 8 of Claims -to the moved object's new playfield position and for re-arranging the links on said linked list to coxrespond to the new position of the object so moved.
12. An apparatus as defined in claim 11 wherein said position data of each data record includes x and y position data and wherein said means for organizing said linked list and doing collision detect processing compares the x and y position of the object to be moved with the x and y positions of objects, if any, having associated data records in the collision detect array locations corresponding to an area of a predetermined size on said playfield through which the path of the object to be moved passes to determine the presence of a collision, and wherein said means for organizing and performing collision detection ignores the positions of all the other objects on the playfield for purposes of collision detection for the movement of the object to be moved.

Barrigar & Oyen 700 - 130 Slater Street Ottawa, Ontario, Canada KlP 6E2 Agents for the Applicant - Page 9 of Claims -
CA000549404A 1986-10-15 1987-10-15 Lookahead pipeline for processing object records in a video system Expired - Lifetime CA1281422C (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US919,234 1986-10-15
US06/919,234 US4894774A (en) 1986-10-15 1986-10-15 Lookahead pipeline for processing object records in a video system

Publications (1)

Publication Number Publication Date
CA1281422C true CA1281422C (en) 1991-03-12

Family

ID=25441751

Family Applications (1)

Application Number Title Priority Date Filing Date
CA000549404A Expired - Lifetime CA1281422C (en) 1986-10-15 1987-10-15 Lookahead pipeline for processing object records in a video system

Country Status (4)

Country Link
US (1) US4894774A (en)
EP (1) EP0264099A3 (en)
JP (1) JPH0786936B2 (en)
CA (1) CA1281422C (en)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6441966A (en) * 1987-08-07 1989-02-14 Hitachi Ltd Method for displaying routing
US6008818A (en) * 1988-01-29 1999-12-28 Hitachi Ltd. Method and apparatus for producing animation image
JP2512052B2 (en) * 1988-01-29 1996-07-03 株式会社日立製作所 Moving image generation method and apparatus
GB8908612D0 (en) * 1989-04-17 1989-06-01 Quantel Ltd Video graphics system
US5150312A (en) * 1989-06-16 1992-09-22 International Business Machines Corporation Animation processor method and apparatus
US7373587B1 (en) * 1990-06-25 2008-05-13 Barstow David R Representing sub-events with physical exertion actions
US5261041A (en) * 1990-12-28 1993-11-09 Apple Computer, Inc. Computer controlled animation system based on definitional animated objects and methods of manipulating same
DE69217311T2 (en) * 1991-09-25 1997-07-24 Philips Electronics Nv Device and method for map display in vehicle navigation
US5515489A (en) * 1991-12-31 1996-05-07 Apple Computer, Inc. Collision detector utilizing collision contours
US6147696A (en) * 1993-06-24 2000-11-14 Nintendo Co. Ltd. Electronic entertainment and communication system
US6762733B2 (en) 1993-06-24 2004-07-13 Nintendo Co. Ltd. Electronic entertainment and communication system
US5959596A (en) 1993-06-24 1999-09-28 Nintendo Co., Ltd. Airline-based video game and communications system
TW266277B (en) * 1994-12-31 1995-12-21 Sega Of America Inc Videogame system and methods for enhanced processing and display of graphical character elements
US6117011A (en) * 1995-07-27 2000-09-12 Lvov; Denis Ernestovich Electronic game system, method of managing and regulating said system
US6146275A (en) * 1995-12-01 2000-11-14 Sega Enterprises, Ltd. Image processing apparatus
US5986675A (en) * 1996-05-24 1999-11-16 Microsoft Corporation System and method for animating an object in three-dimensional space using a two-dimensional input device
US6287201B1 (en) * 1999-03-12 2001-09-11 Midway Games West Arcade game with keypad input
US6884171B2 (en) * 2000-09-18 2005-04-26 Nintendo Co., Ltd. Video game distribution network
JP3927821B2 (en) * 2002-01-25 2007-06-13 株式会社バンダイナムコゲームス PROGRAM, INFORMATION STORAGE MEDIUM, AND GAME DEVICE
JP4668655B2 (en) * 2005-03-24 2011-04-13 株式会社バンダイナムコゲームス Program, information storage medium, and image generation system
DE102009018477A1 (en) * 2008-05-15 2009-11-19 Heidelberger Druckmaschinen Ag Video-monitored printing machine
KR101593344B1 (en) * 2011-11-10 2016-02-18 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 Speculative rendering using historical player data
WO2013084078A1 (en) 2011-12-09 2013-06-13 Empire Technology Development Llc Predictive caching of game content data
US10798394B2 (en) * 2018-06-27 2020-10-06 Avago Technologies International Sales Pte. Limited Low complexity affine merge mode for versatile video coding
US20220212100A1 (en) * 2021-01-04 2022-07-07 Microsoft Technology Licensing, Llc Systems and methods for streaming interactive applications

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4116444A (en) * 1976-07-16 1978-09-26 Atari, Inc. Method for generating a plurality of moving objects on a video display screen
US4119955A (en) * 1977-03-24 1978-10-10 Intel Corporation Circuit for display, such as video game display
US4169262A (en) * 1977-11-17 1979-09-25 Intel Corporation Video display circuit for games, or the like
US4471465A (en) * 1979-01-08 1984-09-11 Atari, Inc. Video display system with multicolor graphics selection
US4324401A (en) * 1979-01-15 1982-04-13 Atari, Inc. Method and system for generating moving objects on a video display screen
US4445114A (en) * 1979-01-15 1984-04-24 Atari, Inc. Apparatus for scrolling a video display
US4679038A (en) * 1983-07-18 1987-07-07 International Business Machines Corporation Band buffer display system
US4700181A (en) * 1983-09-30 1987-10-13 Computer Graphics Laboratories, Inc. Graphics display system
DE3473665D1 (en) * 1984-06-25 1988-09-29 Ibm Graphical display apparatus with pipelined processors
CA1257719A (en) * 1985-02-25 1989-07-18 Stephen Maine Graphics display system

Also Published As

Publication number Publication date
US4894774A (en) 1990-01-16
EP0264099A2 (en) 1988-04-20
JPH0786936B2 (en) 1995-09-20
JPS63113784A (en) 1988-05-18
EP0264099A3 (en) 1990-11-07

Similar Documents

Publication Publication Date Title
CA1281422C (en) Lookahead pipeline for processing object records in a video system
US4905168A (en) Object processing for video system using slips and linked list
US4905147A (en) Collision detection system for video system
US4930074A (en) Multiple stamp motion objects in a video game system
KR100222314B1 (en) Still picture display apparatus
US7119809B1 (en) Parallel architecture for graphics primitive decomposition
US4689616A (en) Method of producing and modifying a synthetic picture
US4697178A (en) Computer graphics system for real-time calculation and display of the perspective view of three-dimensional scenes
US5448690A (en) Image processing system enabling real-time output of image signal based on polygon image information
US6037946A (en) Image synthesis apparatus and image synthesis method
JP2001038047A (en) Three-dimensional puzzle game device and storage medium for three-dimensional puzzle game
JPH0535913B2 (en)
US5739826A (en) Polygon display based on x coordinates of edges on scan line
EP0990458A3 (en) Video game machine, method for switching viewpoint on gamescreen of video game, and computer-readable recording medium containing game-screen-viewpoint switching program
CN101154293A (en) Image processing method and image processing apparatus
US4834374A (en) Object image indicating apparatus
KR100190674B1 (en) Sorting circuit
EP0670560A2 (en) A method for sorting polygon data and a video game machine employing the same
JP2830765B2 (en) Polygon data sorting method and game device using the same
JPH046957B2 (en)
JP2898482B2 (en) Computer game equipment
JPH0454957B2 (en)
RU27856U1 (en) PHOTOGRAMMETER WORKPLACE
JP3130496B2 (en) A method for creating spatial information in a pseudo three-dimensional game space, a method for determining contact between a pseudo three-dimensional image and a movable model, a contact determination device, and a readable recording medium storing a program for performing such contact determination
JPH0670742B2 (en) Standard display device

Legal Events

Date Code Title Description
MKLA Lapsed
MKLA Lapsed

Effective date: 19940913