Jump to content
IGNORED

Js99'er


Asmusr

Recommended Posts

Dragon Flyer, also known as Spotshot when it was initially released. DataBioTics had a tendency to change the names of programs over time to make them look like something new. . .and Spotshot was the first DBT cartridge I bought back in the day--along with Black Hole.

Edited by Ksarul
Link to comment
Share on other sites

  • 2 weeks later...

Posted on the Facebook Ti group:

 

From: Javier A Rivera:

I know I'm new here, and maybe has been discussed a lot, but wanted to congratulate the makers of the js99er.net. I was not aware of it and was amazed of the capabilities and programs. Before I used a windows emulator, but this I can use in my Mac with ease! It even allows me to do screenshots! Thanks again to the maker, is a jewel.

  • Like 5
Link to comment
Share on other sites

Rasmus, I have a small feature request: would it be possible to display the meaning of the contents of the VDP registers somewhere on the debugger screen? That way I don't have to flip between docs and js99er to figure out if I've set my registers to point to the correct locations in VRAM, etc... :).

Link to comment
Share on other sites

Rasmus,

 

I am impressed at how far this javascript emulator has progressed in such a short time. Thank you for making it, as it has rekindled my interest in the console.

 

Could I ask for a feature? In the Options, could there be a Retain Mini Memory Area Contents switch, such that >7000 to >7FFF is retained, even if for example, the red Reset button is pressed?

Link to comment
Share on other sites

Thank you for the suggestions - keep them coming.

 

I have added the VDP table locations and sizes on the Debugger tab. And the Mini Memory RAM now survives a Reset.

 

The app should update automatically the next time you access it (without the need to refresh the page), but I have had a few problems with the app cache manifest, so please let me know if it doesn't work.

 

Rasmus

Link to comment
Share on other sites

I don't know how much of an affect this really has, but I'd thought I'd mention it.

 

Question for anyone who uses it, does Js99'er run typically at 62.5 fps on your computer?

 

This is a partial log from when it starts up:

Web Audio API detected
AudioContext: sample rate is 48000
PC reset to >0024
Database opened OK.
PC reset to >0024
Start
Frame 0 running
Executing disk DSR power-up routine.
Executing disk DSR FILES routine (n = 3).
Frame 248 running: 62.0 / 60.0 FPS
Frame 498 running: 62.5 / 60.0 FPS
Frame 747 running: 62.2 / 60.0 FPS
Frame 997 running: 62.5 / 60.0 FPS
Frame 1247 running: 62.5 / 60.0 FPS
Frame 1495 running: 62.0 / 60.0 FPS
Frame 1745 running: 62.5 / 60.0 FPS
Frame 1995 running: 62.5 / 60.0 FPS
Frame 2245 running: 62.5 / 60.0 FPS
Frame 2495 running: 62.5 / 60.0 FPS

I'm using Firefox browser, Windows 7 OS, and gen 3 core i5 CPU.

Link to comment
Share on other sites

  • 4 weeks later...

ok, so I really like js99'er. An emulator written in Javascript, wow!

Guess this really shows the power of Javascript and how far browsers have come.

 

It runs flawlessly in both windows and on my macbook.

 

Here's a little hack I made, based on minimal.html that allows me to run Parsec in a scaling window or even full-screen.

 

Just save the below as parsec.html in your js99er-2.5 folder and you should be good to go.

 

 

 

<!DOCTYPE HTML>
<html>
<head>
    <script src="util.js"></script>
    <script src="log.js"></script>
    <script src="lib/jquery-1.11.0.min.js"></script>
    <script src="software/system.js"></script>
    <script src="software/blocks.js"></script>
    <script src="software.js"></script>
    <script src="javagear/sn76489.js"></script>
    <!-- TI-99/4a components -->
    <script src="disk.js"></script>
    <script src="tms9900.js"></script>
    <script src="tms9918a.js"></script>
    <script src="f18a.js"></script>
    <script src="f18agpu.js"></script>
    <script src="tms9919.js"></script>
    <script src="tms5220.js"></script>
    <script src="memory.js"></script>
    <script src="cru.js"></script>
    <script src="keyboard.js"></script>
    <script src="ti994a.js"></script>
    <!-- Main -->
    <script src="settings.js"></script>
</head>
<body>
    <canvas id="canvas" style="display: inline"></canvas>
    <script>
        var settings = new Settings(false);
        var ti994a = new TI994A(document, document.getElementById("canvas"), {}, settings);
        var software = new Software();
        software.loadProgram("software/parsec.json", null, function(cart) {
            if (cart != null) {
                ti994a.loadSoftware(cart);                
            }
            ti994a.start();
        });
        
        $(window).resize( function() {
            $('#canvas').css(
                { 'width'  : $(window).width()  + 'px',
                  'height' : $(window).height() + 'px'                  
                });                        
        });
        
        $(window).ready( function() {             
            $('body').css( 
                { 'overflow' : 'hidden',
                  'margin'   : '0px'
                });        
            $(window).trigger('resize');             
        });
    </script>
</body>
</html>

 

Edited by retroclouds
  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...

Hi

 

Am loving this emulator!

 

Got a question. If I have an assembly language object file I have created, how can I load it into js99'er?

 

Can I add the object file to a DSK image, and load it from there?

 

Its something I can do in classic99, but I can't seem to get it to work in js99'er.

 

cheers

Daryn

  • Like 1
Link to comment
Share on other sites

Hi

 

Am loving this emulator!

 

Got a question. If I have an assembly language object file I have created, how can I load it into js99'er?

 

Can I add the object file to a DSK image, and load it from there?

 

Its something I can do in classic99, but I can't seem to get it to work in js99'er.

 

cheers

Daryn

 

Sure you can. What are you having problems with, the loading of the disk image or the loading of the object file?

 

If you have Google Drive you can also use that option, this is like the FIAD option in Classic99, see post #145.

Link to comment
Share on other sites

 

Sure you can. What are you having problems with, the loading of the disk image or the loading of the object file?

 

If you have Google Drive you can also use that option, this is like the FIAD option in Classic99, see post #145.

 

Hi Rasmus!

 

Nevermind, just got it to work! WOO!

 

I just did this post here explaining what i did using classic99 & mini-memory

http://atariage.com/forums/topic/234522-using-xdt99-programming-sprites-in-mini-memory-tutorial-from-99ner-mag/

 

Was able to repeat it just now. It was quite late last night when I tried it on js99er. Must have been too sleepy!

 

Cheers!

Daryn

Link to comment
Share on other sites

I think this has been mentioned before, but the other cool thing about js99er is how cool it is on a mobile. On my Nexus 5 its great, especially with an external keyboard plugged via a USB-OTG port. When you rotate phone to landscape, the screen size of the TI fits almost perfectly. And above all its fast!

 

The current Droid-99 emulator on Android is broken on the latest lollipop OS, so js99er is even more wonderful!

 

cheers

Daryn

Link to comment
Share on other sites

  • 3 weeks later...

Js99'er finally has proper speech emulation. Speech has to be turned on under Options before you will hear anything.

 

I borrowed the C++ code from MAME/MESS, converted it into JavaScript, and hooked it up to the Web Audio API. It is an accurate emulation of the TMS5220 where the coefficients used in the speech generation have even been verified by decapping the chip.

 

The only real change I have made to the code is to replace the emulation of the random number generator on the chip, which used 80 shifts, 80 ANDs and 60 XORs per audio sample :-o, with a single call to the JavaScript random function. I am not able to hear the difference.

 

There is still an occasional glitch where the speech chip runs out of data in the FIFO buffer, which I assume is caused by a timing issue, but overall the sound quality is great. It continues to amaze me what you can do with JavaScript.

  • Like 5
Link to comment
Share on other sites

  • 3 weeks later...

I recently added SAMS support to js99er.net, but I have a few questions:

 

- I'm not sure about the bit size of the registers at >4000, >4002 etc. Are they 16, 12 or 8 bit? Or does it depend on the amount of memory on your card? To be more specific, if you write >FF to >4000 and >FF to >4001, can you then read the word >FFFF back from >4000, or would you get >FFF0 or >FF00?

 

- What is the normal way to detect SAMS, do you try to write a unique number into each bank and read it back or can you use the registers at >4000?

 

- Does anyone have the original AMS development kit disks from Asgard? The ones on whtech.com seem to be missing some files.

 

- Finally, if anyone have some other disks with programs that use SAMS, please post them here. I have tested RXB with Rich' In the Dark, and Bruce Harrison's AMS Slideshow and Video Titler, but I'm not aware of other titles.

 

Thanks,

Rasmus

AMS File Transfer (1998)(Bruce Harrison)(PD).dsk

AMS Slideshow (1997)(Bruce Harrison)(PD).dsk

AMS Video Titler (1997)(Bruce Harrison)(PD).dsk

SAMS1.dsk

SAMS2.dsk

SAMS3.dsk

  • Like 2
Link to comment
Share on other sites

Classic99's SAMS support was written by Joe Delekto and is largely in a standalone file for the moment, if you want reference. He provided a disk with TI-Nopoly and some test programs. If you look in Classic99's DSK1 folder (assuming you didn't delete anything), "AMSTEST4" (EA5) will run a memory test, and ABOOT is a menu program that loads some standard utilities needed for TINopoly. (files associated MUST be on DSK1).

 

Basically, get these files on a disk, and you should be able to run the tester and the game:

 

ABOOT, AEMSSYS, ABOOTMOD, ABOOTMODS, AEMSRES1, AEMSRES2 - all parts of ABOOT

ASHOE - ABOOT utility program, my notes say it's for retaining menu items. My notes also say it might not be too useful right now (probably since Classic99 doesn't persist the AMS memory, but I don't remember).

AMSTEST4 - standalone EA#5 test program (looks pretty comprehensive)

TIN_A through TIN_M - TI-NOPOLY - must be run from ABOOT.

 

And of course, Thierry has a comprehensive look at the AMS system on his tech site:

http://www.unige.ch/medecine/nouspikel/ti99/superams.htm

 

Link to comment
Share on other sites

Hi Rasmus!
I tried to let JS99 speak from Basic in Terminal Emulator II but the log shows warnings:

PC reset to >0024
Speech: reset
Executing disk DSR power-up routine.
Executing disk DSR FILES routine (n = 3).
...
Speech: speak external
Begin talking
*** Warning *** data_write: Ran out of room in the tms52xx FIFO! this should never happen!
*** Warning *** data_write: Ran out of room in the tms52xx FIFO! this should never happen!

Here is what i did in Basic:

OPEN #1:"SPEECH",OUTPUT
PRINT #1:"HELLO THERE"

 

 

JS99 asked me to update and i confirmed that before trying it today.

JS99 is really nice!!!!

  • Like 1
Link to comment
Share on other sites

The TE2 does not check the FIFO. Indeed, it simply relies on the READY line operation. This was actually the main reason that I had to throughly rewrite the TMS9900 emulation in MESS to check the READY line during memory accesses within command execution. Before, TE2 did not work in MESS either.

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