Jump to content
IGNORED

JS7800: Atari 7800 JavaScript Emulator


raz0red

Recommended Posts

  • 4 weeks later...

A new version of JS7800 has been posted:

 

https://raz0red.github.io/js7800

 

1.) Added global high score support for "Popeye"

 

2.) Added global high score support for the latest version of "Pac-Man Collection!"

 

3.) Updated to recent versions of "Dragon's Cache", "Dragon's Descent", "Popeye", "Spire of the Ancients", "E.X.O", and "Knight Guy: Castle Days" 

 

Thanks,

Chris

  • Like 2
Link to comment
Share on other sites

On 12/13/2020 at 6:53 AM, Cyprian said:

well done @raz0red

would be possible to add a scanline effect?

 

 I've just checked demo 1E78 by Desire and it works ok till that moment:

 

 

 

would be possible to add a scanline effect?

 

Yes, all sort of filters can be added via the use of WebGL. Early on I prototyped scanlines and various other effects, but I haven't had time to get back to integrating them. They probably won't be integrated until I am satisfied with the core emulation implementation.

 

I've just checked demo 1E78 by Desire and it works ok till that moment

 

Yes, there are several issues with that particular demo. Specifically, there are missing implementations of undocumented opcodes (SAX), not applying a maximum DMA time limit, and inaccurate DMA cycle timings.

 

I have done quite a bit of work to resolve those issues, but there are still several defects that I need to resolve before promoting the changes to the general release (master). @RevEng has been a huge help, answering all of my annoying questions, and providing tons of valuable insights and suggestions.

 

At any rate, you can view a working version of the IE78 demon in JS7800 (on a branch) via the link below. But again, this build has many other defects that are still yet to be resolved.

 

IE78 in JS7800

 

Thanks,

Chris

 

 

Edited by raz0red
  • Like 2
Link to comment
Share on other sites

11 minutes ago, SlidellMan said:

You've made one of the best 7800 Emulators out there. Maybe you could do a 3DS homebrew version if the opportunity arises?

Thanks for the kind words, I really appreciate it.

 

Honestly, while JS7800 (and Wii7800) have improved on the original ProSystem code, they are still quite a bit behind A7800 and BupSystem in terms of accuracy and features. 

 

My goal is to improve the accuracy of JS7800 (which I am currently working on). Once that has been improved, it can be replicated to Wii7800 and other ProSystem-based emulators (I think the existing 3DS emulator is based on ProSystem).

 

Thanks again,

Chris

Edited by raz0red
  • Like 4
  • Thanks 1
Link to comment
Share on other sites

On 1/5/2021 at 4:21 PM, raz0red said:

(I think the existing 3DS emulator is based on ProSystem).

Not sure if there is a specific 3DS version, but in the trio of Emulators I'm working on for the DS (StellaDS, A5200DS and A7800DS), the A7800DS is definitely built on the old ProSystem code. 

 

When I took on the project, it needed a lot of updates (thanks to your Wii7800 for some of that!) to get the timing better and the speed up. I've increased the speed by more than 100% and the accuracy almost as much. It runs virtually all 7800 games (including all the homebrews) plus HighScore saving at full speed with a few holdouts (Alien Brigade runs about 50FPS and Commando and Ikari Warriors are about the same).  This is on a DSi or 3DS... on the original DS-LITE or DS-PHAT, you'll only be able to run the most basic non-bankswitching games (like Asteroids, Centipede, Joust, etc) at full-speed.

 

The three emulators I've worked on recently are all included in the latest Twilight Menu++ (TWL++) - pope them on an SD card for your DSi and off you go!

  • Like 3
Link to comment
Share on other sites

16 hours ago, Cyprian said:

 

@raz0red great

 

what about adding the Debugger to it?

 

That is something I would absolutely like to add once I am happy with the core emulation code.

 

I think it would be pretty straight-forward to add a very simple debugger by leveraging the existing browser JavaScript console (similar to GDB). Once that is implemented, time could be spent to add a more advanced UI for the debugger.

 

Thanks,

Chris

  • Like 1
Link to comment
Share on other sites

3 hours ago, llabnip said:

Not sure if there is a specific 3DS version, but in the trio of Emulators I'm working on for the DS (StellaDS, A5200DS and A7800DS), the A7800DS is definitely built on the old ProSystem code. 

 

When I took on the project, it needed a lot of updates (thanks to your Wii7800 for some of that!) to get the timing better and the speed up. I've increased the speed by more than 100% and the accuracy almost as much. It runs virtually all 7800 games (including all the homebrews) plus HighScore saving at full speed with a few holdouts (Alien Brigade runs about 50FPS and Commando and Ikari Warriors are about the same).  This is on a DSi or 3DS... on the original DS-LITE or DS-PHAT, you'll only be able to run the most basic non-bankswitching games (like Asteroids, Centipede, Joust, etc) at full-speed.

 

The three emulators I've worked on recently are all included in the latest Twilight Menu++ (TWL++) - pope them on an SD card for your DSi and off you go!

Very nice! I will have to give it a shot on my 3DS.

 

Once I get the JS7800 core finalized with the latest changes, I will port them back to Wii7800. At that point, it should be pretty straight-forward to walk through the changes and determine if you want to include them in your port.

 

Thanks, 

Chris

  • Like 6
Link to comment
Share on other sites

17 hours ago, SlidellMan said:

I look forward to the finalized version of JS7800, and the updated Wii7800. Oh, and feel free to add my little vertical shooting demo to the cartridge list if you want.

Honestly, I am looking forward to it as well. ?

 

Also, thanks for the permission to add your demo. I will look to integrate it for the next release.

 

Thanks,

Chris

  • Thanks 1
Link to comment
Share on other sites

  • 2 months later...
On 5/14/2020 at 1:48 PM, raz0red said:

Hi-

 

Thanks a lot for the kind words! Currently, there is not a way to use paddle controllers. There are a couple things that need to be done to make that happen.

 

First, paddle support needs to be integrated into JS7800. I did make some progress (as a POC) during my development on the latest version of the Wii port. I spent some time looking through the A7800 source, which has excellent support, and was able to make it function (albeit it was a quite hacky on my end).

 

The second thing that needs to be done is to add the ability to provide custom mappings from the HTML Gamepad API. The HTML Gamepad API provides a "standard" mapping that most modern controllers should map to. This essentially takes the common buttons of modern controllers and maps them to a standard layout. My guess is that the "2600-dapter II" may not map to the standard mapping, and therefore would need a custom mapping. You can actually test this if you go into the "Settings" portion of JS7800 and go to the Gamepads page. That page displays whether the connected controller(s) have a standard mapping. It will also indicate if the buttons (or paddle) is currently being mapped. If you press the buttons, etc. on a controller, a "white dot" will appear to show what 7800 control it is being mapped to (this is only applicable to joysticks at this time). The paddle controller, I assume, would need to map to an analog input. Further, this site, can be used to get more detailed information about the connected controller. I would be very curious to know what that site has to say about the "2600-dapter II". Does it map the POT movement to an analog input?

 

I do definitely want to add paddle support. I think the first step would probably be supporting it via mouse input (or touch once a mobile version of JS7800 is released). The second would be figuring out how to map adapters such as the "2600-dapter II" it to the HTML Gamepad API.

 

Thanks again,

Chris

 

You made a great work!!! Will be asome if you can make something similar for Atari800

 

Link to comment
Share on other sites

  • 2 weeks later...
On 4/14/2021 at 9:10 AM, Karl G said:

Are there any major known issues with TIA sound? My sound effects sound fine in my game, but the title screen music sounds garbled compared to when I run it on a7800:

 

I don't know if they have been documented, but definitely seems like an issue with the ProSystem TIA implementation.

 

Chris

  • Like 2
Link to comment
Share on other sites

  • 3 months later...

I just added this emulator to the front page pf my website and wrote a tiny piece about it in the site's articles section: 

 

Mr. raz0red has cooked up an Atari 7800 emulator so easy to use, that I put it permanently on the front page of my website. Emulation is never perfect, but you can experience so many homebrews and works in progress by simply clicking a few mouse clicks. So fun. Try to beat my scores on the boards! My initials are VIN. http://www.atari7800forever.com

jsa7800.png

  • Like 4
Link to comment
Share on other sites

  • 5 months later...
On 7/31/2021 at 10:06 PM, Cousin Vinnie said:

I just added this emulator to the front page pf my website and wrote a tiny piece about it in the site's articles section: 

 

Mr. raz0red has cooked up an Atari 7800 emulator so easy to use, that I put it permanently on the front page of my website. Emulation is never perfect, but you can experience so many homebrews and works in progress by simply clicking a few mouse clicks. So fun. Try to beat my scores on the boards! My initials are VIN. http://www.atari7800forever.com

jsa7800.png

AHHHH  I was wondering who VIN was....we have been doing battle... he he he...I am NIK on JS7800 boards....LOL!!!!

Link to comment
Share on other sites

  • 1 year later...

A new version of JS7800 (0.0.5) has been posted:

 

https://raz0red.github.io/js7800
 

07/30/23 (0.0.5)
    - Banksets support
    - Maria background color fix (Keystone Koppers)
    - Cartridge headers fix (Fixes several ROMs that required special versions)
    - Improved cycle accuracy (resolves several game glitches, still not perfect)
    - YM-2151 homebrew auto-detect support
    - Pokey filter support (contributed by RevEng @ AtariAge)
    - Support for 7800 Diagnostic cartridge
    - Save state support (only accessible via webЯcade currently)
    - Added to default game list: IE78 (Demo), Bad Apple (Demo), Bankset Tests,
      Baby Pac-Man, 7800 Test, Keystone Koppers (Demo), Galaxian, PentaGo!
    - Updated several games to latest versions
    - Added high score support for: 1942, Galaxian, Keystone Koppers, PentaGo!,
      latest versions of games that were already supported.


Attack of the PETSCII Robots (Demo)
IE78 (Demo)
Bad Apple (Demo)

Thanks to @RevEng for all of his support and contributions.

Chris.
 

Edited by raz0red
  • Like 8
Link to comment
Share on other sites

  • 2 weeks later...

There seems to be a bug related to the timestamp that is being applied to scores in the leader board.  The upper score in the two circled scores came first, and did not occur at the time listed.  The time is correct for the lower(positionally, on the screen) score.

Croppedscreenshotfrom2023-08-1318-58-47.thumb.jpg.f6b9724504e78bbd35c3b68da1ea1264.jpg

Link to comment
Share on other sites

1 hour ago, fluxit said:

There seems to be a bug related to the timestamp that is being applied to scores in the leader board.  The upper score in the two circled scores came first, and did not occur at the time listed.  The time is correct for the lower(positionally, on the screen) score.

Croppedscreenshotfrom2023-08-1318-58-47.thumb.jpg.f6b9724504e78bbd35c3b68da1ea1264.jpg


Yeah, that is definitely confusing. The way it works is that it sends all of the high scores from the current gaming session together to the server.

So, when it records them, it uses the time of the submission for the set of scores. In other words, it isn't exact to the time each individual score was achieved. 

 

However, I could definitely make a fix that retains the oldest time if a score and initials are identical. I think that would come close to achieving score-specific timestamps.

 

Thanks a lot,

Chris.

Edited by raz0red
  • Like 2
Link to comment
Share on other sites

08/13/23 (0.0.7)
    - Pokey rewrite (contributed by RevEng @ AtariAge)
    - RIOT interrupt mirror fix (contributed by RevEng @ AtariAge)
    - Added Drelbs homebrew
    - Added latest version of Arkanoid homebrew (now works due to RIOT fix)
    - Added several Pokey-based demos

08/10/23 (0.0.6)
    - Updated palettes (contributed by Trebor @ AtariAge)
    - YM-2151 default volume level adjustment
    - Cartridge header fix for television type


All credit goes to @RevEng and @Trebor for the latest updates to JS7800.
 

@RevEng rewrote the entire Pokey implementation, amazing! Additionally, he pointed out an issue with the RIOT interrupt that fixes a crash that was occurring with the most recent version of Arkanoid (when attempting to select your controller type).

 

@Trebor provided a pull request that included the latest version of his super accurate palettes.

Also, thanks to all the homebrew authors for allowing me to include their work in the default selection list, I really appreciate it!

One more thing, it is worth noting that @RevEng's changes should be fairly straight-forward to port to any other ProSystem variants (I really need to sync all of the recent changes back to Wii7800).

 

Chris.

 

Edited by raz0red
  • Like 5
Link to comment
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.
Note: Your post will require moderator approval before it will be visible.

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