I've debated posting a reply because lack of time and I'm not sure I want to reveal all of my secrets. My knowledge comes partially from the MTH ASC class but mostly from personal research and effort. I'll try to post more information over the coming weeks and months as time permits. The below answers some questions in this and the linked PS1 thread.
My ultimate goal is to build a collection of all PS1 ROMs which is almost identical to GameBreaker64’s wish. As I collect engines and I perform repairs, I copy the PS1 ROM and add it to my ROM folder. The ROMs are for my personal use only and are considered as a backup to the original. I’m also concerned MTH may one day lose the ability to create new ROMs. A ROM is just a computer file and if not properly backed-up in multiple locations on different types of media, could disappear forever. There is also the concern current custodians of the PS1 ROMs will simply stop selling them; which could be a business discussion or the business doesn’t exist anymore. This will leave the community with no way to repair a bad sound chip.
I currently have about 10 good chip ROMs with a few more “DESELECTED” and corrupted ROMs. I also have the special Make, Fix 1011, Force 10, and Force 11 chips.
Request 1: I would like to get an estimate from the community as to how many PS1 ROM variants exist. My guess is between 100 and 500. There are standard sound file libraries that are reused within a class of engine (diesel/SD-40 for example). For an individual engine, engine specific processor code is applied to control the functions implemented (diesel and steam have different lighting characteristics even though they use the same PS1 light plug). I assume there is also a standard library of processor code. The number of combinations between the two sets can quickly become a big deal (any equation with n factorial, n!, can get out of hand quickly), but many combinations are invalid. I make another assumption that several engines reuse identical ROMs but slap a different label on them. There are likely multiple revisions or variants for some models. This could be due to bug fixes, feature tweaks, early verses late production runs, or post-production changes.
I’ve never seen one but is there a generic PS1 steam or Diesel chip? Lionel has generic Railsounds steam and diesel which can be very useful during a repair. If there were a generic PS1 steam ROM then many repair problems would disappear.
Request 2: Now this is a pie in the sky idea that has little chance of succeeding but I have to throw it out there anyway. Maybe we can come up with a way of exchanging chips? Don’t know how it would work but I would love to be contacted by a collector that has a bunch of PS1 engines willing to let me “examine” his or her collection. Maybe I can swap out the battery for each engine in exchange. I don’t drink beer but I’ll but you a cold one for each engine.
Observation 1: Recording analog audio from a PS1 card might be the easiest but also the lowest quality option. In order of difficulty and sound quality:
1) Use a stand-alone tape recorder (do they even make those anymore) or equivalent.
2) Put your computer microphone next to the speaker and hit the record button.
3) Attach a professional mic to your computer and build a makeshift anechoic chamber out of a cardboard box and antistatic foam.
4) Unsolder the PS1 speaker wire and record the audio directly from the analog to digital (A2D) converter via the LM386-1 audio amplifier IC. Don’t go and solder a 3.5mm plug onto the speaker wires and plug it into your computer’s line in or mic port! That will end badly with magic smoke filling the air and all sorts of other nasty side effects. A computer’s sound card line in is typically rated at 1 volt root mean square (VRMS) with an impedance of around 10k ohms. The microphone input handles even smaller voltages of .01 VRMS[i] [ii].
The PS1 speaker is 8 ohms. The LM386-1 audio amp output voltage is one-half the supply voltage[iii] which I believe is 5 volts (will edit later if I hook-up my scope to find out). Input and output impedances are designed to be different but the input is usually 100 to 600 ohms.
I just killed about two hours trying to find a way to convert the PS1 speaker signal to something a computer or other recorder could handle. The best I could find is something called a “line level converter” which is used in car stereo systems to add a speaker to RCA pre-amp input. This is getting well outside of my knowledge base but the take-away is, don’t do this unless you are really sure what you are doing.
5) Convert original digital audio into modern audio format such as MP3 or flac. This is the path I would take if presented with the challenge. It is also beyond my current capabilities and knowledge. I will get into the details in a later post but here are the highlights. The microprocessor is an 8-bit NEC µPD78233[iv] from the 1990’s. Audio formats used by microprocessors of that era were usually vendor specific and obscure even for the time. The “file” (more specifically the ROM memory address block) also had to be insanely small.
Even if you have the raw sound file, decoding it may be easy or next to impossible. A developer will likely need a 78K[v] compiler and development suite (I don’t have), add-on audio CODEC (don’t have or know if needed), in-circuit emulator (don’t have), lots of 78233 documentation (don’t have and Google hasn’t been very useful) and an assembly language reverse engineering tool (don’t have but currently but working on it).
This is all I have in me for the moment. Next up I will start into the detailed description of chips on the PS1 top processor board. Depending on response I will continue in this thread or start a new one. I don’t have any completely dead PS1 boards to give away at the moment. I can usually repair them 95% of the time.
[i] Line level - https://en.wikipedia.org/wiki/Line_level
[ii] Mic Level and Line Level -- What do they mean?, https://service.shure.com/s/ar...-mean?language=en_US
[iii] LM386 Low Voltage Audio Power Amplifier, https://www.ti.com/lit/ds/syml...ll-sf-df-ds-null-wwe
[iv] NEC Data Sheet MOS Integrated Circuit µPD78233, 78234, 78237, 78238, http://www1.futureelectronics....C/UPD78237GC-3B9.pdf
[v] 78K, https://en.wikipedia.org/wiki/78K