Jump to content
IGNORED

Harmony as a CopyCart


batari

Recommended Posts

For some reason, and I haven't figured out why yet, sometimes it hangs at that point. If you don't see text right away that says "Fred's cart dumper" then you should press ESC and try again immedately.

I am also having this probably. I have only gotten a single 4k dump successful so far out of 20 tries, and none for 8k/16k. I'm glad this problem was posted cause I was going out of my head trying to figure it out.

 

 

I compared the one dump I got though, and it was a perfect copy. :)

 

from post 15

It will do 4k, F8, F6, F4, and custom bankswitching (you specify the start hotspot and number of banks.) The current limitations are that schemes using the data bus won't work yet (such as 3F or FE) and schemes like E0, although you could dump all of the data using custom bankswitching, wouldn't result in a playable binary unless it was processed after the fact.

Link to comment
Share on other sites

For some reason, and I haven't figured out why yet, sometimes it hangs at that point. If you don't see text right away that says "Fred's cart dumper" then you should press ESC and try again immedately.

I am also having this probably. I have only gotten a single 4k dump successful so far out of 20 tries, and none for 8k/16k. I'm glad this problem was posted cause I was going out of my head trying to figure it out.

 

 

I compared the one dump I got though, and it was a perfect copy. :)

 

from post 15

It will do 4k, F8, F6, F4, and custom bankswitching (you specify the start hotspot and number of banks.) The current limitations are that schemes using the data bus won't work yet (such as 3F or FE) and schemes like E0, although you could dump all of the data using custom bankswitching, wouldn't result in a playable binary unless it was processed after the fact.

Oh, I wasn't dumping any carts with special schemes. Just some plain old 8k and 16k Atari bankswitched carts. They all hung up at the place Batari noted. I tried several times too.

 

 

Like I said I was only able to get a single dump out of 20 tries. This was from a 4k cart, and it only worked once. Subsequent tries with the same 4k cart all failed. At that point I was checking connections, restarting my computer, setting my Harmony back into a working state, etc...

Link to comment
Share on other sites

For some reason, and I haven't figured out why yet, sometimes it hangs at that point. If you don't see text right away that says "Fred's cart dumper" then you should press ESC and try again immedately.

I am also having this probably. I have only gotten a single 4k dump successful so far out of 20 tries, and none for 8k/16k. I'm glad this problem was posted cause I was going out of my head trying to figure it out.

 

 

I compared the one dump I got though, and it was a perfect copy. :)

I expect most of the 4k binaries will be perfect copies, but I expect that many of the 8k+ dumps out there have incorrect data at the end of the bank (after the hotspots). The Harmony dumper avoids that problem by triggering the hotspot address after every byte read.

 

Anyway, I thought I'd add one more observation: if the synchronization phase seems to be failing (you'll see "Synchronizing..." followed by a dot every second or so) then you can usually get it to start working by unplugging the Harmony and plugging it back in. Make sure you plug it back in before programming is complete or you may get bogus data from the dump.

 

Also, sometimes the removal and insertion method above seems to make it work better with carts that stall at the terminal area.

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

I'm still having limited success. Most of time my dumper is hanging. I've gotten Gravitar (8k) to dump only once. This dump for Gravitar was a good one though.

 

Crazy Climber (8k) refuses to dump correctly. I've gotten bad dumps with thousands of bytes different, and I've gotten two bad dumps that were good except for different nmi, reset, and brk vectors in bank 0.

 

 

So specifically with Crazy Climber:

 

*** expected, bank 0 ***

.word $FFF4 ; nmi

.word $FFF4 ; reset

.word $FFF4 ; brk

 

*** actual, bank 0 ***

.word $FFF1 ; nmi

.word $FFF1 ; reset

.word $FFF1 ; brk

 

 

The weird thing is I physically unplugged the cartridge between the dumps. Yet twice I got the exact same unexpected result.

 

 

I haven't been able to get a 16k dump yet. Most of the time my dumper is hanging at the "terminal started" line. After a minute or so I press escape. As an aside Batari, when I press escape at this point it still prints "dump successful" when really it was aborted.

 

 

 

It hangs here (16k example):

post-7074-128727832781_thumb.jpg

 

And then I press escape:

post-7074-128727835758_thumb.jpg

 

 

Any ideas? Is my Harmony not powerful enough to drive my cart? Do I have to build some pull up resistors or something?

Link to comment
Share on other sites

I'm still having limited success. Most of time my dumper is hanging. I've gotten Gravitar (8k) to dump only once. This dump for Gravitar was a good one though.

 

Crazy Climber (8k) refuses to dump correctly. I've gotten bad dumps with thousands of bytes different, and I've gotten two bad dumps that were good except for different nmi, reset, and brk vectors in bank 0.

I wrote the dumper so it will produce correct vectors since it triggers a hotspot for EVERY byte read. That would mean that the "expected" result may actually be the bad dump (if the problem isn't what I noted below.)

 

So specifically with Crazy Climber:

 

*** expected, bank 0 ***

.word $FFF4 ; nmi

.word $FFF4 ; reset

.word $FFF4 ; brk

 

*** actual, bank 0 ***

.word $FFF1 ; nmi

.word $FFF1 ; reset

.word $FFF1 ; brk

 

 

The weird thing is I physically unplugged the cartridge between the dumps. Yet twice I got the exact same unexpected result.

 

 

I haven't been able to get a 16k dump yet. Most of the time my dumper is hanging at the "terminal started" line. After a minute or so I press escape. As an aside Batari, when I press escape at this point it still prints "dump successful" when really it was aborted.

 

 

 

It hangs here (16k example):

post-7074-128727832781_thumb.jpg

 

And then I press escape:

post-7074-128727835758_thumb.jpg

 

 

Any ideas? Is my Harmony not powerful enough to drive my cart? Do I have to build some pull up resistors or something?

I still don't know why it hangs at "Terminal started" but I have some ideas as to what it might be.

 

Anyway, I recently had the same issue as you with a cart - dumps were bad every time. The problem may be related to the fact that Harmony puts put 3.3v logic on the address lines. This is well within TTL levels so it "should" work, and in fact the addresses do change and data gets read properly, but it seems to affect bankswitch hotspots. If the voltage is the problem then there is no easy fix (resistors aren't enough - you'd need a couple of TTL buffers or logic level converter ICs or something.)

  • Like 1
Link to comment
Share on other sites

Looking a little more at Crazy Climber, I can see that the bad vectors in bank 0 are copies of the good vectors in bank 1. Hope that helps. :)

 

 

Edit here's the code:

 

 

;BANK 0
   .byte $FF ; |XXXXXXXX| $FFED
   .byte $FF ; |XXXXXXXX| $FFEE
   .byte $FF ; |XXXXXXXX| $FFEF
   .byte $FF ; |XXXXXXXX| $FFF0
   .byte $FF ; |XXXXXXXX| $FFF1   bad dump incorrectly jumps to here...
   .byte $FF ; |XXXXXXXX| $FFF2
   .byte $FF ; |XXXXXXXX| $FFF3

LFFF4:
   sei                    ; 2
   jmp    LF715           ; 3

   .byte $00 ; |        | $FFF8
   .byte $00 ; |        | $FFF9
   
LFFFA:
   .word LFFF4 ; nmi    bad dump has BANK 1 vectors (all $FFF1)
   .word LFFF4 ; reset
   .word LFFF4 ; brk
   
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   
;BANK 1
   .byte $00 ; |        | $FFED
   .byte $00 ; |        | $FFEE
   .byte $00 ; |        | $FFEF
   .byte $00 ; |        | $FFF0

LFFF1:
   lda    LFFF8           ; 4
   
   .byte $00 ; |        | $FFF4
   .byte $00 ; |        | $FFF5
   .byte $00 ; |        | $FFF6
   .byte $00 ; |        | $FFF7
   
LFFF8:
   .byte $00 ; |        | $FFF8
   .byte $00 ; |        | $FFF9
   
LFFFA:
   .word LFFF1 ; nmi
   .word LFFF1 ; reset
   .word LFFF1 ; break

Edited by Omegamatrix
Link to comment
Share on other sites

Looking a little more at Crazy Climber, I can see that the bad vectors in bank 0 are copies of the good vectors in bank 1. Hope that helps. :)

Harmony performs a bankswitch (placing 1ff8) on the bus for every byte read in bank 0, so 1ffa-1fff should be reading the data in bank 0 rather than bank 1. The address bus will see 1ff8-1ff8-1ff9-1ff8-1ffa-1ff8-1ffb-1ff8 (and so on). It should not be reading bank 1 data here. If the 1ff9 is placing it permanently in bank 1, I'm at a loss to explain why.
  • Like 1
Link to comment
Share on other sites

Here is a new version that performs several dummy address reads between hotspot and data accesses to hopefully eliminate bankswitching issues. It worked with the cart that I couldn't dump with the previous version (Star Raiders.) I also removed some debugging code that wasn't necessary, and could have caused the stalls (?), and I fixed the part where aborting the terminal reported a successful dump.

Harmony_cart_dumper.zip

  • Like 1
Link to comment
Share on other sites

I've using V2 now, but unfortunately I'm still getting the issue of it hanging up at the "terminal start" part. Most of the time (5 out of 6 times) it does this. I plug carts in and out until I get a good result.

 

 

The issue with bank 1 vectors being copied into bank 0 is still happening. To further isolate this problem I used a different computer. I switched from using Windows 7 on my laptop to using XP on a tower. I then dumped Crazy Climber 3 times again. One dump was horrible (1000's of differences), and the other two were fine aside from bank 1 vectors being copied into bank 0.

 

I then pulled out my 7800 dumper and tried it. I got a perfect copy of the rom that is out on the net for Crazy Climber. At that point I knew my cart was good, and that switching computers and OS's didn't solve the problem.

 

So I switched to Asteroids... hopefully since Asteroids is a common cart it can be tried by other people and results compared. For me the bank 1 vectors got copied into bank 0 again. Here is a comparison with HOM3. This is the NTSC Asteroids with no copyright screen:

 

post-7074-128729600402_thumb.jpg

 

 

So now I have confirmation that this problem is happening on other 8k carts as well. I still haven't gotten a 16K cart to work. It'd be nice to see what is going on there.

 

 

Can someone else please dump Asteroids and see what you get?

Link to comment
Share on other sites

Sorry, I haven't built my dumper yet. I looked to see if I had an old floppy cable, but no dice. I will have to see if I have a couple of console cart socket pulls that I can solder up, unless someplace like Fry's stocks the cables or at least the connectors. I will have to go there for a USB cable anyway, since the only mini-B one I have here technically isn't mine.

Edited by A.J. Franzman
Link to comment
Share on other sites

I've using V2 now, but unfortunately I'm still getting the issue of it hanging up at the "terminal start" part. Most of the time (5 out of 6 times) it does this. I plug carts in and out until I get a good result.

 

 

The issue with bank 1 vectors being copied into bank 0 is still happening. To further isolate this problem I used a different computer. I switched from using Windows 7 on my laptop to using XP on a tower. I then dumped Crazy Climber 3 times again. One dump was horrible (1000's of differences), and the other two were fine aside from bank 1 vectors being copied into bank 0.

 

I then pulled out my 7800 dumper and tried it. I got a perfect copy of the rom that is out on the net for Crazy Climber. At that point I knew my cart was good, and that switching computers and OS's didn't solve the problem.

 

So I switched to Asteroids... hopefully since Asteroids is a common cart it can be tried by other people and results compared. For me the bank 1 vectors got copied into bank 0 again. Here is a comparison with HOM3. This is the NTSC Asteroids with no copyright screen:

 

post-7074-128729600402_thumb.jpg

 

 

So now I have confirmation that this problem is happening on other 8k carts as well. I still haven't gotten a 16K cart to work. It'd be nice to see what is going on there.

 

 

Can someone else please dump Asteroids and see what you get?

I happen to have that cart, and got the same results as you, so I was able to keep hacking away until I built something that worked. There were several bugs, and the result was that no hotspots were being hit at all - 8k only worked because the carts would usually start in the first bank and you'd hit 1ff9 on the way up and hit the second bank.

 

While I was at it, I increased the speed at which it collects data and added a 10 second delay timer after the terminal starts (in case the dump cart is what is stalling things, it can be inserted and powered during this delay.)

Harmony_cart_dumper.zip

  • Like 1
Link to comment
Share on other sites

Using V3, I was able to get a perfect copy of Asteroids. :)

 

 

However, it is still hanging up at the terminal. It's hanging up before the 10 second delay is displayed. I was only able to get one dump.

Try it without a cart inserted at all - just a Harmony connected to nothing. Does it ever hang? If not, try the Harmony in the dumper with no dump cart installed. If it hangs, insert the Harmony into the dumper during the countdown, otherwise insert the dump cart during this time, then power up the dump cart.
Link to comment
Share on other sites

I'm able to get to the countdown every time until I plug a cart in.

 

 

Specifically:

1) With the Harmony not plugged into the dump unit at all.

2) With the Harmony plugged into the dump unit, but no power supplied (to the other port).

3) With the Harmony plugged into the dump unit, and power supplied to the other port.

 

 

It starts hanging when I plug a cart in. I'm going to now take my multimeter are retest all my connections. Also, I'm wondering if the proximity of the Harmony to the other cart is interfering. I have a very short distance, but maybe the Harmony is throwing some interference? I thought of this before and attached a snap on ferrite core to my cable. Later I tried wrapping my Harmony in foil to shield it (although I didn't run a lead on the foil to ground).

Link to comment
Share on other sites

I'm able to get to the countdown every time until I plug a cart in.

 

 

Specifically:

1) With the Harmony not plugged into the dump unit at all.

2) With the Harmony plugged into the dump unit, but no power supplied (to the other port).

3) With the Harmony plugged into the dump unit, and power supplied to the other port.

 

 

It starts hanging when I plug a cart in. I'm going to now take my multimeter are retest all my connections. Also, I'm wondering if the proximity of the Harmony to the other cart is interfering. I have a very short distance, but maybe the Harmony is throwing some interference? I thought of this before and attached a snap on ferrite core to my cable. Later I tried wrapping my Harmony in foil to shield it (although I didn't run a lead on the foil to ground).

Where are you getting the power for your dump cart? I looked into the power settings, and it appears that Harmony's USB chip only asks the USB port for 100ma. Perhaps if the dump cart uses more than that, you may get the problems you describe.

 

There are some ways around it. If you use a powered USB hub, it will provide as much power as needed and won't be limited to 100ma. Another option is to use a second USB cable for dump cart power.

 

The last option is to reconfigure Harmony's USB chip to ask the USB port for more current. I don't want to publicly post instructions on how to do this, so PM me if you want to go this route.

  • Like 1
Link to comment
Share on other sites

Where are you getting the power for your dump cart? I looked into the power settings, and it appears that Harmony's USB chip only asks the USB port for 100ma. Perhaps if the dump cart uses more than that, you may get the problems you describe.

 

There are some ways around it. If you use a powered USB hub, it will provide as much power as needed and won't be limited to 100ma. Another option is to use a second USB cable for dump cart power.

 

The last option is to reconfigure Harmony's USB chip to ask the USB port for more current. I don't want to publicly post instructions on how to do this, so PM me if you want to go this route.

 

 

I am powering the unit with a second USB cable. This morning I verified all the connections were good with my multimeter. I then reread your post and tried what you said (I missed some of it last night). I get no hangups following your method, specifically:

 

 

1) I plug the dump cart into the unit only when the 10 second delay countdown is commencing.

2) At that time I plug in the 2nd USB (my power source) to the dump cart.

 

 

I've gotten perfect copies of Summer Games(16k) and Winter Games(16k). However Motorodeo gave me 4 bad dumps. What is interesting is:

 

1) Each bad dump for Motorodeo matched each other

2) These dumps were taken at different times. I dumped other carts in between in some cases.

3) It appears that bit 6 is being pulled high in the bad dump! Every byte that was different was because of this. See below...

 

 

 

post-7074-128734524799_thumb.jpg

 

 

 

So then I tried Jr. Pacman. It is a superchip game, but I thought I'd try it anyhow to see what I got.

 

post-7074-128734538402_thumb.jpg

 

 

Like Motorodeo, it is bit 6 being set high that is causing the differences. Unlike Motorodeo, it is not sequential.

 

 

In a little bit I'm going to go dump these on my 7800. I'll also post some pics of my dumper. As for pin tests, I made sure power (+5V) is only going to the dump cart, but that the grounds were tied to the Harmony. Pin 24 is floating. All other pins are connected to their counterpart on the opposite cart (i.e. pin 15 on harmony goes to pin 15 on dump cart, but pin 15 is open for all the other pins).

Link to comment
Share on other sites

I think I may know the cause of D6 going high. There are a few potential ways to fix it - Let's try this first.

 

EDIT: I have some 16k games somewhere. I'll dig them out if this doesn't work.

 

 

This made the bit 6 problem worse. Motorodeo gave me 12,685 differences. All seem to be bit 6 going high.

 

 

Then I tried Summer Games (which I got a perfect copy of before). It gave me 11,075 differences, all of which seem to be bit 6.

 

 

At least now the problem is becoming more defined. :)

Link to comment
Share on other sites

I think I may know the cause of D6 going high. There are a few potential ways to fix it - Let's try this first.

 

EDIT: I have some 16k games somewhere. I'll dig them out if this doesn't work.

 

 

This made the bit 6 problem worse. Motorodeo gave me 12,685 differences. All seem to be bit 6 going high.

 

 

Then I tried Summer Games (which I got a perfect copy of before). It gave me 11,075 differences, all of which seem to be bit 6.

 

 

At least now the problem is becoming more defined. :)

Interesting. There is still more to try, but let's try this first. If this doesn't work, I'll dig out my Jr. Pacman.

Harmony_cart_dumper.zip

  • Like 1
Link to comment
Share on other sites

Here are some pics of my dumper. I took a RomScanner and chopped it up.

 

 

Here is the unit. One USB supplies power to the dump cart, the other USB is going into the Harmony itself.

post-7074-128735118032_thumb.jpg

 

 

Here I pulled off the plastic port mold. The electrical tape is for mechanical support (so that the power and ground wires don't move around).

post-7074-128735120101_thumb.jpg

 

 

One the bottom I cut some traces. Blue arrows show cuts on A and B keep that pin 24 floating. Arrow C is another cut to keep ground isolated from the bigger ground plate. Red arrow points to (+5V) being soldered in a hole that was left by a diode I sucked out (IIRC). Note both power pins are isolated from each other already. The black arrow naturally points to ground which is connected to both the Harmony and dump cart. This was another convenient hole left is the circuit board from a jumper I sucked out.

post-7074-128735121824_thumb.jpg

 

 

It might look kind of crappy, but it is just my prototype board. I was planning on putting it in a box with a switch to turn the power on/off to the dump cart. But for right now I just want to get it working.

Link to comment
Share on other sites

It might look kind of crappy, but it is just my prototype board. I was planning on putting it in a box with a switch to turn the power on/off to the dump cart. But for right now I just want to get it working.

Mine looks much worse - it's just a floppy cable, and the boards need to be removed from the cart shell to dump them.

 

Anyway, I made some more changes to the binary, then before I posted, I found Jr. Pac Man and dumped it, and got a perfect dump. Let me know how it works for you.

Harmony_cart_dumper.zip

  • Like 1
Link to comment
Share on other sites

I'm getting successes all across the board now. :)

 

 

I got a perfect dump of Jr. Pac-Man, Asteroids, and a PAL Decathalon (16K). The PAL Decathalon is a good one, because one of 7800 dumpers didn't like it, yet it dumped no problem with the Harmony.

 

 

So it looks like this has fixed it. I'm still going to try several more dumps and combinations of things to see if I can break it, but so far it looks great. What was the problem?

Link to comment
Share on other sites

I'm getting successes all across the board now. :)

 

 

I got a perfect dump of Jr. Pac-Man, Asteroids, and a PAL Decathalon (16K). The PAL Decathalon is a good one, because one of 7800 dumpers didn't like it, yet it dumped no problem with the Harmony.

 

 

So it looks like this has fixed it. I'm still going to try several more dumps and combinations of things to see if I can break it, but so far it looks great. What was the problem?

The problem was that I forgot to turn on a transistor on the board. The last three were attempts to do that, and only the latest one did it correctly. It kind of worked when the transistor was off because it has a body diode with very slow reverse recovery, so D6=1 was fine due to a pullup resistor, but D6=0 sometimes wouldn't happen fast enough.
  • Like 1
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...