We thought we'd give everybody a little insight into our painfully long, but now concluded, journey of selecting a PlayStation A/V connector for our PS1 adapter.

 
Model 2 Genesis to PlayStation 1 Adapter (Prototype)

Model 2 Genesis to PlayStation 1 Adapter (Prototype)

 

Chapter I: Bad Omens

The roots of this can be traced way back to July 2015, when I helped build FireBrandX a PS1 RGB JP-21 cable so that he could create XRGB-mini Framemeister profiles for PS1. His typical supplier for his cables were out of stock at the moment, so I offered to help. For this, I used an A/V connector I salvaged from a junky aftermarket PS2 YPbPr cable I got off eBay. After building the cable, I tried it out on a couple of PS1 consoles and noticed that on at least two of them, the fit was extremely tight, both on insertion and removal. I also tried fitting it in a couple PS2s, which didn't feel nearly as tight as the PS1s. Anyway, I informed him about this so he was aware, but it didn't affect his testing and he was only using it temporarily to create the profiles.

After getting my first taste of a poor A/V connector fit, I tried a bunch of different cables I had lying around. I noticed that the first no-name PS2 YPbPr cables I had ever bought several years prior fit way better than the newer ones I had on hand. There are two distinguishing features to the older 3rd party cable: (1) the plastic part of the connector has an oval indentation, and (2) the audio wires are held together by a piece of heat-shrink tubing instead of a plastic clip. Also worth mentioning, both the official Sony branded PS1 SCART and PS2 YPbPr cables I owned fit great without any issues.

Distinguishing features between "bad" fitting cable (left) and "good" fitting cable (right)

Distinguishing features between "bad" fitting cable (left) and "good" fitting cable (right)

Official Sony PS2 YPbPr (left) and official Sony PS1 RGB SCART (right)

Official Sony PS2 YPbPr (left) and official Sony PS1 RGB SCART (right)

I bought a bunch of samples from various eBay vendors to see if I could find the better fitting version. After many failures, I got lucky with a seller in Canada. After confirming the sample was what I wanted, I asked the vendor for more information on where these were acquired from. He didn't know anything beyond that he's selling from the same batch he's had for years, so I instead purchased a box of about 20 pieces. The intention was to hold onto them in case we needed plenty of samples to send to future suppliers for a match. At this point in history, Nick and I were still intending to build our SNES & Genesis YPbPr cables in the USA, so we were dealing with Chinese suppliers directly.

 

Chapter 2: A Futile Search

Fast forward 6 months to January 2016, when we flew in to meet our newly hired contract manufacturer (CM) for our SNES & Genesis YPbPr cable project which was in the process of being transferred to production. While there, we gave them some A/V connector samples for Saturn, Neo Geo AES, and PlayStation. This included one "bad" PS1 connector and one "good" PS1 connector. Throughout 2016, we received various samples our CM acquired from overseas. Neo Geo was a one-and-done deal, while we rejected three Saturn samples before landing on one that worked. However, every PlayStation connector we received was of the "bad" fitting variety. We rejected several of these, and this prompted an analysis into why these fit worse than the "good" variant we were happy with.

Two incorrect Saturn connector samples (left) and one correct Saturn connector sample (right)

Two incorrect Saturn connector samples (left) and one correct Saturn connector sample (right)

It turned out that the tension introduced by the displacement of the metal pins were the cause of the excess force required for insertion/removal. In the "good" variant, the pins had more room to move upward while they pressed up against the flat surface in the mating console connector. A closer analysis showed that the construction of the pins in the official Sony connectors were much different than either aftermarket version. Instead of a solid piece of metal being displaced, in the Sony connector the tips were bent and folded back to form a springy type of contact during mating. The problem with the solid non-springy types was that while they fit OK in composite video applications with only a few pins populated, the ones sold for RGB applications have all 12 pins populated, increasing the amount of tension significantly. We confirmed this suspicion by taking a tight fitting "bad" connector, clipping all the pins, and then seeing that the fit transformed from a death-grip into something that slipped in and out like butter. Regardless, after much reluctance we finally said "OK" to the poorly fitting connector (for now) since that's all they could find and we wanted to proceed with the project.

Solid pins (aftermarket) vs. springy pins (official Sony)

Solid pins (aftermarket) vs. springy pins (official Sony)

After finishing up signal measurements for Saturn and PlayStation, we were able to calculate internal resistor values and create technical drawings in February 2017 to send to our CM for quote. Based on our drawings, I made prototypes using the sample connectors to verify the electrical design. When testing out the PS1 adapter, I had so much trouble removing it from one PlayStation console that I elbowed some drywall (ouch!) with the excess force when it finally disengaged. This event, combined with other opinions from friends and colleagues, put us in a position where we were no longer comfortable with using this connector. Therefore, we put the PS1 adapter project on hold and asked our CM to take more time in locating something else.

During Spring 2017, our CM sent us a couple new connector samples. Although they were slightly different in construction, they still didn't fit any differently than the previous samples since they used the same solid non-springy pin design and didn't include excess room for the pins to easily displace upward. In parallel with this, I started buying every aftermarket PlayStation cable variant I could find which had all 12-pins populated. I wanted more data points to verify that everything being manufactured these days were all using the same tight-fitting connector variants. This unfortunately ended up being true, which meant that the better fitting variant we encountered a while back is an old design that is no longer "in print".

Contents of "the PS1 Box", i.e. various cable/connectors we tried

Contents of "the PS1 Box", i.e. various cable/connectors we tried

Chapter III: The Custom Connector Debacle

With all these roads leading to failure, in May 2017 we asked our CM if they could subcontract a supplier to spin us up a custom connector with springy pins like what the official Sony cables had. We bought and sent them a couple official Sony PS3 YPbPr cables to base the design off of. They asked around and finally found one factory which said they would do it for $(a large sum of money)....all in advance. Another caveat was that they first required us to specify hard numbers for the upper and lower limits of insertion/removal force, such that they could properly validate the design once completed. Because we were planning to eventually build PS2 YPbPr cables using this same connector, we were able to justify spending this kind of money upfront since this cost could be absorbed across more units. Up against a wall at this point, we agreed to proceed down this path and began figuring out min/max force specifications for insertion and removal.

We had never done this type of analysis before, and I actually got help from some mechanical engineers at my day-job. I purchased a force gauge which I estimated to be in the correct Newton range and prepped three different connectors for test:

A = Bad fitting aftermarket

B = Good fitting aftermarket

C = Official Sony from PS3 cable

We attached a PlayStation 1 console to a special table so it was properly held down and immovable. The force gauge came with a flat plate-looking thing for push (insertion) testing, and a hook for pull (removal) testing. The push was straightforward, but the pull required a small hack where we drilled holes in the connectors and attached thick zip-ties to form a feature for the hook to grab onto. The force gauge had a RS-232 serial port for connecting to a PC with the provided software, so we were able to view the measurements in real time and record them.

Force gauge, push/pull attachments, and A/V connector samples under test

Force gauge, push/pull attachments, and A/V connector samples under test

PlayStation A/V Connector - Force Measurement Data

PlayStation A/V Connector - Force Measurement Data

After getting the data, Nick and I needed to distill this down into min/max numbers we could provide to the sub-contracting factory for design verification. We used numbers we found in both the HDMI and USB specifications as rough starting targets since the HDMI Type-A and USB Type-A plugs are of similar physical size and require a similar grip by the end-user. First, we had to quickly study up on the standardized testing method used for HDMI/USB and defined in EIA-364-13. Our force gauge measurements on the PlayStation connectors were not tested the same exact way, so we had to make some minor adjustments to these numbers to account for the difference in test method. We spent a good deal of time playing around with the limits, considering typical uses, worst cases, best cases, and various other nuances. Since we were going to be paying a great deal of money, we wanted good specifications but also needed them to be reasonable and achievable. After a few nights of discussion, the limiting values we settled on were sent to our CM in early Summer 2017 so they could pass them off to the factory.

 
PlayStation A/V Connector - Desired Force Specifications

PlayStation A/V Connector - Desired Force Specifications

 

The first thing that we heard back was that the price changed to $(even more money), still all upfront. Being out of good options, Nick and I reluctantly agreed and asked for an official quote. In only a short amount of time we were informed by our CM that this factory changed their minds and didn't want to offer this service anymore. This left us with the impression that this factory was toying with us and had no intention of ever doing this, instead quoting high numbers in an attempt to shoo us away. This was a huge bummer, and there was nothing we could do at that point. We had no one else on deck that wanted to take on the job of creating tooling for a new connector, not to mention that we were already behind schedule on getting the PS1 adapter into production. Therefore, this path for designing our own proper PlayStation connector was scrapped. Although a lot of time was seemingly wasted on this approach, we still learned a lot of valuable information in the process.

 

Chapter IV: A New Hope

It was the end of Summer 2017 at this point. Our last ditch effort was to search on our own for aftermarket connectors, since we were more familiar with what we wanted than our CM was. Nick took photos of the features we wanted (oval indentation & heat-shrink tubing) and spent many late nights chatting with overseas suppliers. While Nick was working on this, I was experimenting on a separate compromise plan which involved removing unused pins from the connector to reduce mating tension. Removing two pins provided a barely noticeable difference, while removing a third was a satisfactory improvement. It was still tight, but no longer a "death-grip". Unfortunately, Nick's quest ended up in nothing except additional bills for sample shipments. Despite pictures from the company that suggested they might have the "good" connector, everything we received was no different than what we already had. It was once again confirmed that the "good" connector was no longer manufactured.

Our only option at this point was the pin-removal approach. To avoid confusion and just to make things simpler, we wanted to use the same connector for the PS2 YPbPr cables we intended to make. Even though the PS2 YPbPr cable can drop some additional connector pins, we were less concerned with PS2 and PS3 console connectors since the fit is way less tight than with PS1 consoles. We asked our CM if they could get the connector supplier to provide the connectors with the pins already removed. At first, they only provided a procedure that our CM's factory would have to follow, but that could result in a significant percentage of damaged connectors. In an attempt to finally move forward on finalizing a solution, we agreed to cover any losses occurred during this process. However, we finally caught a break in this nonstop pummeling of failure, because after some additional negotiations the supplier changed their mind and agreed to remove the pins themselves. We altered our drawings, got revised quotations, and placed an order for the plastics tooling required for both the PS1 adapter and PS2 YPbPr cable.

 
Snip from PS2 YPbPr Cable drawing indicating removal of pins

Snip from PS2 YPbPr Cable drawing indicating removal of pins

 

And that's where we are right now. Samples for the PS1 Adapter and PS2 YPbPr are expected to arrive in January 2018. If everything goes well and they are approved, we will proceed into production. Hopefully all the snags we encountered in this insanely long journey are behind us and we can provide you with solutions for the PlayStation series of consoles very soon.

Posted
AuthorSte Kulov

We have just received word that the next production run of SNES & Genesis YPbPr cables has been completed and is en route to the port for sea travel to the USA. We are still aiming to get them ready for sale before this summer, as planned. We will be working on final pricing, quantity limits, and a sale launch date in the meantime. Once settled, this information will be conveyed to you in a future update.

The factory is in the middle of producing Genesis YPbPr cable adapters for use with the Genesis 1 & Master System 1. Alongside these adapters, which we've produced before, they are also creating the brand new adapters for Neo Geo AES & Sega Saturn. Once all three types are finished, the plan is to air ship them to us so that they will be up for sale at the same time as the YPbPr cables.

Regarding the PS1 adapters, we are leaning on some experts to help us design tests to measure the insertion/removal force requirements for the PS1 connectors. The factory requires this information before we are able to finalize a new design that doesn't have a death grip on the console's A/V port.

We've also resumed working on various aspects related to the design of the Dreamcast YPbPr cables. However, based on past data we recognize that our productivity on this will take a major hit during a month or two following the next SNES/Genesis YPbPr cable release date. This is when we will have to divert most of our resources toward providing technical support.

 

 

Posted
AuthorNickolaus Mueller

Here is the latest newz:

1) Work on the cables is progressing along smoothly. We received samples of the new build, and they tested perfectly. There were some minor cosmetic issues with the samples, but all appear to be easy fixes for production.

2) We submitted a purchase order last week for adapters to use with the Genesis 2 cable. These include more adapters for Genesis 1, as well as adapters for Neo Geo AES and Sega Saturn. Although the design and documentation is complete, we did not place an order for PS1 adapters. Upon further inspection and testing of the PS1 connector samples, we are not satisfied with the connector fit with certain models of PlayStation consoles. We are continuing to search for an alternative connector supplier and also exploring the possibility of having a new connector re-tooled for us.

3) B-Stock cable repairs are still on the to-do list. Sorry, it has been low priority compared to all our other development and factory support tasks.  We hope to get to this soon and will definitely post more info when we're ready.

4) We started a monthly podcast called The Retro Roundtable, that features us alongside Voultar's Mod Shop, db Electronics, and RetroRGB. The first episode aired Feb 18th. It is available on YouTube, iTunes, and Google Play. All of this is being compiled in a central location at: www.theretroroundtable.com   The podcast is streamed live on Twitch and YouTube, and we make announcements for the dates on Twitter and Facebook.


Speaking of which, if you don't follow us there yet, here are the links:
www.twitter.com/hdretrovision
www.facebook.com/hdretrovision

Now, enjoy some pictures of the Saturn adapter in action:

Posted
AuthorNickolaus Mueller

You may have noticed that we published Game Genie codes for Genesis along with the release of our last post. Here's how we did it.

Introduction

This blog post is a follow-up to our previous blog post, in which we demonstrated the method we used to derive Game Genie codes to get Super Mario World to run in 480i on the SNES. Here we will demonstrate the method used to derive the 480i Game Genie codes for the Sega Genesis, which is different enough that it deserves a separate treatment. We've already posted the Game Genie codes we've come up with thus far over on our Free Stuff page, so you can jump right to that if the technical details are of no interest. (Reminder: This is not intended for game play!) For the rest of you, let's go do some coding!

The Sega Genesis VDP

In our 480i SNES post, we showed how setting the least significant bit (b0) of register $2133 to have a value of 1 would tell the SNES to use its 480i mode instead of its 240p mode. The way this is accomplished on Sega Genesis VDP (Video Display Processor) is different. On SNES, the CPU has direct access to the register that controls (among other things) the interlaced vs progressive setting. Therefore, those settings can be altered with a simple command, like LDA $2133. On Sega Genesis, the register that contains these settings is not accessible in the same way. Instead, it lives inside the VDP which you must communicate with through a dedicated control port that sits at address $C00004. The best resource we have found that talks about how the Sega Genesis VDP works can be found here.

The relevant register that we need to alter is $0C - Mode Register 4. To communicate to this register, we have to write a word (two bytes) to the control port. The first byte needs to be the register we wish to alter, with one change: the most significant (left most) bit must be switched to 1. For $0C (written as 0000 1100 in binary) our first byte in the word will be $8C (1000 1100). For the second byte in our word, we write the new value we wish to set for that register. In register $0C, b2 and b1 are the bits that relate to the interlace vs progressive setting. When b2=b1=0, the Genesis will operate in its typical 240p mode. When b2=0 and b1=1, the Genesis will operate in 480i mode similar to what we did with the SNES (**SEE NOTE AT END**). Finally, when b2=b1=1, the Genesis will operate in a different 480i mode, the scope of which is beyond this post (think Sonic 2 versus mode). The last combination, b2=1 and b1=0, is undefined and should not be used.

The second byte in our word will depend on what is already being written to that register, since we don't want to alter the other bits. We simply want to change b1 to take on a value of 1 while leaving b2 as 0. The proper way to do this would be to add some code that ORs the current value of the register with $02 (0000 0010 in binary), but that would be very difficult or impossible to accomplish in 5 Game Genie codes. Instead, in the next section we'll use a tool to inspect the value that register $0C takes on in the unaltered ROM, and use that knowledge to flip b1 of that value to one. Anecdotally, every single ROM I looked at while experimenting with this procedure had a value of $81 (1000 0001) in register $0C before I started altering it. Flipping b1 thus resulted in the new value of $83 (1000 0011). When this is the case, it makes the word that we want to write to $C00004 the following: $8C83.

The Method

Fortunately for the enterprising Game Genie code developer, development on the Genesis is a bit easier (despite the fact that ramping up on how everything worked was a little harder). For starters, one main tool covers almost everything we need to be able to do: Exodus. I used v2.0.1 for this demonstration, and while I found it to be quite buggy, I was able to get by. 

Exodus v2.0.1 with VDP Register window

Exodus v2.0.1 with VDP Register window

After extracting the ROM from a cartridge using the Retrode, the first step we took was always to run the game to a startup screen, pause, and then open up the VDP Register monitoring utility from the Debug menu. This is where you can find out what value is currently sitting in register $0C (for Sonic the Hedgehog shown above, it is set to $81). This value is important for two reasons: (1) we know to look for $8C81 being written to $C00004 in the assembly, and (2) we use it to determine that $8C83 is the new value that we wish to write by flipping b1 from 0 to 1.

2.PNG

The next step is to use the Main 68000 Active Disassembly tool, also found in the Debug menu. As shown in the image above, we enabled data capture settings from $000000 to $004000 (this may need to be increased for some games). From there, simply reset the ROM and run the game to the first moment of actual game play. Once there, you can pause, press "Analyze" and output the result to an asm file. (Be patient! This takes some time and the file size is typically around 90MB.)

Now we have to deal with the trickiest part to this whole mess: finding where $8C81 is being written, and then overwrite it using the Game Genie. There are basically two scenarios to deal with. The first case, and the one Sonic the Hedgehog uses, is that the values $8C and $81 get plopped somewhere in memory and then read later on into $C00004. Using a decent text editor like Notepad++, you can open up the .asm file saved off in the previous step and start hunting. The search term I recommend looking for in this case is "$8C, $81". Once you've found all the instances of that - and for Sonic 1 there is only one - take special note of where it says something like "loc_000012A0:". This piece of information tells you where in the ROM that block of code begins. It's back to Exodus one last time to use the ROM editor to pin down where exactly $8C81 lives.

Starting from $012A0 on the ROM, we scan until we find $8C81 and then use our mouse to hover over the location. The tooltip that pops up tells us the address is $012B6. Just as in our previous post, we'll write the change we want to make in the format address : new value. The only difference is that for SNES a single Game Genie code overwrites a byte at a time, and for Genesis a single Game Genie code overwrites two bytes at a time. The only change we want to make for Sonic 1 is then 0012B6 : 8C83.

Game Genie Code Converter

Game Genie Code Converter

Just like we did for SNES, we'll rely on the Game Genie Code Converter to do the hard crunching from hex code to Game Genie code. This returns the only code needed to get Sonic the Hedgehog to run in 480i mode:

TNKA-A3F0

Let's try it out on real hardware!

We have to look at a different game to encounter the other scenario that I've found. In X-Men, the value $8C81 is written to $C00004 in a single line of "immediate" assembly code (the # sign) rather than storing the $8C81 in a temporary memory location and writing the contents of that location to $C00004. After applying all the same techniques up to opening the file in Notepad++,  a search for "$8C, $81" will fail. An alternative that works is to search for "#$8C81". One of the two locations it can be found on X-Men is shown in the image below.

6.PNG

From there we simply follow the same path of finding the exact locations using Exodus's ROM editor tool, and then rewriting the words at those locations to be $8C83 instead of $8C81.

Wrap Up

This post is intended to be useful for understanding the techniques used to derive 480i Game Genie codes for Sega Genesis, but it may not be complete. There may be other scenarios out there that I haven't come across, in which case the next steps I would take are (1) changing the search to look for "C00004" and trying to find relevant writes to the control port that way, and (2) expanding how much of the ROM you want to actively disassemble. 

**NOTE FROM STE** The Sega Genesis 480i mode has a slightly non-standard vertical refresh rate, and therefore may cause some compatibility issues with displays that reject anything that isn't at exactly 59.94 Hz. 

 

Posted
AuthorNickolaus Mueller