KallistiOS
##version##
|
Definitions for using the Puru Puru (Jump) Pack. More...
Go to the source code of this file.
Data Structures | |
struct | purupuru_effect |
Effect generation structure. More... | |
Macros | |
#define | PURUPURU_EFFECT2_UINTENSITY(x) (x << 4) |
Upper-nibble of effect2 convenience macro. More... | |
#define | PURUPURU_EFFECT2_LINTENSITY(x) (x) |
Lower-nibble of effect2 convenience macro. More... | |
#define | PURUPURU_EFFECT2_DECAY (8 << 4) |
Give a decay effect to the rumble on some packs. More... | |
#define | PURUPURU_EFFECT2_PULSE (8) |
Give a pulse effect to the rumble. More... | |
#define | PURUPURU_EFFECT1_INTENSITY(x) (x << 4) |
Upper nibble of effect1 convenience macro. More... | |
#define | PURUPURU_EFFECT1_PULSE (8 << 4) |
Give a pulse effect to the rumble. More... | |
#define | PURUPURU_EFFECT1_POWERSAVE (15) |
Ignore this command. More... | |
#define | PURUPURU_SPECIAL_MOTOR1 (1 << 4) |
Select motor #1. More... | |
#define | PURUPURU_SPECIAL_MOTOR2 (1 << 7) |
Select motor #2. More... | |
#define | PURUPURU_SPECIAL_PULSE (1) |
Yet another pulse effect. More... | |
Typedefs | |
typedef struct purupuru_effect | purupuru_effect_t |
Effect generation structure. More... | |
Functions | |
int | purupuru_rumble (maple_device_t *dev, purupuru_effect_t *effect) |
Send an effect to a jump pack. More... | |
int | purupuru_rumble_raw (maple_device_t *dev, uint32 effect) |
Send a raw effect to a jump pack. More... | |
Definitions for using the Puru Puru (Jump) Pack.
This file contains the definitions needed to access maple jump pack devices. Puru Puru was Sega's internal name for the device, hence why its referred to in this way here.
This driver is largely based off of information provided by Kamjin on the DCEmulation forums. See http://dcemulation.org/phpBB/viewtopic.php?f=29&t=48462 if you're interested in the original documentation.
Also, its important to note that not all Jump Packs are created equal. Some of the stuff in here does not do what it seems like it should on many devices. The "decay" setting, for instance, does not seem to work on Sega Puru Purus, and actually makes most (if not all) effects do absolutely nothing. Basically, its all a big guess-and-test game to get things to work the way you might like. Don't be surprised if you manage to set up something that does absolutely nothing on the first try.
#define PURUPURU_EFFECT1_INTENSITY | ( | x | ) | (x << 4) |
Upper nibble of effect1 convenience macro.
This macro is for setting the upper nibble of the effect1 field of the purupuru_effect_t. This value works with the lower nibble of the effect2 field to increase the intensity of the rumble effect. Valid values are 0-7.
#define PURUPURU_EFFECT1_POWERSAVE (15) |
Ignore this command.
Most jump packs will ignore commands with this set in effect1, apparently.
#define PURUPURU_EFFECT1_PULSE (8 << 4) |
Give a pulse effect to the rumble.
This probably should be used with PURUPURU_EFFECT2_PULSE as well.
#define PURUPURU_EFFECT2_DECAY (8 << 4) |
Give a decay effect to the rumble on some packs.
#define PURUPURU_EFFECT2_LINTENSITY | ( | x | ) | (x) |
Lower-nibble of effect2 convenience macro.
This macro is for setting the lower nibble of the effect2 field of the purupuru_effect_t. This value works with the upper nibble of the effect1 field to increase the intensity of the rumble effect. Valid values are 0-7.
#define PURUPURU_EFFECT2_PULSE (8) |
Give a pulse effect to the rumble.
This probably should be used with PURUPURU_EFFECT1_PULSE as well.
#define PURUPURU_EFFECT2_UINTENSITY | ( | x | ) | (x << 4) |
Upper-nibble of effect2 convenience macro.
This macro is for setting the upper nibble of the effect2 field of the purupuru_effect_t. This apparently lowers the rumble's intensity somewhat. Valid values are 0-7.
#define PURUPURU_SPECIAL_MOTOR1 (1 << 4) |
Select motor #1.
Most jump packs only have one motor, but on things that do have more than one motor (like PS1->Dreamcast controller adapters that support rumble), this selects the first motor.
#define PURUPURU_SPECIAL_MOTOR2 (1 << 7) |
Select motor #2.
Most jump packs only have one motor, but on things that do have more than one motor (like PS1->Dreamcast controller adapters that support rumble), this selects the second motor.
#define PURUPURU_SPECIAL_PULSE (1) |
Yet another pulse effect.
This supposedly creates a sharp pulse effect.
typedef struct purupuru_effect purupuru_effect_t |
Effect generation structure.
This structure is used for convenience to send an effect to the jump pack. This, along with the various macros in this file can give a slightly better idea of the effect being generated than using the raw values.
int purupuru_rumble | ( | maple_device_t * | dev, |
purupuru_effect_t * | effect | ||
) |
Send an effect to a jump pack.
This function sends an effect created with the purupuru_effect_t structure to a jump pack to be executed.
dev | The device to send the command to. |
effect | The effect to send. |
MAPLE_EOK | On success. |
MAPLE_EAGAIN | If the command couldn't be sent. Try again later. |
MAPLE_ETIMEOUT | If the command timed out while blocking. |
int purupuru_rumble_raw | ( | maple_device_t * | dev, |
uint32 | effect | ||
) |
Send a raw effect to a jump pack.
This function sends an effect to a jump pack to be executed. This is for if you (for some reason) don't want to use purupuru_effect_t to build the effect up.
dev | The device to send the command to. |
effect | The effect to send. |
MAPLE_EOK | On success. |
MAPLE_EAGAIN | If the command couldn't be sent. Try again later. |
MAPLE_ETIMEOUT | If the command timed out while blocking. |