Information processing system, program, and method
The information processing system addresses the inadequacy of user notification for vibration motor control by implementing condition-based restriction and notification mechanisms, ensuring users are informed of vibration status and enhancing user experience.
Patent Information
- Application Number
- JP2025045397
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2025-03-19
- Publication Date
- 2026-01-30
AI Technical Summary
Existing methods of informing users about the control status of vibration motors are inadequate.
An information processing system that includes a driving means for vibration motors, a determining means for conditions, a limiting means, and a notifying means to restrict and notify users of vibration based on temperature and battery conditions, with customizable notification settings and frequency control.
Enables users to be informed of vibration motor restrictions, preventing unwanted vibrations and enhancing user experience by providing timely and appropriate notifications.
Smart Images

Figure 2026015699000001_ABST
Abstract
Description
[Technical Field]
[0001] The present disclosure relates to an information processing system, a program, and a method. [Background technology]
[0002] An information processing system that applies vibration to a user is known. For example, Japanese Patent Application Laid-Open No. 2016-202486 (Patent Document 1) discloses a vibration signal generation program that can change vibration parameters. [Prior art documents] [Patent documents]
[0003] [Patent Document 1] Japanese Patent Application Laid-Open No. 2016-202486 Summary of the Invention [Problem to be solved by the invention]
[0004] There is room for improvement in the method of informing the user of the control status of the vibration motor. [Means for solving the problem]
[0005] (Configuration 1) An information processing system according to one embodiment includes a driving means for driving a vibration motor in accordance with a vibration instruction from an application program, a determining means for determining whether a restriction is based on a first condition or a second condition, a limiting means for limiting the vibration of the vibration motor when at least one of the first condition or the second condition is satisfied, and a notifying means for notifying a user that the vibration of the vibration motor is restricted in different ways depending on whether the first condition is satisfied or the second condition is satisfied.
[0006] This configuration makes it possible to notify the user that the device is temporarily in a non-vibrating state.
[0007] (Configuration 2) In configuration 1, the first condition may include a condition related to temperature, and the second condition may include a condition related to remaining battery power.
[0008] (Configuration 3) In configuration 1 or 2, the notification means may issue a notification when the first condition or the second condition changes from an unsatisfied state to a satisfied state. This configuration allows the frequency of notifications to be set appropriately.
[0009] (Configuration 4) In configuration 1 or 2, the notification means may issue a notification when the first condition or the second condition changes from an unsatisfied state to a satisfied state. For the second condition, the second threshold value at which it is determined that the second condition is no longer satisfied may be higher than the first threshold value at which it is determined that the second condition is satisfied. This configuration makes it possible to prevent the frequency of notifications from increasing at the boundary between conditions.
[0010] (Configuration 5) In any of configurations 1 to 4, when the first condition is satisfied, the vibration of the vibration motor may be limited for a predetermined time.
[0011] (Configuration 6) In any of configurations 1 to 5, the notification means may issue a notification when a vibration instruction is given from an application program. This configuration allows the timing and frequency of notifications to be set appropriately.
[0012] (Configuration 7) In any of configurations 1 to 6, the notification may display the content of the notification together with an image generated by the application program. With this configuration, a player playing a game can immediately know that vibration has stopped.
[0013] (Configuration 8) In any of configurations 1 to 7, the notification means may not issue a notification even if a new vibration instruction is given from the application program while the restriction on vibration of the vibration motor continues.
[0014] (Configuration 9) In any of configurations 1 to 8, the notification means may issue a notification when a vibration instruction is given from the application program if at least one of the first condition or the second condition is met and the restriction on vibration of the vibration motor is lifted, and then at least one of the first condition or the second condition is met and the vibration of the vibration motor is restricted again.
[0015] (Configuration 10) In any of configurations 1 to 9, the information processing system may include a controller including a main device and a vibration motor. The controller may determine whether a restriction based on a first condition and a restriction based on a second condition are applied. The controller may periodically transmit the result of the determination to the main device. The main device may issue a notification based on at least one of the following cases: when the first condition changes from an unsatisfied state to an satisfied state, or when the second condition changes from an unsatisfied state to an satisfied state, based on the result of the determination.
[0016] (Configuration 11) In any of configurations 1 to 10, the information processing system may include a main device and a plurality of controllers, each including a vibration motor. Each of the plurality of controllers may determine whether to impose a restriction based on a first condition or a restriction based on a second condition. The restriction means may impose a restriction on each of the plurality of controllers based on the determination means. The main device may determine whether or not a notification is required for each of the plurality of controllers based on the result of the determination from each of the plurality of controllers. The notified information may include identification information of the controller on which the restriction was imposed.
[0017] (Configuration 12) In any of configurations 1 to 11, the information processing system may include a plurality of controllers each including a vibration motor. The determination means may determine whether each of the plurality of controllers is subject to a restriction based on a first condition or a restriction based on a second condition. The restriction means may impose a restriction on each of the plurality of controllers based on the determination means. The vibration instruction from the application program may include identification information specifying the controller to which the output is to be sent. The notification means may issue a notification when a vibration instruction is given from the application program specifying the restricted controller. The notified information may include identification information of the restricted controller.
[0018] (Configuration 13) According to another embodiment, there is provided a program configured to cause one or more computers to implement an information processing system.
[0019] (Configuration 14) A method according to another embodiment includes the steps of driving a vibration motor in accordance with a vibration instruction from an application program, determining a restriction due to a first condition and a restriction due to a second condition, limiting the vibration of the vibration motor when at least one of the first condition or the second condition is satisfied, and notifying a user that the vibration of the vibration motor is restricted, along with a reason based on the determination.
[0020] In any of the above configurations, it is not necessary for a single processor to perform all of the processing, and multiple processors may share the processing. Furthermore, if multiple processors are used, the processors may exist within the same device or in different devices.
[0021] In either of the above configurations, the required processing may be realized by executing a single program, or the required processing may be realized by having multiple processors each execute a different program. [Brief explanation of the drawings]
[0022] [Figure 1] 1 is a schematic diagram showing an example of the configuration of a game system according to the present embodiment. [Figure 2] 10A to 10C are diagrams for illustrating a generation process of a time-series vibration instruction data group in the main body device according to the present embodiment. [Figure 3] FIG. 10 is a diagram showing an example of frequency characteristics of maximum allowable voltage in the game system according to the present embodiment. [Figure 4] 10 is a flowchart showing an example of processing of a game program in the main body device according to the present embodiment. [Figure 5] 10 is a flowchart showing an example of processing by a system program in the main body device according to the present embodiment. [Figure 6] 10 is a flowchart illustrating an example of a process for generating control data in a controller according to the present embodiment. [Figure 7] 10 is a flowchart showing a modified example of the process of generating control data in the controller according to the present embodiment. [Figure 8] 10 is a flowchart showing a resistance value acquisition process for temperature estimation in the controller according to the present embodiment. [Figure 9] 9 is a flowchart showing a more detailed example of the order determination process of the LPF shown in FIG. 8. [Figure 10] 10 is a flowchart showing a temperature estimation process and a vibration instruction data correction process in a controller according to the present embodiment. [Figure 11] 6 is a flowchart showing a temperature measurement process and a vibration restriction process in a controller according to the present embodiment. [Figure 12] 10 is a flowchart showing a process of measuring a remaining battery charge and a process of correcting vibration instruction data in the controller according to the present embodiment. [Figure 13] 10 is a flowchart showing an example of a transmission process of a restricted state in the controller according to the present embodiment. [Figure 14] 10 is a flowchart showing an example of a notification flag update process in the main body device according to the present embodiment. [Figure 15]6 is a flowchart showing an example of the notification process shown in FIG. 5. [Figure 16] 6 is a schematic diagram showing a display example of the notification process shown in FIG. 5. FIG. DETAILED DESCRIPTION OF THE INVENTION
[0023] The present embodiment will be described in detail with reference to the drawings, in which the same or corresponding parts are designated by the same reference numerals and description thereof will not be repeated.
[0024] In this specification, the term "measurement" includes "estimation." In the following description, the term "estimation" can also be read as "measurement."
[0025] [A. System configuration example] First, an example of the configuration of a game system 10 according to the present embodiment will be described as an example of an information processing system.
[0026] 1 is a schematic diagram showing an example configuration of a game system 10 according to the present embodiment. Game system 10 includes a main unit 100 and one or more controllers 200. Main unit 100 executes an application program such as a game program.
[0027] Each of the controllers 200 receives an operation from a user and transmits operation data indicating the received operation to the main unit 100. Each of the controllers 200 has a vibration motor 206, and drives the vibration motor 206 in accordance with an instruction from the main unit 100. For example, each of the controllers 200 drives the vibration motor 206 in accordance with a vibration instruction from an application program executed on the main unit 100.
[0028] Although FIG. 1 shows an example of a configuration in which the game system 10 includes a plurality of controllers 200, the game system 10 may include only one controller 200.
[0029] The main device 100 includes a processor 101, a non-volatile memory 102, a volatile memory 103, a communication interface (I / F) 104, a display unit 105, and a battery 106.
[0030] The processor 101 is a processing entity (processing means) for executing processes in the main device 100. The processor 101 is a processing circuit, such as a CPU (Central Processing Unit) and a GPU (Graphics Processing Unit). The processor 101 loads a program stored in the non-volatile memory 102 into the volatile memory 103 and executes the program. The processor 101 may be an SoC (System on Chip) that integrates the functions of the CPU and the GPU.
[0031] In this specification, the term "processor" includes at least processing circuits that perform processing according to computer-readable instructions, such as CPUs and GPUs, SoCs that integrate multiple functions, and hardwired circuits, such as ASICs (Application Specific Integrated Circuits) and FPGAs (Field Programmable Gate Arrays).
[0032] The non-volatile memory 102 is a storage medium accessible by the processor 101, such as a flash memory, a read-only memory (ROM), or a solid-state drive (SSD). The non-volatile memory 102 may also be a storage medium that is detachable from the main device 100, such as an optical disk or a cartridge.
[0033] The non-volatile memory 102 stores, for example, a system program 102P1 and a game program 102P2.
[0034] The system program 102P1 includes computer-readable instructions for executing basic processes such as communication between the main unit 100 and one or more controllers 200. The system program 102P1 may also include libraries necessary for executing the game program 102P2.
[0035] The game program 102P2 includes computer-readable instructions for executing game processing. The game program 102P2 includes, for example, a vibration file 107.
[0036] The processing in main unit 100 described below may be realized by processor 101 executing at least one of system program 102P1 and game program 102P2.
[0037] Volatile memory 103 is a storage medium, such as a dynamic random access memory (DRAM), that can be accessed by processor 101. During execution of game processing, volatile memory 103 includes a data area 103B1 for game progress, an operation data area 103B2, a vibration instruction data area 103B3, a flag area 103B4, and a display queue 103B5.
[0038] Data area 103B1 is an area for temporarily storing data necessary for the progress of the game. Processor 101 refers to data area 103B1 and updates the data in data area 103B1 while executing game program 102P2. Data area 103B1 may store, for example, controller information 128. Controller information 128 may include identification information and model information of one or more controllers 200 connected to main unit 100, and a correspondence between each controller 200 and a player number (e.g., an identification number of a game object in the game processing being executed).
[0039] The operation data area 103B2 is an area for temporarily storing operation data transmitted from each of the controllers 200. An operation data area 103B2 may be prepared for each controller 200, or a single operation data area 103B2 may be divided for each of the controllers 200. The processor 101 refers to the operation data area 103B2 while executing the game program 102P2.
[0040] The vibration instruction data area 103B3 is an area for temporarily storing vibration instruction data for vibrating the vibration motor 206 of each controller 200. A vibration instruction data area 103B3 may be provided for each controller 200, or a single vibration instruction data area 103B3 may be divided for each controller 200.
[0041] In accordance with the execution of game program 102P2, processor 101 writes vibration instruction data to vibration instruction data area 103B3 at a predetermined cycle (for example, 60 fps (frames per second); approximately 16 msec cycle) for each controller 200. The cycle for writing vibration instruction data may differ between controllers 200. Details of the vibration instruction data will be described later.
[0042] The flag area 103B4 is an area for storing one or more flags used in the notification process described below. The flag area 103B4 stores, for example, a flag set 120 prepared for each controller 200. Each flag set 120 includes, for each controller 200, an internal temperature limit flag 121, a temperature sensor limit flag 122, a remaining battery level limit flag 123, an internal temperature notification flag 124, a temperature sensor notification flag 125, and a remaining battery level notification flag 126. Note that a flag area 103B4 may be prepared for each controller 200.
[0043] The internal temperature limit flag 121, the temperature sensor limit flag 122, and the remaining battery capacity limit flag 123 each indicate a limit state transmitted from the corresponding controller 200. The internal temperature limit flag 121, the temperature sensor limit flag 122, and the remaining battery capacity limit flag 123 are also collectively referred to as "limit flags."
[0044] The internal temperature notification flag 124, the temperature sensor notification flag 125, and the battery remaining amount notification flag 126 each indicate a notification state of the main device 100. The internal temperature notification flag 124, the temperature sensor notification flag 125, and the battery remaining amount notification flag 126 are also collectively referred to as "notification flags." Details of the processing using the flag set 120 will be described later.
[0045] For convenience of explanation, the term "flag" is used, but any data format that can indicate a state may be used. For example, a bit string of one or more digits may be used.
[0046] The display queue 103B5 is an area for queuing data for overlay display, etc. Overlay display may be used as an example of a notification process described later.
[0047] In this specification, the term “memory” encompasses at least non-volatile memory 102 and volatile memory 103 .
[0048] The communication interface 104 performs data communication with the controller 200 using at least one of wireless communication and wired communication. When wireless communication is used, the communication interface 104 includes, for example, a wireless chip that complies with the Bluetooth (registered trademark) standard. When wired communication is used, the communication interface 104 includes, for example, a wired communication controller that complies with the USB (Universal Serial Bus) communication standard.
[0049] Display unit 105 displays videos or images generated by the execution of application programs, etc. Display unit 105 may include a display, or may be an interface with an external display (not shown).
[0050] Battery 106 supplies the power required by main device 100, including the vibration motor. Main device 100 includes a circuit for battery 106 to supply power to each component of main device 100, and a circuit for charging battery 106 from an external power source (neither of which are shown). Main device 100 may also include a circuit for measuring the remaining battery capacity of battery 106.
[0051] The controller 200 includes an MCU (Micro Controller Unit) 201, which is an example of a processing circuit, an amplifier 205, a vibration motor 206, a communication interface (I / F) 207, an acceleration sensor 208, a gyro sensor 209, an operation switch 210, a temperature sensor 211, and a battery 212.
[0052] Controller 200 is typically held by the user in one or both hands, and accepts operations from the user by the user's fingers operating operation switch 210. Note that controller 200 is not limited to a controller that is held by the user, and may be, for example, a general-purpose keyboard and / or mouse that includes vibration motor 206, or a controller that is placed on the floor and accepts input when the soles of the user's feet come into contact with it.
[0053] The MCU 201 includes a processor 202 , a non-volatile memory 203 , and a volatile memory 204 .
[0054] Processor 202 is a processing entity (processing means) for executing processing in controller 200. Processor 202 loads a program stored in non-volatile memory 203 into volatile memory 204 and executes it. The hardware configuration of processor 202 is similar to that of processor 101 described above, and therefore detailed description will not be repeated.
[0055] The nonvolatile memory 203 stores, for example, a system program 203P. The hardware configuration of the nonvolatile memory 203 is similar to that of the nonvolatile memory 102 described above, and therefore detailed description thereof will not be repeated.
[0056] The volatile memory 204 includes a vibration instruction data area 204B1, a control data area 204B2, a resistance value area 204B3, an operation data area 204B4, and a flag area 204B5 while the controller 200 is executing a process. The hardware configuration of the volatile memory 204 is similar to that of the volatile memory 103 described above, and therefore detailed description thereof will not be repeated.
[0057] Vibration instruction data area 204B1 is an area (FIFO (First-In First-Out) buffer) for temporarily storing vibration instruction data transmitted from main unit 100.
[0058] The control data area 204B2 is an area (FIFO buffer) for temporarily storing control data generated by the processor 202 for vibrating the vibration motor 206. As will be described later, in this embodiment, the control data is generated based on vibration instruction data.
[0059] The resistance value area 204B3 is an area for temporarily storing a resistance value calculated from the current value and voltage value that the amplifier 205 supplies to the vibration motor 206.
[0060] The operation data area 204B4 is an area for temporarily storing detected values of the acceleration sensor 208, the gyro sensor 209, and the operation switch 210. Operation data is generated based on the data stored in the operation data area 204B4.
[0061] The flag area 204B5 is an area for storing one or more flags used to manage the limit state. The flag area 204B5 stores, for example, an internal temperature limit flag 221, a temperature sensor limit flag 222, and a remaining battery level limit flag 223.
[0062] FIG. 1 shows an example of a configuration using an MCU 201 including a processor 202, a non-volatile memory 203, and a volatile memory 204, but each element may be configured independently.
[0063] The amplifier 205 supplies power to the vibration motor 206 in accordance with the control data 220. The amplifier 205 may supply a PWM (Pulse Width Modulation) signal of a predetermined carrier frequency (e.g., 8 kHz) to the vibration motor 206. The amplifier 205 determines a duty ratio based on the control data 220 for each operation period (1 / 8 kHz = 0.125 ms) corresponding to one carrier, and generates a PWM signal. The control data 220 stored in the control data area 204B2 of the volatile memory 204 is written to the amplifier 205 at predetermined intervals, for example, by DMA (Direct Memory Access).
[0064] Vibration motor 206 is, for example, an eccentric motor in which a weight with an uneven shape is attached to a rotation shaft. Vibration is generated by the rotation of vibration motor 206. Vibration motor 206 may be a linear motor or a coin-shaped motor. This allows vibration motor 206 to apply vibration to a user holding controller 200 equipped with vibration motor 206. Vibration motor 206 may be, for example, a voice coil motor capable of outputting audible sound.
[0065] Communication interface 207 performs data communication with main device 100 using at least one of wireless communication and wired communication. The hardware configuration of communication interface 207 is similar to that of communication interface 104 described above, and therefore detailed description will not be repeated. The communication cycle between communication interface 104 and communication interface 207 may be variable based on a command from at least one of processor 101 and processor 202.
[0066] The acceleration sensor 208 detects the magnitude of linear acceleration along predetermined three axial directions. The acceleration sensor 208 may also detect acceleration along one or two axial directions.
[0067] The gyro sensor 209 detects the tilt, angular velocity, angular acceleration, and the like of the controller 200 .
[0068] The operation switch 210 is at least one button, key, or stick provided on the surface of the controller 200. Typically, the operation switch 210 may be a button associated with a letter such as an A button or a B button, a cross key for inputting up, down, left, and right directions, or a 3D stick for inputting a tilt direction and tilt amount.
[0069] The temperature sensor 211 is a sensor for measuring the internal temperature of the controller 200. The temperature sensor 211 is, for example, a thermistor. The temperature sensor 211 may be disposed near the vibration motor 206. Furthermore, if the temperature sensor 211 is disposed in a location also near the MCU 201, it is possible to detect temperature increases of both the vibration motor 206 and the MCU 201.
[0070] The battery 212 supplies the power required by the controller 200. The controller 200 includes a circuit for the battery 212 to supply power to each component of the controller 200, and a circuit for charging the battery 212 from an external power source (neither of which is shown). The controller 200 may include a circuit for measuring the remaining battery capacity of the battery 212. The circuit for measuring the remaining battery capacity may include, for example, at least one of a circuit for measuring the voltage value of the battery 212 or a circuit for measuring the value of the current flowing through the battery 212.
[0071] One or more peripheral devices (not shown) may be connectable to the controller 200. In this case, the controller 200 may include an interface for connecting to the peripheral devices.
[0072] The system program 203P includes computer-readable instructions for executing necessary processes in the controller 200. The system program 203P includes computer-readable instructions for executing a plurality of processes in parallel, such as (1) a process for generating control data 220 to be provided to the amplifier 205 based on vibration instruction data received from the main body device 100, (2) a process for estimating the temperature of the vibration motor 206, (3) a process for limiting the vibration of the vibration motor 206 based on the estimated temperature, (4) a process for changing the frequency of the vibration of the vibration motor 206 based on the estimated temperature, (5) a process for limiting the vibration of the vibration motor 206 based on the temperature measured by the temperature sensor 211, (6) a process for changing the frequency of the vibration of the vibration motor 206 based on the temperature measured by the temperature sensor 211, (7) a process for filtering the detection values of the acceleration sensor 208 and the gyro sensor 209, (8) a process for calculating the attitude based on the detection values of the acceleration sensor 208 and the gyro sensor 209, and (9) a process for communicating between the controller 200 and the main body device 100. Note that some or all of the processes (1) to (9) may be computer-readable instructions independent of one another. That is, the system program 203P may be a collection of software programs prepared for each process.
[0073] The communication process between the main unit 100 and the controller 200 includes, for example, a process of transmitting operation data including detection values of the acceleration sensor 208, the gyro sensor 209, and the operation switch 210 to the main unit 100, a process of transmitting a restricted state, and a process of receiving vibration instruction data from the main unit 100.
[0074] [B. Vibration Indication Data] Next, vibration instruction data transmitted from main unit 100 to controller 200 will be described.
[0075] The vibration instruction data is data that instructs a vibration effect. The vibration instruction data is used to control the vibration motor 206. For example, the vibration instruction data specifies the waveform of the control data that controls vibration at a certain timing. The vibration instruction data 116 may include one or more vibration parameters that instruct the waveform of the control data. The vibration instruction data 116 may include a set of an amplitude parameter and a frequency parameter as examples of vibration parameters. The amplitude parameter is an example of an instruction for the amplitude value of the vibration, and the frequency parameter is an example of an instruction for the frequency of the vibration.
[0076] In this embodiment, one or more (N) pieces of vibration instruction data 116 are specified in chronological order for each vibration instruction period T (msec), thereby specifying a vibration effect for a period of T×N (msec). Hereinafter, the N pieces of vibration instruction data 116 specified in chronological order are also referred to as a "time-series vibration instruction data group." For example, the vibration instruction period T may be set to 5 msec.
[0077] By adopting such a data format, it is possible to easily specify a vibration effect in which the amplitude and frequency change.
[0078] 2 is a diagram illustrating a process of generating time-series vibration instruction data group 110 in main body 100 according to the present embodiment. Referring to Fig. 2, vibration file 107 includes information for instructing a vibration effect for each vibration event.
[0079] More specifically, in addition to vibration parameters (amplitude parameters and frequency parameters), a wavelength number parameter is set for each vibration event in the vibration file 107. The wavelength number parameter is used to determine the number of vibration parameters that make up the time-series vibration parameter group.
[0080] For example, in vibration event 1, the frequency is set to "100 Hz" and the wavelength number parameter is set to "1." Therefore, the vibration effect corresponding to vibration event 1 continues for a period of 10 msec, which is one wavelength of 100 Hz. As a result, the time-series vibration instruction data group 110 instructing the vibration effect corresponding to vibration event 1 includes two vibration instruction data. In other words, the time-series vibration instruction data group 110 includes vibration instruction data for two vibration instruction periods.
[0081] In the vibration file 107 shown in FIG. 2, the amplitude parameter of the amplitude instruction data is normalized to 0 to 1. By executing the game program 102P2, vibration instruction data 116 (time-series vibration instruction data group 114) including the normalized amplitude parameter is generated. By executing the system program 102P1, the amplitude parameter of the vibration instruction data 116 is multiplied by the maximum allowable voltage according to the frequency, thereby generating vibration instruction data 112. The amplitude parameter of the vibration instruction data 112 indicates a voltage amplitude value. The generated vibration instruction data 112 (time-series vibration instruction data group 110) is written to the vibration instruction data area 103B3 (see FIG. 1).
[0082] 3 is a diagram showing an example of the frequency characteristics of the maximum allowable voltage in game system 10 according to the present embodiment. Referring to FIG. 3, the maximum voltage that can be applied to vibration motor 206 (hereinafter also referred to as "maximum allowable voltage") varies depending on the frequency. System program 102P1 is able to refer to the frequency characteristics of the maximum allowable voltage as shown in FIG. 3.
[0083] With this configuration, the maximum allowable voltage can be effectively used for each frequency to increase the vibration amount of the vibration motor 206. Furthermore, since the time-series vibration instruction data group 110 can be generated without considering the specifications of the vibration motor 206, the implementation of the game program 102P2 can be simplified.
[0084] In the above description, an example of processing is shown in which the time-series vibration instruction data group 110 (one or more vibration instruction data 112) is generated each time based on the vibration file 107, but the time-series vibration instruction data group 110 may be prepared in advance as file-format data. In this case, the processor 101 may read the data each time while executing the game program 102P2. By using data in such a file format, processing for generating the time-series vibration instruction data group 110 each time is unnecessary, thereby facilitating implementation of the game program 102P2. Note that the vibration instruction data 112 may be generated in real time without using the vibration file 107.
[0085] While the above description illustrates an example of processing using vibration instruction data that specifies vibration at a certain timing, variation instruction data that specifies a change from the previous vibration may also be used. The variation instruction data may indicate, for example, the amount of change in amplitude and frequency compared to the vibration parameters in the previous vibration instruction cycle. In this case, the vibration parameters in the current vibration instruction cycle are calculated based on the vibration parameters in the previous vibration instruction cycle and the amount of change in amplitude and frequency. The process of calculating such vibration parameters may be performed by the processor 101 of the main unit 100, or all or part of the process may be performed by the MCU 201 of the controller 200.
[0086] The above description shows an example of a process in which the processor 101 executes the game program 102P2 to generate vibration instruction data 116 including normalized amplitude parameters, but the vibration instruction data 112 including amplitude parameters indicating voltage amplitude values may also be generated directly by executing the game program 102P2.
[0087] When the time-series vibration instruction data group 110 is stored in the vibration instruction data area 103B3, a predetermined number of vibration instruction data 112 are sequentially transmitted from the main unit 100 to the controller 200 at each communication period (e.g., 5 msec) between the communication interface 104 and the communication interface 207.
[0088] [C. Example of Processing in Main Device 100] Next, an example of processing in main device 100 will be described.
[0089] Figure 4 is a flowchart showing an example of processing of game program 102P2 in main unit 100 according to the present embodiment. Each step shown in Figure 4 is realized, for example, by processor 101 of main unit 100 executing game program 102P2. Game program 102P2 may be, for example, an action game, but the type of game is not limited in any way.
[0090] 4, processor 101 executes game processing (step S100). The game processing includes processing for determining the state of a game character based on operation data, processing for generating an image to be output to a display device, and the like.
[0091] Processor 101 determines whether a vibration event has occurred as a result of execution of game processing (step S101). A vibration event is a trigger for giving a vibration to the user, such as an event in the virtual space where a game object collides with another game object or where an explosion occurs. The vibration event may occur at a predetermined timing. The vibration event may occur when a predetermined condition is met as the game progresses.
[0092] If a vibration event has occurred (YES in step S101), the processor 101 passes the time-series vibration instruction data group 114 corresponding to the vibration effect to the system program 102P1 (step S102). If a vibration event has not occurred (NO in step S101), the processing of step S102 is skipped.
[0093] Processor 101 executes other game processes (step S103). Steps S100 to S103 are repeated until a condition for ending the game processes is met.
[0094] 5 is a flowchart showing an example of processing by system program 102P1 in main device 100 according to the present embodiment. Each step shown in FIG. 5 is realized, for example, by processor 101 of main device 100 executing system program 102P1.
[0095] For ease of explanation, Fig. 5 illustrates the processing between the main device 100 and one controller 200, but if multiple controllers 200 are connected to the main device 100, the processing shown in Fig. 5 may be executed for each controller 200. In that case, the processing for each controller 200 may be executed in parallel or serially.
[0096] The processor 101 of the main unit 100 executes the system program 102P1 to generate a time-series vibration instruction data group 114 for each controller 200 in accordance with instructions generated by the execution of an application program (e.g., game program 102P2). At this time, the vibration instructions generated by the application program include identification information specifying the controller 200 to which the output is to be sent, or the identification information is attached to the vibration instructions. The processor 101 identifies the controller 200 to which the output is to be sent based on the identification information.
[0097] With reference to FIG. 5, processor 101 executes notification processing (step S140). The notification processing includes processing for notifying the user that vibration of vibration motor 206 in controller 200 is restricted. An example of the notification processing will be described with reference to FIG. 15, which will be described later. In relation to the notification processing, in addition to the processing shown in FIG. 5, notification flag update processing is executed. In the notification flag update processing, the on / off states of notification flags (internal temperature notification flag 124, temperature sensor notification flag 125, and remaining battery level notification flag 126) are updated. An example of the notification flag update processing will be described with reference to FIG. 14, which will be described later. The notification flag update processing may be part of the processing shown in FIG. 5.
[0098] Processor 101 selects one of vibration instruction data 116 included in time-series vibration instruction data group 114 passed from game program 102P2 (step S150).
[0099] Processor 101 determines the order set in the low pass filter (hereinafter also abbreviated as "LPF") of controller 200 (step S151). As will be described later, the order of the LPF of controller 200 is changeable, and as an example, a case will be described where it is set to either fourth order or sixth order. Note that the order of the LPF may be set or changed to any value.
[0100] If the order of the LPF of the controller 200 is set to 6th order ("6th order" in step S151), the processor 101 sets the lower limit value of the frequency parameter indicated by the time-series vibration instruction data group 114 transmitted to the controller 200 to 40 Hz (step S152).
[0101] If the order of the LPF of controller 200 is set to fourth order ("fourth order" in step S151), processor 101 sets the lower limit value of the frequency parameter to 50 Hz (step S153). When the order of the LPF is set to fourth order, the lower limit value of the frequency parameter is set higher by a predetermined value (for example, 10 Hz) compared to when the order of the LPF is set to sixth order. In this way, when the order of the LPF is changed, a margin may be added to a certain range that limits the frequency parameter.
[0102] Subsequently, the processor 101 determines whether the frequency parameter of the selected vibration instruction data 116 is equal to or less than the lower limit (step S154).
[0103] If the frequency parameter is equal to or less than the lower limit (YES in step S154), processor 101 changes the frequency parameter to the lower limit (step S155). If the frequency parameter is not equal to or less than the lower limit (NO in step S154), the process of step S155 is skipped.
[0104] The processing of steps S150 to S155 is processing for restricting the lower limit value of the frequency parameter instructed by the time-series vibration instruction data group 114 transmitted to the controller 200. Note that, for example, 40 Hz or 50 Hz may be set as the lower limit frequency allowed for the control data. The lower limit frequency can be set arbitrarily depending on the amplifier 205 or the vibration motor 206 of the controller 200. Specifically, in this embodiment, the frequency characteristics of the vibration motor 206 such that it can effectively vibrate are frequencies above about 40 Hz, and vibrations as low as 30 Hz, for example, become quite weak, so the lower limit frequency that can be used by the application program is set to 40 Hz or 50 Hz.
[0105] In step S152, the amplitude parameter may be set to 0. By adopting such processing, the frequency parameter of the vibration instruction data 116 is not reflected in the processing, and the instruction is canceled or invalidated.
[0106] The processes of steps S150 to S155 may be included in the game program 102P2 instead of the system program 102P1.
[0107] The processor 101 determines the maximum allowable voltage according to the frequency parameter of the selected vibration instruction data 116 (step S156). The processor 101 calculates the voltage amplitude value by multiplying the amplitude parameter (0 to 1) of the selected vibration instruction data 116 by the maximum allowable voltage (step S157). In this way, the processor 202 determines the amplitude value in the vibration control data 220 by changing the maximum amplitude value according to the frequency in the instruction to vibrate the vibration motor 206.
[0108] The processor 101 writes a set of the calculated voltage amplitude value (amplitude parameter) and the frequency parameter of the selected vibration instruction data 116 into the vibration instruction data area 103B3 (step S158). The processor 101 writes the set into an area corresponding to the controller 200 of the output destination identified in step S150. The one or more written sets correspond to the time-series vibration instruction data group 110 (or vibration instruction data 112).
[0109] Processor 101 determines whether all vibration instruction data 116 included in time-series vibration instruction data group 114 passed from game program 102P2 have been processed (step S159). If all vibration instruction data 116 included in time-series vibration instruction data group 114 passed from game program 102P2 have not been processed (NO in step S159), the processes from step S150 onwards are repeated.
[0110] If all the vibration instruction data 116 included in the time-series vibration instruction data group 114 passed from the game program 102P2 have been processed (YES in step S159), the processing ends.
[0111] The process shown in FIG. 5 may be executed repeatedly at a predetermined cycle, or may be triggered by a predetermined condition being met (for example, the time-series vibration instruction data group 114 being passed from the game program 102P2).
[0112] [D. Example of Processing in Controller 200] Next, an example of processing in the controller 200 will be described.
[0113] (d1: Vibration limit) The game system 10 according to the present embodiment includes a control system for the vibration motor 206, which is a voice coil motor. The control system according to the present disclosure is not limited to the controller 200 alone, and may be configured using at least a part of the game system 10.
[0114] In the control system, for example, the controller 200 (or the processor 202) limits the vibration of the vibration motor 206 when a predetermined condition is met.
[0115] Limiting the vibration of vibration motor 206 includes at least one of reducing the input voltage to vibration motor 206 or weakening the vibration amount of vibration motor 206. The vibration amount may be rephrased as the strength of the vibration. Limiting the vibration of vibration motor 206 may also include stopping vibration motor 206 (including not controlling vibration). By stopping vibration motor 206, no vibration occurs.
[0116] The predetermined condition may be based on, for example, the estimated temperature of the vibration motor 206, the temperature measured by the temperature sensor 211, the remaining battery power of the battery 212, or the like.
[0117] For example, the controller 200 may determine whether to impose a restriction based on a first condition including a condition related to temperature and a second condition including a condition related to the remaining battery power. When at least one of the first condition or the second condition is satisfied, the controller 200 limits the vibration of the vibration motor 206.
[0118] The following describes a process for generating control data 220 for controlling the vibration of the vibration motor 206 and a process for limiting the vibration of the vibration motor 206. There may be multiple types of processes for limiting the vibration of the vibration motor 206.
[0119] (d2: Generation process of control data 220) The controller 200 generates control data 220. The control data 220 is data input to the amplifier 205 to control the vibration of the vibration motor 206. For example, the time-series vibration instruction data group 110 is transmitted from the main body device 100 to the controller 200, and the processor 202 of the controller 200 generates the control data 220 based on the time-series vibration instruction data group 110. The control data 220 is, for example, data indicating a voltage value of a waveform for driving the vibration motor 206, and is output or updated at a predetermined cycle. The control data 220 may also be data indicating an instantaneous value of the voltage in each cycle. Hereinafter, the cycle in which the control data 220 is output or updated is also referred to as a "control cycle."
[0120] The control period may be the same as the vibration instruction period (e.g., 5 msec), but by making the control period shorter than the vibration instruction period, more precise control can be achieved. When generating control data 220 at a period shorter than the vibration instruction period, by generating the control data on the controller 200 side, more precise control can be achieved while reducing the amount of communication between the main device 100 and the controller 200. For example, the control period may be 1 / 40 of the vibration instruction period (e.g., 5 msec). In other words, the control period may be 0.125 msec.
[0121] The control data 220 specifies a vibration waveform (for example, a sine wave). However, the control data 220 may specify a square wave, or may specify another waveform depending on the system configuration. Furthermore, instead of supplying the vibration motor 206 with a PWM-modulated signal obtained by PWM-modulating the vibration waveform specified by the control data 220, the vibration motor 206 may be supplied with power obtained by amplifying the vibration waveform specified by the control data 220 as is.
[0122] Fig. 6 is a flowchart showing an example of a process for generating control data 220 in controller 200 according to the present embodiment. The steps shown in Fig. 6 are realized, for example, by processor 202 of controller 200 executing system program 203P. The process shown in Fig. 6 may be repeatedly executed at a predetermined cycle (for example, a vibration instruction cycle).
[0123] The processes shown in FIGS. 6 to 13 may be executed independently for each controller 200.
[0124] 6, processor 202 determines whether or not data exists in vibration instruction data area 204B1 (step S200). If data does not exist in vibration instruction data area 204B1 (NO in step S200), the process of step S200 is repeated.
[0125] If data exists in vibration instruction data area 204B1 (YES in step S200), processor 202 acquires vibration instruction data 112 (step S201). At this time, the first (or oldest) vibration instruction data 112 is acquired from the data stored in vibration instruction data area 204B1.
[0126] The processor 202 sets the index X to 1 (step S202). The processor 202 calculates a phase that is advanced by one control cycle (e.g., 0.125 msec) from the phase of the current control data (or the previously calculated control data) based on the frequency parameter of the acquired vibration instruction data 112 (step S203). The processor 202 calculates control data (voltage value) based on the amplitude parameter of the acquired vibration instruction data 112 and the phase calculated in step S203 (step S204).
[0127] It should be noted that the amplitude parameter and the frequency parameter may change significantly immediately after newly acquiring the vibration instruction data 112. In such a case, at least one of the amplitude parameter (step S204) and the frequency parameter (step S203) may be gradually changed from the immediately preceding value to the instructed value, rather than applying the instructed value as is.
[0128] The processor 202 calculates the voltage value of the measurement wave (for example, the amplitude value is 0.1 V and the frequency is 10 Hz) based on the phase calculated in step S203 (step S205). In this way, the processor 202 generates the measurement wave for estimating the internal temperature of the vibration motor 206.
[0129] The processor 202 adds the control data (voltage value) calculated in step S204 and the voltage value of the measurement wave calculated in step S205 (step S206). In this way, the processor 202 generates superimposed control data by superimposing the measurement wave on the control data for vibration of the vibration motor 206, which is a voice coil motor. The superimposed control data indicates a waveform in which the measurement wave is superimposed on a waveform based on the vibration instruction data 112 for driving the vibration motor 206.
[0130] The processor 202 writes the addition result (superimposed control data in which the voltage of the measurement wave is superimposed on the control data) to the control data area 204B2 (step S207). In this way, the processor 202 inputs the addition result (superimposed control data in which the voltage of the measurement wave is superimposed on the control data) to the vibration motor 206, which is a voice coil motor. The amplifier 205 drives the vibration motor 206 based on the addition result written to the control data area 204B2.
[0131] The processor 202 increments the index X by 1 (step S208). The processor 202 determines whether the index X after the increment exceeds 40 (step S209).
[0132] If the incremented index X does not exceed 40 (= vibration instruction period / control period) (NO in step S209), the processes from step S203 onward are repeated. If the incremented index X exceeds 40 (YES in step S209), processor 202 deletes vibration instruction data 112 acquired in step S201 from vibration instruction data area 204B1 (step S210). Then, the processes from step S200 onward are repeated.
[0133] In an example of the process for generating control data 220 according to this embodiment, a measurement wave with a frequency (e.g., 10 Hz) lower than the audible range (e.g., 20 Hz to 20,000 Hz) is used, thereby preventing the sound of the measurement wave from being heard from the voice coil motor. Furthermore, even if the processor's processing power is such that it is not possible to generate a high frequency and use a measurement wave higher than the audible range, temperature estimation is possible. Furthermore, the internal temperature of vibration motor 206 can be estimated with minimal impact on the vibrations experienced by the user.
[0134] The frequency of the measurement wave is not limited to 10 Hz, and may be set to any frequency lower than 40 Hz (the lower limit of the frequency parameter that can be used by the application). In other words, a measurement wave lower than the lower limit frequency of the vibration control data of the vibration motor 206, which is a voice coil motor, may be used. From another perspective, any frequency lower than the audible range may be used. The frequency of the measurement wave may also be set to a frequency lower than 20 Hz, for example, 20 Hz, 15 Hz, or 10 Hz. In this way, a frequency lower than 20 Hz may be used as the frequency of the measurement wave.
[0135] In the example of the generation process shown in Fig. 6, the amplitude value of the measurement wave is constant (e.g., 0.1 V), but the amplitude value of the measurement wave may be determined based on the amplitude parameter of the vibration instruction data 112. In this case, typically, when the amplitude parameter of the vibration instruction data 112 is large, the amplitude value of the measurement wave may be increased, and when the amplitude parameter of the vibration instruction data 112 is small, the amplitude value of the measurement wave may be decreased. This modification will be described below with reference to Fig. 7.
[0136] Fig. 7 is a flowchart showing a modified example of the generation process of control data 220 in controller 200 according to the present embodiment. The steps shown in Fig. 7 are realized, for example, by processor 202 of controller 200 executing system program 203P. The modified example shown in Fig. 7 employs steps S214 and S215 instead of step S205 in the generation process example shown in Fig. 6.
[0137] The processor 202 determines the amplitude value of the measurement wave based on the amplitude parameter of the acquired vibration instruction data 112 (step S214). In this way, the processor 202 determines the amplitude value of the measurement wave according to the amplitude value of the control data.
[0138] Specifically, for example, if the amplitude parameter of the vibration instruction data 112 is 3 V or more, the amplitude value of the measurement wave may be determined to be 0.2 V, and if the amplitude parameter of the vibration instruction data 112 is lower than 3 V, the amplitude value of the measurement wave may be determined to be 0.1 V. Alternatively, the amplitude value of the measurement wave may be determined to be a value obtained by multiplying the amplitude parameter of the vibration instruction data 112 by a predetermined percentage (for example, 5%).
[0139] The processor 202 calculates the voltage value of the measurement wave based on the phase calculated in step S203 so that a measurement wave (with the amplitude value determined in step S214 and a frequency of 10 Hz) is generated (step S215). In this way, the processor 202 adaptively determines the voltage value of the measurement wave for estimating the temperature of the vibration motor 206.
[0140] The processes other than steps S215 and S216 are the same as the corresponding processes in FIG. 6, and therefore detailed description thereof will not be repeated.
[0141] The greater the amplitude value of the measurement wave, the more accurate the temperature estimation, but if the amplitude value of the measurement wave becomes too large, the user will experience an unintended sensation. As described above, by dynamically changing the amplitude value of the measurement wave according to the amplitude value for the vibration that is originally intended to be experienced by the user, the accuracy of the temperature estimation can be improved and the user's perception of the unintended sensation of the measurement wave can be reduced.
[0142] (d3: Temperature estimation process and correction process) The game system 10 according to the present embodiment includes an internal temperature estimation system for the vibration motor 206, which is a voice coil motor. For example, the controller 200 (or the processor 202) estimates the temperature of the vibration motor 206 based on the resistance value of the vibration motor 206. More specifically, the amplifier 205 acquires the current and voltage values of the vibration motor 206 and outputs them to the MCU. The resistance and / or temperature are calculated based on the current and voltage values generated by a signal corresponding to a measurement wave among these current and voltage values.
[0143] In this specification, a "measurement wave" is a signal or waveform for estimating the temperature of the vibration motor 206. The measurement wave is used to measure the resistance value of the vibration motor 206. The measurement wave is typically a sine wave, but may be another waveform.
[0144] The temperature estimated by the temperature estimation process indicates the temperature inside the vibration motor 206, and can be used to prevent thermal deterioration of the vibration motor 206, for example.
[0145] The temperature estimation system according to the present disclosure is executed by processing on the controller 200 side, but part or all of it may be executed by processing on the game system 10 side.
[0146] 8 is a flowchart showing a resistance value acquisition process for temperature estimation in controller 200 according to the present embodiment. Each step shown in FIG. 8 is realized, for example, by processor 202 of controller 200 executing system program 203P.
[0147] 8, the processor 202 acquires a predetermined number (e.g., 40) of current and voltage values of the vibration motor 206 from the amplifier 205 (step S220). That is, the processor 202 acquires the internal current and voltage values of the vibration motor 206 to which superimposed control data in which a measurement wave is superimposed on control data has been input. For example, 40 sets of current and voltage values detected for each operating period (e.g., 0.125 ms) of the amplifier 205 may be acquired in chronological order (i.e., for 5 msec).
[0148] Processor 202 executes an LPF order determination process (step S221). Note that the larger the LPF order, the more accurate the calculation. Processor 202 executes LPF processing on each of the 40 current values and 40 voltage values acquired in step S220, using the order determined in step S221 (step S222). In this way, processor 202 performs LPF processing on the acquired current values and voltage values.
[0149] The LPF process extracts, for example, components of 10 Hz or less from 40 current values (time waveforms of current values) and 40 voltage values (time waveforms of voltage values). The LPF process extracts components corresponding to the measurement wave calculated in step S205 of Fig. 6. Any filter structure may be used, but for example, an IIR (Infinite Impulse Response) filter or an FIR (Finite Impulse Response) filter may be used.
[0150] As an example, the input x at time n n and the corresponding output y n A second-order IIR digital filter can be described using the following equations (1) and (2).
[0151] u n =x n -a1u n-1 -a2u n-2 ···(1) y n =b0u n +b1u n-1 +b2u n-2 ···(2) However, u n are values adopted for convenience of calculation, and a1, a2, b0, b1, and b2 are parameters that determine the filter characteristics.
[0152] Since the IIR filter according to the above formula is a second-order filter, connecting two of them in series will realize a fourth-order filter, and connecting three of them in series will realize a sixth-order filter. Note that connecting IIR filters in series reduces the output y of the previous IIR filter. n is input to the downstream IIR filter x n In implementation, the filtering result using a fourth-order filter is obtained by repeating the calculations according to formulas (1) and (2) twice in one calculation timing, and the filtering result using a sixth-order filter is obtained by repeating the calculations according to formulas (1) and (2) three times.
[0153] Note that fourth- and sixth-order IIR filters may also be used. In this case, it is not necessary to connect the IIR filters in series. Specifically, an Nth-order IIR digital filter can be described using the following equations (3) and (4).
[0154] u n =x n -a1u n-1 -…-a N u n-N ···(3) y n =b0u n +b1u n-1 +…+b N u n-N ···(4) In this way, the calculation formula used for frequency filtering is changed according to the change in the order. The change in the calculation formula may be a change in the order of the calculation formula. Furthermore, in frequency filtering, the lower the set order, the lower the calculation load. Since FIR filters are described by calculation formulas different from those of IIR filters, the calculation formula is also changed when the FIR filter is changed to an IIR filter.
[0155] Although the LPF processing has been described as an example of frequency filtering, filtering processing using a band-pass filter or a high-pass filter may also be employed. Any filter (LPF, high-pass filter, or band-pass filter) can be used for frequency filtering.
[0156] Processor 202 calculates a resistance value using the current value (time waveform of the current value) and voltage value (time waveform of the voltage value) after LPF processing (step S223). In this way, processor 202 calculates an internal resistance value of vibration motor 206, which is a voice coil motor, based on the current value and voltage value after LPF processing. The resistance value calculated in step S223 is a value at each execution cycle (e.g., 50 msec) of the temperature estimation process.
[0157] The processor 202 writes the calculated resistance value in the resistance value area 204B3 (step S224). The resistance value area 204B3 is configured to store 40 resistance values. In this case, the resistance value area 204B3 stores resistance values for 2 seconds (50 msec x 40) in chronological order.
[0158] The process shown in Fig. 8 may be repeatedly executed at a predetermined execution cycle (for example, 50 msec). The execution cycle of the process shown in Fig. 8 may be set longer than the execution cycle of temperature measurement by the temperature sensor 211 shown in Fig. 12, which will be described later. By setting the execution cycle of the temperature estimation process longer than the execution cycle of temperature measurement by the temperature sensor 211, it is possible to reduce the load on the MCU 201 (processor 202), which must execute multiple processes, while maintaining the level of temperature management.
[0159] Fig. 9 is a flowchart showing a more detailed example of the LPF order determination process (step S221) shown in Fig. 8. Referring to Fig. 9, processor 202 determines whether the load on MCU 201 is equal to or greater than a predetermined level (step S2210). Whether the load on MCU 201 is equal to or greater than a predetermined level may be determined by using one or more of the following determination methods.
[0160] (1) The operating rate of the MCU 201 is measured, and when the measured operating rate reaches or exceeds a predetermined value, it is determined that the load on the MCU 201 is at or above a predetermined level.
[0161] (2) Determine whether the MCU 201 is executing a predetermined process, and if the predetermined process is being executed, determine that the load on the MCU 201 is at or above a predetermined level. The predetermined process may be, for example, (a) input or output processing of a sensor of the controller 200 (e.g., a motion sensor (e.g., the acceleration sensor 208 or the gyro sensor 209), a camera, a microphone, an infrared sensor, etc.), or (b) input or output processing of an external device connected to the controller 200. At least some of the motion sensor, camera, microphone, or infrared sensor may be peripheral devices connectable to the controller 200.
[0162] (3) If the period for communicating vibration instruction data between the main unit 100 and the controller 200 is variable, if the period for such communication is above a predetermined level (for example, the communication rate is above a predetermined value or the time interval is below a predetermined value), it is determined that the load on the MCU 201 is above a predetermined level.
[0163] If the load on MCU 201 is equal to or greater than a predetermined level (YES in step S2210), processor 202 determines the order of the LPF to be fourth (step S2211). In this way, processor 202 changes the order of the LPF depending on the load on MCU 201 (or processor 202 that executes LPF processing).
[0164] If the load on MCU 201 is lower than the predetermined level (NO in step S2210), processor 202 acquires the temperature estimated in step S241 (step S2212), and determines whether the estimated temperature is equal to or higher than a predetermined value (step S2213).
[0165] If the temperature estimated in step S241 is equal to or greater than the predetermined value (YES in step S2213), processor 202 determines the order of the LPF to be sixth (step S2214). On the other hand, if the temperature estimated in step S241 is not equal to or greater than the predetermined value (NO in step S2213), processor 202 determines the order of the LPF to be fourth (step S2215). In this way, processor 202 changes the order of the LPF according to the estimated temperature.
[0166] The temperature estimation process places a large load on the MCU 201. Therefore, as shown in step S2210, by changing the order of the LPF, which determines the magnitude of the load required for execution, depending on the load on the MCU 201, it is possible to reduce the impact on other processes executed by the MCU 201.
[0167] In some cases, the processor in the controller has lower performance than the processor in the main unit, and in such cases, it is necessary to reduce the load on the processor in the controller.
[0168] As shown in step S2213, when the temperature reaches or exceeds a predetermined value, the order of the LPF is increased to improve the accuracy of the temperature estimation, whereas otherwise, since the need for high accuracy in the temperature estimation is low, the order of the LPF is decreased to reduce the load required for processing. In this way, in situations where high accuracy in the temperature estimation is not required, reducing the load required for execution allows multiple processes to be executed in parallel even on MCU 201 with limited processing resources.
[0169] Note that the specific numerical values of the order are merely examples, and in step S2211, for example, the order may be reduced from 5th to 3rd, or from 6th to 5th. The order when the load on the MCU 201 is high (the order set in S2211) may be different from the order when the estimated temperature is low (the order set in S2215).
[0170] The process of step S2211 may be executed only when the estimated temperature is below a predetermined value. The predetermined value used to determine whether to execute the process of step S2211 may be set higher than the temperature used in the determination of step S2213. This may increase the accuracy of the temperature estimation only when the temperature is equal to or higher than the predetermined value, and may prevent the load on the MCU 201 from increasing when the temperature is below the predetermined value.
[0171] The process of lowering the order of the LPF when the load on the MCU 201 is equal to or greater than a predetermined level or when the temperature is below a predetermined value may also be applied when an FIR filter is used as the LPF.
[0172] When the load on the MCU 201 is equal to or greater than a predetermined level, the FIR filter may be changed to an IIR filter. Also, when the temperature is below a predetermined value, the FIR filter may be changed to an IIR filter. In this case, the order of the calculation formula for the FIR filter may be the same as the order of the calculation formula for the IIR filter. This is because, in general, an IIR filter can achieve a greater filtering effect with a lower order (i.e., a lower calculation load) than an FIR filter.
[0173] The vibration instruction data may be modified based on the estimated temperature. The process of modifying the vibration instruction data may include at least one of a process of limiting vibration of the vibration motor 206 and a process of changing the frequency of vibration of the vibration motor 206. Note that the process of changing the frequency of vibration of the vibration motor 206 may be considered as part of the process of limiting vibration of the vibration motor 206, or may be considered as a separate process.
[0174] Fig. 10 is a flowchart showing a temperature estimation process and a vibration instruction data correction process in controller 200 according to the present embodiment. The steps shown in Fig. 10 are realized, for example, by processor 202 of controller 200 executing system program 203P. The process shown in Fig. 10 may be repeatedly executed at a predetermined execution cycle (for example, 50 msec).
[0175] Referring to FIG. 10, processor 202 calculates an average resistance value from the 40 resistance values stored in resistance value area 204B3 (step S240). Note that other representative values, such as a median or a mode, may be used instead of the average value. Processor 202 estimates a temperature from the calculated average resistance value (step S241). The process of estimating the temperature from the average resistance value may use a predetermined calculation formula or a table that defines the correspondence between resistance values and temperatures. As shown in step S240, processor 202 may acquire current values and voltage values over a predetermined period or a predetermined number of times, and thereby calculate the resistance value multiple times. Then, processor 202 may estimate the temperature based on the resistance values obtained multiple times.
[0176] Processor 202 determines the order set in the LPF (step S242). If the order of the LPF is set to 6th order ("6th order" in step S242), processor 202 sets a first threshold temperature and a second threshold temperature according to the order (6th order) of the LPF (step S243). In this embodiment, the first threshold temperature is set to a value higher than the second threshold temperature.
[0177] If the order of the LPF is set to fourth order ("fourth order" in step S242), processor 202 sets a first threshold temperature and a second threshold temperature according to the order (fourth order) of the LPF (step S244). In this embodiment, the first threshold temperature when the order of the LPF is fourth order is set to a value lower than the first threshold temperature when the order of the LPF is sixth order. Also, the second threshold temperature when the order of the LPF is fourth order is set to a value lower than the second threshold temperature when the order of the LPF is sixth order.
[0178] Processor 202 determines whether the estimated temperature is equal to or greater than a first threshold temperature (step S245).
[0179] If the estimated temperature is equal to or higher than the first threshold temperature (YES in step S245), the processor 202 turns on the internal temperature restriction flag 221 (step S246). At this time, the internal temperature restriction flag 221 indicates a state in which the vibration of the vibration motor 206 is restricted based on the estimated temperature. The processor 202 then changes the amplitude parameter of the leading vibration instruction data 112 among the vibration instruction data 112 stored in the vibration instruction data area 204B1 to zero (step S247). Subsequently, the processor 202 determines whether or not a predetermined time has elapsed (step S248). If the predetermined time has not elapsed (NO in step S244), the processing from step S247 onwards is repeated. If the predetermined time has elapsed (YES in step S248), the processing from step S240 onwards is repeated.
[0180] If the estimated temperature is equal to or higher than the first threshold temperature through the process of step S248 (YES in step S245), the vibration of vibration motor 206 is limited for a predetermined time. The predetermined time may be determined according to the heat capacity of vibration motor 206, etc.
[0181] If the estimated temperature is lower than the first threshold temperature (NO in step S245), processor 202 turns off internal temperature restriction flag 221 (step S249). At this time, internal temperature restriction flag 221 indicates a state in which vibration of vibration motor 206 is not restricted based on the estimated temperature. Then, processor 202 determines whether the estimated temperature is equal to or higher than the second threshold temperature (step S250). If the estimated temperature is lower than the second threshold temperature (NO in step S250), the processing from step S240 onwards is repeated.
[0182] On the other hand, if the estimated temperature is equal to or higher than the second threshold temperature (YES in step S250), the processor 202 changes the frequency of vibration of the vibration motor 206 or limits the vibration of the vibration motor 206.
[0183] More specifically, the processor 202 determines whether the frequency parameter of the leading vibration instruction data 112 among the vibration instruction data 112 stored in the vibration instruction data area 204B1 is equal to or greater than 150 Hz (step S251).
[0184] If the frequency parameter of the first vibration instruction data 112 is 150 Hz or higher (YES in step S251), the processor 202 changes the frequency parameter of the first vibration instruction data 112 to 100 Hz (step S252).
[0185] If the frequency parameter of the leading vibration instruction data 112 is lower than 150 Hz (NO in step S251), the processor 202 reduces the amplitude parameter of the leading vibration instruction data 112 (for example, changes it to half the value) (step S253). Note that only when the amplitude parameter of the leading vibration instruction data 112 exceeds the upper limit, the processor 202 may change the amplitude parameter of the leading vibration instruction data 112 to the upper limit. In this way, limiting the vibration of the vibration motor 206 includes processing to reduce the amplitude of the waveform for driving the vibration motor 206. Note that both a frequency shift and a method of reducing the amplitude may be adopted as a method of limiting vibration.
[0186] Processor 202 then determines whether a predetermined time has elapsed (step S254). If the predetermined time has not elapsed (NO in step S254), the processes from step S251 onward are repeated. If the predetermined time has elapsed (YES in step S254), the processes from step S240 onward are repeated.
[0187] In this way, the processor 202 may limit the vibration of the vibration motor 206, which is a voice coil motor, when the estimated temperature is equal to or higher than a predetermined value (S247, S253).
[0188] As shown in step S252, when the estimated temperature reaches or exceeds a predetermined value, the processor 202 shifts the frequency specified in the control data for vibration of the vibration motor 206, which is a voice coil motor, to another frequency. Shifting the frequency of the vibration motor 206 is a process of shifting the frequency of the waveform for driving the vibration motor 206 to a frequency that provides better vibration efficiency. As can be seen from FIG. 3, the vibration motor 206 of this embodiment has a characteristic that it is most susceptible to vibration at a frequency of 100 Hz (or a characteristic that it vibrates greatly even at a low drive voltage).
[0189] More specifically, in the example of frequency characteristics shown in Fig. 3, the vibration amount for a certain input voltage in the vicinity of 100 Hz (e.g., about 50 Hz to about 150 Hz) is greater than the vibration amount for that input voltage at other frequencies (e.g., below about 50 Hz and above about 150 Hz). In step S252, processor 202 changes the specified frequency parameter so that the vibration amount for the input voltage at the changed frequency is greater than the vibration amount at the specified frequency. It can also be said that frequencies in the vicinity of 100 Hz are frequencies at which the same vibration amount can be achieved with a lower voltage.
[0190] In step S247, the control data 220 existing in the control data area 204B2 may be changed to 0. In addition, in step S248, instead of waiting for a predetermined time to elapse, steps S240 and S241 may be executed again to wait until the estimated temperature (or the temperature measured by the temperature sensor 211) becomes equal to or lower than a predetermined threshold temperature.
[0191] The order in which the determination process in step S245 and the determination process in step S250 are performed does not matter, and the order in which the processes corresponding to the respective determinations (steps S247, S252, S253) are performed does not matter either.
[0192] When a large amount of power is supplied to the vibration motor 206, the resistance value of the vibration motor 206 increases instantaneously. Even if there is such an instantaneous increase in the resistance value, the effect of thermal degradation of the vibration motor 206 is small. Therefore, as shown in step S240, the vibration of the vibration motor 206 is limited based on the result of averaging the resistance value over a predetermined period. This allows the output from the vibration motor 206 to increase instantaneously.
[0193] Furthermore, when the frequency of the measurement wave is low, the accuracy of the temperature estimation decreases if the estimation period is short. Therefore, as shown in step S240, the accuracy of the temperature estimation can be improved by using an average value obtained by using multiple resistance values over a longer period.
[0194] (d4: Temperature measurement processing and vibration limit processing) The game system 10 according to the present embodiment can measure temperature using the temperature sensor 211. For example, the temperature measured by the temperature sensor 211 may be the temperature outside the vibration motor 206, and may indicate the internal temperature of the controller 200 and / or the surface temperature of the controller 200. The vibration instruction data may be corrected based on the measured temperature.
[0195] Fig. 11 is a flowchart showing a temperature measurement process and a vibration restriction process in controller 200 according to the present embodiment. The steps shown in Fig. 11 are realized, for example, by processor 202 of controller 200 executing system program 203P. The process shown in Fig. 11 may be repeatedly executed at a predetermined execution cycle (for example, 5 msec).
[0196] 11, processor 202 acquires the temperature from the resistance value of temperature sensor 211 (for example, a thermistor) (step S260). That is, processor 202 measures the temperature using temperature sensor 211 arranged outside vibration motor 206.
[0197] Processor 202 determines whether the temperature measured by temperature sensor 211 is equal to or higher than a third threshold temperature (step S261). In this embodiment, the third threshold temperature is set to a value lower than the first threshold temperature.
[0198] If the acquired temperature is equal to or higher than the third threshold temperature (YES in step S261), the processor 202 turns on the temperature sensor restriction flag 222 (step S262). At this time, the temperature sensor restriction flag 222 indicates a state in which the vibration of the vibration motor 206 is restricted based on the measured temperature. The processor 202 then changes the amplitude parameter of the leading vibration instruction data 112 among the data stored in the vibration instruction data area 204B1 to zero (step S263). Subsequently, the processor 202 determines whether or not a predetermined time has elapsed (step S264). If the predetermined time has not elapsed (NO in step S264), the processing from step S263 onwards is repeated. If the predetermined time has elapsed (YES in step S264), the processing from step S260 onwards is repeated.
[0199] If the acquired temperature is equal to or higher than the third threshold temperature through the process of step S264 (YES in step S261), the vibration of vibration motor 206 is limited. Since the determination is made every execution period (for example, every 5 msec), the limited time is an integer multiple of the execution period.
[0200] As a modified example, the limited period may be determined according to the heat capacity of the vibration motor 206. In this case, the limited period may be determined by measuring it.
[0201] If the acquired temperature is lower than the third threshold temperature (NO in step S261), the processor 202 turns off the temperature sensor restriction flag 222 (step S265). At this time, the temperature sensor restriction flag 222 indicates a state in which the vibration of the vibration motor 206 is not restricted based on the measured temperature. Then, the processing from step S260 onwards is repeated.
[0202] In step S263, instead of changing the amplitude parameter to zero, the amplitude parameter may be reduced or the frequency parameter may be shifted (i.e., the instructed frequency may be changed) as shown in steps S253 and S252 (both of which refer to FIG. 10). In this way, when the temperature measured by the temperature sensor 211 becomes equal to or higher than a predetermined value, the processor 202 may limit the vibration of the vibration motor 206, which is a voice coil motor (S263).
[0203] 11, when the temperature measured by the temperature sensor 211 becomes equal to or higher than a third threshold temperature, the processor 202 stops driving the vibration motor 206. The execution cycle of the process shown in FIG. 11 is, for example, 5 msec, so the cycle (5 msec) in which the temperature is measured by the temperature sensor 211 is shorter than the cycle (the execution cycle of the process shown in FIG. 10 is, for example, 50 msec) in which the temperature is estimated based on the resistance value. By providing such a difference in the execution cycle, it is possible to reduce the frequency of execution of the temperature estimation process, which places a heavy load on the MCU 201.
[0204] (d5: Battery remaining capacity measurement and correction process) The game system 10 according to the present embodiment can measure the remaining battery power of the battery 212 of the controller 200. The vibration instruction data may be corrected based on the measured remaining battery power.
[0205] Fig. 12 is a flowchart showing a remaining battery charge measurement process and a vibration instruction data correction process in controller 200 according to the present embodiment. Each step shown in Fig. 12 is realized, for example, by processor 202 of controller 200 executing system program 203P. The process shown in Fig. 12 may be repeatedly executed at a predetermined execution cycle (for example, 50 msec). Note that description of processes similar to those shown in Fig. 10 will not be repeated.
[0206] 12, the processor 202 measures the remaining battery capacity of the battery 212 (step S270). Any method for measuring the remaining battery capacity may be used. For example, the remaining battery capacity may be calculated by monitoring the current value and voltage value generated when the battery 212 is charged or discharged, or may be calculated based on the voltage value appearing on the battery 212.
[0207] The processor 202 determines whether the measured remaining battery power is equal to or less than the first threshold value (step S271).
[0208] If the measured remaining battery power is equal to or less than the first threshold value (YES in step S271), the processor 202 turns on the remaining battery power limit flag 223 (step S272). At this time, the remaining battery power limit flag 223 indicates a state in which the vibration of the vibration motor 206 is limited based on the remaining battery power of the battery 212. Then, the processor 202 changes the amplitude parameter of the leading vibration instruction data 112 among the vibration instruction data 112 stored in the vibration instruction data area 204B1 to zero (step S272). Then, the processing from step S270 onwards is repeated.
[0209] If the measured remaining battery power is higher than the first threshold (NO in step S271), the processor 202 determines whether the measured remaining battery power exceeds a third threshold (step S274). If the measured remaining battery power exceeds the third threshold (YES in step S274), the processor 202 turns off the remaining battery power limit flag 223 (step S275). At this time, the remaining battery power limit flag 223 indicates a state in which the vibration of the vibration motor 206 is not limited based on the remaining battery power of the battery 212.
[0210] If the measured remaining battery power does not exceed the third threshold (NO in step S274), the process of step S275 is skipped.
[0211] In this embodiment, the third threshold is set to a value higher than the first threshold. That is, the third threshold for switching the remaining battery capacity limit flag 223 from on to off is higher than the first threshold for switching the remaining battery capacity limit flag 223 from off to on. Therefore, the remaining battery capacity at which the remaining battery capacity limit flag 223 is switched on does not match the remaining battery capacity at which the remaining battery capacity limit flag 223 is switched off, and a hysteresis is provided. The hysteresis in the determination of the remaining battery capacity reduces the possibility that the remaining battery capacity limit flag 223 will repeatedly switch on and off in a short period of time.
[0212] Next, processor 202 determines whether the measured remaining battery power is equal to or less than a second threshold value (step S276). In this embodiment, the second threshold value is set to a value higher than the first threshold value. If the measured remaining battery power is higher than the second threshold value (NO in step S276), the processing from step S270 onwards is repeated.
[0213] On the other hand, if the measured remaining battery power is equal to or less than the second threshold value (YES in step S276), the processor 202 changes the frequency of vibration of the vibration motor 206 or limits the vibration of the vibration motor 206.
[0214] More specifically, the processor 202 determines whether the frequency parameter of the leading vibration instruction data 112 among the vibration instruction data 112 stored in the vibration instruction data area 204B1 is equal to or greater than 150 Hz (step S277).
[0215] If the frequency parameter of the leading vibration instruction data 112 is 150 Hz or higher (YES in step S277), the processor 202 changes the frequency parameter of the leading vibration instruction data 112 to 100 Hz (step S278), and then repeats the processing from step S270 onwards.
[0216] In this way, when the measured remaining battery charge falls below a predetermined value, the processor 202 shifts the frequency of the vibration control data of the vibration motor 206, which is a voice coil motor, from a specified frequency to another frequency. Shifting the frequency of the vibration motor 206 is a process of shifting the frequency of the waveform for driving the vibration motor 206 to a frequency with better vibration efficiency.
[0217] If the frequency parameter of the leading vibration instruction data 112 is lower than 150 Hz (NO in step S277), the processor 202 reduces the amplitude parameter of the leading vibration instruction data 112 (for example, changes it to half the value) (step S279). Then, the processing from step S270 onwards is repeated.
[0218] In this way, the processor 202 may limit the vibration of the vibration motor 206, which is a voice coil motor, when the measured remaining battery power falls below a predetermined value (S273, S279).
[0219] Note that only when the amplitude parameter of the leading vibration instruction data 112 exceeds the upper limit, the processor 202 may change the amplitude parameter of the leading vibration instruction data 112 to the upper limit. In this way, limiting the vibration of the vibration motor 206 includes processing to reduce the amplitude of the waveform for driving the vibration motor 206. Frequency shift may also be combined as a method for limiting vibration.
[0220] In step S273, the control data 220 existing in the control data area 204B2 may be changed to zero.
[0221] The order of execution of the determination process in step S271, the determination process in step S274, and the determination process in step S276 does not matter, and the order of execution of the processes corresponding to each determination (steps S273, S275, S277) does not matter either.
[0222] The third threshold value may be the same as the second threshold value. In this case, the determination process of step S274 and the determination process of step S276 are the same process, so either one of them may be omitted.
[0223] (d6: Adjustment between correction processes of vibration indication data) Both of the vibration instruction data correction process based on the estimated temperature shown in Figure 10 and the vibration instruction data correction process based on the remaining battery level shown in Figure 12 may be performed, or only one of the correction processes may be performed.
[0224] At each predetermined execution cycle, the vibration instruction data correction process based on the estimated temperature shown in Fig. 10 may be executed, and then the vibration instruction data correction process based on the remaining battery charge shown in Fig. 12 may be executed. Conversely, at each predetermined execution cycle, the vibration instruction data correction process based on the remaining battery charge shown in Fig. 12 may be executed, and then the vibration instruction data correction process based on the estimated temperature shown in Fig. 10 may be executed. Note that the vibration instruction data correction process shown in Fig. 10 and the vibration instruction data correction process shown in Fig. 12 may be executed at different execution cycles.
[0225] When the correction process shown in FIG. 10 and the correction process shown in FIG. 12 are executed, the following adjustment process may be performed.
[0226] (1) When at least one of step S247 in FIG. 10 or step S273 in FIG. 12 is executed, the amplitude parameter of the leading vibration instruction data 112 is changed to zero.
[0227] (2) If neither step S247 in FIG. 10 nor step S273 in FIG. 12 is executed, and at least one of step S252 in FIG. 10 or step S278 in FIG. 12 is executed, the frequency parameter of the leading vibration instruction data 112 is changed to 100 Hz.
[0228] (3) If neither step S247 in FIG. 10 nor step S272 in FIG. 12 is executed, and neither step S252 in FIG. 10 nor step S278 in FIG. 12 is executed, and at least one of step S253 in FIG. 10 or step S279 in FIG. 12 is executed, the amplitude parameter of the leading vibration instruction data 112 is reduced (for example, changed to half its value).
[0229] In this way, when different vibration instruction data modifications are determined in each modification process, the determination in one of the modification processes may be prioritized according to a predetermined adjustment rule. Note that the order of the adjustment rules shown in (1) to (3) can be changed as appropriate.
[0230] (d7: Variation) At least one of the above-described vibration instruction data correction process based on the estimated temperature (FIG. 10) and the vibration instruction data correction process based on the remaining battery level (FIG. 12) may be modified as follows.
[0231] In the above-described steps S252 and S278, an example of processing has been shown in which the frequency is changed if the acquired frequency parameter is 150 Hz or higher. However, as a modified example, either changing the frequency or limiting the vibration of vibration motor 206 may be selected depending on the specified frequency. In other words, the frequency may be changed when the specified frequency is within a certain range, and the vibration of vibration motor 206 may be limited when the specified frequency is outside the certain range. For example, if the acquired frequency parameter is 300 Hz or higher, the value of the frequency parameter may remain unchanged, and the amplitude parameter may be changed to zero.
[0232] In the above-described steps S252 and S278, the frequency is changed if the acquired frequency parameter is 150 Hz or higher. However, as a modified example, the frequency may not be changed if the specified frequency is within a certain range. For example, if the acquired frequency parameter is within a range of 50 Hz to 150 Hz, the value of the frequency parameter may be maintained as is.
[0233] In the above-described steps S252 and S278, an example has been shown in which the frequency parameter is changed to a fixed value (e.g., 100 Hz), but as a modified example, the changed frequency may be determined according to the specified frequency. For example, if the acquired frequency parameter is 200 Hz, it may be changed to 100 Hz, and if the acquired frequency parameter is 300 Hz, it may be changed to 125 Hz.
[0234] In the above-described steps S252 and S278, an example has been shown in which the frequency parameter is changed to a fixed value (e.g., 100 Hz). However, as a modified example, the changed frequency may be determined according to the temperature estimated by the temperature estimation process (or the temperature measured by the temperature sensor 211). For example, when the acquired frequency parameter is 150 Hz, if the estimated temperature (or the measured temperature) is equal to or higher than the first threshold temperature (see steps S243 and S244), the frequency may be changed to 100 Hz. If the estimated temperature (or the measured temperature) is lower than the first threshold temperature and equal to or higher than the second threshold temperature, the frequency may be changed to 125 Hz. Note that the first and second threshold temperatures (lower than the first threshold temperature) may be set independently of the first and second threshold temperatures set in steps S243 and S244.
[0235] The above-described modifications may be partially adopted or may be combined as appropriate.
[0236] (d8: Combination) The above-described vibration motor correction processes and modifications can be combined as appropriate.
[0237] [E. Notification Processing] The game system 10 according to the present embodiment can also notify the user that vibration is restricted. In the notification process, the user may be notified that vibration of the vibration motor 206 is restricted along with the reason based on the decision to restrict vibration (for example, step S245 in FIG. 10, step S261 in FIG. 11, steps S271 and S274 in FIG. 12, etc.). An example of the notification process will be described below.
[0238] Fig. 13 is a flowchart showing an example of a transmission process of a restricted state in controller 200 according to the present embodiment. Each step shown in Fig. 13 is realized, for example, by processor 202 of controller 200 executing system program 203P. The process shown in Fig. 13 may be repeatedly executed at a predetermined communication cycle (for example, 5 msec).
[0239] 13, processor 202 reads out the values of internal temperature restriction flag 221, temperature sensor restriction flag 222, and remaining battery power restriction flag 223 stored in flag area 204B5 (step S280), and transmits the read-out values to main unit 100 (step S281). The read-out values indicate the results of a determination to restrict vibration of vibration motor 206, as shown in FIGS.
[0240] For convenience of explanation, a processing example has been shown in which the restriction flags indicating the restricted states (internal temperature restriction flag 221, temperature sensor restriction flag 222, and remaining battery capacity restriction flag 223) are transmitted alone, but the restriction flags may be periodically transmitted from the controller 200 to the main device 100 together with the operation data. Also, the restriction flags may be transmitted when the value changes, rather than periodically.
[0241] The main device 100 stores the restriction status (e.g., the values of the internal temperature restriction flag 221, the temperature sensor restriction flag 222, and the remaining battery capacity restriction flag 223) received from each controller 200 in the flag set 120 corresponding to that controller 200. That is, the values of the internal temperature restriction flag 121, the temperature sensor restriction flag 122, and the remaining battery capacity restriction flag 123 reflect the values of the internal temperature restriction flag 221, the temperature sensor restriction flag 222, and the remaining battery capacity restriction flag 223 of the corresponding controller 200, respectively.
[0242] Based on the restriction state of each controller 200, the main device 100 notifies the user that the vibration of the vibration motor 206 is restricted.
[0243] 14 is a flowchart showing an example of a notification flag update process in main device 100 according to the present embodiment. Each step shown in FIG. 14 is realized, for example, by processor 101 of main device 100 executing system program 102P1.
[0244] 14, the processor 101 determines whether the main device 100 has started up and connected to the controller 200 (step S180). When the main device 100 has started up and connected to the controller 200 (YES in step S180), the processor 101 turns off the notification flags (internal temperature notification flag 124, temperature sensor notification flag 125, or remaining battery power notification flag 126) of all the controllers 200 connected to the main device 100 (step S181).
[0245] If main device 100 has started up but is not connected to controller 200 (NO in step S180), the process of step S181 is skipped.
[0246] The processor 101 determines whether the main device 100 has returned from sleep and connected to the controller 200 (step S182). When the main device 100 has returned from sleep and connected to the controller 200 (YES in step S182), the processor 101 turns off the notification flags of all the controllers 200 connected to the main device 100 (step S183).
[0247] If the main device 100 wakes up from sleep mode but is not connected to the controller 200 (NO in step S182), the process of step S183 is skipped.
[0248] The processor 101 selects one of the controllers 200 connected to the main device 100 (step S184).
[0249] The processor 101 determines whether any of the restriction flags (internal temperature restriction flag 121, temperature sensor restriction flag 122, and remaining battery capacity restriction flag 123) of the selected controller 200 has changed from off to on (step S185). A restriction flag changing from off to on includes a case where the restriction flag was off in the previous determination and is on in the current determination.
[0250] If any of the restriction flags has changed from off to on (YES in step S185), processor 101 turns on the notification flag corresponding to the restriction flag that has changed from off to on (step S186). By this process, if at least one of the estimated temperature, the measured temperature, and the remaining battery capacity satisfies the corresponding condition, a notification of the vibration restriction is issued.
[0251] If none of the restriction flags has changed from off to on (NO in step S185), the process of step S186 is skipped.
[0252] Processor 101 determines whether any restriction flag of the selected controller 200 has changed from on to off (step S187). A restriction flag changing from on to off includes a case where the restriction flag was on in the previous determination and is off in the current determination.
[0253] If any of the restriction flags has changed from on to off (YES in step S187), processor 101 turns off the notification flag corresponding to the restriction flag that has changed from on to off (step S188).
[0254] If none of the restriction flags has changed from on to off (NO in step S187), the process of step S188 is skipped.
[0255] The processor 101 determines whether or not all controllers 200 connected to the main unit 100 have been selected (step S189). If there is an unselected controller 200 among the controllers 200 connected to the main unit 100 (NO in step S189), the processor 101 selects one of the unselected controllers 200 (step S190). Then, the processing from step S185 onwards is executed.
[0256] If all controllers 200 connected to the main device 100 have been selected (YES in step S189), the processing from step S180 onwards is repeated.
[0257] 15 is a flowchart showing an example of the notification process (step S140) shown in FIG. 5. Referring to FIG. 15, the processor 101 specifies the controller 200 to which the time-series vibration instruction data group 114 passed from the game program 102P2 is to be output (S1401). In the process of step S1401, the processor 101 specifies the controller 200 to which the time-series vibration instruction data group 114 (or vibration instruction data 116) passed from the game program 102P2 but not yet transmitted is to be output. In other words, if there is vibration instruction data 116 that has not yet been transmitted to the output destination controller 200, the processor 101 specifies the controller 200 to which the vibration instruction data 116 is to be transmitted.
[0258] In step S1401, if there is no time-series vibration instruction data group 114 (or vibration instruction data 116) passed from the game program 102P2, the processing from step S1402 onwards may be skipped. In this way, when a vibration instruction from the game program 102P2 is given to any of the controllers 200, if the vibration of the vibration motor 206 in that controller 200 is limited, the vibration limitation may be notified. In other words, if a vibration instruction is not given from the game program 102P2, the vibration limitation may not be notified even if the vibration of the vibration motor 206 in any of the controllers 200 is limited.
[0259] Processor 101 determines whether any of the notification flags of controllers 200 to which the vibration instruction data identified in step S1401 is output is on (step S1402). If any of the notification flags of controllers 200 to which the vibration instruction data is output is on (YES in step S1402), processor 101 generates text to be used in a notification message based on the notification flag that is on (step S1403). At this time, different text is generated when internal temperature notification flag 124 or temperature sensor notification flag 125 is on and when remaining battery level notification flag 126 is on. In this way, processor 101 notifies the user that vibration of the vibration motor is restricted with different content when a first condition including a condition related to temperature is satisfied and when a second condition including a condition related to remaining battery level is satisfied.
[0260] Processor 101 identifies the identification information and model information of the identified output destination controller 200 and the player number assigned to the identified output destination controller 200, and generates an image object indicating the information in accordance with the text (step S1404). Processor 101 writes data for overlay displaying the image object to display queue 103B5 (step S1405).
[0261] In addition, if multiple notification flags are on for the identified output destination controller 200 (for example, both the battery remaining capacity limit flag 123 and the internal temperature notification flag 124 are on), data for overlay display may be generated based on one notification flag in accordance with a predetermined priority, or data for overlay display may be generated based on each of all notification flags that are on.
[0262] The processor 101, or an image processing circuit or image processor (not shown), performs overlay display based on the data written to the display queue 103B5.
[0263] Processor 101 turns off all notification flags of controller 200 of the identified output destination (step S1406). In the example of the notification flag update process shown in Fig. 14, the condition for updating the notification flag is that the restriction flag changes from off to on, so while the restriction flag remains on, the corresponding notification flag will not be turned on again. Therefore, after a notification of vibration restriction for the same reason has been given, it is possible to prevent a notification from being given again for the same reason.
[0264] Furthermore, even if a new vibration instruction is given from the game program 102P2 while the restriction on vibration of the vibration motor 206 continues, a second notification is suppressed, thereby reducing the possibility that the user will feel annoyed.
[0265] On the other hand, if the vibration of the vibration motor 206 is restricted again based on the estimated temperature, the measured temperature, the remaining battery power, or the like after the restriction on the vibration of the vibration motor 206 has been released, the restriction flag changes from off to on, and the corresponding notification flag also changes from off to on. Therefore, when a vibration instruction is given from the game program 102P2, the restriction on the vibration is notified again.
[0266] If the notification flag of any of the identified controllers 200 of the output destination is not on (NO in step S1402), the processes of steps S1403 to S1406 are skipped.
[0267] Regardless of the content of the notification process, the process from step S150 onwards shown in Figure 5 may be executed, or if vibration is restricted in the controller 200 to which the output is made, the transmission of the vibration instruction data itself may be stopped.
[0268] Fig. 16 is a schematic diagram showing a display example of the notification process (step S140) shown in Fig. 5. In Fig. 16, for example, a first user assigned player number "1" operates a left and right controller 200, and a second user assigned player number "2" operates one controller 200.
[0269] The game screen 250 shown in FIGS. 16(A) to 16(C) includes images generated by the game program 102P2 currently being executed.
[0270] 16(A), an image object 260 is displayed superimposed on the game screen 250. The image object 260 notifies, for example, the first user that the vibration of the vibration motor 206 of the controller 200 operated with the left hand is limited based on a temperature condition. The image object 260 includes, for example, text 262 indicating that vibration is limited and the reason for the vibration limitation, an icon 264 indicating the controller 200 whose vibration is limited, and an identification display 266 indicating the player number assigned to the controller 200. The icon 264 indicates identification information of the controller 200 whose vibration is limited. The icon 264 may be generated or selected based on the identification information of the controller 200 or model information of the controller 200.
[0271] In addition, the same text may be output when the vibration of vibration motor 206 is restricted based on the estimated temperature and when the vibration of vibration motor 206 is restricted based on the temperature measured by temperature sensor 211, or text that can distinguish between the two cases may be output.
[0272] 16(B), an image object 270 is displayed superimposed on the game screen 250. The image object 270 notifies, for example, the first user that the vibration of the vibration motor 206 in the controller 200 operated with the right hand is limited based on the remaining battery level. The image object 270 includes text 272, an icon 274 indicating the controller 200 whose vibration is limited, and an identification display 276 indicating the player number assigned to the controller 200.
[0273] 16(C), an image object 280 is displayed superimposed on the game screen 250. The image object 280 notifies, for example, the second user that the vibration of the vibration motor 206 in the controller 200 operated by the second user is restricted based on a temperature condition. The image object 280 includes, for example, text 282, an icon 284 indicating the controller 200 whose vibration is restricted, and an identification display 286 indicating the player number assigned to the controller 200.
[0274] As shown in FIGS. 16(A) to 16(C), the fact that the vibration of the vibration motor 206 is being restricted is notified along with the reason why the vibration of the vibration motor 206 is being restricted.
[0275] The image object may be erased after a predetermined time has elapsed, or may remain on until the user performs some operation.
[0276] 16(A) to 16(C) are merely examples, and the user may be notified in any display format. Furthermore, instead of or in addition to a display, the user may be notified using a sound or other actuator.
[0277] 16(A) to 16(C), an icon 264 indicating the identification information of the controller 200 is displayed, but the identification information of the controller 200 may also be an identification number, an identification name, a model name, or the like.
[0278] In the notification process, when the vibration restriction is lifted, the user may be notified that vibration has been lifted. In this case, the user may be notified that vibration has been lifted only when vibration instruction data is being transmitted from the main unit 100 to the controller 200, or may be notified that vibration has been lifted even if vibration instruction data is not being transmitted. Any method may be used to notify that vibration has been lifted.
[0279] [F. Variations] In the above description, an example of a process in which a game program generates vibration instruction data is shown as an example of an application program, but the application program is not limited to a game program, and any application program can generate vibration instruction data.
[0280] 1 shows an example of a configuration in which the main device 100 includes one processor 101, but the main device 100 may include multiple processors 101. Similarly, an example of a configuration in which the MCU 201 of the controller 200 includes one processor 202 is shown, but the MCU 201 may include multiple processors 101.
[0281] 1 shows an example configuration in which main device 100 includes one non-volatile memory 102 and one volatile memory 103, but main device 100 may include multiple non-volatile memories 102 and / or multiple volatile memories 103. Similarly, an example configuration in which MCU 201 of controller 200 includes one non-volatile memory 203 and one volatile memory 204 is shown, but MCU 201 may include multiple non-volatile memories 203 and / or volatile memories 204.
[0282] In the above description, an example of a configuration is shown in which processing is shared between processor 101 of main device 100 and MCU 201 (processor 202) of controller 200, but processing may also be performed by only processor 101 of main device 100 (or MCU 201 (processor 202) of controller 200).
[0283] Furthermore, the division of processing between the processor 101 of the main device 100 and the MCU 201 (processor 202) of the controller 200 is an example, and the processing may be divided arbitrarily. For example, the process of generating the control data 220 may be executed in the main device 100.
[0284] Furthermore, for example, when the controller 200 receives vibration instruction data while restricting the vibration of the vibration motor 206 (for example, when any one of the internal temperature restriction flag 221, the temperature sensor restriction flag 222, or the remaining battery capacity restriction flag 223 is on), the controller 200 may instruct the main unit 100 to execute notification processing. In other words, the controller 200 may determine whether to execute notification processing.
[0285] The term "program" includes source code, intermediate code, object code, native code, scripts, etc., and the form of the code is not limited. It may also be something that runs on an interpreter or emulator.
[0286] The program may be executed by one processor, or parts of the program may be executed by different processors. Also, the functions of the present embodiment may be realized by several separate programs, in which case the collection of the multiple programs can be said to be the program.
[0287] Each function of the present embodiment does not have to be realized by the processing of a processor alone, but may be realized by utilizing various functions of a computer (a computer configured with a main processor, memory, sub-processor, peripheral circuits, software such as firmware, and in some cases, an interpreter or emulator). For example, the present embodiment also includes a mode in which a processor executes a program to issue instructions to other processors or peripheral circuits, and ultimately the other processors or peripheral circuits execute each function.
[0288] Alternatively, the system may be an integrated system of the main device 100 and the controller 200. Note that this specification also includes, as a modified example, an embodiment in which the processing performed by a single processor in this embodiment is shared and performed by multiple processors in cooperation with each other.
[0289] The embodiments disclosed herein should be considered to be illustrative in all respects and not restrictive. The scope of the present invention is defined by the claims, not by the above description, and is intended to include all modifications within the meaning and scope of the claims. [Explanation of symbols]
[0290] 10 Game system, 100 Main unit, 101, 202 Processor, 102, 203 Non-volatile memory, 102P1, 203P System program, 102P2 Game program, 103, 204 Volatile memory, 103B1 Data area, 103B2, 204B4 Operation data area, 103B3, 204B1 Vibration instruction data area, 103B4, 204B5 Flag area, 103B5 Display queue, 104, 207 Communication interface, 105 Display unit, 106, 212 Battery, 107 Vibration file, 110, 114 Time series vibration instruction data group, 112, 116 Vibration instruction data, 120 Flag set, 121, 221 Internal temperature limit flag, 122, 222 Temperature sensor limit flag, 123, 223 Battery remaining limit flag, 124 Internal temperature notification flag, 125 temperature sensor notification flag, 126 battery remaining amount notification flag, 128 controller information, 200 controller, 204B2 control data area, 204B3 resistance value area, 205 amplifier, 206 vibration motor, 208 acceleration sensor, 209 gyro sensor, 210 operation switch, 211 temperature sensor, 220 control data, 250 game screen, 260, 270, 280 image object, 262, 272, 282 text, 264, 274, 284 icon, 266, 276, 286 identification display.
Claims
1. a driving means for driving a vibration motor in accordance with a vibration instruction from an application program; a determination means for determining whether the restriction is based on the first condition or the second condition; a limiting means for limiting vibration of the vibration motor when at least one of the first condition and the second condition is satisfied; an information processing system comprising a notification means for notifying a user that vibration of the vibration motor is restricted using different content depending on whether the first condition is satisfied or the second condition is satisfied.
2. the first condition includes a condition related to temperature; The information processing system according to claim 1 , wherein the second condition includes a condition related to a remaining battery charge.
3. 2. The information processing system according to claim 1, wherein the notification means issues the notification when the first condition or the second condition changes from an unsatisfied state to a satisfied state.
4. the notification means issues the notification when the first condition or the second condition changes from an unsatisfied state to a satisfied state, 3. The information processing system according to claim 2, wherein a second threshold value at which it is determined that the second condition is no longer satisfied is higher than a first threshold value at which it is determined that the second condition is satisfied.
5. The information processing system according to claim 1 , wherein when the first condition is satisfied, vibration of the vibration motor is limited for a predetermined time.
6. 2. The information processing system according to claim 1, wherein the notification means issues the notification when a vibration instruction is given from the application program.
7. The information processing system according to claim 1 , wherein the notification displays the content of the notification together with an image generated by the application program.
8. 7. The information processing system according to claim 6, wherein the notification means does not issue the notification even if a new vibration instruction is given from the application program while the restriction on vibration of the vibration motor continues.
9. 9. The information processing system according to claim 8, wherein the notification means performs the notification when a vibration instruction is given from the application program after at least one of the first condition or the second condition is satisfied and the restriction on vibration of the vibration motor is lifted, and then at least one of the first condition or the second condition is satisfied and the vibration of the vibration motor is restricted again.
10. the information processing system includes a main body device and a controller including the vibration motor; the controller determines whether the first condition is a restriction or the second condition is a restriction; the controller periodically transmits the result of the determination to the main body device; An information processing system according to any one of claims 1 to 9, wherein the main body device issues the notification based on at least one of the following cases: when the first condition changes from an unsatisfied state to an satisfied state, or when the second condition changes from an unsatisfied state to an satisfied state, based on the result of the judgment.
11. the information processing system includes a main unit and a plurality of controllers each including the vibration motor; each of the plurality of controllers determines whether the first condition is a restriction or the second condition is a restriction; the limiting means limits each of the plurality of controllers based on the determining means; the main body determines whether the notification is necessary for each of the plurality of controllers based on the determination results from each of the plurality of controllers; 10. The information processing system according to claim 1, wherein the notified information includes identification information of the controller on which the restriction is imposed.
12. the information processing system includes a plurality of controllers each including the vibration motor; the determining means determines whether each of the plurality of controllers is restricted by the first condition and the second condition; the limiting means limits each of the plurality of controllers based on the determining means; the vibration instruction from the application program includes identification information that designates an output destination controller, the notification means issues the notification when a vibration instruction is given from the application program specifying the controller on which the restriction has been applied, 10. The information processing system according to claim 1, wherein the notified information includes identification information of the controller on which the restriction is imposed.
13. A program configured to cause one or more computers to implement the information processing system according to any one of claims 1 to 9.
14. driving a vibration motor in accordance with a vibration instruction from an application program; determining a restriction due to a first condition and a restriction due to a second condition; limiting vibration of the vibration motor when at least one of the first condition or the second condition is satisfied; and notifying a user that vibration of the vibration motor is being limited along with a reason based on the determination.
Citation Information
Patent Citations
Vibration signal creation program, vibration signal creation system, vibration signal creation device, vibration signal creation method and data output program
JP2016202486A