|
ForumsSega Master System / Mark III / Game GearSG-1000 / SC-3000 / SF-7000 / OMV |
Home - Forums - Games - Scans - Maps - Cheats - Credits Music - Videos - Development - Hacks - Translations - Homebrew |
![]() |
Author | Message |
---|---|
|
Dumping roms with TG866II Plus
![]() Last edited by L10N37 on Tue May 25, 2021 11:51 am; edited 1 time in total |
So what bought me here in the first place was the SMS reader back in year 9 at school (2001)
And just getting curious on learning about all this mapping and stuff because of the limitations of the hardware. i.e games larger than 32kb. I am just confused about how some cartridges have separate mappers and some don't. i.e you can have integrated or separate. I've been turning my faulty games into ROM hacks (just SG1000 / MKIII headers to boot on OG master system, it's about all I can do atm) Theres a faulty copy of the ninja here with a separate mapper, the part number webpage says ghost busters has the same mapper - Cool - I'll switch out the ghost busters ROM with the faulty "the ninja" cart ROM to ascertain as to whether the mapper is faulty or the ROM IC. well ...go figure - we never tested this crappy copy of ghost busters and its faulty - open it up and it's an integrated mapper copy. Well it's going to have to be another ROM Hack (one that I found an AWESOME repro cover for) Anyway, I figured hey why not throw it in my TG866II Plus and go through every 28pin DIP package to see if it reads... about 10 attempts in come across "Philips 27C256 & 27C512" Perfect. Some RAMTROM IC's read as well but they didn't match (coming up) I compare the files from a good known dump to my first 32Kb chunk and they're a perfect match. Now where the confusion is - how's a 128kb game fit on a 28pin 1024Kilobit IC - These only exist this size in DIP32/40 Is there someway to "bank switch" so I can get more of the dump? It was definitely faulty! The contacts are absolutely perfectly clean and had multiple attempts on booting it. There is a really good schematic available @ Heavydeck a makeshift mapper but I think it may be too big to squeeze into a cartridge shell. Ghost busters = MPR-10516 The cool idea I have is a 50 pin adapter on a board that just slots into the TG866 then use the XGpro software to dump - everything's probably being dumped and verified as good by now but just an idea. **got 2 of the other faulties out of the bin, ones already gone outside and up the street for collection. Both show PIN1 faulty. |
|
![]() ![]() |
|
|
![]() |
A mapper is simply a way to take the 16 address lines of the Z80 and adapt a ROM with more address lines than that (by allowing special writes to control the dupper address lines). Putting this in a separate package or on the same die as the ROM is simply a matter of whether the connections are small (integrated) or large (separate chip). For all we know, there could be two chips in the package.
Thus to dump a ROM with a mapper we have to make use of the mapper to select the “window” onto the inner, large ROM and then read it out one window at a time. I’ve no idea if this is possible with a standard reader, perhaps not unless there is some flexible way to script the behaviour, hence the use of SMSReader and so on. A typical algorithm might be: for each page number from 0 to n: Write the number to address $ffff Read 16KB from address $8000 onwards Append that to the dump ...where n may be unknown, and the details vary for exotic cartridges. |
|
![]() ![]() ![]() |
|
|
![]() |
Would it be possible to make your SMSreader software work with this USB reader? or would it be far more complicated?
Also I might try this? https://pcmhacking.net/forums/viewtopic.php?f=11&t=56 But that would still be only 64kb In quotation: "ok to switch 4 16kb bins on the 27C512 or 27SF512 which should be the same.you need to connect a second 4.7k or 10 resistor from vcc to address pin A14 and remove the pin from the pcb and a wire to a second switch or even a rotary switch would be easier and connect both pins to it instead of 2 switches and earth it as well as the other pin now you have upto 4 combinations of both switches on or off to choose what addresses in the eprom are output as shown below. A15 = 0, A14 = 0; 0x0000 - 0x3FFF (16kb / already dumped) A15 = 0, A14 = 1; 0x4000 - 0x7FFF (16kb /already dumped) A15 = 1, A14 = 0; 0x8000 - 0xBFFF (???) A15 = 1, A14 = 1; 0xC000 - 0xFFFF (???) " So I'm thinking I could make a board and instead of customised software just use switches to dump each section with XGpro, then merge the files? But as mentioned this would only be 64kb? and it's a 128kb rom? What about the 256kb and 512kb (and 48kb?) |
|
![]() ![]() |
|
|
![]() |
The way mappers work (in general, not only SMS ones) is that the CPU needs to write specific magic values to specific magic locations, and this changes what the CPU can see in another location.
(For example, on Game Boy games, one writes to $2000 to change which 16KB subset can be read from $4000-$7FFF. On Sega's SMS mapper, one writes to $FFFE to change which 16KB can be read from $4000-$7FFF.) There's no way to use a generic ROM reader to address this: they're just not designed for that. You can't just provide static wires high or low like the "program a 27C322 using MiniPro adapter"; instead you have to inject a specific kind of bus activity to the ROM before you can read the next region of memory. Does reading the page on the wiki here: https://www.smspower.org/Development/Mappers explain anything? While it would be possible to create a complete replacement MiniPro firmware that could dump these ROMs, I don't know what purpose doing so would serve. It would be incompatible with using the MiniPro for its original purpose, and you'd need a PIC programmer to swap between the two firmwares. |
|
![]() ![]() |
|
|
![]() |
Just a learning experience really but that would be too much. It's like walking before you run i guess.
Multiple PIC chip programmers on hand as the device here replaced them and they're too finicky with drivers. Ultimately the coolest thing would be an actual master system 1 with a modified BIOS and some sort of GUI, and the mapper card idea from heavydeck with a USB port on it to connect to a laptop. Mixing new tech with old tech is always cool I'll have a read, I guess with heavydecks information I should at least be able to have a go at doing large repro games. Someone in France is selling PCBs https://translate.google.com/translate?hl=en&sl=fr&u=https://www.masters... Apparently on this site too - may have to find him and see what they cost, at the sacrifice of learning anything new. |
|
![]() ![]() |
|
|
Dumping roms with TG866II Plus
![]() |
Creating a user defined flash reading algorithm in the programmer's GUI where you read 16KB block at a time may be the way to go, if that's possible with the GUI.
Can't you dump cartridges to SD card using your Mega SG tho? |
|
![]() ![]() |
|
|
![]() |
A quick search reveals that it would be possible as it was added to the SuperNT's jailbreak and apparently helped in finding some rare games.
At this stage not on the Mega SG And related to the Mega SG but off topic Playing retro games on HDMI always feel a bit off - there's suppose to be zero lag but I can definitely feel it in the controllers. It makes playing games like Ninja Gaiden an absolute headache ...it's almost pointless to try and adapt to the lag - I remember botching an old Clone NES controller with some wire and switching a master system cable to it to play Enduro Racer on an actual OG system too lol (SMS controllers are just too spongy and not precise) - so that game would be a nightmare too. |
|
![]() ![]() |
|
|
![]() |
I've made devices that can dump and/or reprogram (flash) cartridges for a wide variety of systems. There's nothing hard about the SMS, it's just ... not the same as a big unbanked ROM.
It's not HDMI that's adding the latency, but your TV doing something "helpful". (I was looking at an old model Vizio TV service manual, to discover that there input stage just writes into a framebuffer, and the TV just plays out of the framebuffer, and it doesn't matter what input device you're using.) You will probably get better results out of an HDMI-enabled computer monitor. |
|
![]() ![]() |
|
|
![]() |
I just thought it would be cool
I guess the original SMSreader with 2 x 4040's would be fine and just use a serial to USB adapter. Just need to get my head around it as you're saying it needs special writes and I'm just looking at the hardware. Maxims smsreader app works in mysterious ways lol |
|
![]() ![]() |
|
|
![]() |
SMSReader was based on the parallel port which has 11 or so controllable pins, so you can have 8 bits for data, and a few left for control signals (read/write, address reset, address increment). USB is substantially more complicated so a microcontroller would be needed to adapt between the two (and get rid of the counters for address).
Generic chip readers are more set up for simple address/data pin selection. There may also be logic in there for the funky sequences for writing to flash memory, but that’s presumably in the internal controller code. The best way to dump cartridges is to use a real system to host them, and a custom dumper running on the Z80 to dump them, as it means no cartridge signals need to be simulated. If I had the time and inclination, I might write something that does that including saving onto an Everdrive SD card, and comparing checksums to an internal list for quick validation. I don’t think the Everdrive file system routines have been documented enough for us to do this yet, though... |
|
![]() ![]() ![]() |
|
|
Dumping roms with TG866II Plus
![]() |
Soft. | |
![]() ![]() |
|
|
![]() |
Nowadays I'd probably suggest doing something using one of the FTDI chips that support GPIO mode. | |
![]() ![]() |
|
|
![]() |
Also in response to this, the OSSC seems fine on the same tellies that the Mega SG has controller lag on. (clocked Ridge Racer type 4 a few weeks ago, in a manual of course lol) Anyway my programming history is 2 x visual basic 6 applications as a teenager - a horsepower to kilowatt converter and vice versa with a coo little background and an "about" button that popped up And a calculator + thanks to SMS power having a huge section on what games need for valid headers I can make bootlegs lol Maybe a simple app to patch games with a valid header would be a more suitable project (and as simple as it sounds, struggle town for someone like me( But that would be awesome - backing up your own games from the card slot onto an everdrive, or even just dumping the games via the card slot on on original hardware with an altered "dumping BIOS" |
|
![]() ![]() |
|
|
![]() |
Automating the header patch is easy but if the game is using those bytes then it is very difficult to do by hand and impossible to automate. For playing on Everdrive, you don’t need the header patch though. | |
![]() ![]() ![]() |
|
|
![]() |
Yes had an everdrive since forever but not as satisfying a single game on a single cart
Check this out Made last year ! See any reason for this not to work with a simple pin adapter ? (It's for MD) Probably also needs customised SMS software |
|
![]() ![]() |
|
|
![]() |
That thing might support banked carts for Mega Drive but it’d need specific software changes to support SMS. | |
![]() ![]() ![]() |
|
|
![]() |
@L10N37 , I thought you wanted to do the dumper yourself. If you're interested on a SMS solution, I just bough raphnet one:
https://www.raphnet-tech.com/products/sms_cartridge_reader_programmer/index.php |
|
![]() ![]() |
|
Revo
|
![]() |
And now is out of stock^^
Want to buy one too, just waiting for restocking and stripe payment. |
|
|
![]() |
Taking into account how long it takes me to learn some basic stuff - I've had a go at multiple languages, and that fact the dumper I want would need a custom BIOS written from scratch, I'd have to live 3 times the average life span to release a buggy prototype. **That Raphnet one is awesome, sleek design. Will consider. **he'd be a rich man if he could get those gamegear connectors and sell that adapter for the Mega SG. They released one version, told customers not to use them as they could damage the console then re-released a V2. They sold out instantly at stupid prices. |
|
![]() ![]() |
![]() |