Wow, that is amazing!
Really, I can totally assure you that I never saw Jace before. I did not have a look at it yet to be honest. I am a little rushed at work right now and already invested a little too much time in Javatari in the last weeks. :-(
When I started Javatari, I tried to make the design as close as possible to the real hardware. I imagine you had the same approach, maybe that ended up making our designs alike! Sometimes I feel that there is not really a lot of different ways of implementing really simple and elegant code for a particular problem.
I really do not like much to use pre-made code and libraries... I am already forced to do it at work. :-)
But for a home project, where would all the fun go if you just plug dozens of libs? I like to design and code, not just integrate. :-)
Also at work, I am always the guy that prefers simple homebrew solutions over heavy libs from the market.
In the first version, I also made the design using a little more "features" of Java, like Enums, switches, and so. If you look at the first versions of the source you'll see. Then I did some performance experiments and decided to wipe out the Enums and switches from the critical parts of the code. That gave me a good boost in performance.
The Atari 2600 has only 128 bytes or RAM (thats right, not 128K, just 128 bytes), so I did not invest too much at this area.
The more complex part is the various cartridge "mappers" out there, Because the 2600 can only see 4K of ROM at a time, the bigger games have to do bankswitching. And almost each company invented their own way of doing it when releasing their cartridges.
I also plan to offer memory cheats at sometime, but will do it in a very simple way since there is only 128K of memory. In fact, some cartridges have extra RAM also.
The biggest challenge for me is making people want to give a chance and look a little away from Stella, the most popular emulator, so they can see Javatari. What really makes Javatari different (and better in those aspects) than Stella is that its Java based, so its much more portable and can be deployed on line.
And..... of course..... Multiplayer mode!
Have you tried it? You must see it working on a local area network, preferably. Its really amazing!!!
As I said, I did not do much research about existing emulators, but I believe this multiplayer mode is exclusive for a 2600 emulator.
I don't know if you know how the Atari 2600 works besides the CPU. It is a CRAZY machine, with NO VIDEO BUFFER. The game has to follow the CTR beam all the time and fire events that trigger the display of objects at the current beam position! It is a precision and timing nightmare...
That is the most complex part of the emulator.... The video chip.
Try to enter the various Debug Modes (ALT + D), and you will see the important events as colored pixels on the screen. Also, enlarge the display with Ctrl-Shift-Arrows so yo can see the non-visible parts of the video signal.
The 2600´s video chip does not know what a frame is. It can only generate lines, and it is up to the game and CPU to control how much lines to draw, and to command the Vertical Blank and Synch signals sent to the TV.
Very unusual but very simple and elegant, for its time!
Last year I created a Power Point presentation for my colleagues, explaining how the Atari 2600 works internally and also a little of the Emulators design. I presented it it an internal technical event in the company I work.
I can sent it to you if you'd like to see it, but unfortunately it is in Portuguese.
Regards,
Peccin