exemplary embodiments of the invention are illustrated in the figures , like numerals being used to refer to like and corresponding parts of the various drawings . [ 0032 ] fig1 illustrates an embodiment of the present invention . electronic bingo device 20 , in which bingo cards are provided stored therein and , when activated by the mechanical receipt of a game key 44 in game key slot 32 , is adapted to operate with a bingo player in accordance with the rules of play defined by the bingo hall . the game key 44 is inserted by the bingo hall personnel from an assortment of game keys that are sorted according to the quantities of bingo cards provided by the bingo hall . a bit - mapped color display 22 provides a general - purpose display that can be configured to display bingo cards and other information . a numeric keypad 24 allows the player to input called bingo numbers during game play . in contrast to a character display , as used in other bingo devices , a bit - mapped color display is divided into an array of tiny identical pixels , each of which can be independently controlled for brightness and color . with such a display arbitrary shapes and characters can be formed at any location in the display . displayed data can be reformatted to appear larger or smaller and moved to any desired location in the display . data can be displayed in any format that is appropriate , rather than in a format dictated by the display device . as shown in fig1 the bingo device 20 is housed within a two part molded plastic housing 46 . the front face of the housing includes color display 22 , flexibly configurable to display one or more bingo cards and other information . also on the front face and situated below the color display is the numeric keypad 24 . keys designated for numbers 1 - 9 are configured in a 3 - by - 3 array , with number “ 0 ” located under the array . an “ enter ” key is located below the array adjacent the number “ 0 ” key . function keypad 26 provides access to the various display modes , allows for viewing of the bingo cards , promotes changing of winning patterns and clears player memory . these functions will be discussed in greater detail herein and are achieved using the following keys : an “ info ” key , a “ bingo board ” key , a “ wild ” key , a “ clear ” key , a “ delete ” key , a “ next game ” key and a “ view cards ” key . the front face of the housing 46 may also include a mouse pad 28 used to move a cursor about the display 22 . located on the left side of the housing 46 is a game key slot 32 for securing the game key 44 within the device . also located on the left side of the housing is an external power jack , or connector , 30 . a relatable u - shaped table stand 34 is also shown in fig1 . the table stand is attached to the back of the device . the stand and its hinges can be replaced without opening the housing 46 . a contoured recess in the back of the device permits the table stand to lie flush with the back of the device when in its fully closed position . when opened and used as to prop up the device , rubber pads on the handle prevent the device from sliding along a table surface . the table stand may attach to the device with hinges that allow it to be set in any position from fully closed to fully open . the hinges operate silently and damp the rotation of the table stand from one position to another , preventing the stand from being slammed closed and preventing the device from being slammed to the tabletop while supported by the table stand . located on the top side of the housing 46 is a tri color led indicator 36 ( not shown in fig1 ) that indicate the state of charge of the battery inside the game device and the operational status of the circuitry of the game device . these led indicators will be discussed in more detail herein . the right side of the game device 20 is shown in fig2 . a universal serial bus ( usb ) port 38 enables the game device to be connected to and communicate with other electronic devices . an infrared ( ir ) window 40 , transparent to infrared radiation , covers an ir transceiver inside the game device , enabling the game device to communicate with other devices using an ir communication link . a brightness control 42 allows the user to adjust the brightness of color display 22 . located on the back side of the housing 46 are charging contacts 39 ( not shown in fig1 ). the game device can be placed in a recharging cradle having mating contacts to recharge the batteries in the game device . the electronic bingo device is controlled by the circuitry shown in fig3 . a central processing unit ( cpu ) 50 operates in cooperation with a control program stored in a non - volatile flash ram 52 . upon activation of the cpu the control program is copied from flash ram using a dynamic random - access - memory ( dram ) 54 for data storage and executed . the cpu 50 includes an address and data bus 56 that connects the cpu 50 to the display formatter 58 and usb interface circuitry 60 . a cpu of the type suitable for this purpose is the motorola 68k cold - fire processor . a graphics engine is provided by display formatter 58 , which buffers display data from the cpu 50 into video buffer 62 , converts the display data into raster format and sends the rasterized signal to the low voltage differential signal ( lvds ) encoder 64 which provides a video signal to the color thin - film liquid crystal display 66 . the brightness of display 66 is set by inverter 68 and brightness adjustment control 70 , which is controlled by input from the user of the game device and by signals received over the i2c bus 72 . this graphics engine circuitry frees a significant amount of processing bandwidth in the cpu that would otherwise be taken up in writing to the display . the i2c bus 72 interconnects brightness adjustment control 70 , cpu 50 , watchdog processor 74 , keypad 78 , removable game key 44 , and radio interface 80 . watchdog processor 74 uses an onboard analog - to - digital converter to monitor the voltage levels of the game device power supply . upon sensing a failure in the correct operation of the game device circuitry , the watchdog processor can reset cpu 50 and display formatter 58 to restore correct operation . the watchdog processor can put the game device into a low power “ sleep ” mode by instructing fet switch 84 to cut main power to most of the circuitry of the game device . in “ sleep ” mode , only the watchdog processor 74 and radio interface 80 continue to receive power . watchdog processor 74 also connects to ir transceiver 82 via a serial connection , and thus can restore main power to the game device in response to signals received from the ir transceiver or the radio interface . watchdog processor 74 can also put the game device into a reduced power “ inactive ” mode by instructing the cpu 50 to enter an idle mode and instructing the brightness adjustment control 70 to dim the display 66 . the game device can be returned to active mode from either “ sleep ” mode or “ inactive ” mode not only in response to signals received from the ir transceiver or the radio interface , but also upon keypad activity . the keypad provides an interrupt signal to cpu 50 , which causes it to resume normal functioning and notify watchdog processor 74 that it is again active . watchdog processor 74 also connects to cpu 50 via a serial connection and , when the cpu is active , communications received from the ir transceiver can be passed on to the cpu , as well as being acted upon by the watchdog processor . the serial connection is also used to communicate to cpu 50 the battery voltage measured by watchdog processor 74 . cpu 50 displays this voltage as a battery level indicator on display 66 . twin batteries 90 are connected in parallel to game key socket 94 . when a hardware key 44 is connected to the hardware key socket 94 , the battery power is connected to fet switch 84 . under the control of watchdog processor 74 , the fet switch connects the battery power to multi - voltage power supply 86 . power supply 86 produces power at multiple voltages to power the other circuitry of the game device . multi - voltage power supply 86 can also draw power from emergency power jack 30 when an external power source is connected . the output voltages of power supply 86 do not fluctuate when an external power source is connected to emergency power jack 30 , thereby preventing any interruption in the operation of the game device . while the twin batteries 90 operate in tandem to power the game device , they are individually connected to charging circuitry 88 . charging circuitry 88 receives power from charging connectors 39 and indicates its status on led indicators 36 . when both batteries are discharged , the red led flashes . when charging power is applied to the charging connectors , the charging circuitry , under the control of watchdog processor 74 , begins charging one of the two batteries . once that battery is fully charged , the red led is extinguished and the green led flashes . the charging circuitry then begins charging the other battery . once the second battery is fully charged , the green led turns on solid . during the period that one battery is fully charged and the other is partially charged , charging power can be removed and the game device operated normally . charging circuitry 88 and multi - voltage power supply 86 are part of power supply circuitry 92 , which supplies power to the watchdog processor 74 and radio interface 80 when the game device is in “ sleep ” mode . when a hardware key 44 is inserted into the hardware key slot 32 in the housing of the game device , it also engages hardware key socket 94 to provide electrical communication between the cpu 50 and an electrically programmable read only memory ( eprom ) circuit 96 having memory located within the hardware key . the key may have 1 , 32 , 64 , 128 or more kilobytes of memory , among other amounts . the data stored in a type of hardware key known as a player key includes the number of cards purchased by the player for each game . game devices can also receive this information via the ir transceiver or the radio interface from an external device and store it in dram , which may then be transferred into flash . in these situations , a hardware key 44 without eeprom circuit 96 is used . such a key only connects battery power to the fet switch 84 . other types of hardware keys include a game key , which contains a list of the games and parts of games to be played in a bingo session , the wild number rules for those games and the winning patterns for those games ; a card set key , which contains the collection of bingo cards to be used by the game device ; and a code key , which contains programs for the game device cpu 50 . when one of these types of hardware keys is inserted into the game device , the cpu 50 reads an identifier in the memory of the key and recognizes the type of data contained in the key . the cpu then transfers the data from the hardware key into the flashram of the game device . game devices can also receive this information via the ir transceiver or the radio interface from an external device and store it in flashram . when the game device is subsequently powered up with a player key , the data stored in flashram will be used in performing the function of monitoring bingo cards . when player data , game data , card set data or game device program code is transferred from an external device , a communication protocol providing security features such as checksums or unique device identifiers is used to ensure that the data and code come from an authorized device and have not been tampered with or corrupted in the transmission process . the cpu is also connected to piezo - electric audio transducer 76 . this allows the game device to notify the player that one of his cards has a winning pattern by playing a song or some other type of audio signal . [ 0052 ] fig4 illustrates a display format 100 showing nine bingo cards at once . the nine cards appear in a three - by - three array at the top of the display in section 102 . the letters b - i - n - g - o are displayed between the cards to label the columns of the cards . the serial numbers of the nine displayed cards are shown below the displayed cards in section 104 of the display . the number and part of the game currently being played are displayed in section 106 of the screen , to the left below the display of serial numbers . section 108 of the display , to the right below the display of serial numbers , shows called number information about the called numbers entered by the user : the last called number entered , the total count of called numbers entered , and the number currently being entered by the user on the numeric keypad . this display format permits an additional type of bingo game to be played , in which a winning pattern can occur on certain of the cards . for example , a diagonal bingo on the three leftmost cards might be the winning pattern for such a multiple card game . a display format 112 for displaying a single bingo card is shown in fig5 . visually impaired users can more easily read the large type utilized in this display format . this format has the same sections as the nine card format illustrated in fig4 : the card is displayed at the top of the screen in section 114 , the serial number of the card is shown below that in section 116 , below that are shown the game and part numbers in section 118 to the left and the called number information in section 120 to the right , and at the bottom of the screen is message display area 122 . other modified bingo games can be played using the bit - mapped color display of the present invention . cards can be displayed with some squares holding two numbers , rather than the usual single number . this is possible because the numbers displayed within a square can be made smaller and shifted , in order to fit two numbers in the same square . in another modification to the usual bingo card , certain squares on a player &# 39 ; s cards can be marked with a star to signify that a bingo including that square wins a special prize . this can be done by displaying the star in the background of the square in a contrasting color to the background color of the other squares of the bingo card . the “ bingo board ” key in the function keypad 26 of fig1 allows the user to cycle through the display formats showing one , four or nine cards , and a display format called the “ flashboard ”, showing the called numbers entered by the user and the winning patterns for the current game . the “ view cards ” key in the function keypad 26 serves to cycle through all the cards being played , in whatever display format the user has selected using the “ bingo board ” key . [ 0057 ] fig6 is a block flow diagram of an exemplary main game thread . to begin the method 160 , initializes the game variables as seen in block 164 . the system then determines whether the game is complete as seen in block 166 . if the game is not complete , the main game thread calls the game event scheduling loop ( depicted in fig8 ) as seen in block 168 . if the game is complete , the system re - initializes for a next game or , if a next game has not been purchased , the thread may terminate or alert the user , among others . [ 0058 ] fig7 shows an alternate main program routine for an embodiment of the present invention . the control program is started either upon inserting the game key into the game slot or at any time the cpu is reset by the watchdog processor at step 200 . the program self tests and initializes the hardware in a conventional manner at step 202 . the configuration information including the winning patterns , wild card numbers and bingo card allocation numbers are read from memory at step 204 . next the bingo cards allocated to the player may be compared with a checksum number to ensure the bingo card information in memory is valid at step 206 . the cards may be 20 bytes . the first 13 bytes may describe the card , the next three may be the serial number , the next may be an optional star position and the last three may be reserved for future expansion . however , the cards may use fewer or more bytes for various purposes in various orders . alternately , each bingo card entry may use 13 bytes for card data and 3 bytes for providing a unique serial number to comply with various regional bingo regulations and a checksum byte . the checksum is the sum of bytes 0 through 15 with a carry wraparound . if the sum of bytes 0 - 15 does not match the checksum value , the data may be considered invalid and an error may be signaled via the led indicator 36 of fig1 at step 208 , among other alert option , and the program stops at step 210 . otherwise , if the bingo card data is valid , the program resets a game pointer variable to the first game listed in the game key at step 212 . the game data including winning patterns and wild card data is loaded into the game variable to initialize the game at step 214 . the program at step 216 then calls a game event scheduling loop ( fig8 ). upon return from the game event scheduling loop 218 , the program may terminate at step 219 if the player has played all of the allotted games or return to steps 204 or 212 . [ 0059 ] fig8 illustrates the game event scheduling loop . the method starts by determining whether more events exist as seen in block 224 . an event can be timed , fired , or forced . timed events include checking for key presses every 30 milliseconds , updating screens every 33 milliseconds , blinking display values , and battery events , among others . time periods are shown for illustrative purposes and may vary . fired events may include playing a sound , among others . however , the events may take various forms . if events exist , the events are processed and the event counter is incremented as seen in block 228 . the availability of events may then be tested again . if no events exist , the routine may exit the loop and return to the main program or thread as exemplified in fig6 and 7 . the main program thread may then call the game event thread again . the system has arrays of structures which have embedded function pointers for each key . when a key event is processed a routine iterates through these structures until it finds the structure that matches the key pressed . when this structure is found the embedded function is called . this allows a great deal of flexibility when processing the keys . different arrays of structures can also be used to describe what should happen on each key press . for example when the in game submenu is showing the # 2 key will allow a user to change a dauber . when the dauber select sub - menu is up the # 2 key will select option 2 , while there is no current game being played the # 2 key will do nothing and while playing the # 2 key will adjust the current number in the input buffer . in other examples , if the number is entered the entered number variable is updated . if the clear key has been pressed the entered number variable is cleared to zero . if the enter key has been pressed the game number updating routine ( fig9 ) is executed . if the delete key has been pressed an undaub flag is set . if the wild key has been pressed a wild flag is set . if the info key has been pressed the in - game menu will appear which may allow the user to change the language that the game is played in , change his / her dauber shape , and change his / her dauber color , among others . if the bingo board key has been pressed , the bingo board display mode may be changed . if the view cards key has been pressed the entered number variable is cleared to zero . if the next game key has been pressed for at least two seconds , the next game number is updated . the display may be updated in accordance with a timed event . [ 0062 ] fig9 shows an exemplary game number update routine . this routine may be activated upon detecting an enter key , among others . if the enter key has been pressed , and the last key entered was a number , the number stored in the entered number variable is added to the list of called numbers and the number is marked on each card containing that number in a winning pattern . if the wild key was pressed prior to pressing the enter key , the number entered will be used to mark all numbers in a winning pattern , meeting the requirements of the wild card rules . the method begins with wild card processing as seen in block 234 . if a wild number has been entered , the system may generate all possible numbers associated with the wild number . the system may then update the called numbers as seen in a block 236 . this process adds or deletes numbers from the called numbers list . the system determines whether the called numbers have changed as seen in a block 238 . if not , the system posts a graphics event as seen in a block 250 . if the numbers have changed , the system updates the cards as seen in a block 246 . this involves updating each played card face and matching pattern according to the new called number . the cards are then scored and ranked according to how close it is to matching a winning pattern as seen in a block 242 . for games with multiple cards per sheet , each sheet is assembled and scored fro how close the sheet is to winning as seen in block 244 . the system looks for the winning criteria on each sheet as seen in block 246 . if there is no win , the system posts a graphics event as seen in block 250 . if there is a win event , the system posts a sound event as seen in a block 28 and a graphics event as seen in block 250 . the updating routine then terminates or returns to another thread . the above method is exemplary . the method steps may occur in differing orders . some steps may be omitted in other embodiments . as such , alternate methods may be envisaged . in an exemplary embodiment , a check for win routine 276 ( fig1 ) begins scanning for a win by initializing the pointers for winning patterns in play and cards in play at step 298 . a select next card step loads the first card mark mask at step 300 . a select next win pattern step loads the next win pattern to be checked for this game at step 302 . if the win pattern bits match bit in the bingo card mark mask at step 304 , then the bingo flag is set to mark the win , the routine then returns to the game number updating routine at step 312 . otherwise , more patterns are checked at step 308 . if there are more patterns then the program returns to step 302 . otherwise more cards are checked at step 310 . if more cards exist the program returns to step 300 . otherwise the program returns to the game number updating routine at step 312 . an exemplary score card routine 314 in fig1 checks whether the loaded card has earned bingo . the pointers that track the winning patterns are first set to the beginning at step 316 . next , the next winning pattern is loaded for comparison with the bingo cards at step 318 . the card mask bits are set to “ on ” or “ 1 ” at step 320 and the bits not set are counted at step 322 . the number of not set bits are compared to a minimum score variable at step 324 . if the card bits are less than the minimum score , then the minimum score is updated to the value of the bit count form step 322 . the minimum score pattern count is then updated . the program then jumps to step 330 to check for more patterns . if the comparison of the minimum score to the counted not set bits is equal , then the count of patterns at min . score is incremented and the program jumps to step 330 . if the count bit are greater than the minimum score the program returns to step 318 . at step 330 , if there are more patterns the program jumps to step 318 ; otherwise the card score is updated at step 332 . the card score is equal to the minimum score multiplied by the number patterns minus the count at minimum score . the program then returns to the game number updating routine at step 334 . the next game display routine 336 in fig1 loads in the winning pattern information for the part of a continuing game or loads in the winning patterns for a new game . the next game information is loaded from the game table at step 338 and gets the game info including the pattern pointer and number of cards and wild card data for the game at step 340 . a check is made to determine whether this information is a new game or a new part of an existing game at step 342 . if the game information is a new part of an existing game the routine jumps to step 343 . otherwise , the routine sets up the bingo device to play a new game . a first card number is calculated at step 344 to determine how many cards have been allotted from the bingo card memory for this game at step 344 . then the corresponding number of bingo cards is loaded from the list of bingo cards at step 346 . the program then jumps to step 343 to load in the winning pattern information and wild card information for the next round of play . winning patterns from the flash are read at step 348 . when proceeding to the next part of an existing game , all numbers are re - scored based on the new patterns at step 350 by jumping to the score card routine until all cards have been scored . however , the methods of fig1 , 11 , and 12 may or may not be included or may take alternate forms . an example of the operation of the embodiment of the present invention described herein is now given . the game device is disabled until a game key is inserted . this game key may contain game data representing the number of games authorized for that player , the number of cards purchased containing star information , the number of cards to be played each game , and the winning patterns that are valid for each game . alternatively , the game key may enable the game device to receive game data into flash ram via the ir transceiver or the radio interface . each game device contains a list of cards in flash ram . the details of the storage of this information are covered in a later section . when the player presses the enter button in the numeric keypad on a game device that has just had its game key inserted , the first game is selected . pressing one or two numbers followed by the enter key will cause that number to be daubed . if a number is displayed on the bingo board that has not been called , it may be removed by pressing one or two numbers and the delete key . pressing the bingo board button will cycle the display to the 1 , 4 , 9 flashboard screens . the normal display will return when the bingo board button is pressed again . if the daubed numbers on one or more of the cards in play match the winning criteria ( one or more patterns on 1 or more sheets ) an audible alarm may sound and the numbers on that sheet that form the winning criteria will be shown and all others will remain not highlighted . all buttons will continue to operate so that any necessary corrections may be made if the win was due to erroneous entry . some games allow for wild numbers to be entered at the beginning of a game . these numbers are daubed by entering a number followed by the wild button , followed by the enter key . they may be undaubed by entering the number , followed by the wild button , followed by the delete key . the following sections describes the wild algorithms that may be used : the wild algorithm is selected per game as determined by the house . the algorithm to be used in each game is stored in the game data that configures the game device for play . when the wild number is entered , a group of numbers is daubed simultaneously based on the selected wild algorithm , which may be one of the following : even / odd — if the number entered is even , all even numbers on the card will be daubed . if the number entered is odd , all odd numbers on the cards will be daubed . the method for determining the number of a card is now described . a bingo card consists of 5 columns of 5 numbers . in the first column , five numbers from the range of 1 to 15 may be arranged in any order . in the second column , five numbers from the range 16 to 30 , in the third 31 to 45 , in the fourth 46 to 60 , in the fifth 61 to 75 . thus in the first position there are 15 possible numbers . in the second , there are 14 ( the one number chosen for the first position cannot be reused ), in the third there are 13 , etc . in the second column , the sequence is repeated . thus , the number of possible numbers for each position in each column are as follows : ( 15 , 14 , 13 , 12 , 11 , 15 , 14 , 13 , 12 , 11 , 15 , 14 , 13 , 12 , 11 , 15 , 14 , 13 , 12 , 11 , 15 , 14 , 13 , 12 , 11 ). multiplying the first five of these numbers gives the number of combinations in a single column , multiplying all these numbers gives the number of possible different bingo cards . each column thus has the potential of 360 , 360 different combinations and the total number of different cards is 6 . 0796911214672 * 10 27 . the identification of winning patterns is now described . winning patterns can consist of from 1 to 25 positions on a card . this can be identified by a vector of 25 bits . a one bit in any position indicates that the position on the card corresponding to that bit is required by that pattern . for example , the following win mask identifies the common bingo pattern of all numbers in the first column being daubed : 000000000000000000011111 . and this win mask identifies the pattern of all numbers in the first row being daubed : 0000100001000010000100001 . these numbers can be conveniently fitted into a long integer ( 32 bits ). the upper 7 bits are reserved . the storage of bingo cards is now described . flash ram 52 in fig3 includes memory space to house data representative of at least 1 , 000 unique bingo cards . this data includes 25 numbers between 1 and 75 randomly chosen for each of the bingo cards and may use 20 bytes for each card . the card cells are numbered from 0 - 24 in which this numbering identifies bits in the patterns and the storage of numbers in the games in play arrays . bingo cards may be stored in the flash ram in a table with entries of the form : byte ( s ) function 0 - 12 canonical card representation 13 - 15 serial number the canonical card representation is discussed above . the serial number is a number assigned to the card in the master card set . the storage of game data in flash ram 52 and game key 44 is now described . one segment of the game data is the win pattern table , which contains a list of all winning patterns . note that most winning patterns may require multiple entries in the table . for example , the standard bingo winning pattern of any row , any column , or the two diagonals would require 12 entries : one for each of the 5 rows ; one for each of the 5 columns , and one for each of the two diagonals . each entry in the win pattern table may be in the following format : the entries are arranged in an array with 0 referring to the first element in the array , as shown below . the number of entries in this table is limited only by the memory in the game device . another segment of the game data is the game / part table , which contains authorized game numbers , the number of games , and the winning patterns for each game . there are two formats for entries in this table : the game header and the part header . single part games will have one game header , followed by one part header . multipart games will have one game header followed by as many part headers as there are parts to the game . these two headers may take various formats . the method of scoring cards is now described . in bingo , all that really matters for winning is if a pattern is complete . the card either has a pattern completed or it does not . but , in order to determine which are the best cards in play , it is necessary to give each card a score . this score is determined as follows : first , cards are scored by the pattern closest to a pattern match . for example a card that is one away from winning on some combination is better that a card that has no combination better than two away . next , the cards that are at any given rank are then further ranked by how many different combinations are at the minimum . for example a card that is one away on two different patterns is better that one that is one away on only one pattern . lastly any ties are broken by where the card was in the previous ranking . this prevents the cards from jumping around in order when the score has not changed as a result of sorting them . these scores are combined as follows : score =( d on * n patterns − n on )* n cip + r old d on number of numbers required for win on the best pattern on this card . n on number of patterns that are at d on from a win . the scores are then ordered from best to worst . the best is assigned rank 0 and each card is assigned a successively higher rank in order of its score , with the worst receiving a rank of numcard - 1 . after the first ranking , all the scores will be unique since r old is unique . as such , an apparatus and method are described for monitoring bingo cards . in view of the above detailed description of the present invention and associated drawings , other modifications and variations will now become apparent to those skilled in the art . it should also be apparent that such other modifications and variations may be effected without departing from the spirit and scope of the present invention as set forth in the claims that follow .
an apparatus and method are described for monitoring bingo cards using a portable game device . the game device has a central processing unit , a bit - mapped color display and memory containing representations of bingo cards , a series of games to be played and their rules , and the number of cards to be played . the game device may be battery powered and adopt reduced power modes of operation to conserve battery life . an external power supply may be connected to the game device without interrupting a game in progress . the game device may have more than one battery and charge one battery fully before recharging the other batteries . the game device may have a wireless communications port , through which the memory may be loaded . a communications protocol with security elements may be used for loading the memory . the game device may test its circuitry and data in memory before commencing game play .