This is a note to myself in case I ever have to troubleshoot this problem again.
On a Dexter board I was testing, I noticed that one of the data bits was stuck high. After some non-trivial testing, I finally isolated it to a bad diode, which really surprises me. This is the last part that I thought would be the problem!
NOTE to future self: try removing this diode if the problem ever happens again.
I finally got around to order parts for Shaun Wood's reproduction Dragon's Lair scoreboard PCB that he sells here.
For anyone considering soldering one of these up, I found this to be a relatively easy task compared to other boards I've soldered. Shaun provides a list of parts along with Mouser and Digikey part numbers. Some of the parts were out of stock, so I had to find alternates. Here are the alternates (Digikey part numbers) I ordered that seem to work fine:
I had a Dexter with the RESET and DIAGNOSE lines tied together somewhere. I suspected a solder bridge but I couldn't find it. So I decided to send some current through RESET and DIAGNOSE and get out my thermal camera to see where things were getting hot. Here's what I saw:
I eventually found the bridge, but was not in the most intense place on the PCB:
In the future, instead of looking for the most intense spot on the PCB, I should observe the path that the heat is traveling. The fact that the heat was traveling down and left of where I was applying power was a clue that I would find the bridge somewhere along that path.
Due to some extremely lucky circumstances, I was able to spend an afternoon with the man who created one of my most treasured childhood memories. In 1983 Rick Dyer was the catalyst that produced the amazing arcade game, Dragon's Lair. As a young kid during this time, the memories of seeing this game for the first time in a random pizza parlor in Los Angeles still leave a deep impression upon me. I had previously met Rick twenty years ago at the Classic Gaming Expo in Las Vegas, NV but it was during an autograph line so I only spoke to him for about ten seconds. I never expected to talk to him again after that. But his Dragon's Lair had stopped working so he was referred to me due to my Dexter project and eventually asked me to come fix his Dragon's Lair which he is showcasing at a rental property in Spokane, Washington. After I fixed the Dragon's Lair, I asked him for this interview and he graciously accepted.
The video of Time Traveler running on Dexter that I mention during the interview is here.
I also asked him several questions in the car which I did not record. I am paraphrasing his answers below before I forget.
Q: I asked Rick what his background was before Dragon's Lair. Was he a tech guy? A business guy?
A: Rick said that he had worked on Intellivision titles for another company and had been doing moon-lighting projects on the side. His side business became so big that he eventually quit his day job and formed his own company. His company made a lot of handheld games, I believe that little LCD games that I would see kids playing during recess around 1982 when I was in elementary school. The company was successful and had about 40 employees. (I found this particularly surprising because I had always imagined that Rick had approached Don Bluth as an individual who had an idea, not as the owner of a successful company of 40 people). Rick went to school for engineering and preferred to do engineering but as his company grew he was forced into a management role instead.
Q: I asked Rick when he first saw a laserdisc and what gave him the idea to use it in a video game.
A: Rick says he saw it at a trade show and realized that it would be good to use in a video game at that time. He felt pressure to be first to market with this idea because he was sure someone else would release a product using this idea if he didn't.
Q: I asked Rick about the Thayer's Quest origins and mentioned that I heard it was originally not a laserdisc game.
A: Rick said that Thayer's Quest went through several iterations and used different more primitive technologies before it became a laserdisc game.
Q: I asked Rick what company he hired to do the Thayer's Quest animation.
A: Rick said it was a company in the Philippines.
Q: I asked Rick what the motivation was to have two audio tracks per scene in Thayer's Quest.
A: Rick said it was so that you'd hear something different when you visited the scene a second time.
Q: I asked Rick how he managed to successfully pitch Dragon's Lair to Don Bluth. Wouldn't Don Bluth be a hard guy to reach and an even harder guy to convince to take on such a risky project?
A: Rick said that he got lucky because Don Bluth's company was looking for another project after Secret of NIMH and Rick was at the right place at the right time. Rick had previously worked with Cinematronics which is why he approached them to handle manufacturing of the game.
Q: I asked Rick how many people programmed the z80 code for Dragon's Lair. Was it one guy or a team?
A: A team.
Q: I asked Rick some more details about the production of Dragon's Lair. Wasn't it insanely expensive to get prototype laserdiscs made? How did he figure out how to get a laserdisc made?
A: Rick said his team did the research to learn how to get a laserdisc made. And yes, prototype discs were expensive to manufacture. Both Don Bluth's company and Cinematronics were in financial peril during the production of Dragon's Lair and the game almost didn't get finished due to money running out at both locations. The game cost over $1M to create which was unheard of at the time.
Q: I asked Rick why the drawbridge scene is skipped in all versions of Dragon's Lair.
A: Rick didn't remember why. (I would've shown him a clip to refresh his memory but I was running out of time)
I recently followed Shaun Wood's excellent guide to creating a modern replacement for the Dragon's Lair power supply.
After some minor failures, I got it working with a few tweaks to his instructions:
The J2 (aka "P2" on his page) connector should have the black wire on pin 1, not the white. So the pattern should go black, white, black, white instead of white, black, white, black. This is to be consistent with the internal wiring my both my Dragon's Lair and Space Ace cabinets. Since it is AC power, polarity may not matter for performance, but for safety it could be important.
To minimize observed monitor noise, tie FG and GND together. Thanks to Brad Oldham for the suggestion. Here is a random thread I found on the internet on the subject. Without doing this, my monitor picture was significantly noisy.
I've been rewriting Daphne's Z80 emulator (from scratch) and testing it on Dragon's Lair. I've got it far enough along so that it loops at the disc routine at 0x231 waiting for an LD-V1000 strobe. While I had it looping, I was checking out some performance metrics to see how fast my new Z80 emu was running. To my shock, after about 1 minute, program execution moved away from that endless loop. After a few hours of tracking down why, I discovered this software watchdog that I never knew existed.
(my disassembly below)
ROM:19E3 DecrementWatchdog: ; CODE XREF: IRQ+1BC↑j ROM:19E3 ld hl, A0DE_WatchDogCounter ROM:19E6 call DecrementMem16 ; Decrements a 16-bit memory location ROM:19E6 ; Flags are set according to SBC rules. ROM:19E6 ; HL: pointer to 16-bit memory value ROM:19E6 ; DE and BC are clobbered ROM:19E9 jr nc, CheckSoundThenExitIrq ROM:19EB jp DoSoftReset ; watchdog has not been fed. we're stuck in an endless loop.
ROM:1FCF DoSoftReset: ; CODE XREF: IRQ+1CB↑j ROM:1FCF ld sp, 0A3FFh ; blow away all stack info; start over. ROM:1FD2 ld hl, 0A030h ROM:1FD5 ld de, 0A031h ROM:1FD8 ld bc, 3CFh ROM:1FDB ld (hl), 0 ROM:1FDD ldir ; this appears to clear mosts of the game data except the boot-up stuff ROM:1FDF call ResetWatchdogCounter ; resets watchdog counter back to max value (about 70 seconds) ROM:1FDF ; (this must be called regularly to avoid a soft system reset) ROM:1FE2 ei ROM:1FE3 jp loc_1244 ; this is an alternative to "RETI"; essentially giving up on recovering
ROM:1C2D ; =============== S U B R O U T I N E ======================================= ROM:1C2D ROM:1C2D ; resets watchdog counter back to max value (about 70 seconds) ROM:1C2D ; (this must be called regularly to avoid a soft system reset) ROM:1C2D ROM:1C2D ResetWatchdogCounter: ; CODE XREF: START+10↑p ROM:1C2D ; sub_15B4+F5↑p ... ROM:1C2D ld hl, 8AAh ROM:1C30 ld (A0DE_WatchDogCounter), hl ROM:1C33 ret ROM:1C33 ; End of function ResetWatchdogCounter ROM:1C33 ROM:1C34 ROM:1C34 ; =============== S U B R O U T I N E =======================================