Jump to content
Ikrananka

Front Line Ground Colour

Recommended Posts

I'm currently working on a relatively small update to my CV ROM Update Project part of which is to tidy up a few loose ends from the past.  One of these loose ends was around the ground colour in the game Front Line and if two different ROMs were released in cart form, or if it was only one ROM as I had so far found.  This was first discussed way back in April 2013 when Pixelboy mentioned that he believed that there were two versions of the Front Line ROM.  Pixelboy stated that "They are identical except that in one of them the ground is yellow when you start the level, while the ground is green in the other version of the ROM. I actually own both versions of the cartridge."

 

This was then followed up by NIAD checking four different ROM dumps that he had and he found that "two have the green background and two have the yellow background."

 

21 months later and NIAD did some further testing with blueMSX and concluded that the ground colour was dependent upon the controller that was selected, "Standard Hand Controller = Yellow ground" and "Super Action Controller = Green ground".  NIAD also posted a ROM file (Front Line (1983)(Coleco)[b1].zip) "where the ground color is green no matter what controller is used".  At that time NIAD tasked me with getting to the bottom of this due to my work on the CV ROM Update Project.  Well, real life got in the way and I never did get round to digging into this, that is until now - nearly five years later 😱

 

Well, I'm pleased to report that I have the answer.  In a nutshell, there is only ONE version of the Front Line ROM as published in cartridge form (i.e. excluding ROM hacks and bad dumps).  The ROM of this game contains two different colour tables, one with a yellow background and the other with a green background.  When starting a game it randomly (50:50) chooses one of the colour tables.  So, every time you start a game of Front Line you have an equal chance of seeing either yellow ground or green ground.  This is completely independent of the controller selected in an emulator or plugged into a console.  Try it yourself, start a game of Front Line and note the ground colour.  Reset the console and start a game again, note the ground colour.  Repeat say 10 more times and you will see that the ground colour may be either yellow or green when starting a game and that the frequency of occurrence of each colour is basically the same.

 

So, why does the ROM file that NIAD posted only show the ground as being green.  Firstly, looking at the filename, there's a clue there.  It is appended with [b1], with the 'b' here being critical as it means that the ROM dump has been flagged as being a "bad dump" which means that it isn't a perfect dump of the cartridge and contains errors.  Secondly, analysis of this ROM shows that there are 22 bytes of errors, some or all of which contribute to the ground being fixed as green.  This is one of the reasons I started the CV ROM Update Project, to provide a clean, accurate set of ROMs free of the bad dumps that have plagued the CV community for decades.

 

There is another clue that the two different ground colours are by design.  Checkout the back of the North American box for this game.  Two of the screenshots show the ground as being green while the other two show it as being yellow.

 

197876929_FrontLine.thumb.jpg.64d667ec6e18975f8810b990f2da3930.jpg

 

 

In conclusion, the ROM file that is contained in the CV ROM Update Project is the one and only correct ROM for this game.

 

 

If you would like further technical details then below is the analysis of the game code that nanochess did for me.  Huge thanks to nanochess for his invaluable help with this.

 

Quote

The game operates in screen mode 1 where the color table is only 32 bytes wide and located at $2000 of VRAM, each byte selects the color of 8 characters on screen, so 32 x 8 = all the 256 characters.

 

At $8280 it will read the R register (Refresh) to select a color table based on the bit 0, so essentially it selects one of two color tables for the game (one located at $D1F2 and another located at $D212).  The selection is 50:50 because the refresh register is increased on every M1 cycle, that means on every instruction it will be increased by one. And the code checks for bit 0.

 

The screen background is located at $1800, and the character composing has code $1a, so ($D1F2 + $03) = $D3 (purple on green), and ($D212 + $03) = $DA (purple on yellow). Essentially the table at $d212 is the same as $d1f2 but color 3 ($03) has been replaced with 10 ($0a).

 

So you are right, the color set is selected randomly. Patching file offset $0284 with $00 will make it to always select green background. Patching offset $0284 with $18 will make it to always select yellow background.

 

Edited by Ikrananka
  • Like 5

Share this post


Link to post
Share on other sites

Damn that is cool info Ikrananka! I bet it was to prevent screen burn on the CRT TV back in the day.

Share this post


Link to post
Share on other sites
9 minutes ago, Yurkie said:

Damn that is cool info Ikrananka!

Thank you, but I couldn't have done it without help from nanochess ☺️

Edited by Ikrananka

Share this post


Link to post
Share on other sites

Nanochess is a great guy an huge asset to the ColecoVision community too.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   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...