U.S. Pat. No. 7,991,890

GAME CONSOLE COMMUNICATION WITH A DEVICE

AssigneeMicrosoft Corporation

Issue DateSeptember 30, 2004

Illustrative Figure

Abstract

Communication between a game console having a communication port and a portable device is facilitated by determining that a portable device has been directly connected to the communication port, determining the protocol associated with the portable device, and communicating with the portable device using a driver associated with the determined protocol. An ancillary application may handle the communication between the game console and the portable device while a game or entertainment application executes concurrently on the game console. The game application may execute in a reserved predetermined amount of hardware resources of the game console while the ancillary application may execute concurrently using the remaining hardware resources.

Description

DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS FIG. 1illustrates the functional components of a game console100with which aspects of the invention may be implemented. The game console100has a central processing unit (CPU)101having a level 1 (L1) cache102, a level 2 (L2) cache104, and a flash ROM (Read-only Memory)106. The L1 cache102and L2 cache104temporarily store data and hence reduce the number of memory access cycles, thereby improving processing speed and throughput. The flash ROM106may store executable code that is loaded during an initial phase of a boot process when the game console100is powered. A graphics processing unit (GPU)108and a video encoder/video codec (coder/decoder)114form a video processing pipeline for high speed and high resolution graphics processing. Data is carried from the graphics processing unit108to the video encoder/video codec114via a bus. The video processing pipeline outputs data to an A/V (audio/video) port140for transmission to a user interface, such as, for example, a television or other display. A memory controller110is connected to the GPU108and CPU101to facilitate processor access to various types of memory112, such as, but not limited to, a RAM (Random Access Memory). The game console100includes an I/O controller120, a system management controller122, an audio processing unit123, a network interface controller124, a first Universal Serial Bus (USB) host controller126, a second USB controller128and a front panel I/O subassembly130that are preferably implemented on a module118. While two USB controllers126and128are shown inFIG. 1, there may be three, four (such as shown inFIG. 2), or any number of USB controllers. USB controllers126and128may be used to communicate with a variety of devices, including portable multimedia devices, and the like, as described in more detail below. USB controllers126and128include USB ports for connection to a variety of USB compatible multimedia devices. The network interface controller124provides access to a network (e.g., the Internet, home network, and the like) and may be any ...

DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS

FIG. 1illustrates the functional components of a game console100with which aspects of the invention may be implemented. The game console100has a central processing unit (CPU)101having a level 1 (L1) cache102, a level 2 (L2) cache104, and a flash ROM (Read-only Memory)106. The L1 cache102and L2 cache104temporarily store data and hence reduce the number of memory access cycles, thereby improving processing speed and throughput. The flash ROM106may store executable code that is loaded during an initial phase of a boot process when the game console100is powered.

A graphics processing unit (GPU)108and a video encoder/video codec (coder/decoder)114form a video processing pipeline for high speed and high resolution graphics processing. Data is carried from the graphics processing unit108to the video encoder/video codec114via a bus. The video processing pipeline outputs data to an A/V (audio/video) port140for transmission to a user interface, such as, for example, a television or other display. A memory controller110is connected to the GPU108and CPU101to facilitate processor access to various types of memory112, such as, but not limited to, a RAM (Random Access Memory).

The game console100includes an I/O controller120, a system management controller122, an audio processing unit123, a network interface controller124, a first Universal Serial Bus (USB) host controller126, a second USB controller128and a front panel I/O subassembly130that are preferably implemented on a module118. While two USB controllers126and128are shown inFIG. 1, there may be three, four (such as shown inFIG. 2), or any number of USB controllers. USB controllers126and128may be used to communicate with a variety of devices, including portable multimedia devices, and the like, as described in more detail below. USB controllers126and128include USB ports for connection to a variety of USB compatible multimedia devices.

The network interface controller124provides access to a network (e.g., the Internet, home network, and the like) and may be any of a wide variety of various wired or wireless interface components including an Ethernet card, a modem, a Bluetooth module, a cable modem, and the like.

Game console100may communicate with game controller190via USB controller126, as shown inFIG. 1. Game controller190typically functions as an input device to game console100whereby a user may input information into game console100via the game controller190while “playing” a game application. Game controller190may include a gamepad, buttons, and the like.

System memory143stores application data that is loaded during the boot process. A media drive144is provided and may comprise a DVD/CD drive, hard drive, or other removable media drive, and the like. Application data may be accessed via the media drive144for execution, playback, etc. by the game console100. The media drive144is connected to the I/O controller120via a bus, such as a Serial ATA bus or other high speed connection (e.g., IEEE 1394).

The system management controller122provides a variety of service functions related to assuring availability of the game console100. The audio processing unit123and an audio codec132form a corresponding audio processing pipeline with high fidelity and stereo processing. Audio data is carried between the audio processing unit123and the audio codec126via a communication link. The audio processing pipeline outputs data to the A/V port140for reproduction by an external audio player or device having audio capabilities.

The front panel I/O subassembly130supports the functionality of the power button150and the eject button152, as well as any LEDs (light emitting diodes) or other indicators exposed on the outer surface of the game console100. A system power supply module136provides power to the components of the game console100. A fan138cools the circuitry within the game console100.

The CPU101, GPU108, memory controller110, and various other components within the game console100are interconnected via one or more buses, including serial and parallel buses, a memory bus, a peripheral bus, and a processor or local bus using any of a variety of bus architectures.

When the game console100is powered on or rebooted, application data may be loaded from the system memory143into memory112and/or caches102,104and executed on the CPU101. The application may present a graphical user interface that provides a consistent user experience when navigating to different media types available on the game console100. In operation, game applications and/or other media contained within the media drive144may be launched or played from the media drive144.

The game console100may be operated as a standalone system by connecting the system to a television or other display. In this standalone mode, the game console100allows one or more local users to interact with the system and play game applications. However, with the integration of broadband connectivity made available through network interface124or the wireless adapter148, the game console100may further be operated as a participant in a larger network community.

Because of the high processing demand of gaming applications, game console100typically dedicates a large percentage of processing time and resources to the gaming application and distributes the remaining processing time and resources to other applications, such as servicing devices connected to USB controllers126,128, and the like.

Game console100(or any other multimedia console that dedicates a percentage of processing time and resources to a multimedia application) may allow a game application to retain substantial control over the hardware resources of the game console100, so that game developers can rely on having a certain amount of processing time and resources. For example, game console100may reserve a predetermined amount of game console hardware resources for game applications while the remainder of hardware resources are controlled by other applications (such as communicating with multimedia devices connected to the game console100). In this manner, the game application retains substantial control over hardware resources, unlike applications executing in conventional personal computing (PC) operating systems which have little control over hardware resources. As such, game applications do not need to directly support ancillary functionalities. Instead, such ancillary functionalities may be implemented in the remaining (non-dedicated) hardware resources of game console100.

In order to present a consistent, unchanging resource usage signature for the game applications, a number of different game console resources may be managed. These various resources may include the CPU101, cache memory102,104, main memory112, audio channels, game controller input, and the like. For example, an operating system kernel of the game console100may reserve resources for game applications. The operating system kernel may reserve a predetermined amount of memory for game applications and typically does not make this reserved memory available to the other applications. The kernel, drivers, and any other game-related code, including the game application, may reside in this reserved memory. If the game application requires less than the full amount of available dedicated memory, the kernel typically still allocates and reserves the predetermined amount of memory so that the game application sees a consistent amount of available memory. In particular, the memory reservation may be large enough to contain the launch kernel, game application, and drivers. Typically, this reservation allows enough remaining resources for new ancillary applications and drivers over the life of the game console100, as well as any anticipated expansion in the size of the ancillary applications and driver footprint. Alternatively, game console100may reserve resources for the ancillary application or for both the game application and the ancillary application.

Further, the operating system kernel may reserve a second predetermined amount of memory for use in communication between the game application and the ancillary applications. Such communication may occur, for example, when an ancillary application receives a user request that should cause some action to occur in the game application. For example, if an ancillary application receives a request to display a digital picture, this should typically cause the game application to pause. This second predetermined amount of memory can be used to transmit information to the game application, causing the game application to pause.

The operating system kernel may also reserve a predefined number of audio channels (monophonic streams) for use by ancillary applications (e.g., ten audio channels may be reserved out of roughly300available channels in a typical game console100).

The operating system kernel loads drivers that may include a GPU driver that sets up an interrupt. The interrupt may be a GPU interrupt, such as, for example, a programmable scan line interrupt that generates an interrupt when the video output reaches a predetermined scan line on the video display or may be another suitable interrupt source. The GPU interrupt may be used to keep in synch with the GPU video frame and ancillary applications may be scheduled in response to a scan line interrupt from the GPU.

Game console100may also include an MP3 decoder, a WMA decoder, and the like for decoding audio (e.g., music) files or other files. The operating system kernel may load decoders and the like into memory or the decoders may be loaded into memory when appropriate. In this manner, game console100can provide for playing music without some intermediary device, such as a personal computer. That is, as described in more detail below, an MP3 player may be directly connected to game console100and the music can be played via the game console100.

In a multiprocessor game console, the reservation of CPU time (e.g., implemented via interrupts or other techniques) may be distributed among the CPUs in various fashions. For example, the game application may be executed on a first CPU (and may also be executed on the other CPUs) with no ancillary applications being executed on the first CPU. Ancillary applications may be scheduled at times on the other CPUs. Ancillary applications may be scheduled for X % of CPU processing time on a second CPU and Y % of CPU processing time on a third CPU. Further, the X % and Y % of processing time may be scheduled at the end of processing a video frame. The X % and Y % of processing time may be equal (i.e., symmetric) or non-equal (i.e., asymmetric). Further, the determinations of the X % and Y % of processing time may be based on design requirements for ancillary applications.

Both the game application and the ancillary application may expect to receive user input, however, conventional game applications have complete control over user input (e.g., via game controller190, “gamepad” input). Game console100, however, appropriately manages or shares the user input (e.g., game controller190input) between the game application and the ancillary applications. Typically, game applications are not aware of when they lose user input focus from the game controller190to an ancillary application or when it is restored back to the game application. Therefore, gamepad state (e.g., what game controller190buttons are pressed) is maintained when user input focus is switched between the game application and the ancillary application. Further, the state set on the gamepad in the game application, while the game application does not have the input focus, may be queued and maintained until the user input focus is returned to the game application. For example, if the game application sets a gamepad vibration state (e.g., a state in which a vibration generating motor runs in the gamepad to cause the gamepad itself to vibrate) while the ancillary application has the user input focus, this vibration state is queued (and updated) to be consistent when the user input focus is restored to the game application. The input devices are not reserved resources, but are switched between the game application and the ancillary application such that each will have the appropriate focus of the device. An application manager may control the switching of input stream, without the game application's knowledge, and a driver may maintain state information regarding focus switches. Other types of user interaction are possible, such as pausing the game application when the user interacts with an ancillary application, etc.

FIG. 2is a block diagram of various exemplary devices being directly connected to the game console100. In the illustrative game console100shown inFIG. 2, there are four USB controllers126,128,226,228. Each USB controller may be connected to a variety of exemplary devices. For example, as shown inFIG. 2, USB controller126is directly connected (rather than being connected via a network) to a portable media device210, USB controller128is directly connected to a networking device220, USB controller226is directly connected to a portable storage device230, and USB controller228is directly connected to a communication device240. While the exemplary devices are shown as being directly connected to USB ports of game console100, game console100may include other communication ports for direct connection to the exemplary devices.

Portable media device210may be any portable media device compatible with the communication ports of game console100(i.e., USB controller126) including, for example, smart portable phone210A, digital camera210B, video camera210C (which may be Firewire compatible), personal digital assistant (PDA)210D, audio player210E (which may be a MP3 player, a player compatible with WMA files, etc.), and the like, as shown inFIG. 3a.

Networking device220may be any networking device compatible with the communication ports of game console100(i.e., USB controller128) including, for example, USB cable modem220A, USB wireless adaptor220B, wireless flash configuration device220C, and the like, as shown inFIG. 3b.

Portable storage device230may be any portable storage device compatible with the communication ports of game console100(i.e., USB controller226) including, for example, USB memory device230A, and the like, as shown inFIG. 4a.

Communication device240may be any communication device compatible with the communication ports of game console100(i.e., USB controller228) including, for example, web camera240A, keyboard240B, mouse240C, and the like, as shown inFIG. 4b.

The variety of portable devices available for connection to a USB port may communicate in accordance with a variety of protocols or standards. For example, portable devices may communicate in accordance with Media Transfer Protocol (MTP), Picture Transfer Protocol (PTP), a protocol consistent with the USB Mass Storage Specification, HID driver protocol, Firewire protocol, a proprietary protocol, and the like. Game console100may support many protocols, a single protocol, or any combination of protocols. For example, game console100may support only the MTP protocol. Alternatively, game console100may support the MTP protocol, the PTP protocol, and the HID driver protocol, but not support any proprietary protocols. Further, game console100may support multiple proprietary protocols so that many devices using various proprietary protocols may communicate with game console100.

Game console100may provide support for particular protocols by implementing a driver (consistent with the particular protocol) that is used to communicate between the game console100(e.g., an ancillary application of game console100) and a portable device connected to a USB port of game console100. The drivers are typically associated with only a single protocol, however, the drivers may be associated multiple protocols (and thus be able to communicate in accordance with multiple protocols). The drivers may be stored in system memory143, in ROM106, in media drive144, or the like.

A driver may support only a portion of a particular protocol in order to conserve memory consumption in game console100. For example, if a particular protocol includes a reference to logging functionality, the driver may not include the functionality to support logging. Thus, the driver may support only a subset of a particular protocol's features. The unsupported functions are typically features or functions that are typically not critical.

The MTP protocol driver (as well as the other protocol drivers) may be implemented in three portions. The lowest third portion of the driver being an abstraction of the bus, the middle portion being the implementation of basic MTP logic, and the top portion being an Application Programming Interface (API) that allows for the use of MTP logic. The MTP protocol driver (as well as other protocol drivers) may be optimized by not including all of the functionality of the MTP protocol, as described above. For example, the MTP protocol driver may not support driver-level caching, logging capabilities, and the like. This reduces the size of the driver, thereby allowing the MTP protocol driver to fit more comfortably into the memory reserved for non-gaming or ancillary applications or allowing additional drivers to be loaded into the memory reserved for non-gaming or ancillary applications. In this manner, game console100may support communication with more types of portable devices.

Game console100may load drivers associated with the supported protocols upon startup or power-up of game console100. Alternatively, game console100may load the appropriate driver when a portable device associated with that driver is connected to one of the USB controllers of game console100.

Turning now toFIG. 5, it shows an illustrative method500for game console100to communicate with portable media device210or portable storage device230. As shown inFIG. 5, at step510, game console100detects that portable media device210or portable storage device230has been connected to USB controller126of game console100. The detection of portable device connection may include any conventional technique for detecting that a device has been connected to a communication controller, such as, for example, the Plug and Play peripheral model and the like. Detection of portable device connection may cause the launching of an ancillary application or multiple ancillary applications for communicating with the portable device. Each ancillary application may implement a single or multiple steps ofFIG. 5, directly or via a driver. A first ancillary application (or multiple ancillary applications) may handle the detection of the connection of the portable device, and in turn launch other ancillary applications for communicating with the portable device. The ancillary applications may interface with a driver (which may be launched on startup or later at step520) for communicating with the portable device.

At step520, game console100determines the protocol associated with the connected portable media device210or portable storage device230(and may also determine the type of portable device). For example, game console100may determine that the portable media device210that has been connected to USB controller126communicates via the MTP protocol, the PTP protocol, or the like. Alternatively, game console100may determine that the portable storage device230that has been connected to USB controller126communicates in accordance with the USB Mass Storage Specification, a variation of the USB Mass Storage Specification, or the like. Game console100may also determine that portable media device210or portable storage device230communicates via some proprietary protocol. The proprietary protocols may be device specific, may be manufacturer specific, or the like.

At step530, game console100uses the driver associated with the protocol determined at step520to communicate with portable media device210or portable storage device230and to determine the media (e.g., files, and the like) on the portable media device210or portable storage device230. For example, game console100may communicate with digital camera210B via the PTP protocol and determine that digital camera210B is storing ten digital photographs in the Joint Photographic Expert Group (JPEG) format (i.e., ten JPEG files). Game console100may communicate with USB memory device230A in accordance with the USB Mass Storage Specification and determine that USB memory device230A is storing ten digital photographs in the JPEG format (i.e., ten JPEG files).

At optional step535, game console100may determine the digital rights associated with the media files determined at step530. For example, game console100may determine that there are no digital rights associated with the ten JPEG files stored on digital camera210B or stored on USB memory device230A. In such a case, game console100may proceed directly to step540. Alternatively, game console100may determine that there are some digital rights associated with the media stored on portable media device210or portable storage device230. In such a case, game console100may not proceed directly to step540, but may instead end any processing associated with portable media device210or portable storage device230, may allow the user to only view metadata associated with the media files (e.g., the names of the media files), may allow the user to access (“play”) the media files but not forward or copy the media files, and the like.

At step540, game console100displays a list of the media files stored on portable media device210or portable storage device230on the user interface associated with game console100(e.g., on a television via A/V port140). For example, game console100may display a list of the names of the ten JPEG files found on digital camera210B or USB memory device230A. Game console100may start an ancillary application that interfaces with the user and determines how the user wishes to interact with the media files. The ancillary application typically runs within the processing time left over from the processing time dedicated to the gaming application. If, however, no gaming application is executing, the ancillary application may be the only application running, and thus may not be restricted in its execution. In such a case, upon execution of a gaming application, the ancillary application may be stopped and the gaming application may then execute using its normally dedicated resources.

At step550, the ancillary application (e.g., via game controller190or other input device), receives a selection from a user for a particular media file stored on portable media device210or portable storage device230. For example, using game controller190, a user may input and game console100may receive a selection of the first of the ten JPEG files on digital camera210B. Further, using game controller190, the user may input and game console100may receive a selection to display each of the ten JPEG files on digital camera210B consecutively as a slide show.

At step560, game console100plays the selected media file or files. Game console100may convert the selected media file from its existing format (e.g., JPEG format) into an appropriate format for display via the audio/visual port140. For example, game console100(via the ancillary application) may convert the first of the ten JPEG files on digital camera210B into an appropriate format (e.g., for display via audio/visual port140) and then display the media associated with the media file onto a display device (e.g., a television via the A/V port140). Game console100may play the selected media file by first copying the file to memory112or media drive144and then playing the media file from memory112or media drive144. Alternatively, game console100may play the selected media file by streaming the media file from the portable device to the game console100.

Game console100may execute steps510through560while the game application is executing. In such a case, steps510through560are typically executed within the processing time and resources that are not dedicated to the gaming application. Further, if steps510through560are being executed while the game application is executing, game console100may, at step510indicate in a non-obtrusive way that game console100has detected the connection of a particular USB compatible device and may interact with game controller190to receive further processing instructions. For example, game console100may display a small icon on the screen to notify the user that game console100has detected that a USB compatible device has been connected to the USB controller126or128. The game console100may wait for input from game controller190before proceeding to display the list of media files at step540. Alternatively, game console100may automatically pause the game application upon detecting that a device has been connected to the USB controller126or128and wait for receiving user instructions via the game controller190to receive further processing instructions.

The method500ofFIG. 5enables a variety of user choices for playing media files. For example, a user may take vacation pictures on their digital camera210B. Then, the user can take the digital camera210B to their friend's house and plug it into the USB controller of their friend's game console100and show their vacation pictures to the friends on a large television display instead of a small camera display. The game console100may display (e.g., on a large screen or plasma screen television) a list of the digital pictures on the digital camera210B (possibly along with small versions of the images) and allow the user to select particular digital pictures or to select showing all of the digital pictures in a slide show format. In this manner, a user can simply plug digital camera210B into game console100and then use the user-friendly interface of game console100instead of the digital camera210B user interface.

Further, a user may take vacation pictures on their digital camera210B and then store them onto a USB memory device230A (e.g., via a personal computer). Then, the user can take the portable USB memory device230A to their friend's house and plug the device230A into the USB controller of their friend's game console100and show their vacation pictures.

Also, a user may store audio (e.g., music) onto audio player210E and play the music via game console100. Game console100may display a music visualizer (e.g., on a television via A/V port140) based on the music and thus, provide a much more interesting listening experience.

Additionally, a user may decide that they are tired of listening to the soundtrack of a particular game application and may then download a group of songs onto an audio MP3 player210E (e.g., from their personal computer via the Internet). Then the user can connect their MP3 player to USB controller126. Game console100detects the connection of MP3 player210E and displays a Soundtrack menu. The user can then select a particular song or group of songs on the MP3 player and game console100plays the user's song selection instead of the game application's default song. Alternatively, a user may use game console100to play songs on their MP3 player without playing any game application on game console100.

Further, a user may connect a smart phone210A, video camera210C, PDA210D, a mobile phone including a camera and storage for media files, and the like to game console100and play media files stored on smart phone210A, video camera210C, PDA210D, in a similar manner as described above.

FIG. 6shows an illustrative method600for game console100to communicate with networking device220or communication device240. As shown inFIG. 6, at step610, game console100detects that networking device220or communication device240has been connected to USB controller128or228of game console100. Detection of portable device connection may cause the launching of an ancillary application or multiple ancillary applications for communicating with the portable device. Each ancillary application may implement a single or multiple steps ofFIG. 6, directly or via a driver.

At step620, game console100determines the protocol of the connected networking device220or communication device240(and may also determine the type of portable device). For example, game console100may determine that the USB cable modem220A or USB wireless network adapter220B communicates in accordance with the USB Mass Storage Specification. Alternatively, game console100may determine that wireless flash configuration device220C communicates via a proprietary protocol, or the like. Further, game console100may determine that web camera240A, keyboard240B, or mouse240C communicates via a proprietary protocol or via an HID mouse driver, or the like

At step630, game console100uses the driver associated with the protocol determined at step620to communicate with the connected networking device220or communication device240. For example, game console100may communicate with web camera240A thereby providing images to game console100. Game console100may communicate with networking device220, such as, USB cable modem220A or USB wireless adapter220B to provide network capability to game console100. Further, game console100may communicate with communication device240, such as, keyboard240B or mouse240C, thereby providing an alternative user input device (i.e., in addition to game controller190).

The method600ofFIG. 6enables a variety of user choices for networking with game console100. For example, a user may wish to play online games but may not have a personal computer to access the Internet and some game consoles are not provided with a network interface. Also, some Internet Service Providers may only allow access via cable modems and some game consoles are not provided with internal cable modems. Connecting an external cable modem220A to game console100enables access to the Internet regardless of the networking hardware provided with the game console.

Further, connecting a keyboard or mouse enables a user to interact with a gaming application via the keyboard240B or mouse240C, in addition to the conventional game controller190. Connection of web camera240A may enable video chat, instant messaging with video images, community lounges, and the like.

FIG. 7shows an illustrative method700for game console100to communicate with wireless flash configuration device220C. As shown inFIG. 7, at step710, game console100detects that wireless flash configuration device220C has been connected to USB controller226of game console100. Detection of portable device connection may cause the launching of an ancillary application or multiple ancillary applications for communicating with the portable device. Each ancillary application may implement a single or multiple steps ofFIG. 7, directly or via a driver.

At step720, game console100determines the protocol of the connected wireless flash configuration device220C (and may also determine the type of portable device). For example, game console100may determine that the portable media device210communicates in accordance with the USB Mass Storage Specification. Game console100may also determine that wireless flash configuration device220C communicates via some proprietary protocol.

At step730, game console100uses the driver associated with the protocol determined at step720to communicate with wireless flash configuration device220C.

At step740, game console100displays a networking configuration wizard and receives user inputs in response to displayed prompts for network information from the configuration wizard.

At step750, game console100, writes the network configuration information to the wireless flash configuration device220C using the determined protocol. In this manner, a user may utilize a convenient user-friendly interface (via game console100) to configure their wireless network (e.g., their home wireless network, which may not include game console100), rather than dealing with the complexity of configuring the wireless network using a personal computer.

Game console100may execute steps710through750while the game application is executing. In that case, steps710through750are typically executed within the processing time and resources that are not dedicated to the gaming application. Further, if steps710through750are being executed while the game application is executing, game console100may, at step710indicate in a non-obtrusive way that game console100has detected the connection of a particular USB device and may interact with game controller190to determine how to proceed. For example, game console100may display a small icon, sometimes called a “notification,” on the screen to notify the user that game console100has detected a portable device being connected to USB controller126or128. Alternatively, game console100may automatically pause the game application upon detecting that a device has been connected to the USB controller126or128and wait to receive user instructions via the game controller190to determine how to proceed.

The connectivity between game console100and various portable devices provides increased flexibility for gaming, also. For example, a user may store gaming application data on USB memory device230A, thus making that data portable. For example, a user may store a game-clip (also referred to as a “ghost race”, a “highlight”, a “highlight race”, or a “saved game”) onto USB memory device230A. Thus, the game clip can be carried to a friend's game console on the USB memory device230A. Game console100, in such a case, would provide a user interface for both storing gaming application data to the USB memory device230A and uploading the stored gaming application from the USB memory device230A to another game console. Game demos are other game-related data that may be stored and uploaded to/from USB memory device230A.

Other gaming data that may be stored on USB memory device230A includes gaming configuration data also called a “gamer profile.” For example, game console100may store game related configuration settings, such as, a “left handed” game controller190configuration to USB memory device230A. In this manner, a user can carry USB memory device230A to their friend's house and be able to upload that “left handed” game controller190configuration to their friend's game console100.

Further gaming data that can be stored and uploaded via USB memory device230A includes a team icon, a custom playbook/roster, a player emblem, a log of last played games, customization, a racing game suspension setting, a racing game bike model or color, a racing game suit color, and the like. If the user then plays the game at a friend's house, the user can access the stored game settings via the USB memory device230A by uploading his game configuration settings to the game console100at the friend's house.

Aspects of the invention may be implemented via computer storage media and communication media. Computer storage media includes volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules, or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a computer.

Communication media typically embodies computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as carrier wave or other transport mechanism. Communication media also includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above are also included within the scope of computer readable media.

It should be noted that although the game console discussed herein is described as a dedicated game console (not a general-purpose PC running computer games), the game console may also incorporate additional functionality. For example, the game console may be a multimedia console and may include digital video recording functionality so that it can operate as a digital VCR, the game console may include channel tuning functionality so that it can tune and decode television signals (whether they be broadcast signals, cable signals, satellite signals, etc.), and so forth. Further, in alternate embodiments, the game console is replaced with a set top box or other computing device.

As the foregoing illustrates, the invention is directed to game console communication to portable devices. It is understood that changes may be made to the illustrative embodiments described above without departing from the broad inventive concepts disclosed herein. Accordingly, it is understood that the invention is not limited to the particular embodiments disclosed, but is intended to cover all modifications that are within the spirit and scope of the invention as defined by the appended claims.

Claims

  1. A computer implemented method for communication between a game console having a communication port and a portable device, the method comprising: reserving a first predetermined amount of hardware resources of a game console for executing a game application, the first predetermined amount of hardware resources reserved for later use by only the game application and made unavailable to other applications regardless of amount of resources used by the game application;reserving a second predetermined amount of hardware resources different than the first predetermined amount of hardware resources which allow communication between the game application and an ancillary application to allow one or the other of the game application and the ancillary application having user input focus to transmit user input information to the other of the game application and the ancillary application not having user input focus;executing the game application using the first predetermined amount of reserved hardware resources;upon detecting that a portable device has been communicatively coupled to a communication port of the game console, launching the ancillary application, the ancillary application: concurrently executing using remaining hardware resources to communicate between the game console and the portable device, determining a protocol associated with the portable device, and communicating with the portable device via a driver compatible with the determined protocol, the driver supporting a subset of features provided by the determined protocol and occupying less memory than a full-featured driver;and upon receipt of a request at the ancillary application, the request requiring action by the game application, the ancillary application transmitting information regarding the request to the second predetermined amount of hardware resources which causes the game application to pause.
  1. The method as recited in claim 1 , wherein reserving the first predetermined amount of hardware resources comprises reserving a predetermined amount of memory for the game application.
  2. The method as recited in claim 1 , wherein reserving the first predetermined amount of hardware resources comprises reserving a portion of central processing unit time for the game application.
  3. The method as recited in claim 1 , wherein the communication port is a Universal Serial Bus port.
  4. The method as recited in claim 1 , wherein determining the protocol associated with the portable device comprises determining that the protocol is a Media Transfer Protocol.
  5. The method as recited in claim 5 , wherein communicating with the portable device comprises communicating via a Media Transfer Protocol compatible driver supporting only a subset of features supported by the Media Transfer Protocol.
  6. The method as recited in claim 1 , wherein determining the protocol associated with the portable device comprises determining that the protocol is a Universal Serial Bus protocol.
  7. The method as recited in claim 7 , wherein communicating with the portable device comprises communicating with the portable device via a Universal Serial Bus Mass Storage Specification compatible driver supporting only a subset of features supported by the Universal Serial Bus Mass Storage Specification.
  8. The method as recited in claim 1 , wherein communicating with the portable device comprises one of writing a game controller configuration setting to the portable device and receiving a game controller configuration setting from the portable device.
  9. The method as recited in claim 1 , wherein communicating with the portable device comprises one of writing a game application configuration setting to the portable device and receiving a game application configuration setting from the portable device.
  10. The method as recited in claim 1 , further comprising: determining a media file stored on the portable device;writing an indication of the media file to an audio/visual port for display on a display device;receiving a user selection of the media file;and playing the selected media file.
  11. The method as recited in claim 11 , wherein playing the selected media file comprises playing a slide show of digital photographs.
  12. The method as recited in claim 1 , further comprising: writing wireless network configuration prompts to an audio/visual port for display on a display device;receiving wireless network configuration information from an input device of the game console;and storing the received wireless network configuration information to a Universal Serial Bus flash configuration device connected to the communication port.
  13. The method as recited in claim 1 , wherein determining that a portable device has been directly connected to the communication port comprises determining that a portable networking device has been directly connected to the communication port and further comprising providing network communication to the game console via the portable networking device.
  14. The method as recited in claim 1 , the step of reserving a second predetermined amount of hardware resources further comprising reserving a second predetermined amount of memory for storing the transmitted user input information.
  15. The method as recited in claim 1 , further comprising sharing an input device between the game application and the ancillary application.
  16. A computer implemented method for communication between a game console having a communication port and a portable device, the method comprising: reserving a first predetermined amount of hardware resources of a game console for executing a game application, the first predetermined amount of hardware resources reserved for later use by only the game application and made unavailable to other applications regardless of amount of actual resources used by the game application;reserving a second predetermined amount of hardware resources different than the first predetermined amount of hardware resources which allow communication between the game application and an ancillary application to allow one or the other of the game application and the ancillary application having user input focus to transmit user input information to the other of the game application and the ancillary application not having user input focus;executing the game application using the first predetermined amount of reserved hardware resources;upon detecting that a portable device has been communicatively coupled to a communication port of the game console, launching the ancillary application, the ancillary application: concurrently executing using remaining hardware resources to communicate between the game console and the portable device, determining a protocol associated with the portable device, communicating with the portable device via a driver compatible with the determined protocol, the driver supporting a subset of features provided by the determined protocol and occupying less memory than a full-featured driver identifying a media file stored on the portable device;writing an indication of the media file to an audio/visual port for display on a display device;receiving a user selection of the media file;and playing the selected media file;and upon receipt of a request at the ancillary application, the request requiring action by the game application, the ancillary application transmitting information regarding the request to the second predetermined amount of hardware resources which causes the game application to pause.

Disclaimer: Data collected from the USPTO and may be malformed, incomplete, and/or otherwise inaccurate.