Posted on Leave a comment

Project: Arcade Cabinet Build

As you may have guessed from my previous post, I’m embarking on my next project of building a full-size arcade cabinet. I’ve decided to replicate a cabinet that used the original control panel that I was given.

I’ve created this in the projects section of my site and will be keeping a diary of the build progress along the way. I’ll also put up a post when updates are made so that anyone who has subscribed will get an email alert.

This is going to be a fun one! Head over to the projects section now, or click continue reading below.

Posted on Leave a comment

CPS1 – Street Fighter II Repair – Part 1

About 1 year ago, I was gifted a couple of arcade boards and an arcade control panel by a friend of mine. Sadly, this friend has recently passed away, so I have now promoted a couple of projects involving these parts to the top of my priority list.

I started by connecting up the two arcade boards (Street Fighter II and Caveman Ninja) to see what we get out of them. The Caveman Ninja board had no output at all, but the Streetfighter II board actually had output to the screen, so I decided to start with this board as I figured it would be the easier repair (Yeah, right!).

Upon powering up the board, the game ran through the RAM tests, which all passed. But then it just hung on that screen.

I figured I’d start off with giving the board a good clean up, removing all of the socketed chips, sanding down the pins and giving them all a dose of de-oxit.

The only change in behavior was that the board no longer worked. At this point, I realised my rookie mistake where I had put one of the PAL chips the wrong way around. The writing printed on the chip was upsidedown compared to the others, and I just didn’t check the notch. Very disappointing, but luckily not unrecoverable.

The code for all of the PALs has been reverse-engineered for this board (https://wiki.pldarchive.co.uk/index.php?title=Street_Fighter_2_Champion_Edition), so after I had ordered some GAL16V8s, I programmed one of them with the code and was finally back to square one.

So where do we go from here? Ideally, I need to know what the board is actually trying to do at the point it is crashing. It was at this point that I had an idea. Everybody has surely heard of MAME (Multi Arcade Machine Emulator), which allows you to run Arcade ROMs on many different platforms. However, it also has some advanced features that most people would not have used before, one of which is an internal debugger, which allows you to disassemble the ROM code and also step through the code one instruction at a time, whilst also setting breakpoints and monitoring for specific conditions.

Running the ROM file in MAME, I could see that after the RAM tests, the screen goes blank and then changes the text to Street Fighter II. My board doesn’t get this far, so I needed to concentrate on the code that runs after the last RAM check, but before the screen blanks.

After a bit of playing around, I found a nice breakpoint to set at address 754. This is a loop in the code that prints a character to the screen. So with a breakpoint set here, every time I start the emulator running, it will print one more character to the screen and then pause. This will allow me to step through until the last OK message is written to the screen and then see what happens next.

I could see that during the RAM tests, all it was doing was writing a character into RAM and then reading it back and comparing it. I don’t think this is the most conclusive RAM test, but I guess it’s good enough to find basic RAM issues. I did do a quick check here and manually modified the area of memory so the compare would fail. It responded by marking that RAM test as “NG” (Not Good), and then froze the game. I didn’t need to do this bit as all the tests were passing, but I thought it was interesting.

The next thing I wanted to do was to try to find out where my board was stopping. I had a thought that if I could insert a reboot command into the actual ROM code at various points, I could then burn this to an EPROM and stick it in my board. If my board went into a reboot loop, then I would know that it was getting as far as executing that command.

68000 Assembly is not a speciality of mine, so I used AI to help here (sometimes it does actually have some uses!). My first attempts used a jump instruction to jump to address 0 and reset the board, but this had one small issue in that the opcode was 3 words long (6 bytes). The issue with this is that I could only insert it where another 6-byte opcode existed; otherwise, I would be overwriting other code. Asking AI for another way of rebooting the board, it suggested the opcode “ILLEGAL” which has a hex code of 4AFC. With this being 1 word long, I could insert it anywhere in the ROM without breaking anything.

I gave it a quick test and confirmed that my board did indeed reboot when it hit this command. I continued going through the code in chunks and added my reboot at various points to see how far my code was executing.

I eventually homed in on the exact part of the code where the board was stopping.

The culprit was an opcode stored at the address 1A0:

MOVE $2000, SR

Giving AI another chance to show its uses. I asked what this command did. It turns out this command essentially changes the Status Registers on the CPU. With the value of $2000, it would achieve the following:

  • Set the CPU to Supervisor mode
  • Enables interrupts
  • Clears all condition flags
  • Disabled Trace mode.

Out of those options, I already had a hunch of which one to concentrate on. Going back to the MAME debugger, after the command at 1A0, the next instruction executed was at address 5C6. But there was no jump instruction, so why did it suddenly jump to that address? One logical answer is that an interrupt was triggered.

A bit more research showed that on the 68K CPU, when an interrupt is triggered, it will jump to the address held in the interrupt vector relating to that interrupt. These values are located in the address range 60 to $7C, and looking at that area in the ROM file, I could see 05C6 listed, which confirmed to me that an interrupt was indeed being triggered that was causing the code to jump to address 5C6. The problem now is that my board never triggers that interrupt.

The 68k CPU has 3 interrupt pins, which are inputs. Each one of these can either be high or low, giving us 3 binary bits, and a total of 8 possible combinations.

According to the schematics for the CPS1 board, one of these interrupts is tied to 5V, which I confirmed with my scope. That left two other interrupt pins. I monitored both of these on my scope, and both of them remained permanently high.

The interrupt signal is an active low signal, so with all these staying high, no interrupt would ever be triggered, and my board would just sit there waiting for this signal. I traced the Interrupt pins on my board back to a 74LS74, which is a dual positive-edge-triggered flip-flop. I took a look at the datasheet for this IC and probed the input pins. One of the pins had a regular pulse to it, and looking at the schematics, this signal was the vertical blank signal.

With this input being triggered, the output pin going to the CPU should also be triggered. So it looks like the first issue to be identified is actually a faulty 74LS chip.

One last thing I could try before wrapping up this part of the repair was to replicate the interrupt being triggered. I could do this by simply shorting this signal to ground. Since the vertical blank signal was a continuous pulse. I replicated this by just tapping a ground wire onto the interrupt pin. With this, I was able to “run” the game frame by frame.

There is another issue in that the background graphics are corrupted. But that will be a problem for another day, after I have got the board at least running the code.

Stay tuned for part 2 once the new 74LS74 chips have arrived

Posted on Leave a comment

Impromptu Toastrack Repair

Every now and again I like to have a move around in my retro room and possibly swap out some systems. Well I decided that to represent the Spectrum, I would get one of my 128K Spectrums connected up. I grabbed one off the shelf and plugged it all in ready to sit down and have a play. Only to find out, this one had become faulty!

When turning it on using the RGB scart cable, the picture was pretty much black. But this wasn’t a dead Spectrum, as if you looked closely you could see that the computer itself was running fine.

It’s not very clear in the picture but in the center of the screen you can just make out the 128k menu.

This then was more of an issue with the video signal, specifically the blanking signal on the scart cable. Just to rule out a bad cable I tested my other toastrack and that displayed fine.

There is sometimes an issue with Spectrums and certain TVs when using the RGB scart cable, and there is a quick mod you can do to increase the blanking voltage which helps in this situation. But I didn’t think that was what was going on here, and I was pretty sure I had already done that mod on this system at some point.

I opened it up and checked the blanking voltage which was at 1.45v. Yeah, there is something not happy here. Another common fault with these machines which would match the issue I was seeing, is the two transistors, TR4 and TR5.

Taking TR4 off the board and giving it a test, confirmed my suspicions.

That doesn’t look much like a transistor to me! So, a quick trip to eBay and a few days waiting for some replacements to arrive.

I did test TR5, and it actually tested OK. But I replaced it anyway to be safe. Sometimes, if you only replace TR4, TR5 can end up damaging the new replacement.

Anyway, we are now back to having a decent voltage on the blanking circuit, and yes, I had already done the blanking mod on this one.

Time to put it back together and give it a test!

All working 😀

Unfortunately, that used up my spare time this evening, so i don’t actually get to sit down and play a game. Slightly, will have to put his adventure on hold until next time.

Posted on 1 Comment

Spectrum 48K Repair

Today I had a bit of spare time, so decided to take a look at a Spectrum 48K for one of my work colleagues. It had unfortunately been plugged in using an Acorn Electron PSU as he mixed up the power supplies.

The Acorn Electron uses a 19v ac power supply, where as the Spectrum uses a 9V DC supply. As you can imagine, the poor Speccy did not appreciate this very much.

First job was to check the voltage regulator. As expected, this was dead, so I swapped this out with a new 7805 regulator. Now we were getting a stable 5v output from the regulator.

Next step was to dig out the thermal camera and see what the system looked like powered up, I didn’t hook it up to a TV yet as I was pretty confident there were more issues I would need to solve first.

I forgot to take a photo the frist time around, so the photo above is after I had already replaced the far left RAM chip which was also getting very hot.

There were 5 chips in total that were getting pretty toasty. I socketed all of these and tested the removed chips, all of which tested faulty.

With the new RAM in place, I figured it was time to test the machine out. Even though no chips were getting hot now, some more of the RAM could have still been faulty.

Luckily, In this case, that was not the case and the Speccy booted up, seemingly with no issues. I wrote a little BASIC program just to make sure it was executing code.

So far so good, but I wanted to test some games out. At this point I grabbed my DivMMC device and hooked it up. But here we ran into another issue. The DivMMC was not showing any life when connected to this computer. From previous experience I knew that the M1 line on the CPU can stop the DivMMC from working if it doesn’t function properly. And sure enough, I probed pin 27 on the Z80 and it was just sat there at around 2V, not doing anything.

Fortunately, I had some spare Z80s in stock, so i removed the Z80, and fitted a socket along with the replacement Z80.

Finally we have a fully functional Spectrum again 😀

Posted on 2 Comments

The DX7 is fixed :)

Today was the day that the new 74LS374 arrived in the post. My first quick test was to put the new chip into my chip tester, and it confirmed the chip was ok whulst thebold one still reported faulty, so it looks like the chip tester might actually be trustworthy. I’ll be doing some more testing with this in the future as it could be a very handy tool.

Next step, was to get the new IC fitted and see if the issue was resolved. After powering it on i checked all the address lines and everything looked perfect! The welcome message showed up with no corruption and the DX7 was fully functional again 😀

The only thing left to do was test it out with a talented musician at the keys. Unfortunately I couldn’t find one, so you’ll have to put up with this!

Musical talents aside. I’m pretty happy with this repair, the DX7 is a great piece of music history, and it’s really nice to see it fully functional again.

I can add vintage synthesiser repair to my resume now 🫠

Unfortunately the DX7 has now got to go back to its owner, maybe I need to set up another watch list on eBay 🤔

Posted on Leave a comment

Yamaha DX-7 Repair

Recently, a colleague at work contacted me and asked if I wanted some old computer stuff, including a 19″ CRT monitor and a colour Dot Matrix printer. This donation was gladly accepted, and whilst collecting my new toys, we found ourselves discussing various retro tech.

During this conversation, he mentioned that he had a Yamaha DX7 synthesiser that he had purchased, but it had a fault. It is very common for the batteries to die on these, which then leads to corrupted content in the RAM. In this case, though, the battery had already been replaced, but it didn’t fix the issue.

I did a quick Google search for the schematics, and essentially what I saw were the schematics of an 8-bit microcomputer. I said I’d take it back with me and take a look to see what was going wrong. Occasionally, the keyboard would appear to boot up, but would then hang, other times, the display would be garbled and completely unresponsive.

I knew the CPU was trying to run code because the display was occasionally showing correct text. Just to rule out a ROM chip issue, I downloaded the ROM file from the internet and compared it with the ROM stored on this chip. All looked ok, but I wrote the ROM to a new chip anyway and tested with the same result.

I then grabbed my scope and started probing the pins on the ROM chip to see what the address bus and data buses looked like. It was with the scope that I saw the issue, or at least the first issue. The data bus pins were all looking good with nice strong 5V peak-to-peak signals. But the first 8 address bus pins (0 to 7) were all a lot lower. Address bus pins 8-15 were all working as expected.

I dragged out the schematics and did a quick glance around for something that was only connected to the first 8 address bus pins. There was one very obvious candidate, a 74LS374 transparent latch IC that sat between the address bus and the ROM chip. Looking at the inputs of this IC showed they were nice and strong with no issues, but all the outputs were low, as shown in the picture above.

I suspected that this chip was faulty, but it could still be another IC on the board pulling the outputs low. So to test for that, I snipped one of the output pins so it was floating, then measured again. Exactly the same issue. At this point, I then removed the IC from the board, ready for the replacement chip to arrive.

Now off the board, I tested the chip in my chip tester just out of curiosity. It did indeed state that the device was faulty. I will be testing the new ones when they arrive, as I’ve not used this chip tester before, so not sure how much trust to put into it yet.

All I need to do now is await the delivery of the new IC and hopefully, this classic synth will be back up and running again. I will of course update everyone with the result, and hopefully this is the only fault 🙂

Posted on 3 Comments

Will new generations of people experience technology related nostalgia in the same way I do? – Part 1

During a 3-hour car drive today, my brain got bored, and I started to think. This normally ends up being expensive, but this time, since I was driving, I used my time to ponder the question: Will nostalgia for technology still exist in the future?

I was born in 1979, so my childhood memories come from the mid-eighties up to the millennium (although I swear I have never really grown up!). During this period of time, technology was forever changing, and with each change came a giant leap in what technology was capable of. Each one of these jumps signifies a section of my life which I have become nostalgic for as I grow older. This isn’t just video games, but also music and video technology.

So now lets take someone born in the year 2000, we will call him Jim. Lets say Jims childhood memories go from 2006 to 2021. Obviously, technology was still changing continuously throughout this period, but everything always felt like a slightly incremental upgrade rather than a defining event in history. So will these upgrades still bookmark periods of time during his childhood like they did for me?

Let’s start digging into this 3-part journey with the obvious topic, home computing and gaming!

Home Computing and Gaming

My journey in computing started with 8-bit home computers and specifically the ZX Spectrum 48k, the little rubber-keyed wonder. For many, this was the first time a computer entered the home. For me, it started a love of video games and later on also programming. The graphics were simple, the sound was beyond basic, but when combined with the power of the mind, I could sit in front of this little computer and go on adventures that I could never dream of. All it took was to power on the computer, load a cassette tape and wait for 5 to 10 minutes for the game to load. This sounds like torture, but to me, it made loading each game an event in itself. After spending that time loading a game, you would feel compelled to actually play it and try to complete it before your parents came along and powered it off for bedtime.

I also had a friend up the road from me who had a Commodore 64, which I used to spend ages playing classic games such as Ghostbusters and Donald Duck’s Playground. I always remember feeling slightly jealous of this system, with its lack of colour clash and that gorgeous SID music. But back then, it was the computer that you had at home that you fell in love with, and the Spectrum was what bookmarked all those childhood memories for me.

The rest of the 8-bit period for me was filled with the 128K +2 and then later onto the Sam Coupe. I was always in the home computer camp, rather than the console crowd. I didn’t just want to play games; I wanted to tinker with the system and learn how they worked. For many though, the 8-bit consoles also became a big part of their childhoods, with the Master System and the NES being popular options in the UK. Although I didn’t really know many people who had consoles at this time, I feel they became a bit more mainstream during the 16-bit generation.

I didn’t really have any 16-bit machines at home until later on in life, but a lot of my friends did, and this was the time of my life I spent visiting their houses and experiencing games on a whole bunch of different systems. I had friends who owned various home computer systems, such as Amigas and Atari STs, then the console friends with SNESs and Megadrives. These systems were amazing when they hit the market. A huge uplift in graphics capabilities and music that sounded like actual music rather than the bleeps of the past (Apart from the Atari ST, which seemed to have missed the memo and used the same sound chip as the Spectrum).

During this period, we also started to get TV shows in the UK dedicated to computer and video gaming. The two most notable were Bad Influence and Games Master. I used to watch these after school to check out the latest games and technology heading our way. One of the biggest moments for these shows was when they started talking about the upcoming next generation of super consoles. These would consist primarily of the Sega Saturn, the Sony PlayStation and the Ultra 64 (Later released as the N64). Yes, we also had the Atari Jaguar and the Amiga CD32, but it was fairly obvious from the beginning that these systems had missed the mark.

We were dazzled with videos of amazing visuals, full 32-bit 3D gaming. This was probably one of the biggest jumps in video gaming that I saw in my childhood, and it all became a reality for me shortly after the launch of the PlayStation. I went into Barnstaple, my local large town, and visited the Sony Centre. In the corner, they had a 28″ Trinitron CRT hooked up to the Sony PlayStation. A grey, futuristic-looking console that no longer looked like a kids’ toy, but instead would comfortably sit alongside your home entertainment setup. I crouched down and picked up the controller to experience my first game, a 3D spaceship racer named Wipeout. I remember flying around the track constantly crashing into the sides, then I went over a huge jump and almost fell over sideways.

A short while after this, a friend of mine got his very own PlayStation. It came packed with the Demo 1 disc. Hours of our lives were spent playing the various demos on the disc. The T-Rex demo, the Manta Ray demo, we spent an insane amount of time staring at these stunning technical wonders. Then there were the games, A robotic rabbit that we would come to know and love as Jumping Flash! Then there was Battle Arena Toshinden, where we would just randomly press all the buttons on the controllers as we had no idea what the combos were. I ended up with blisters on my thumbs from playing this game, just trying to get Fo to do his special move, where he seemed to be farting light orbs everywhere for some reason.

Shortly after my brother got his very own PlayStation, I was treated to my very own for Christmas. This was mainly to stop the constant arguments of me sneaking into my brother’s room when he was out to play on his.

It was also during this period of my life that I started to get into PCs. I started with an Amstrad 286 that I got for £50 from a guy I knew via the CB radio, but it was already outdated when I got it, and I soon wanted more power. So I did some research and built my very own AMD-based 75MHz PC. This then started a lifelong love of PC tinkering. Owning a PC during this time also enabled other modern technologies, such as the Internet. I used to wait until my parents had gone to bed so that I could take over the phone line, then dial up to the internet and explore a whole new world. Although I had to do it as quickly as possible because at the time, it was costing 2p per minute in phone calls. But once Freeserve came along with an 0800 number freephone dial-up service, I was then permanently connected and had to have my own phone line installed in my bedroom to free up the house phone.

Around this time, my PC tinkering hobby started to combine with my newfound love of consoles. Emulation was one of the new technologies that made me try to always keep my PC upgraded to the latest and greatest CPUs and GPUs. The ability to now run the 16-bit console games on my home PC was some sort of witchcraft. This then started the obsession of trying to get downloads of every game available and to test them all to make sure my PC could run them smoothly. It feels like I must have played the first couple of minutes of every game in history, just to make sure all the graphical effects worked as intended and that I wasn’t dropping frames.

Another game-changing technology then appeared, the ability to burn your own CDs at home. This was shortly followed by a rumour that my friend and I discovered on the internet. Apparently, it was possible to copy PlayStation games and then get them to load by swapping the discs in a specific order along with an original game. Surely this couldn’t be true, but we copied a game, and I sat there on the floor trying to replicate this trick. It didn’t seem to be working, and we were about to write it off as a hoax when suddenly I realised my game was booting. After a few more attempts, I was able to get the copied games to consistently boot. Our mission to rent and copy every PlayStation game possible began at that very moment.

Although this was now pushing the term childhood a bit, the early 2000s saw the Sony PS2 make its appearance, and it offered another huge leap in graphical capabilities. Gone were the large blocky polygons, and in came smoother, crisper visuals and faster frame rates. We also saw the first proper open-world 3D games with the launch of Grand Theft Auto 3. To me, this really felt like the last meaningful jump in video gaming graphics.

So now let’s take a look at the history of little Jim. By the time he got into video games, he was sitting in front of the Sony PlayStation 3, then moved onto the PlayStation 4 and finally onto the PlayStation 5. I know I’ve simplified this a bit, but let’s just summarise these two childhoods in a series of screenshots.

Here is my childhood summed up in video game screenshots:

Manic Miner (Spectrum), Treasure Island Dizzy (Spectrum), Lemmings (Sam Coupe), Slightly Magic (Amiga), Sonic the Hedgehog (Megadrive), Zelda: Link’s Awakening (SNES), Jumping flash (PlayStation), Wipeout (PlayStation), Ridge Racer V (PS2), Tomb Raider Legend (PS2):

And now here is little Jims:

Grand Theft Auto 5 (PlayStation 3), Grand Theft Auto 5 (PlayStation 4), Grand Theft Auto 5 (PlayStation 5)

Now obviously, those timelines were done a bit tongue in cheek, and games have come along since GTA V, but I don’t think my thoughts are far off. Do the various generations of video games from 2005 onwards have the same defining moments as they did during my childhood? And do the younger generation have any nostalgia for slightly lower resolutions and 30FPS? It seems to me that if anything, the younger generations are actually borrowing our nostalgia, with a lot of them having a keen interest in the retro computers and consoles from our era. Is this because we had something that they no longer do?

I really do feel that I grew up during the best time in computing history, seeing everything move from something so basic to the amazing visual feasts we have today. I just can’t see that rapid evolution will ever repeat itself again.

Well, this was the first hour of my three-hour car journey. In the next part, we’ll take a peek into the evolution of music technology — how formats changed, how physical media evolved, and how our listening habits were transformed by streaming services.

Posted on Leave a comment

The new website design is live!

After a couple of months of recategorising everything and making sure all the redirects are in place. The new website design is finally live.

There are probably still a few kinks to work out, I need to put the projects section back in place, and I still need to find a way to move the previous comments on various articles over in bulk rather than one at a time. But it’s a start!

The new design should hopefully allow you to navigate around the site much better, especially on a mobile device. I hope this is an improvement on the old site.

Instead of a load of blank pages, I have also used some AI (Yeah, I know, but I really didn’t have time to write over 120 articles yet) to create some place-holder information. I will, over time, go back and write my own articles for everything, based on my own experiences, and these articles are tagged so you can easily find articles written by me and filter out the AI crap!

I have tried to do basic fact-checking on the AI-based articles because it did make up some complete nonsense at times. As a fun game and try to find its other mistakes 🙂

Anyway, have a browse around, there are some additional systems on here that I noticed were missing from the old site, with some more still to come.

Hope you enjoy the new experience!!