[Tutorial] Making your own PS1 Modchips

Discussion in 'Modding and Hacking - Consoles and Electronics' started by Mord.Fustang, Mar 7, 2015.

  1. Mord.Fustang

    Mord.Fustang Fiery Member

    Joined:
    Feb 17, 2013
    Messages:
    826
    Likes Received:
    186
    A while ago I wanted to make my own PS1 modchips, but having never programmed my own PIC chips before, I wasn't sure where to begin. I wanted to make a "newbie-friendly" guide for somebody who's never done this before which involves making your own cheap serial programmer.

    [​IMG]

    This has been tested using Windows XP 32-bit and Windows 7 64-bit, using PICPgm version 1.7.8.0.

    *Obligatory “I not responsible for any damage caused by using this guide" warning*

    First, there’s lots of different types of PIC chips and different types of programmers and programming software. We’re going to use a simple serial JDM programmer and a program called PICPgm in this guide. As for the chips, it depends on what modchip you want. 12F508/12F509, 12F629 are the most common, though others can work as well.

    Most Hex files that you would want to use were originally written for the now obsolete one-time-programmable 12C508 chip, but most if not all of the relevant Hex files work perfectly on the rewritable 12F508 chips. I have personally used MM3, Mayumi v4, and Stealth 2.8a Hex files designed for 12C508 on a 12F508 and it worked without issue.
    The programmer used in this guide does not support 12C508; you need a different programmer and program for that. I have used the programmer below with the following chips: 12F508, 12F629, 12F675, 12F683.

    [​IMG]

    The type of chip (Hex file) to use is determined by which PS1 console you have, as certain chips work better with certain consoles (this is just a general guideline):


    • Fat SCPH-100x = Stealth 2.8a
    • Fat SCPH-500x-900x = MM3 or Mayumi v4
    • PSOne Slim = MM3 for NTSC, OneChip for PAL consoles

    There are many more different types of modchips (Hex files) to use, but in 2015 these are most likely the best to use (others may have different opinions; these are from my research online). Most other Modchips (Hex files) are for the most part outdated (the PS1 is nearly 20 years old…) and/or don’t support “stealth” (read more).

    It’s important to note there are many “anti-mod” PS1 games that will fail to play on many Modchipped systems if it detects them and we must use a “stealth” modchip to bypass this. All the chips above support this (the Stealth 2.8a partially supports this but is the best for the 100x series). If stealth is not working, you will see a screen that says “Software Terminated” after the game boots and will fail to play. In 2015 this is not a major problem anymore because there are patches online which allow you to patch your backups for almost all games if you need to. Do some research on PS1 modchips if unsure what to use.

    [​IMG]

    List of protected games here: http://consolecopyworld.com/psx/psx_protected_games.shtml

    On top of the anti-mod protection built into certain games, there’s also a copy-protection called LibCrypt in certain games which must be ripped/copied a certain way or it will fail to play. This is independent of the modchip in the system. There are also patches online for these types of games.

    First, you must build the serial JDM programmer. It can be made for a few dollars and with basic soldering skills. You need a serial port on your computer. A desktop is preferred but some laptops also have serial ports (apparently some laptop serial ports do not receive enough power and this may be a problem). USB-to-serial connectors will NOT work (I tested this personally). In the schematic the USB cable you see is only to power the programmer.

    If you don’t see a serial port on the back of your computer, check the inside of your computer on the motherboard for a header/port named “COM” as even many modern desktops have this port, but you need an adapter to plug the programmer into it. You can also check the manual for your motherboard to see if this COM port exists. These adapters can be purchased on eBay for about $1-2.

    [​IMG]

    [​IMG]


    Parts list for the programmer:


    • Female serial header or cable
    • 22k resistor
    • 2.2k resistor
    • 10k resistor
    • BS170 transistor
    • 8-pin DIP socket
    • USB cable (male end)

    Schematic:
    [​IMG]

    [​IMG]

    [​IMG]

    [​IMG]

    This is what my first programmer looked like (all the components are soldered to the wires and wrapped in electrical tape): http://i.imgur.com/F4EVN0H.jpg

    Here’s what you need:
    -JDM programmer which we built above
    -PICPgm (Download it, it’s free - http://picpgm.picprojects.net/download.html)
    -PC with serial port
    -PIC chips as mentioned above. 12F508/12F509 or 12F629 or others, depending on what modchip you want.
    -Hex file of the modchip you want (Use Google)


    Install PICPgm.

    Plug in your programmer and then open PICPgm.

    [​IMG]

    The programmer may be automatically detected, but click ‘Hardware’ then ‘Hardware/Selection Configuration’.

    Select JDM Programmer and your appropriate COM port and hit OK. (If you are unsure of which COM port, go to ‘Device Manager’ in Windows, then ‘Ports’, and you’ll see ‘Communications Port (COMX)’, X being the port number.)
    [​IMG]

    If it’s working it should recognize the programmer and say “JDM Programmer” at the bottom of PICPgm.

    Plug in your chip into the programmer. Make sure to plug it in the right way!

    Select the chip type.

    Read the chip. It should take about 5 seconds.

    If the chip is blank, you can hit Cancel when it asks you to save as there’s no point in saving it.

    Go to Code Mem.

    It should be all 0FFF’s except for the last few which will be different, such as 0C2A (example only, yours may be different), these are the calibration bits**. PICPgm deals with this automatically so we don’t have to. Read more at the bottom about the OSSCAL/calibration bits.
    **Certain PICs such as 12F683 do not have calibration bits at the bottom.

    [​IMG]

    If it’s reading all 3FFF’s, including at the bottom, it is not reading the chip properly. Don’t try and write to the chip until you’re sure it’s being read properly as you may ruin the chip.

    From here, click ‘File>Load HEX File’ and find the Hex you want to program onto the chip. The code will load and you’ll see it in Code Mem. Optionally, click ‘Config Bits’ and make sure that ‘CP’ (Code Protect) is Disabled as this will cause chips to not be read properly. There’s no point in code protecting it anyways. It’s generally Disabled by default, but certain Hex files may set it to Enabled.

    Hit the Program button and wait. It should take about 15-20 seconds.

    Hit the Read button again, and then Cancel as we don’t need to save it. If the code looks the same and it reads fine, then your chip is good to go!

    [​IMG]

    Test it out in the system. Make sure that you use the correct wiring diagram for your chip, as different chips may have different wiring diagrams.

    If your backup boots, then all is good! If you have one of the protected anti-mod games handy, try it out and make sure you don’t get the “Software Terminated”. If you don’t get an error, then stealth is working (or you have a pre-patched backup).


    Extra info:

    -If you’re going to be testing a few chips, rather than soldering the chip directly to the PS1, solder an 8-pin DIP socket like you used in building the programmer so you can easily swap out chips.

    -Make sure to note the OSSCAL value (last few bits, C20 for example) on paper somewhere for each chip as it’s unique. It’s the oscillator calibration setting, and some software will overwrite it. PICPgm handles this automatically so you shouldn't have to worry about it, but not all software will do this. It can also potentially become corrupt during a bad write if something goes wrong. If you happen to overwrite it, you can fix it in PICPgm under Config Mem. If you overwrite with a different value then the chip will not work. Note that some PICs do not have OSSCAL values, such as 12F683.

    Read this for a good technique on how to note the OSCCAL value for each chip:

    http://picprojects.org.uk/projects/piccal.htm
    It doesn't mention 12F508/12F509 in the page, but it applies as well.

    Hex-to-binary converter:

    http://www.binaryhexconverter.com/hex-to-binary-converter

    This method has saved chips for me in the past.

    Note:
    I did not cover every single scenario and console revision and this is meant to be a starting point to making your own modchip.
     
    Last edited: Jan 21, 2017
  2. LeHaM

    LeHaM Site Soldier

    Joined:
    May 5, 2013
    Messages:
    2,636
    Likes Received:
    295
    Cool, tutorial man :)
     
    Last edited: Mar 9, 2015
  3. dantun

    dantun Newly Registered

    Joined:
    Mar 30, 2014
    Messages:
    1
    Likes Received:
    0
  4. TriMesh

    TriMesh Site Supporter 2013-2017

    Joined:
    Jul 3, 2008
    Messages:
    2,376
    Likes Received:
    785
  5. retrofixes

    retrofixes Site Supporter 2014,2015

    Joined:
    Jun 4, 2014
    Messages:
    58
    Likes Received:
    4
    Great work and thanks for sharing. I plan to test your hex ports this year. I will post my updates
     
  6. TankedThomas

    TankedThomas 100% Tank Engine

    Joined:
    Jun 29, 2014
    Messages:
    239
    Likes Received:
    1
    For the record, there are good USB programmers, too, but unless you know what you're doing and don't mind fiddling around with stuff to get it working properly, avoid the cheap (usually K150) USB programmers on eBay. I personally have a K150 and haven't had any major problems with it, but getting it working can be a bit of a pain in the ass (you'll definitely need to upgrade the firmware, for example, and therefore need to buy chips to burn the new firmware to). I've heard good things about Microchip's PICkit programmers, although there are probably many other good (or even better) alternatives.
     
  7. Mord.Fustang

    Mord.Fustang Fiery Member

    Joined:
    Feb 17, 2013
    Messages:
    826
    Likes Received:
    186
    Thanks guys.

    I personally prefer and have had better success with the homemade serial JDM programmer over the K-150. I found the K-150 to be alright at programming certain PICs, but for me it also had a tendency to not be very good at erasing chips and would often destroy the OSCCAL value (good thing I noted all of them!). My guide also aimed for an easy and cheap DIY method.
     
  8. MrMario2011

    MrMario2011 Robust Member

    Joined:
    Apr 8, 2016
    Messages:
    298
    Likes Received:
    137
    Wanted to drop by and say thanks for this. I ended up buying a few chips and a programmer ($6 programmer was bunk, but the $12 one works well!) and used this guide with MicroBrn to get my first chip flashed!

    Have this bookmarked as well :)
     
  9. Mord.Fustang

    Mord.Fustang Fiery Member

    Joined:
    Feb 17, 2013
    Messages:
    826
    Likes Received:
    186
    Awesome, glad it helped. :)

    Mind linking the programmer(s) you used for reference?
     
    CodeAsm likes this.
  10. MrMario2011

    MrMario2011 Robust Member

    Joined:
    Apr 8, 2016
    Messages:
    298
    Likes Received:
    137
    For sure!

    First off: This is the second programmer I purchased, which has worked so far: http://www.amazon.com/BQLZR-Microco...&redirect=true&ref_=oh_aui_detailpage_o03_s00

    This is the first programmer I purchased, which barely functions and cannot successfully even read a chip: http://www.ebay.com/itm/252299558321?_trksid=p2060353.m2749.l2649&ssPageName=STRK:MEBIDX:IT

    That one is actually sitting at work and is now a decoration for my desk ;D

    Finally some words of advice for using them as they're pretty "meh" programmers: I've had the most success by opening MicroBrn first, then after a few minutes hook up the programmer, then after a few minutes select your chip, programmer, and port. Almost every time when I do that it will throw an error saying it can't reset my programmer, but if I do it a second time it connects.

    I've also noticed that the first one I linked seems to have more success with people, specifically the generic K150 programmers that have removable chips on them, unlike the cheapest one I linked which has the two soldered in. Even with that one I actually did in the end get it recognized and running on MicroBrn, any chips I read came back with all 000's. Slapped the same chip I flashed back into my working programmer and it read out a perfectly good MM3 hex.
     
    CodeAsm likes this.
  11. dziekan_tek

    dziekan_tek Newly Registered

    Joined:
    May 11, 2016
    Messages:
    3
    Likes Received:
    3
    OK, a few comments in that topic from my side:

    1. Pictorial schematic provided by Mord.Fustang is correct but in electrical sch there is an error - BS170 has swapped electrodes: source with drain. Simply, if you connect acc. to electrical sch. you will get power supply connected all the time on your 12F508 through the diode which is between source and drain of BS170 and it's not ok - it should be controlled by transistor's gate (connected to pin 4 of PIC) so voltage has to when PICPgm call for it during read/write operation and not all the time
    [​IMG]

    2. I cannot agree with MrMario2011 - K150 programmer is fine. All you just need to remember is to watch out on OSCCAL value. PICPgm do it automatically (it's even show backup OSCCAL) but in K150 you have to re-write it manually. It's not hard so I don't understand why so many people have problem with that. Check my pictures here on elektroda.pl (post is in Polish but pictures are described in English): http://www.elektroda.pl/rtvforum/topic3166977.html

    3. My own compact programmer based on Mord.Fustang schema which is working just perfect ;)
    [​IMG]
    [​IMG]
    [​IMG]
     
    CodeAsm and Taijigamer2 like this.
  12. MrMario2011

    MrMario2011 Robust Member

    Joined:
    Apr 8, 2016
    Messages:
    298
    Likes Received:
    137
    I've tried reading your post a few times and I think there might be some translation lost... Wouldn't you be agreeing with me? Mord.Fustang is the one who did not recommend K150 programmers, I recommended them and said they were fine but said I had issues with my cheapo $6 programmer.
     
  13. Taijigamer2

    Taijigamer2 Gutsy Member

    Joined:
    Jun 29, 2015
    Messages:
    498
    Likes Received:
    200
    Nice tut. I designed a programmer based on JDM design last year and used it to write MM3 to a pic 12F629, worked a treat. I designed the pcb in Eagle and got it printed by OshPark for about £4 - £5. Here's the schematic and Board files if anyone wants to modify it/ print it. I'm a novice so please excuse the lack of convention in my design. I have 2 spare blank pcbs if anyone wants them, just PM me.

    http://www.mediafire.com/download/d6zaoabbpt4ia5c/SERIAL-ICSP.zip
    [GALLERY=media, 91]Image by Taijigamer2 posted Jun 30, 2015 at 8:54 AM[/GALLERY]

    Also a point to add when programming small Pic chips like the 12f629 etc, they use High voltage programming so use a 10k resistor between MCLR and Vdd to hold MCLR high, and place a 10nF - 100nF decoupling capacitor between Vdd and Vss to guard against voltage ripple. This document explains it better http://ww1.microchip.com/downloads/en/DeviceDoc/31028a.pdf
     
  14. dziekan_tek

    dziekan_tek Newly Registered

    Joined:
    May 11, 2016
    Messages:
    3
    Likes Received:
    3
    @MrMario2011 actually, I also have K150 version with soldered chips in (so not in sockets) and it works just great - programmed dosen of 12F508 without any problems. First connection to USB and run microbrn always shows some communication problem but it's only once at program start. Second and another is successfull. Did you think about reinstall the drivers?

    Please try this one:
    http://dziekan.ovh.org/PL2303.zip

    After install run PL2303CheckChipVersion.exe to check wheter you have PL-2303 on board or not. My recommendation is to change port to COM3 (sometimes it takes COM1, if COM1 is not present on your PC or switched off)
    [​IMG]
     
    CodeAsm likes this.
  15. MrMario2011

    MrMario2011 Robust Member

    Joined:
    Apr 8, 2016
    Messages:
    298
    Likes Received:
    137
    Already done all of that after a ton of debugging, I'm not really trying to get it to work at this point as I have a good working K150 but the cheapo one I got is defective. If you have luck with yours that's awesome, but I myself do not recommend it to others based on my experience.
     
  16. dziekan_tek

    dziekan_tek Newly Registered

    Joined:
    May 11, 2016
    Messages:
    3
    Likes Received:
    3
    OK, I can imagine hours, spent to make it working... Seems that you had a really bad luck and as you wrote - got defective unit obviously :-/
    Well, this RS232 simple programmer do the job as well ;-)
    I made it because I was curious about programming trough COM1 port and also in case of K150 failure, some day but hopefully not :)
     
  17. Kwyjib0

    Kwyjib0 Member

    Joined:
    May 13, 2016
    Messages:
    8
    Likes Received:
    1
    Are these still the ones to use, or is there something better out?
     
  18. Mord.Fustang

    Mord.Fustang Fiery Member

    Joined:
    Feb 17, 2013
    Messages:
    826
    Likes Received:
    186
    Pretty much but it's all subject to different opinions. Some argue that MM2 is better in place of Stealth 2.8a.
     
    Kwyjib0 likes this.
  19. Kwyjib0

    Kwyjib0 Member

    Joined:
    May 13, 2016
    Messages:
    8
    Likes Received:
    1
    OK thank you very much.
     
  20. Kwyjib0

    Kwyjib0 Member

    Joined:
    May 13, 2016
    Messages:
    8
    Likes Received:
    1
    ugh I keep getting an error "received data error. about to apply reset" when programming. Does anyone have any experience using a K150 for 12C508A chips using Microbrn? I've seen several videos of people using this setup to make modchips, but they never get this error.
     

Share This Page