True object generation system and method for a video display generator
This is a continuation of application Ser. No. 551,814, filed Nov. 15, 1983, now abandoned. 
    
    
     BACKGROUND OF THE INVENTION 
     The present invention relates, in general, to the field of true object generation in a video display generator. More particularly, the present invention relates to a true object generation system and method of especial utility in the generation of true objects in conjunction with a microprocessor (MPU) based video display generator. 
     True objects are video display generator hardware-intensive objects which are designed to move around on a video display screen and to run into, or collide with, other objects. Such true objects comprise a small video pattern which is stored in a particular location in the memory of a video display generator. These true objects can be positioned on the screen independently of where they are stored in memory merely by defining its vertical and horizontal position. By the use of true objects then, a video display screen may be easily animated and the object stored in the particular location in memory may be made to move across the screen merely by changing its start address. 
     In general, in a video display generator there is a vertical address comparator and a horizontal address comparator. During a vertical line count, one comparator looks at the actual line count as the Raster moves down the video display screen. A comparison is made to the position of each object and a signal is generated that describes a vertical &#34;go&#34; signal as a time for a true object to start. An identical operation happens horizontally where the horizontal position and horizontal picture element (pel) count across the screen generates a signal for a horizontal &#34;go&#34;. These two signals are ANDed together to provide a signal to begin generation of a true object. 
     In the past, true objects have been generated by a technique known as bit mapping. Utilizing this method of encoding, an object size is limited by the amount of hardware, or registers, in which this data may be stored for retrieval. In an integrated video display generator, the number and size of these registers is directly related to die size and, hence, system cost. Moreover, the time necessary to fill these registers from the video display generator DRAM and, therefore, system operating speed is also directly related to the amount of memory which must be read into these registers. Therefore, it is highly desirable to limit the size of the registers and the time necessary to fill them. 
     Run length coding has previously been described as a means for generating a background display in a video generator. A representative system is described in U.S. Pat. No. 4,233,601 issued to Hankins et al on Nov. 11, 1980 for a display system. This patent describes a means of generating a Raster Display using run length encoded data. However, its application is to the entire Raster Display and not to the generation of true object data. 
     SUMMARY OF THE INVENTION 
     It is therefore an object of the present invention to provide an improved system and method for generation of true objects in a video display generator. 
     It is further an object of the present invention to provide an improved system and method for generation of true objects by means of run length coding which minimizes on-chip hardware storage area and, hence, access time for a given object size. 
     It is still further an object of the present invention to provide an improved system and method for generation of true objects which provides for either bit mapped or run length code structures. 
     The foregoing and other objects are achieved in the present invention wherein there is provided a true object generation system and method for true object generation in a video display generator which comprises means for storage of data representative of an object run length and pel value. Means are also provided responsive to the object run length data for holding the pel value at the storage means output for a time proportional to the object run length. 
     In a specific application, a true object generation system and method for true object generation in a video display generator comprises a shift register for receiving data representative of an object run length and pel value. Means are provided which are responsive to the object run length for establishing a count value proportional thereto. Means are further provided which are responsive to the count value establishing means for decrementing from the count value. The decrementing means applies a hold signal to the shift register during a countdown from the hold value and a shift signal to the shift register when the countdown is complete. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The above-mentioned and other features and objects of the invention and the manner of attaining them will become more apparent and the invention itself will be best understood by reference to the following description of an embodiment of the invention taken in conjunction with the accompanying drawings, wherein: 
     FIG. 1 is a simplified logic flow diagram of a true object generation system in accordance with the present invention which allows for both bit mapped and run length coding of true object generation in a video display generator; 
     FIG. 2A illustrates a run length code structure for use with the embodiment of FIG. 1 and the generation of true objects by run length coding; and 
     FIG. 2B illustrates a bit mapped code structure for use with the embodiment of FIG. 1 and the generation of true objects by bit mapped coding. 
    
    
     DESCRIPTION OF A PREFERRED EMBODIMENT 
     The run length coding system and method of the present invention is intended for use in a video display generator or microprocessor controlled video display generator system having an associated memory array. For purposes of the ensuing description, the terms &#34;pixel&#34; and &#34;pel&#34; may both mean picture element. Traditionally, pixel refers to the smallest physical picture element, which is the resolution of the cathode ray tube (CRT) being used, and &#34;pel&#34; refers to the smallest logical picture element, which is set by the rest of the video system. In this description, the term &#34;pixel&#34; will mean the element set by the horizontal and vertical screen resolutions, and &#34;pel&#34; will be used to refer to all other picture elements. Further, the video display generator with which the run length coding system and method of the present invention may be utilized, uses a block of DRAM as a &#34;screen memory&#34; to contain the display information. 
     True objects are video display generator hardware intensive objects that are designed to move around on a display screen and to interact with other objects. Identical run lenth coding systems to that hereinafter described are utilized with each independent object which is to be displayed on a video screen. Thus, identical sets of run length coding systems in accordance with the present invention will allow for simultaneous independent operations of the true objects. However, since objects may be reused in real time, more objects may appear on a screen than the number of run length coding systems supplied although they may not appear in the same Raster line. 
     Referring now to FIG. 1, a run length coding system 10 in accordance with the present invention is shown. Data input to run length coding system 10 from a video display generator DRAM is input on high nibble MSB line 36, low nibble MSB line 38, high nibble LSB line 40 and low nibble LSB line 42 to the data input terminals, SR, of MSB shift register 16, MSB shift register 18, LSB shift register 20 and LSB shift register 22 respectively. MSB shift registers 16, 18 and LSB shift registers 20, 22 are connected in parallel, as shown, having their clear input, CLR, connected to a source of V DD  ; their G 1 , G 2  and S 1  inputs tied to circuit ground; their clocking inputs connected to clock line 48, and their S 0  inputs tied to shift/hold line 50. Output from MSB shift registers 16, 18 and LSB shift registers 20, 22 appearing on their respective Q G  outputs appear on run length data lines 76, 78 and pel value data lines 80, 82 respectively for input to multiplexer 24. Output from multiplexer 24 appears on pel data lines 84 and 86 for subsequent input to latch 26. The output of latch 26 in response to inputs on pel data lines 84 and 86 appear on pel data output lines 88, 90 respectively. As shown, multiplexer 24 has an active low input terminal, G, connected to circuit ground and a select input, S, connected to the output of NOR gate 34 as will be more fully described hereinbelow. Latch 26 has its clocking input connected to buffered pel clock line 98 and its reset input, R, connected to object go line 54. Output from latch 26 appearing on pel data output lines 88, 90 are connected as inputs to NOR gate 112 having as its output data available line 74. Thus, non-zero data appearing on either or both of pel data output lines 88, 90 will cause an indication on data available line 74. 
     Output from MSB shift register 16, 18 appearing on run length data lines 76, 78 respectively, are also supplied as input to multiplexer 14 as shown, having an input, 1G, coupled to circuit ground. Output from multiplexer 14 on Y 0  line 64 is supplied as one input to quad input NAND gate 32. Outputs from multiplexer 14 appearing on Y 1  line 66, Y 2  line 68, Y 3  line 70 are supplied as input to shift register 12, having its inputs SI, H, F, D, B and A tied to a source of V DD . The clocking input of shift register 12 is connected to clock line 48; its clear input, CLR, connected to a source of V DD  ; and its clock inhibit input CK INH connected to circuit ground as shown. 
     Output from shift register 12 appearing on Q H  line 62 is supplied as another input to quad input NAND gate 32. An additional input to shift register 12 appears on shift/load line 60 at the Q output of flip flop 28. 
     Quad input NAND gate 32 has as additional inputs buffered delay fill object line 52 and run length/bit mapped control line 58. Output from quad input NAND gate 32 appears on shift/hold line 50 for input to MSB shift register 16, 18; LSB shift registers 20, 22; and the data input, D, of flip flop 28, having its reset input, R, tied to a source of V DD  and its set input, S, connected to object go line 54. Clocking input to flip flop 28 appearing on clock data line 56 is also connected to one input of AND gate 30 having its other input connected to load clock line 46 and its output appearing on clock line 48. 
     Additional inputs to run length coding system 10 are input to 8:1 multiplexer 100 on run length/bit mapped control line 58, zoom factor lines 92, 94 and buffered pel clock input 96. Data inputs to 8:1 multiplexer 100 are supplied on Q A  line 104, Q B  line 106, Q C  line 108 and Q D  line 110 at the output of counter 102. Counter 102 has its clocking input connected to buffered pel clock line 98 and its U/D input connected to a source of V DD . T, P, A, B, C and D inputs to counter 102 are connected to circuit ground as shown. An additional input, L, of counter 102 is connected to object go line 54 which is also coupled to the S input of 8:1 multiplexer 100 through inverter 44 as shown. 
     Output from 8:1 multiplexer 100 appearing on Y output 72 is supplied as one input to NOR gate 34 having its other input connected to run length/bit mapped control line 58. Output from NOR gate 34 is supplied to the set, S, input of multiplexer 24. 
     In operation, a signal appearing on clock line 48 at the output of AND gate 30 allows data to be shifted into MSB shift register 16, 18 and LSB shift registers 20, 22. By means of a signal appearing on shift/hold line 50, data may be shifted into, or held within, MSB shift register 16, 18 and LSB shift registers 20, 22 as appropriate. In response to an input to run length coding system 10, on run length/bit mapped control line 58, either run length or bit mapped true objects may be provided. In the bit mapped mode of operation, data appearing on run length data lines 76, 78 and pel value data lines 80, 82 are applied directly to their respective inputs to multiplexer 24 for subsequent input to latch 26 and output therefrom on pel data output lines 88, 90. In the run length coding mode, output from LSB shift registers 20, 22 appearing on pel value data lines 80, 82 are input to multiplexer 24 in the manner above described with respect to the bit mapped mode. In the run length mode of operation, however, output from MSB shift register 16, 18 appearing on run length data lines 76, 78 are utilized as inputs to multiplexer 14 having its outputs applied to quad input NAND gate 32 and shift register 12 as above described. Depending on the inputs to multiplexer 14, an output therefrom provides a decremented countdown from its input count value for applying a hold signal to MSB shift register 16, 18 and LSB shift registers 20, 22 by means of an output of quad input NAND gate appearing on shift/hold line 50. A signal appearing on Y 0  line 64 applied directly to quad input NAND gate 32 corresponds to a run length of one while signals appearing on Y 1  line 66, Y 2  line 68 and Y 3  line 70 correspond to run lengths of 3, 5 and 7 respectively. Thus, an active low signal appearing on shift/hold line 50 enables data to be held in MSB shift register 16, 18 and LSB shift registers 20, 22 for the run length determined by the signals appearing on run length data line 76 and 78. This in turn, holds the pel value appearing on pel value data lines 80, 82 at the output of LSB shift registers 20, 22. 
     Input to run length coding system 10 appearing on buffered delay fill object line 52 signifies that it is time to fill MSB shift registers 16, 18 and LSB shift registers 20, 22 during a horizontal scan of a video display. This signal is delayed due to the fact that the video display generator must compute the address and execute the fetch data from the system DRAM such that the run length coding system 10 may receive data input at the proper time. 
     A clocking signal appearing on buffered pel clock line 98 is supplied as clocking input to counter 102 and latch 26. Outputs from counter 102 appearing on Q A  line 104, Q B  line 106, Q C  line 108 and Q D  line 110 correspond to division factors of 2, 4, 8 and 16 respectively for input to 8:1 multiplexer 100. Depending on signals appearing on zoom factor lines 92, 94 the size of a true object generated by run length coding system 10 may be altered in either the run length or bit mapped mode of operation. 
     The output of 8:1 multiplexer 100 appearing on Y output line 72 in conjunction with the signal appearing on run length/bit mapped control line 58 input to NOR gate 34 supply a pel select signal to multiplexer 24. In the bit mapped mode of operation, either the 1B/2B or 1A/2A inputs are selected whereas in the run length mode of operation, the 1A/2A inputs are utilized as will be more fully described hereinafter. Flip flop 28 is utilized to provide a delay of one to enable a reload of MSB shift register 16, 18 and LSB shift registers 20, 22. A &#34;go&#34; signal for generation of a true object is supplied to run length coding system 10 by means of a signal appearing on object go line 54 input to flip-flop 28 and counter 102. 
     Referring additionally now to FIGS. 2A and 2B, the run length and bit mapped code structure for use with run length coding system 10 are shown. By utilizing run length coding system 10, every true object may be described in one of two ways: either bit mapped encoded or run length encoded. Bit mapped encoding may utilize 14 individually colored pels per video line, whereas run length encoding may utilize seven colors. However, each run length color may be 1, 3, 5, or 7 pels long depending on the values appearing on run length data line 76, 78 as above described. Run length coding provides more flexibility in sizes whereas bit mapped coding provides more flexibility in colors. A choice between run length and bit mapped coding may be made separately for each object in a video display generator wherein each object utilizes its own run length coding system 10. This selection may be made separately for each object utilizing a bit in the object&#39;s X coordinate register and depending on the user selection indicated on run length/bit mapped control line 58. 
     Each four byte packet describes one video line. The more significant nibble of the first byte of each packet contains an active low last line bit, LL, and a three bit color mapping RAM (CMR) offset. The least significant nibble of the first byte of each packet provides the beginning of the data for the video line. If the last line bit, LL, is clear, the rest of the line is ignored. If this bit is set, the three bit CMR offset is used for the most significant bits of the CMR address. As can be seen in a comparison of the code structures of FIGS. 2A and 2B, the meaning of the following three and one-half bytes is different for the run length and bit mapped code structure but they both use two bits for each color selection therefore rendering four choices. In a video display generator incorporating a run length coding system 10, a color choice of .0..0. may make the pels transparent so that whatever the object passes over can show through. Since transparent pels are not deemed to collide with any other object, the user can define functional as well as visible shapes by putting transparent pels around a small visual object. The remaining three color choices (.0.1, .0..0., 11) will utilize the three-bit CMR offset in the video line data&#39;s first nibble to establish the pel&#39;s CMR address. Each line can have three visible colors, and, because each line has its own CMR offset, each object can have 24 colors. The eight CMR addresses ending in .0..0. are replaced by a transparency, so they are not available for true objects. 
     In run length encoding of a true object, each nibble describes a line segment. The most significant two bits select a line length: a code of .0..0. means one pel, .0.1 means three pels, 1.0. means five pels, and 11 means seven pels. The least significant two bits of the nibble select the color as above described. 
     A video line&#39;s four byte packet is run length encoded as shown in FIG. 2A. In bit mapped encoding the three and one-half bytes of video data following the last line bit and CMR offset are treated as 14 two-bit colors. Each two-bit color describes one pel, so a bit plane object is 14 pels wide. 
     A bit mapped encoded video line packet is arranged as shown in FIG. 2B. 
     What has been provided therefore is an improved system and method for generation of true objects in a video display generator. The true object generation system and method of the present invention minimizes on chip hardware storage area and, hence, access time for a given object size. Moreover, the improved system and method for generation of true objects herein provided provides for either run length or bit mapped coding of true objects. 
     While there have been described above the principles of the invention in conjunction with specific apparatus, it is to be clearly understood that this description is made only by way of example and not as a limitation to the scope of the invention.