I recently cited here in Skooter Blog that I've installed a 2600RGB kit in an Atari 2600. Now I play Atari 2600 with a very sharp image and fantastic colors.
I'll still talk about this whole endeavor here in Skooter Blog, there is a series of articles in the oven. But the queue is great, so it's going to take a while.
And this article is only coming out before because it belongs to the Problems and Solutions series, which has priority because if I don't write quickly, I forget the solution. 🙂
Before I even buy the 2600RGB, I was already aware that at least one game had problems with it: Warlords. But in the same forum where the problem has been reported (AtariAge), the member SpiceWare já apresentou um hack como solução, solving the problem, at least for everyone who has the Harmony Cartridge.
The Atari 2600 is a unique system in the sense that the games themselves handle tasks such as timing and synchronization. On account of this, some programmers tried to do different things, or they simply made mistakes while programming, and that generated some games with timing/sync problems.
CRT TVs are normally quite tolerant with out of specification signal, so we played a lot of these games for years without any problem. But Framemeister is more picky. Non-standard signals cause it to get lost, especially when it works with RGB signals.
As soon as I finished the installation of the 2600RGB I tested several of my favorite games. The vast majority worked perfectly. I put some of them in videos on my Youtube channel. But, I found problem in two games:
- Video Pinball
The Video Pinball in its NTSC version doesn't work at all. Only PAL versions works. I have no solution yet.
Regarding Tapper, it appears with the graphics somewhat buggy, as if a signal had been incorrectly deinterlaced. Check out how both these games behave in the video below:
I decided to seek information regarding possible problems of synchronization/timing of these games and I found a thread on AtariAge talking about problems with Tapper. Apparently the programmer tried to do an interlaced display, but with incorrect timings. For most CRT TVs there is no problem, the game works normally despite the incorrect timings and, in fact, they show an interlaced image. Other older TVs complain that the singal is non-standard. With 2600RGB + Framemeister through composite video or S-Video, there is also no problem. But using the RGB output of the 2600RGB connected to the Framemeister, the problem appears.
Well, in another thread, still at AtariAge, the member Omegamatrix created a PAL60 version of Tapper, and it has already fixed the problem of timing. Still in another thread of the AtariAge, the member alex_79 did a new timing correction in the ROM from Omegamatrix.
Both PAL60 versions work normally with RGB output 2600RGB + Framemeister. But I don't really need a PAL60 version. What I really wanted was an original NTSC version only with the correction of the timings.
I don't know anything about Assembly code, but still I decided to take a look at the codes provided by the Omegamatrix and by alex_79 in their corrections, in an attempt to understand what they have changed to try to do the same in the original NTSC.
When I opened the code I found a pleasant surprise, both left in the code a couple of variables that allows you to enable/disable the code that they modified, that are involved in if/else structures with the original and the modified code. The variables are in the lines 72 and 73:
NTSC = 0 SCANLINE_FIX = 1
Now things have gotten easier. I assumed that to generate a NTSC version with original timing corrections it was only a matter of changing the variable NTSC to 1:
NTSC = 1 SCANLINE_FIX = 1
I still had to figure out how to compile those codes. With the help of Google, I found quickly the assembler DASM and also the binaries for Windows. In the first mount attempt, the binary generated was 2 bytes larger than it should and did not work on the Stella emulator. I did another quick search and found a Programming Guide, also on AtariAge, explaining that I needed to use the flag -f3.
Now yes, to generate the binaries NTSC with timing corrections I used the following commands:
It:\ROMs\Atari 2600\XRGB Mini> d:\tools\dasm\dasm "Tapper (fixed).asm" -f3 -o"Tapper (fixed).bin" It:\ROMs\Atari 2600\XRGB Mini> d:\tools\dasm\dasm "Tapper (fixed2).asm" -f3 -o"Tapper (fixed2).bin"
The video below is the version with the fixes from Omegamatrix:
Now yes, I can play Tapper, one of my favorite games, with the best possible image in an Atari 2600 and without glitches. 🙂
We still got to fix the Video Pinball, but in its case I found no ready fix that can help me. It remains to study the code Assembly or wait for Community aid.
Just to complement, the binaries from Atari 2600 can be disassembled with Distella (and reassembled with the DASM), which makes it easier to modify these ROMs. Otherwise we'd have to work directly with the binary code in hexadecimal editors.
Finally, here I leave the two binaries from Tapper with the corrections:
- Tapper (fixed) – NTSC original version with corrections from Omegamatrix
- Tapper (fixed2) – NTSC original version with corrections from alex_79