Jump pack peripheral

From dreamcast.wiki
Jump to navigation Jump to search

The jump pack acts as a sub-peripheral device on the Maple Bus.

Vibration

The "set condition" command (0x0E) with vibration function code and 1 condition word is used to activate vibration.

Function Definition

The function definition may be found in the peripheral's device info packet.

Byte 0 (LSB) Byte 1 Byte 2 Byte 3 (MSB)
0 0 Number of concurrent sources 1 to 15 (normally 1) Number of vibration sources 1 to 15 (normally 1)

Condition Word

The following describes the layout of the condition word in the vibration "set condition" command. Up to 15 words may be specified in order to set every vibration source as specified in the function definition.

Byte 0 (LSB) Byte 1 Byte 2 Byte 3 (MSB)
Vibration Cycles Pulsation Frequency Inclination Direction and Power Vibration Mode

Vibration Cycles (Byte 0)

This value represents how many pulsation cycles to execute per inclination intensity. The number of cycles to execute is 1 more than the value specified. With inclination set, this value can be set to a maximum of 255. This value must be 0 when no inclination is set, so only a single cycle will execute in that case.*

*The Performance TremorPak allows this value to be set to up to 255 when no inclination is set, but the OEM pack enforces this limitation.

Pulsation Frequency (Byte 1)

This value sets the frequency at which the motor pulsates. The pulsation is smooth - feels like a sine wave pulsation. At values near the maximum, the pulsation is not very noticeable at all.

The valid range for this value is between 7 and 59. The extended device info from a vibration pack was very helpful in determining the appropriate frequency based on this value:

   Puru Puru Pack
   Produced By or Under License From SEGA ENTERPRISES,LTD.
   Version 1.000,1998/11/10,315-6211-AH   ,Vibration Motor:1 , Fm:4 - 30Hz ,Pow:7

Specifically, the text "Fm:4 - 30Hz". This correlates to "(value + 1) / 2" and matches what was observed in testing.

Inclination Direction and Power (Byte 2)

  • For the following, the value of P may be in the range [1,7] where 1 is low power and 7 is high power
    • 0xP0: single stable vibration (i.e. no inclination) at power P
    • 0xP8: positive inclination (ramp up) from power P up to max
    • 0x8P: negative inclination (ramp down) from power P down to min
  • A value of 0x00, 0x08, or 0x80 immediately stops the currently executing vibration sequence
    • Continuous vibration mode in mode byte must be disabled
    • Vibration source in mode byte must still be set

There is a very noticeable change from one vibration power to the next when inclination is used and a long cycle period is selected.

Vibration Mode (Byte 3)

This byte must be set to the following.

Bit 7
(MSb)
Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
(LSb)
vibration source 1 to 15 (usually 1)
0 is invalid
0 0 0 continuous vibration mode
(1: enable)