Jump pack peripheral

From dreamcast.wiki
Revision as of 07:33, 1 January 2023 by Unknown user (talk)
Jump to navigation Jump to search

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

NOTE: Some information here is misleading and/or incomplete

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)
Number of vibration sources (1 to 15) Number of concurrent sources (1 to 15) 0 0

Condition Word

The following describes the layout of the condition word in the vibration "set condition" command.

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 X may be in the range [1,7] where 1 is low power and 7 is high power
    • 0xX0: single stable vibration (i.e. no inclination) at power X
    • 0xX8: positive inclination (ramp up) from power X up to max
    • 0x8X: negative inclination (ramp down) from power X down to min
  • A value of 0x00, 0x08, or 0x80 immediately stops the currently executing vibration sequence (continuous vibration mode must be disabled)

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)