Jump to content
IGNORED

Any interest in NES ROB homebrews?


godslabrat

Recommended Posts

On 5/24/2018 at 5:07 PM, TheKitty said:

Folks, I used your command code research in actually building a simple, low cost R.O.B controller. The codes were spot on, the magic was the timing of the bits.

 

It's all explained in a new guide https://learn.adafruit.com/controlling-a-classic-nintendo-r-o-b-robot-using-circuit-playground-express

 

Hopefully this info will help you and many others in controlling their ROBs without modification or a TV of any type.

 

Long live R.O.B. The Kitty

 

https://blog.adafruit.com/2018/05/25/new-guide-controlling-a-classic-nintendo-r-o-b-robot-circuitplaygroundexpress-circuitpython-nintendoamerica-robots/

 

On 1/16/2016 at 11:52 AM, ta0 said:

I got a Rob and Gyromite.

I used a high speed camera (480 fps or 8x the TV rate) to look at the actual output from the TV. I got the same codes as Tursi. The instructions are given one per frame, at 60 fps. There is no black frame after outputing the instruction. The test sequence that flashes the LED on the head is: 00000 000101 1101011 11111.

 

I would think that having the correct timing is pretty important (although I would guess that R.O.B. still works with 50Hz TV systems from other countries).

 

I think the problem with a digital TV, even if it has a 60 Hz refresh rate, is that it may think that consecutive analog frames are interlaced and tries to de-interlace them, what mixes 0 and 1 frames.

 

By the way, I also looked at Duck Hunt: when you press the trigger you get a black frame, next one that has only a white square on the duck, next back to the normal display. If you have two ducks: black frame, frame with white square for the first duck, frame with white square for the second duck, again frame with white square for the second duck, resume normal display. Interestingly, if I route the TV signal through a VCR, the increased delay is enough to stop the gun from detecting the ducks.

Has anyone been able to replicate the "Test" screen behavior?  I have adapted the .py code @TheKitty wrote to add the finer 1 Up/Down motions (from Stack-Up) in addition to the larger 2 Up/Down motions (from Gyromite) originally in the code and R.O.B. responds to all commands perfectly, but I can't get the Test function to work as it did in the original game.  I have tried what @TheKitty came up with and also the 00000 000101 1101011 11111 sequence that @ta0 determined, but they just turn the head LED solid on.  However, the original Test function made the LED blink, as shown about 10 seconds into this YouTube video I found (the rest of the video isn't particularly interesting):

 

 

Did you codes the test head LED blinking into your Atari ROM @Pioneer4x4?  Anyone else have any suggestions?  Another question I thought of: I have always assumed Test mode was the same for Stack-Up and Gyromite but does anyone know definitively if that is true?

Edited by astro187
Link to comment
Share on other sites

9 hours ago, astro187 said:

...Did you codes the test head LED blinking into your Atari ROM @Pioneer4x4?  Anyone else have any suggestions?  Another question I thought of: I have always assumed Test mode was the same for Stack-Up and Gyromite but does anyone know definitively if that is true?

I remember I did a "reset" code.  From sketchy memory it went all the way up and to one side then all the way down to the other, hmm, let me look at my documents.

Link to comment
Share on other sites

4 hours ago, Pioneer4x4 said:

I remember I did a "reset" code.  From sketchy memory it went all the way up and to one side then all the way down to the other, hmm, let me look at my documents.

This is what I did,  I wonder if the "test" is just synched flashes that the LED shows, does it flash with any code, I forget.  I need to review my video.   It looks like the LED goes on when waiting, and off/flickering when receiving?   Also, Reset looks like it goes all the way to top right, then centers at the top.

 

Edited by Pioneer4x4
  • Like 1
Link to comment
Share on other sites

  • 1 month later...
  • 1 month later...

Hi all,

 

Probably most of you already know this but our little R.O.B. goggles sides project got some attention, it was picked up by Gizmodo and Hackaday. Because of that we were contacted by some R.O.B. owners that wanted to try the goggles, so we built a little batch for them. It will likely be a one time thing since it is a labor of love, we put up a Tindie listing to give a chance to reserve the goggles to the most enthusiast folks, the price is really symbolic and will help covering the cost of parts, we plan to make only 20 goggles available and after one day or so I think there are only 2 or 3 left by now.  

 

We're building these through the holidays and you can follow us on twitter @croxel for updates, we will start shipping Jan 6th.

 

Here's the R.O.B. Goggles Tindie page 

https://www.tindie.com/products/18935/

 

Happy holidays!

 

  • Like 1
Link to comment
Share on other sites

1 hour ago, AlbertCX said:

Hi all,

 

Probably most of you already know this but our little R.O.B. goggles sides project got some attention, it was picked up by Gizmodo and Hackaday. Because of that we were contacted by some R.O.B. owners that wanted to try the goggles, so we built a little batch for them. It will likely be a one time thing since it is a labor of love, we put up a Tindie listing to give a chance to reserve the goggles to the most enthusiast folks, the price is really symbolic and will help covering the cost of parts, we plan to make only 20 goggles available and after one day or so I think there are only 2 or 3 left by now.  

 

We're building these through the holidays and you can follow us on twitter @croxel for updates, we will start shipping Jan 6th.

 

Here's the R.O.B. Goggles Tindie page 

https://www.tindie.com/products/18935/

 

Happy holidays!

 

For a low production item, price is decent I guess.  In a way I'm glad you don't have Android working at this time, so I don't have to decide how much I want one.  Looks like a neat idea and worked out good.   If you got 2 together, you could do a slow motion Rock'em Sock'em R.O.B.ots with them.

Link to comment
Share on other sites

  • 7 months later...

Funny I'm seeing this thread just now.  WAY back around 2006, I had fired up NESticle with Gyromite and went to the Direct screen, set the virtual framerate to 1, and recorded the sequence of screen flashes by "writing" them in binary bits into my PDA at the time.  It bricked a couple years later, and the Sync software was on a HDD that has since died, but I could easily download NESticle again and start the process over again.  I had recorded ten frames' worth of data.

 

My original plan was to write an Intellivision game that used the ROB (!), being an Intellivision indie developer myself.  The Stack-Up pieces can easily be reproduced using an over-the-counter 3D-printer, so I thought I could do something like that.  It was only a couple years ago that I finally became proficient at writing games at 60FPS, since the native hardware was designed for 20FPS animation.

Link to comment
Share on other sites

  • 5 months later...
On 8/20/2020 at 8:02 AM, Zendocon said:

I could easily download NESticle again and start the process over again.

I am particularly interested in learning how to turn the LED off, as shown in the video (shared above) using the Gyromite test screen.

 

I'm currently writing an open-source library to control R.O.B. using an Arduino, and I would like to incorporate the LED off command.

 

The source is available on GitHub: https://github.com/zfields/nes-rob

Also, it's already available in the Arduino Library Manager under the name NesRob.

Link to comment
Share on other sites

2 hours ago, zfields said:

I am particularly interested in learning how to turn the LED off, as shown in the video (shared above) using the Gyromite test screen.

 

I'm currently writing an open-source library to control R.O.B. using an Arduino, and I would like to incorporate the LED off command.

 

The source is available on GitHub: https://github.com/zfields/nes-rob

Also, it's already available in the Arduino Library Manager under the name NesRob.

I don't understand what you mean.  I didn't see anything on that turning it off.  The LED goes off automatically when moving IIRC, so when it is on, you know it is ready for another command.

Link to comment
Share on other sites

3 hours ago, Pioneer4x4 said:

I didn't see anything on that turning it off.  The LED goes off automatically when moving IIRC

Did you watch the video I linked? R.O.B.'s light is flashing on and off during the TEST portion, and as far as I can tell he is not moving.

 

I may be mistaken, but if not I would like to know the off command. It seems bizarre they would only have an instruction to turn the LED on but not off.

Link to comment
Share on other sites

11 hours ago, Tursi said:

"Test" makes it blink, IIRC, it doesn't send separate on and off commands.

 

That hasn't been my experience so far. Maybe I'm doing something wrong? Do I need to send TEST repeatedly at a fixed time interval to see the blinking behavior?

 

I've attached an oscilloscope capture from R.O.B.s spinal cord. In the picture, I'm showing the samples collected from the S (signal) and L (LED) lines.

 

You can see the test TEST signal on the S line, but the L line stays at ~2V and never turns off (drops to ground (0V)).

 

oscilloscope-rob-test.thumb.png.b92394def19f76e43ff07fe84eaf27b3.png

The first pulse is the 1 in the preamble `00010`, and the next pulses represent the 1's in (`11101011`).


If R.O.B. was turned off and I turn him on, his motors will run through the calibration sequence, and the L line will be off (0V). Then once I run TEST, the L line will turn on (2V). Furthermore, if I run any command (other than TEST), the LED will turn off while the motors are engaged, then turn back on immediately following (example below).

 

oscilloscope-rob-left.thumb.png.b4340bf708ec4af66a8774a6729588c4.png

LED turns off (L line drops to 0V) while motors operate during arms left command (`10111010`).

 

In short, I have not experienced the TEST command toggling the LED; only turning it ON if it was previously OFF.

 

> DISCLAIMER: I'm using an LED to send light directly into R.O.B.'s left eye, not an old CRT television and hacked ROM.

Link to comment
Share on other sites

Well... you can see in the video that the test signal is sent continuously, and that it's the only signal sent continuously. But whether timing matters, my notes don't say.

 

Why not do like the original tests - just step through the frames via an emulator and see what's actually happening on that screen? When I did it, I just used a breakpoint on writes to the background color register - if you do that, it shouldn't take terribly long to see if there's an additional signal there.

 

Link to comment
Share on other sites

5 hours ago, Tursi said:

Why not do like the original tests - just step through the frames via an emulator and see what's actually happening on that screen?

That is where I started. @Zendocon offered to do just that, and I was trying to take him up on it.

 

FWIW, I don't have an emulator, ROM's or anything of the sort. I just have a R.O.B. (purchased from a flea market), and I have used this thread and the Adafruit guide to get my library up and running. I'm trying to reverse engineer him, keep all my notes, and share them with anyone who attempts to follow in my footsteps.

5 hours ago, Tursi said:

you can see in the video that the test signal is sent continuously, and that it's the only signal sent continuously.

I don't have any way to slow down the frames of the video to confirm this, so it was not as obvious to me. Are you just assuming it only sends one signal (0xEB), or did you actually slow down the video and confirm this?

Link to comment
Share on other sites

4 hours ago, zfields said:

I don't have any way to slow down the frames of the video to confirm this, so it was not as obvious to me. Are you just assuming it only sends one signal (0xEB), or did you actually slow down the video and confirm this?

 

I'm the first guy (in this thread at least) to single-step an emulator and publish some of the codes. ;) I also owned a ROB when it was brand new, and have many hours of actually playing with it, so I remember how it works.

 

 @x87bliss later went through and formatted the results (and filled in the missing ones!), and made it all make sense.

 

You won't be able to tell from the video, the pulses happen at 60hz and it's unlikely the video accurately captures every single frame. 

 

"I don't have an emulator" doesn't really mean much - you can fix that in minutes regardless of your OS. Neither one of us actually got around to proving how TEST works! :)

 

That said, @ta0 already came up with a longer sequence for test using a high speed camera - maybe this includes both on and off...

 

 

You've got me thinking, though, I do have a working ROB again. What kind of LED are you using there? Red, green, anything special? :)

 

Link to comment
Share on other sites

10 hours ago, Tursi said:

What kind of LED are you using there? Red, green, anything special? :)

I am using WHITE, but the color doesn't seem to matter, just so long as it is bright. If you have any Arduino compatible board, then you can use Arduino Library Manager to install the "NesRob" library, and you should be up and running in no time. I'm also looking for feedback, so any critiques or comments would be appreciated. Please let me know if you run into any problems getting it going.

 

10 hours ago, Tursi said:

@ta0 already came up with a longer sequence for test using a high speed camera

Ahh-hah, that's right! Now I remember reading that, but I realize I had forgotten to test it. The spacing is odd 5,6,7,5 (`00000 000101 1101011 11111`), but I appears to the standard 13-bit sequence prefixed with an additional `00000` and followed by `11111`.

 

I will test the longer sequence and report back.

In the meanwhile, if anyone already had an emulator setup and is willing to record the signals happening in the Gyromite test screen it would be much appreciated.

Edited by zfields
To directly answer question from previous post.
Link to comment
Share on other sites

1 hour ago, zfields said:

I will test the longer sequence and report back.

I tested the padded sequence proposed by @ta0, but it does NOT cause the LED to flash. Furthermore, it appears to be less reliable at enabling the LED than the standard 13-bit TEST sequence discussed in this thread (based on the number of attempts it takes for R.O.B. to recognize the signal).

 

It should also be noted, I sent successive TEST signals (both padded and unpadded), at 1Hz, 2Hz, 4Hz, and immediate intervals. The LED did not toggle (i.e. the behavior did not change).

 

This leaves an open question regarding which signal disables the LED on R.O.B.'s head; as seen on the Gyromite TEST page in this video.

Edited by zfields
Add results of interval testing.
Link to comment
Share on other sites

7 hours ago, zfields said:

I tested the padded sequence proposed by @ta0, but it does NOT cause the LED to flash. Furthermore, it appears to be less reliable at enabling the LED than the standard 13-bit TEST sequence discussed in this thread (based on the number of attempts it takes for R.O.B. to recognize the signal).

 

It should also be noted, I sent successive TEST signals (both padded and unpadded), at 1Hz, 2Hz, 4Hz, and immediate intervals. The LED did not toggle (i.e. the behavior did not change).

 

This leaves an open question regarding which signal disables the LED on R.O.B.'s head; as seen on the Gyromite TEST page in this video.

You know, I tried it several different ways, and all the methods have the test page in Gyromite simply alternating between lit and black at 60hz (so: 1010101010101010101... etc). See what that does for you. ;) It would be interesting if that made it blink.

 

I was thinking about running ROB back in the day, particularly your comment that the LED comes back on after a move. That sounded right to me, so I went and found the ROB manual, and in there we see:

 

Quote

6) Press the select button to go from the "test mode" back to the "game menu". If the LED stays lit at this time, R.O.B. is ready to accept commands.

- If the LED is not lit when you return to the game menu, try again starting from step (4).

- The LED will go off while R.O.B. is moving, and he will not accept commands during that time. You can give the next command only after R.O.B. has stopped moving and the LED has come back on.

This leads me to believe that the LED being lit simply means that ROB has accepted a command and is ready for the next one. Since that's the intended state, it's likely there is no "turn LED off" command.

 

Link to comment
Share on other sites

9 hours ago, Tursi said:

...This leads me to believe that the LED being lit simply means that ROB has accepted a command and is ready for the next one. Since that's the intended state, it's likely there is no "turn LED off" command.

 

That's what I thought, and said on Saturday.  Just curious, why does anyone even want to turn it off?  

Link to comment
Share on other sites

4 hours ago, Pioneer4x4 said:

That's what I thought, and said on Saturday.  Just curious, why does anyone even want to turn it off?  

@Pioneer4x4 I see your point in the context of the Nintendo, because the LED indicates that R.O.B. is able to successfully receive commands. Once he has been set in clear view of the television, then there is no reason for that to change. However, when R.O.B. is used as a stand alone robot, there seem to be near limitless uses of an LED. For example, it could be used to indicate errors or statuses of the program running on the microcontroller driving R.O.B.

 

14 hours ago, Tursi said:

(so: 1010101010101010101... etc). See what that does for you. ;)

@Tursi Thank you! I will definitely check to see what that does. In case it matters, were you being specific when showing the first blink as GREEN (1), followed by BLACK (0), then repeating? I will be trying several different approaches, but I would like to be as close as possible to the original signal.

Link to comment
Share on other sites

1 hour ago, zfields said:

I will definitely check to see what that does.

1010101010101010... makes the LED blink and appears to leave it in the off position!

 

Now to narrow it down and see if I can minimize the pattern to the smallest reproducible size required to make it work reliably.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...