I am using a USBCopyNES to dump a copy of a game that I own. I do not want to say the name of the game because I support the developer and don't want to get requests for a rom if I am able to dump it. I just want the .nes for my own personal use. The game is 512kb and I think the mapper is either UxROM or UOROM (I'm leaning toward it being UOROM since the demo rom used that mapper). USBCopyNES will not output a file that large using either mapper. Is there a way to dump this board's contents?
You'll need to write your own dumping script. It should be only a small modification to the one provided by boodgod here:
http://bootgod.dyndns.org:7777/plugins.php
lidnariq wrote:
You'll need to write your own dumping script. It should be only a small modification to the one provided by boodgod here:
http://bootgod.dyndns.org:7777/plugins.phpI'm a noob when it comes to modifying a script. Is there a recommended program for opening and editing the UNROM.BIN file? Also, what would I need to change in it?
Actually, it looks like the one there already supports 512KiB UxROM.
serpentor wrote:
I'm a noob when it comes to modifying a script. Is there a recommended program for opening and editing the UNROM.BIN file? Also, what would I need to change in it?
It's not a script file - it's a
plugin. You would need to download the ASM file, edit it (it's 6502 assembly code), then run it through an appropriate assembler (which I believe is
this one) to produce a new .BIN file.
Fairly sure there is some hardware copynes dump protection used on that cart to prevent you from dumping it with copynes.
proveaux wrote:
Fairly sure there is some hardware copynes dump protection used on that cart to prevent you from dumping it with copynes.
Huh? on UOROM??? doubtful... Early CNROM boards had some anti-dumping diodes on the
CHR. But UOROM? If the copyNES can't read the rom for dumping then the NES wouldn't be able to read the rom to play the game.
Not hard to guess what cart this is.
Quietust wrote:
serpentor wrote:
I'm a noob when it comes to modifying a script. Is there a recommended program for opening and editing the UNROM.BIN file? Also, what would I need to change in it?
It's not a script file - it's a
plugin. You would need to download the ASM file, edit it (it's 6502 assembly code), then run it through an appropriate assembler (which I believe is
this one) to produce a new .BIN file.
Okay, I have opened the UNROM.ASM in ASM Editor but I'm not sure what needs to be changed. I'm new to all of the behind the scenes of how all of this works. In the past I have just used the wiki at nesdev to find the correct mapper, selected it in USBCopyNES, and made my backups without really understanding how
I am very sorry to be a bother, but what am I looking for in the ASM? I see several references to 128k, but I don't think it is as easy as just changing all of those to 512k.
To lidnariq, I tried using the UNROM.BIN without editing it but it only supports up to 256k.
Thanks to both of you! Your help getting me this far is appreciated, I feel like I'm this [----] close!
thefox wrote:
Not hard to guess what cart this is.
Not at all.
I think.
infiniteneslives wrote:
Huh?
I could definitly be mistaken. Wouldn't be the first time or last.
When I tried to dump with CopyNes, believe I ran into the issue listed by OP but not 100% positive. Will try again when I get a chance. If I have same issue, will put game on test cart and see how CopyNes does. That, I would guess, would tell if it is a hardware protection on cart or plugin issue with CopyNes?
proveaux wrote:
thefox wrote:
Not hard to guess what cart this is.
Not at all.
I think.
So is the copy protection just the fact that it's not a common mapper? Because it's still nothing special aside from non-standard mapper...
If it's not really a UOROM, it's probably something equivalent but with registers or values scrambled in some way to prevent exactly what you are trying to do. Options:
1. Use the CopyNES debugger to walk through the startup code. This will be very, very slow, but you might be able to get to the bankswitch code to figure out how it's different from UOROM. Then you can build a custom dump plugin for that mapper.
2. Desolder the ROM chips and dump them with a ROM reader/burner. If you do this, you can reverse engineer it with an emulator instead, which will be much easier.
3. Just download somebody else's rip of it from the web.
(Edit: new claims that it's actually a normal oversize UxROM.)
rainwarrior wrote:
It's not really a UOROM. Probably something equivalent but with registers or values scrambled in some way to prevent exactly what you are trying to do. Options:
1. Use the CopyNES debugger to walk through the startup code. This will be very, very slow, but you might be able to get to the bankswitch code to figure out how it's different from UOROM. Then you can build a custom dump plugin for that mapper.
2. Desolder the ROM chips and dump them with a ROM reader/burner. If you do this, you can reverse engineer it with an emulator instead, which will be much easier.
3. Just download somebody else's rip of it from the web.
Options 1 and 2 are above my level of ability currently, and I've searched to the ends of the Internet for Option 3
. It looks like I'm tied to an original NES with this game. I really wish RetroUSB would include a digital download with these.
If you send me a picture of both sides of the PCB (not the cartridge as a whole) I might be able to decipher how it works.
Well, this is good way to learn, if you want those abilities. Otherwise, I dunno, maybe there's somebody here you can mail it to that would like to take on the challenge. I think I could do it, and it would be a fun challenge, but my interest in this is only at the spectator level.
I'm a little curious, though, how come you have a CopyNES? I presume you didn't buy and install it just to try and dump this one cartridge. It sounds like you don't do NES programming. What use do you get out of it?
Edit: ah yeah, lidnariq makes a good point, if it's just discrete parts in there it might be decipherable just from looking at it. I was thinking of RetroUSB's MMC style repros which have a CPLD on there that requires much more than visual inspection.
I seriously doubt it has any copy protection, beyond from being 512 KB.
rainwarrior wrote:
Well, this is good way to learn, if you want those abilities. Otherwise, I dunno, maybe there's somebody here you can mail it to that would like to take on the challenge. I think I could do it, and it would be a fun challenge, but my interest in this is only at the spectator level.
I'm a little curious, though, how come you have a CopyNES? I presume you didn't buy and install it just to try and dump this one cartridge. It sounds like you don't do NES programming. What use do you get out of it?
Edit: ah yeah, lidnariq makes a good point, if it's just discrete parts in there it might be decipherable just from looking at it. I was thinking of RetroUSB's MMC style repros which have a CPLD on there that requires much more than visual inspection.
I originally bought the USBCopyNES to dump just one game, the predecessor of the game I am trying to dump now
. A friend of mine who teaches technology installed it for me. I have hacked and cracked a lot of things, but always using guides. I have no real talent for figuring this stuff out on my own.
I can take some pics and share them later this evening, or perhaps mail the cart to a trusted member of this forum who has an interest in the project.
If it's "just" like UxROM, they could have used any 5 bits from the address and data lines, not just the standard D0..D4. Yeah, using both address and data lines would require preventing bus conflicts, but that's not that hard if you're making custom PCBs.
If it isn't standard oversize UxROM, it'll require modifying the emulator or ROM, though.
It will load and play on the 2 emulators I have on my phone.
proveaux wrote:
It will load and play on the 2 emulators I have on my phone.
Are you playing the demo rom or a full rom? I thought I had found the full rom on a site, but when trying to input a password it gave a message saying the password feature couldn't be used because it was a demo.
He's just saying that oversized UxROM is commonly supported by emulators.
Do I need to make a ROM to test support for big mapper 2/180 like
I did for 7/34?
Here is a pic of the board for anyone who might be able to help.
[pic deleted following project completion]
Well it does say UNROM 512 right on the board. The only thing else is the board appears to support banking CHR-RAM. But looking at the jumpers it appears it's likely just 512kbyte unrom style. You could certainly dump it with CopyNES or TapeDump. Dump $C000-$FFFF and find the table for avoiding bus conflicts and then alter the plugin that would bank each piece in to write to this table and you're set.
Just dumped it with the kazzo without issue. It's as vanilla as 512KB UxROM can get, nothing special...
infiniteneslives wrote:
Just dumped it with the kazzo without issue. It's as vanilla as 512KB UxROM can get, nothing special...
I have looked at the kazzo project page and can't really justify scratch building the device to dump one game
I sent you a PM.
There's no need to build a new dumper when you already have a perfectly good one.
If it's just plain UxROM all you need to do is modify and reassemble the plugin for it to check for and dump the larger size.
rainwarrior wrote:
There's no need to build a new dumper when you already have a perfectly good one.
If it's just plain UxROM all you need to do is modify and reassemble the plugin for it to check for and dump the larger size.
I know that sounds so simple to many of the members here, but I'm just not sure how to go about it. I have downloaded the ASM file and opened it in an editor, but I don't know what to change in it.
No sorry I won't share the rom, that'd take the fun, challenge, and legitimacy out of it
Have a soldering iron? I have a hacker solution for you. Lift the A18 pin (referenced from the flash chip's datasheet) on the PRG-ROM from the PCB. Connect it to GND. Dump it as UOROM 256KB (that's your lower half). Disconnect from GND, connect to Vcc, dump again. Remove the header from the second dump and append to the first. Adjust remaining header to 512KB and enjoy. Reconnect the lifted pin if desiring to replay on the NES.
No soldering iron? I have an even bigger hacked solution for you. Take it even further with a slightly less approved no-solder method. Scrounge the drawers for a paperclip (a metal one). Take the cover off you NES & cart so you can access the PCB (PRG-ROM specifically) while dumping. For the few seconds it takes to dump, short the A18 pin to Gnd with your paperclip & dump. Short to Vcc and dump again. Create file as directed above. Sure this option stresses your A18 OR gate output driver a little, but if it's only for a min or less it should be just fine. Put your thumb on the OR gate(s) for a temporary little heat sink.
The places you'll need to modify are probably near this chunk:
Code:
crc_fail: lda #3 ;crc failed, determine size of normal UxROM game
jsr wr_bank
jsr compbank
beq is64k
lda #7
jsr wr_bank
jsr compbank
beq is128k
is256k: ldx #4
jmp next_part
is128k: ldx #2
jmp next_part
is64k: ldx #1
And this chunk:
Code:
;PRG/CHR/WRAM min/max sizes supported
.db 64 >> 4,256 >> 4
infiniteneslives wrote:
No sorry I won't share the rom, that'd take the fun, challenge, and legitimacy out of it
Have a soldering iron? I have a hacker solution for you. Lift the A18 pin (referenced from the flash chip's datasheet) on the PRG-ROM from the PCB. Connect it to GND. Dump it as UOROM 256KB (that's your lower half). Disconnect from GND, connect to Vcc, dump again. Remove the header from the second dump and append to the first. Adjust remaining header to 512KB and enjoy. Reconnect the lifted pin if desiring to replay on the NES.
No soldering iron? I have an even bigger hacked solution for you. Take it even further with a slightly less approved no-solder method. Scrounge the drawers for a paperclip (a metal one). Take the cover off you NES & cart so you can access the PCB (PRG-ROM specifically) while dumping. For the few seconds it takes to dump, short the A18 pin to Gnd with your paperclip & dump. Short to Vcc and dump again. Create file as directed above. Sure this option stresses your A18 OR gate output driver a little, but if it's only for a min or less it should be just fine. Put your thumb on the OR gate(s) for a temporary little heat sink.
This is in no way fun for me. But if this is what it takes to get a rom of a game I legitimately own, I guess I'll do what I have to do. I have no idea what the heck I'm doing. I guess if I can't figure out how to edit an ASM to build a new BIN, I'll follow your soldering tip. Thanks for that, at least
lidnariq wrote:
The places you'll need to modify are probably near this chunk:
Code:
crc_fail: lda #3 ;crc failed, determine size of normal UxROM game
jsr wr_bank
jsr compbank
beq is64k
lda #7
jsr wr_bank
jsr compbank
beq is128k
is256k: ldx #4
jmp next_part
is128k: ldx #2
jmp next_part
is64k: ldx #1
And this chunk:
Code:
;PRG/CHR/WRAM min/max sizes supported
.db 64 >> 4,256 >> 4
What should I change it to say? This appears to be my best option, I'm just not sure which parts need modification. I'm guessing the last one needs to be changed from 256 to 512, but what numbers need to be changed in the first part, and does anything else need changing in the second part?
I don't have anything I can test it with, but try this with
http://code.google.com/p/usbcopynesblue/Put in PLUGINS folder:
http://usbcopynesblue.googlecode.com/sv ... /U5ROM.BINPut in program folder:
http://usbcopynesblue.googlecode.com/sv ... APPERS.DATIt should show up under "unlicensed games".
Source:
http://usbcopynesblue.googlecode.com/sv ... /U5ROM.ASMIf it works I'll check it into the repository for posterity.
Also, lidnariq, where did you get that source for a UxROM dumper plugin? What I have doesn't match the BINs (source is called UXROM.ASM and only does 64/128k, but the BINs are called UNROM.BIN/UOROM.BIN-- I couldn't find sources for these on Kevtris's site, RetroUSB, or Quietust's site).
rainwarrior wrote:
Also, lidnariq, where did you get that source for a UxROM dumper plugin? What I have doesn't match the BINs (source is called UXROM.ASM and only does 64/128k, but the BINs are called UNROM.BIN/UOROM.BIN-- I couldn't find sources for these on Kevtris's site, RetroUSB, or Quietust's site).
from BootGod—
http://bootgod.dyndns.org:7777/plugins.php
Also, I just noticed the solder blobs on the board seem to suggest it uses 16k of CHR-RAM, and not just 8k. I wonder if that'll make the graphics break at some point in emulation.
rainwarrior wrote:
Also, I just noticed the solder blobs on the board seem to suggest it uses 16k of CHR-RAM, and not just 8k. I wonder if that'll make the graphics break at some point in emulation.
You can't really get 8KB sram anymore unless you want to pay extra for it, so that's why it's there in the first place. In any event, the jumpers that are closed would suggest the PCB is limiting it to 8KB of CHR-RAM.
Yeah, I suppose there would have to be a second jumper to ground the select pin if 16k bankable CHR-RAM was an option and you weren't using it (but still wanted to use a 16k RAM chip).
When I've bought SRAM in the past it's been a toss-up on different days as to whether it was cheaper to get 6264 or 62256.
rainwarrior wrote:
Yeah, I suppose there would have to be a second jumper to ground the select pin if 16k bankable CHR-RAM was an option and you weren't using it (but still wanted to use a 16k RAM chip).
When I've bought SRAM in the past it's been a toss-up on different days as to whether it was cheaper to get 6264 or 62256.
16k (byte?) isn't even an option really with the current market.
I imagine there are some places that have 8KB sram for less than their 32KB, probably places that sell old stock. But with main stream suppliers that's not the case. Digikey sells 8KB for about twice the price of 32KB in DIP packaging. I even was surprised to find that in large quantities of SMT 128KB sram is actually cheaper than the 32KB equivalent right now...
infiniteneslives wrote:
I imagine there are some places that have 8KB sram for less than their 32KB, probably places that sell old stock. But with main stream suppliers that's not the case. Digikey sells 8KB for about twice the price of 32KB in DIP packaging. I even was surprised to find that in large quantities of SMT 128KB sram is actually cheaper than the 32KB equivalent right now...
NOS atari 7800 games are a fantastic source if your willing to desolder them from the pcbs. I use them alot as the common donors that have them are also ones that support larger banked games that need both U1 and U2 for the program data and the SRAM needs to be removed anyhow
Bank switching on the Atari is alot like mapper implimentation on the NES for larger amounts of code if your not up on Atari. Anyhow, if you search around you can still get the 7800 games with 8k static ram in them for dirt cheap in large quantities. It's pretty sad when parts of the boards population are worth more than the game as a whole though.
rainwarrior wrote:
I don't have anything I can test it with, but try this with
http://code.google.com/p/usbcopynesblue/Put in PLUGINS folder:
https://dl.dropboxusercontent.com/u/883356/U5ROM.BINPut in program folder:
https://dl.dropboxusercontent.com/u/883356/MAPPERS.DATIt should show up under "unlicensed games".
Source:
https://dl.dropboxusercontent.com/u/883356/U5ROM.ASMIf it works I'll check it into the repository for posterity.
Also, lidnariq, where did you get that source for a UxROM dumper plugin? What I have doesn't match the BINs (source is called UXROM.ASM and only does 64/128k, but the BINs are called UNROM.BIN/UOROM.BIN-- I couldn't find sources for these on Kevtris's site, RetroUSB, or Quietust's site).
I tried it out this morning and Nestopia gave a CPU jam! warning and a white screen. It did dump a 512k sized file, though.
I missed an AND that made the bus conflict prevention only work for banks 0-7. Try downloading this again:
http://usbcopynesblue.googlecode.com/sv ... /U5ROM.BIN
rainwarrior wrote:
I don't have anything I can test it with, but try this with
http://code.google.com/p/usbcopynesblue/If at all possible, could you test it with the original
CopyNESW client? It was updated about 6 months ago and
should work correctly with the USB CopyNES hardware.
Well, I created USBCopyNESBlue because at the time neither CopyNESW nor USBCopyNESW were functional. Sorry about the name, it was chosen hastily. (I changed the icon colour so I could see it was a new version easily, and named it after the new icon colour.) I know it's working because I already use it, and I knew serpentor was already using it, and I provided a mappers.dat that I knew would work with the version of the program he has.
I don't particularly like having another fork of this around, but I have some questions about CopyNESW:
- Does CopyNESW have a source repository that I can examine?
- Do you keep changelogs?
- Are old versions of the source available?
- Can I contribute to its development?
As an alternative, maybe you would like to join the USBCopyNESBlue project on google code? It would be easier to collaborate, and the public repository automatically answers the questions I just asked. I was planning to do some work on it in a few weeks anyway, it could be a good time for me to integrate your changes and bring in parallel port support. (If it needs a name change, that can be accomodated too.)
rainwarrior wrote:
I missed an AND that made the bus conflict prevention only work for banks 0-7. Try downloading this again:
https://dl.dropboxusercontent.com/u/883356/U5ROM.BINI'll give it a try as soon as I get home from work!
rainwarrior wrote:
- Does CopyNESW have a source repository that I can examine?
- Do you keep changelogs?
- Are old versions of the source available?
- Can I contribute to its development?
The sources are in a Subversion repository (with limited version history, since I didn't actually create the repository until after I'd mostly finished writing the program), but it's currently hosted locally on my system. I could probably convert it to a git repository and put it up on Github, at which point you'd be able to fork it and make whatever changes you wanted (and then I'd be able to merge them back in).
[edit]
Done.
rainwarrior wrote:
I missed an AND that made the bus conflict prevention only work for banks 0-7. Try downloading this again:
https://dl.dropboxusercontent.com/u/883356/U5ROM.BINIt works! Thank you SO MUCH for your help with this effort, without you I would be desoldering chips and fiddling around with things beyond my skill level. I hope others who desire this game on their emulators stumble across this thread
I'm very glad we were able to get through all of this with no one ever mentioning the exact name of the game. People who don't buy the game have no business owning the rom.
Yay, it worked!
Thanks, Quietust, for the repository info. When I get back to it, I'll try to follow your improvements to the client, and incorporate them. Hopefully we can eliminate the need to have two versions of it kicking around eventually.
Awesome work! Tried it and compared the 2 files and they were identical. Now I wish I'd had waited but glad nothing was harmed desoldering.