System and method for generating a metagame from a legacy game

The system compiles legacy game code into basic blocks for execution on updated machines, addressing compatibility issues and enabling efficient gameplay and metagame creation.

JP7703040B2Active Publication Date: 2025-07-04SONY INTERACTIVE ENTERTAINMENT LLC
View PDF 9 Cites 0 Cited by

Patent Information

Application Number
JP2023560877
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-04-01
Filing Date
2022-03-24
Publication Date
2025-07-04
Estimated Expiration
2042-03-24

AI Technical Summary

Technical Problem

Legacy games are often incompatible with modern systems due to architectural differences between legacy and updated machines, leading to execution issues and security concerns, making it difficult for updated machines to execute legacy code without permission.

Method used

A system and method that compiles legacy game code into basic blocks, caching and executing them on updated machines, allowing for the generation of a metagame by combining and recompiling blocks as needed to create a virtual environment.

Benefits of technology

Enables updated machines to execute legacy game functionality efficiently, reduces execution time, saves processing power, and allows for the creation of metagames by dynamically compiling and caching blocks, enhancing compatibility and gameplay experience.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007703040000001
    Figure 0007703040000001
  • Figure 0007703040000002
    Figure 0007703040000002
  • Figure 0007703040000003
    Figure 0007703040000003
Patent Text Reader

Abstract

Explain how the metagame is generated. The method includes receiving a first user input for a first challenge during play of the legacy game via a first user account. The first challenge is created from a first plurality of building blocks of the legacy game. The method includes recording at least a portion of the first challenge and receiving a second user input for a second challenge during play of the legacy game via the first user account. The second challenge is created from a second plurality of building blocks of the legacy game. The method includes recording at least a portion of the second challenge, determining if a third user input is received via the first user account to request creation of a metagame, and generating the metagame from the first and second challenges upon determining that the third user input is received.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to a system and method for generating a metagame from a legacy game.

Background Art

[0002] As electronic game and networking technologies become more advanced, the complexity of games has correspondingly increased. As a result, there can be more complex storylines, game play objectives, missions and tasks, abilities associated with game play avatars, and scoring. Scoring can occur and be weighted in various ways and can be determined in various categories or on an individual or team basis.

[0003] The severity of the foregoing problems only increases as the complexity of electronic games increases. Therefore, some players may desire to play older games that are not as complex.

[0004] In this context, embodiments of the present invention arise.

Summary of the Invention

[0005] Embodiments of the present disclosure provide a system and method for generating a metagame from a legacy game.

[0006] In one embodiment, a method for facilitating play of a legacy game is described. The method includes receiving user input during play of the legacy game, determining whether one or more blocks of code for processing the user input are cached, and accessing one or more instructions of the legacy game code when it is determined that one or more blocks of code are not cached. The method further includes compiling one or more blocks of code from the one or more instructions of the legacy game code, caching the one or more blocks of code, and executing the one or more blocks of code to display a virtual environment.

[0007] In one embodiment, a computing device for facilitating play of a legacy game is described. The computing device includes a processor configured to receive user input during play of the legacy game. The computing device further includes a cache connected to the processor and a memory device connected to the processor. The processor determines whether one or more blocks of code for processing the user input are stored in the cache. If the processor determines that one or more blocks of code are not stored in the cache, the processor accesses one or more instructions of the legacy game code from the memory device. Further, the processor compiles one or more blocks of code from the one or more instructions of the legacy game code. The processor stores one or more blocks of code in the cache and executes the one or more blocks of code to display a virtual environment.

[0008] In one embodiment, a method is described. The method includes generating a first verification result from one or more instructions of legacy game code. The one or more instructions of the legacy game code are associated with one or more blocks of code. The method further includes examining one or more memory addresses associated with the one or more instructions to determine whether one or more blocks of code should be marked as invalid. The method includes determining whether one or more blocks of code should be executed, and if it is determined that one or more blocks of code should be executed, determining whether one or more blocks of code are marked as invalid. The method includes examining one or more memory addresses to generate a second verification result from the one or more instructions, comparing the first verification result with the second verification result to determine whether one or more blocks of code are invalid, and if it is determined that one or more blocks of code are invalid, recompiling one or more additional blocks of code associated with the one or more instructions. The method includes executing the one or more additional blocks of code to display a virtual environment.

[0009] In one embodiment, a method for generating a metagame is described. The method includes receiving, via a first user account, a first user input for a first challenge during play of one or more legacy games. The first challenge is created from a first plurality of basic blocks of the one or more legacy games. The method further includes recording at least a portion of the first challenge and receiving, via the first user account, a second user input for a second challenge during play of the one or more legacy games. The second challenge is created from a second plurality of basic blocks of the one or more legacy games. The first plurality of basic blocks is compiled from a first plurality of instructions of the one or more legacy games, and the second plurality of basic blocks is compiled from a second plurality of instructions of the one or more legacy games to enable playing the one or more legacy games on an updated machine. The method includes recording at least a portion of the second challenge. The method further includes determining whether a third user input for requesting creation of the metagame has been received via the first user account, and generating the metagame from the first and second challenges when it is determined that the third user input has been received.

[0010] In one embodiment, a non-transitory computer-readable medium including program instructions for a method for generating a metagame is described. When the program instructions are executed by one or more processors of a computer system, the one or more processors perform a plurality of operations of the method.

[0011] In one embodiment, a computer system for generating a metagame is described. The computer system includes a processor. The processor receives, via a first user account, a first user input for a first challenge during play of one or more legacy games. The first challenge is created from a first plurality of basic blocks of one or more legacy games. The processor records at least a portion of the first challenge. The processor further receives, via the first user account, a second user input for a second challenge during play of one or more legacy games. The second challenge is created from a second plurality of basic blocks of one or more legacy games. The first plurality of basic blocks are compiled from a first plurality of instructions of one or more legacy games, and the second plurality of basic blocks are compiled from a second plurality of instructions of one or more legacy games to enable playing one or more legacy games on an updated machine. The processor records at least a portion of the second challenge. The processor further determines whether a third user input for requesting play of the metagame has been received via the first user account, and when it is determined that the third user input has been received, generates a metagame from the first and second challenges. A memory device is coupled to the processor.

[0012] Some advantages of the systems and methods described herein include enabling an updated machine to execute the functionality of legacy code. Without conversion, due to security issues, an updated machine cannot execute the functionality of legacy code. For example, there is no permission to execute legacy code from an updated machine and write data generated during the execution of the legacy code to the registers of the updated machine. Therefore, by providing conversion, it becomes easier for an updated machine to execute the functionality of legacy code.

[0013] Further advantages of the systems and methods described herein include saving execution time. As an example, two or more instructions such as legacy code routines and subroutines or two similar instructions are combined into one basic block of updated code. Therefore, the execution of the updated code is faster compared to the execution of the legacy code.

[0014] A further advantage of the systems and methods described herein includes recompiling one or more additional basic blocks of updated code when it is determined that one or more basic blocks of the updated code are invalid. For example, when one or more basic blocks are marked as invalid, it is determined whether the one or more basic blocks are actually invalid. When so determined, instead of executing the one or more basic blocks, one or more additional basic blocks are compiled and executed. The one or more additional basic blocks correspond to the same game that the one or more basic blocks correspond to.

[0015] Another further advantage of the systems and methods described herein includes that it is not necessary to check whether all basic blocks are invalid. For example, only the basic blocks marked as invalid after compilation of the basic blocks are checked for validity. This shortens the latency when displaying the virtual environment from one or more basic blocks. Also, the processing power used to check the invalidity of all basic blocks is not required.

[0016] Also, the advantages of the systems and methods described herein include saving processing time and processing power when the updated code of the game has already been compiled. When the updated code is generated on a server or game console, the updated code does not need to be recompiled. Rather, the updated code can be transferred from the server or game console to another game console. Therefore, the processing time and processing power for regenerating the updated code on another game console are saved.

[0017] Other aspects of the present disclosure will become apparent from the following forms for carrying out the invention taken in conjunction with the accompanying drawings, which illustrate, by way of example, the principles of the embodiments described in the present disclosure.

[0018] Various embodiments of the present disclosure can be best understood by referring to the following description in conjunction with the accompanying drawings.

Brief Description of the Drawings

[0019]

Figure 1

Figure 2

Figure 3

Figure 4A

Figure 4B

Figure 5A

Figure 5B

Figure 6A

Figure 6B

Figure 6C

Figure 7A

Figure 7B

Figure 8A

Figure 8B

Figure 8C

Figure 9A

Figure 9B

Figure 10A

Figure 10B

Figure 10C

Figure 10D

Figure 10E

Figure 11A

Figure 11B

Figure 12

Figure 13

Figure 14A

Figure 14B

Figure 14C

Figure 14D

Figure 15A

Figure 15B

Figure 16A

Figure 16B

Figure 16C

Figure 16D

Figure 16E

Figure 17

Figure 18A

Figure 18B

Figure 19

Figure 20

Figure 21

Figure 22

Figure 23

[0020] A system and method for generating a meta game from a legacy game are described. Note that various embodiments of the present disclosure may be implemented without some or all of these specific details. In other instances, well-known process operations are not described in detail so as not to unnecessarily obscure various embodiments of the present disclosure.

[0021] FIG. 1 is a block diagram showing an embodiment of a system 100 for generating basic blocks 1 to n of updated code, where n is a positive integer. The system 100 includes a cache 102, a basic block compiler 104, and emulated processing unit (PU) code 106 of a legacy game N having a game title GN, where N is a positive integer. As an example, the cache used herein is a hardware or software component for storing data so that future requests for the data can be processed more quickly. A cache hit occurs when the requested data can be found in the cache, while a cache miss occurs when it cannot be found. A cache hit is processed by reading the data from the cache, which is faster than recomputing the result or reading from a slower data store such as a memory device. Thus, the more requests that can be processed from the cache, the faster the system runs. To explain, the cache is a group of registers that can be accessed much faster, such as 10 to 100 times faster, compared to a main memory device.

[0022] As an example, the cache has a smaller number of memory addresses than the main memory device. In the example, the processor first determines whether the data used in the operation is stored at a memory address in the cache. If not, the processor accesses the memory address of the main memory device to search for the data.

[0023] As an example, the basic block compiler used in this specification is a computer program that converts the emulated PU code 106 code into game code GCN, which is an example of the updated code. The game code GCN represents the functionality of the legacy game N. The computer program is executed by one or more processors of the emulated processor system. The game code GCN is referred to herein as intermediate code. As an example, the intermediate code is neither source code nor machine code. To explain, the intermediate code includes basic blocks that are not specific to the architecture of a central processing unit (CPU), or a graphics processing unit (GPU), or the architecture of the updated machine, and examples thereof are provided below. By way of illustration, the intermediate code includes basic blocks that can be executed by the CPU or GPU of the updated machine, examples of which include Sony PlayStation (registered trademark) 4 (PS4 (registered trademark)) or Sony PlayStation (registered trademark) 5 (PS5 (registered trademark)), or a desktop computer, or a laptop computer, or a smartphone, or a smart TV. As an example, the source code can be plain text and is written using a human-readable programming language. As an example, the basic block compiler used in this specification is implemented using hardware or software, or a combination thereof. To explain, the functionality of the basic block compiler is implemented using a controller or a programmable logic device (PLD) or an application-specific integrated circuit (ASIC).

[0024] Examples of controllers used in this specification include a processor and a memory device. The processor is coupled to the memory device. As used herein, by way of example, the processor is a microprocessor, or a CPU, or a GPU, or a microcontroller, or an ASIC, or a PLD. Examples of memory devices used herein include random access memory (RAM) and read-only memory (ROM). For illustration, the memory device is a flash memory device, or a hard disk, or a solid state storage device, or a redundant array of independent disks (RAID), or a combination thereof.

[0025] An example of the emulated PU code 106 is machine code that instructs a processor such as a CPU or GPU of a legacy machine to execute operations. For example, the emulated PU code 106 includes a sequence of instructions that instruct the CPU of a legacy machine to perform specific operations such as load, store, jump, or arithmetic logic unit (ALU) operations on data stored in the registers of the CPU. As another example, the emulated PU code 106 is binary code that includes a series of 1s and 0s. As another example, the emulated PU code 106 includes a sequence of instructions that instruct the GPU of a legacy machine to perform specific operations such as load, store, jump, or ALU operations on data stored in the registers of the GPU. The GPU of the legacy machine performs operations on virtual objects to assign graphic parameters such as color, intensity, shading, texture, or a combination thereof to the virtual objects.

[0026] The emulated PU code 106 is specific or proprietary to the architecture of the CPU or GPU of a legacy machine. For example, the emulated PU code 106 cannot be executed by the CPU or GPU of an updated machine. As another example, the emulated PU 106 executable on a Sony PlayStation (R) 1 (PS1) cannot be executed on a Sony PlayStation (R) 2 (PS2), and vice versa.

[0027] As an example, the emulated PU code 106 is executed by the processor of a legacy machine to perform operations in a legacy game N. To explain, the emulated PU code 106 is executed to play a legacy game on a legacy machine such as a PS1 (R) or PS2 (R). Examples of legacy games include video games such as Warhawk (R), Tango Dance Fever (R), Castlevania Chronicles (R), Pacman (R), Resident Evil 2 (R), Streetfighter Alpha 3 (R), etc.

[0028] The basic block compiler 104 accesses the emulated PU code 106 of the legacy game N and converts the emulated PU code 106 into one or more basic blocks such as basic blocks 1 to n. As an example, each of the basic blocks 1 to n has a start identifier and an end identifier for distinguishing one basic block from another. The basic block compiler 104 stores the basic blocks 1 to n in the cache 102. When the basic blocks 1 to n are executed, the legacy game N is emulated.

[0029] FIG. 2 is a flowchart showing an embodiment of a method 200 for compiling and dispatching basic blocks of a game code GCN. The method 200 is executed by one or more processors of an updated machine. The method 200 includes an operation 202 of determining whether there is a cache hit, for example, whether a basic block is stored in the cache 102. For example, the operation 202 is executed or triggered when user input is received during play of a legacy game. To explain, the user input is received to change the position or orientation of a virtual object of the legacy game N, or a combination thereof. In the illustration, when it is determined that user input is received, it is determined whether a basic block, such as one of basic blocks 1 to n, is stored in the cache 102 (FIG. 1). In the example, a basic block should be executed to change the position or orientation of a virtual object, or a combination thereof.

[0030] As another explanation, the operation 202 is executed when user input is received to change parameters such as the look and feel of a virtual object of a legacy game. In the example, when it is determined that user input is received, it is determined whether a basic block, such as one of basic blocks 1 to n, is stored in the cache 102. In the example, the basic block should be executed to change the parameters of a virtual object.

[0031] In response to determining that the basic block is cached, the basic block is dispatched in operation 204 of method 200. For example, the basic block is executed or operates in operation 204. To explain, the basic block is executed by the CPU of the updated machine to move a virtual object from one position to another, or from one direction to another, or a combination thereof. As another example, the basic block is executed by the GPU of the updated machine to assign a parameter to a part of the virtual object. Examples of parts of a virtual object include pixels of the virtual object, or triangular portions of the virtual object, or parts of a predefined shape of the virtual object. To explain, the virtual object is divided into a predetermined number of pixels, and a value of a parameter is assigned to each pixel.

[0032] In response to determining that the basic block is not cached, an operation 206 of compiling the basic block is performed in method 200. Operation 206 is performed by basic block compiler 104 (FIG. 1). For example, basic block compiler 104 analyzes the emulated PU code 106 (FIG. 1) of legacy game N and identifies emulated PU code instructions including functions for processing user input received during play of the legacy game before operation 202. The user input received before operation 202 triggers operation 202. Specifically, basic block compiler 104 traverses each emulated code PU instruction of emulated PU code 106 to determine whether the emulated code PU code instruction includes an operation (such as a function) that satisfies (e.g., generates a response to) the user input received during play of the legacy game. In the illustration, when a function is identified, basic block compiler 104 converts the PU code instruction of the emulated code to generate a basic block. In the illustration, in response to the received user input, other emulated code PU code instructions of the legacy game that are not required to process the user input before operation 202 are not compiled into the basic block by basic block compiler 104.

[0033] In operation 208 of method 200, the basic block generated in operation 206 is stored in cache 102 by basic block compiler 104. Next, the cached basic block is executed in operation 204 to process the user input received before operation 202.

[0034] In one embodiment, method 200 is performed by one or more processors of a server system. As an example, the server system includes an updated machine as a server. Specifically, each server blade is a PS4 (registered trademark) or a PS5 (registered trademark).

[0035] In one embodiment, method 200 is not executed until user input is received. For example, it is not determined whether a basic block, such as one of basic blocks 1 to n, is stored in cache 102, and neither the compilation of the basic blocks nor the execution of the basic blocks is performed until user input is received.

[0036] In one embodiment, basic block compiler 104 compiles one or more of basic blocks 1 to n in response to a first user input during play of legacy game N, and compiles the remaining one or more of basic blocks 1 to n in response to a second user input during play of legacy game N. Specifically, basic block compiler 104 generates basic blocks 1 and 2 to process the first user input, and generates basic blocks 3 to 7 to process the second user input. The second user input is received after the first user input.

[0037] FIG. 3 is a block diagram for explaining an embodiment of system 304 for compiling and dispatching basic blocks such as basic blocks 1 to n. System 300 includes basic block compiler 104, cache 102, and block dispatcher 302. As an example, block dispatcher 302 is hardware or software, or a combination thereof, that executes one or more operations of basic blocks 1 to n to process user input. Specifically, block dispatcher 302 is a PLD or an ASIC or a controller. As another example, block dispatcher 302 is computer software. As an example, block dispatcher 302 is the GPU or CPU of an updated machine.

[0038] The basic block compiler 104 decodes a part of the emulated PU code 106 (Figure 1), such as the operation code (opcode), and converts that part into an intermediate representation for the processing unit of the updated machine. For example, the basic block compiler 104 analyzes a part of the CPU code of the emulated PU code 106, such as one or more instructions, to determine whether the part of the CPU code includes a function for processing user input. When so determined, the basic block compiler 104 converts the part of the CPU code into one or more basic blocks, such as basic blocks 1 to n. As another example, the basic block compiler 104 analyzes a part of the GPU code of the emulated PU code 106, such as one or more instructions, to determine whether the part of the GPU code includes a function for processing user input. When so determined, the basic block compiler 104 converts the part of the GPU code into one or more basic blocks, such as basic blocks 1 to n.

[0039] Also, the basic block compiler 104 estimates the number of execution cycles of each basic block generated from a part of the emulated PU code 106 and generates an estimated count. For example, the basic block compiler 104 determines that basic block 1 includes a jump operation and that the jump operation takes a predetermined time. The basic block compiler 104 estimates that the jump operation of basic block 1 takes a predetermined time. The block compiler 104 stores the estimated count in the cache 102. For example, the block compiler 104 stores the estimated count for which the number of cycles is estimated in basic block n.

[0040] When the basic blocks are compiled, they are stored in the cache 102 for fast lookup. For example, after receiving a user input according to which basic blocks are compiled and then receiving another user input, when the same basic blocks can be used for processing other user inputs, the basic blocks can be quickly accessed from the cache 102 and do not need to be regenerated.

[0041] Furthermore, one or more basic blocks stored in the cache 102 can be marked as invalid after compilation. One or more basic blocks marked as invalid are then either enabled or disabled during the execution of the basic blocks. When one or more basic blocks are disabled, one or more additional basic blocks are compiled. The compilation of one or more additional basic blocks may be referred to herein as recompilation of one or more basic blocks.

[0042] Each of the one or more additional basic blocks has the same structure as the structure of one or more basic blocks 1 to n. For example, each of the one or more additional basic blocks has a source register address, a destination register address, and an operation. As another example, each of the one or more additional basic blocks has a source register address, a destination register address, an operation, and the number of cycles for the execution of the operation of the additional basic block. In the example, some of the one or more additional basic blocks include an invalid mark. As yet another example, each of the one or more additional basic blocks has a source register address, a destination register address, an operation, and the number of cycles for the execution of the operation of the additional basic block. Note that each of the additional blocks of code is executed in the same way as each of the basic blocks 1 to n.

[0043] The block dispatcher 302 executes or operates one or more of the basic blocks 1 to n based on user input. For example, the block dispatcher 302 executes basic blocks 1 and 2 to process a first user input and executes basic blocks 3 to 7 in response to a second user input. As an example, the block dispatcher 302 includes a clock source such as a digital clock oscillator or a clock generator, which counts the number of cycles used to execute one or more of the basic blocks 1 to n based on user input to generate an actual count. The block dispatcher 302 sends the actual count to the block compiler 104 to update the estimated count with the actual count. For example, the actual count is stored in the basic block n where the actual count is calculated. To explain, the actual count is stored in one or more memory registers of the cache 102 assigned to the basic block n.

[0044] In one embodiment, the basic block compiler 104 does not estimate the number of cycles for the execution of any basic block. In this embodiment, there is no replacement of the estimated count with the actual count. Rather, in this embodiment, the actual count is stored in the basic block n by the block compiler 104 where the actual count is determined.

[0045] FIG. 4A is a diagram of an embodiment of a system 400 for explaining the compilation of basic blocks 1 to n within a game console 402. The system 400 includes a game console 402, a server system 404, a computer network 408, and a display device 410. The server system 404 includes one or more servers. As an example, the server system 404 is disposed within the housing of a data center. The server system 404 includes a memory device 412 that stores emulated PU code such as emulated PU code 104. For example, the memory device 412 stores up to game code N (gcN) such as game code 1 (gc1), game code 2 (gc2). The game code gcN is an example of emulated PU code 106 (FIG. 1). Each of the game codes 1 to N is legacy code of a legacy game. To explain, the game code gc1 is machine code for playing a first legacy game, and the game code gc2 is machine code for playing a second legacy game. The second legacy game is different from the first legacy game. As an example, note that the memory device 412 is a memory device of a legacy machine.

[0046] As an example, none of the game codes gc1 to gcN can be executed on an updated machine and cannot be executed on a legacy machine. To explain, the CPU or operating system of an updated machine cannot support the execution of the game codes gc1 to gcN. On the other hand, the CPU or operating system of a legacy machine supports the execution of the game codes gc1 to gcN. Examples of computer networks used herein include wide area and working (WAN) such as the Internet, or local area networks (LAN) such as intranets, or combinations thereof.

[0047] The game console 402 is an example of an updated machine. For example, the game console 402 is a PS4 (registered trademark) or a PS5 (registered trademark). Examples of display devices 410 include televisions, smart TVs, and computer monitors. To explain, the display device 410 is a liquid crystal display (LCD) device, or a light emitting diode (LED) display device, or an organic light emitting diode (OLED) display device.

[0048] The system 400 further includes a handheld controller 414 held by one or both hands of user 1. Examples of handheld controllers used herein include controllers with buttons, the Move (registered trademark) controller of Sony (registered trademark) Corporation, and gun-shaped controllers. Examples of buttons on the handheld controller include joysticks, buttons for moving virtual objects up, down, left, or right on the display screen 410, and other buttons for selecting various functions of the legacy game N having the game title GN.

[0049] The game console 402 includes a memory device 406 and an emulation processor system 409. As an example, the processor system used herein includes one or more processors coupled to each other. The emulation processor system 409 is coupled to the memory device 406. The emulation processor system 409 includes a basic block compiler 104 and a cache 102. The basic block compiler 104 is coupled to the cache 102.

[0050] The game console 402 is coupled to the display device 410 via a wired communication medium such as a high-definition media interface (HDMI (registered trademark)) cable or a wireless connection. Examples of wireless connections used herein include Wi-Fi (registered trademark) connections or Bluetooth (registered trademark) connections. Also, the handheld controller 414 is coupled to the game console 402 via a wired connection or a wireless connection. Examples of wired connections used herein include serial transfer cables, parallel transfer cables, and universal serial bus (USB) cables.

[0051] An example of a client device includes a combination of a handheld controller, a game console, and a display device. Another example of a client device includes a combination of a handheld controller and a display device.

[0052] When the user 1's user identification (ID) and password are authenticated by the server system 404, the user 1 logs in to their user account. The user 1 is assigned a user ID1 such as a username by the server system 1. When the user 1 logs in to their user account, the user 1 can access a plurality of game titles up to game titles GN such as game title G1, game title Ga, game title G2. Game titles G1, G2, etc. up to game title GN are examples of titles of legacy games. Game title Ga is the title of a game that is not a legacy game. Rather, game title Ga is the title of a current game such as Fortnite (registered trademark) that cannot be played on a legacy machine.

[0053] After User 1 logs in to their user account, they select one or more buttons on the handheld controller 414 to select the game title GN and play a legacy game. When User 1 selects the game title GN, the user input 418 indicating that selection is sent from the handheld controller 414 to the server system 404 via the game console 402 and the computer network 408. As an example, the user input is an input signal. Upon receiving the user input 418 indicating the selection of the game title GN, the server system 404 identifies the game code gcN based on the user input 418. For example, the server system 404 identifies that the game code gcN has the same game title as the game title GN and that its selection is indicated in the user input 418.

[0054] The server system 404 sends the game code gcN to the game console 402 via the computer network 408. Upon receiving the game code gcN, the emulation processor system 409 stores the game code gcN in the memory device 406 of the game console 402.

[0055] During the play of legacy game N having game code gcN, when user input 420 is received from handheld controller 414 via a wireless connection, the emulation processor system 409 executes the basic block compiler 104 to generate a part of game code GCN from a part of the game code gcN stored in the memory device 406. A part of the game code GCN is generated based on the user input 420. For example, when the user input 420 includes a request to move a WarHawk (registered trademark) fighter plane from position P1 to position P2 during the play of legacy game N, the basic block compiler 104 analyzes the game code gcN to identify the instruction for calculating the positions from P1 to P2. The basic block compiler 104 converts the instruction into a basic block of the game code GCN, and the basic block is then executed to change the position of the WarHawk (registered trademark) fighter plane from P1 to P2. In the example, the basic block of the game code GCN is executed by the GPU of the emulation processor system 409 to generate one or more image frames 422. To explain, the one or more image frames 422 are displayed on the display device 410 to display a virtual environment having the WarHawk (registered trademark) fighter plane at position P2. In this way, most or all of the game code GCN is compiled by the basic block compiler 104 and stored in the cache 102 for execution. As an example, a virtual environment such as a virtual scene includes one or more virtual reality (VR) images or one or more augmented reality (AR) images.

[0056] In one embodiment, data communication between the server system 404 and the game console 402 is performed via a network communication protocol such as the Transmission Control Protocol via the Internet Protocol (TCP / IP). For example, the server system 404 includes a network interface controller to convert data into packets. Examples of network interface controllers used herein include network interface cards (NICs) and network adapters. The network interface controller of the server system 404 is coupled to the memory device 412 and receives data from the memory device 412. Upon receiving data from the memory device 412, the network interface controller of the server system 404 embeds the data into one or more packets by applying the network communication protocol to the data. The one or more packets are transferred from the network interface controller of the server system 404 to the game console 402 via the computer network 408. The game console 402 includes a network interface controller that extracts data from one or more packets by applying the network communication protocol. The network interface controller of the game console 402 is coupled to the emulation processor system 409. The network interface controller of the game console 402 provides the data received from the computer network 408 to the emulation processor system 409. Further, the network interface controller of the game console 402 receives data from the emulation processor system 409, embeds the data into one or more packets by applying the network communication protocol, and transmits the one or more packets to the server system 404 via the computer network 408. The network interface controller of the server system 404 applies the network communication protocol to the one or more packets received from the computer network 408, extracts data from the one or more packets, and transmits the data to the memory device 412 for storage.

[0057] In one embodiment, in addition to or instead of computer network 408, a cellular network is used to communicate data between server system 404 and game console 402. For example, communication between server system 404 and game console 402 is facilitated using wireless technology. The wireless technology includes, for example, 4G or 5G wireless communication technology. As used herein, 5G is the fifth generation of cellular network technology. Also, a 5G network is a digital cellular network where the service area covered by a provider is divided into small geographical areas called cells. In 5G wireless communication technology, analog signals representing voice and images are digitized by a telephone, converted by an analog-digital converter, and transmitted as a bit stream. All 5G wireless devices within a cell communicate via radio waves of a local antenna array and a low-power automatic transceiver (transmitter and receiver) within the cell over a frequency channel assigned by the transceiver from a pool of frequencies reused in other cells. The local antenna is connected to the cellular network by a high-bandwidth optical fiber or wireless backhaul connection. Similar to other cellular networks, a mobile device moving from one cell to another is automatically transferred to the new cell. The 5G network is merely an exemplary type of communication network, and it should be understood that embodiments of the present disclosure can utilize previous-generation wireless or wired communication such as 3G or 4G, as well as subsequent-generation wired or wireless technology following 5G.

[0058] In one embodiment, either game console 402 or server system 404 is referred to herein as a computing device. Other examples of computing devices include tablets, smartphones, laptop computers, desktop computers, and smart TVs.

[0059] In one embodiment, each of the game codes gc1 to gcN is stored in a separate memory device of the server system 404 or the legacy machine. For example, game code gc1 is stored in the memory device of the first legacy machine, and game code gc2 is stored in the memory device of the second legacy machine. As another example, game code gc1 is stored in the first memory device of the server system 404, and game code gc2 is stored in the second memory device of the server system 404.

[0060] In one embodiment, the memory device 412 or the memory device 406 is not a cache. Rather, each of the memory device 412 or the memory device 406 is a main memory such as a RAM.

[0061] In one embodiment, the memory device 412 is coupled to a memory controller. The memory controller reads data from the memory device 412 and writes data to the memory device 412. The memory controller is coupled to the network interface controller of the server system 404. The memory controller transmits the data received from the network interface controller of the server system 404 to the memory device 412 for storage. The memory controller also transmits the data received from the memory device 412 to the network interface controller of the server system 404 for transmission to the game console 402 via the computer network 408.

[0062] FIG. 4B is a diagram of an embodiment of the system 450, showing that the emulation processor system 409 is disposed within the server system 404 and that one or more image frames 422 are transmitted from the server system 404 to the display device 410 via the computer network 408 for display of a virtual environment or virtual scene. The system 450 includes a server system 404, a display device 410, and a handheld controller 414.

[0063] The server system 404 includes a memory device 412 and an emulation processor system 409. The memory device 412 is coupled to the emulation processor system 409. The display device 410 is coupled to the computer network 408 via the network interface controller of the display device 410. The display device 410 includes a processor coupled to the network interface controller of the display device 410. The processor of the display device 410 receives a user input 420 during the play of a legacy game having a game title GN and a game code gcN, and transmits the user input 420 to the network interface controller of the display device 410. The network interface controller of the display device 410 transmits the user input 420 to the emulation processor system 409 of the server system 404 via the computer network 408.

[0064] Upon receiving the user input 420, the emulation processor system 409 performs the same functions as described above with reference to FIG. 4A with respect to the game code gcN, and compiles basic blocks 1 to N for the generation of one or more image frames 422. The server system 404 transmits one or more image frames 422 to the display device 410 via the computer network 408 for the display of a virtual environment such as the virtual environment 452 on the display screen of the display device 410. For example, the virtual environment 452 includes a virtual object 454 which is an example of a Warhawk (registered trademark) fighter plane. In the example, the virtual environment 452 includes a virtual background including one or more virtual objects such as a virtual pyramid 455 and a virtual structure 456. In the example, the virtual object 454 can fire a virtual missile towards the virtual pyramid 455 and the virtual structure 456 during the play of the legacy game N having the game code gcN.

[0065] In one embodiment, data communication between the server system 404 and the display device 410 is performed via a network communication protocol. For example, the server system 404 includes a network interface controller that converts data into packets. The network interface controller of the server system 404 is coupled to the emulation processor system 409 to receive data from the emulation processor system, and embeds the data into one or more packets by applying the network communication protocol. The packets are transferred from the network interface controller of the server system 404 to the display device 410 via the computer network 408. The network interface controller of the display device 410 extracts data from one or more packets by applying the network communication protocol. The network interface controller of the display device is coupled to the processor of the display device 410. The network interface controller of the display device provides the data received from the computer network 408 to the processor of the display device 410. The processor of the display device 410 renders data such as the image frame 422 on the display screen of the display device 410. Further, the network interface controller of the display device 410 receives data from the processor of the display device 410, embeds the data into one or more packets by applying the network communication protocol, and transmits one or more packets to the server system 404 via the computer network 408. The network interface controller of the server system 404 applies the network communication protocol to one or more packets received from the computer network 408, extracts data from one or more packets, and transmits the data to the memory device 409 for storage.

[0066] In one embodiment, in addition to or instead of computer network 408, a cellular network is used to communicate data between server system 404 and display device 410. For example, communication between server system 404 and the display device is facilitated using wireless technology.

[0067] In one embodiment, instead of display device 410, a head-mounted display (HMD) is used. The head-mounted display is worn on the head of user 1 and includes a display screen such as an LED screen, an OLED screen, or an LCD screen. The HMD performs the same functions as those performed by display device 410.

[0068] FIG. 5A is a diagram for explaining one embodiment of basic blocks. Each basic block includes a source register address, a destination register address, and an operation. For example, basic block 1 includes source register address 1, destination register address 1, and operation 1. Basic block 2 includes source register address 2, destination register address 2, and operation 2, and basic block n includes source register address n, destination register address n, and operation n. As an example, the source register address is the address of one or more source registers in cache 102, and the destination register address is the address of one or more destination registers in cache 102. Examples of operations of the basic blocks include jump operations, branch operations, read operations, write operations, compare operations, and return operations. Further examples of operations of the basic blocks include arithmetic operations such as addition operations, subtraction operations, multiplication operations, and division operations.

[0069] As an example, when operation n is a read operation, data is read from source register address n, and basic block n is executed. As another example, when operation n is a write operation, data is written to destination register address n, and basic block n is executed. As another example, when operation n is a move operation, data is read from source register address n, operation n is performed on the data, the data is written to destination register address n, and basic block n is executed. As yet another example, when operation n is a compare operation, a first value of data stored at a first source register address described in basic block n is compared with a second value of data stored at a second source register address described in basic block n to generate a comparison result, and this comparison result is stored at destination register address n and basic block n is executed. As another example, when operation n is an addition operation, a first value of data stored at a first source address described within basic block n is added to a second value of data stored at a second source address indicated within basic block n to generate an addition result, and this addition result is stored at destination register address n and basic block n is executed. As yet another example, the virtual object described herein is for moving from position P1 to position P2, and when operation n is a write operation in which the position of the virtual object should be updated from P1 to P2, the position P1 at destination register address n is overwritten with position P2 to execute basic block n. In the example, when basic block n is executed, it is shown in the emulation processor system 409 that the virtual object moves from position P1 to position P2. Also, in the example, user input 420 (FIG. 4A) instructs the emulation processor system 409 to move the virtual object from position P1 to P2. Similarly, as another example, the virtual object described herein is for moving from direction O1 to direction O2, and when operation n is a write operation in which the direction of the virtual object should be updated from O1 to O2, the direction O1 at destination register address n is overwritten with direction O2 to execute basic block n.In the example, when the basic block n is executed, it is shown in the emulation processor system 409 that the virtual object moves from direction O1 to direction O2. Further, in the example, the user input 420 instructs the emulation processor system 409 to move the virtual object from direction O1 to O2.

[0070] As yet another example, when a part of the virtual object described herein changes its color from red to green, and the operation n is a write operation where the color of the virtual object should be updated from red to green, the data representing red at the destination register address n is overwritten with the data representing green, and the basic block n is executed. In the example, when the basic block n is executed, it is shown in the emulation processor system 409 that a part of the virtual object should change its color from red to green. Also, in the example, the user input 420 instructs the emulation processor system 409 to change the color of a part of the virtual object from red to green. In a similar manner, other parameters such as intensity and texture can be changed based on the user input 420.

[0071] Each basic block includes the number of cycles for basic block execution. For example, basic block 1 includes the number of cycles 1 for basic block 1 execution. As another example, basic block 2 includes the number of cycles 2 for basic block 2 execution, and basic block n includes the number of cycles n for basic block n execution. As an example, the estimated number of cycles for basic block execution is estimated by the basic block compiler 104 (FIG. 1) at the time of basic block compilation. In the example, the estimated number of cycles is stored in the basic block. Also, in the example, after the basic block is executed by the block dispatcher 302 (FIG. 3), the block dispatcher 302 updates the estimated execution number of cycles with the actual count in the above manner and provides the actual count to the block compiler 104. The estimated number of cycles is replaced by the actual count of the basic block by the block compiler 104. As another example, the actual count of the number of cycles for operation n execution is generated by the block dispatcher 302 and stored in basic block n. In the example, there is no estimation of the number of cycles for operation n execution.

[0072] Furthermore, as another example, one or more of basic blocks 1 to n include an invalid mark indicating that one or more of basic blocks 1 to n are checked for validity. For example, basic block n includes invalid mark n.

[0073] It should be noted that by converting the emulated PU code 106 into basic blocks 1 to n of the game code gcN, hooks such as hook blocks can be inserted between any two of basic blocks 1 to n. For example, hook block n can be inserted between basic blocks (n - 1) and n. Hook block n has the same structure as the structure of basic block n. For example, a hook block includes a source register address, a destination register address, an operation, and the number of execution cycles of the operation of the hook block. As an example, due to security issues related to legacy machines, the hooks described in this specification cannot be inserted between the instructions of the emulated CPU code 106 (FIG. 1) stored in the legacy machine for execution on the legacy machine.

[0074] Furthermore, it should be noted that the basic blocks 1 to n are key-input to the cache 102, such as being fixed therein (FIG. 1). For example, the basic block 1 has a start memory address 1 indicating the start location of the basic block 1 in the cache 102. Also, the basic block 1 has an end memory address 1 indicating the end location of the basic block 1 in the cache 102. As another example, the end address 1 of the basic block 1 is indicated by an offset in the cache 106 from the start memory address 1. As yet another example, the basic block 2 has a start memory address 2 indicating the start location of the basic block 2 in the cache 102. Also, the basic block 2 has an end memory address 2 indicating the end location of the basic block 2 in the cache 102. As another example, the end address 2 of the basic block 2 is indicated by an offset in the cache 106 from the start memory address 2. Similarly, as another example, the basic block n has a start memory address n indicating the start location of the basic block n in the cache 102. Also, the basic block n has an end memory address n indicating the end location of the basic block n in the cache 102. As another example, the end address n of the basic block n is indicated by an offset in the cache 106 from the start memory address n. From the start and end memory addresses of the basic blocks 1 to n stored in the cache 102, an emulation processor system 409 (FIG. 4A), such as the basic block compiler 102, can identify the locations of the basic blocks 1 to n in the cache 102.

[0075] Also, when the user input indicates that the updated machine's block dispatcher 302 executes basic block n immediately after executing basic block 1, it should be noted that the block dispatcher 302 skips the execution of basic blocks 2 to (n - 1) in the cache 102 and jumps from basic block 1 to basic block n. In this case, the execution of basic block 1 is interrupted by the block dispatcher 302 when the block dispatcher 302 jumps to basic block n. Also, in this case, the start address of the next basic block is consecutive to the end address of the previous basic block. For example, start address 2 is consecutive to end address 1, and start address n is consecutive to the end address (n - 1) of basic block (n - 1).

[0076] In one embodiment, source register addresses 1 to n are the memory addresses of the registers in the cache 102, and destination register addresses 1 to n are the memory addresses of the registers in the cache 102.

[0077] In one embodiment, a basic block includes a plurality of operations. For example, basic block n includes a first operation, a first source register address, and a first destination register address. Basic block n further includes a second operation, a second source register address, and a second destination register address.

[0078] In one embodiment, a basic block includes an operation, a plurality of source addresses, and a destination address.

[0079] In one embodiment, a basic block includes an operation, a plurality of destination addresses, and a source address.

[0080] In one embodiment, a basic block includes a plurality of operations, a plurality of source addresses, and a plurality of destination addresses.

[0081] In one embodiment, a basic block includes one or more operations, one or more source addresses, and one or more destination addresses.

[0082] In one embodiment, the basic block includes either a source register address or a destination register address, but not both.

[0083] In one embodiment, the block compiler 102 does not estimate the number of cycles for the execution of basic block n. Rather, the block dispatcher 302 generates an actual count of the number of cycles for the execution of basic block n and stores the actual count in basic block n.

[0084] FIG. 5B is a diagram for explaining an embodiment of a compilation operation executed by the basic block compiler 104 (FIG. 1). An example of an emulated PU code instruction M is shown as instruction 550, and an example of a basic block n is shown as basic block 552, where M is a positive integer. Instruction 550 includes a source address M having a length of a bits, a destination address M having a length of b bits, and an operation M represented by bits of length c, where a, b, and c are positive integers. As an example, a is 4, b is 4, and c is 32. As an example, the a bits, b bits, and c bits are stored in one or more memory devices of a legacy machine. For example, the a bits are stored in memory device 406 or 412 (FIGS. 4A and 4B). Operation 552 includes a source register address n having a length of d bits, a destination address n having a length of e bits, and an operation n represented by bits of length f, where d, e, and f are positive integers. As an example, d is 8, e is 8, and f is 64. As an example, the d bits, e bits, and f bits are stored in one or more registers of an updated machine. As an example, d is greater than a, e is greater than b, and f is greater than c. To illustrate, when a is 4, b is 4, and c is 32, d is 8, e is 8, and f is 64. As another example, when a is 4, b is 4, and c is 32, d is 16, e is 16, and f is 128.

[0085] To perform the compilation operation, the basic block compiler 104 (FIG. 1) converts the source address M to the source register address n, converts the destination address M to the destination register address n, and converts the operation M to the operation n to generate the basic block n from the emulated PU code instruction M. For example, the basic block compiler 104 shifts 4 bits of the source address M to the right to occupy 4 memory addresses of 8 source registers in the cache 102 and masks any bits of the remaining 4 memory addresses of the 8 source registers. The 4 memory addresses occupied by 4 bits of the source address M are at the lowest positions of the 8 source registers in the cache 102, and the remaining 4 memory addresses whose bits are masked are at the 8 highest positions of the source registers in the cache 102.

[0086] As another example, the basic block compiler 104 shifts 4 bits of the destination address M to the right to occupy 4 memory addresses of 8 destination registers in the cache 102 and masks any bits of the remaining 4 memory addresses of the 8 destination registers. The 4 memory addresses occupied by 4 bits of the destination address m are at the lowest positions of the 8 destination registers in the cache 102, and the remaining 4 memory addresses whose bits are masked are at the 8 highest positions of the 8 destination registers in the cache 102.

[0087] Similarly, as another example, the basic block compiler 104 shifts 32 bits of the operation M to the right to occupy 32 memory addresses of 64 operation registers in the cache 102 and masks any bits of the remaining 32 memory addresses of the 64 operation registers. The 32 memory addresses occupied by 32 bits of the operation M are at the lowest positions of the 32 operation registers in the cache 102, and the remaining 32 memory addresses whose bits are masked are at the 64 highest positions of the 64 operation registers in the cache 102. The operation n is stored in the operation register of the cache 102.

[0088] FIG. 6A is a diagram of an embodiment of a system 600 for explaining the components of an emulation processor system 409. The system 600 includes a memory device 412 and an emulation processor system 409. The basic block compiler 104 of the emulation processor system 409 includes a parser or decoder 602. The basic block compiler 104 further includes a block creator 604, a block cacher 606A, and a block reader 608. The emulation processor system 409 includes a block dispatcher 302.

[0089] As an example, each of the parser 609, the block creator 604, the block cacher 606, the block reader 608, and the block dispatcher 302 is implemented using software, hardware, or a combination thereof. For example, each of the parser 609, the block creator 604, the block cacher 606, the block reader 608, and the block dispatcher 302 is a separate integrated circuit such as a PLD or an ASIC or a controller or a processor or a part of a computer program. As another example, each of the parser 609, the block creator 604, the block cacher 606, the block reader 608, and the block dispatcher 302 is a separate computer software program.

[0090] The game code gcN includes a plurality of instructions such as the emulated PU code instruction 1, the emulated PU code instruction 2, up to the emulated PU code instruction M. For example, each instruction of the game code gcN is a series of bits and can be executed by a processor of a legacy machine to implement functions such as moving a virtual object from position P1 to position P2, or changing the direction of the virtual object from O1 to O2, or modifying some parameters of the virtual object.

[0091] The parser 602 is coupled to a block creator 604 that is coupled to a block cacher 606 and a block reader 608. The block cacher 606 and the block reader 608 are coupled to the cache 102. The block reader 608 is coupled to the block dispatcher 302.

[0092] FIG. 6B is a flowchart illustrating an embodiment of a method 650 for compiling and executing basic blocks 1 - n. The method 650 is shown using the system 600 of FIG. 6A. In operation 652 of method 650, the block creator 604 determines whether any user input, such as user input 1, has been received. As an example, user input 1 is a signal that includes the identification of one or more buttons of one or more of the handheld controllers 414 (FIG. 4A) selected by user 1. As another example, user input 1 is a signal that includes measures of movement, such as pitch, yaw, and roll, relative to the origin of the xyz coordinate system centered on the handheld controller 414. As yet another example, user input 1 is a signal that includes measures of movement, such as pitch, yaw, and roll, relative to the origin of the xyz coordinate system of the HMD. An example of user input 1 is user input 420 (FIG. 4A).

[0093] If the block creator 604 determines that no user input has been received, it continues to check whether user input was received in operation 652. For example, the basic block compiler 104 does not execute any of the basic blocks (n + 1) - p stored in the cache 102 (FIG. 1), and the basic block compiler 104 (FIG. 1) does not identify any of the emulated PU code instructions 1 - M (FIG. 6A) when no user input was received in operation 652 (where p is a positive integer). When user input is received in operation 652, it is assumed that basic blocks 1 - n have not been generated and are not stored in the cache 102.

[0094] On the other hand, in response to determining that user input has been received in operation 652, in operation 654 of method 650, block creator 604 determines whether one or more of the basic blocks (n+1) to p stored in cache 102 satisfy the user input. For example, block creator 604 sends a request to block reader 608 to access the basic blocks (n+1) to p from cache 102. In the example, upon receiving the request, block reader 608 reads the basic blocks (n+1) to p from cache 102 and sends the basic blocks (n+1) to p to block creator 604. Further, in the example, block creator 604 determines whether one or more functions of the basic blocks (n+1) to p satisfy the user input 1, such as processing the user input 1. To explain, when the user input 1 indicates changing the position of a virtual object from position P1 to position P2, block creator 604 determines whether any of the basic blocks (n+1) to p include an operation of overwriting position P1 with position P2. If it is determined that one or more of the basic blocks (n+1) to p include an operation of overwriting position P1 with P2, block creator 604 determines that one or more functions among one or more of the blocks (n+1) to p satisfy the user input 1. On the other hand, if it is determined that none of the basic blocks (n+1) to p include an operation of overwriting position P1 with P2, block creator 604 determines that the functions of the basic blocks (n+1) to p do not satisfy the user input 1.

[0095] As another explanation, when the user input 1 is for changing the direction of the virtual object from direction O1 to direction O2, the block creator 604 determines whether any of the basic blocks (n + 1) to p includes an operation of overwriting direction O1 with direction O2. If it is determined that one or more of the basic blocks (n + 1) to p include an operation of overwriting direction O1 with O2, the block creator 604 determines that one or more functions among one or more of the basic blocks (n + 1) to p satisfy the user input 1. On the other hand, if it is determined that none of the basic blocks (n + 1) to p includes an operation of overwriting direction O1 with O2, the block creator 604 determines that the functions of the basic blocks (n + 1) to p do not satisfy the user input 1. As yet another explanation, when the user input 1 is to change the value of some parameters of the virtual object from the first value to the second value, the block creator determines whether any of the basic blocks (n + 1) to p includes an operation of overwriting the first value with the second value. If it is determined that one or more of the basic blocks (n + 1) to p include an operation of overwriting the first value with the second value, the block creator 604 determines that one or more functions among one or more of the basic blocks (n + 1) to p satisfy the user input 1. On the other hand, if it is determined that none of the basic blocks (n + 1) to p includes an operation of overwriting the first value with the second value, the block creator 604 determines that the functions of the basic blocks (n + 1) to p do not satisfy the user input 1.

[0096] If it is determined that one or more functions of the basic blocks (n + 1) to p satisfy the user input 1, at operation 656 of method 600, block dispatcher 302 executes one or more of the basic blocks (n + 1) to p. For example, if it is determined that one or more functions of the basic blocks (n + 1) to p satisfy the user input 1, block creator 604 sends an instruction to block dispatcher 302 to execute one or more of the basic blocks (n + 1) to p. In the example, in response to receiving the instruction, block dispatcher 302 sends a command to block reader 608 to read one or more of the basic blocks (n + 1) to p from cache 102 to satisfy the user input received at operation 652. Also, in the example, when receiving one or more of the basic blocks from cache 102 in response to the command, block dispatcher 302 executes one or more of the basic blocks (n + 1) to p.

[0097] On the other hand, if it is determined that the functions of blocks (n + 1) to p do not satisfy the user input 1, at operation 658 of method 600, block compiler 102 identifies one or more of the emulated PU code instructions 1 to M for processing the user input received at operation 652. For example, if it is determined that the functions up to blocks (n + 1) to p do not satisfy the user input 1, block creator 604 sends a request to parser 602 to analyze game code gcN and identify and obtain one or more of the emulated PU code instructions 1 to M of game code gcN that satisfy the function identified by the user input 1. In the example, in response to receiving the request, parser 602 accesses memory device 412, analyzes game code gcN, determines whether one or more functions of the emulated PU code instructions 1 to M satisfy the user input 1, and if it is determined that one or more functions of the emulated PU code instructions 1 to M satisfy the user input 1, parser 602 provides one or more of the emulated PU code instructions 1 to M to block creator 604.

[0098] Specifically, when user input 1 is for changing the position of the virtual object from position P1 to position P2, the parser 602 determines whether any of the emulated PU code instructions 1 to M includes an operation of overwriting position P1 with position P2. If it is determined that one or more of the emulated PU code instructions 1 to M include an operation of overwriting position P1 with P2, the parser 602 determines that one or more functions among one or more of the emulated PU code instructions 1 to M satisfy user input 1. On the other hand, if it is determined that none of the emulated PUU code instructions 1 to M include an operation of overwriting position P1 with P2, the parser 602 determines that the functions of the emulated PU code instructions 1 to M do not satisfy user input 1.

[0099] As another explanation, when user input 1 is to change the direction of the virtual object from direction O1 to direction O2, the parser 602 determines whether any of the emulated PU code instructions 1 to M includes an operation of overwriting direction O1 with direction O2. If it is determined that one or more of the emulated PU code instructions 1 to M include an operation of overwriting direction O1 with O2, the parser 602 determines that one or more of the functions of one or more of the emulated PU code instructions 1 to M satisfy user input 1. On the other hand, if it is determined that none of the emulated PUU code instructions 1 to M includes an operation of overwriting position O1 with O2, the parser 602 determines that the functions of the emulated PU code instructions 1 to M do not satisfy user input 1. As yet another example, when user input 1 is to change the value of a part of the parameters of the virtual object from the first value to the second value, the parser 602 determines whether any of the emulated PU code instructions 1 to M includes an operation of overwriting the first value with the second value. If it is determined that one or more of the emulated PU code instructions 1 to M include an operation of overwriting the first value with the second value, the parser 602 determines that one or more of the functions of one or more of the emulated PU code instructions 1 to M satisfy user input 1. On the other hand, if it is determined that none of the emulated PU code instructions 1 to M includes an operation of overwriting the first value with the second value, the parser 602 determines that the functions of the emulated PU code instructions 1 to M do not satisfy user input 1.

[0100] In operation 660 of method 600, when one or more of the emulated PU code instructions 1 to M that satisfy user input 1 are received from parser 602, block creator 604 applies the compilation operation described above to generate one or more basic blocks 1 to n from among one or more of the emulated PU code instructions 1 to M. For example, block creator 604 compiles one or more basic blocks 1 to n, sends one or more basic blocks 1 to n to block cacher 606, and sends instructions for executing one or more of basic blocks 1 to n to block dispatcher 302. Upon receiving one or more basic blocks 1 to n, block cacher 606 stores one or more basic blocks 1 to n in cache 102.

[0101] In operation 662 of method 600, when receiving, from block creator 604, instructions for executing one or more basic blocks 1 to n, block dispatcher 302 executes the one or more basic blocks 1 to n to process the user input received in operation 652. For example, block dispatcher 302 sends a request to block reader 608 to read one or more of basic blocks 1 to n from cache 102. Upon receiving the command, block reader 608 reads one or more of basic blocks 1 to n from cache 102 and provides the one or more of basic blocks 1 to n to block dispatcher 302. Upon receiving the one or more of basic blocks 1 to n, block dispatcher 302 executes the one or more of basic blocks 1 to n to generate a virtual environment 452 (Figure 4B). Specifically, block dispatcher 302 executes the one or more of basic blocks 1 to n to generate an image frame, which includes virtual environment data such as the position and orientation of virtual object 454, the parameters of virtual object 454, the position and orientation of other virtual objects within virtual environment 452, and the parameters of other virtual objects within virtual environment 452. Block dispatcher 302 provides the image frame to the GPU of emulation processor system 409 to display, such as by rendering virtual environment 452 on the display screen of display device 410 (Figure 4A). When another user input, such as user input 2, is received after user input 1 is received in operation 652, method 600 is repeated.

[0102] FIG. 6C is a diagram of an embodiment of a system 670 for showing that different basic blocks or different sets of basic blocks are dynamically compiled for different user inputs. The system 670 includes a memory device 412, a basic block compiler 104, a block dispatcher 302, and a cache 102. When the basic block compiler 104 receives a user input 1, the basic block compiler 104 determines whether the basic block 1 corresponding to the user input 1 is stored in the cache 102. For example, when the basic block 1 includes a function for processing the user input 1, the basic block 1 corresponds to the user input 1. To illustrate, when the user input 1 is to move a virtual object from a position P1 to a position P2, and the basic block 1 includes an operation of updating the position P1 stored in the destination register address 1 with the position P2, the basic block 1 can process the user input 1. In an example, the user input 1 is a signal indicating the selection of a right movement button, or a left movement button, or an up movement button, or a down movement button on the handheld controller 414 (FIG. 4A). Similarly, when the basic block 2 does not include a function for processing the user input 1, the basic block 2 does not correspond to the user input 1. To illustrate, when the user input 1 is for moving a virtual object from a position P1 to a position P2 without changing the direction of the virtual object, and the basic block 2 includes an operation of updating the direction O1 stored in the destination register 2 with the direction O2, the basic block 2 cannot process the user input 1. When it is determined that the basic block 1 that can process the user input 1 is stored in the cache 102, the basic block compiler 104 provides the basic block 1 to the block dispatcher 302 to execute the basic block 1.

[0103] On the one hand, if it is determined that the basic block 1 is not stored in the cache 102, the basic block compiler 104 analyzes the emulated PU code 106 stored in the memory device 412 to identify the emulated PU code instruction 1 corresponding to the user input 1. For example, the basic block compiler 104 analyzes the emulated PU code 106 to identify that the emulated PU code instruction 1 meets the requirements, such as processing the user input 1. To explain, if the user input 1 is for moving a virtual object from position P1 to position P2, and the emulated PU code instruction 1 includes the function of updating the position P1 stored at the destination address 1 with position P2, the emulated PU code instruction 1 can process the user input 1. Similarly, when the emulated PU code instruction 2 does not include the function for processing the user input 1, the emulated PU code instruction 2 does not correspond to the user input 1. To explain, if the user input 1 is for moving a virtual object from position P1 to position P2 without changing the direction of the virtual object, and the emulated PU code instruction 2 includes the operation of updating the direction O1 stored at the destination address 2 with direction O2, the emulated PU code instruction 2 cannot process the user input 1.

[0104] If it is determined that the emulated PU code instruction 1 can process the user input 1 while the emulated PU code instruction 2 cannot process the user input 1, the basic block compiler 104 accesses, such as by reading the emulated PU code instruction 1 from the memory device 412, and compiles the basic block 1 from the emulated PU code instruction 1. The basic block compiler 102 does not compile the basic block 2 from the emulated PU code instruction 2 in response to receiving the user input 1. The basic block compiler 104 stores the basic block 1 in the cache 102 and sends, to the block dispatcher 302, an instruction to access and execute the basic block 1. Upon receiving the instruction, the block dispatcher 302 reads the basic block 1 from the cache 102 and executes the basic block 1.

[0105] Similarly, when the basic block compiler 104 receives the user input 2, the basic block compiler 104 determines whether the basic block 2 corresponding to the user input 2 is stored in the cache 102. For example, when the basic block 2 includes a function for processing the user input 2, the basic block 2 corresponds to the user input 2. To explain, when the user input 2 is to move a virtual object from the direction O1 to the direction O2, and the basic block 2 includes an operation of updating the direction O1 stored in the destination register address 2 with the direction O2, the basic block 2 can process the user input 2. In the illustration, the user input 2 is a signal indicating the selection of a button that rotates clockwise or counterclockwise on the handheld controller 414. Similarly, when the basic block 1 does not include a function for processing the user input 2, the basic block 1 does not correspond to the user input 2. To explain, when the user input 2 is for moving the virtual object from the direction O1 to the direction O2 without changing the position of the virtual object, and the basic block 1 includes an operation of updating the position P1 stored in the destination register 1 with the position P2, the basic block 1 cannot process the user input 2. When it is determined that the basic block 2 capable of processing the user input 2 is stored in the cache 102, the basic block compiler 104 provides the basic block 2 to the block dispatcher 302 to execute the basic block 2.

[0106] On the other hand, when it is determined that the basic block 2 is not stored in the cache 102, the basic block compiler 104 analyzes the emulated PU code 106 stored in the memory device 412 to identify the emulated PU code instruction 2 corresponding to the user input 2. For example, the basic block compiler 104 analyzes the emulated PU code 106 to identify that the emulated PU code instruction 2 satisfies, such as processing the user input 2. To explain, if the user input 2 is for moving a virtual object from direction O1 to direction O2, and the emulated PU code instruction 2 includes a function of updating the direction O1 stored in the destination address 2 with direction O2, the emulated PU code instruction 2 can process the user input 2. Similarly, when the emulated PU code instruction 1 does not include a function for processing the user input 2, the emulated PU code instruction 1 does not correspond to the user input. To explain, if the user input 2 is for moving the virtual object from direction O1 to direction O2 without changing the direction of the virtual object, and the emulated PU code instruction 1 includes an operation of updating the position P1 stored in the destination address 1 with position P2, the emulated PU code instruction 1 cannot process the user input 2.

[0107] When it is determined that the emulated PU code instruction 1 can process the user input 2 and when it is determined that the emulated PU code instruction 1 cannot process the user input 2, the basic block compiler 104 accesses, such as by reading the emulated PU code instruction 2 from the memory device 412, and compiles the emulated PU code instruction 2 to generate the basic block 2. The basic block compiler 102 does not compile the emulated PU code instruction 1 in response to receiving the user input 2. The basic block compiler 104 stores the basic block 1 in the cache 102 and sends an instruction to access and execute the basic block 2 to the block dispatcher 302. Upon receiving the instruction, the block dispatcher 302 reads the basic block 2 from the cache 102 and executes the basic block 2.

[0108] FIG. 7A is a diagram of an embodiment of a system 700 for explaining the deletion of the emulated PU code 106 from the memory device 412. The system 700 includes a block creator 604, an instruction remover 702, and a memory device 412. Examples of the instruction remover 702 include a processor, an ASIC, a PLD, a computer program, a part of a computer program, and a microcontroller. The instruction remover 702 is coupled to the block creator 604 and is coupled to the memory device 412.

[0109] Figure 7B is a flowchart for explaining an embodiment of a method 720 for deleting an emulated PU code 106 (FIG. 6C) from a memory device 412 (FIG. 6C). The method 720 includes an operation 702 for determining whether all instructions of the emulated PU code 106 have been compiled. For example, the block creator 604 (FIG. 7A) determines whether all of the emulated PU code instructions 1 to M of the game code gcN have been compiled. To explain, before any of the emulated PU code instructions 1 to M of the game code gcN are compiled, the block creator 604 sends a request to the processor of the legacy machine to obtain all identities of the emulated PU code instructions 1 to M of the game code gcN. In the example, the block creator 604 sends identities of the game code gcN, such as one or more bits, to the processor of the legacy machine to obtain all identities of the emulated PU code instructions 1 to M of the game code gcN. Examples of identities of the emulated PU code instructions 1 to M include one or more bits. To explain, the identity of the emulated PU code instruction M is represented by a first sequence of bits, and the identity of the emulated PU code instruction M-1 is represented by a second sequence of bits, which is different from the first sequence. When receiving the identities of the emulated PU code instructions 1 to M from the processor of the legacy machine, the block creator 604 stores the identities in a table in the cache 102. When each of the emulated PU code instructions 1 to M is compiled, the block creator 604 updates the table to include an indication identifying which of the emulated PU code instructions 1 to M have been compiled. The block creator 604 determines whether all of the emulated PU code instructions 1 to M have been compiled from the indication identifying which of the emulated PU code instructions 1 to M have been compiled.

[0110] When it is determined that all of the emulated PU code instructions 1 to M of the game code gcN have been compiled, the block creator 604 sends a command to the instruction remover 702 (FIG. 7A) to delete the game code gcN from the memory device 412. Upon receiving the command, in operation 724 of method 720, the instruction remover 702 erases the emulated PU code instructions 1 to M from the memory device 412.

[0111] On the other hand, when it is determined that one or more of the emulated PU code instructions 1 to M of the game code gcN have not been compiled based on the table, in operation 726 of method 720, the block creator 604 does not send a command to the instruction remover 702 to delete the game code gcN from the memory device 412. Until a command to delete the game code gcN is received, the instruction remover 702 does not delete the emulated PU code instructions 1 to M from the memory device 412.

[0112] In one embodiment, the block creator 604 determines whether the game code gcN stored in the cache 102 will be accessed from the memory device 412 (FIG. 4A) within a predetermined period from the latest time when the game code gcN is accessed from the memory device 412. As an example, the block creator 604 can access the Internet clock via the computer network 408 to determine the latest time and the predetermined period. As another example, the block creator 604 includes a clock source such as a clock oscillator to count the latest time and the predetermined period. If it is determined that the game code gcN will not be accessed from the memory device 412 within the predetermined period, the block creator 604 sends a command to the instruction remover 702 to delete the game code gcN from the memory device 412. As an example, when the game code gcN is not accessed within the predetermined period, most of the emulated CPU code instructions 1 to M are accessed by the basic block compiler 104 to compile one or more of the basic blocks 1 to n. As another example, when the game code gcN is not accessed within the predetermined period, some of the emulated CPU code instructions 1 to M that are frequently used during the play of the legacy game N having the game title GN are accessed by the basic block compiler 104 to compile one or more of the basic blocks 1 to n. On the other hand, if it is determined that the game code gcN is accessed within the predetermined period, the block creator 604 does not send a command to the instruction remover 702, and the game code gcN is not deleted from the memory device 412.

[0113] FIG. 8A is a diagram of an embodiment of an emulation processor system 800 for explaining the verification of basic blocks. The emulation processor system 800 is an example of the emulation processor system 409 (FIG. 4B). The emulation processor system 800 includes a basic block compiler 104, a cache 102, a block validator 802, and a block flagger 804. The block validator 802 is coupled to a block creator 604, a block dispatcher 302, a parser 602, and the block flagger 804. Each of the clock validator 802 and the block flagger 804 is coupled to the cache 102.

[0114] As an example, the block validator 802 is implemented as an ASIC, or a PLD, or a microcontroller, or a processor, or a computer program, or a part of a computer program. Also, as an example, the block flagger 804 is implemented as an ASIC, or a PLD, or a microcontroller, or a processor, or a computer program, or a part of a computer program.

[0115] In one embodiment, the terms ASIC, PLD, microcontroller, microprocessor, controller, and processor are used interchangeably herein.

[0116] FIG. 8B is a flowchart of an embodiment of a method 850 for explaining a verification operation executed by an emulation processor system 800 (FIG. 8A). In operation 852 of method 800, block validator 802 (FIG. 8A) determines whether basic block n is compiled. For example, block validator 802 accesses, such as by reading cache 102, and compares with basic blocks 1 to n-1 previously stored in cache 102 to determine whether a new basic block, such as basic block n, is stored in cache 102. Block validator 802 previously identified basic blocks 1 to n-1 stored in cache 102. If it is determined that basic block n is not cached, block validator 802 continues to access cache 102 to determine whether a new basic block is cached. For example, block validator 802 periodically analyzes basic blocks 1 to n-1 stored in cache 102 to determine whether basic block n is stored in cache 102.

[0117] When it is determined that the basic block n is cached, in operation 854 of method 800, the block validator 802 generates a first hash value from one or more of the emulated PU code instructions 1 to M from which the basic block n is compiled. For example, the block validator 802 sends a request to the parser 602 to obtain one or more of the emulated CPU code instructions 1 to M from the memory device 412. The request includes the identity of the memory address of the basic block n in the cache 102. The identity of the memory address of the basic block n is received by the block validator 602 from the block creator 604, such as being obtained by the request. Upon receiving the request from the block validator 802, the parser 602 reads one or more of the emulated PU code instructions 1 to M from the memory device 412 and provides one or more of the emulated PU code instructions 1 to M to the block validator 802. To explain, when one or more of the emulated PU code instructions 1 to M are provided to the basic block compiler 104 to compile the basic block n, the parser 602 stores a one-to-one correspondence between one or more identities of one or more memory addresses occupied by the basic block n in the cache 102 and one or more identities of one or more memory addresses occupied by one or more of the emulated PU code instructions 1 to M in the memory device 412. The parser 602 receives the identity of the memory address of the basic block n in the cache 102 from the block validator 802 and identifies one or more memory addresses of one or more of the emulated PU code instructions 1 to M in the memory device 412 from the one-to-one correspondence. The parser 602 reads one or more of the emulated PU code instructions 1 to M from one or more memory addresses of the memory device 412 and provides one or more of the emulated PU code instructions 1 to M to the block validator 802.

[0118] Continuing with the example, when the block validator 802 receives one or more of the emulated PU code instructions 1 to M from the parser 602, the block validator 802 generates a first hash value from one or more of the emulated PU code instructions 1 to M and stores the first hash value in the cache 102. To explain, the block validator 802 generates a digest or checksum from one or more of the emulated PU code instructions 1 to M corresponding to the basic block n. In the example, the first hash value is stored in one or more registers of the cache 102 that are keyed to include the basic block n.

[0119] In operation 856 of method 800, the block validator 802 sends a command to the parser 602 to determine whether one or more memory addresses within the memory device 412 storing one or more of the emulated PU code instructions 1 to M are being overwritten. One or more memory addresses within the memory device 412 can be overwritten with data from a compact disc read-only memory (CD-ROM) of the legacy machine. The data may be an update to one or more of the emulated PU code instructions 1 to M. An update to one or more of the emulated PU code instructions 1 to M is referred to as an updated instruction. Alternatively, the data may be damaged, but this is not an updated instruction. When the parser 602 receives the command from the block validator 802, the parser 602 sends a request to the processor of the legacy machine to determine whether one or more memory addresses within the memory device 412 storing one or more of the emulated PU code instructions 1 to M are being overwritten.

[0120] When the processor of the legacy machine receives a request from the parser 602, it provides a response to the request, and the response indicates whether one or more memory addresses have been overwritten within the memory device 412 in which one or more of the emulated PU code instructions 1 to M are stored. When receiving a response that one or more memory addresses within the memory device 412 in which one or more of the emulated PU code instructions 1 to M are stored have not been overwritten, the block validator 802 sends a command to the block flagger 804 (FIG. 8A) not to mark the basic block n as invalid. When receiving the command, in operation 858 of method 800, the block flagger 804 does not mark the basic block n as invalid.

[0121] On the other hand, when receiving a response that one or more memory addresses within the memory device 412 in which one or more of the emulated PU code instructions 1 to M are stored have been overwritten, in operation 860 of method 850, the block validator 802 sends a command to the block flagger 804 (FIG. 8A) to mark the basic block n as invalid. When receiving a command to mark the basic block n as invalid, the block flagger 804 marks the basic block n as invalid. For example, the block flagger 804 accesses the basic block n in the cache 102 and includes an identifier such as an invalid mark n (FIG. 5A) in the memory address within the cache 102 having the basic block n to indicate that the basic block n is invalid. An example of the invalid mark n is a sequence of bits.

[0122] In one embodiment, the hash value is an example of a verification result.

[0123] FIG. 8C is a continuation of the flowchart of method 800 of FIG. 8B. In operation 862 of method 800, block validator 802 (FIG. 8A) determines whether basic block n should be executed. For example, block dispatcher 302 sends an instruction to block validator 802 that basic block n should be executed. Upon receiving the instruction from block dispatcher 302 that basic block n should be executed, block validator 802 determines that basic block n should be executed. Until the instruction is received, block validator 802 does not determine that basic block n should be enabled.

[0124] Upon determining that basic block n should be executed, block validator 802 determines, in operation 864 of method 800, whether basic block n is marked as invalid. For example, block validator 802 sends a command to block flagger 804 to determine whether basic block n has a flag set as invalid. Upon receiving the command, block flagger 804 sends an indication to block validator 802 as to whether basic block n has a flag set as invalid. To explain, block flagger 804 accesses basic block n, determines whether basic block n includes invalid mark n, generates an invalid indication, and sends it to block validator 802. As another explanation, block flagger 804 accesses basic block n, determines whether basic block n does not include invalid mark n, generates an indication of lack of invalidity, and sends it to block validator 802. Upon receiving from block flagger 804 an indication that basic block n is marked as invalid, block validator 802 determines that basic block n is invalid. On the other hand, upon receiving from block flagger 804 an indication that basic block n does not have invalid mark n, block validator 802 determines that basic block n is not marked as invalid.

[0125] If it is determined that the basic block n is not marked as invalid, at operation 866 of method 800, the basic block n is executed. For example, operation 866 is similar to operation 662 (FIG. 6B). Specifically, the block validator 802 sends a command to the block dispatcher 302 to execute the basic block n. Upon receiving the command to execute the basic block n, the block dispatcher 302 executes the basic block n. In this description, the block dispatcher 302 does not execute the basic block n until the command to execute the basic block n is received from the block validator 802.

[0126] In response to determining that the basic block n is marked as invalid, at operation 866 of method 800, block validator 802 determines whether the basic block n is actually valid. For example, upon determining that the basic block n is marked as invalid, block validator 802 generates a second hash value from either the updated instructions or the corrupted data stored at the same memory address within memory device 412 where one or more of the emulated PU code instructions 1-M compiled for the basic block n are stored. In the example, the second hash value is keyed into one or more registers of cache 102 to include the basic block n. To explain, block validator 802 sends a request to parser 602 to obtain the updated instructions or the corrupted data stored at one or more memory addresses within memory device 412. Upon receiving the request, parser 602 reads the updated instructions or the corrupted data from the one or more memory addresses from memory device 412 and provides the updated instructions or the corrupted data to block validator 802. In the illustration, block validator 802 generates a second hash value from the updated instructions or the corrupted data and stores this second hash value in cache 102. For example, block validator 802 generates a digest or a checksum from the updated instructions or the corrupted data. In the illustration, block validator 802 compares the second hash value with the first hash value to determine whether the basic block n is valid. Based on the comparison, if it is determined that there is a match between the first hash value and the second hash value, block validator 802 determines that the basic block n is valid. This match occurs when the second hash value is generated from the updated instructions. On the other hand, based on this comparison, if it is determined that there is no match between the first hash value and the second hash value, block validator 802 determines that the basic block n is invalid. This lack of match occurs when the second hash value is generated from the corrupted data.

[0127] In response to determining that the basic block n is valid, at operation 870 of method 800, the invalid mark n is removed. For example, the block validator 802 sends a command to the block flagger 804 to remove the invalid mark n from the basic block n stored in the cache 102. Upon receiving the command from the block validator 802, the block flagger 804 accesses the basic block n from the cache 102 and erases the invalid mark n from the basic block n. Specifically, the block flagger 804 erases the invalid mark n from one or more memory addresses of the cache 102 where the invalid mark n is stored. After removing the invalid mark n, the block flagger 804 sends a command to the block dispatcher 302 to execute the basic block n, and upon receiving the command, the block dispatcher 302 executes the basic block n at operation 866. As an example, the block dispatcher 302 does not execute the basic block n until a command to execute the basic block n is received from the block flagger 804.

[0128] On the other hand, if it is determined that the basic block n is not valid, in operation 872 of method 800, an additional basic block having the same function or operation as the basic block n is compiled. For example, the block validator 802 sends a command not to execute the basic block n to the block dispatcher 302 and sends an indication that the basic block n is invalid to the block creator 604. Upon receiving the indication, the block creator 604 recompiles the basic block n. Specifically, except that the additional basic block is compiled from an additional set of emulated PU code instructions, such as one or more of the emulated PU code instructions 1 to M stored in the memory device of an additional legacy machine, the block creator 604 compiles the additional basic block in the same way as it compiles the basic block n from one or more of the emulated PU code instructions 1 to M stored in the memory device 412. The additional legacy machine is different from the legacy machine including the memory device 412. Also, the additional set of emulated PU code instructions is of the same game title GN as the additional set of game code gcN. As another example, except that the additional basic block is compiled from an additional set of emulated PU code instructions, such as one or more of the emulated PU code instructions 1 to M stored at a memory address of the memory device 412 different from the memory address where the emulated PU code instructions 1 to M are stored, the block creator 604 compiles the additional basic block in the same way as it compiles the basic block n from one or more of the emulated PU code instructions 1 to M stored in the memory device 412. As yet another example, except that the additional basic block is compiled from an additional set of emulated PU code instructions, such as one or more of the emulated PU code instructions 1 to M stored in a memory device different from the memory device 412, the block creator 604 compiles the additional basic block in the same way as it compiles the basic block n from one or more of the emulated PU code instructions 1 to M stored in the memory device 412.

[0129] Additional basic blocks are sent from block creator 604 to block dispatcher 302 for execution. For example, block dispatcher 302 executes the additional basic blocks to generate part of an additional virtual environment such as virtual environment 452 (FIG. 4B). Specifically, block dispatcher 302 executes the additional basic blocks to generate part of an image frame, which includes additional virtual environment data such as the position and orientation of virtual object 454, the parameters of virtual object 454, the positions and orientations of other virtual objects within virtual environment 452, and the parameters of other virtual objects within the additional virtual environment. Block dispatcher 302 provides the image frame to the GPU of emulation processor system 409 to display, such as by rendering the additional virtual environment on the display screen of display device 410.

[0130] Method 850 is shown with reference to basic block n and additional basic blocks, but it should be noted that method 850 is equally applicable to other basic blocks 1 to (n - 1) and more additional basic blocks generated in the same way as the additional basic blocks are generated.

[0131] In one embodiment, a set of emulated PU code instructions 1 to M is stored in a first set of one or more memory devices located outside the legacy machine, and an additional set of emulated PU code instructions is stored in a second set of one or more memory devices located outside the additional legacy machine.

[0132] FIG. 9A is a diagram for explaining an embodiment of the legacy machine 900. Examples of the legacy machine 900 are PS1 (registered trademark) or PS2 (registered trademark). The legacy machine 900 includes a legacy CPU 902, a legacy GPU 904, a memory device 906, and a CD-ROM drive 908. The memory device 906 is an example of the memory device 412 (FIG. 4A). An example of the legacy CPU 902 is a 32-bit CPU that can process up to 32 bits in one clock cycle. Also, an example of the legacy GPU 904 is a 32-bit GPU that can process up to 32 bits in one clock cycle. An example of the memory device 906 is 2 megabytes (MB) of RAM.

[0133] The legacy CPU 902 and the legacy GPU 904 are coupled to the memory device 906 that is coupled to the CD-ROM drive 908. The emulated PU code 106 is stored within the memory device 906.

[0134] The legacy CPU 902 or the legacy GPU 904 accesses the emulated PU code 106 from the memory device 906 and processes the emulated PU code 106. The CD-ROM drive 908 receives a CD-ROM containing updated instructions or broken code. The updated instructions or broken code can be transferred from the CD-ROM to the memory device 906 by the legacy CPU 902.

[0135] In one embodiment, the legacy machine 900 does not include a cache. In one embodiment, the legacy machine 900 includes a cache with a limited capacity, such as a 4 kilobyte (KB) cache.

[0136] FIG. 9B is a diagram for explaining an embodiment of an updated machine 920. An example of the updated machine 920 is a PS4 (registered trademark) or a PS5 (registered trademark). The updated machine 920 includes a CPU 922, a GPU 924, a memory system 926, and a cache 928 which is an example of the cache 102 (FIG. 1). The game console 402 (FIG. 4B) is an example of the updated machine 920. As an example, the CPU 922 includes two quad-core modules, and each module can process 64 bits during each clock cycle. Each core has a 32 kilobyte (KB) cache. Another example of the CPU 922 is a 64-bit CPU that can process up to 64 bits during one clock cycle. As an example, the GPU 924 has 1152 cores, and each core can process 64 bits during one clock cycle. As another example, the legacy GPU 924 is a 64-bit GPU and can process up to 64 bits during one clock cycle.

[0137] The CPU 922 and the GPU 924 are coupled to the memory system 906. As an example, the emulated PU code 106 is stored in the legacy memory system 906. An example of what the memory system 926 includes is a hard drive that provides 500 gigabytes (GB) or 2 terabytes (TB) of storage. The CPU 922, the GPU 924, the cache 928, and the memory system 926 are coupled to each other via a bus 930.

[0138] Before accessing the memory system 926, the CPU 922 or the GPU 924 first accesses the cache 928. If it is determined that the cache 928 does not contain the data requested by the CPU 922 or the GPU 924, the CPU 922 or the GPU 924 accesses the memory system 926.

[0139] In one embodiment, it should be noted that the game code gcN cannot be executed by the CPU 922 or the GPU 924, but can be executed by the legacy CPU 902 or the legacy GPU 904. To explain, the CPU 922 or the GPU 924 cannot execute the game code gcN, while the legacy CPU 902 or the legacy GPU 904 can execute the game code gcN. Also, the basic blocks 1 to n can be executed by the CPU 922 or the GPU 924, but can also be executed by the legacy CPU 902 or the legacy GPU 904. To explain, the CPU 922 or the GPU 924 can execute the basic blocks 1 to n, while the legacy CPU 902 or the legacy GPU 904 cannot execute the basic blocks 1 to n.

[0140] In one embodiment, the cache 928 is located within the CPU 922.

[0141] In one embodiment, the cache 928 is located within the GPU 924.

[0142] In one embodiment, the cache 928 is located within the CPU 922, and another cache such as the cache 102 is located within the GPU 924.

[0143] FIG. 10A is a diagram of an embodiment of a system 1000 for explaining the combination of a plurality of basic blocks into one basic block by a basic block compiler 104 (FIG. 1). A block creator 604 (FIG. 6A) receives a user input 1 such as a signal indicating that a virtual object 454 (FIG. 4B) starts at a position P1 and a direction O1 in level 1 of a legacy game N having a game title GN. When receiving the user input 1, a basic block 1 is generated by the basic block compiler 104 based on an emulated PU code instruction 1 and processes the user input 1. Similarly, the block creator 604 receives a user input 2 such as a signal indicating that the virtual object 454 starts at the position P1 and the direction O1 in level 2 of the legacy game N. When receiving the user input 2, a basic block 2 is generated by the basic block compiler 104 based on an emulated PU code instruction 2 and processes the user input 2.

[0144] When a user input 3 such as a signal indicating that the virtual object 454 starts at the position P1 and the direction O1 in level 3 of the legacy game N is received, the block compiler 104 identifies the basic blocks 1 and 2 as processing of the user input 3. When identifying in such a manner, the block creator 604 integrates into a single basic block such as the basic block 1 or the basic block 2, such as combining the basic blocks 1 and 2. The integration saves memory space in the cache 102 and also improves the efficiency when accessing a single basic block instead of accessing the basic block 1 and the basic block 2.

[0145] The block creator 604 further generates a value for the pointer of the cache 102. An example of a pointer used herein is a register. The pointer indicates to the block dispatcher 302 to execute a single basic block when user input for processing basic block 1 or basic block 2 is received. When the block dispatcher 302 executes basic block 1 or 2, the block dispatcher 302 accesses the pointer and executes a single basic block instead of basic block 1 or 2.

[0146] FIG. 10B is a diagram of an embodiment of a system 1020 for explaining one or more modifications of basic blocks 1 to n. The system 1020 includes a block interface 1022, a cache 102, and a block dispatcher 302. As an example, basic block n includes the operation n of dead reckoning. As another example, basic block n includes the operation n of bouncing a crosshair from the edge of the display screen of the display device 410 (FIG. 4B). Examples of the block interface 1022 are an ASIC, or a PLD, or a microprocessor, or a microcontroller, or a computer program, or a part of a computer program. The block interface 1022 is coupled to the cache 102.

[0147] The block interface 1022 provides the user with access to one or more basic blocks 1 to n stored in the cache 102. For example, the user selects one or more buttons on an input device such as a keyboard, mouse, or keypad to generate a modified input 1024. As an example, the modified input 1024 includes one or more user instructions in the form of source code for modifying basic block n. Specifically, the modified input 1024 includes a user instruction for removing the dead reckoning operation n from basic block n. As another example, the modified input 1024 includes an instruction for changing operation n such that the crosshair slides off the edge of the display screen of the display device 410 and is displayed at the opposite edge of the display screen of the display device 410. The opposite edge is diagonal to the edge where the crosshair slides off.

[0148] The input device is coupled to the block interface 1022. The modified input 1024 is sent from the input device to the block interface 1022 to modify basic block n and output the modified basic block n. As an example, the modified basic block n does not include a dead reckoning operation. As another example, the modified basic block n includes an operation where the crosshair slides from one edge to the opposite edge. As yet another example, the modified basic block n includes an operation of calculating the number of clock cycles for the execution of operation n and storing that number in basic block n. Specifically, the number of cycles is stored at the memory address of the cache 102 where basic block 1 is stored. The operation of calculating the number of clock cycles is executed by the block dispatcher 302 (Figure 3) in addition to executing operation n. The block dispatcher 302 calculates the number of clock cycles during the execution of operation n and stores that number in basic block n.

[0149] The block creator 604 further generates a value for the pointer in the cache 102, and the pointer indicates to the block dispatcher 302 to execute the modified basic block n when user input for processing the basic block n is received. When the block dispatcher 302 executes the basic block n, the block dispatcher 302 accesses the pointer and executes a single basic block instead of the basic block n.

[0150] FIG. 10C is a diagram of an embodiment of a system 1030 showing the combination of basic blocks created based on subroutines and basic blocks generated based on emulated PU code instructions that call the subroutines. The block creator 604 (FIG. 6A) receives user input 1 such as a signal indicating a change in the position and / or orientation of the virtual object 454 (FIG. 4B) that results in the destruction of the virtual object 454. Upon receiving the user input 1, the basic block 1 is generated by the basic block compiler 104 based on the emulated PU code instruction 1 and processes the user input 1. The emulated PU code instruction 1 includes a function call to subroutine 1. Thus, upon receiving the user input 1, the basic block 2 is generated by the basic block compiler 104 based on subroutine 1, which is an example of the emulated PU code instruction 2. As an example, the basic block 2 includes operation 2 to regenerate the virtual object 454 at position P1 and orientation O1.

[0151] When a user input 2, such as a signal indicating a change in the position and / or orientation of the virtual object 454 (Figure 4B) that will result in the destruction of the virtual object 454, is received, the block compiler 104 identifies the basic blocks 1 and 2 as processing the user input 2. When so identified, the block creator 604 integrates the basic blocks 1 and 2, such as by combining them into a single basic block such as basic block 1 or basic block 2. For example, when the user input 2 is received, the destruction and regeneration of the virtual object 454 are triggered. When basic blocks 1 and 2 are combined, subroutine 1 is skipped.

[0152] The block creator 604 further generates a value and stores that value in a pointer within the cache 102. This value indicates to the block dispatcher 302 to execute a single basic block when a user input for processing basic blocks 1 and 2 is received. When the block dispatcher 302 is to execute basic blocks 1 and 2, the block dispatcher 302 accesses the pointer and executes a single basic block instead of basic block 1.

[0153] Figure 10D is a diagram of an embodiment of a system 1040 showing the insertion of a basic block between two basic blocks. The system 1040 includes a block interface 1022 and a cache 102. After basic blocks 1 and 2 are stored in the cache 102, a modification input 1042 is received from the user via an input device. As an example, the modification input 1042 is a signal indicating source code that defines a basic block 1.1 that includes a source register address 1.1 within the cache 102, a destination register address 1.1 within the cache 102, and an operation 1.1 to be performed on the data stored at the source register address 1.1, or at the destination register address 1.1, or on the data stored at both the source register address 1.1 and the destination register address 1.1. Examples of operations 1.1 include jump, store, load, branch, and arithmetic operations.

[0154] The modified input 1042 further includes an indication of the location of the basic block 1.1 and an association between the basic block 1.1 and the basic blocks 1 or 2. For example, the modified input 1042 includes a signal indicating that the basic block 1.1 is inserted between the basic blocks 1 and 2 in the cache 102, and a signal indicating that the basic block 1.1 is linked to the basic blocks 1 and / or 2. To explain, the basic block 1.1 is inserted to include a location in the cache 102, such as one or more register addresses, in order to receive the invalid mark 2 of the basic block 2. As another explanation, the basic block 1.1 is inserted to include a location, such as one or more register addresses in the cache 102, in order to receive the number of execution cycles of the basic block 2. In the illustration, the block interface 1022 receives the modified input 1042, identifies from the modified input 1042 that the basic block 1.1 is inserted between the basic blocks 1 and 2, and inserts the basic block 1.1 between the basic blocks 1 and 2. As another example, the block interface 1022 determines that the basic block 1.1 includes an operation for unlocking the level of the legacy game N having the game title GN. The level is between the first level identified by the operation of the basic block 1 and the second level identified by the operation of the basic block 2. The first level and the second level are in the legacy game N having the game title GN. The level inserted between the first level and the second level is not part of the game code gcN but is a new level of the legacy game N. An example of the level inserted between the first level and the second level is a level in which the virtual object 454 fires a laser gun instead of a missile.

[0155] Further, block interface 1022 identifies the value of the pointer from the modified input 1042 and stores that value in cache 102. As an example, the value of the pointer indicates that the execution of basic block 1.1 occurs immediately before the execution of basic block 2. When block dispatcher 302 executes basic block 2, block dispatcher 302 identifies the value within the pointer to point to basic block 1.1 and executes basic block 1.1 immediately before executing basic block 2. As another example, the value of the pointer indicates that the execution of basic block 1.1 occurs immediately after the execution of basic block 2. After block dispatcher 302 executes basic block 2, block dispatcher 302 identifies the value within the pointer to point to basic block 1.1 and executes basic block 1.1 immediately after executing basic block 2.

[0156] Figure 10E is a diagram of an embodiment of a system 1050 showing switching in the order of execution of basic blocks. System 1050 includes cache 102 and block interface 1022. Cache 102 contains a value within a pointer of cache 102, and that value indicates that basic block 2 is to be executed after the execution of basic block 1. The user provides a modified input 1052 including a signal indicating that the execution order of basic blocks 1 and 2 is to be switched using an input device. Upon receiving the signal, block interface 1022 changes the value of the pointer within cache 102 to indicate that basic block 1 is to be executed after the execution of basic block 2.

[0157] FIG. 11A is a flowchart of an embodiment of method 1100 for explaining the use of the actual count of the number of cycles stored in basic block n. Method 1100 includes an operation 662 of executing basic block n. In operation 1102 of method 1100, block dispatcher 302 (FIG. 3) counts the number of cycles of execution of basic block n in operation 662 to generate a first count. The block dispatcher 302 stores the first count in basic block n in operation 1104 of method 1100. For example, the block dispatcher 302 writes the actual count to a register having one of the register addresses in cache 102 assigned to basic block n.

[0158] In operation 1106 of method 1100, block creator 604 (FIG. 6A) determines whether the same basic block n should be executed again. For example, the block creator 604 determines whether user input for processing the same basic block n has been received from the client device. The block creator 604 continues to determine whether user input for processing the same basic block n has been received until user input is received.

[0159] FIG. 11B is a continuation of the flowchart of method 1100 of FIG. 11A. When it is determined that user input for processing basic block n has been received again, basic block n is executed again by block dispatcher 304. In operation 1108 of method 1100, block dispatcher 304 counts the number of cycles of execution of basic block n in operation 1106 to calculate a second count.

[0160] The block dispatcher 304 determines whether the second count is within a predetermined limit from the first count in operation 1108 of method 1100. The predetermined limit is stored in the cache 102. In response to determining that the second count is not within the predetermined limit from the first count, in operation 1110 of method 1100, the block dispatcher 304 generates a notification. For example, when the block dispatcher 304 is located within the game console 402 (FIG. 4A), the GPU 924 (FIG. 9B) of the game console 402 displays a representation of the notification on the display device 410 (FIG. 4A) of the client device and transmits the notification to the server system 404 via the computer network 408 to notify the server system 404. As another example, when the block dispatcher 304 is located within the server system 404 (FIG. 4B), the block dispatcher 304 generates a notification, and the GPU of the server system 404 displays a representation of the notification on a display device coupled to the server system 404. On the other hand, when it is determined that the second count is within the predetermined limit from the first count, in operation 1112 of method 1100, the block dispatcher 304 does not trigger a notification.

[0161] FIG. 12 is a diagram of an embodiment of a system 1200 for explaining the transfer of basic blocks 1 to n from a first client device to a second client device. The system 1200 includes a game console 402, a computer network 408, a server system 404, a game console 1202, and a display device 1204. The game console 1202 is similar to the game console 402. For example, both the game consoles 402 and 1202 are PS4 (registered trademark), or both the game consoles 402 and 1202 are PS5 (registered trademark), or the game console 402 is PS4 (registered trademark) and the game console 1202 is PS5 (registered trademark), or the game console 402 is PS5 (registered trademark) and the game console 1202 is PS4 (registered trademark). As another example, the game console 1202 is not a legacy machine. Also, the display device 1204 is similar to the display device 410 of FIG. 4A. For example, the display device 410 is an HMD or a TV or a smart TV or a computer monitor.

[0162] The game console 402 includes a network interface controller 1213. The game console 1202 includes an emulated processor system 1206, a cache 1208, and a network interface controller 1210. The emulated processor system 1206 has the same structure and the same functions as the emulated processor system 409. Also, the cache 1208 has the same structure and the same functions as the cache 102. The emulated processor system 1206, the cache 1208, and the network interface controller 1210 are coupled to each other via a bus 1218.

[0163] When basic blocks 1 to n are stored in cache 102, block compiler 104 of the emulated processor system 409 transmits basic blocks 1 to n to network interface controller 1213. Network interface controller 1213 applies a network communication protocol to basic blocks 1 to n to generate one or more packets embedding basic blocks 1 to n, and transmits the one or more packets to server system 404 via computer network 408. When receiving the one or more packets, the network interface controller of server system 404 applies the network communication protocol to the one or more packets to extract basic blocks 1 to n of legacy game N having game title GN, and stores basic blocks 1 to n in one or more memory devices of server system 404.

[0164] User 2 uses handheld controller 1212 to select one or more buttons on handheld controller 1212 to log in to his / her user account assigned to User 2 by server system 404. User 2 logs in to his / her user account when user ID2 such as a username and a password are authenticated by server system 404. When User 2 logs in to his / her user account, User 2 can access a plurality of game titles such as game title G1, game title Ga, game title G2, up to game title GN.

[0165] When logging in to User Account 2, User 2 uses Handheld Controller 1212 to select one or more buttons on Handheld Controller 1212 to generate User Input 1214. User Input 1214 is generated when selecting Legacy Game N with the title GN displayed on Display Device 1204. When User Input 1214 is generated, Cache 1208 does not contain basic blocks 1 to n. For example, when receiving User Input 1214, the basic block compiler of the emulated processor system 1206 checks Cache 102 to determine whether Cache 102 contains one or more of basic blocks 1 to n of game code GCN for processing User Input 1214. If it is determined that Cache 102 does not contain one or more of basic blocks 1 to n for processing User Input 1214, the emulated processor system 1206 generates a request 1220 for one or more of basic blocks 1 to n and sends request 1220 to Network Interface Controller 1210.

[0166] Upon receiving request 1220, Network Interface Controller 1210 generates one or more packets that embed request 1220 by applying the network communication protocol to request 1220, and sends the one or more packets to Server System 404 via computer network 408. The network interface controller of Server System 404 receives the one or more packets, applies the network communication protocol, and extracts request 1220 from the one or more packets. The processor of Server System 404 analyzes request 1220 to identify that basic blocks 1 to n are requested.

[0167] In response to determining that basic blocks 1 through n are requested, server system 404 accesses basic blocks 1 through n stored in one or more memory devices of server system 404 and provides basic blocks 1 through n to the network interface controller of server system 404. The network interface controller of server system 404 applies a network communication protocol to generate one or more packets embedding basic blocks 1 through n and transmits the one or more packets to game console 1202 via computer network 408.

[0168] The network interface controller 1210 of game console 1202 receives one or more packets having basic blocks 1 through n, applies a network communication protocol to extract basic blocks 1 through n from the one or more packets, and transmits basic blocks 1 through n to emulated processor system 1206. The basic block compiler of emulated processor system 1206 stores basic blocks 1 through n in cache 1208.

[0169] When user input 1224 is received from handheld controller 1212 during play of a game having game title GN, the basic block compiler of emulated processor system 1206 identifies one or more of basic blocks 1 through n in cache 1208 to process user input 1224. The block dispatcher of emulated processor system 1206 executes one or more of basic blocks 1 through n to process user input 1224. In this way, when basic blocks 1 through n are compiled by emulated processor system 409, basic blocks 1 through n need not be compiled by emulated processor system 1206 but can be accessed from server system 404 by emulated processor system 1206.

[0170] FIG. 13 is a diagram of one embodiment of a system 1300 for showing the generation of a meta-game from one or more mini-games such as challenges, which is played during the execution of a plurality of sets of basic blocks 1 to n. The system 1300 includes a server system 404, a computer network 408, a game console 402, a display device 410, a game console 1202, and a display device 1204. The server system 404 is coupled to the game consoles 402 and 1202 via the computer network 408. Note that the combination of the game console 402, the display device 410, and the handheld controller 414 is referred to herein as a client device 1301. Further note that the combination of the game console 1202, the display device 1204, and the handheld controller 1212 is referred to herein as a client device 1303.

[0171] The server system 404 includes a cache 102, a recorder 1302, a network interface controller 1213, a memory device 1304, and a memory device 1306. The server system 404 further includes a CPU 1308, a GPU 1310, and a memory device 412. The CPU 1308, the GPU 1310, the memory device 412, the cache 102, the memory device 1306, the recorder 1302, the network interface controller 1213, and the memory device 1304 are coupled to each other via a bus 1312. As an example, the CPU 1308 and the GPU 1310 are components of an emulation processor system 409 (FIG. 4B). For example, the CPU 1308 executes a basic block compiler 104 and a block dispatcher 302 (FIG. 3). The CPU 922 (FIG. 9) is an example of the CPU 1308. The GPU 924 (FIG. 9) is an example of the GPU 1310.

[0172] The example of the recorder 1302 includes a CPU, a PLD, an ASIC, a controller, a part of a computer program, or a computer program. To explain, the recorder 1302 is a computer program executed by the CPU 1308.

[0173] The memory device 1306 includes a user account database 1314 that stores a plurality of user accounts such as user account 1 and user account 2. User account 1 is assigned to user 1 by the CPU 1308, and user account 2 is assigned to user 2 by the CPU 1308. Also, the memory device 1304 includes a recording database 1316 that includes a plurality of recordings such as recording 1 and recording 2.

[0174] Recording 1 is a record of challenge 1 that user 1 undertakes via user account 1 during the play of legacy game N, and recording 2 is challenge 2 that user 1 undertakes via user account 1 during the play of legacy game N. For example, during game level 1 of legacy game N, user 1 pauses legacy game N and selects a button on the handheld controller 114 to generate a user input. In the example, the user input is a signal generated by the handheld controller 414 and transmitted to the server system 404 via the game console 402 (FIG. 13) and the computer network 408 (FIG. 13). Also, in the example, the server system 404 determines, based on the user input, that user 1 wishes to pause legacy game N and pauses legacy game N. To explain, the CPU 1308 and the GPU 1310 stop the execution of one or more of basic blocks 1 to n and stop the generation of one or more image frames of legacy game N for transmission to the game console 402 via the computer network 408. In the illustration, the CPU 1308 generates a value identifying one of basic blocks 1 to N at which the play of legacy game N pauses and stores the value in a pointer in the cache 102.

[0175] Continuing with the example, User 1 starts playing Challenge 1 after the legacy game N pauses. In the example, when the CPU 1308 receives user input indicating that User 1 wishes to play Challenge 1 via User Account 1, it accesses the pointer from the cache 102 to identify which execution of one or more basic blocks 1 to n to end and continues the execution of one or more basic blocks 1 to n. The user input indicating that User 1 wishes to play Challenge 1 is generated as a signal when User 1 selects one or more buttons on the handheld controller 414 (FIG. 13). Further, in the example, when User 1 starts playing Challenge 1, the recorder 1302 starts recording User 1's play of Challenge 1 via User Account 1, generates Record 1, and stores Record 1 in the recording database 1316. Similarly, in the example, during game level Z of the legacy game N, User 1 pauses the legacy game N and selects one or more buttons on the handheld controller 114 to select Challenge 2, where Z is a positive integer. When User 1 starts playing Challenge 2, the recorder 1302 starts recording the play of Challenge 2, generates Record 2, and stores Record 2 in the recording database 1316.

[0176] As an example, each record includes a game state. To explain, Record 1 includes the game state of one or more virtual objects displayed during Challenge 1 of the legacy game N, and Record 2 includes the game state of one or more virtual objects displayed during Challenge 2 of the legacy game N. Examples of game states include the position and orientation of virtual objects. As another example, each record also includes rendering factors such as the color, or intensity, or texture, or shape, or a combination thereof of the virtual object. To explain, Record 1 includes the rendering factors of the virtual objects displayed during Challenge 1 during the execution of one or more of the basic blocks 1 to n. In the illustration, Record 2 includes the rendering factors of the virtual objects displayed during Challenge 2 during the execution of one or more of the basic blocks 1 to n.

[0177] As another example, each record includes a video of a user 1 playing a challenge and a video of user 1 while playing the challenge. For example, record 1 includes a video of the movement of virtual objects during the play of challenge 1 and a video of user 1 explaining one or more of the movements during challenge 1. Also, in the example, record 2 includes a video of the movement of virtual objects during the play of challenge 2 and a video of user 1 explaining one or more of the movements during challenge 2.

[0178] As yet another example, each record does not include a video of user 1 while playing the challenge, but includes a video of user 1 playing the challenge. For example, record 1 includes a video of the movement of virtual objects during the play of challenge 1 and excludes a video of user 1 explaining one or more of the movements during challenge 1. Also, in the example, record 2 includes a video of the movement of virtual objects during the play of challenge 2 and excludes a video of user 1 explaining one or more of the movements during challenge 2.

[0179] In one embodiment, in addition to CPU 1308, server system 404 includes multiple CPUs, and each CPU is implemented on a separate server such as a server blade or an updated machine of server system 404. Similarly, in addition to GPU 1310, server system 404 includes multiple GPUs, and each GPU is implemented on a separate server such as a server blade or an updated machine of server system 404.

[0180] In one embodiment, user account database 1314 and record database 1316 are stored in the same memory device.

[0181] In one embodiment, instead of challenge 2 being part of legacy game N, challenge 2 is part of another legacy game such as legacy game (N - 1) which is different from legacy game N.

[0182] In one embodiment, the basic blocks 1 to n stored in the cache 102 are distributed across multiple caches of the server system 404.

[0183] FIG. 14A is a diagram of one embodiment of a display device 410 showing an example of Challenge 1. After logging in to User Account 1, User 1 plays Game Level 1 of Legacy Game N. During the play of Level 1 of Legacy Game N, User 1 selects one or more buttons on the handheld controller 414 to generate user input for pausing Legacy Game N. When Legacy Game N pauses, User 1 further selects one or more buttons on the handheld controller 414 to generate another user input for playing Challenge 1. Challenge 1 includes stunts such as a cool movement where the virtual object 454 moves up and down and then down and up. For example, during the play of Challenge 1, the virtual object 454 is at position P1 and direction O1 at time t1. User 1 controls the handheld controller 414 to move the virtual object 454 from position P1 and direction O1 to position P2 and direction O2 at time t2. Further, User 1 controls the handheld controller 414 to move the virtual object 454 from position P2 and direction O2 to position P3 and direction O3 at time t3. At time t3, the virtual object 454 moves up and down. Also, User 1 controls the handheld controller 414 to move the virtual object 454 from position P3 and direction O3 to position P4 and direction O4 at time t4. User 1 further controls the handheld controller 414 to move the virtual object 454 from position P4 and direction O4 to position P5 and direction O5 at time t5. At time t5, the virtual object 454 moves down and up.

[0184] Note that the virtual object 454 moves around the virtual pyramid 411. For example, the virtual object 454 moves from position P1 to position P5 via positions P2 to P4 to circle around the virtual pyramid 411.

[0185] FIG. 14B is a diagram showing a hook inserted between any two of the basic blocks 1 to n of game level 1 of the legacy game N. As an example, the hook used in this specification is one or more hook blocks inserted by the programmer of user 1 to change the functions of the legacy game N. To explain, the hook is inserted between any two consecutive basic blocks of the basic blocks 1 to n stored in the cache 102. Therefore, the hook is stored in the cache 102. As another example, the structure of the hook block is the same as the structure of the basic block. To further explain, the hook includes a hook block including a source register address of a source register in the cache 102, a destination register address of a destination register in the cache 102, data stored in the source register address, or data stored in the destination register address, or an operation performed on data stored in both the source register address and the destination register address. As another illustration, the hook includes a hook block including one or more source register addresses of one or more source registers in the cache 102, one or more destination register addresses of one or more destination registers in the cache 102, data stored in the one or more source register addresses, or data stored in the one or more destination register addresses, or one or more operations performed on data stored in the one or more source register addresses and the one or more destination register addresses. As another illustration, the hook is inserted by the programmer or user 1 via an input device coupled to the cache 102.

[0186] The game pause hook 1420 is inserted after the basic block 11. The basic block 11 is executed during game level 1 of the legacy game N. The basic block 11 is executed by the block dispatcher 302 (FIG. 3) to move the virtual object 454 from the position P10 and the direction O10 to the position P11 and the direction O11. The game pause hook 1420 is inserted into the cache 102 by the programmer via the input device to enable the user 1 to pause the legacy game N after the basic block 11 is executed. The game pause hook 1420 is inserted into the cache 102 after one or more memory addresses where the basic block 11 is stored in the cache 102. For example, the value pointing to the game pause hook 1420 is inserted into the basic block 11 to enable the legacy game N to receive a request from the user 1 to pause the legacy game N during game level 1 of the legacy game N. The game pause hook 1420 is executed by the block dispatcher 302.

[0187] Also, the challenge creation hook 1422 is inserted into the cache 102 by a programmer via an input device to create Challenge 1 from one or more of the basic blocks 1 to n, such as the basic blocks 1 to 5 of the legacy game N. For example, the value pointing to the challenge creation hook 1422 is inserted into the game pause hook 1420 to enable the legacy game N to receive a request to start Challenge 1 from User 1. When a request to start Challenge 1 is received, the basic blocks 1 to 5 included as part of Challenge 1 are executed by the block dispatcher 302 based on the user input received during Challenge 1. To explain, when a first user input is received during Challenge 1, basic block 1 is executed to process the first user input, and when a second user input is received during Challenge 1, basic block 2 is executed to process the second user input. As another example, when a first user input is received during Challenge 1, basic blocks 1 and 2 are executed to process the first user input, and when a second user input is received during Challenge 1, basic blocks 3 and 5 are executed to process the second user input. As yet another example, when a first user input is received during Challenge 1, basic block 2 is executed to move the virtual object 454 from position P1 and direction O1 to position P2 and direction O2. Also, in the example, when a second user input is received during Challenge 1, basic block 3 is executed to move the virtual object 454 from position P2 and direction O2 to position P3 and direction O3. As a further example, when a third user input is received during Challenge 1, basic block 4 is executed to move the virtual object 454 from position P3 and direction O3 to position P4 and direction O4. In the example, when a fourth user input is received during Challenge 1, basic block 5 is executed to move the virtual object 454 from position P4 and direction O4 to position P5 and direction O5. The challenge creation hook 1422 is executed by the block dispatcher 302.

[0188] Furthermore, the recording start hook 1424 is inserted into the cache 102 by the programmer via the input device to record Challenge 1 as soon as the game pause hook 1422 is executed. For example, the value pointing to the recording start hook 1424 is inserted into the challenge creation hook 1422 to start recording Challenge 1 at the start of execution of one or more of the basic blocks 1 to n of Challenge 1 by the block dispatcher 302. The recording of Challenge 1 is stored as Recording 1 in the memory device 1304 (FIG. 13). When the recording start hook 1424 is executed, the CPU 1308 sends an instruction to the recorder 1302 to start recording. Upon receiving the instruction, the recorder 1302 records frames such as image frames and audio frames related to the play of Challenge 1 by User 1 and stores Recording 1 in the memory device 1304. The recording start hook 1424 is executed by the block dispatcher 302.

[0189] Furthermore, the challenge end hook 1426 is inserted into the cache 102 by the programmer via the input device to end Challenge 1 generated from one or more of the basic blocks 1 to n of the legacy game N. For example, the value pointing to the challenge end hook 1426 is inserted into each of the basic blocks 1 to 5 to end Challenge 1 during the execution of the basic block. To explain, when all of the basic blocks 1 to 5 of Challenge 1 are executed to move the virtual object 454, the challenge end hook 1426 is executed. As another example, the CPU 1308 (FIG. 13) includes a clock source such as a clock oscillator or a timer to count the amount of time after the start of execution of one or more of the basic blocks 1 to n of Challenge 1. The CPU 1309 determines whether the count exceeds a predetermined threshold. If it is determined that the count exceeds the predetermined threshold, the CPU 1308 ends the execution of one or more of the basic blocks 1 to n of Challenge 1. On the other hand, if it is determined that the count does not exceed the predetermined threshold, the CPU 1308 does not end the execution of one or more of the basic blocks 1 to n of Challenge 1. The challenge end hook 1426 is executed by the block dispatcher 302.

[0190] Also, the user challenge end hook 1428 is inserted into the cache 102 by a programmer via an input device to enable user 1 to end challenge 1 generated from one or more of the basic blocks 1 to n of the legacy game N at any time during the play of challenge 1. For example, the user challenge end hook 1428 is inserted into each of one or more of the basic blocks 1 to n. To explain, the value pointing to the user challenge end hook 1428 is inserted into each of the basic blocks 1 to 5 to enable user 1 to end challenge 1 via the user account 1 at any point during the execution of one or more of the basic blocks 1 to 5 of challenge 1. The user challenge end hook 1428 is executed by the block dispatcher 302.

[0191] Furthermore, the recording end hook 1430 is inserted into the cache 102 by a programmer via an input device to end the recording of challenge 1 when challenge 1 ends or when user 1 ends challenge 1. As an example, the value pointing to the recording end hook 1430 is inserted into the challenge end hook 1426 to end the recording of challenge 1 when the challenge end hook 1426 is executed. As another example, the value pointing to the recording end hook 1430 is inserted into the user challenge end hook 1428 to end the recording of challenge 1 when the user challenge end hook 1428 is executed. The recording end hook 1430 is executed by the block dispatcher 302. When the recording end hook 1430 is executed, the CPU 1308 sends an instruction to the recorder 1302 to stop the recording of challenge 1.

[0192] In one embodiment, the block dispatcher 302 is part of the CPU 1308, or the GPU 1310, or both the CPU 1308 and the GPU 1310.

[0193] FIG. 14C is a diagram of an embodiment of a display device 410 for showing an example of Challenge 2. After logging in to user account 1, user 1 plays game level Z of legacy game N. During the play of level Z of legacy game N, user 1 selects one or more buttons on handheld controller 414 to generate user input for pausing legacy game N. When legacy game N pauses, user 1 further selects one or more buttons on handheld controller 414 to generate another user input for playing Challenge 2. Challenge 2 includes stunts such as a cool movement where virtual object 454 moves along a zigzag path. For example, during the play of Challenge 1, virtual object 454 is at position P101 and direction O101 at time ta. User 1 controls handheld controller 414 to move virtual object 454 from position P101 and direction O101 to position P102 and direction O102 at time tb. Further, user 1 controls handheld controller 414 to move virtual object 454 from position P102 and direction O102 to position P103 and direction O103 at time tc. Also user 1 controls handheld controller 414 to move virtual object 454 from position P103 and direction O103 to position P104 and direction O104 at time td. User 1 further controls handheld controller 414 to move virtual object 454 from position P104 and direction O104 to position P105 and direction O105 at time te.

[0194] FIG. 14D is a diagram showing a hook inserted between any two of the basic blocks 1 to n of game level Z of the legacy game N. The game pause hook 1450 is inserted after the basic block 111. The basic block 111 is executed during game level Z of the legacy game N. The basic block 111 is executed by the block dispatcher 302 (FIG. 3) to move the virtual object 454 from the position P110 and the direction O110 to the position P111 and the direction O111. The game pause hook 1450 is inserted into the cache 102 by the programmer via the input device to enable the user 1 to pause the legacy game N after the basic block 111 is executed. The game pause hook 1450 is inserted into the cache 102 after one or more memory addresses where the basic block 111 is stored in the cache 102. For example, the value pointing to the game pause hook 1450 is inserted into the basic block 111 to enable the legacy game N to receive a request from the user 1 to pause the legacy game N during game level Z of the legacy game N. The game pause hook 1450 is executed by the block dispatcher 302.

[0195] Also, the challenge creation hook 1452 is inserted into the cache 102 by the programmer via the input device to create challenge 2 from one or more of the basic blocks 1 to n, such as the basic blocks 101 to 105 of the legacy game N. For example, the value pointing to the challenge game hook 1452 is inserted into the game pause hook 1450 to enable the legacy game N to receive a request to start challenge 2 from user 1. When a request to start challenge 2 is received, the basic blocks 101 to 105 included as part of challenge 2 are executed by the block dispatcher 302 based on the user input received during challenge 2. To explain, when the first user input is received during challenge 2, basic block 101 is executed to process the first user input, and when the second user input is received during challenge 2, basic block 102 is executed to process the second user input. As another example, when the first user input is received during challenge 2, basic blocks 101 and 102 are executed to process the first user input, and when the second user input is received during challenge 2, basic blocks 103 and 105 are executed to process the second user input. As yet another example, when the first user input is received during challenge 2, basic block 102 is executed to move the virtual object 454 from position P101 and direction O101 to position P102 and direction O102. Also, in the example, when the second user input is received during challenge 2, basic block 103 is executed to move the virtual object 454 from position P102 and direction O102 to position P103 and direction O103. Further in the example, when the third user input is received during challenge 2, basic block 104 is executed to move the virtual object 454 from position P103 and direction O103 to position P104 and direction O104. In the example, when the fourth user input is received during challenge 2, basic block 102 is executed to move the virtual object 454 from position P104 and direction O104 to position P105 and direction O105.The challenge creation hook 1452 is executed by the block dispatcher 302.

[0196] Furthermore, the recording start hook 1454 is inserted into the cache 102 by the programmer via the input device to record challenge 2 as soon as the game pause hook 1452 is executed. For example, the value pointing to the recording start hook 1454 is inserted into the challenge creation hook 1452 to start recording challenge 2 at the start of execution of one or more of the basic blocks 1 to n of challenge 2 by the block dispatcher 302. The recording of challenge 2 is stored as recording 2 in the memory device 1304 (FIG. 13). When the recording start hook 1454 is executed, the CPU 1308 sends an instruction to the recorder 1302 to start recording. Upon receiving the instruction, the recorder 1302 records frames such as image frames and audio frames related to the play of challenge 2 by user 1 and stores recording 2 in the memory device 1304. The recording start hook 1454 is executed by the block dispatcher 302.

[0197] Furthermore, the challenge end hook 1456 is inserted into the cache 102 by the programmer via the input device to end challenge 2 generated from one or more of the basic blocks 1 to n of the legacy game N. For example, the value pointing to the challenge end hook 1456 is inserted into each of the basic blocks 101 to 105 to end challenge 2 when the basic blocks are executed. To explain, when the basic books 101 to 105 are executed to move the virtual object 454 during challenge 2, the challenge end hook 1456 is executed. As another example, the CPU 1308 (FIG. 13) includes a clock source such as a clock oscillator or a timer to count the amount of time after the start of execution of one or more of the basic blocks 1 to n of challenge 2. The CPU 1309 determines whether the count exceeds a pre-set threshold. If it is determined that the count exceeds the pre-set threshold, the CPU 1308 ends the execution of one or more of the basic blocks 1 to n of challenge 2. On the other hand, if it is determined that the count does not exceed the pre-set threshold, the CPU 1308 does not end the execution of one or more of the basic blocks 1 to n of challenge 2. The challenge end hook 1456 is executed by the block dispatcher 302.

[0198] Also, the user challenge end hook 1458 is inserted into the cache 102 by the programmer via the input device to enable user 1 to end challenge 2 generated from one or more of the basic blocks 1 to n of the legacy game N. For example, the user challenge end hook 1458 is inserted into each of one or more of the basic blocks 1 to n. To explain, the value pointing to the user challenge end hook 1458 is inserted into each of the basic blocks 101 to 105 to enable user 1 to end challenge 2 via the user account 1 at any point during the execution of one or more of the basic blocks 1 to 5 of challenge 2. The user challenge end hook 1458 is executed by the block dispatcher 302.

[0199] Furthermore, the recording end hook 1460 is inserted into the cache 102 by the programmer via the input device to end the recording of Challenge 2 when Challenge 2 ends or when the user 1 ends Challenge 2. As an example, the value pointing to the recording end hook 1460 is inserted into the challenge end hook 1456 to end the recording of Challenge 2 when the challenge end hook 1456 is executed. As another example, the value pointing to the recording end hook 1450 is inserted into the user challenge end hook 1458 to end the recording of Challenge 2 when the user challenge end hook 1458 is executed. The recording end hook 1460 is executed by the block dispatcher 302. When the recording end hook 1460 is executed, the CPU 1308 sends a command to the recorder 1302 to stop the recording of Challenge 2.

[0200] In one embodiment, instead of game level Z, the basic blocks 101 - 105 belong to the same game level 1 to which the basic blocks 1 - 5 belong. For example, the basic blocks 101 - 105 are executed within the same game level as the game level in which the basic blocks 1 - 5 are executed.

[0201] In one embodiment, instead of game level Z of the same legacy game N, the basic blocks 101 - 105 belong to a different legacy game, such as legacy game (N - 1), from the legacy game N to which the basic blocks 1 - 5 belong. For example, the basic blocks 101 - 105 are executed during the play of legacy game (N - 1), and the basic blocks 1 - 5 are executed during the play of legacy game N.

[0202] FIG. 15A is a diagram of one embodiment of system 1500. System 1500 includes memory device 1304, cache 102, and block dispatcher 302. A programmer adds metagame request hook 1506 to cache 102. For example, after one or more of basic blocks 1-5 and one or more of basic blocks 101-105 are executed by block dispatcher 302 during the play of challenges 1 and 2 via user account 1, block dispatcher 302 executes metagame request hook 1506 to search for user input via user account 1 that requests the generation of a metagame based on challenges 1 and 2. In the example, when user input requesting the generation of a metagame is received via user account 1, block dispatcher 302 executes metagame request hook 1506 to identify basic blocks 1-5 and 101-105 that were executed by user 1 during the play of challenges 1 and 2 from records 1 and 2 of challenges 1 and 2. To explain, when user challenge end hook 1428 (FIG. 14B) receives user input to end challenge 1 via user account 1, one or more but not all of basic blocks 1-5 are executed during the execution of challenge 1. In the illustration, block dispatcher 302 executes metagame request hook 1506 to identify one or more but not all of basic blocks 1-5 and includes one or more but not all of basic blocks 1-5 to generate a metagame. As another illustration, when challenge end hook 1426 (FIG. 14B) is executed by dispatcher 302 to end challenge 1, all of basic blocks 1-5 are included in the metagame. In the illustration, block dispatcher 302 executes metagame request hook 1506 to identify all of basic blocks 1-5 and includes all of basic blocks 1-5 during another play of the metagame.

[0203] As yet another example, when the user challenge end hook 1458 (FIG. 14D) receives user input to end challenge 2 via user account 1, one or more but not all of the basic blocks 101-105 are executed during the execution of challenge 2. In the example, block dispatcher 302 executes the metagame request hook 1506 to identify one or more but not all of the basic blocks 101-105 and includes one or more but not all of the basic blocks 101-105 to generate a metagame. As yet another example, when the challenge end hook 1456 (FIG. 14D) is executed by dispatcher 302 to end challenge 2, all of the basic blocks 101-105 are included within the metagame. In the example, block dispatcher 302 executes the metagame request hook 1506 to identify all of the basic blocks 101-105 and includes all of the basic blocks 101-105 during another play of the metagame.

[0204] Furthermore, the programmer adds the sequence request hook 1508 to the cache 102. For example, the block dispatcher 302 executes the sequence request hook 1508 to search for user input that requests an execution sequence of basic blocks 1 to 5 and 101 to 105 via the user account 1. When user input is received via the user account 1, the block dispatcher 302 executes the sequence request hook 1508 for stitching, such as generating an execution order of one or more of basic blocks 1 to 5 and one or more of 101 to 105 for the mega game. To explain, one or more of basic blocks 1 to 5 are executed before one or more of basic blocks 101 to 105 during the play of the meta game by user 2 via the user account 2. When one or more of basic blocks 1 to 5 are executed before basic blocks 101 to 105, the play of challenge 1 proceeds smoothly before the play of challenge 2. In the illustration, one or more of basic blocks 101 to 105 are not executed before the execution of one or more of basic blocks 1 to 5 is completed. As another illustration, one or more of basic blocks 101 to 105 are executed before one or more of basic blocks 1 to 5 during the play of the meta game by user 2 via the user account 2. When one or more of basic blocks 101 to 105 are executed before basic blocks 1 to 5 are executed, the play of challenge 2 proceeds smoothly before the play of challenge 1. In the illustration, one or more of basic blocks 1 to 5 are not executed before the execution of one or more of basic blocks 101 to 105 is completed.

[0205] Furthermore, the programmer adds the leadership scoreboard request hook 1508 to the cache 102. For example, the block dispatcher 302 executes the leadership scoreboard request hook 1508 to search for user input requesting that the leadership scoreboard be added to the metagame via user account 1. When receiving user input via user account 1, the block dispatcher 302 executes the leadership scoreboard hook 1508 to add the leadership scoreboard to the metagame. The use of the leadership scoreboard is further described below.

[0206] Also, the programmer adds the trophy hook 1512 to the metagame. For example, the block dispatcher 302 executes the trophy hook 1512 during play of the metagame. Further details of the trophy hook 1512 are described below.

[0207] Furthermore, the programmer adds the ghost request hook 1514 again. The block dispatcher 302 executes the ghost request hook 1514 to generate one or more ghosts of one or more corresponding virtual objects, such as the virtual object 454, which are used to play challenges 1 and 2. The ghost request hook 1514 further includes a method of adding a ghost to the corresponding virtual object. For example, the ghost request hook 1514 specifies whether the ghost should be overlaid on the corresponding virtual object or presented under the corresponding virtual object. In the example, the ghost represents the corresponding virtual object and should be displayed in a different way from the corresponding virtual object. Specifically, the ghost should be displayed as being more transparent compared to the corresponding virtual object. As another example, the ghost request hook 1514 indicates that the first ghost should be added to the first virtual object of challenge 1 and the second ghost should be added to the second virtual object of challenge 2. The first ghost has a shape similar to or the same as the shape of the first virtual object, and the second ghost has a shape similar to or the same as the shape of the second virtual object. Further details of the ghost request hook 1514 are described below.

[0208] During the play of the meta-game by user 2 via user account 2, the block dispatcher 302 executes one or more of basic blocks 1 to 5 and one or more of basic blocks 101 to 105 in a sequence such as the sequence received from the user via user account 1 when the sequence request hook 1510 is executed. For example, if the user input received via user account 1 indicates that basic blocks 1 to 5 should be executed after basic blocks 101 to 105 are executed, the block dispatcher 302 first executes basic blocks 101 to 105 and then executes basic blocks 1 to 5. In the example, challenge 2 is played before challenge 1 in accordance with the sequence.

[0209] In one embodiment, one or more of the sequence requirement hook 1508, leadership scoreboard hook 1510, trophy hook 1512, and ghost requirement hook 1514 are optional. For example, cache 102 includes the leadership scoreboard hook 1510, but excludes the sequence requirement hook 1508, trophy hook 1512, and ghost requirement hook 1514.

[0210] In one embodiment, each of the metagame requirement hook 1506, sequence requirement hook 1508, or leadership scoreboard hook 1510, trophy hook 1512, and ghost requirement hook 1514 is executed by block dispatcher 302.

[0211] In one embodiment, instead of or in addition to the ghost hook 1514, a gameplay hook is included in cache 102 by a programmer. The gameplay hook is executed by block dispatcher 302. Further details of the gameplay hook are described below.

[0212] FIG. 15B is a diagram of a display device 410 for showing the selection of the execution order of challenges 1 and 2 by user 1 via user account 1. User 1 generates a user input 1550, which is a signal including a request to generate a meta-game, by selecting one or more buttons on the handheld controller 414. The signal is generated by the handheld controller 414. When the user input 1550 is received via user account 1, the block dispatcher 302 (FIG. 3) executes the meta-game request hook 1506 (FIG. 15A) to identify one or more of basic blocks 1-5 and one or more of basic blocks 101-105 to generate a meta-game. Further, after identifying one or more of basic blocks 1-5 and one or more of basic blocks 101-105, the block dispatcher 302 executes the sequence request hook 1508 (FIG. 15A) to generate the image data of the image 1552, and transmits the image data via user account 1 and the computer network 408 (FIG. 13) to display the image 1552 on the display device 410. The image 1552 includes a notification for the selection of the execution order of challenges 1 and 2. Further, the image 1552 includes a graphic button 1554 that can be selected by user 1 by selecting a button on the handheld controller 414. The image 1552 further includes a graphic button 1556 that can be selected by user 1 by selecting a button on the handheld controller 414.

[0213] Upon receiving a user input indicating the selection of the graphic button 1554 via the computer network 408, the block dispatcher 302 executes the sequence request hook 1508 to generate a first sequence in which one or more of blocks 1 to 5 of challenge 1 are executed before one or more of blocks 101 to 105 of challenge 2. On the other hand, upon receiving a user input indicating the selection of the graphic button 1556 via the computer network 408, the block dispatcher 302 executes the sequence request hook 1508 to generate a second sequence in which one or more of blocks 101 to 105 of challenge 2 are executed before one or more of blocks 1 to 5 of challenge 1.

[0214] FIG. 16A is a flowchart of an embodiment of a method 1600 for explaining the generation of a meta - game. In operation 1602 of method 1600, it is determined whether user input for a first challenge, such as challenge 1, was received during the execution of the first part of the legacy game N. For example, the block dispatcher 302 determines whether a user input including a request to pause the legacy game N at game level 1 was received via the computer network 408 (FIG. 13) and the user account 1. In the example, the user input is a signal generated when user 1 selects one or more buttons on the handheld controller 414 (FIG. 13). The signal is generated by the handheld controller 414. If the block dispatcher 302 determines so in the example, it executes the game pause hook 1422 (FIG. 14B) to pause the legacy game N at game level 1. Also, in the example, the block dispatcher 302 executes the challenge creation hook 1422 (FIG. 14B) to generate an image frame, such as an image frame including the challenge 1 creation button, for starting challenge 1 and transmits the image frame to the display device 410 via the user account 1 and the computer network 408 for display. Continuing the example, user 1 selects the challenge 1 creation button via the handheld controller 412, and the indication of the selection is transmitted to the server system 404 via the game console 402 and the computer network 408. Further, in the example, upon receiving the indication of the selection, the block dispatcher 302 executes one or more of the basic blocks 1 - n to continue the play of the legacy game N from the point when the legacy game N was paused to generate challenge 1, enabling user 1 to play challenge 1. The block dispatcher 302 continues to determine whether user input was received in operation 1602 until user input is received.

[0215] In operation 1604 of method 1600, the play of the first challenge is recorded as recording 1 by recorder 1302 (FIG. 13). For example, block dispatcher 302 executes recording start hook 1424 (FIG. 14B) to send a signal to recorder 1302 to start recording the play of challenge 1 by user 1 via user account 1. Upon receiving the signal to record, recorder 1302 starts recording the play of challenge 1 by user 1 via user account 1. When recording starts during the play of challenge 1, user 1 selects one or more buttons on handheld controller 414 (FIG. 14A) during challenge 1 to generate one or more user inputs. Upon receiving one or more user inputs via user account 1, block dispatcher 302 executes one or more of basic blocks 1-5 to process the one or more user inputs during the play of challenge 1. Recording 1 is stored in memory device 1304 (FIG. 13) by recorder 1302.

[0216] In operation 1606 of method 1600, it is determined whether user input has been received for a second challenge, such as challenge 2 during the execution of the second part of legacy game N. For example, block dispatcher 302 determines whether user input, such as a signal including a request to pause legacy game n at game level Z, has been received at user account 1 via computer network 408. In the example, the user input is generated by handheld controller 414 when user 1 selects one or more buttons on handheld controller 414 (FIG. 13). Continuing the example, if block dispatcher 302 determines so, it executes game pause hook 1450 (FIG. 14D) to pause legacy game N at game level Z. Also in the example, block dispatcher 302 executes challenge creation hook 1452 (FIG. 14D) to generate an image frame, such as an image frame including a challenge 2 creation button, and transmits the image frame to display device 410 via user account 1 and computer network 408 for display. In the example, user 1 selects the challenge 2 creation button via handheld controller 412, and the indication of the selection is transmitted to server system 404 via game console 402 and computer network 408. Further, in the example, upon receiving the indication of the selection, block dispatcher 302 executes one or more of basic blocks 1 to n to continue playing legacy game N from the point in time when legacy game N was paused to generate challenge 2, enabling user 1 to play challenge 2. Block dispatcher 302 continues to determine whether user input has been received in operation 1606 until user input is received.

[0217] In operation 1608 of method 1600, the play of the second challenge is recorded as recording 2 by recorder 1302. For example, block dispatcher 302 executes recording start hook 1454 (FIG. 14D) to send a signal to recorder 1302 to start recording the play of challenge 2 by user 1 via user account 1. In the example, upon receiving the signal to record, recorder 1302 starts recording the play of challenge 2 by user 1 via user account 1. Further in the example, when recording starts during the play of challenge 2, user 1 selects one or more buttons on handheld controller 414 to generate one or more user inputs during challenge 2. In the example, upon receiving one or more user inputs via user account 1, block dispatcher 302 executes one or more of basic blocks 101-105 to process the one or more user inputs during the play of challenge 2. Recording 2 is stored in memory device 1304 by recorder 1302.

[0218] In operation 1610 of method 1600, it is determined whether a user input for generating a meta-game has been received. For example, block dispatcher 302 determines whether a user input, which is a signal including a request to generate a meta-game from challenges 1 and 2, has been received at user account 1. In the example, the user input is generated by user 1 by selecting one or more buttons on handheld controller 414 (FIG. 13). Specifically, block dispatcher 302 executes meta-game request hook 1506 (FIG. 15A) to determine whether the user input received at user account 1 includes a request to generate a meta-game. Block dispatcher 302 continues to determine whether a user input for generating a meta-game has been received until a user input is received.

[0219] When it is determined that user input for generating a metagame has been received, operation 1612 is executed. Operation 1612 includes identifying one or more of basic blocks 1 to n, such as basic blocks 1 to 5, that are executed during the play of challenge 1 via user account 1, and one or more of basic blocks 1 to n, such as basic blocks 101 to 105, that are executed during the play of challenge 2 via user account 1. For example, block dispatcher 302 executes metagame request hook 1506 to identify from record 1 one or more of basic blocks 1 to 5 that are executed during the play of challenge 1 via user account 1. In the example, block dispatcher 302 executes metagame request hook 1506 to identify from record 2 one or more of basic blocks 101 to 105 that are executed during the play of challenge 2 via user account 1. Specifically, block dispatcher 302 sends a request to recorder 1302 to access records 1 and 2 from memory device 1304. In the illustration, upon receiving the request, recorder 1302 accesses records 1 and 2 from memory device 1304 when it obtains the request from block dispatcher 302 and provides the records to block dispatcher 302. Further, in the illustration, block dispatcher 302 analyzes records 1 and 2 to identify from record 1 one or more of basic blocks 1 to 5 that were executed to generate record 1, and to identify from record 2 one or more of basic blocks 101 to 105 that were executed to generate record 2.

[0220] FIG. 16B is a continuation of the flowchart of FIG. 16A showing method 1600 for stitching one or more of basic blocks 1-5 of challenge 1 with one or more of basic blocks 101-105 of challenge 2. In operation 1614 of method 1600, it is determined whether a user input has been received for generating a sequence of execution of one or more of basic blocks 1-n, such as basic blocks 1-5 identified in operation 1612, and one or more of basic blocks 1-n, such as basic blocks 101-105 identified in operation 1612. For example, block dispatcher 302 (FIG. 3) executes sequence request hook 1508 (FIG. 15A) to generate image data of image 1552 (FIG. 15B) for user account 1, transmits the image data via computer network 408 (FIG. 13), and displays image 1552 on display device 410 (FIG. 13). In the example, block dispatcher 302 executes sequence request hook 1508 to determine whether a user input including selection of graphic button 1554 (FIG. 15B) or a user input including selection of graphic button 1556 (FIG. 15B) is received at user account 1 of server system 404 (FIG. 13) via computer network 408 in response to the display of image 1552.

[0221] In operation 1616 of method 1600, in response to determining that user input has been received at operation 1614, one or more of basic blocks 1 through n, such as basic blocks 1 through 5 for facilitating play of challenge 1, are stitched with one or more of basic blocks 1 through n, such as basic blocks 101 through 105 for facilitating play of challenge 2. For example, upon determining that user input including selection of graphic button 1554 has been received, block dispatcher 302 executes sequence request hook 1508 (FIG. 15A) to stitch basic blocks 1 through 5 executed during play of challenge 1 via user account 1 with basic blocks 101 through 105 executed during play of challenge 2 via user account 1. In the example, basic blocks 1 through 5 are stitched with basic blocks 101 through 105 to enable execution of basic blocks 1 through 5 prior to execution of basic blocks 101 through 105. To explain, CPU 1308 generates a pointer that refers to a storage location, such as an address, using cache 102 in which basic blocks 101 through 105 are stored. CPU 1308 provides access to the pointer immediately after all of basic blocks 1 through 5 have been executed. Thus, immediately after all of basic blocks 1 through 5 have been executed, the pointer refers to the storage location of basic blocks 101 through 105 for execution of basic blocks 101 through 105.

[0222] On one hand, for example, when it is determined that user input including selection of the graphic button 1556 is received, the block dispatcher 302 executes the sequence request hook 1508 to stitch one or more of the basic blocks 1 to n, such as the basic blocks 101 to 105 executed during the play of challenge 2 via the user account 1, with one or more of the basic blocks 1 to n, such as the basic blocks 1 to 5 executed during the play of challenge 1 via the user account 1. In the example, one or more of the basic blocks 101 to 105 are stitched with one or more of the basic blocks 1 to 5 to enable execution of one or more of the basic blocks 101 to 105 before execution of one or more of the basic blocks 1 to 5. To explain, the CPU 1308 generates a pointer pointing to a storage location such as an address using the cache 102 in which the basic blocks 1 to 5 are stored. The CPU 1308 provides access to the pointer immediately after all of the basic blocks 101 to 105 have been executed. Thus, immediately after execution of all of the basic blocks 101 to 105, the pointer points to the storage location of the basic blocks 1 to 5 for execution of the basic blocks 1 to 5.

[0223] In operation 1618 of method 1600, in response to determining that user input was not received in operation 1614, one or more of the basic blocks 1 to 5 are not stitched with one or more of the basic blocks 101 to 105. For example, when it is determined that no user input including selection of the graphic button 1554 or user input including selection of the graphic button 1556 is received, the block dispatcher 302 does not execute the sequence request hook 1508 to stitch one or more of the basic blocks 1 to 5 executed during the play of challenge 1 via the user account 1 with one or more of the basic blocks 101 to 105 executed during the play of challenge 2 via the user account 1. In the example, when no stitching is performed, the basic blocks 1 to 5 and 101 to 105 are later executed in the same sequence in which the basic blocks 1 to 5 and 101 to 105 are executed during the play of the meta-game by user 1 via the user account 1.

[0224] Figure 16C is a continuation of the flowchart of Figure 16B for showing the addition of a leadership scoreboard within the metagame and the addition of trophies to the metagame. In operation 1620 of method 1600, it is determined whether user input for adding a leadership scoreboard has been received. For example, the CPU 1308 determines whether user input indicating that the leadership scoreboard is to be added to the metagame has been received via the computer network 408 (Figure 13) and the user account 1 from the client device 1301 (Figure 13). The user input is a signal generated by the handheld controller 414 (Figure 13) when the user 1 selects one or more buttons on the handheld controller 414.

[0225] In operation 1622 of method 1600, when it is determined that user input for adding a leadership scoreboard has been received, the CPU 1308 adds the leadership scoreboard to the metagame. For example, the CPU 1308 executes the leadership scoreboard request hook 1508 (Figure 15A) to couple the leadership scoreboard to the metagame. On the other hand, in response to determining in operation 1624 of method 1600 that user input for adding a leadership scoreboard has not been received, the CPU 1308 does not include or add the leadership scoreboard within the metagame.

[0226] Continuing with method 1600, at operation 1626 of method 1600, CPU 1308 posts the total number of points, such as virtual points, on the leadership scoreboard. For example, CPU 1308 adds the number of points accumulated by user 1 via user account 1 during the play of challenge 1 and the number of points accumulated by user 1 via user account 1 during the play of challenge 2 to determine the total number of points. CPU 1308 publishes the total number of points on the leadership scoreboard. When user 2 accesses the leadership scoreboard from server system 404 (FIG. 13) via user account 2 and computer network 408, the leadership scoreboard is displayed on display device 1204 (FIG. 13).

[0227] At operation 1628 of method 1600, CPU 1308 determines to add a trophy to the meta-game. For example, CPU 1308 executes trophy hook 1512 to include a trophy in the meta-game. To explain, the trophy hook includes criteria for providing virtual rewards to user 2 via user account 2. When criteria such as a predetermined limit are met during the execution of the meta-game, virtual rewards are awarded to user account 2. Examples of criteria include achieving more than a predetermined number of points within the meta-game, or passing a predetermined level within the meta-game, or both.

[0228] In one embodiment, method 1600 does not include operation 1628.

[0229] In one embodiment, instead of calculating and publishing the total number of points at operation 1626 within the meta-game, another type of virtual metric of the play of the meta-game can be used. For example, instead of the total number of points, the total number of virtual levels passed or the total number of coins accumulated can be used.

[0230] FIG. 16D is a continuation of the flowchart of FIG. 16C. In operation 1630 of method 1600, CPU 1308 (FIG. 13) determines whether a request to access the meta-game has been received from user 2. For example, CPU 1308 determines whether a request to access the meta-game has been received from client device 1303 (FIG. 13) via user account 2 and computer network 408 (FIG. 13). In the example, the request to access the meta-game is also a request to execute the meta-game. Further, in the example, user 2 selects one or more buttons on handheld controller 1212 (FIG. 13) to generate a signal including a request to access the meta-game. The signal is generated by handheld controller 1212.

[0231] In response to determining that a request to access the meta-game has not been received, in operation 1632, CPU 1308 does not execute the meta-game. On the other hand, if it is determined that a request to access the meta-game has been received, in operation 1634 of method 1600, CPU 1308 determines whether user input has been received for adding one or more ghosts to one or more virtual objects corresponding thereto. As an example of operation 1634, it is determined whether user input for overlaying a ghost has been received from client device 1303 via user account 2 and computer network 408. In the example, the user input is a signal generated by handheld controller 1212 when user 2 selects one or more buttons on handheld controller 1212. As another example, the one or more ghosts include a first ghost and a second ghost, and the corresponding one or more virtual objects include a first virtual object and a second virtual object. The first ghost is added to the first virtual object, and the second ghost is added to the second virtual object. The first virtual object is controlled by each of users 1 and 2 via corresponding handheld controllers 414 and 1212 during play of challenge 1. The second virtual object is controlled by each of users 1 and 2 via corresponding handheld controllers 414 and 1212 during play of challenge 2. The illustration of the ghost includes an overlay virtual object such as an overlay virtual character. Further, in the illustration, the display of the ghost is more transparent compared to the display of the virtual object over which the ghost is overlaid. Also, in the illustration, the ghost has a shape similar to or the same as the shape of the virtual object. As another illustration, the ghost is an underlay virtual object such as an underlay virtual character. In the illustration, the display of the ghost is more transparent compared to the display of the virtual object over which the ghost is overlaid. Also, in the illustration, the ghost has a shape similar to or the same as the shape of the virtual object.

[0232] In operation 1636 of method 1600, if it is determined that no user input is received to add one or more ghosts to one or more virtual objects corresponding thereto, the CPU 1308 executes the meta-game without adding one or more ghosts to one or more virtual objects corresponding thereto. For example, in response to determining that no user input for the overlay is received, the CPU 1308 does not overlay the first ghost on the first virtual object and does not overlay the second ghost on the second virtual object.

[0233] On the other hand, during operation 1638 of the method, in response to determining that a user input is received to add one or more ghosts to one or more virtual objects corresponding thereto, the CPU 1308 adds one or more ghosts to one or more virtual objects corresponding thereto during the play of the meta-game by user 2.

[0234] As an example, the CPU 1308 executes the ghost request hook 1514 to access Records 1 and 2 from the memory device 1314 (FIG. 13), and analyzes Records 1 and 2. Records 1 and 2 are analyzed to identify one or more virtual objects, such as a first virtual object and a second virtual object, which are controlled by the user 1 via the user account 1 and the handheld controller 414 (FIG. 13) during the play of Challenges 1 and 2. The CPU 1308 generates a first ghost having a shape similar to or the same as the shape of the first virtual object controlled by the user 1 via the user account 1 during the play of Challenge 1, and generates a second ghost having a shape similar to or the same as the shape of the second virtual object controlled by the user 1 via the user account 1 during the play of Challenge 2. As an illustration, the first and second virtual objects in the above example are the same. Further explaining, each of the first and second virtual objects is a virtual fighter plane or a virtual character. As another illustration, the first and second virtual objects in the above example are different. Further explaining, the first virtual object is a virtual fighter plane, and the second virtual object is a virtual character.

[0235] As another example, the CPU 1308 executes the ghost request hook 1514 to access Record 1 from the memory device 1304 (FIG. 13), and determines from Record 1 the times when the virtual object is in various positions and orientations. Exemplary times include time t1, time t2, time t3, time t4, and time t5. Continuing with the example, the CPU 1308 calculates the time from the start of the execution of a part of the legacy game N by the CPU 1308 to facilitate the play of Challenge 1, and stores the time in Record 1. The part stored as Record 1 is executed to facilitate the play. Thus, the time from the start of the part of the execution is the same as the time from the start of Record 1. The CPU 1308 represents the virtual object as a ghost and executes the ghost request hook 1514 (FIG. 15A) to move the ghost based on the time corresponding to Challenge 1. In the example, when a part of the legacy game N is accessed via the user account 2 to facilitate the play of Challenge 1, the GPU 1310 (FIG. 13) displays the virtual object and the ghost at the same position and orientation at time t1 as the time stored in Record 1. Time t1 is calculated by the CPU 1308 from the start of the execution of the part of the legacy game N accessed via the user account 2. The CPU 1308 determines whether the time has changed from t1 to t2, and instructs the GPU 1310 to display the ghost at the position and orientation corresponding to time t2. The position and orientation corresponding to time t2 are stored in Record 1. Also, the CPU 1308 determines whether the time has changed from t2 to t3, and instructs the GPU 1310 to display the ghost at the position and orientation corresponding to time t3. The position and orientation corresponding to time t3 are stored in Record 1.

[0236] As another example, the CPU 1308 accesses Record 2 from the memory device 1304 (FIG. 13), and determines from Record 2 the times when the virtual object is at various positions and orientations. Exemplary times include time ta, time tb, time tc, time td, and time te. Continuing with the example, the CPU 1308 calculates the time from the start of the execution of a part of the legacy game N by the CPU 1308 to facilitate the play of Challenge 2, and stores the time in Record 2. The part stored as Record 2 is executed to facilitate the play. Thus, the time from the start of the part of the execution is the same as the time from the start of Record 2. The CPU 1308 represents the virtual object as a ghost and moves the ghost based on the time corresponding to Challenge 2. When the part of the legacy game N is accessed via the user account 2 to facilitate the play of Challenge 2, the GPU 1310 displays the virtual object and the ghost at the same position and orientation at time ta as the time stored in Record 2. Time ta is calculated by the CPU 1308 from the start of the execution of the part of the legacy game N accessed via the user account 2. The CPU 1308 determines whether the time has changed from ta to tb, and instructs the GPU 1310 to display the ghost at the position and orientation corresponding to time tb. The position and orientation corresponding to time tb are stored in Record 2. Also, the CPU 1308 determines whether the time has changed from tb to tc, and instructs the GPU 1310 to display the ghost at the position and orientation corresponding to time tc. The position and orientation corresponding to time tc are stored in Record 2.

[0237] As yet another example, when User 2 accesses Challenge 1 via Client Device 1303 and User Account 2, CPU 1308 instructs GPU 1310 (FIG. 13) to render a first ghost on top of the first virtual object. In the example, when User 2 accesses Challenge 2 via Client Device 1303 and User Account 2, CPU 1308 instructs GPU 1310 to render a second ghost on top of the second virtual object. To explain, the first ghost represents the same character as the first virtual object, and the second ghost represents the same character as the second virtual object. Further to explain, when the first virtual object is a shooter, the first ghost is also a shooter, and when the second virtual object is a virtual airplane, the second ghost is also a virtual airplane. As another example, when User 2 accesses Challenge 1 via Client Device 1303 and User Account 2, CPU 1308 instructs GPU 1310 (FIG. 13) to display the first ghost as an underlay virtual object under the first virtual object. In the example, when User 2 accesses Challenge 2 via Client Device 1303 and User Account 2, CPU 1308 instructs GPU 1310 (FIG. 13) to display the second ghost as an underlay virtual object under the second virtual object.

[0238] Note that in the above two examples, there is no link between the movements of the first virtual object, the first ghost, the second virtual object, and the second ghost. For example, the first virtual object is controlled by user 2 via the handheld controller 1212 (FIG. 13), and the first ghost is displayed according to the gameplay of challenge 1 by user 1. In the example, the overlay or underlay of the first ghost with respect to the first virtual object occurs at the time when user 2 starts playing challenge 1 via user account 2. Also, in the example, after a certain play time during challenge 1, the first ghost is in a position and direction different from the position and direction of the first virtual object. As another example, the second virtual object is controlled by user 2 via the handheld controller 1212 (FIG. 13), and the second ghost is displayed according to the gameplay of challenge 2 by user 1. In the example, the overlay or underlay of the second ghost with respect to the second virtual object occurs at the time when user 2 starts playing challenge 2 via user account 2. Also, in the example, after a certain play time during challenge 2, the second ghost is in a position and direction different from the position and direction of the second virtual object.

[0239] Note that the meta-game is executed by operation 1636 or operation 1638 according to the sequence indicated by the graphic button 1554 or 1556 (FIG. 15B). For example, when an instruction to select the graphic button 1554 is received, the block dispatcher 302 executes one or more of the basic blocks 101-105 after executing one or more of the basic blocks 1-5 to execute the meta-game. On the other hand, when an instruction to select the graphic button 1556 is received, the block dispatcher 302 executes one or more of the basic blocks 1-5 after executing one or more of the basic blocks 101-105 to execute the meta-game.

[0240] In one embodiment, instead of adding one or more ghosts to one or more virtual objects corresponding to the operations 1634 and 1638, one or more videos such as one or more videos of the gameplay by user 1 of the meta-game, or one or more videos of user 1 playing the meta-game are displayed by user 2 during the play of the meta-game via user account 2. For example, instead of operation 1634, the CPU 1308 determines whether user input for overlaying one or more videos of the gameplay of the meta-game by user 1 via the client device 1301 and user account 1 is received from user 2 via the client device 1303 and user account 2. The user input includes a signal generated by the handheld controller 1212 when user 2 selects one or more buttons on the handheld controller. In response to determining that the user input is not received, instead of operation 1636, the meta-game is executed without overlaying one or more videos. On the other hand, when it is determined that the user input is received, instead of executing operation 1638, the CPU 1308 executes a gameplay hook to overlay one or more videos on the meta-game. For example, the CPU 1308 accesses recordings 1 and 2 from the memory device 1314 (FIG. 13), overlays the first video of recording 1 during the execution of the first challenge for the play by user 2, and overlays the second video of recording 2 during the execution of the second challenge for the play by user 2. The CPU 1308 controls the recorder 1302 to record the first video during the execution of challenge 1 and the second video during the execution of challenge 2 via user account 1.

[0241] In one embodiment, the ghost is rendered by the GPU 1310 by using rendering factors different from those of the virtual object, such as different colors, or intensities, or textures, or shapes, or combinations thereof. The ghost should be added to the virtual object.

[0242] Figure 16E is a continuation of the flowchart of Figure 16D. In operation 1640, the CPU 1308 (Figure 13) determines whether the leadership scoreboard is added to the meta-game. For example, if the leadership scoreboard is added to the meta-game in operation 1622 (Figure 16C), an identifier indicating that the leadership scoreboard is added to the meta-game is stored in the cache 102 by the CPU 1308. In operation 1640, the CPU 1308 checks the cache 102 to find the identifier. When the identifier is found, it is determined that the leadership scoreboard has been added to the meta-game. When the identifier is not found, the CPU 1308 determines that the leadership scoreboard has not been added to the meta-game.

[0243] In response to determining that the leadership scoreboard has been added to the meta - game, in operation 1642 of method 1600, CPU 1308 determines whether the number of points accumulated during user 2's play of the meta - game via user account 2 exceeds the total number of points published to the leadership scoreboard in operation 1626 (FIG. 16C). The total number of points in the meta - game is accumulated by user 1 via user account 1 during play of the meta - game. Note that user 2's play of the meta - game starts at operation 1636 (FIG. 16D). As an example, CPU 1308 determines that a first virtual number of points is accumulated by user 1 via user account 1 during play of challenge 1, and a second virtual number of points is accumulated by user 1 via user account 1 during play of challenge 2. CPU 1308 multiplies the first number by a first balance constant to output a first result, multiplies the second number by a second balance constant to output a second result, and adds the first result and the second result to determine a first sum. Similarly, CPU 1308 determines that a third virtual number of points is accumulated by user 2 via user account 2 during play of challenge 1, and a fourth virtual number of points is accumulated by user 2 via user account 2 during play of challenge 2. CPU 1308 multiplies the third number by the first balance constant to output a third result, multiplies the fourth number by the second balance constant to output a fourth result, and adds the third result and the fourth result to determine a second sum. CPU 1308 determines whether the second sum is greater than the first sum.

[0244] In operation 1642, in response to determining that the number of points accumulated during the play of the meta-game by user 2 via user account 2 exceeds the total number of points published in operation 1626, CPU 1308, in operation 1644, assigns a rank or position higher than that of user account 1 to user account 2. For example, if it is determined in the above example that the second total is greater than the first total, CPU 1308 determines that user 2 is the leader and adds the user ID 2 assigned to user 2 to the leadership scoreboard. CPU 1308 controls GPU 1310 (FIG. 13) to render user ID 2 above user ID 1.

[0245] On the other hand, if it is determined in operation 1642 that the number of points accumulated during the play of the meta-game by user 2 via user account 2 does not exceed the total number of points published in operation 1642, CPU 1308, in operation 1646, assigns a rank lower than that of user account 1 to user account 2. For example, if it is determined that the second total is not greater than the first total, CPU 1308 determines that user 1 remains the leader and adds the user ID 2 assigned to user 2 to the leadership scoreboard. CPU 1308 controls GPU 1310 (FIG. 13) to render user ID 2 below user ID 1.

[0246] In response to determining that the leadership scoreboard has not been added to the meta-game in operation 1640, CPU 1308 determines, in operation 1648, whether a trophy has been added to the meta-game. For example, if the trophy is added to the meta-game in operation 1628 (FIG. 16C), an identifier indicating that the trophy is included in the meta-game is stored in cache 102 by CPU 1308. In operation 1648, CPU 1308 checks cache 102 to find the identifier. When the identifier is found, it is determined that the trophy has been added to the meta-game. When the identifier is not found, CPU 1308 determines that the trophy has not been added to the meta-game.

[0247] When CPU 1308 determines that the trophy has not been added to the meta-game, it continues to check whether the trophy has been added to the meta-game. On the other hand, in response to determining that the trophy has been added to the meta-game, in operation 1650 of method 1600, CPU 1308 determines whether the number of points accumulated during the play of the meta-game by user 2 via user account 2 exceeds a predetermined limit. For example, CPU 1308 determines whether the second total accumulated during the play of the meta-game via user account 2 is greater than a predetermined number of points associated with operation 1628 (FIG. 16C).

[0248] When it is determined that the number of points exceeds the predetermined limit, CPU 1308 decides to award a trophy to user account 2 in operation 1652 of method 1600. Examples of trophies are honors or virtual rewards such as virtual skins, virtual points, or game levels in the meta-game. The game level is unlocked to award the trophy. Before the trophy is awarded, the game level is locked and cannot be accessed by user 2 via user account 2. On the other hand, when it is determined that the number of points does not exceed the predetermined threshold, CPU 1308 decides not to award a trophy to user account 2 in operation 1654 of method 1600.

[0249] FIG. 17 is a diagram for showing an embodiment of a meta - game including ghosts displayed on the display device 1204. During the play of challenges 1 and 2 of the meta - game by user 2 via user account 2, the virtual object 454 is displayed on the display screen 1204. The virtual object 454 is rendered on the display device 1204 by the GPU 1310 (FIG. 13).

[0250] To facilitate the play of challenges via user account 2, the CPU 1308 executes the same portions of the meta - game that were executed to facilitate the play of challenge 1 via user account 1. For example, the CPU 1308 executes the first portion of legacy game N to facilitate the play of legacy game N via user account 1 and executes the first portion to facilitate the play of legacy game N via user account 2. Similarly, to facilitate the play of challenge 2 via user account 2, the CPU 1308 executes the same portions of the meta - game that were executed to facilitate the play of challenge 2 via user account 1. For example, the CPU 1308 executes the second portion of legacy game N to facilitate the play of legacy game N via user account 1 and executes the second portion to facilitate the play of legacy game N via user account 2. As another example, the CPU 1308 executes the portion of legacy game (N - 1) to facilitate the play of legacy game (N - 1) via user account 1 and executes the portion to facilitate the play of legacy game (N - 1) via user account 2.

[0251] At time t1, which is the start time of playing Challenge 1 of the meta - game, the virtual object 454 is displayed at position P1 and direction O1 on the display screen of the display device 1204. Also, at time t1, the virtual ghost 1704 is overlaid on top of the virtual object 454. The virtual ghost 1704 is rendered by the GPU 1310 on the display device 1204. The virtual ghost 1704 is at the same position P1 and the same direction O1 as the virtual object 454 at time t1. The virtual ghost 1704 is a representation of the virtual object 454 (Figure 14C). The virtual ghost 1704 is shown using a dashed line in Figure 17, and the virtual object 454 is shown using a solid line in Figure 17.

[0252] During the play of Challenge 1, the virtual object 454 is moved from position P1 and direction O1 to position Pb and direction Ob by user 2 via the handheld controller 1212 (Figure 13). At time t2 when the virtual object 454 is at position Pb and direction Ob, the virtual ghost 1704 is at position P2 and direction O2. Position Pb is different from position P2, and direction Ob is different from direction O2.

[0253] After that, during the play of Challenge 1, the virtual object 454 is moved from position Pb and direction Ob to position Pc and direction Oc by user 2 via the handheld controller 1212. At time t3 when the virtual object 454 is at position Pc and direction Oc, the virtual ghost 1704 is at position P3 and direction O3. Position Pc is different from position P3, and direction Oc is different from direction O3.

[0254] Furthermore, during the play of Challenge 1, the virtual object 454 is moved from position Pc and direction Oc to position Pd and direction Od by user 2 via the handheld controller 1212. At time t4 when the virtual object 454 is at position Pd and direction Od, the virtual ghost 1704 is at position P4 and direction O4. Position Pd is different from position P4, and direction Od is different from direction O4.

[0255] Also, during the play of Challenge 1, the virtual object 454 is moved from the position Pd and the direction Od to the position Pe and the direction Oe by the user 2 via the handheld controller 1212. At the time t5 when the virtual object 454 is at the position Pe and the direction O5, the virtual ghost 1704 is at the position P5 and the direction O5. The position Pe is different from the position P5, and the direction Oe is different from the direction O5.

[0256] The positions P1, Pb, Pc, Pd, and Pe and the directions O1, Ob, Oc, Od, and Oe of the virtual object 454 occur during the execution of a part of the legacy game N to facilitate the play of Challenge 1. When accessed via the user account 2, some correspond to Challenge 1. Also, the positions P1 - P5 and the directions O1 - O5 of the virtual ghost 1704 occur during the execution of the same part of the legacy game N when accessed via the user account 1.

[0257] At the time ta which is the start time of the play of Challenge 2 of the meta - game via the user account 2, the virtual object 454 is displayed at the position P101 and the direction O101 on the display screen of the display device 1204. For example, in the meta - game, the CPU 1308 instructs the GPU 1310 to move the virtual object 454 from the position Pe to the position P101 and from the direction Oe to the direction O101. At the time ta, the virtual ghost 1704 is overlaid on top of the virtual object 454. The virtual ghost 1704 is at the same position P101 and the same direction O101 as the virtual object 454 at the time ta.

[0258] During the play of Challenge 2, the virtual object 454 is moved from the position P101 and the direction O101 to the position Px2 and the direction Ox2 by the user 2 via the handheld controller 1212. At the time tb when the virtual object 454 is at the position Px2 and the direction Ox2, the virtual ghost 1704 is at the position P102 and the direction O102. The position Px2 is different from the position P102, and the direction Ox2 is different from the direction O102.

[0259] After that, during the play of Challenge 2, the virtual object 454 is moved from the position Px2 and the direction Ox2 to the position Px3 and the direction Ox3 by the user 2 via the handheld controller 1212. At the time tc when the virtual object 454 is at the position Px3 and the direction Ox3, the virtual ghost 1704 is at the position P103 and the direction O103. The position Px3 is different from the position P103, and the direction Ox3 is different from the direction O103.

[0260] Furthermore, during the play of Challenge 2, the virtual object 454 is moved from the position Px3 and the direction Ox3 to the position Px4 and the direction Ox4 by the user 2 via the handheld controller 1212. At the time td when the virtual object 454 is at the position Px4 and the direction Ox4, the virtual ghost 1704 is at the position P104 and the direction O104. The position Px4 is different from the position P104, and the direction Ox4 is different from the direction O104.

[0261] Also, during the play of Challenge 2, the virtual object 454 is moved from the position Px4 and the direction Ox4 to the position Px5 and the direction Ox5 by the user 2 via the handheld controller 1212. At the time te when the virtual object 454 is at the position Px5 and the direction Ox5, the virtual ghost 1704 is at the position P105 and the direction O105. The position Px5 is different from the position P105, and the direction Ox5 is different from the direction O105.

[0262] The positions P101, Px2, Px3, Px4, and Px5, and the directions O101, Ox2, Ox3, Ox4, and Ox5 - O105 of the virtual object 454 occur during the execution of a part of the meta - game, such as a part of the legacy game N or a part of the legacy game (N - 1), in order to facilitate the play of Challenge 2. The part of the meta - game is accessed via the user account 2. Also, the positions P101 - P105 and the directions O101 - O105 of the virtual ghost 1704 occur during the execution of the same part of the meta - game when accessed via the user account 1.

[0263] Note that during the play of the meta - game, the virtual pyramid 411 is rendered by the GPU1310 around the location where Challenges 1 and 2 are executed. For example, the positions P1, Pb, Pc, Pd, and Pe are achieved above the virtual pyramid 411, and the positions P101, Px2, Px3, Px4, and Px5 are achieved below the virtual pyramid 411.

[0264] FIG. 18A is a diagram of an embodiment of a leadership scoreboard 1802 displayed on a display device 410 operated by User 1. The leadership scoreboard 1802 includes a row 1804 that includes the number of points accumulated by User 1 via the user account 1 during the play of the meta - game. The leadership scoreboard 1802 is accessed by User 1 after logging in to the user account 1.

[0265] Figure 18B is a diagram of a positional embodiment of a leadership scoreboard 1802 displayed on a display device 1204 operated by user 2. The leadership scoreboard 1802 includes row 1806. The additional row 1806 includes the user ID 2 and the number of points accumulated by user 2 via user account 2 during play of the meta-game. Note that user ID 1 is displayed in row 1804 because user 1 has accumulated more points than user 2. Row 1804 is at a higher level compared to row 1806. Thus, the number of points accumulated by user 1 is ranked or placed higher than the number of points accumulated by user 2.

[0266] Figure 19 is a diagram of one embodiment of a display device 1204 operated by user 2 to show a notification 1902 indicating that user 2 has obtained a trophy after playing the meta-game. As an example, the notification 1902 includes a textual explanation such as a sentence or phrase. As another example, the notification indicating that user 2 has obtained a trophy with user account 2 includes a series of alphanumerics or symbols or graphics or a combination thereof.

[0267] In one embodiment, the notification indicating that user 2 has obtained a trophy includes a reward. The reward is obtained by user 2 via user account 2. For example, the notification indicates that user 2 has gained access to a game level of a megagame. The game level could not be accessed by user 2 via user account 2 prior to obtaining the trophy. As another example, the notification includes the number of virtual points awarded to user 2 by CPU 1308 (Figure 13) via user account 2.

[0268] FIG. 20 is a flow diagram conceptually showing various operations performed to stream a cloud video game to a client device according to an embodiment of the present disclosure. Examples of client devices include game controllers, smartphones, game consoles, and computers. Game server 2002 executes a video game such as a meta-game or legacy game N and generates raw (uncompressed) video 2004 and audio 2006. Virtual environments such as virtual environment 452 (FIG. 4A), the virtual scenes shown in FIG. 14, the virtual scenes shown in FIG. 17A, or the virtual scenes shown in FIG. 17C, and the audio output during the presentation of the virtual environment are examples of video 2004 and audio 2006. Game server 2002 is an example of server system 404 (FIG. 4A). Video 2004 and audio 2006 are captured and encoded for streaming purposes as indicated by reference numeral 2008 in the illustrated figure. Encoding provides compression of the video and audio streams to reduce the amount of bandwidth used and optimize the gaming experience. Examples of encoding formats include H.265 / MPEG-H, H.264 / MPEG-4, H.263 / MPEG-4, H.262 / MPEG-2, WMV, VP6 / 7 / 8 / 9, etc.

[0269] Encoded audio 2010 and encoded video 2012 are further packetized into network packets as indicated by reference numeral 2014 for transmission via computer network 2020, which is an example of computer network 408 (FIGS. 4A and 13). In some embodiments, the network packet encoding process also employs a data encryption process, thereby providing enhanced data security. In the illustrated embodiment, audio packets 2016 and video packets 2018 are generated for transfer via computer network 2020.

[0270] The game server 2002 further generates haptic feedback data 2022 that is also packetized into network packets for network transmission. In the illustrated implementation, the haptic feedback packet 2024 is generated for transfer via the computer network 2020.

[0271] The aforementioned operations of generating unprocessed video, audio, and haptic feedback data are executed on the game server 2002 in the data center, and the operations of encoding the video and audio and packetizing the encoded audio / video feedback and haptic feedback data for transfer are executed by the streaming engine in the data center. As shown, the audio, video, and haptic feedback packets are transferred via the computer network 2020. As indicated at reference numeral 2026, the audio packet 2016, the video packet 2018, and the haptic feedback packet 2024 are disassembled by the client device, for example, parsed, and the encoded audio 2028, the encoded video 2030, and the haptic feedback data 2022 are extracted from the network packets in the client device. If the data is encrypted, the data is also decrypted. The encoded audio 2028 and the encoded video 2030 are then decrypted by the client device as shown at reference numeral 2034, and client-side unprocessed audio data and video data for rendering on the display device 2040 of the client device are generated. The haptic feedback data 2022 is processed by the processor of the client device to generate haptic feedback effects on the controller device 2024, or other interface devices such as an HMD that can render haptic effects, for example. The controller device 2024 is an example of a handheld controller of the client device. An example of a haptic effect is vibration or rumble of the controller device 2024.

[0272] Video games respond to player input, and thus, the same procedural flow described above for the transmission and processing of player input is executed, but in the reverse direction from the client device to the server. As shown, the controller device 2024, or another input component such as, for example, a body part of user 1, a body part of user 2, or a combination thereof generates input data 2048. The input data 2048 is packetized at the client device for transfer to the data center via the computer network 2020. The input data packet 2046 is depacketized and reconstructed by the game server 2002 to define the input data 2048 on the data center side. The input data 2048 is supplied to the game server 2002, and the game server 2002 processes the input data 2048 to generate the game state of the video game.

[0273] During the transfer of the audio packet 2016, the video packet 2018, and the haptic feedback packet 2024 via the computer network 2020, in some embodiments, the transmission of data via the computer network 2020 is monitored to ensure quality of service. For example, the network state of the computer network 2020, including both upstream and downstream network bandwidths, is monitored as indicated by reference numeral 2050, and the game streaming is adjusted in response to changes in the available bandwidth. That is, the encoding and decoding of network packets are controlled based on the current network state as indicated by reference numeral 2052.

[0274] FIG. 21 is a block diagram of an embodiment of a game console 2100 that is compatible to interface with a display device of a client device and can communicate with a game hosting system such as a server system 404 (FIGS. 4A, 12, and 13) via a computer network 2020 (FIG. 20). Game console 2100 is an example of game console 402 and game console 1202 (FIG. 13). Game console 2100 is located within a data center or at a location where a player such as user 1 or 2 is located. In some embodiments, game console 2100 is used to execute a game displayed on an HMD. Game console 2100 comprises various peripheral devices connectable to game console 2100. Game console 2100 has a cell processor 2128, a dynamic random access memory (XDRAM) unit 2126, a reality synthesizer graphics processor unit 2130 with a dedicated video random access memory (VRAM) unit 2132, and an input / output (I / O) bridge 2134. Game console 2100 also has a Blu-ray (registered trademark) disc read-only memory (BD-ROM) optical disc reader 2140 for reading from a disc 2140a accessible through I / O bridge 2134, and a removable slot-in hard disk drive (HDD) 2136. Optionally, game console 2100 also includes a memory card reader 2138 for reading compact flash (registered trademark) memory cards, memory Stick (registered trademark) memory cards, etc., and memory card reader 2138 is similarly accessible via I / O bridge 2134. I / O bridge 2134 also connects to a USB2.0 port 2124, a gigabit Ethernet (registered trademark) port 2122, an IEEE802.11b / g wireless network (Wi-Fi (registered trademark)) port 2120, and a Bluetooth (registered trademark) wireless link port 2118 that can support a Bluetooth (registered trademark) connection.

[0275] During operation, the I / O bridge 2134 handles all wireless data, USB data, and Ethernet data, including data from the game controller and from the HMD 2105. For example, when a player is playing a video game generated by the execution of part of a game code such as game code GCN, the I / O bridge 2134 receives input data or input signals described herein via a Bluetooth link from the game controller 2042 (FIG. 20) or 2103 and / or from the HMD 2105, and directs the input data to the cell processor 2128, which in response updates the current state of the video game. As an example, a camera within the HMD 2105 captures the player's gestures and generates an image representing the gestures. The game controller 2042 is an example of a handheld controller 406 or 1212 (FIG. 13).

[0276] The wireless port, USB port, and Ethernet port also provide connectivity to other peripheral devices in addition to the game controllers 2042 and 2103 and the HMD 2105, such as, for example, a remote control 2104, a keyboard 2106, a mouse 2108, a portable entertainment device 2110 such as a Sony Playstation Portable entertainment device, a video camera such as an EyeToy video camera 2112, a microphone headset 2114, and a microphone 2115. The portable entertainment device 2110 is an example of a game controller. In some embodiments, such peripheral devices are connected wirelessly to the game console 2100. For example, the portable entertainment device 2110 communicates via a Wi-Fi ad hoc connection, while the microphone headset 2114 communicates via a Bluetooth link.

[0277] The provision of these interfaces means that the game console 2100 may also be compatible with other peripheral devices such as digital video recorders (DVRs), set-top boxes, digital cameras, portable media players, voice over Internet protocol (IP) telephones, mobile telephones, printers, scanners, etc.

[0278] Furthermore, the legacy memory card reader 2116 is connected to the game console 2100 via the USB port 2124 and enables the reading of memory cards 2148 of the type used by the game console 2100. The game controllers 2042 and 2103, and the HMD 2105 are operable to communicate wirelessly with the game console 2100 via a Bluetooth® link 2118 or to be connected to the USB port 2124, thereby receiving power to charge the batteries of the game controllers 2042 and 2103, and the HMD 2105. In some embodiments, each of the game controllers 2042 and 2103, and the HMD 2105 includes memory, a processor, a memory card reader, fixed memory such as flash memory, a light emitter such as an illuminated spherical section, a light emitting diode (LED), or an infrared light, etc., a microphone and a speaker for ultrasonic communication, an acoustic chamber, a digital camera, an internal clock, a recognizable shape such as a spherical section facing the game console 2100, and a wireless device using a protocol such as Bluetooth® or Wi-Fi®.

[0279] The game controller 2042 is a controller designed to be used by a player such as user 1 or 2 with both hands, and the game controller 2103 is a single-handed controller with an attachment. The HMD 2105 is designed to be attached to the top of the head or in front of the player's eyes. In addition to one or more analog joysticks and conventional control buttons, each of the game controllers 2042 and 2103 is susceptible to the effects of three-dimensional positioning. Similarly, the HMD 2105 is susceptible to the effects of three-dimensional positioning. As a result, in some embodiments, gestures and movements by the player using the game controllers 2042 and 2103, and the HMD 2105, are converted as inputs to the game code of the video game in addition to or instead of conventional button or joystick commands. Optionally, other wirelessly compatible peripheral devices, such as, for example, a Playstation (registered trademark) portable device, are used as controllers. In the case of a Playstation (registered trademark) portable device, additional game or control information, such as control instructions or the number of lives, etc., is provided on the display screen of the device. In some embodiments, other alternative or supplementary control devices are used, such as, for example, a dance mat (not shown), a light gun (not shown), a steering wheel and pedals (not shown), a custom controller, etc. An example of a custom controller includes a single, or several large buttons (also not shown) for a high-speed answering quiz game.

[0280] The remote control 2104 is also operable to communicate wirelessly with the game console 2100 via the Bluetooth (registered trademark) link 2118. The remote control 2104 includes controls suitable for the operation of the Blu Ray (registered trademark) disc BD-ROM reader 2140, and controls suitable for the navigation of disc content.

[0281] The Blu Ray (registered trademark) disc BD-ROM reader 2140 is operable to read CD-ROMs that are compatible with the game console 2100, in addition to conventional prerecorded and recordable CDs, and so-called Super Audio CDs. The Blu Ray (registered trademark) disc BD-ROM reader 2140 is also operable to read digital video disc-ROMs (DVD-ROMs) that are compatible with the game console 2100, in addition to conventional prerecorded and recordable DVDs. The Blu Ray (registered trademark) disc BD-ROM reader 2140 is further operable to read BD-ROMs that are compatible with the game console 2100, as well as conventional prerecorded and recordable Blu-Ray (registered trademark) discs.

[0282] The game console 2100 is operable to supply audio and video generated or decoded via the graphics unit 2130 of the reality synthesizer graphics unit to a display and audio output device 2142, such as a monitor or a television having a display screen 2144 and one or more loudspeakers 2146, via an audio connector 2150 and a video connector 2152, or to supply audio or video to the display device of the HMD 2105 via the Bluetooth (registered trademark) wireless link port 2118. The audio connector 2150 includes conventional analog and digital outputs in various embodiments, while the video connector 2152 variously includes component video, S-video, composite video, and one or more high-definition multimedia interface (HDMI (registered trademark)) outputs. As a result, the video output may be in a format such as Phase Alternating Line (PAL) or National Television Systems Committee (NTSC), or at a high resolution of 2220p, 1080i, or 1080p. For example, audio processing such as generation, decoding, etc. is performed by the cell processor 2108. The operating system of the game console 2100 supports decoding of Dolby (registered trademark) 5.1 surround sound, Dolby (registered trademark) theater surround (DTS), and 7.1 surround sound from Blu-Ray (registered trademark) discs. The display and audio output device 2142 is an example of the display device 410 or 1204 (FIGS. 4A and 13).

[0283] In some embodiments, for example, a video camera such as video camera 2112 includes a single charge-coupled device (CCD), an LED indicator, and a hardware-based real-time data compression and encoding device, whereby the compressed video data is transmitted in a suitable format such as the in-picture based MPEG (motion picture expert group) standard for decoding by game console 2100. The LED indicator of video camera 2112 is arranged, for example, to turn on in response to appropriate control data from game console 2100 to indicate, for example, adverse lighting conditions. Some embodiments of video camera 2112 connect to game console 2100 via a USB, Bluetooth®, or Wi-Fi® communication port. Various embodiments of the video camera include one or more associated microphones and can also transmit audio data. In some embodiments of the video camera, the CCD has a resolution suitable for high-resolution video capture. In use, the images captured by the video camera are incorporated into the game or interpreted as game control inputs. In another embodiment, the video camera is an infrared camera suitable for detecting infrared light.

[0284] In various embodiments, for example, appropriate software such as a device driver is provided to enable successful data communication via one of the communication ports of game console 2100 with a peripheral device such as a video camera or a remote control.

[0285] In some embodiments, the system devices described above, including the game console 2100 and the game controller 2042 or 2103, enable the HMD 2105 to display and capture video of an interactive session of a video game. The system device initiates an interactive session of a video game. The interactive session defines the interactivity between a player of the video game and other players. The system device further determines an initial position and orientation of the game controller 2042 or 2103, and / or the HMD 2105, which is operated by the player. The game console 2100 determines the current state of the game based on the interactivity between the player and the video game. The system device tracks the position and orientation of the game controller 2042 or 2103 and / or the HMD 2105 during the player's interactive session with the video game. The system device generates an audience video stream of the interactive session based on the current state of the legacy game N, and the tracked position and orientation of the handheld controller (HHC) and / or the HMD 2105. Examples of the HHC include the controller 2042 and the controller 2103. In some embodiments, the HHC renders the audience video stream on a display screen of the HHC. In various embodiments, the HMD 2105 renders the audience video stream on a display screen of the HMD 2105.

[0286] Referring to FIG. 22, a diagram showing the components of the HMD 2202 is shown. The HMD 2202 is an example of the HMD 2105 (FIG. 21). The HMD 2202 includes a processor 2200 for executing program instructions. A memory device 2202 is provided for storage purposes. Examples of the memory device 2202 include volatile memory, non-volatile memory, or a combination thereof. For example, a display device 2204 is included that provides a visual interface such as the display of image frames generated from saved data viewed by the player. A battery 2206 is provided as the power source for the HMD 2202. The motion detection module 2208 includes any of various types of motion-sensitive hardware such as a magnetometer 2210, an accelerometer 2212, and a gyroscope 2214.

[0287] An accelerometer is a device for measuring the acceleration and the reaction force caused by gravity. Uniaxial and multi-axial models are available for detecting the magnitude and direction of acceleration in different directions. Accelerometers are used to sense tilt, vibration, and shock. In one embodiment, three accelerometers 2212 are used to provide the direction of gravity, and the direction of gravity gives absolute references for two angles, such as world space pitch and world space roll.

[0288] The magnetometer measures the strength and direction of the magnetic field in the vicinity of the HMD 2202. In some embodiments, three magnetometers 2210 are used within the HMD 2202 to ensure an absolute reference for the world space yaw angle. In various embodiments, the magnetometer is designed to span the Earth's magnetic field, which is ±80 microteslas. The magnetometer is affected by metal and provides the actual yaw and a monotonic yaw measurement value. In some embodiments, the magnetic field is distorted due to metal in the real-world environment, which causes distortion in the yaw measurement. In various embodiments, this distortion is calibrated using information from other sensors such as the gyroscope 2214, the camera 2216, etc. In one embodiment, the accelerometer 2212 is used together with the magnetometer 2210 to obtain the tilt and azimuth of the HMD 2202.

[0289] A gyroscope is a device for measuring or maintaining direction based on the principle of angular momentum. In one embodiment, instead of gyroscope 2214, three gyroscopes provide information regarding movement across their respective axes (x, y, and z) based on inertial sensing. Gyroscopes are useful for detecting high-speed rotation. However, in some embodiments, gyroscopes drift over time in the absence of an absolute reference. As a result, gyroscopes are periodically reset, which can be performed using other available information such as visual tracking of an object, determination of position / direction based on an accelerometer, magnetometer, etc.

[0290] Camera 2216 is provided to capture images and image streams of the real-world environment surrounding the player, such as a room, cabin, natural environment, etc. In various embodiments, HMD 2202 includes a plurality of cameras, such as a rear-facing camera directed in a direction away from the player when the player is looking at a display such as HMD 2202, and a front-facing camera directed towards the player when, for example, the player is looking at the display of HMD 2202. Further, in some embodiments, HMD 2202 includes a depth camera 2218 for sensing depth information of objects within the real-world environment.

[0291] HMD 2202 includes a speaker 2220 for providing audio output. Also, in some embodiments, a microphone 2222 is included to capture audio from the real-world environment, including voices from the surrounding environment, and utterances made by the player. HMD 2202 includes a tactile feedback module 2224, such as a vibration device, for providing tactile feedback to the player. In one embodiment, the tactile feedback module 2224 can provide tactile feedback to the player by causing movement and / or vibration of HMD 2202.

[0292] LED 2226 is provided as a visual indicator of the status of the HMD 2202. For example, the LED may indicate battery level, power on, etc. A card reader 2228 is provided to enable the HMD 2202 to read information from and write information to a memory card. A USB interface 2230 is included as an example of an interface to enable connection to peripheral devices or to other devices such as other portable devices, computers, etc. In various embodiments of the HMD 2202, any of various types of interfaces may be included to enable higher connectivity of the HMD 2202.

[0293] A Wi-Fi (registered trademark) module 2232 is included to enable connection to the Internet via wireless network technology. Also, the HMD 2202 includes a Bluetooth (registered trademark) module 2234 to enable wireless connection to other devices. In some embodiments, a communication link 2236 is also included for connection to other devices. In one embodiment, the communication link 2236 utilizes infrared transmission for wireless communication. In other embodiments, the communication link 2236 utilizes any of various wireless or wired transmission protocols for communication with other devices.

[0294] An input button / sensor 2238 is included to provide a player with an input interface. Various types of input interfaces are included, such as buttons, touch pads, joysticks, trackballs, etc. In various embodiments, an ultrasonic communication module 2240 is included in the HMD 2202 to facilitate communication with other devices via ultrasonic technology.

[0295] The biosensor 2242 is included to enable the detection of physiological data from the player. In one embodiment, the biosensor 2242 includes one or more dry electrodes for detecting the player's bioelectrical signals through the player's skin.

[0296] The foregoing components of the HMD 2202 have been described as merely exemplary components that may be included within the HMD 802. In various embodiments, the HMD 2202 includes some or none of the various foregoing components.

[0297] FIG. 23 shows an embodiment of an information service provider (INSP) architecture. The INSP 2302 provides a number of information services to players that are geographically dispersed and connected via a computer network 2306 such as, for example, a local area network (LAN), a wide area network (WAN), or a combination thereof. The computer network 2306 is an example of the computer network 2020 (FIG. 20). Examples of WANs include the Internet, and examples of LANs include intranets. User 1 operates a client device 2320-1, User 2 operates another client device 2320-2, and User 3 operates yet another client device 2320-3.

[0298] In some embodiments, each client device 2320-1, 2320-2, and 2320-3 includes a central processing unit (CPU), a display, and an input / output (I / O) interface. Examples of each client device 2320-1, 2320-2, and 2320-3 include a personal computer (PC), a mobile phone, a netbook, a tablet, a game system, a personal digital assistant (PDA), a game console 2100 and a display device, an HMD 2202 (FIG. 22), a game console 2100 and an HMD 2202, a desktop computer, a laptop computer, a smart TV, and the like. In some embodiments, the INSP 2302 recognizes the type of client device and adjusts the communication method used.

[0299] In some embodiments, INSP2302 provides one type of service such as stock price updates, or various services such as broadcast media, news, sports, games, etc. Further, the services provided by each INSP are dynamic, i.e., services can be added or removed at any point in time. Thus, the INSP that provides a particular type of service to a particular individual may change over time. For example, while client device 2320-1 is located at the user 1's local area, client device 2320-1 is served by an INSP in proximity to client device 2320-1, and when user 1 moves to another city, client device 2320-1 is served by a different INSP. The local INSP transfers the requested information and data to the new INSP, so the information "follows" client device 2320-1 to the new city, and the data is closer to and more accessible by client device 2320-1. In various embodiments, a master-slave relationship is established between a master INSP that manages information for client device 2320-1 and a server INSP that directly interfaces with client device 2320-1 under the control of the master INSP. In some embodiments, as client device 2320-1 moves around the world, data is transferred from one ISP to another, making the INSPs that are in a better position to deliver these services to client device 2320-1 serve the client device.

[0300] INSP2302 includes an Application Service Provider (ASP) 2308 that provides computer-based services to customers via a computer network 2306. The software provided using the ASP model is sometimes also referred to as on-demand software or software as a service (SaaS). An easy way to provide access to computer-based services, such as customer relationship management, for example, is by using standard protocols such as the Hypertext Transfer Protocol (HTTP). The application software is on the vendor's server and is accessed by each client device 2320-1, 2320-2, and 2320-3 via a web browser using, for example, the Hypertext Markup Language (HTML), by dedicated client software provided by the vendor and / or other remote interfaces such as a thin client.

[0301] Services provided over a wide geographic area often use cloud computing. Cloud computing is a style of computing in which dynamically scalable and often virtualized resources are provided as a service over a computer network 2306. Users 1 through 3 need not be experts in the technology infrastructure of the "cloud" that supports them. In some embodiments, cloud computing is divided into different services such as infrastructure as a service (IaaS), platform as a service (PaaS), and software as a service (SaaS). Cloud computing services often provide common business applications online that are accessible from a web browser, while the software and data are stored on servers. The term cloud is used as a metaphor for the computer network 2306, based on how the computer network is depicted in a computer network diagram and whether it is an abstraction of the complex infrastructure that is hidden, using, for example, servers, storage, and logic.

[0302] Furthermore, INSP2302 includes a Game Processing Provider (GPP) 2310 that is used by client devices 2320-1, 2320-2, and 2320-3 to play single-player and multi-player video games, also referred to herein as game processing servers. Most video games played over computer network 2306 operate via a connection to a game server. Typically, games use an application on a dedicated server that collects data from client devices 2320-1, 2320-2, and 2320-3 and distributes the data to other clients operated by other users. This is more efficient and effective than peer-to-peer devices, but another server is used to host the server application. In some embodiments, GPP 2310 establishes communication between client devices 2320-1, 2320-2, and 2320-3 that exchange information without further relying on a centralized GPP 2310.

[0303] A dedicated GPP is a server that runs independently of the client. Such a server typically runs on dedicated hardware located in a data center and provides more bandwidth and dedicated processing power. Dedicated servers are the way to host game servers for most PC-based multi-player games. Large-scale multi-player online games typically run on dedicated servers hosted by the software company that owns the game title, allowing the dedicated server to control and update the content.

[0304] The Broadcast Processing Server (BPS) 2312, also referred to herein as the Broadcast Processing Provider, distributes audio or video signals to viewers. A broadcast to a very narrow range of viewers is sometimes called narrowcasting. The last leg of the broadcast delivery is how the signal reaches the client devices 2320-1, 2320-2, and 2320-3, and in some embodiments, the signal is distributed wirelessly to an antenna and receiver, similar to a radio or television station, or through a "wireless cable" via cable television or cable radio or a station. The computer network 2306 also, in various embodiments, brings either a radio signal or a television signal to the client devices 2320-1, 2320-2, and 2320-3, and in particular enables sharing of the signal or bandwidth with multicasting. Historically, broadcasts have been segmented by geographical area in some embodiments, such as national broadcasts, regional broadcasts, etc. However, with the rapid growth of high-speed Internet, content can reach almost every country in the world, so broadcasts are not defined by region.

[0305] A storage service provider (SSP) 2314 provides computer storage space and related management services. The SSP 2314 also provides periodic backups and archiving. By providing storage as a service, client devices 2320-1, 2320-2, and 2320-3 can use more storage compared to when storage is not used as a service. Another important advantage is that the SSP 2314 includes a backup service, and client devices 2320-1, 2320-2, and 2320-3 will not lose data even if the hard drive fails. Further, in some embodiments, multiple SSPs have a complete or partial copy of the data received from client devices 2320-1, 2320-2, and 2320-3, enabling client devices 2320-1, 2320-2, and 2320-3 to efficiently access the data regardless of where the client devices 2320-1, 2320-2, and 2320-3 are located or the type of client. For example, a player can access personal files via a home computer and via a mobile phone while the player is on the move.

[0306] Communication provider 2316 provides connections to client devices 2320-1, 2320-2, and 2320-3. One type of communication provider 2316 is an Internet service provider (ISP) that provides access to computer network 2306. The ISP uses an appropriate data transfer technology, such as dial-up, digital subscriber line (DSL), cable modem, fiber, wireless, or dedicated high-speed interconnection, to deliver Internet Protocol datagrams and connect client devices 2320-1, 2320-2, and 2320-3. In some embodiments, communication provider 2316 also provides messaging services such as email, instant messaging, and Short Message Service (SMS) text messages. Another type of communication provider is a network service provider (NSP) that sells bandwidth or network access by providing direct backbone access to computer network 2306. Examples of network service providers include telecommunications companies, data carriers, wireless communication providers, Internet service providers, cable television operators that provide high-speed Internet access, and the like.

[0307] Data exchange 2318 interconnects some of the modules within INSP2302 and connects these modules to client devices 2320-1, 2320-2, and 2320-3 via computer network 2306. In various embodiments, data exchange 2318 covers a small area where all of the modules of INSP2302 are in close proximity or a large geographic area when different modules are geographically dispersed. For example, data exchange 2302 includes high-speed Gigabit Ethernet (registered trademark) within a data center cabinet or an intercontinental virtual LAN.

[0308] In some embodiments, communication between the server system 404 (FIGS. 4A and 13) and the client devices 2320-1 to 2320-3 can be facilitated using wireless technology. Such technology can include, for example, 5G wireless communication technology.

[0309] In one embodiment, a video game such as the legacy game N or the meta-game described herein is executed locally on either a gaming console or a personal computer, or is executed on a server. In some cases, the video game is executed by one or more servers of a data center. When the video game is executed, some instances of the video game can be simulations of the video game. For example, the video game can be executed by an environment or a server that generates a simulation of the video game. In some embodiments, the simulation is an instance of the video game. In other embodiments, the simulation can be generated by an emulator. In any case, when the video game is represented as a simulation, the simulation can be executed to render interactive content that can be interactively streamed, executed, and / or controlled by user input.

[0310] It should be noted that in various embodiments, one or more features of some of the embodiments described herein are combined with one or more features of the remaining embodiments described herein.

[0311] The embodiments described in this disclosure can be implemented in various computer system configurations, including handheld devices, microprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, and mainframe computers. In one embodiment, the embodiments described in this disclosure are practiced in a distributed computing environment where tasks are performed by remote processing devices linked through a wired or wireless network.

[0312] With the foregoing embodiments in mind, in one embodiment, it should be understood that the embodiments described in the present disclosure employ various computer-implemented operations involving data stored in a computer system. These operations are operations that require physical manipulation of physical quantities. Any of the operations described herein that form part of the embodiments described in the present disclosure are useful mechanical operations. Some embodiments described in the present disclosure also relate to devices or apparatuses for performing these operations. The apparatus is specially constructed for the required purpose, or the apparatus is a general-purpose computer selectively activated or configured by a computer program stored in the computer. Specifically, in one embodiment, it may be more convenient to use various general-purpose machines with a computer program written according to the teachings herein, or to construct a more specialized apparatus for performing the required operations.

[0313] In some embodiments, some of the embodiments described in the present disclosure are embodied as computer-readable code on a computer-readable medium. A computer-readable medium is any data storage device that can store data and can then be read by a computer system. Examples of computer-readable media include hard drives, network attached storage (NAS), ROM, RAM, CD-ROM, CD-recordable (CD-R), CD-recordable (CD-RW), magnetic tape, optical data storage devices, non-optical data storage devices, and the like. As an example, a computer-readable medium includes computer-readable tangible media distributed on a network-coupled computer system, such that the computer-readable code is stored and executed in a distributed manner.

[0314] Furthermore, although some of the above-described embodiments have been described with respect to a gaming environment, in some embodiments, other environments such as, for example, a video conferencing environment are used instead of a game.

[0315] Although the method operations have been described in a particular order, other housekeeping operations may be performed during the operations, or the operations may be adjusted to occur at slightly different times, or may be distributed within a system that allows the processing operations to occur at various intervals related to the processing as long as the processing of the overlay operations is performed in a desired manner. It should be understood that.

[0316] The foregoing embodiments described in this disclosure have been described in some detail for clarity of understanding, but it will be apparent that certain changes and modifications can be made within the scope of the appended claims. Accordingly, the embodiments should be regarded as illustrative rather than limiting, and the embodiments should not be limited to the details described herein, but may be modified within the scope of the appended claims and equivalents.

Claims

1. A method for generating a metagame, comprising: Receiving, via a first user account, a first challenge created from a first plurality of basic blocks of one or more legacy games, and receiving a first user input for the first challenge that occurs during play of the one or more legacy games; Recording at least a portion of the first challenge; Receiving, via the first user account, a second challenge created from a second plurality of basic blocks of the one or more legacy games, and receiving a second user input for the second challenge that occurs during play of the one or more legacy games; Recording at least a portion of the second challenge; Determining whether a third user input for requesting creation of the metagame from the first challenge and the second challenge has been received via the first user account; When it is determined that the third user input has been received, generating the metagame from the first and second challenges including Generating the metagame includes identifying at least some of the first plurality of basic blocks from at least a portion of the recording of the first challenge, and identifying at least some of the second plurality of basic blocks from at least one recording of the second challenge, At least some of the identified first plurality of basic blocks are compiled from a first plurality of instructions of the one or more legacy games, and at least some of the identified second plurality of basic blocks are compiled from a second plurality of instructions of the one or more legacy games to enable playing the one or more legacy games on an updated machine, and at least some of the identified first plurality of basic blocks and at least some of the identified second plurality of basic blocks are executable by the updated machine, the method.

2. Providing an option to select an execution sequence of the first challenge and the second challenge via the first user account; Receiving the sequence via the first user account; Stitching the first plurality of basic blocks and the second plurality of basic blocks according to the sequence; Receiving user input requesting execution of the meta-game via a second user account; Executing the first and second pluralities of basic blocks in the sequence in response to the user input received via the second user account The method according to claim 1, further comprising.

3. Receiving a fourth user input for creating a leadership scoreboard of the meta-game via the first user account; Creating a leadership scoreboard in response to the fourth user input; Posting on the leadership scoreboard a total including the sum of the second number of points accumulated via the first user account during play of the first challenge and the third number of points accumulated via the first user account during play of the second challenge; Receiving the first number of points accumulated in the second user account during play of the meta-game; Determining whether the total exceeds the first number of points accumulated in the second user account; Determining the display order of the total and the first number of points accumulated in the second user account The method according to claim 1, further comprising.

4. Adding a trophy to the meta-game; Receiving a request to play the meta-game via a second user account; Determining whether the number of points accumulated during play of the meta-game via the second user account exceeds a predetermined limit; Awarding the trophy to the second user account in response to determining that the number of points accumulated during play of the meta-game exceeds the predetermined limit The method according to claim 1, further comprising.

5. Determining that a first user input for playing the meta-game is received via a second user account; Determining whether a second user input for adding a ghost to a virtual object of the meta-game is received via the second user account; When it is determined that the second user input is received via the second user account, adding the ghost to the virtual object controlled via the second user account further comprising The method according to claim 1, wherein the virtual object is controlled via the first user account during play of the first challenge and play of the second challenge. **Claim 6** Determining that a first user input for playing the meta-game is received via a second user account Determining whether a second user input for playing the recordings of the first and second challenges is received via the second user account When it is determined that the second user input is received via the second user account, overlaying the recording on a display of the meta-game The method according to claim 1, further comprising **Claim 7** The method according to claim 1, wherein the first plurality of instructions and the second plurality of instructions cannot be executed on the updated machine including a 64-bit processor, but can be executed on a legacy machine including a 32-bit processor. **Claim 8** The method according to claim 1, wherein the first and second plurality of basic blocks cannot be executed on a legacy machine including a 32-bit processor, but can be executed on the updated machine including a 64-bit processor. **Claim 9** A computer system for generating a meta-game, comprising a processor Receiving, via a first user account, a first challenge created from a first plurality of basic blocks of one or more legacy games, and receiving a first user input for the first challenge that occurs during play of the one or more legacy games Recording at least a portion of the first challenge and outputting a first recording Receiving, via the first user account, a second challenge created from a second plurality of basic blocks of the one or more legacy games, and receiving a second user input for the second challenge that occurs during play of the one or more legacy games Recording at least a portion of the second challenge and outputting a second recording Determining whether a third user input for requesting play of the meta-game has been received via the first user account; When it is determined that the third user input has been received, generating the meta-game from the first and second challenges; The processor configured to perform; A memory device coupled to the processor; Comprising; The meta-game is generated by identifying at least some of the first plurality of basic blocks from at least a part of the first record of the first challenge and identifying at least some of the second plurality of basic blocks from at least a part of the second record of the second challenge; At least some of the identified first plurality of basic blocks are compiled from a first plurality of instructions of the one or more legacy games, and at least some of the identified second plurality of basic blocks are compiled from a second plurality of instructions of the one or more legacy games, enabling the one or more legacy games to be played on an updated machine, and at least some of the identified first plurality of basic blocks and at least some of the identified second plurality of basic blocks are executable by the updated machine, the computer system.

10. The processor; Providing an option to select a sequence of execution of the first challenge and the second challenge via the first user account; Receiving the sequence via the first user account; Stitching the first plurality of basic blocks and the second plurality of basic blocks according to the sequence; Receiving a user input requesting execution of the meta-game via a second user account; In response to the user input received via the second user account, executing the first and second plurality of basic blocks in the sequence; The computer system according to claim 9, configured to perform.

11. The processor; Receiving a fourth user input for creating a leadership scoreboard for the meta-game via the first user account; creating a leadership scoreboard in response to the fourth user input; posting on the leadership scoreboard a total including the sum of the number of second points accumulated via the first user account during play of the first challenge and the number of third points accumulated via the first user account during play of the second challenge; receiving the number of first points accumulated in a second user account during play of the meta-game; determining whether the total exceeds the number of first points accumulated in the second user account; determining an order of display of the total and the number of first points accumulated in the second user account The computer system according to claim 9, configured to perform the above.

12. The processor is adding a trophy to the meta-game; receiving a request to play the meta-game via a second user account; determining whether the number of points accumulated during play of the meta-game via the second user account exceeds a predetermined limit; awarding the trophy to the second user account in response to determining that the number of points accumulated during play of the meta-game exceeds the predetermined limit The computer system according to claim 9, configured to perform the above.

13. The processor is determining that a first user input for playing the meta-game is received via a second user account; determining whether a second user input for adding a ghost to a virtual object of the meta-game is received via the second user account; when it is determined that the second user input is received via the second user account, adding the ghost to the virtual object controlled via the second user account configured to perform the above, The computer system according to claim 9, wherein the virtual object is controlled via the first user account during play of the first challenge and play of the second challenge.

14. The processor is Determining that a first user input for playing the metagame has been received via a second user account; Determining whether a second user input for playing the recordings of the first and second challenges has been received via the second user account; When it is determined that the second user input has been received via the second user account, overlaying the recording on a display of the metagame; The computer system according to claim 9, configured to perform.

15. The computer system according to claim 9, wherein the first plurality of instructions and the second plurality of instructions cannot be executed on the updated machine including a 64-bit processor, but can be executed on a legacy machine including a 32-bit processor.

16. The computer system according to claim 9, wherein the first and second plurality of basic blocks cannot be executed on a legacy machine including a 32-bit processor, but can be executed on the updated machine including a 64-bit processor.

17. A non-transitory computer-readable medium including program instructions for generating a metagame, wherein when the program instructions are executed by one or more processors of a computer system, the one or more processors: Receiving, via a first user account, a first challenge created from a first plurality of basic blocks of one or more legacy games, and a first user input for the first challenge that occurs during play of the one or more legacy games; Recording at least a portion of the first challenge; Receiving, via the first user account, a second challenge created from a second plurality of basic blocks of the one or more legacy games, and a second user input for the second challenge that occurs during play of the one or more legacy games; Recording at least a portion of the second challenge; Determining whether a third user input for requesting play of the metagame from the first challenge and the second challenge has been received via the first user account; Upon determining that the third user input has been received, generating the metagame from the first and second challenges and executing a plurality of operations, generating the metagame includes identifying at least some of the first plurality of basic blocks from at least a portion of the record of the first challenge and identifying at least some of the second plurality of basic blocks from at least a portion of the record of the second challenge, at least some of the identified first plurality of basic blocks are compiled from a first plurality of instructions of the one or more legacy games, and at least some of the identified second plurality of basic blocks are compiled from a second plurality of instructions of the one or more legacy games to enable playing the one or more legacy games on an updated machine, and at least some of the identified first plurality of basic blocks and at least some of the identified second plurality of basic blocks are executable by the updated machine, the non-transitory computer-readable medium.

18. The plurality of operations are providing an option to select a sequence of execution of the first challenge and the second challenge via the first user account, receiving the sequence via the first user account, stitching the first plurality of basic blocks and the second plurality of basic blocks according to the sequence, receiving, via a second user account, a user input requesting execution of the metagame, executing the first and second pluralities of basic blocks in the sequence in response to the user input received via the second user account The non-transitory computer-readable medium according to claim 17, comprising:

19. The plurality of operations are receiving, via the first user account, a fourth user input for creating a leadership scoreboard for the metagame, creating the leadership scoreboard in response to the fourth user input, Posting on the leadership scoreboard a total that includes the sum of the number of second points accumulated via the first user account during play of the first challenge and the number of third points accumulated via the first user account during play of the second challenge; Receiving the number of first points accumulated in a second user account during play of the meta-game; Determining whether the total exceeds the number of first points accumulated in the second user account; Determining the display order of the total and the number of first points accumulated in the second user account The non-transitory computer-readable medium according to claim 17, comprising:

20. The plurality of operations are: Adding a trophy to the meta-game; Receiving a request to play the meta-game via a second user account; Determining whether the number of points accumulated during play of the meta-game via the second user account exceeds a predetermined limit; In response to determining that the number of points accumulated during play of the meta-game exceeds the predetermined limit, awarding the trophy to the second user account The non-transitory computer-readable medium according to claim 17, comprising:

Citation Information

Patent Citations

  • Network participation type game system, computer readable recording medium recording system program and program used in the game system

    JP2002166057A

  • Function-level just-in-time transformation engine with multiple path optimizations

    JP2008545179A

  • Data management apparatus and data distribution system

    JP2009089737A

  • Information processing system, information processing method, information processing program, computer-readable recording medium storing information processing program, data structure, information processing server, and information processing terminal

    JP2013097613A

  • Automatic generation of suggested mini-games for cloud-gaming based on recorded gameplay

    JP2014121610A