Wednesday, March 11, 2015

Star Rider and the changes that Freedom Fighter prototype made

Some of you may be aware that the prototype of Freedom Fighter was mostly based off of Star Rider hardware.  I've said before that I believe that someone intimately familiar with Star Rider was on the Freedom Fighter team because it would otherwise be far too costly to pay someone to learn the Star Rider hardware (I, of course, could be wrong about this).

If you have seen Star Rider in action ( youtube link ), you will note that top 2/3 of the screen pans left and right while the bottom does not pan at all.  This panning effect is called "the expander" internally because the video is expanded by a factor of 2 and can be panned left or right.  This is one of the really revolutionary things that the Star Rider hardware could do (and which Freedom Fighter takes advantage of) which was really ahead of its time.

While studying the schematics, I stumbled upon how the expander is able to only pan the top 2/3 of the screen while leaving the bottom of the screen untouched:

These two ICs, U61 and U77, are 74LS85's which are simple 4-bit comparers.  They can be chained together to form arbitrary huge numbers.  In this case, having two of them means an 8-bit number will be compared.  The number, in this case, to be compared is the current vertical counter value (which is approximately the same as the current vertical line but not quite).  If the current vertical counter value is greater than 0xB4, then expander always gets disabled no matter what via pin 5 of U77 going high.

Here is how it looks on the actual PCB.  Interestingly, these ICs are in about the middle of the board in a seemingly arbitrary spot.

Pin 5 of U77 is not the only thing that can disable the expander:

Pin 5 of U77 goes into pin 8 of U65 which is a NOR gate.  Another input to this gate is pin 9, which on the schematic is labeled "EXPAND DISABLE".  This is controlled ultimately by the main CPU, which means that the ROM program can disable the expander at will.  However, since this is a NOR gate, it means that the ROM program cannot interfere with the "hard-wired" hardware design that forces the expander to be disabled beyond vertical count of 0xB4.  Stated differently, the ROM program can force the expander to be disabled but can never force it to be enabled unconditionally.

Here is U65 on the board with some notes.  Pin 8 is the top-right pin, pin 9 is to the left of it, and pin 10 is to the left of pin 9.  Pin 10 is the final authority on whether the expander actually gets disabled/enabled.

So, I've understood this for a while now.  But I recently was thinking (again) that Freedom Fighter does not exhibit this behavior as far as I can recall.  In fact, Freedom Fighter will expand the full screen unless I am greatly mistaken.

This caused me to be extremely curious.  If Freedom Fighter can expand the entire screen, then whoever worked on the prototype must've disabled the hardware that disables the expander passed vertical count 0xB4!  Get it?  Someone must've disabled the disabler! :)

Rife with curiosity, I brought out the Freedom Fighter board to see if I could find where this modification took place.  Having already found how the original design worked, I had a very good idea about where to look.  It didn't take me long to find it!
Pin 5 of U77 on Freedom Fighter (as you can hopefully see) has been clipped off.  This means that the neat little 8-bit comparer comprised of U61 and U77 now does nothing.  However, one cannot simply clip off this pin without grounding what it is connected to!  So I looked to see what they did with pin 8 of U65.

As I suspected, someone hooked up pin 8 of U65 (formerly hooked up to pin 5 of U77 which has been cut off) to pin 6 of U84, and it appears that someone cut off this pin from the PCB as well (although I didn't notice this until after I had put the board away).  I haven't bothered to find where U84 is on the schematic or what it does, but I am going to make a very educated guess that it most likely is somehow tied to ground.  Why is this my guess?  Because ground will send a logical 0 to pin 8 of U65.  Remember that U65 is a NOR gate.  Sending 0 to a NOR input is essentially converting the gate to a NOT gate, where the other input is the only input that matters.  The goal (I believe) is for the expander to be controlled exclusively by the CPU, and not by a hard-wired hardware configuration.  So the logical way to accomplish this is to do what I just described.  I am somewhat curious what U84 is but am out of time tonight to find out.

UPDATE : U84 pin 6 is VSYNC' from the laserdisc.  As this does not currently make sense to me, I am going to defer judgment until I have a chance to reverse engineer the Freedom Fighter PIF board and see what it is sending to the VGG board instead of Composite Sync, because that would change the interpretation of what U84 pin 6 means.

1 comment: