Jump to content

Tursi's Blog

  • entries
    18
  • comments
    8
  • views
    15,384

Thunder Force Multicart PCBs


Tursi

1,112 views

The PCBs arrived today, a little later than I hoped, but still with time to play with them.

 

For my first stab at a cartridge PCB, they're not bad. I went with the cheap non-solder-mask, non-silkscreen versions to test.

 

There were four problems with them.

 

The first problem was they were slightly too wide, it made for a very tight fit... I trimmed less than half a millimeter off the edge to solve that. I fixed this in the layout file.

 

The second was that the card edge was not beveled, but I knew this going in because ExpressPCB doesn't do beveling as far as I know. I used the dremel to bevel the edge as well. It's not perfect, but it works. ;)

 

The third was that one of my traces didn't actually make it to the pad -- it was there, but was just barely not touching. Fixed that both on the board and in the layout file.

 

The fourth was an outright layout error - one of the EPROM control pins was left floating when it needed to be tied high. That needs a jumper wire, but I patched that up too.

 

The final problem I simply didn't foresee. I had intended to use ZIF sockets on the first board to more easily test the ROMs, and I hadn't realized that the ZIF sockets were MUCH larger than the raw ICs, not to mention they wouldn't fit in the Genesis. So, I extended the pins on one socket, and attached just it for testing.

 

blogentry-12959-0-70028400-1420280791_thumb.jpg

 

The good news, is that Thunder Force 2 and the menu work perfectly on this, without the oddities I saw on the previous cartridge. (At least so far). I am going to independently test 3 and 4 with the single EPROM approach before I got for soldering one together permanently.

 

But, before I went that far, I did one more thing. I felt bad that Thunder Force IV was not region free while 2 and 3 were, so I undertook to fix that.

 

I found three parts that read the region register:

 

First part:

0482	move.b $a10001,d0		read version reg	and.w #$80,d0			mask out region	move.w d0,$f0b6.w		Store REGION at $f0b6

Second part:

0542	move.b $a10001,d0		read version reg	and.w #$40,d0			mask out tv	bne invalid			if PAL, branch	tst.w $f0b6.w			check region	bne $620			go ahead and run if not Japaninvalid:	bsr $2444			failure?

third part (after Sega logo -- this is just deciding whether to say Technosoft or Tecnosoft):

c3a2	tst.b $a10001			test version register	bmi $c3b4			branch if not Japan

So, presumably, all we really need to do is set the "bne invalid" in the second block to "bra $620". Then, of course, we update the three game checksums previously discussed.

 

They were pretty paranoid about region coding, eh?

 

Anyway, the branch is too far for a short jump, so we end up overwriting both the bne and part of the tst.w. But, this should be okay.

 

So, at $54C, replace "6608 4a78" with "6000 00D2"

At $15FF8, replace the checksum with "F9A3 23AF" - this should let you collect 1-ups

At $BFF8, replace the checksum with "BDE6 6EE0" - this should let you clear the second half stages

At $18E, replace the checksum with "0977" - this should let it boot.

 

I've re-attached the patch files here, this includes the new patch which is not 100% tested yet (but is tested against the known choke points.)

 

TFPatches.zip

  • Like 1

0 Comments


Recommended Comments

There are no comments to display.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...