Saturday, September 24, 2011

OutRun Rev A vs. Rev B

I've looked into the code changes between the revision A and revision B roms. Comparing the roms isn't easy, because the addresses of the routines are aligned differently rendering a binary compare impractical. Therefore, my technique was to align a rough decompilation of the Rev A code to the addresses of the Rev B code in IDA.

I manually compared the code. It was easy to see if a function had changed in size for example as subsequent functions would be shifted to different addresses. Clearly, this is prone to human error and I may have missed something. But, if I have, it should be minor.

The differences are:
  • Easter Egg activation is more complex in Revision B. I have blogged about this already here.
  • The steering wheel vibration code for the Upright Mini cabinet has been altered. In Revision B, the vibration frequency has changed to make it less aggressive. I would guess this must was done in response to hardware problems reported by operators. The code can be found at address 0xEBA2 in Rev A and 0xEC42 in Rev B. 
And that would appear to be it! Maybe not a huge surprise, given that I've not noticed any other differences playing the versions. I hope to compare the original version next, which may yield more interesting surprises. 

As a final note, only IC118 and IC133 change between the revisions. The sub CPU code is identical.

No comments: