Abstract:
Embodiments of the present invention describe the addition of a haptic response to legacy games that were not originally programed to support haptics. The haptic capabilities may be added to the legacy game while it is being emulated by an emulator. The emulator is designed to generate a haptic stimulus that may be sent to the client device platform when a haptic trigger is present in the legacy game. The client device platform may then use the haptic stimulus to generate a haptic response. It is emphasized that this abstract is provided to comply with the rules requiring an abstract that will allow a searcher or other reader to quickly ascertain the subject matter of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims.

Description:
CLAIM OF PRIORITY 
       [0001]    This application is a non-provisional of co-pending U.S. provisional application No. 61/666,645, filed Jun. 29, 2012 the entire disclosures of which are incorporated herein by reference. 
       Cross-Reference to Related Application 
       [0002]    This application is related to commonly-assigned, co-pending U.S. provisional application No. 61/666,628, entitled “DETERMINING TRIGGERS FOR CLOUD-BASED EMULATED GAMES” (Attorney Docket Number SCEA12004US00), filed Jun. 29, 2012, the entire disclosures of which are incorporated herein by reference. 
         [0003]    This application is related to commonly-assigned, co-pending U.S. provisional application No. 61/666,665, entitled “CONVERSION OF HAPTIC EVENTS INTO SCREEN EVENTS” (Attorney Docket Number SCEA12006US00), to Victor Suba Miura et al, filed Jun. 29, 2012, the entire disclosures of which are incorporated herein by reference. 
         [0004]    This application is related to commonly-assigned, co-pending U.S. provisional application No. 61/666,679 entitled “SUSPENDING STATE OF CLOUD-BASED LEGACY APPLICATION”, (Attorney Docket Number SCEA12007US00) to Victor Suba Miura et al, filed the same day as the present application, the entire disclosures of which are incorporated herein by reference. 
     
    
     FIELD OF THE PRESENT DISCLOSURE 
       [0005]    This disclosure relates to a method and apparatus for video game emulation. Among other things, this application describes a method and apparatus for emulating a video game that does not support haptics in a manner that introduces haptics in the emulated version. 
       BACKGROUND 
       [0006]    Haptic feedback is a tactile feedback mechanism that utilizes the sense of touch. When used in conjunction with a control system the tactile feedback provides sensory cues to the user which indicates a certain event is happening to the object being controlled. For example, in an airplane simulation, visual indications of heavy turbulence may not be sufficient to alert the user to the conditions. However, by adding haptic feedback to a joystick controller in the form of vibrations, the user is more likely perceive the turbulence. 
         [0007]    In a controller, an electrical stimulus activates an actuator which then provides mechanical motion to the controller. The mechanical motion is often vibratory. Early haptic feedback systems utilized electromagnetic technologies that moved a central mass with an applied magnetic field. Newer technologies such as electroactive polymers, piezoelectric, electrostatic and subsonic audio wave surface actuation can be used to create haptic feedback as well. These technologies allow for a more dynamic range of sensations to be produced. 
         [0008]    In video games and simulators, haptic feedback has become a common addition to controllers. The haptic feedback capabilities in devices like Sony Computer Entertainment&#39;s Dual Shock family of controllers provide a more immersive gaming experience. However, each video game or simulator must have been programed to provide the haptic stimulus to the controller in order to utilize the haptic feedback. Often legacy games designed for older gaming systems do not provide this haptic stimulus. Therefore, when legacy games are emulated so they can be played on more modern systems the emulated game will not have haptic feedback even though the controllers are capable of supporting this additional feature. 
         [0009]    Presently, the legacy games must be redesigned by incorporating new code in order to provide the stimulus necessary for haptic feedback to be enabled. This is often not practical when designing an emulator to run the legacy game on a new system, due to the extensive time and resources that must be devoted to the task. Therefore, there is a need in the art to allow an emulator to add haptic feedback to legacy games and simulators without having to alter the code. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0010]      FIG. 1  is a schematic diagram of a client device platform and an emulator communicating over a network according to an aspect of the present disclosure. 
           [0011]      FIG. 2  is a flow diagram illustrating a method of adding haptics to an emulated game according to an aspect of the present disclosure. 
           [0012]      FIG. 3A  is a block diagram describing the instructions for how a client device platform adds haptics to an emulated game according to an aspect of the present disclosure. 
           [0013]      FIG. 3B  is a block diagram describing the instructions for how an emulator adds haptics to an emulated game according to an aspect of the present disclosure. 
           [0014]      FIG. 4  is a flow diagram illustrating a method for programing the emulator to recognize haptic triggers according to an aspect of the present disclosure. 
       
    
    
     DETAILED DESCRIPTION 
       [0015]    Although the following detailed description contains many specific details for the purposes of illustration, anyone of ordinary skill in the art will appreciate that many variations and alterations to the following details are within the scope of the present disclosure. Accordingly, the aspects of the present disclosure described below are set forth without any loss of generality to, and without imposing limitations upon, the claims that follow this description. 
         [0016]    According to various aspects of the present disclosure, haptic response capabilities may be added to legacy games that were not originally programed to support haptics. The haptic capabilities may be added to the legacy game while it is being emulated by an emulator. The emulator is designed to generate a haptic stimulus that may be sent to the client device platform when a haptic trigger is present in the legacy game. The client device platform may then use the haptic stimulus to generate a haptic response. 
       Introduction 
       [0017]    The process of emulating the functionality of a first computer platform (the “target system”) on a second computer platform (the “host system”) so that the host system can execute programs designed for the target system is known as “emulation.” Emulation has commonly been achieved by creating software that converts program instructions designed for the target platform (target code instructions) into the native-language of a host platform (host instructions), thus achieving compatibility. More recently, emulation has also been realized through the creation of “virtual machines,” in which the target platform&#39;s physical architecture—the design of the hardware itself—is replicated via a virtual model in software. 
         [0018]    Two main types of emulation strategies currently are available in the emulation field. The first strategy is known as “interpretation”, in which each target code instruction is decoded in turn as it is addressed, causing a small sequence of host instructions then to be executed that are semantically equivalent to the target code instruction. The main component of such an emulator is typically a software interpreter that converts each instruction of any program in the target machine language into a set of instructions in the host machine language, where the host machine language is the code language of the host computer on which the emulator is being used. In some instances, interpreters have been implemented in computer hardware or firmware, thereby enabling relatively fast execution of the emulated programs. 
         [0019]    The other main emulation strategy is known as “translation”, in which the target instructions are analyzed and decoded. This is also referred to as “recompilation” or “cross-compilation”. It is well known that the execution speed of computer programs is often dramatically reduced by interpreters. It is not uncommon for a computer program to run ten to twenty times slower when it is executed via emulation than when the equivalent program is recompiled into target machine code and the target code version is executed. A number of products have successfully improved on the speed of executing source applications by translating portions of the target program at run time into host machine code, and then executing the recompiled program portions. While the translation process may take, e.g., 50 to 100 machine or clock cycles per instruction of the target code, the greater speed of the resulting host machine code is, on average, enough to improve the overall speed of execution of most source applications. 
         [0020]      FIG. 1  is a schematic of an embodiment of the present invention. Emulator  107  may be accessed by a client device platform  103  over a network  160 . Client device platform  103  may be one of a plurality of client device platforms  103  that are each able to access the same emulator  107  over the network  160 . Client device platform  103  may also access alternative emulators  107 . 
         [0021]    Client device platform  103  may include a central processor unit (CPU)  131 . By way of example, a CPU  131  may include one or more processors, which may be configured according to, e.g., a dual-core, quad-core, multi-core, or Cell processor architecture. The client device platform  103  may also include a memory  132  (e.g., RAM, DRAM, ROM, and the like). The CPU  131  may execute a process-control program  133 , portions of which may be stored in the memory  132 . The client device platform  103  may also include well-known support circuits  140 , such as input/output (I/O) circuits  141 , power supplies (P/S)  142 , a clock (CLK)  143  and cache  144 . The client device platform  103  may optionally include a mass storage device  134  such as a disk drive, CD-ROM drive, tape drive, or the like to store programs and/or data. The client device platform  103  may also optionally include a display unit  137 . The display unit  137  may be in the form of a cathode ray tube (CRT) or flat panel screen that displays text, numerals, or graphical symbols. A controller  145  may be connected to the client device platform  103  through the I/O circuit  141  or it may be directly integrated into the client device platform  103 . The controller  145  may facilitate interaction between the client device platform  103  and a user. The controller  145  may include a keyboard, mouse, joystick, light pen, hand-held controls or other device. The controller  145  is also capable of receiving a haptic stimulus  111  (not shown). In response to the haptic stimulus  111 , the controller may generate a haptic response  146 . By way of example and not by way of limitation, the haptic response  146  may be vibrations or any other feedback corresponding to the sense of touch. The client device platform  103  may include a network interface  139 , configured to enable the use of Wi-Fi, an Ethernet port, or other communication methods. 
         [0022]    The network interface  139  may incorporate suitable hardware, software, firmware or some combination of two or more of these to facilitate communication via an electronic communications network  160 . The network interface  139  may be configured to implement wired or wireless communication over local area networks and wide area networks such as the Internet. The client device platform  103  may send and receive data and/or requests for files via one or more data packets over the network  160 . 
         [0023]    The preceding components may exchange signals with each other via an internal system bus  150 . The client device platform  103  may be a general purpose computer that becomes a special purpose computer when miming code that implements embodiments of the present invention as described herein. 
         [0024]    The emulator  107  may include a central processor unit (CPU)  131 ′. By way of example, a CPU  131 ′ may include one or more multiple core processors, which may be configured according to, e.g., a dual-core, quad-core, multi-core, or Cell processor architecture. The emulator  107  may also include a memory  132 ′ (e.g., RAM, DRAM, ROM, and the like). The CPU  131 ′ may execute a process-control program  133 ′, portions of which may be stored in the memory  132 ′. The emulator  107  may also include well-known support circuits  140 ′, such as input/output (I/O) circuits  141 ′, power supplies (P/S)  142 ′, a clock (CLK)  143 ′ and cache  144 ′. The emulator  107  may optionally include a mass storage device  134 ′ such as a disk drive, CD-ROM drive, tape drive, or the like to store programs and/or data. The emulator  107  may also optionally include a display unit  137 ′ and user interface unit  138 ′ to facilitate interaction between the emulator  107  and a user who requires direct access to the emulator  107 . The display unit  137 ′ may be in the form of a cathode ray tube (CRT) or flat panel screen that displays text, numerals, or graphical symbols. The user interface unit  138 ′ may include a keyboard, mouse, joystick, light pen, or other device. The emulator  107  may include a network interface  139 ′, configured to enable the use of Wi-Fi, an Ethernet port, or other communication methods. 
         [0025]    The network interface  139 ′ may incorporate suitable hardware, software, firmware or some combination of two or more of these to facilitate communication via the electronic communications network  160 . The network interface  139 ′ may be configured to implement wired or wireless communication over local area networks and wide area networks such as the Internet. The emulator  107  may send and receive data and/or requests for files via one or more data packets over the network  160 . 
         [0026]    The preceding components may exchange signals with each other via an internal system bus  150 ′. The emulator  107  may be a general purpose computer that becomes a special purpose computer when running code that implements embodiments of the present invention as described herein. 
         [0027]    Emulator  107  may access a legacy game  106  that has been selected by the client device platform  103  for emulation through the internal system bus  150 ′. There may be more than one legacy game  106  stored in the emulator. The legacy games may also be stored in the memory  132 ′ or in the mass storage device  134 ′. Additionally, one or more legacy games  106  may be stored at a remote location accessible to the emulator  107  over the network  160 . Each legacy game  106  contains game code  108 . When the legacy game  106  is emulated, the game code  108  produces legacy game data  109  (not shown). 
         [0028]    By way of example, a legacy game  106  may be any game that is not compatible with the client device platform  103 . By way of example and not by way of limitation, the legacy game  106  may have been designed to be played on Sony Computer Entertainment&#39;s PlayStation console, but the client device platform  103  is a home computer. By way of example, the legacy game  106  may have been designed to be played on a PlayStation 2 console, but the client device platform  103  is a PlayStation 3 console. Further, by way of example and not by way of limitation, a legacy game  106  may have been designed to be played on a PlayStation console, but the client device platform  103  is a hand held console such as the PlayStation Vita from Sony Computer Entertainment. Alternatively, the client device platform may be a device other than a game console or portable game device, e.g., a personal computer, a smart phone, a tablet computer, or other similar device. 
         [0029]    As shown in  FIG. 2 , the client device platform  103  and the emulator  107  may be configured to implement a method for adding a haptic response  146  to a legacy game  106  that was not originally designed to produce haptic feedback according to an inventive method  200 . Various aspects of the method  200  may be implemented by execution of computer executable instructions running on the client device platform  103  and/or the emulator  107 . Specifically, a client device platform  103  may be configured, e.g., by suitable programing, to implement certain client device platform instructions  270 . In addition, an emulator  107  may be configured to implement certain emulation instructions  271 . In  FIG. 2  the dashed arrows represent the flow of data between the client device platform  103  and the emulator  107  over the network  160 . 
         [0030]    Initially, at  272  the client device platform  103  may deliver information to the emulator  107  indicating that the user has selected a legacy game  106  that he wants emulated. The emulator  107  receives this information at block  273  and then proceeds to emulate the chosen legacy game  106  at  274 . While emulating the legacy game  106 , the emulator  107  will check the legacy game data  109  for haptic triggers  110  (not shown) at  275 . 
         [0031]    A haptic trigger  110  is a portion of legacy game data  109  that has been identified as corresponding to a haptic game event. As used herein, a haptic game event is an event in the legacy game  106  that warrants a haptic response  146 . There are many different types of legacy game data  109  that can correspond to an event warranting a haptic response  146 . By way of example, and not by way of limitation, legacy game data  109  arising from the generation of certain sounds, such as an explosion that occurs during the game, may be identified as a haptic trigger  110 . The emulator  107  may determine that an explosion has occurred in the legacy game by identifying the portion of the legacy game data  109  which will generate the sound of an explosion from the sound card. However, it should be noted that haptic triggers  110  are not limited to sound events. 
         [0032]    Alternatively a haptic trigger  110  may also be identified when a specified combination of conditions are met. By way example and not by way of limitation, a specified combination of conditions may be when, in a football game, there are only a few seconds remaining in the game and a user is trying to kick a game winning field goal. A haptic response  146 , such as shaking the controller  145 , may enable the user to feel the pressure of the situation in the game and produce a more realistic gaming experience. The emulator  107  may use screen scraping to find the time left on the clock, and the emulator  107  can detect that the legacy game  106  is accessing the play for kicking a field goal. Further, haptic triggers  110  may be any other event or combination of events that may be perceived by the emulator  107 , and which do not require changing the internal code  108  of the legacy game  106 . By way of example and without limitation these events may be sound card events, reading information from the disk, writing data to a memory card, or monitoring the memory contents of a legacy game  106  while the legacy game  106  is being emulated. The haptic triggers  110  described above are described in greater detail in the commonly assigned related patent application entitled “DETERMINING TRIGGERS FOR CLOUD-BASED EMULATED GAMES” (Attorney Docket Number SCEA12004US00) which has been incorporated herein in its entirety. 
         [0033]    When the emulator  107  identifies a haptic trigger  110 , it proceeds to  276  and generates a haptic stimulus  111 . At  277 , both the emulated legacy game data  109  and the haptic stimulus  111  are sent to the client device platform  103 . The client device platform  103  receives the haptic stimulus  111  and the emulated data at  278 , and then utilizes the haptic stimulus  111  to produce a haptic response  146  at  279 . 
         [0034]    As shown in  FIG. 3A , a set of client device platform instructions  370  may be implemented, e.g., by the client device platform  103 . The client device platform instructions  370  may be formed on a nontransitory computer readable medium such as the memory  132  or the mass storage device  134 . The client device platform instructions  370  may also be part of the process control program  133 . The instructions include delivering the title of a selected legacy game  106  to the emulator  107  at  372 . Thereafter, the client emulation instructions  370  require the client&#39;s haptic software to receive the haptic stimulus  111  and the emulated legacy game data  109  from the emulator at  378 . Once the haptic stimulus  111  is received, the client device platform  103  is instructed to use the stimulus  111  to illicit a haptic response  146  from the client device platform  103  at  379 . 
         [0035]    As shown in  FIG. 3B , a set of emulator instructions  371  may be implemented, e.g., by the emulator  107 . The emulation instructions  371  may be formed on a nontransitory computer readable medium such as the memory  132 ′ or the mass storage device  134 ′. The emulator instructions  371  may also be part of the process control program  133 ′. The instructions include receiving the title of a selected legacy game  106  from the client platform device  103  at  373 . Thereafter the emulator  107  is instructed to begin emulating the selected legacy game  106  at  374 . While emulating the legacy game  106 , the emulator  107  is instructed to check for haptic triggers  110  at  375 . Then at  376 , if there are any haptic triggers  110  present, the emulator  107  is instructed to generate a haptic stimulus  111 . The emulator  107  is then instructed to deliver the haptic stimulus  111  and the emulated legacy game data  109  to the client device platform at  377 . 
         [0036]    Emulator  107  may be programed to recognize which portions of the legacy game data  109  are considered haptic triggers  110 .  FIG. 4  provides a flow diagram that describes a method  400  for programing the emulator to recognize that an event in the legacy game  106  requires a haptic response  146 . First, at  401  a designer decides which events during the game should include a haptic response  146 . By way of example and not by way of limitation, the designer may decide that the controller  145  should shake when there is an explosion on screen, the character being controlled by the user is injured, or the level is portrayed as a noisy environment. After determining which events should be accompanied with haptic feedback  146 , the method proceeds to  402 . There the designer must find haptic triggers  110  which coincide with the events. By way of example and without limitation the haptic triggers  110  may be sound card events, reading information from the disk, writing data to a memory card, or monitoring the memory contents of a legacy game  106  while the legacy game  106  is being emulated. Identifying haptic triggers  110  is further described in the previously incorporated commonly assigned related provisional patent application No. 61/666,628, entitled “DETERMINING TRIGGERS FOR CLOUD-BASED EMULATED GAMES” (Attorney Docket Number SCEA12004US00), which has been incorporated herein by reference above. Once each event has been linked to a haptic trigger  110 , method  400  continues at  403  by having the designer program the process control program  133 ′ to recognize each haptic trigger  110  and generate a haptic stimulus  111  when the emulator  107  detects one. 
         [0037]    While the above is a complete description of the preferred embodiment of the present invention, it is possible to use various alternatives, modifications and equivalents. Therefore, the scope of the present invention should be determined not with reference to the above description but should, instead, be determined with reference to the appended claims, along with their full scope of equivalents. Any feature described herein, whether preferred or not, may be combined with any other feature described herein, whether preferred or not. In the claims that follow, the indefinite article “A”, or “An” refers to a quantity of one or more of the item following the article, except where expressly stated otherwise. The appended claims are not to be interpreted as including means-plus-function limitations, unless such a limitation is explicitly recited in a given claim using the phrase “means for.”