|
Post by Peer on Jan 7, 2023 5:06:42 GMT -5
Indiana Jones in the 21st century: Some digital archeology...
As far as I know, there are three "official" Vectrex BIOS versions which came in manufactured consoles. From what I read, those are commonly distinguished by their checksums and called:
- 0xb796: rev_a BIOS (GCE)
- 0x7931: rev_b BIOS (MB)
- 0x7adb: rev_c BIOS (MB)
The MB versions contain the same bugfixed version of Mine Storm which is different from the GCE BIOS Mine Storm.
Here is a detailed analysis of the differences between the three versions, listing the patches applied to the rev_a source code. Please not that my labelling of the patches (for a good) reason is slightly diffrent compared to the labelling in the rev_c source code (more on that later).
PATCH address comment
rev_a GCE base version
rev_b_0 0xff9f alternate version of Draw_Grid_VL rev_b_1 0xffd3 zeros instead of KARSOFT... rev_b_2 0xf01C abort intro on button press 0xefe7 subroutine for about on button press
rev_MB 0xf024 MB version patch, also lots of patches in Mine Storm code
rev_b1 0xf216 Joy_Digital patch this is labelled as rev b1 change in the rev_c source code, but does not appear in the official rev_b BIOS 0x7931, but in the official rev_c BIOS 0x7adb!
rev_c 0xf4f6 change to height handling in Print_Str_d 0xffd3 minor pad bytes change 0xf024 minor pad bytes change 0xffee minor pad bytes change 0xedd8 minor pad bytes change
rev_d 0xf4b3 delay cycles change in Print_Str_d this appears in the rev_c source code, but not in the official rev_c BIOS 0x7adb! The official BIOS images in the manufactured consoles contain the following patches:
- 0xb796 is GCE rev_a without any of the above listed patches
- 0x7931 is rev_a + rev_b_* + rev_MB patches (no rev_b1 patch!)
- 0x7adb is rev_a + rev_b* + rev_MB + rev_c (includes rev_b1 patch)
The rev_d patch is found in none of them, and according to the official Western Technologies patch labelling, 0x7931 is not a pure rev_b BIOS, and 0x7adb is not a pure rev_c BIOS! As far as I could find out, there are three known BIOS source code disassemblies to be found on the internet: - roadsidethoughts.com/vectrex/the-rum.htm
- John Hall
- this is none of the official manufactured BIOS versions
- this is rev_a + rev_b_0 + rev_b_1 patches
- likely this is some intermediate version towards the MB changes
This rev_d patch is found in neither of the three official BIOS (that is why I called is rev_d),
I do by now have a BIOS source code with compile time switches that can be configured to assemble exactly the three "official" BIOS versions 0xb796, 0x7931 and 0x7adb, and I have thus verified the above details.
Please contact me if you know of any other BIOS or source code versions.
Many Cheers, Peer
PS: also to be found here
|
|
|
Post by D-Type on Jan 7, 2023 6:50:19 GMT -5
A useful analysis! What is the impact of the Joy_Digital change? The 'abort intro' update I like the sound of.
|
|
|
Post by Peer on Jan 7, 2023 7:03:03 GMT -5
A useful analysis! What is the impact of the Joy_Digital change? The 'abort intro' update I like the sound of. Likely a minute change in the timing, whatever reason that might be for. The patch consists of four lines of code which are slighly reordered. The comment in the rev_d PDF is "Strobe sequence in 'JOYBIT', recommended by Gary Lawrenc".
The 'abort intro' is part of the two MB BIOS versions. You can press any controller button to abort the "VECTREX" intro and go directly to the title screen of the cartridge.
|
|
|
Post by Peer on Jan 7, 2023 7:14:04 GMT -5
The Print_Str() patch of rev_c causes a slight incompatibility:
In rev_a and rev_b, Vec_Text_Height is a signed value indicating the y offset between the raster lines. Printing the text start with the top line, and a negative value of Vec_Text_Height (-1 to -128) causes the text to displayed "correctly". The more negative, the more the text is stretched in y direction. A positive value (+1 to +127) causes the text to "stand on its head".
In rev_c, the patch leads to the text being displayed "correctly" for negative values (-1 to -32). All other values (-33 to -127, and +1 to +127) cause the text to stand upside down. As the texts are essentially unreadable for such values, this incompatibility is a minor issue. Except maybe for the fancy text effects.
But also, the timing is slightly altered, so that texts with Vec_Text_Height values from (-1 to -32) appear minutely more stretched in y direction (taller) in rev_c than in rev_a and rev_b. This can be seen with the bare eye: Just compare the heights of the "Mine Storm" title text (or any other cartridge title) in 0xb796 and 0xb7931 to the height in 0x7adb.
I have no idea why the Print_Str() patch was added, as it does not improve or change the overall performance of the routine. The total number of cycles for displaying the same text stays exactly the same. The comment says "chance to RASTER, recommended by Marc Indictor".
|
|
|
Post by Peer on Jan 8, 2023 9:45:34 GMT -5
The code of the rev_c PDF also contains a section (right at the beginning of the character data table) that has been commented out, showing vector data for a 7 segment display of hexadecimal numbers. In indication that this has actually been used at some point is the description of the checksum test on page 21 of the Vectrex Service Manual, displaying the checksum value in exactly that 7 segment vector style.
|
|
|
Post by Mayhem on Jan 12, 2023 12:19:27 GMT -5
So all MB Vectrexes have the Minestorm level 13 bug fix then?
|
|
|
Post by Peer on Jan 12, 2023 13:09:13 GMT -5
So all MB Vectrexes have the Minestorm level 13 bug fix then? I can confirm that both the MB 0xb7931 BIOS and the MB 0x7adb BIOS contain the very same bugfixed version of Mine Storm. What I do not know is if all MB Vectrexes that were ever produced came with either of these two BIOS versions, or if there are probably more versions.
|
|
|
Post by Mayhem on Jan 19, 2023 4:47:44 GMT -5
This is quite an important bit of info as it was previously thought only the no buzz MB consoles had it present.
|
|
|
Post by Peer on Jan 19, 2023 5:00:09 GMT -5
This is quite an important bit of info as it was previously thought only the no buzz MB consoles had it present. Are the "no buzz MB" consoles those coming with BIOS 7ADB? And the "buzz MB" consoles those with BIOS 7931?
|
|
|
Post by Peer on Jan 19, 2023 5:17:35 GMT -5
This is quite an important bit of info as it was previously thought only the no buzz MB consoles had it present. And out of curiosity: Why is this so surprising, or why was this apparently not known before?
You can simply try this out in Vide. Select the respective BIOS image in the configuration dialog, and select any dummy file, which is not a proper vectrex binary, as cartridge file in vecxi. After the boot sequence, the emulation will then start the Mine Storm version that comes with the BIOS. I did this a long time ago, and I thought that this was known and so I never bothered to mention it earlier.
|
|
|
Post by bomberman94 on Jan 19, 2023 18:22:22 GMT -5
Are the "no buzz MB" consoles those coming with BIOS 7ADB? And the "buzz MB" consoles those with BIOS 7931?
I can confirm that my two non-buzz consoles (German version and high serial numbers) have the „7ADB“ Bios.
|
|
|
Post by Mayhem on Jan 21, 2023 16:40:39 GMT -5
All the non buzz have ADB I believe, and it was thought that only that BIOS had the fixed Minestorm, but evidently not!
|
|
|
Post by Peer on Jan 22, 2023 1:27:31 GMT -5
All the non buzz have ADB I believe, and it was thought that only that BIOS had the fixed Minestorm, but evidently not! So, interesting question, where does the 7931 BIOS file originate from? I picked it from the Vide sources, but how did it get there? And so far I have never seen a real 7931 console and also do not know a person owning one.
|
|
|
Post by Malban on Jan 22, 2023 3:39:47 GMT -5
I am pretty sure, that I have a console with that version.
I have not all near now - but I can check in the evening the ones I have access to.
|
|
|
Post by Peer on Jan 22, 2023 3:55:33 GMT -5
I am pretty sure, that I have a console with that version. I have not all near now - but I can check in the evening the ones I have access to. Now you were quicker I was just about to send you an email. Thanks for checking!
|
|