gbadev.org forum archive

This is a read-only mirror of the content originally found on forum.gbadev.org (now offline), salvaged from Wayback machine copies. A new forum can be found here.

DS development > Rumble Pak

#59172 - Joat - Sun Oct 30, 2005 12:11 am

I've figured how to use and detect the Rumble Pak that comes with Metroid Prime pinball.

The device is dead simple: http://www.bottledlight.com/ds/index.php/Hardware/OptionPaks

However, it's also not compatible with the firmware alarm clock. Yep, the rumble option seen with misconfigured flash carts does NOT show up when the rumble pack is inserted, although the firmware show it as an option pak.

Also, it's crazy noisy at high speeds, and at low speeds, it doesn't rumble so much as tick. I've got a little demo that lets me adjust the rumble speed, maybe I'll alter it to play some music :D

Enjoy. Also, I've added the wifi information (with SgStair's permission) to the Wiki. It's pretty much a straight copy right now, with links to related registers on the wiki, but either Sgstair or I will be cleaning it up and more logically organizing it as time permits.
_________________
Joat
http://www.bottledlight.com

#59174 - strager - Sun Oct 30, 2005 12:20 am

Congradulations on the find! I'm sure many games and apps will use the rumble pack; I'm sure some of mine will. :)

If loopy (or whoever) can make the alarm "rumbleable" (haha), that'd be awsome. :D

Music, hehe. >:)

#59175 - Dwedit - Sun Oct 30, 2005 12:28 am

Is there any information about the Wario Ware Twisted rumble feature?
_________________
"We are merely sprites that dance at the beck and call of our button pressing overlord."

#59178 - Joat - Sun Oct 30, 2005 1:14 am

Here is a demo with source to use the pak: http://www.bottledlight.com/ds/demos/rumble.zip

Note: This is *not* a good way to use it, this is just my testing app cleaned up. It would be much better to setup a timer interrupt that writes to it, and just vary the latch value and enable/disable it.

Dwedit, what Wario Ware twisted feature? I don't have the GBA one, just the DS wario ware touched! one.
_________________
Joat
http://www.bottledlight.com

#59180 - lambi1982 - Sun Oct 30, 2005 1:29 am

I opened the rumble pack the other day, and based on the look of the "rumble device" inside the cart, it does not seem to be a motor. it looks and feels more like a new form of rumble pak a vibrating diaphram
it uses low voltage and allows for a tap feel more that a vibration,,, I will look more into it, tough to see the inerts, it is enclosed.

could also be a solenoid. a mini one
_________________
Who, Me?

#59213 - Sebbo - Sun Oct 30, 2005 1:08 pm

makes sense considering its packaged with a pinball game, designed to kick towards/away from the player rather than side-to-side/up and down
_________________
Here's some ideas I have for when I know enough to act on them, or for others to have a look at when they're bored: www.wayne.sebbens.com/ds_ideas.htm

#59215 - falcon!!! - Sun Oct 30, 2005 1:24 pm

sorry guys but i didnt get how can u play some Rumble pack demo if in the gba slot ther's already the rumble Card...Where do u suppose to put the demo O.o ?

#59217 - Raziel Fireeye - Sun Oct 30, 2005 1:38 pm

Maybe via Wifime , same like u play DS oficial demos.

#59224 - JaJa - Sun Oct 30, 2005 2:48 pm

With wifime and GBAMP the whole file is put in RAM (unless it calls the GBAMP for CF access). So you can remove it and still play :)
Then insert the Rumble Pack.

#59244 - mastertop101 - Sun Oct 30, 2005 6:26 pm

you can't put a gba cartridge in a ds when it's turned on (the ds will reboot) so forget gba mp ;)

#59245 - Dwedit - Sun Oct 30, 2005 6:28 pm

What are you talking about? I've ejected cartridges from a running DS before with no reboot.
_________________
"We are merely sprites that dance at the beck and call of our button pressing overlord."

#59246 - mastertop101 - Sun Oct 30, 2005 6:28 pm

you can eject it, but it you reput it, it will turn off.. you can try, you'll see

#59247 - CubeGuy - Sun Oct 30, 2005 6:43 pm

try doing it with most games when the DS is closed. It works fine.
_________________
It's 'CubeGuy.' One word. No space.

#59248 - Joat - Sun Oct 30, 2005 6:49 pm

It depends on the cartridge and the running code, there are two issues: If the thing glitches as it gets pulled out, it'll turn off no matter what is on the cart (like an EZFA flash cart, I suspect it's shorting).

If the game has a cart-removal irq installed (many commercial games), then it'll fire when the cart gets removed, and the game will lock itself up in internal ram to prevent damaging it's save games.

If the game has neither of these issues (and the GBA MP and rumble pak are *both* in this category), then you can 'happily' swap them (it's still probably not a great idea to do it really often with something like the MP, which can be glitchy all on its own, from a clean reboot, but honestly, there is nothing in the rumble pak to damage).

But yah, for reference, I used WMB to develop the test app.
_________________
Joat
http://www.bottledlight.com

#59254 - lambi1982 - Sun Oct 30, 2005 7:38 pm

okay, now I know exactly what it uses..... it is a Short-vibration Feedback Device FORCEREACTOR. made by a japanese company ALPS

http://www3.alps.co.jp/indexnpv_AF-e.html here is a flash movie on the device.

rumble image [Images not permitted - Click here to view it]

Inerts (ALPS Forcereactor) [Images not permitted - Click here to view it]

High-speed response and versatile vibration modes contribute to accurate recognition of inputs and the universal design.

Ratings voltage : 3.3~5V
Peak current : 120mA
Driving current : 60mA
Exciting force
*Set in a case of 100g : 18.6m/s2(1.9G)*
Size : 7.5?5?35mm
[url][/url]
_________________
Who, Me?

#59268 - knight0fdragon - Sun Oct 30, 2005 9:43 pm

could we get a pic of the other side, from the looks of it it is only attached to the outer pins, perhaps theres some kind of controller soldered into the other side?

#59271 - lambi1982 - Sun Oct 30, 2005 10:15 pm

no, there is nothing on the other side, just a blank board

Backside [Images not permitted - Click here to view it]

Kinda funny when you hook a PC speaker to the wires ;)

the Forcereactor has nothing under it either, it is just glued to the cart. it vibrates the same when sound is applied. works off of frequencies.
_________________
Who, Me?

#59272 - knight0fdragon - Sun Oct 30, 2005 10:23 pm

so it looks like it would be easy to mod to any flash cart with size permitting if you could buy that part, I cant find it anywhere,
not to sound anal or persistent, but could a closer shot of the PCB be made, it seems there is a track for the pins and id like to be sure,


actually lookin at it again i dont think there is a track for the rumble, it s something else

#59276 - lambi1982 - Sun Oct 30, 2005 10:55 pm

Close-up [Images not permitted - Click here to view it]


kinda funny, but I checked the continuity of both red and black wires and they lead back to pin 1, both of them, no conncetion to any other pins.

I didnt check anything else, just the pos and neg wire.
_________________
Who, Me?

#59282 - knight0fdragon - Mon Oct 31, 2005 1:19 am

i would check that again my friend, black goes to 1 and red goes to 32

#59285 - lambi1982 - Mon Oct 31, 2005 2:54 am

my friend, they both go to pin 1. I will make a video of it if i have to.

I tested over and over again to be sure. It may look one way but it test another.

Im not saying that is how it is traced on the board, but I am saying there is continuity between both red and black, and both to pin 1.

base on what the board says red= + and black is FR1 not negative.

to me FR1 would be the frequency. but I could be wrong ;)

I havent look into it too much yet, just glanced inside, and tested som spots, but not much more. I could tell from the begining that it wasnt a motor, just wasnt the same feel as other rumble paks.
Its funny cause the day I got it I told the guy at gamestop that I thought they might have had a speaker like component in the pak.
_________________
Who, Me?

#59286 - natrium42 - Mon Oct 31, 2005 3:39 am

Of course there is continuity: it's a coil :)
Measure resistance in Ohms and not in kOhms or MOhms.
_________________
www.natrium42.com

#59289 - tepples - Mon Oct 31, 2005 3:55 am

And a coil will act as an inductor. Inductors have a resistance that's near-zero at near-DC (which your ohmmeter probably tests) but which increases with frequency. Does your meter support measuring inductance in any way?
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.

#59294 - knight0fdragon - Mon Oct 31, 2005 6:01 am

it seems a bit odd that both would go to pin 1 since the current would need to be grounded somehow, test it on pin 31 and 32, you may get the some results also

#59373 - lambi1982 - Tue Nov 01, 2005 12:34 am

well, when checking resistance on the board, I got 27 ohms on
pin 1 ---> fr1, and 3.15 M ohms from pin 31 ---> (+) red wire.

27 ohms across the Forcereactor.
While running the Rumble demo I was checking voltage at the Forcereactor and the slower it goes the higher the voltage, 3.2V when rate was set to 1024 and 1.2v when it was set to zero.

AR duo come in handy when checking GBA carts when active in the DS, allows access to atleased the top side of the cart.

Metroid pinball voltage is at 2.2v.

one other thing I noticed was, when playing Metroid pinball, the rumble pak hits harder that using the rumble demo.

when looking at the board, the chip on the top left has QF5983 printed on it, next to it ( to the right) has W74, next one had nothing, and the diode had 1V.
_________________
Who, Me?

#60518 - Phaethon - Fri Nov 11, 2005 10:07 am

So, with everything i had read here: Is it possible to construct a Rumble-Function into a M3 Perfect CF Adapter? Can i use the Pins from GBA-Slot for the Rumble-Feature without getting a bricked M3 ?

#60555 - lambi1982 - Fri Nov 11, 2005 7:11 pm

It should be possible, the only thing is that it would have to have a switch and whatever chip ( signal or voltage) tells the DS it has the Option pak enabled. M3 as far as I know does not come up as an Option Pak..

I just wonder if this will end up being a metroid pinball option pak, or will it ever be used in future games??????

I would say dont even bother :(
_________________
Who, Me?

#60557 - Phaethon - Fri Nov 11, 2005 7:18 pm

Thats right. The XG Card was shown as an Option Pak, but M3 is shown as a GBA-Game. But, theoretically it is possible? Maybe when the Rumble-Pak Board is combined with the M3, maybe about parallel-soldering the pins? I?m a Hardware-Newbee, so don?t laugh...

#60559 - Joat - Fri Nov 11, 2005 7:38 pm

Not really feasible, for a couple of reasons.

First is the only way to detect the rumble pak is to have *nothing else* on the bus, which means a way of totally unmapping ROM / RAM (a supercard / m3 *might* be able to do this, since they can map in RAM instead of ROM or CF registers, and possibly are able to totally unmap everything).

Second is you need the power reg circuit and latch, plus an additional enable if using a cart with RAM/CF, not just the actuator soldered to AD1 and Vcc. The enable is required above and beyond the rest to prevent the rumble pak from going bezerk when you're writing to the RAM/CF.

Thus, you could pull off a homebrew rumble pak using the circuit (but why you'd want to is beyond me, cart swapping is much easier), and write software that supports it, since you can control how it's accessed, but rom lamers are out of luck (which, not to be rude, is how I interpret the original poster's intentions) without some extensive hacking of both hardware (add the circuit) and software (un-mapping the cart won't work, doh, that removes the way the patcher streams the game, so you'd have to tie the rumble to an extra pin somewhere and patch both the cart detection code and rumble writing code).
_________________
Joat
http://www.bottledlight.com

#60624 - lambi1982 - Sun Nov 13, 2005 2:01 am

And there is your answer folks :)
_________________
Who, Me?

#61132 - CubeGuy - Thu Nov 17, 2005 4:37 pm

Is anyone planning on coding an alarm clock that makes use of the pak?
_________________
It's 'CubeGuy.' One word. No space.

#155228 - a128 - Sat Apr 26, 2008 9:45 pm

Strange my M3Real rumble pak does not rumble with the libnds code.

#155230 - Maxxie - Sat Apr 26, 2008 9:57 pm

The SC Rumble Lite neither.

Have asked them for info how to operate the rumble, but they didn't care to answer ... quite bad homebrew support there, and most of the q&a over there deal with the dark side.

#155232 - a128 - Sat Apr 26, 2008 11:01 pm

Did more tests with the M3 Real Rumble pak . It works ....but the detection scheme does not. So just using
Code:


//from Joat
#define RUMBLE_PAK (*(vuint16 *)0x08000000)

//////////////////////////////////////////////////////////////////////


// Assuming you have the cartridge ownership set to the current CPU
void _setRumble(bool position) {
  RUMBLE_PAK = position ? 2 : 0;
}

 sysSetBusOwners(BUS_OWNER_ARM9, BUS_OWNER_ARM9);

int sometime=30;
int i=10000; //or whatever
while(sometime--){
_setRumble(1);
while(i--){};
_setRumble(0);
}


works.


Last edited by a128 on Wed Apr 30, 2008 9:08 am; edited 1 time in total

#155371 - a128 - Mon Apr 28, 2008 9:37 pm

http://www.freewebtown.com/festival2005/rumbletest.zip

I did a short rumble demo, using timer3

It shows 4 different intensitys..so the demo just steps thru these modes

I noticed that the intensitys varies not only how frequently you write to the Rumble pak...but also the duration of the writings affects the intensity

#156303 - Maxxie - Thu May 08, 2008 8:23 pm

Just a litle update on the SC Rumble:

If the rumble mode is selected (8, for setting the mose see the DLDI/IO sources) you can enable rumbling (continously by a motor) by setting bit1 (0x0002) at 0x0800000E, and disable rumbling again by unsetting that bit.

The bit is write only, if read, it allways returns 0.



Btw, i wonder if you could do the active rumbling (where you need to switch between two states like on the m3 to rumble) can be done by DMAing from a volatile address to remove make make it rumble without further CPU interaction.

#162784 - a128 - Fri Sep 12, 2008 9:48 pm

for some strange reasons the libnds rumble detection does not work.....

does anyone have a detection scheme that works?!

this is not ok

Code:
// this is very unlikely)
bool isRumbleInserted(void) {
  uint16 four[4];

  sysSetCartOwner(true);

  // First, check for 0x96 to see if it's a GBA game
  if (GBA_HEADER.is96h == 0x96) {
    return false;
  } else {

///////this is not ok ?!?!?!!!!!!!!!!!
    // Now check to see if it's true open bus, or if D1 is pulled low
    four[0] = GBA_BUS[0] & 0xFF;
    four[1] = GBA_BUS[1] & 0xFF;
    four[2] = GBA_BUS[2] & 0xFF;
    four[3] = GBA_BUS[3] & 0xFF;

    return (four[0] == 0x00) && (four[2] == 0x00) && (four[1] == 0x01) && (four[3] == 0x01);
  }
}


I guessed my nds is broken....but running a rumble game...the original rumble card is detected!!!

#162813 - Filb - Sat Sep 13, 2008 1:42 pm

Is it possible to use the rumble feature of the game called Screw Breaker? It's the only rumble cartridge I have.

#163342 - knight0fdragon - Tue Sep 30, 2008 3:14 am

possible yes, but without the actual cart, it would be hard to code. One thing you could do though, is take pictures of both sides of the circuit board, and we can work from there
_________________
http://www.myspace.com/knight0fdragonds

MK DS FC: Dragon 330772 075464
AC WW FC: Anthony SamsClub 1933-3433-9458
MPFH: Dragon 0215 4231 1206

#165062 - Dark Knight ez - Mon Dec 08, 2008 3:45 pm

Necromancer Ez, here.

a128 was right. Some official rumble paks don't get detected properly.
One test result showed the following values with official rumble inserted.

four[0] = GBA_BUS[0] & 0xFF; // reads 252 == b11111100
four[1] = GBA_BUS[1] & 0xFF; // reads 253 == b11111101
four[2] = GBA_BUS[2] & 0xFF; // reads 248 == b11111000
four[3] = GBA_BUS[3] & 0xFF; // reads 249 == b11111001

Meaning that at most the last two bits are common for official rumble paks. Perhaps three bits in the case of four[2] and four[3]. Of course, considering this is a test with just one "different" official rumble pak, I can't guarantee cutting it off at the 2 lower bits works in all situations.
_________________
AmplituDS website

#168671 - Lazy1 - Fri May 15, 2009 12:07 am

I got an M3 rumble/memory thing yesterday and played around with it a bit.
In order for it to do anything the cart had to be removed/re inserted and setting the rumble to 1 would keep it going continuously until it was set to 0.

It's also very, very loud and causes the battery led to turn red and the screens to dim while it's rumbling.