|
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 |
![]() |
Goto page Previous 1, 2 |
Author | Message |
---|---|
|
![]() |
Someone recently made an open source adapter with 3d print files and a PCB design you can have made. It is literally just a pin to pin converter.
https://github.com/ms2gg/doc/wiki/Assembly-Instructions That said, I've read some have had passive components. I recall reading about a resistor in certain models, and maybe another difference that makes "codemaster" games work on some but not others. Edit: well naturally most of the info is already here, around the bottom on the pinouts page. https://www.smspower.org/maxim/Documents/Pinouts Although I'm still keeping an eye out for exact info on some of the other adapters |
|
![]() ![]() |
|
|
![]() |
So it puzzles me completely how can this affect the VDP timing. It might be a power drain? If so, would replacing the (or have an additional) power source fix it? In any case I would be really interested to find out exactly why it does work in some cases and it doesn't in others, that would help us into creating better hardware. |
|
![]() ![]() ![]() |
|
|
![]() |
Well I finally bought a master gear adapter so I can use a real cartridge, although it seems like this is the most documented of adapters.
From pictures it looks like the nuby brand one has no screws. Can it be taken apart to investigate? I did find the details about the resistor I mentioned earlier - sounds like a couple adapters have a pull up resistor built into them on the gg pin while the sega brands don't. From what I've read it makes the sega adapters not work with a majesco game gear. Sega consoles had it built in so their adapters didn't need it. Maybe somehow there's a double pull up resistor is effecting the system in some way? Edit: looked into it a little more, electrically and pinwise. Two resistors would reduce overall resistance. Looks like sega put a 4.7k resistor between 5v and the gg pin. I'd be curious if anyone with a multimeter and the nuby converter could check the resistance between 5v and the gg pins. Once we know that I can solder the same in parallel to my systems 4.7 resistor and see if it fixes things. For that matter I wonder if early everdrive gg units also had an extra/different resistor value here. |
|
![]() ![]() |
|
|
![]() |
Since we recently started discussing this topic again, I made an improvement to the VDP timing test ROM and it would be nice if the guys experiencing problems with Phantasy Star on some of their Game Gears could give it a test.
So this time the program tries to write to VRAM during active phase, first at 28 cycles per write, then at 27, then at 26, always verifying then if the contents of VRAM were the expected ones. The written data is a simple series of ever alternating $AA and $55 and the target VRAM area is zeroed during the previous vBlank phase to ensure there's no leftover content there. On an SMS they all should always succeed. In case any one of the test fail, no further tests will run. Instead, the VRAM contents will be dumped on screen to check what happened, so we will be able to see what's going on - do we get a skipped byte, a missing write or one byte gets written twice? Please report back if some test fail, with full details (pictures would be great!) Pressing 1 will re-run the test. It works in SMS mode. |
|
![]() ![]() ![]() |
|
|
![]() |
It's been a long time but I did take apart my Nuby back in the day and at least part of it is definitely glued together, it was a destructive process to disassemble it. I can't recall if it had a resistor.
Don't worry about dropping the resistance, the GG mode pin just wants to see a low voltage (<0.8V) or a high voltage (>2.0V). Any resistance of say 1K to 10K would be sufficient. If you add a second 4.7K resistor in parallel it's still around 2.3K and that's fine, it won't damage the system, confuse the GG mode logic, or drain the battery. |
|
![]() ![]() ![]() |
|
|
![]() |
I had this adaptor from Tectoy, back in the 90s. It had a warning in the box (or the manual, I don´t remember exactly, but it was there) saying it was not guaranteed to function with 4MB cartridges. And that was what happened. Back in the days, I tested it with R-Type, Afterburner and Phantasy Star. All showed those glitches. It is odd because a long time after that, I saw people in the internet saying they never heard about this, and their adaptor worked fine with any cartridges. |
|
![]() ![]() |
|
|
![]() |
anyone? :| @bsittler, I'm especially looking at your oldest Game Gear, the one that was exhibiting the most differences depending on the cartridge used for the tests... |
|
![]() ![]() ![]() |
|
|
![]() |
ok so I missed this post altogether and Sverx pointed me to his new test program.
Results are it fails on both my VA0 (Twin ASIC) and passes on both my VA1 & VA5 units, so seems limited to the Twin ASIC model. |
|
![]() ![]() |
|
|
![]() |
Hi! Somehow I missed all the updates on this thread. I'll attempt to burn the updated test program to a cartridge and try it | |
![]() ![]() |
|
|
![]() |
VDP_Timing_Test2.sms results:
... or should I say, "old hardware is flaky and may be failing in mysterious ways". On early JP model B0051252, battery-powered using Kentli rechargeable AA cells with internal voltage conversion circuitry Pre-"X" EverDrive GG (three different ones): all tests pass in 10/10 runs EverDrive GG X7: first run 26 fails; subsequent 9 runs 28 always fails Another EverDrive GG X7: all pass on first run, on second run 26 fails, on remaining 8 runs 28 fails "FLASH GEAR GG" pirate EverDrive GG clone: all tests pass in 10/10 runs Mortoff games reflashable SMS cartridge... ... in Master Gear Converter (some runs) or MS2GG converter: first run 26 fails; subsequent 9 runs 28 always fails ... in Master Gear Converter (other runs) or in Beeshu Gear Master or Nuby converter: all tests pass in 10/10 runs My other 2-ASIC Game Gear (the one with a screen mod that has been reshelled so I don't know the serial number) always fails these tests. Other Game Gears I have seem to always be fine. I believe they are all 1-ASIC models. As a point of reference, Analogue Pocket always passes. I think it's actually running an SMS core rather than a GG one anyhow in this case though. This is with firmware 1.0 (still need to install latest 1.0a update) |
|
![]() ![]() |
|
|
![]() |
Some more flash carts in the same device:
Krikzz Master Everdrive/EverDrive SMS with microSD card inserted via BaseQi iSDA 350A shortening microSD to SD adapter... ... in Beeshu Gear Master (first attempt) or Master Gear Converter (first attempt): first 5 runs pass, 6th fails on 26, last 4 fail on 28 ... in MS2GG converter (two attempts), Beeshu Gear Master (second attempt) or Master Gear Converter (second attempt): first run passes, second fails on 26, remaining 8 fail on 28 ... in Nuby converter (two attempts): first two runs pass, 3rd fails at 26, last 7 fail at 28 Krikzz Master EverDrive X7 (two different ones, 1 is "smoke" shell and 2 is "black" shell)... ... in Beeshu Gear Master (two attempts * two cartridges): all tests pass on 10/10 runs ... in Master Gear Converter (cartridge 1, first attempt and cartridge 2, second attempt): first run fails on 26, all subsequent runs fail on 28 ... in Master Gear Converter (cartridge 1, second attempt): first 3 runs pass, 4th fails on 26, all subsequent runs fail on 28 ... in Master Gear Converter (cartridge 2, first attempt): first 6 runs pass, 7th fails on 26, all subsequent runs fail on 28 ... in MS2GG converter (cartridge 1, both attempts and cartridge 2, second attempt): first run succeeds, second run fails on 26, remaining 8 runs fail on 28 ... in MS2GG converter (cartridge 2, first attempt): first run fails on 26, remaining 9 runs fail on 28 ... in Nuby converter (both cartridges, both attempts): all tests pass on 10/10 runs Pirate "KY" EverDrive SMS/Master EverDrive clone (microSD based)... ... in Beeshu Gear Master (both attempts), MS2GG converter (both attempts), or Nuby converter (first attempt): first run fails on 26, remaining 9 runs fail on 28 ... in Master Gear Converter (both attempts): first 3 runs succeed, 4th fails on 26, remaining 6 runs fail on 28 ... in Nuby coverter (second attempt): first run passes, second run fails on 26, remaining 8 runs fail on 28 |
|
![]() ![]() |
|
|
![]() |
Thanks you @thatawesomeguy and @bsittler for the tests!
Now I'm again quite puzzled by the results and unfortunately I suspect there's some bug hidden in my code anyway, given your sort of consistent fails after one fail happens. Also I realized I might need a different pattern to be able to clearly tell what's going on, so I'll improve the code and I'll post a better version as soon as I can. Said that, the most striking thing to me is surely that it seems that failure can only happen when two conditions are present:
... which means that there are Game Gears that won't show this problem whatever the cartridge is and some cartridge that won't show this problem whatever the Game Gear is. This sort of scares me but I'll keep on investigating. *** EDIT *** Apologies, I just found the bug in the code. So after the first failure, you won't get anything else than failures when you press 1 and run the test again. So if you don't get any failure, that's fine, that test result is confirmed. If you instead get failures, please consider only the first one reported as a real failure. I won't release a fixed version immediately, as I want to change the pattern first to perform a slightly better check. Sorry again. :( |
|
![]() ![]() ![]() |
|
|
![]() |
Here's the updated ROM, now hopefully bug free (but... does this thing really exist anyway? ;) )
This updated test now writes to VRAM a repeating sequence of 4 different bytes ($AA, $55, $12, $ED) instead of just the first two, so that it would help me understand what's exactly going on when a failure occurs. I don't really expect much different outcomes (well, apart from the effect of the bug) but I do hope to get some nice pictures of what the glitch look like. Thanks for the help! |
|
![]() ![]() ![]() |
|
|
![]() Last edited by bsittler on Sun Jan 02, 2022 8:33 pm; edited 6 times in total |
Bugfix confirmed, failures are no longer "sticky"
More testing soon, but v2.1 seems happier. On screen-modded unknown-serial 2 ASIC Game Gear using Mortoff games / retrocircuits flash cart via Nuby converter, some runs succeed and others fail on 26 like this: (see attachment) (cut off screen edges are normal, i adjusted the screen mod's scaling but that doesn't change the fact the GG SMS mode has a narrower visible screen than a real SMS, only displaying 240 SMS pixels instead of 256 like a real SMS or Mega Drive/Genesis would in these modes) replaced photo with hopefully smaller cropped and zoomed visible screen area Also loaded it on one of the EverDrive GG X7's and in that same screen-modded Game Gear it passes on about half the runs and fails on 26 for the remainder (out of around 30 runs). With a second ED GG X7 it passed on 10 out of 20 runs and failed on 26 for the rest Also loaded it on one of the EverDrive GG's (pre-X) in that same screen-modded Game Gear and out of 30 runs it passes on 18 and fails on 12. On another EverDrive GG it passed on 7 runs and failed on 13. On a third EverDrive GG it passed on 14 runs and failed on 6 runs. Pirate "Flash Gear GG" EverDrive clone cart failed on 7 runs out of 20. Master EverDrive/EverDrive SMS (pre-X) in Nuby converter passed on 14 runs and failed on 6 runs out of 20. All observed failures were in the 26 cycle test. |
|
![]() ![]() |
|
|
![]() |
With Mortoff games/retrocircuits SMS cartridge inserted via Nuby converter in the unmodded old JP 2-ASIC GG (serial B0051252) I got passing results on 49 runs and one failure on 26. Unfortunately I failed to capture the one failing run with my camera
With EverDrive GG X7 in the same GG it failed on 26 in 8 out of 20 runs. With another EverDrive GG X7 it passed on 8 out of 20 runs and failed at 26 for the other 12 runs With old pre-"X" EverDrive GG in the same GG it passed on 50 runs out of 50. Same behavior with a different EverDrive GG too, passed on 50/50 runs. Also same behavioor on a third EverDrive GG, passed on 50/50 runs. Pirate "Flash Gear GG" EverDrive clone cart passed in 50/50 runs. |
|
![]() ![]() |
|
|
![]() |
Apologies, I have reached 100 MB upload quota for smspower forums and can't upload any more. I did try to reduce photo sizes but my phone's editing software is not good at reducing size of photos in bytes | |
![]() ![]() |
|
|
![]() |
Pretty much the same result, intermittent either all pass or it always fails on 26 cycles.
|
|
![]() ![]() |
|
|
![]() |
Thank you both again for all the info! :)
So I'm trying to wrap all this in simple plain English, let's see if I can do it (please check if I get something wrong).
I'm still very confused about how can the cartridge affect this. About the glitch itself, it seems that whėn it happens we get a 'successive' byte value written at the 'previous' address, though the destination index gets anyway incremented correctly so if you're writing A and B you'll get only B written at the first location and the second location write will be skipped. Not sure if this is exactly what would happen on an SMS when writing at 25 cycles/write for instance, but I suspect it might be the case. |
|
![]() ![]() ![]() |
|
|
![]() |
Your summary looks accurate to me. My best guesses at this point about how cartridge/adapter choice influences it is it is (a) a current or voltage drop effect (different flash cartridges drawing different amounts of power affecting what is available for the VDP), or (b) a capacitance, crosstalk, or other interference effect (capacitive coupling or active components in cartridges or adapters introducing noise into signals that unfortunately influence VDP behavior at critical points in the VDP processing cycle)
Just guesses though Opening up an adapter and/or console and introducing some filtering capacitors and/or shielding might help to narrow it down. Adding buffering circuitry might help even more, though it would need to be done carefully to avoid breaking TV tuner functionality I think |
|
![]() ![]() |
|
|
![]() |
Another test to run: try introducing a game genie and see whether failure rate is impacted | |
![]() ![]() |
|
|
![]() |
don't they work by injecting code when vblank happen? this test performs writes during vdraw... |
|
![]() ![]() ![]() |
|
|
![]() |
I believe they only do that when "activated". When not activated they should just add a bit of power draw and circuit trace length/capacitance, maybe a bit of electrical interference too. |
|
![]() ![]() |
|
|
![]() |
I believe that's what PAR does (it swaps to run its code to update the inputted RAM cheats). As I understand, what Game Genie is something like it watches the Address bits of the bus and when it detects a match to the (encoded) addresses, swaps in the encoded Data. I'm not sure if it injects code (I would suspect not, I'd assume some sort of logic level operation) but since they effectively ROM patches, it couldn't be vblank. I would be interested to know if GG introduces a detectable delay in code. My one relevant experience with a GG is that I had a SNES one with Roadrunner's Death Valley Rally and the game (and I've read potentially other Sunsoft games) had a clear anti-cheat protection that would crash the game every time it was started with the device attached. Though some have had the GG would leave behind a detectable RAM pattern when used, explaining why a game could crash itself even when no codes were used. |
|
![]() ![]() |
|
|
![]() |
Ive dug out a couple of 2 asic game gears and found the same results as others where the 26 cycle test fails at random. All other tests pass.
This was run from a flash based mycard, which was in a card catcher, then a mkIII to sms adapter, then a gear master. I didn't try it on my ever drive as i couldn't find a sd card reader. Just as a thought.. is this test running from the cart, or being copied to memory and running from there? If its running off the cart, would copying it to memory first and running from there be helpful to see if that changes the randomness caused by various cart/adapter combinations? |
|
![]() ![]() |
|
|
![]() |
I badly want to see a picture of that! :D
well, I didn't think about that. Do you suspect that if the code runs from RAM and there's no cartridge ROM access we might get 100% success rate? (Because the copy already is RAM to VRAM, but sure the code runs from ROM...) |
|
![]() ![]() ![]() |
|
|
![]() |
Here you go. If you want a really silly collection of adapters... Here is game gear with a gear master then an export to mkIII adapter, then a mkIII to export adapter, then an export to GG adapter, then another gear master with an ever drive in it.
I was just thinking if the code ran entirely from memory then the cartridge shouldn't really be "doing" anything which may help with weird power requirements or errors related to any access from it assuming adapter/cart combinations are at fault. I guess it depends how the particular cart actually functions. Granted it would still be attached to the bus, but i kind of feel that if it were adding extra noise or capacitance etc. to the bus that youd have signs of other problems as well, not just the VDP write issue we are seeing. |
|
![]() ![]() |
|
|
![]() |
Thanks for the pictures! :)
sure we can try this! Will do a 'run from RAM' version ASAP. |
|
![]() ![]() ![]() |
|
|
![]() |
So here's version 2.2
Now the tests are run from RAM (the code that writes to VRAM it's copied in RAM and run from there with Z80 interrupts disabled, thus there should be no ROM access at all at that time). Let me know if you got any clear difference edit: this is also using the GG safe timings to display the text on screen so there shouldn't ever be any more skipped letter. |
|
![]() ![]() ![]() |
|
|
![]() |
Thanks..
Just tested this on one of my 2 asic units and it still fails on 26 cycles in the same way. So i guess that hasn't changed anything. |
|
![]() ![]() |
|
|
![]() |
yeah I didn't really expect any difference but it was worth a try | |
![]() ![]() ![]() |
|
|
![]() |
Missed this post! I just grabbed my twin asic and ran these tests.
I used my everdrive x7 pro, and a modified "mono poly" cart I turned into an EPROM based flash cart inside a master gear adapter. I didn't burn an EPROM of the 2.2 version, just the 2.1, as both had about the same number of pass/fails off the everdrive, but I could if you thought it would be beneficial. you can see the SMS cart in the master gear pics, my 1 or 2 fingers denote 2.1 or 2.2 respectively. |
|
![]() ![]() |
|
|
![]() |
thanks for the tests, more confirmation is always nice :) | |
![]() ![]() ![]() |
![]() |
Goto page Previous 1, 2 |