Sega Genesis Controller Repair

Sega Genesis Controller Repair
 


   Let's admit it, retro video game consoles and accessories are old; however, that doesn't make them not interesting from an electronics and software engineering standpoint! Although some retro video game consoles and accessories can be reproduced in newer forms for the fanboy (such as clone consoles and new video game controllers from aftermarket companies such as retro-bit), nothing beats the 100% compatibility and authenticity of original hardware and accessories. It is important to preserve the old hardware, reverse engineer and document the secrets and specs of the hardware for homebrew development and emulation, digitally backup the games for future generations to enjoy, and to take care of the hardware. Because once it is gone, it's gone.

   Although not hard to reproduce or to find new ones being produced, today we will be discussing how to repair and maintain your 1st-party Sega Genesis 3-button controller. This guide should carry over to 1st-party 6-button controllers, as well as for 3rd-party controllers with some variation. After playing on my ol' Genny with some friends a few weeks ago, I found some of the buttons on my pre-owned controllers I bought at the retro video game shop were becoming very unresponsive, if responsive at all, so I Googled how to fix the issues. It's a lot better to repair the hardware then to spend a few hard-earned dollars on new hardware, especially if on a budget!
 ====================================================================

Theory

   The most common problem with Sega controllers are the button contacts. These button contacts are similar in style to cheap calculator contacts or to microwave buttons. For the buttons on both of those devices, the button assembly consists of 5 main components:
  1. The physical button itself (usually with a label of what it does)
  2. The button contact (underneath the button itself)
  3. The PCB board with the electronics circuity
  4. The PCB contact
  5. Physical mechanism to retract the button to normally-opened position
   By pressing the physical button (component #1), the button contact (component #2) makes physical and electrical contact with the PCB board and the PCB contact (components #3 and #4). The physical mechanism (component #5, usually component #2 the rubber button contact) brings the button back to its normally-opened state after being pressed and released. The PCB contact is usually a yellow circle with electrical breaks in it. By pressing the button, the button contact (a black circle which has some type of electrically conductive material on it) closes the circuit at the yellow PCB contact, allowing the circuit on the controller and in the console to register a button press for an action in the game's code to occur. The problem with most pre-owned, 2nd-hand Genesis controllers is the dirtiness inside the controller, on those button contacts, and on the PCB contact. Depending on where and how the controller is stored, and after repeated button presses over the years, dirt can build up on those components, and reduce the button's ability to initiate electrical contact.

======================================================================

How to fix these issues

   To fix these issues, you will need to open up the controller and remove the dirt from components #2-4 above using rubbing alcohol. You will need the following

  • Appropriate sized Phillips screwdriver for the controller screws
  • Replacement screws (optional)
  • Dixie cup
  • Bottle of Rubbing alcohol (50%-70% strength recommended)
  • Q-Tips or Cotton swabs
  • Genesis game or Flashcart
  1. Remove the 6 screws from the bottom of the controller. Keep them handy. Optionally, if they are stripped, rusted, or in bad mechanical condition (like mine were), replace them with similar screws. Separate both halves of the controller


  2. Remove the screws holding the PCB to the controller. Replace if necessary and keep them handy. Carefully detach the PCB's DB9 wire from its notch on the top to remove the PCB.
  3. Push out the button assemblies and D-Pad assembly from the front of the controller. The D-Pad has a rubber mechanism which should also be removed. Remove the rubber button contacts from the switches, but remember which buttons they goto.


  4. Pour some rubbing alcohol solution into your Dixie cup.


  5. Using either your Q-tips or a cotton swap (I prefer a cotton swap), gently wet it with rubbing alcohol and rub it into the PCB contacts on the PCB. Dirt will be lifted onto the Q-tip/cotton swap. Repeat until clean and shiny. Use a dry Q-tip/cotton swab to soak up the leftover Q-tip solution on the PCB and wipe clean. Do the same for the black conductive material on the button contacts underneath the physical buttons, and for the rubber physical mechanism for the D-pad.



     
  6. Using the Q-tip/cotton swaps, clean up the insides of the controllers (mine were pretty dirty from the previous owner).
  7. Reassemble everything



  8. Lastly, plug the controller into your Sega Genesis, and play a game which utilizes all of the buttons. If you are awesome and already have a flashcart (such as the Everdrive MD), I strongly recommend looking for a ROM titled "Multitap - IO Sample Program (U) (Nov 28 1992)" "somewhere" on the interwebs. (El Google is your friend *wink*). This particular Sega program will diagnose controllers by showing button presses for 3-button and 6-button controllers, button presses and coordinates for the Mega/Sega Mouse, and various other Genesis peripherals.
=================================================================
Conclusion

   If you followed this guide (and did not break anything), your controllers should now be much more responsive in trigger button presses, making for a better gaming experience. Mine were quite unresponsive (some button were not even triggering), and this trick worked like a charm. If not, then there could be other issues with your controller (electrical shorts, loose solder joints, worn out rubber pieces for the buttons etc), which you should diagnose and repair/replace.

Happy retro gaming!

-Tamkis

New blog domain!

New blog domain!


     On 02/25/15, EagleSoft Ltd moved its old Google Sites website to its permanent home with a custom domain. Although we originally wanted to also move this blog (formerly hosted at www.eaglesoftlabs.blogspot.com) as a subdomain ("blog") under the domain, we had technical difficulties in doing this, and due to last year's monumental amount of development work, this task was backlogged. While configuring the domain settings today (due to an upcoming renewal/one-year-anniversary the domain for this new 2016 year next month), we tried the steps again, and finally got the subdomain setup!

So we are proud to introduce the new blog domain...
Update your bookmarks!

Enjoy the new, professional subdomain, and keep your eye for upcoming developments this new 2016 year!

The Year 2015 in Review

The Year 2015 in Review


     The year 2015 A.D. for EagleSoft Ltd was a great year! In approximate order, the following is the key events for EagleSoft Ltd in the past year.

     Unfortunately, due to bottlenecks and technical difficulties with the BASIC BEX compiler for Sega, the Ultra Air Hockey Sega/Retro port was moved from BEX to SGDK in Jan 20; this project is still ongoing, but the progress for the SGDK attempt is nearly caught up with the old BEX attempt. EagleSoft Ltd successfully finished and published to the EagleSoft Ltd website its first Unity3D video game, both a v1.0 and v1.1 version of Ultra Air Hockey DX around Jan/Feb 2015, and most importantly, purchased a Google Play License and published a Android port to the Google Play Store around summer 2015. This project was a group project started with a colleague for a Fall 2014 Fundamentals of Software Engineering college class. We also officially purchased and setup a domain for the website (formerly a stock Google Sites one) to www.eaglesoftltd.com on 02/25/2015. During March-April 2015, we published 0xdbin, a computer architecture number utility for a graded class project. Furthermore, key to retro development for the Sega Genesis/CD/32x, funded with a large refund check from my shrewd Uncle Sam, I purchased an EverDrive MD for my birthday, a flashcart that would allow me to test my homebrew projects and hacks On Real Hardware (TM), for debugging discrepancies and issues for the projects between emulators and Real Hardware. The purchase of this EverDrive MD finally finished a quest started in 2011 to assemble the ultimate, retro Sega gaming machine: a Sega Genesis CD 32x with EverDrive MD (and backwards compatible with Mark III SMS games, and some hacked Game Gear games converted to SMS format).


    During Summer 2015, we began work on a second Unity3D video game called StarEagle; however, it has been put on hold currently. Around late Summer 2015 to early Fall 2015, EagleSoft Ltd expanded its social networking presence to a FaceBook Group. During Fall 2015, as part of a graded IED project for college, I began work on finishing a colleague's Unity3D video game idea called Colonial Combat, with a newer project group. The project received an A. This project is currently ongoing now in our own leisure time outside of class. However, on 09/19/15, EagleSoft Ltd's primary development machine, the beloved HP ProBook 4540s, died; may she rest in piece. This laptop I received more or less for free, due to earning a one-time $1000 scholarship at the community college for usage on school supplies, and I greatly miss her. Currently, I am using a loaned laptop from the university for development and primary computing, but its rental is due on 01/15/16. At the same time of the development of Colonial Combat, I worked on finishing an old Fundamentals of Software Engineering Android app called The Equator from another project group for Distributed Systems class, by putting in internet database connectivity. This application was yet the hardest project I ever worked on, due to the old project using MIT App Inventor 2, and having to write very convoluted code to fetch the online database's data and cache it locally onto the device with a hackish local database.







   
     Finally, the year ended with a long-awaited release of Demo #3 of Sonic CD Breakout for SAGE (Sonic Amateur Games Expo) 2015; however, SAGE 2015 has been postponed until later in early 2016. I also finally earned my B.S. Software Engineering degree! Overall, EagleSoft Ltd accomplished much more than expected in the past year, and we plan on doing a lot more next year!




  ________________________________________________________________________________

The Future

  EagleSoft Ltd accomplished creating plenty of software over the past year and in getting its online presence established. Of the highest priority right now, however, is generating funds for a new laptop and getting a job in my field! This current laptop is a rental from the university, which is due on 01/15/16. The important data from this rental and the dead one must be transferred to a permanent home in a new laptop, and time is of the essence. I already have a laptop picked out, but need to find way to fund acquiring this capital in time, due to lack of funds due to college costs last year.

   As for software engineering projects, in 2016, we at EagleSoft Ltd will continue to work on Colonial Combat and Ultra Air Hockey Retro development, both which currently have the highest priority in terms of software development. We may also get back into retro video game modifications (there is a project in the works, TBA, if the project is feasible) too. After those 3 projects, work on StarEagle will resume.




   As for other plans, EagleSoft Ltd is also considering creating live YouTube videos for video game reviews, electronics, and other nerdy stuff. Details TBA in the near future. For the future, we are also looking into homebrew developement for Dreamcast and the Atari XE(GS) consoles, as well as perhaps more Sega homebrew. (We do not have a Dreamcast yet, nor any means to run code on either console On Real Hardware. Also, research needs to be done on how to program both using high-level tools.)



Goodbye 2015, and welcome 2016!
(Hopefully 2016 will be better than 2015)

-Tamkis

SAGE 2015 Delayed

SAGE 2015 Delayed

 
    Bad news :(! The Sonic the Hedgehog fans who were going to host SAGE (Sonic Amateur Games Expo) for 2015 have decided to postpone the event from Dec 2015 until Spring 2016 now. Full details about this delay (and why) can be found at Sonic Retro's post. EagleSoft Ltd submitted a Demo #3 release of Sonic CD Breakout to the event, and was planning on submitting a first demo build of Colonial Combat to the event.

     The good news is that, if the fans running the event allow an extended submission deadline, this gives us a chance to receive and implement feedback and bugfixes from those who have played the Demo #3 release,  to incorporate into a v3.1 release to submit into the now-postponed SAGE event in Spring 2016. It also definitely gives us time to add more levels, FMVs, and improved code to Colonial Combat for the event.


  We will keep the EagleSoft fans/blog readers informed about the extended SAGE date
(and SCD Breakout/CC development) as it occurs :)

-Tamkis

New mobile section!

New Mobile Section!

    Good news! Although EagleSoft Ltd mostly does not like mobile app development for "smart" devices (because we're too cool and old-school for hipster new school), for what few apps for smart devices we may make, we now have a NEW Mobile Section on the website! Check it out; we have a new app for a graded project (mostly as a PoC) for an equations database called "The Equator", and have added a link in that section down to our famous mobile port of UAHDX!

Enjoy
-Tamkis

Sonic CD Breakout: Demo #3 RELEASE!

Ho ho ho! Finally! It's here,
DEMO #3 of Sonic CD Breakout, just in time for Christmas 2015 and SAGE 2015!



    This demo has been in the works for 2 years (since 2013), and is finally ready for a release! To summarize the changes, bugs were squashed, two new zones were created (Desert Dazzle Zone and Quartz Quadrant Zone), 3 special stages were created, and time zone based backgrounds and borders were created for all levels. What is Sonic CD Breakout? It's a Sonic fan game, which is a Sonic CD themed breakout clone, using the BreakGOLD game engine as a total-conversion. For more information about the fan game project, see this page. The latest demo can always be downloaded from that page. READ the readme in order to learn how to install the game, because some "assembly" is required.

This demo #3 is planned to be released for SAGE (Sonic Amateur Games Expo) 2015 Act :)! Will created a post announcing when it has been submitted and hosted at the expo
 
Demo #3 Release Video


Enjoy! C&CC welcomed!

Site cleanup and additions

Site cleanup and additions!


  During the week of 09/20/15-09/26/15, I cleanup up the site and add a few pending items. I converted the leftover, hard-coded URL links to soft-links that will update as pages/content is moved around with our web host provider tools. Most importantly, I added a few pending items, including an update to the music page, now including YM2612 Genesis tunes and YM3812/YMF262 tunes for OPL2/OPL, an unofficial WIP music pack release of the YM2612 and OPL2/3 tunes for StarEagle (with VGM Play) and an official updated release of the YM2612 tunes for Ultra Air Hockey (Retro). Also updated is the main page with the internship project and an addition of an EET page for electronics and a page for Microsoft Office Macros.

Enjoy the new updates and content, and stay tuned for more EagleSoft Ltd development!
-Tamkis

Sonic CD Breakout: Special Stages & Future Dev

Sonic CD Breakout: Special Stages & Future Dev

 
    Way back in 2014, we showed a preview of what was in the works for Demo #3 release of the Sonic CD Breakout fangame, including Desert Dazzle Zone, Quartz Quadrant Zone, and the training special stage. Although in that post we predicted having a release of Demo #3 for Act 2 of SAGE 2014, that did not happen, since we decided to hold off on doing so after we completed both of those zones and of the special stages. Not only did we do that, but we also added dynamic background images depending on each level's time zone. Since that post, we have finished Desert Dazzle Zone, Quartz Quadrant Zone, and also the Special Stages for all of the existing zones! (Desert Dazzle Zone does not have a special stage, as that would create 8 Time Stones, and is not exactly a "cannon" level in Sonic CD.)

Special Stages

   All of the special stages (except Quartz Quadrant Zone and Desert Dazzle Zone) are completed now. The special stage levels are accessible by hitting a silver ring monitor. In the special stages, the players must traverse various level layers (similar to the fan game's Time Zone system) by either moving up or down between by hitting certain up/down arrow blocks (instantaneously, instead of with a wait delay as with the time signposts), in order to find and collect the Time Stone. Certain blocks can be destroyed after up to 4 hits, some cannot be destroyed, and there is a slot machine system which could earn you rings and other prizes. The player must also avoid spike balls, which can cause damage. The layer system is intelligent, graying out and shrinking sprites as layer blocks appear in up to 3 farther layers. However, there are more to just these levels than these features; the players have only 4 "attempts" to get the time stone, as their ring count is set to 90 rings and counts down to zero (no overflow of rings with reset back to zero occurs). If the ring count reaches zero, the player dies, the rings reset to 90 rings, and an attempt is removed. Collecting rings in the stage naturally counteracts the ring countdown. After all attempts are removed, the player is kicked out of the level without the Time Stone! Collecting all 7 Time Stones will allow the player to fight the Final Boss in Final Fever Zone at the end of the game.

Video
 ___________________________________________________________________________

Future development

    However, in the process of making these levels and these further edits, a development roadblock was discovered; apparently, the BreakGOLD Level Editor seems to have some type of maximum, hard, internal limit of producing .bgl level packs upto 3.87 MB. Attempting to make any level pack greater than this (by adding more content) causes the saving of the level pack to fail. We are using the BreakGOLD Level Editor v2.0 that came with the full version of the v2.0 BreakGOLD game, which was acquired on an Breakout collection of games from an eGames Software CD-ROM called "Break!" from Big n' Small Lots (now Big Lots) back in 2004. It is unknown whether the latest, paid, PC, full version of the game has an updated Level Editor that fixes these (and other) known bugs with the v2.0 editor.

  If this bug is not fixed in a possible newer version of the Level Editor, we shall either try to create a small, personal assembly patch for the Level Editor to fix the issue, or just simply breakup the fan game into two parts: Part 1 (up to Quartz Quadrant Zone), and Part 2 (Quartz Quadrant Zone Special Stage up to end of game). If this split needs to occur, Part 2 shall start the player with a "perfect game" from Part 1 (5 Good futures, 3 Time Stones), and start the player with Quartz Quadrant Zone's special stage (it could not fit in the current level pack, due to the hard 3.87 MB limit). We have pushed the engine to its limits with this total conversion for the fan game!

  Regardless of which direction the Sonic CD Breakout fan game will be going with regards to possibly splitting up the project, before we make an executive decision, we are going to release a Demo #3 of what we have "very soon", with a potential patch to transplant the game to the Android port of the BreakGOLD engine!

Stay tuned!

Sonic CD Breakout: Quartz Quadrant Zone (Full)

Sonic CD Breakout: Quartz Quadrant Zone (Full)




    It's been exactly one year (Sept 2014) since any major progress was made on Sonic CD Breakout! However, we have finally put some effort and finally finished Quartz Quadrant Zone! Both main level acts involve finding the goal sign, which requires traveling through the Time Zones in order to hit a switch to reverse the direction of conveyor blocks, which are preventing access to the goal sign. Various enemies are in this zone, including a Caterkiller (with various destroyable parts), a jumping spider (which deals damage if you hit them when jumping), a Skorp (which shoots deadly lasers), and a moving snail (which can deal damage if you hit them when they unleash their spikes). The zone ends with a simple boss, which shoots bombs, which you must repel back towards Eggman in order to defeat him.

    Overall, the levels have plenty of gimmicks, different gameplay, and are challenging.
Check out the gameplay video below!


BreakGOLD: PoC Asset transplanting

BreakGOLD: PoC Asset Transplanting


Nope! BreakGOLD modding and development on Sonic CD Breakout is not dead yet! Although development of both has been put on the backburner, I did determine how to transplant a custom BreakGOLD table mod (such as Sonic CD Breakout) to the Android version, and Android-exclusive assets to the PC version. The results and method are not streamlined yet, but as a PoC, it works. Bugs with the transplant include no audio, lack of transparency on images, and a higher paddle. Such transplanting features will (eventually) be implemented into the next version of the BreakGOLD Editor. The next demo release of Sonic CD Breakout may have an Android port once I perfect the issues.



More coming soon!

Quick 8.3 filename conversion

Quick 8.3 filename conversion

   It has been sometime since I have posted some Windows Tips at this blog. The other day, I was tinkering around with a Windows 95 Virtual Machine, in order to try and install/play a CD copy of Megaman X I found at Goodwill two years ago. Unfortunately, the video game installer and the game itself on the CD were MS-DOS based, and would only accept 8.3 filenames for the installation directory ;_;. Whatever shall we do?!

   As I found in a MSDN forum, you could create a VB script, and then drag n' drop a file from another window on it, or simply cut/paste the original path directory in the script's pop box. Just open up Notepad, paste the following script code, save as .vbs, and chug away!

Set fso=CreateObject("Scripting.FileSystemObject")

' Is object a file or folder?
If fso.FolderExists(WScript.Arguments(0)) Then
'It's a folder
Set objFolder = fso.GetFolder(WScript.Arguments(0))
rtrn = InputBox("Here's your short path:", "SHORT PATH", objFolder.ShortPath)
End If

If fso.FileExists(WScript.Arguments(0)) Then
'It's a file
Set objFile = fso.GetFile(WScript.Arguments(0))
rtrn = InputBox("Here's your short path:", "SHORT PATH", objFile.ShortPath)
End If 

Have fun! (Now to get back and kick some robot butt!)



 

New misc section

New Misc section at EagleSoft Ltd!
 
Nope, EagleSoft Ltd is neither dead nor undead, but still alive! We at EagleSoft Ltd have created a new section on the website: the misc. section! At this section, we have added some Sonic Robo Blast 2 lua scripts, moved the old music page from the Sega section here, and added some racetracks/mods for Trackmania! Soon, we shall have a page with some Microsoft Office macros we have created.

   We are also working on a NEW Unity 3D game! An official blog post detailing the game will be posted later. The content is currently on the website unofficially, but the development should hit the ground running in the week after next and especially during the school year, since I intend to use this project Integrated Engineering Design class as a Software Engineering project :).

Enjoy!

-Tamkis

Ultra Air Hockey v1.1 Android port, now on Google Play!

UAHDX v1.1 Android Port,
now published on Google Play!


   Ultra Air Hockey DX (UAHDX) has been updated to v1.1, as well as an initial release of a new Android Port, both as a side-loadable app, and as an officially signed app at the Google Play Store! Due to lack of full-version purchases for the PC version (read: none!), the demo and full-versions of the game have been merged into a single, full, freeware version! It is strongly encouraged to give a donation of any amount to EagleSoft Ltd for future developments and motivation :).

Enjoy!

EagleSoft Ltd: Now on Facebook!


EagleSoft Ltd:
Now on FaceBook!

 
   Yep, you read the title correctly! EagleSoft Ltd now has a FaceBook page to further inform and to keep customers in the loop of current events with the indie dev group. The page will be used to relay blog information, and to give the latest news about the group. "Like" us today and share!

UAH (Sega, Redux) Progress: Paddle Movement

Ultra Air Hockey (Sega, Redux)
Paddle movement!

      After days of arduous experimentation, debugging, SGDK discovery, forum chats, and sweat, managed to get some more progress done on the redux of the Ultra Air Hockey Sega ports with SGDK. Managed to implement the following:

  • Implemented flying eagle sprite for intro FMV
  • Added game initialization code
  • Added paddle movement
    • A-button to change speed within current speed set
    • 8-directions of movement 
  • Implemented British announcer guy
  • Added HUD
    • Displays scores
  • Added Debug stats and features
    • Display of FPS
    • Display of free memory
    • Paddle stats
      • x and y coordinates
      • dx and dy values (change in x and y)
      • velocity value, current speed index, angle
    • Announcer guy test
      • X button to speak score
      • Y button to increase blue paddle's score
      • Z button to increase red paddle's score
Below is a video showing off
the improvement and progress so far


   Although there are a lot of bugs at the moment and features coded in but not tested nor utilized yet, progress is going smoothly. Paddle movement runs consistently between a smooth 50 to 60 FPS. A few coding hiccups occurred with sprite management and with paddle movement, but most of them have been ironed out. Next development milestone and preview should have collision detection (and bug fixes) :)!
Copyright EagleSoft Ltd. Powered by Blogger.