WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Object processing for video system using slips and linked list    
United States Patent4905168   
Link to this pagehttp://www.wikipatents.com/4905168.html
Inventor(s)McCarthy; Patrick J. (San Jose, CA); Logg; George E. (Los Altos, CA)
AbstractThere 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. Slips point to the first objects on the list for the current scan line speed up the search process.



 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 4905168
Object processing for video system using slips and linked list - US Patent 4905168 Drawing
Object processing for video system using slips and linked list
Inventor     McCarthy; Patrick J. (San Jose, CA); Logg; George E. (Los Altos, CA)
Owner/Assignee     Atari Games Corporation (Milpitas, CA)
Patent assignment
All assignments
Publication Date     February 27, 1990
Application Number     06/919,236
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     October 15, 1986
US Classification     345/474 345/473 345/530 345/564
Int'l Classification     G06F 015/72
Examiner     Smith; Jerry
Assistant Examiner     Kibby; Steven G.
Attorney/Law Firm     Skjerven, Morrill, MacPherson, Franklin & Friel
Address
Parent Case    
Priority Data    
USPTO Field of Search     340/724 340/725 340/747 340/750 340/799 364/410 364/521
Patent Tags     object processing video slips linked list
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
4679038
Bantz
345/553
Jul,1987

[0 after 0 votes]
4660029
Houda
345/553
Apr,1987

[0 after 0 votes]
4471465
Mayer
345/600
Sep,1984

[0 after 0 votes]
4445114
Stubben
345/28
Apr,1984

[0 after 0 votes]
4324401
Stubben
463/33
Apr,1982

[0 after 0 votes]
4169262
Schwartz
345/27
Sep,1979

[0 after 0 votes]
4119955
Nichols, III
463/31
Oct,1978

[0 after 0 votes]
4116444
Mayer
463/33
Sep,1978

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


We claim:

1. An apparatus for rapidly processing data records representing moving and non-moving objects on a playfield to determine which objects to display on a portion of the playfield being displayed on a video display comprising:

means for organizing all of the data records for moving objects to be displayed as a single linked list in memory, said single linked list organized by the locations where the objects would be displayed if the whole playfield were to be displayed;

means for processing only that portion of the single linked list for objects positioned near said portion of said playfield to be displayed;

wherein the data records for said objects include positional information expressed as x and y coordinate offsets from a reference point on the playfield.

2. An apparatus for rapidly processing data records representing moving and non-moving objects on a playfield to determine which objects to display on a portion of the playfield being displayed on a video display comprising:

means for organizing all of the data records for moving objects to be displayed as a single linked list in memory, said single linked list organized by the locations where the objects would be displayed if the whole playfield were to be displayed;

means for processing only that portion of the single linked list for objects positioned near said portion of said playfield to be displayed;

wherein said means for processing includes means for generating a slip indicating where on said linked list to begin processing to determine which moving objects are to be displayed said means for processing also for using said slip to control where processing on said linked list should begin so as to process only those data records for objects which are positioned on said playfield near said portion of said playfield to be displayed.

3. The apparatus of claim 2 wherein said video display includes means to scan a plurality of raster scan lines comprised of a plurality of pixels with raster addresses expressed in terms of a position along a y axis which is perpendicular to the direction of scanning of said raster scan lines, the position of the scanning at any particular time expressed as a current raster address, and wherein positions of objects on said playfield are expressed in terms of positions along said y axis and positions along an orthogonal x axis which is parallel to the direction of scanning of said raster scan lines, and wherein said playfield includes a playfield reference point and wherein said means for generating a slip includes means to track at least the current raster address as a y offset of the current raster scanning position from a reference point on the playfield and wherein said slip is generated from data including the y offset of the current raster scanning position.

4. The apparatus of claim 3 wherein said means for organizing further comprises means for adjusting the position data of moving objects which have been moved relative to said playfield reference point such that the x and y coordinate offsets in the data records of those objects which have been moved are altered relative to said playfield reference point and for reorganizing said linked list such that said moved objects are on said list in the proper position corresponding to the new position of each object on said playfield.

5. The apparatus of claim 4 wherein said means for organizing further comprises means for storing both moving and non-moving object data records in said memory in an ordered, two-dimensional array where each array location maps to a specific area on the playfield.

6. The apparatus of claim 5 wherein said two-dimensional array is a collision detect array and further comprising means for collision detection between an object to be moved and other moving and non-moving objects in the vicinity of the object being moved on said display by checking the position data of the data record corresponding to the object to be moved against the position data of objects having data records stored in adjacent locations of said collision detect array, said adjacent locations of said collision detect array being limited to those adjacent positions of said collision detect array which lie in the general direction of movement of the object to be moved.

7. The apparatus of claim 6 wherein said means for collision detection checks for collisions with the objects, if any, of the three next adjacent collision detect array locations in the direction of movement if the direction of movement is along either the x axis or the y axis on said display or in the five nearest array locations forming a right angle blocking the movement if the direction of movement is not on the x or y axes.

8. An apparatus for determining which of a plurality of motion objects positioned on a playfield to display on a video display in a window portion of said playfield, said window portion defined by a plurality of sequentially scanned raster scan lines including a current raster scan line defined as the raster scan line being processed at any particular moment:

first means for determining the current positions of said motion objects on said playfield and for storing in memory a data record for each motion object said data record for each said motion object including position information expressed in playfield relative terms as an offset from a known reference position on said playfield, said data records organized as a single linked list organized in the order the motion objects would be displayed if the entire playfield including all the motion objects thereon were to be displayed;

second means for determining the position of said window portion of said playfield on said video display by determining in playfield relative terms as an offset between a point in said window and said playfield reference point;

third means coupled to said second means for generating a slip from the position information of said window on said playfield, said slip defined as a pointer to the address in said memory of the data record which corresponds to the first motion object on said linked list through which said current raster scan line would pass if said current rater scan line extended completely across said playfield;

fourth means coupled to said first, second and third means for using said slip to begin processing data records for motion objects on said linked list starting at the motion object data record identified by said slip to determine which said motion objects to display.

9. The apparatus of claim 8 wherein at the start of each raster scan line said fourth means uses said slip as a link address pointing to a data record on said linked list to begin processing to determine which of said motion objects having records on said linked list are to be displayed.

10. The apparatus of claim 9 further comprising a counter and a scanning circuit for generating said plurality of raster scan lines which define said window portion, each said raster scan line having a number, said scanning circuit also generating and end-of-line signal signifying when each new raster scan line is to be scanned, said counter being coupled to receive said end-of-line signal from said scanning circuit, said counter also being coupled to said second means to receive data defining the current position of said window portion in terms of the scan line number of the first scan line in said window portion said counter counting said end-of-line signals starting from the scan line number of said first scan line in said window portion to generate a current scan line number, thereby defining the position of the current scan line in playfield relative terms from the scan line number which locates the current window position, and wherein said third means receives said current scan line number and selects said slip address pointer using said current scan line number at the end of each raster scan line.

11. The apparatus of claim 10 further comprising means in said first means for reading player operated controls and causing corresponding movement on said display of a plurality of associated player controlled, movable characters, said characters being motion objects whose position and appearance is defined by data records by adjusting position data in the data records of said movable characters and for, from time to time, determining the positions of said player controlled characters and for adjusting the position of said window on said playfield so as to keep all characters visible in said window at all times.

12. The apparatus of claim 11 wherein said first means further comprises means for performing collision detection processing between motion objects being moved and other motion objects or other objects on said playfield in a neighboring area of said window, including means for collision detection as to objects located only in predetermined adjacent areas relative to the movement path.

13. An apparatus for displaying selected ones of a plurality of moving objects located in a window portion on a playfield, said window portion comprising a plurality of raster scan line which are sequentially scanned including a current raster scan line, each said raster scan line having a scan line number and comprised of a plurality of sequentially scanned pixels including a current pixel defined as the pixel being scanned at any particular moment, comprising:

means for reading user inputs and other data regarding the movements of said moving objects and for determining the position on the playfield of said moving objects in playfield relative terms with respect to a reference point on said playfield;

means for storing data records regarding said moving objects including their playfield relative positions in a random access memory and for linking the data records of said moving objects as a linked list ordered approximately by the order in which said moving objects would be displayed if all the moving objects on the playfield were to be displayed in raster scan order instead of only the moving objects located within the boundaries of the current window portion;

means for generating a playfield relative slip pointer from the scan line number of the current raster scan line indicating the address of the data record of said linked list for a predetermined moving object;

means for comparing said playfield relative position information of said moving objects on said linked list starting with the moving object indicated by said slip pointer to the current raster scan line number and the position of the window portion to determine which moving objects on said linked list are to be displayed; and

means for displaying the moving objects that are visible in said window portion.

14. A method of determining rapidly which of a plurality of moving objects on a playfield are to be displayed in a movable window displaying a portion of said playfield, said window comprised of a plurality of sequentially scanned raster scan lines including a current raster scan line, and for displaying said moving objects comprising the steps of:

organizing data records recording positions of each moving object on said playfield as a linked list ordered by the sequence in which all the moving objects would be written on a video display if the entire playfield were displayed in raster scan fashion instead of only the portion of the playfield visible in said window portion;

storing said linked list in memory;

generating a slip pointer address based upon said current scan line number, said slip pointer address pointing to the address in said memory of the data record on said linked list corresponding to a moving object positioned on said playfield near or within said window where processing should start; and

processing the data records on said linked list starting with the data record pointed to by said slip pointer address to determine which of said moving objects are at least partially visible in said window;

displaying those objects on said linked list which have position data indicating that said objects are at least partially visible within said window.

15. The method of claim 14 wherein said raster scan lines comprise a frame and further comprising the steps of updating said slip pointer address after a predetermined number of scan lines are displayed and continuously updating said slip pointer address throughout each frame of scan lines and updating the current position of said window at predetermined times and updating the slip pointer address to reflect the new window position at predetermined times.

16. The method of claim 15 further comprising the steps of organizing all data records of objects on said playfield into a two dimensional array where each array location maps to a particular area on said playfield, and wherein each data record corresponding to a moving object is stored in an array location corresponding to the playfield relative position of said object where each data record includes position offset data indicating the position of the associated moving object on said playfield relative to a reference point on said playfield and further includes a link field containing a pointer to the address of the data record for the next object on said linked list, and further comprising the steps of reading user controlled inputs regarding the desired movements of said moving objects and adjusting the data records for the objects to be moved by changing said position offset data for each moving object so moved and, if required, reordering said linked list to reflect the new positions of the moving objects so moved by changing the contents of said link field in the data records for objects which have moved and changing the positions in said array of the data records corresponding to moving objects which have been moved to correspond to their new positions on said playfield.

17. The method of claim 16 wherein said playfield also has non-moving objects positioned thereon and further comprising the steps of organizing said non-moving object data records for non-moving objects on said playfield in said two-dimensional array such that the data records for said non-moving objects are stored in the appropriate array locations corresponding to the positions of said non-moving objects on said playfield and comparing the position data for each moving object being moved against the position data of other moving and non-moving objects, if any, in a predetermined pattern of array locations in the path of desired movement to determine if a collision has occurred.

18. The method of claim 17 wherein the steps of comparing the position data further comprises the steps of comparing the position data of the moving object sequentially to the position data of the objects having data records stored in said predetermined pattern of array locations and stopping the comparisons upon locating the first data record indicating a collision has occured where a collision has occurred if the positions of two objects are within a predetermined distance of each other.
 Description Submit all comments and votes
 


BACKGROUND OF THE INVENTION

The invention pertains to the field of processing of data records for objects to be displayed on a video display. More particularly, the invention pertains to the field of video game processing of a plurality of objects on a playfield to determine which objects are visible on the portion of the playfield being displayed and which objects have collided with other objects.

As video games have become more complex and sophisticated they have progressed to multiple player games with multiple characters in conflict with multiple other entities with the battle taking place on ever more complex playfields. Because standard video display circuitry is used to display all this action, and because there are a large number of moving and non-moving objects on such playfields there have developed severe limits on the complexity of the game than can be depicted. This is because the amount of time in which to decide which objects are to be displayed on a particular scan line and which objects have collided with other objects is limited by the amount of time the video processing circuitry takes to scan the raster 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. Ultimately, this limits the number of objects that a system can handle and thereby limits the number of objects and players that the system can successfully cope with.

Accordingly, a need has arisen for a video game processing system that can rapidly handle large numbers 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. A 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 written 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 character 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 a large number of non-moving objects within the timing constraints imposed by the video image producing circuitry. In the preferred embodiment, the video game system comprises a central CPU which runs the main game program 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 non-moving 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 non-moving obstacles. The CPU continuously evaluates the positions of the moving objects and stores data records describing both the moving and the non-moving 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 RAM. Each location in the array maps to a certain area on the playfield. Contiguous array locations map to contiguous areas in the playfield. The non-moving 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 window. The dummy motion object records only contain the x and y locations of the non-moving objects and may or may not contain a dummy picture pointer. The actual picture pointer for the non-moving object is stored in another array in the array RAM which is accessed during a time slot devoted to painting the playfield picture (hereafter called the playfield picture array). The picture pointer is the address in read only memory where the actual graphic information defining the appearance of the object is stored. In the preferred embodiment, each array location for the motion object and dummy motion object data records (hereafter called the collision detect array) maps to a box on the playfield that is 16 pixels wide and 16 lines tall.

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 the invention that increases the speed of display processing which determines which of the motion objects will be visible in the window. The ordering of the list is such that the objects appear 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 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 array RAM. During this time slot the CPU does any of the following things: it builds the array databases (there is a collision detect array, a playfield picture array, an alphanumeric array and a slip table or array), it moves objects per user commands by changing the position offset field in the record to reflect the object's new position relative to a playfield reference point (usually the upper left corner of the playfield), it updates the array 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 processing. The term "slip" as used herein, means a starting link pointer or link to the correct object data record on the linked list where processing for any particular raster scan line is to start.

Another time slot is devoted to access of non-moving objects for purposes of displaying the walls and or other non-moving objects which form part of the 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 by 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 whenever 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 slip data is accessed from the slip table in the array RAM and latched into a link register at the beginning of the scan of each new raster 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 possibility that the object will appear on the current scan line. If a y hit is found, the pointer to the graphic data for the motion object is retrieved and the x position of the object is examined to determine if there is an x hit, i.e., the object is located along the visible portion 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 point 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 proper point 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 non-moving object on the playfield. The CPU performs this process in a rapid manner by comparing the position of the object 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 the path of movement. To do this the CPU uses a two dimensional collision detect array of data records describing the relative positions of the moving and non-moving 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 compared 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 the 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 result is not smaller than the constant, the next record for an object in the pattern is retrieved and the position comparison process continues.

Once a collision has occurred, 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 or lose health, power etc. If the collision was between a character and a wall on the playfield, the proper course of action 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.

According 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. Each 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 horizontal size, the horizontal and vertical positions and the link to the next motion object. During each scan line, a chain of motion object data records are examined by logic that 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 horizontal 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 scan line. Each array of stamps is numbered with the stamps in row 1 numbered 1, 2, 3 . . . up to 8. The first stamp in the second row will then be numbered as the next number in the sequence following the number for the last stamp in row 1. A counter then counts as each stamp is processed to provide the relative address of succeeding stamps in the current row. The motion object picture field also contains a field which is the actual address in the graphics ROM of the first stamp in the array. This address is added to the offset from the first stamp number of the current stamp number.

The comparison 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 described circuitry is used as an address to access a ROM where the graphic data in the form of a pixel pattern for that type of motion object is stored. The correct pixel pattern is then latched into a shift register and shifted bit by bit into the line buffer being loaded in preparation for scanning the next line. All the foregoing process is done one line time ahead of the time of actual scanning of the line and is stored in one of a pair of "ping pong" line buffers in waiting for the actual scanning process. The other ping pong buffer stores the pixel pattern that is actually being scanned at any particular moment.

According to another aspect of the teaching of the invention there is provided a lookahead feature for processing the linked list of motion objects to determine which will be visible in the current window. In the preferred embodiment of the invention, a synchronous state machine in the form of a ROM coupled 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 array 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 input signals to the state machine also indicate several 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 foreground 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 state 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 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 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 purpose 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 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 object with both an x and a y hit (in some cases, one foreground state is also involved in the lookahead function), processing goes into a hold mode where the background states continue to cycle in looking at the horizontal position of the motion object which was found, but no new motion objects are processed. This holding continues until the foreground states 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 pointer is retrieved for the object so located in the background states. This pointer is used to access the graphic data from the graphics ROM for the 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 data 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 DRAWINGS

FIGS. 1A and 1B are a block diagram of the circuitry implementing the teachings of the invention.

FIG. 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.

FIG. 3 is an illustration of the collision detect array in the array RAM.

FIGS. 4A and 4B are block diagrams of the vertical and horizontal match circuits and the stamp offset calculation circuits.

FIG. 5 is a state diagram of the foreground cycle.

FIG. 6 is a state diagram of the background cycle.

FIG. 7 is a flow diagram of the collision detect algorithm.

FIG. 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

Referring to FIGS. 1A and 1B, 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 FIGS. 1A and 1B along the cut line and assemble them as one figure. These two figures will be hereafter referred to as FIG. 1. Such a system has utility in a video game or other application where large numbers of moving objects must be displayed on a screen and/or where collisions among them during the movements must be detected.

A computer 20 runs a main program 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 sets 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, polling 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 assault collides with a monster are not critical to the invention. The teachings of the invention are broadly applicable across the video game market and, in fact, may be useful in other fields such as processing radar or sonar images with large numbers of moving targets where collision or proximity must be detected.

In the preferred embodiment, the system of FIG. 1 is used in a video game involving four main characters which move and fight against multiple moving monsters. Some of the characters shoot rays 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 the records in the database describes certain attributes of the object. Among these attributes for each object are the horizontal and vertical position on the playfield.

In the preferred embodiment, the playfield has multiple levels each of which are different. The information as to 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 32. 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 array location that corresponds to the position of the object on the playfield. This dummy entry has the x position and y position data of the object and may or may not have a picture pointer. The presence or absence of the picture pointer is irrelevant to the invention. The purpose of this dummy entry is to complete the collision detect array with all the moving and nonmoving objects on the playfield so that collision detect processing can be done from one array. The nonmoving objects in the collision detect array 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 point which can be anywhere but which is usually its upper left corner. The window also has a reference point, and it also can be 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 are 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. A major function of the system of FIG. 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 database when the position of the objects change.