Display of a sprite in a computer system.
Abstract
Apparatus is provided for adjusting the color of the sprite in display systems, so that the sprite is always distinctively visible irrespective of the underlying displayed data. A palette DAC 322 of a display system is provided with sprite control logic, which determines the color of a sprite to be overlaid on an image displayed on a video display unit 236 of a display system by inverting only the most significant bit (MSB) of each of the red, green and blue pixel data components of the underlying image. In a preferred embodiment, the sprite control logic circuit comprises first, second and third multiplexors (MUXes) 420, 422, 424 each having a first input connected to receive the MSB of the red, green and blue pixel data components of the underlying image, respectively, and a second input connected to receive the output of first, second and third XOR gates, respectively. Each of the first, second and third XOR gates similarly have a first input connected to receive the MSB of the red, green and blue pixel data components of the underlying image, respectively, and a second input connected to receive sprite data from a sprite RAM 324, which sprite data represents a sprite character to be overlaid on the displayed image.

Term
Term ended
Projected expiry passed 9 December 2014, 11.8 years ago.
- Priority
- Filed
- Published
- Projected expiry
- Today
10 claims: 4 independent, 6 dependent
- 1Apparatus for displaying a sprite (102) on the display screen (326) of a computer system (300), said sprite being overlaid on an image, including:means (314) for storing the image as digital pixel data comprising two or more color components;means for selecting a pixel position on the display screen;means for determining whether the sprite is to be overlaid at said selected position, and responsive to a determination that the sprite is to be overlaid, inverting the most significant bit (MSB) of each color component of the image pixel data for that position to form the sprite colour;and means for displaying the sprite colour at the selected position.
- 8The apparatus of any preceding claim, in which the image storing means comprises a video random access memory (VRAM) which outputs data for the selected pixel, each pixel in the image sequentially being the selected pixel.
- 9The apparatus of any preceding claim, wherein the digital pixel data has red, green and blue components.
- 10A method of displaying a sprite (102) on the display screen (326) of a computer system (300), said sprite being overlaid on an image, the image being stored as digital pixel data comprising two or more color components, the method comprising:selecting a pixel position on the display screen;determining whether the sprite is to be overlaid at said selected position;and responsive to a determination that the sprite is to lie overlaid, inverting the most significant bit (MSB) of each color component of the image pixel data for that position to form the sprite colour, and displaying the sprite color at the selected position.
Independent claims4
44 paragraphs, as filed
0001The invention relates generally to the display of a sprite (or cursor) in computer display systems and in, particular, to ensuring that the color of a sprite is such that it is always distinctively visible against a displayed image upon which, it is overlaid.
0002Sprites, or cursors, are widely used in display systems as pointers to data displayed on a video display unit (VDU) of the system. Typically, a user controls the position of the sprite by means of an input device, such as a keyboard, mouse, or joystick. The image that the sprite displays is defined by a sprite character which is stored in an area of bit-mapped memory referred to as a sprite RAM. During typical operation, the sprite character overlays a portion of an image that would normally be displayed at the pixel position occupied by the sprite. A sprite character is stored in a sprite random access memory (RAM) and comprises a number of sprite data bits which are active (=1) when the sprite is to be displayed at the particular pixel location and inactive (=0) when the underlying image is to be displayed. Sprites of fixed size are usually implemented in hardware such that their position on screen is controlled by X and Y position data generated by the input device and stored in X and Y position registers.
0003A common problem which arises in connection with the use of sprites in display systems is that it is often difficult to perceive the sprite, especially when the color of the sprite is close to that of the underlying display pixel data.
0004A solution to the above problem involves the use of a blinking circuit in conjunction with a sprite, which will cause the sprite to blink whenever it is displayed. Although this method improves the visibility of the sprite in some situations, it fails to do so when the color and intensity of the sprite is the same as or similar to the color and intensity of the image upon which the sprite is overlaid. In addition, it may be difficult to track a blinking sprite while it is being moved across a display screen, as the sprite will momentarily disappear at one point on the screen and then reappear shortly thereafter at another point on the screen.
0005Another solution to the above problem involves the use of a sprite in the form of an "underline," which is typically a bright, short line located below the lowest row of the character display area. However, while such an underline sprite is visible when used among large characters, it may be difficult to find in a group of closely spaced small characters, without excessive concentration.
0006Another solution to the above problem involves the use of what is commonly known as an exclusive OR (XOR) sprite. XOR sprites have attained great popularity in recent years due to their partial success in insuring that the color of the sprite is different from that of the displayed image by inverting all bits of display pixel data underlying the active pixels of the sprite and using this inverted data as the sprite color.
0007XOR sprites, however, have certain disadvantages. First, the implementation of a conventional XOR sprite in display system not only slows down the system, but also increases the cost of the system, as a separate inverter, or XOR gate, is required to invert each bit of pixel data of the underlying image when the sprite is to be displayed. For example, implementing an XOR sprite in a 24-bit-per-pixel color display system would require twenty-four (24) XOR gates. Furthermore, although prior art XOR sprites are highly visible on certain color backgrounds, the visibility of an XOR sprite will be at a minimum when the color of the underlying image is a half intensity, or mid-level gray, represented by pixel data comprising 7F7F7Fh or 808080h. The reason for this is that when the bits of pixel data are converted, the resulting pixel data corresponds to another mid-level gray shade. For example, converting all the bits of pixel data comprising 7F7F7Fh (mid-level gray) results in pixel data comprising 808080h, which is also a mid-level gray. Coincidentally, such mid-level gray shades are the most widely used color(s) in computer graphics applications.
0008Accordingly, the invention provides apparatus for displaying a sprite or cursor on the display screen of a computer system, said sprite being overlaid on an image, including: means for storing the image as digital pixel data comprising two or more color components; means for selecting a pixel position on the display screen; means for determining whether the sprite is to be overlaid at said selected position, and responsive to a determination that the sprite is to be overlaid, inverting the most significant bit (MSB) of each color component of the image pixel data for that position to form the sprite colour; and means for displaying the sprite colour at the selected position.
0009Such apparatus adjusts the color of a sprite such that it is always visually distinguishable from the underlying image, even when the color of the underlying image pixels is a mid-level gray, while simultaneously reducing the cost of circuitry and increasing the speed of a display system in which it is implemented. Typically, the digital pixel data has red, green and blue components.
0010In a preferred embodiment, the apparatus further includes means for storing the coordinates of said sprite, and sprite storage means for storing a plurality of bits defining the shape of said sprite, wherein said sprite storage means stores bits representing a predetermined area, and each bit corresponds to a pixel in said predetermined area and has one value if the sprite is to be displayed at the corresponding pixel location, and an opposite value if the sprite is not to be displayed at the corresponding pixel location. Preferably the determining and inverting means comprises for each color component logic circuitry having a first input connected to receive the most significant bit of the digital data for that colour component at the selected position, and a second input connected to said sprite storage means to receive a sprite bit for the corresponding location. Most conveniently, the logic circuitry comprises an exclusive OR (XOR) gate.
0011The preferred embodiment further includes means for generating a sprite control signal when the selected pixel position matches the coordinates of the sprite such that the sprite control signal is active when the selected pixel position is within the predetermined area within which the shape of the sprite is defined. Preferably, the determining and inverting means further comprises for each color component a multiplexor (MUX) having a first input connected to receive the most significant bit of the digital data for that colour component at the selected position, a second input connected to the output of the logic circuitry for that color component, and a select input connected to receive said sprite control signal, wherein a signal applied to the first input of the MUX is output from said MUX when the sprite control signal is inactive and a signal applied to the second input of the MUX is output from the MUX when said sprite control signal is active.
0012The preferred embodiment also includes for each color component a digital to analog (D/A) converter connected to receive its most significant bit from the MUX for that color component, and the remaining less significant bits unchanged from the image storing means.
0013Preferably, the image storing means comprises a video random access memory (VRAM) which outputs data for the selected pixel, each pixel in the image sequentially being the selected pixel.
0014The invention also provides a method of displaying a sprite on the display screen of a computer system, said sprite being overlaid on an image, the image being stored as digital pixel data comprising two or more color components, the method comprising: selecting a pixel position on the display screen; determining whether the sprite is to be overlaid at said selected position; and responsive to a determination that the sprite is to be overlaid, inverting the most significant bit (MSB) of each color component of the image pixel data for that position to form the sprite colour, and displaying the sprite colour at the selected position.
0015An improved XOR sprite, which consistently adjusts the color of the sprite such that it is always visually distinct from the underlying graphic image can thus be provided. In a departure from the art, rather than OR inverting each bit of pixel data of the underlying image to derive sprite color, only the most significant bits (MSBs) of each of the red, green and blue pixel data components may be inverted. As a result, the color of the sprite will always differ by fifty percent (50%) of the full range of color for each color component of the underlying image, even when the underlying image is a half-intensity gray color.
0016In a preferred embodiment, a sprite control logic circuit is embodied in a palette digital-to-analog converter (DAC) of a display system. The sprite control logic circuit comprises first, second and third multiplexors (MUXes) each having a first input connected to receive the MSB of the red, green and blue component pixel data of the underlying image, respectively, and a second input connected to receive the output of first, second and third XOR gates, respectively. Each of the first, second and third XOR gates similarly have a first input connected to receive the MSB of the red, green and blue component pixel data of the underlying image, respectively, and a second input connected to receive sprite data from a sprite RAM, which sprite data comprises a sprite character to be overlaid on an image.
0017During operation of the preferred embodiment, a sprite control signal from a graphics controller of the display system is activated when a raster beam of a video display unit (VDU) is at a pixel position at which the sprite character stored in the sprite RAM is to be displayed. Responsive to receipt of the sprite control signal, sprite data is output from the sprite RAM, one bit at a time, to the XOR gates. If the bit output the sprite RAM is a 1, indicating that the sprite character is to be displayed at the current pixel position, the output of each of the XOR gates will be the inverse of the MSB input thereto. Conversely, if the bit output the sprite RAM is a 0, indicating that the underlying image is to be displayed, the output of each of the XOR gates will be the same as the MSB input thereto.
0018The above sprite control signal is also input to a select input of each of the MUXes and is used to select an input of the MUX. Specifically, when the sprite control signal is inactive indicating that the raster scanning beam is at a pixel position at which the sprite is not to be displayed, the first input of each MUX will be selected and the non-XORed MSBs will be output from the MUXes and recombined with their corresponding LSBs. Conversely, when the sprite control signal is active, indicating that the raster scanning beam is at a pixel position at which the sprite is to be displayed, the second input of each MUX will be selected and the XORed MSBs will be output from the MUXes and recombined with their corresponding LSBs.
0019An important technical advantage achieved is that because only the MSBs of each color component of the pixel data comprising the underlying image are converted, the sprite color will always differ by 50% of full range in each color component from the color of the background, even when the color of underlying image is a mid-level gray. An additional technical advantage achieved is the reduction and simplification of circuitry which accompanies the elimination of the need to include an XOR gate for each bit of pixel data of the underlying image, as the sprite control logic circuit requires only three XOR gates to derive the color of the sprite, regardless of the number of bits comprising the pixel data of the underlying image.
0020Thus a method is provided of ensuring that a sprite is clearly visible when overlaid on an image displayed on a video display unit (VDU) of a computer display system, wherein the color of each pixel of said image is stored in a video random access memory (VRAM) of said computer display system as digital pixel data, the method comprising: indicating a pixel position on said VDU; responsive to said pixel position indication, outputting from said VRAM pixel data corresponding to a pixel of said image to be displayed at said indicated pixel position; responsive to a determination that a pixel of said sprite is to be overlaid on said output image pixel, activating a first control signal; responsive to said first control signal activation and to a determination that said sprite pixel to be overlaid on said output image pixel is to be displayed, activating a second control signal; responsive to said second control signal activation, inverting a most significant hit (MSB) of each color component of said output pixel data; and subsequent to said inverting, converting each color component of said output pixel data to analog form for driving said VDU.
0021The method ensures that a color of a sprite overlaid on an image displayed on a display screen of a computer system will differ from a color of said image by at least fifty percent of full range in each of red, green and blue components comprising said image color, wherein said red, green and blue components of said image color are stored in a video random access memory of said computer system in digital form, the method comprising: indicating a position on said display screen; determining whether said sprite is to be displayed at said indicated position; responsive to a determination that said sprite is to be displayed at said indicated position, inverting a most significant bit (MSB) of each of said image color red, green and blue components digital data; and recombining said inverted MSBs of each of said image color red, green and blue components digital data with respective least significant bits (LSBs) of said image color red, green and blue components digital data to form digital data corresponding to red, green and blue components of said sprite color; and displaying said sprite color at said indicated position.
0022Typically, apparatus for adjusting the color of a sprite in a display system comprises: means for storing coordinates of said sprite; display image storage means for storing a plurality of bits representative of an image for display on a display means of said display system; means for activating said sprite electrically coupled to said coordinates storing means and said display image storage means; sprite storage means for storing a plurality of bits representative of the status of pixels defining the shape of said sprite; means for selecting a color for said sprite responsive to said sprite activation means electrically coupled to said display image storage means and said sprite storage means; means for transferring said plurality of bits from said display image storage means to said color selection means; and means for transferring said plurality of bits from said sprite storage means to said color selection means.
0023Said coordinates storing means comprises a plurality of registers in a graphics controller of said display system for storing x and y coordinates of said sprite. The sprite activation means comprises: means for detecting a raster at said sprite coordinates; and means for generating a sprite control signal to effectuate the display and the selection of color of said sprite upon said detection of said raster at said sprite coordinates. The detecting means comprises a display controller and the generating means comprises a graphics controller.
0024An embodiment of the invention will now be described in detail by way of example only with reference to the following drawings: <ul id="ul0001" list-style="none"><li>FIGS. 1A-1C are graphic illustrations of the operation of a prior art XOR sprite.</li><li>FIGS. 2A-2C are graphic illustrations of the operation of an XOR sprite implemented in accordance with the present invention.</li><li>FIG. 3 is a schematic block diagram of a display system.</li><li>FIG. 3A are graphic illustrations of a sprite character as stored in a sprite random access memory of the display system of FIG. 3.</li><li>FIG. 4 is a schematic block diagram of a palette DAC of the display system of FIG. 3.</li></ul>
0025FIGS. 1A-1C illustrate the deficiencies of a prior art XOR sprite in a display system in which the color of each pixel comprising an image to be displayed is represented by 24 bits of pixel data, with eight bits of pixel data representing the intensities of each of the red, green and blue components of the pixel color (a sprite is sometimes referred to as a cursor). FIG. 1A illustrates a display of an image 100 in which all pixels are a mid-level gray color corresponding to pixel data having a value 808080h. As previously described, to derive sprite color, prior art XOR sprites invert each bit of pixel data at any pixel position in which the sprite is active. Therefore, when the bits of underlying pixel data are inverted to derive the sprite color, the data comprises 7f7F7Fh, which also represents a mid-level gray color. FIG. 1B illustrates such a sprite 102. As can be seen from FIG. 1C, when the sprite 102 is overlaid in the image 100, the color of the sprite 102 renders it virtually indistinguishable from the underlying image 100. Herein lies the problem that the present invention is designed to address.
0026FIGS. 2A-2C illustrate an improved XOR sprite in accordance with the present invention, which is also implemented in a display system in which the color of each pixel comprising an image to be displayed is represented by 24 bits of pixel data, with eight bits of pixel data representing the intensities of each of the red, green and blue components of the pixel color. FIG. 2A illustrates a display of an image 200, which image 200 is identical in all respects to the image 100 and in which the pixel data for representing the color of each of the pixels comprises 808080h. As will be described in detail, rather than deriving sprite color by causing all of the bits of pixel data to be inverted at any pixel position in which the sprite is active, only the most significant bit (MSB) of each color component at that pixel position is inverted. In the illustrated embodiment, in which the pixel data comprising each pixel of the image 200 is 808080h, inverting the MSB of each color component of each pixel results in a sprite color represented by 000000h, which corresponds to the color black, rather than mid-level gray. FIG. 2B illustrates such a sprite 202. FIG. 2C illustrates the sprite 202 overlaid on the image 200. Clearly, the sprite 202 in FIG. 2C is much more visible than the sprite 102 in FIG. 1C.
0027Additionally, assuming the pixels of the displayed image were a mid-gray color represented by pixel data comprising 7F7F7Fh, rather than 808080h, inverting the MSB of the pixel data for each color component to derive the sprite color would result in sprite pixel data comprising FFFFFFh, which corresponds to the color white. Although not shown, it is obvious that a white sprite will be much more apparent than a mid-gray sprite when overlaid on a mid-gray image.
0028Referring to FIG. 3, the reference numeral 300 designates a personal computer, including a central processing unit 302, system random access memory (RAM) 304, a bus controller 306, a mouse 307, a graphics controller 310, a frame buffer 314, a palette DAC 322, which includes a sprite random access memory (RAM) 324, a VDU 326 and other devices designated by reference numeral 308 which are known by those skilled in the art to be necessary for a complete and operative system. System RAM 304 provides temporary storage for data and programs to be executed by the CPU 302. A bus controller 306 enables the exchange of information between the CPU 302, the mouse 307, the graphics controller 310 and other devices 308 in the system 300. A user may control the movement of a sprite, such as the sprite 202, using the mouse 307, which generates X and Y position signals to the CPU 302 indicative of a position of the sprite 202 on the VDU 326. The CPU 302 stores the X, Y position signals, or coordinates, in X and Y position registers (not shown) of the graphics controller 310, for purposes which will be described.
0029FIG. 3A is a representation of a sprite character 350 for generating a sprite, such as the sprite 202, on the VDU 326. The sprite character 350 is stored in the sprite RAM 324. In a preferred embodiment, the sprite character 350 is 32 pixels wide by 32 pixels long, although other sizes and shapes of sprite characters may be implemented. Each pixel comprising the sprite character 350 is represented by one bit of sprite data which indicates whether the sprite is active (i.e., sprite color is displayed) at that particular pixel position, in which case the sprite data bit will be a binary 1, or inactive (i.e., sprite color is not displayed) at the particular pixel position, in which case the sprite data bit will be a binary 0. It should be understood that in most systems the initial X, Y coordinates generated by the mouse 307 and stored in the X and Y position registers correspond to the position on the VDU 326 of the upper right hand corner 352 of the sprite character 350.
0030Referring again to FIG. 3, a CRT controller (not shown) connected to the graphics controller 310 compares the values stored in the X and Y position registers with the position of a raster scanning beam (not shown) of the VDU 326 as it moves from right to left and top to bottom across the VDU 326 to "paint" an image thereon. When it is determined that the raster scanning beam has reached the sprite character position, as indicated by the X, Y coordinates stored in the X and Y position registers, the graphics controller 310 will generate a "sprite control signal" (SCS) to the palette DAC 322, via a sprite control line 312, to activate the sprite and access the sprite data comprising the sprite character 350 stored in the sprite RAM 324. The SCS will remain active for the width of the sprite character 350, or 32 pixels. When the raster scanning beam passes the last pixel in the first row of the sprite character, the SCS is deactivated. This process is repeated for each line of the sprite character 350 until the raster scanning beam reaches the last pixel of the last line of the sprite character 350. While the SCS is active, the bits of sprite data comprising the sprite character 350 are sequentially accessed one bit at a time as the raster beam moves across the pixel positions on the VDU 326 at which the sprite is to be displayed and input to a sprite control logic circuit (FIG. 4), as will be subsequently described in detail.
0031Pixel data representing an image to be displayed on the VDU 326 is stored in the VRAM 314. In the preferred embodiment, the color of each pixel is represented in the VRAM 314 as 24-bits of data wherein eight bits of data represent the intensities of each of red, green and blue components of the pixel color. During operation, the eight bit red, green and blue pixel data are output from the VRAM 314 to the palette DAC 322 via three eight-bit buses 316, 318 and 320, respectively. As will be described, after the digital pixel data is processed by a sprite control logic circuit (FIG. 4), the pixel data is converted by the palette DAC 322 to analog red, green and blue signals for driving the VDU 326.
0032FIG. 4 is a schematic block diagram of a preferred embodiment of the palette DAC 322 comprising a sprite control logic circuit 400. As previously described, eight-bit red, green and blue pixel data are input to the palette DAC 314 from the VRAM 314 via buses 316, 318 and 320, respectively. As previously indicated, when the raster beam reaches a pixel position on the VDU 326 at which tie sprite character 350 is to be displayed, the SCS is activated and bits of sprite character data are accessed one bit at a time. Each accessed bit is output from the sprite RAM 324 and applied to an input of each of three XOR gates 414, 416 and 418 of the sprite control logic circuit 400 via line 406. Similarly, the MSB of each of the red, green and blue pixel data on the buses 316, 318 and 320, respectively, are applied to the other input of each of the XOR gates 414, 416 and 418 via lines 408, 410 and 412, respectively, as well as to input 0 of each of three multiplexors (MUXes) 414, 416 and 418, respectively. The outputs of XOR gates 414, 416 and 418 are applied to input 1 of each of the MUXes 420, 422 and 424, respectively. The SCS is applied to the select (S) input of each of the MUXes 414, 416 and 418 via the sprite control line 312 for purposes which will subsequently be described. The SCS is also applied to the sprite RAM 324 via the sprite control line 312.
0033The MSBs output from the MUXes 420, 422 and 424 are recombined with their respective LSBs on the buses 408, 410 and 412, respectively, and then input to digital to analog (D/A) converters 426, 428 and 430, respectively. The D/A converters 426, 428 and 420 convert the digital signals input thereto to analog red, green and blue signals, respectively, to be input to the VDU 326 via lines 432, 434 and 436, respectively.
0034In operation, if the bit output from the sprite RAM 324 is a 0, indicating that the sprite color is not to be displayed at the corresponding pixel position, the output of the XOR gates 414, 416 and 418 will be the same as the MSB input on lines 408 410 and 412, respectively. In other words, the MSBs are not inverted and the color of the pixel will be that of the underlying image. Alternatively, if the bit output from the sprite RAM 324 on the line 406 is a 1, indicating that the sprite color is to be displayed at the corresponding pixel position, the XOR gates 414, 416 and 418 will invert the MSBs of the red, green and blue color components input thereto on lines 408, 410 and 412, respectively.
0035In a preferred embodiment, the SCS is used to select the XORed MSB (applied to input 1 of the MUXes 420, 422 and 424) or the non-XORed MSB (applied to input 0 of the MUXes 420, 422 and 424) of each of the red, green and blue pixel data components to be output from the MUXes 420, 422 and 424, respectively, to the D/A converters 426, 428 and 430, respectively, depending on whether or not the sprite character is active at the corresponding pixel position. In other words if the raster is at a location on the VDU 324 at which the sprite character 350 is to be overlaid on the image, the graphics controller 310 will activate the SCS, thereby causing the XORed MSBs (input 1), which may or may not be inverted, depending on the state of the sprite data bit on line 406, to be output from each of the MUXes 420, 422 and 424. Alternatively, when the SCS is not active, i.e., when the sprite character is not to be displayed, the non-XORed MSB (input 0) will be selected and output from each of the MUXes 420, 422 and 424. As a result, the MSB of each of the red, green and blue pixel data components will be inverted when the sprite color is to be displayed on the VDU 326, i.e., any time the SCS is active and the sprite data bit on line 406 is a 1.
0036As further illustrated below in Table I, the sprite control logic circuit 400 comprising the XOR gates 414, 416 arid 418, and the MUXes 420, 422 and 424 insure that the sprite color is always distinctively visible against the underlying image. For example, so long as the SCS signal is inactive, input 0 of each of the MUXes 420, 422 and 424 will be selected, such that the MSBs on lines 408, 410 and 412 will be output from the MUXes 420, 422 and 424, respectively, to the D/A converters 426, 428 and 430, respectively. Conversely, when the SCS is active, input 1 of each of the MUXes 420, 422 and 424 will be selected and the state of the outputs of the MUXes 420, 422 and 424 will be controlled by the state of the sprite data bit on line 406. Accordingly, if the sprite data bit on line 406 is a 1, the XOR gates 414, 416 and 418 will invert the MSBs input thereto on lines 408, 410 and 412, respectively, and the signals output from the MUXes 420, 422 and 424 and input to the D/A converters 426, 428 and 430, respectively, will be the inverted MSBs 408, 410 and 412. If the sprite data bit on line 406 is a 0 (sprite character inactive), the output of the XOR gates 414, 416 and 418 will be the same as the MSBs on lines 408, 410 and 412, respectively. As previously stated, the output of the MUXes 420, 422 and 424 are recombined with the LSBs on the buses 316, 318 and 320, respectively, before being input to the D/A converters 426, 428 and 430, respectively.
0037Table I below is a truth table illustrating the above-described operation: <tables id="tabl0001" num="0001"><table frame="all"><title>TABLE I</title><tgroup cols="4" colsep="1" rowsep="0"><colspec colnum="1" colname="col1" colwidth="39.37mm" /><colspec colnum="2" colname="col2" colwidth="39.37mm" /><colspec colnum="3" colname="col3" colwidth="39.37mm" /><colspec colnum="4" colname="col4" colwidth="39.37mm" /><thead valign="top"><row><entry namest="col1" nameend="col1" align="center">SCS</entry><entry namest="col2" nameend="col2" align="center">Sprite Data</entry><entry namest="col3" nameend="col3" align="center">MSB</entry><entry namest="col4" nameend="col4" align="center">MUX Output</entry></row></thead><tbody valign="top"><row><entry namest="col1" nameend="col1" align="right">0</entry><entry namest="col2" nameend="col2" align="right">0</entry><entry namest="col3" nameend="col3" align="right">0</entry><entry namest="col4" nameend="col4" align="left">0 (not inverted)</entry></row><row><entry namest="col1" nameend="col1" align="right">0</entry><entry namest="col2" nameend="col2" align="right">0</entry><entry namest="col3" nameend="col3" align="right">1</entry><entry namest="col4" nameend="col4" align="left">1 (not inverted)</entry></row><row><entry namest="col1" nameend="col1" align="right">0</entry><entry namest="col2" nameend="col2" align="right">1</entry><entry namest="col3" nameend="col3" align="right">0</entry><entry namest="col4" nameend="col4" align="left">0 (not inverted)</entry></row><row><entry namest="col1" nameend="col1" align="right">0</entry><entry namest="col2" nameend="col2" align="right">1</entry><entry namest="col3" nameend="col3" align="right">1</entry><entry namest="col4" nameend="col4" align="left">1 (not inverted)</entry></row><row><entry namest="col1" nameend="col1" align="right">1</entry><entry namest="col2" nameend="col2" align="right">0</entry><entry namest="col3" nameend="col3" align="right">0</entry><entry namest="col4" nameend="col4" align="left">0 (not inverted)</entry></row><row><entry namest="col1" nameend="col1" align="right">1</entry><entry namest="col2" nameend="col2" align="right">0</entry><entry namest="col3" nameend="col3" align="right">1</entry><entry namest="col4" nameend="col4" align="left">1 (not inverted)</entry></row><row><entry namest="col1" nameend="col1" align="right">1</entry><entry namest="col2" nameend="col2" align="right">1</entry><entry namest="col3" nameend="col3" align="right">0</entry><entry namest="col4" nameend="col4" align="left">1 (inverted)</entry></row><row rowsep="1"><entry namest="col1" nameend="col1" align="right">1</entry><entry namest="col2" nameend="col2" align="right">1</entry><entry namest="col3" nameend="col3" align="right">1</entry><entry namest="col4" nameend="col4" align="left">0 (inverted)</entry></row></tbody></tgroup></table></tables>
0038Using the example illustrated in FIGS. 2A-2C, if the color of a pixel comprising the image to be displayed is represented by 808080h, a value of 10000000b will be input to the sprite control logic circuit 400 on each of the buses 316, 318 and 320, respectively. The MSB of each of the color components, in this case 1, will be input to one input of the XOR gates 414, 416 and 418 via lines 408, 410 and 412, respectively, as well as to input 0 of each of the MUXes 420, 422 and 424. Accordingly, when the SCS on line 312 is inactive, input 0 of the MUXes 420, 422 and 424 will be selected and a 1 will be output from each of the MUXes 420, 422 and 424 and recombined with the corresponding LSBs, pixel data comprising 808080h, corresponding to a mid-gray color, will be input to the D/A converters 426, 428 and 430 collectively.
0039When the SCS signal is active, input 1 of the MUXes 420, 422 and 424 will be selected and the state of the MUX outputs will be determined by whether the sprite character is inactive (sprite data bit=0) or active (sprite data bit=1) at the particular pixel location. For example, if the sprite character 350 is inactive, a 0 will be input to the other input of each of the XOR gates 414, 416 and 418, driving the output of the XOR gates 414, 416 and 418 and hence the output of the MUXes 420, 422 and 424, to 1. Again, when the MSBs output from the MUXes 420, 422 and 424 are recombined with their corresponding LSBs, pixel data comprising 808080h, corresponding to a mid-gray color, will be input to the D/A converters 426, 428 arid 430 collectively. Alternatively, if the sprite character 350 is active, a 1 will be input to the other input of each of the XOR gates 414, 416 and 418, driving the output of the XOR gates 414, 416 and 418 and hence the output of the MUXes 420, 422 and 424, to 0. In this case, when the MSBs are recombined with their corresponding LSBs pixel data comprising 000000h, corresponding to black, will be input to the D/A converters 426, 428 and 430 collectively. This is to be contrasted to prior art XOR sprite techniques, in which if all of the bits of pixel data comprising the underlying image were to be inverted to derive the sprite pixel color, the resulting sprite pixel data would comprise 7F7F7Fh, corresponding to a mid-gray color, which would not be clearly visible when overlaid upon the mid-gray image.
0040To recap therefore, a computer display system is provided which comprises a video display unit (VDU) and a video random access memory (VRAM) for storing pixels comprising an image to be displayed on said VDU and for outputting said pixels one at a time, and apparatus for controlling a color of a sprite overlaid on said displayed image, the apparatus comprising: a sprite random access memory (RAM) for storing a plurality of sprite data bits corresponding to pixels of said sprite for indicating whether said corresponding pixels are active; a first exclusive OR (XOR) gate having a first input connected to said VRAM to receive a most significant bit (MSB) of a first color component of an image pixel output from said VRAM and a second input connected to an output of said sprite RAM; a second XOR gate having a first input connected to receive an MSB of a second color component of said output pixel and a second input connected to receive said sprite RAM signal; a third XOR gate having a first input connected to receive an MSB of a third color component of said output pixel and a second input connected to receive said sprite RAM signal; a first multiplexor (MUX) having a first input connected to receive said first color component MSB, a second input connected to an output of said first XOR gate and a select input connected to receive a sprite control signal from said graphics controller, wherein a signal applied to said first input of said first MUX is output from said first MUX when said sprite control signal is inactive and a signal applied to said second input of said first MUX is output from said first MUX when said sprite control signal is active; a second MUX comprising a first input connected to receive said second color component MSB, a second input connected to an output of said second XOR gate and a select input connected to receive said sprite control signal, wherein a signal applied to said first input of said second MUX is output from said second MUX when said sprite control signal is inactive and a signal applied to said second input of said second MUX is output from said second MUX when said sprite control signal is active; a third MUX comprising a first input connected to receive said third color component MSB, a second input connected to an output of said third XOR gate and a select input connected to receive said sprite control signal, wherein a signal applied to said first input of said third MUX is output from said third MUX when said sprite control signal is inactive and a signal applied to said second input of said third MUX is output from said third MUX when said sprite control signal is active; wherein when said sprite RAM signal is active, said first, second and third color component MSBs are inverted by said first, second and third XOR gates, respectively; and wherein when said sprite RAM signal is inactive, said first, second and third color component MSBs are throughput by said XOR gates.
0041Typically, the apparatus further comprises: a first digital-to-analog (D/A) converter having an MSB input connected to receive said signal output from said first logic circuit and a plurality of LSB inputs each connected to receive one of a plurality least significant bits (LSBs) of said first color component of said output pixel data word; a second D/A converter having an MSB input connected to receive said signal output from said second logic circuit and a plurality of LSB inputs each connected to receive one of said plurality of LSBs of said second color component of said output pixel data word; and a third D/A converter having an MSB input connected to receive said signal output from said third logic circuit and a plurality of LSB inputs each connected to receive one of said plurality of LSBs of said third color component of said output pixel data word; wherein said first, second and third D/A converters convert digital signals input thereto to an analog form of said first, second and third color components, respectively, for driving said VDU.
0042Viewed from another aspect, the apparatus controls the color of pixels of a sprite overlaid on a portion of an image displayed on a video display unit (VDU) of a computer display system such that said sprite is visibly distinct from said displayed image, said computer display system including a graphics controller for activating a sprite control signal when a raster scanning beam of said VDU is at a pixel position on said VDU corresponding to said image portion upon which said sprite is overlaid and a video random access memory (VRAM) for storing said image in digital form such that each pixel of said image is stored as a word of image pixel data comprising at least one color component, and for outputting an image pixel data word of an image pixel to be displayed at said raster scanning beam pixel position, the apparatus comprising: a sprite random access memory (RAM) for storing a plurality of sprite data bits, wherein each of said sprite data bits corresponds to one of said sprite pixels and indicates whether said corresponding one of said sprite pixels is active; at least one logic gate having a first input electrically connected to said VRAM for receiving a most significant bit (MSB) of said at least one color component of said output image pixel data word and a second input electrically connected to an output of said sprite RAM; at least one logic circuit having a first input electrically connected to said VRAM for receiving said at least one color component MSB of said output image pixel data word a second input electrically connected to an output of said at least one logic gate, and a third input electrically connected to said graphics controller for receiving said sprite control signal therefrom; wherein responsive to said sprite control logic signal being active, said sprite RAM outputs one of said sprite data bits corresponding to said raster scanning beam pixel position to said second input of said at least one logic gate; wherein responsive to said output one of said sprite data bits comprising a 0, said at least one logic gate outputs said at least one color component MSB of said output image pixel data word; wherein responsive to said output one of said sprite data bits comprising a 1, said at least one logic gate inverts said at least one color component MSB of said output image pixel data word and outputs said inverted at least one color component MSB of said output image pixel data word; wherein responsive to said sprite control signal being inactive, said at least one logic circuit outputs a signal applied to said first input thereof; and wherein further responsive to said sprite control signal being active, said at least one logic circuit outputs a signal applied to said second input thereof.
0043Viewed from yet another aspect, the apparatus controls a color of a sprite overlaid on an image displayed on a video display unit (VDU) of a computer display system such that said sprite is always visibly distinct from said displayed image, said computer display system including a graphics controller for selectively activating a sprite control signal for initiating display of said sprite and a video random access memory (VRAM) for storing said image in digital form in which each pixel of said image is represented by a word of pixel data comprising first, second and third color components, and for sequentially outputting pixel data words, the apparatus comprising: a sprite random access memory (RAM) for storing a plurality of sprite data bits, wherein each of said sprite data bits corresponds to a pixel of said sprite and indicates whether said corresponding sprite pixel is active; a first logic gate having a first input electrically connected to said VRAM for receiving said first color component MSB of a pixel data word output from said VRAM and a second input electrically connected to an output of said sprite RAM; a second logic gate having a first input electrically connected to said VRAM for receiving said second color component MSB of said output pixel data word and a second input electrically connected to said sprite RAM output; a third logic gate having a first input electrically connected to said VRAM for receiving said third color component MSB of said output pixel data word and a second input electrically connected to said sprite RAM output; a first logic circuit having a first input electrically connected to said VRAM for receiving said first color component MSB of said output pixel data word, a second input electrically connected to an output of said first logic gate, and a third input electrically connected to said graphics controller for receiving said sprite control signal therefrom; a second logic circuit having a first input electrically connected to said VRAM for receiving said second color component MSB of said output pixel data word, a second input electrically connected to an output of said second logic gate and a third input electrically connected to said graphics controller for receiving said sprite control signal therefrom and; a third logic circuit having a first input electrically connected to said VRAM for receiving said third color component MSB of said output pixel data word, a second input electrically connected to an output of said third logic gate and a third input electrically connected to said graphics controller for receiving said sprite control signal therefrom; wherein responsive to said sprite control logic signal being active, said sprite RAM outputs one of said sprite data bits said second input of each of said first, second and third logic gates; wherein responsive to said output one of said sprite data bits indicating that said corresponding sprite pixel is inactive, said first, second and third logic gates output said first, second and third color component MSBs of said output pixel data word, respectively; wherein responsive to said output one of said sprite data bits indicating that said corresponding sprite pixel is active, said first, second and third logic gates invert said first, second and third color component MSBs of said output pixel data word, respectively, and output said inverted first, second and third color component MSBs of said output pixel data word, respectively; wherein responsive to said sprite control signal being inactive, said first, second and third logic circuits respectively output signals applied to said first inputs thereof; and wherein further responsive to said sprite control signal being active, said first, second and third logic circuits respectively output signals applied to said second inputs thereof.
0044Variations on the above system will lie readily derivable by the skilled person. For example, the inversion of the MSBs of each color component can either be performed just prior to the conversion of the digital pixel data into analog for the display unit 326 or while the pixel data is stored in the frame buffer VRAM 314. In addition, the technique may be used not only in the present 24-bit display system, but also in systems with different resolutions. Furthermore the XOR gates 414, 416, 418 may be replaced with other gating selection means which will change the color of the sprite relative to that of the pixel data. It is also understood that the components in the present invention may be incorporated as part of a VDU, graphics controller, LCD display, or other display system component.
3 sheets
Sheet 1 Sheet 2 Sheet 3
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US9607583B2 | Cited by | United States of America | Applicant |
| US5270688A | Cites | United States of America | Search report |
8 members in 7 offices; this record represents the family
Priority claims4
| Document | Office | Kind | Date |
|---|---|---|---|
| 17612893 | United States of America | A | |
| 176128 | United States of America | – | |
| US19930176128 | – | – | – |
| 176128 | – | – | – |
Members8
| Document | Office | Kind | |
|---|---|---|---|
| EP0661684A2This record | European Patent Office (EPO) | A2 | |
| KR950020287A | Republic of Korea | A | |
| JPH07210143A | Japan | A | |
| EP0661684A3 | European Patent Office (EPO) | A3 | |
| US5471570A | United States of America | A | |
| CN1122023A | China | A | |
| PH30720A | Philippines | A | |
| TW358186B | Taiwan Province of China | B |
7 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Application withdrawnWithdrawn18W | 18W | |
| Information on the status of an ep patent application or granted ep patentGrantedSTATUS: THE APPLICATION HAS BEEN WITHDRAWNSTAA | STAA | |
| Request for examination filed17P | 17P | |
| Designated contracting statesAK | AK | |
| Search report despatchedORIGINAL CODE: 0009013PUAL | PUAL | |
| Designated contracting statesAK | AK | |
| Public reference made under article 153(3) epc to a published international application that has entered the european phaseORIGINAL CODE: 0009012PUAI | PUAI |
Numbers
- Publication
- 0661684
- Publication, DOCDB
- 0661684
- Publication, EPODOC
- EP0661684
- Application
- 94309236
- Application, DOCDB
- 94309236
- Application, EPODOC
- EP19940309236
Titles6
- German
- Anzeige von beweglichen Mustern in einem Computersystem.
- English
- Display of a sprite in a computer system.
- French
- Affichage d'images mobiles dans un système d'ordinateur.
- German
- Anzeige von beweglichen Mustern in einem Computersystem
- English
- Display of a sprite in a computer system
- French
- Affichage d'images mobiles dans un système d'ordinateur
Classification
- CPC, 2
- G09G5/08
- G09G5/06
- IPC, 4
- G09G5 02
- G09G5 06
- G09G5 08
- G09G5 38
Designated states3
- Contracting states, 3
- Germany
- France
- United Kingdom