Jump to content
IGNORED

Js99'er


Asmusr

Recommended Posts

Ok, got your 1.5 version , and I installed Firefox.

 

I can't hear any sound - I've checked if it is my machine, my machine is fine. Don't know why?

 

Does it say "Web Audio API detected. AudioContext: sample rate is 44100" at the beginning of the log?

Link to comment
Share on other sites

 

Does it say "Web Audio API detected. AudioContext: sample rate is 44100" at the beginning of the log?

Yes, it does.

 

I fired it up just now ...... it did a broken beep to start with, and then no sound at all.

 

I'm starting to think it's my Realtek sound drivers to be honest. Unless anyone else can report a similar problem?

(This is in Firefox browser.)

 

ps. I'm getting an average of 28 fps. The computer is definately destined for the dustbin.

Edited by Retrospect
Link to comment
Share on other sites

Yes, it does.

 

I fired it up just now ...... it did a broken beep to start with, and then no sound at all.

 

I'm starting to think it's my Realtek sound drivers to be honest. Unless anyone else can report a similar problem?

(This is in Firefox browser.)

 

ps. I'm getting an average of 28 fps. The computer is definately destined for the dustbin.

I think the driver for Realtek may be so old as to be incompatible with this app.

  • Like 1
Link to comment
Share on other sites

I'm getting the same results on my various Windows machines. Some times a beep and then nothing.

All are using Firefox to run the emulator -- tried all versions from 25 to the lastest with the same results.

When minimized sometimes a garbled choppy sound happens.

 

Is there a web page to test the JavaScript Web Audio functionality of browsers??

 

Great work there!!! Just need to try it out on my android JB tablet.

 

Full Tower - i7-980X 3.6GHz 6C / 24G / Win7Pro64 / SB-XFi (2010) [Main System]

Mid Tower - i7-??? 3.2Ghz 1C-HT / 2G / WinXPPro32 / SB-Audigy 2 (2004) [Retiring]

Asus N56V Series Laptop - i7-3610QM 4C / 2.3GHz / 6G / W7Pro64 / Realtek (2014) [New - 2012/13 Demo Refurb]

Acer Aspire 5745 Laptop - i3-350M 2.26GHz 2C / 4G / Win7HP64 / Realtek (2010) [Retiring]

Edited by Torrax
Link to comment
Share on other sites

I'm getting the same results on my various Windows machines. Some times a beep and then nothing.

All are using Firefox to run the emulator -- tried all versions from 25 to the lastest with the same results.

When minimized sometimes a garbled choppy sound happens.

 

Is there a web page to test the JavaScript Web Audio functionality of browsers??

 

Great work there!!! Just need to try it out on my android JB tablet.

 

Full Tower - i7-980X 3.6GHz 6C / 24G / Win7Pro64 / SB-XFi (2010) [Main System]

Mid Tower - i7-??? 3.2Ghz 1C-HT / 2G / WinXPPro32 / SB-Audigy 2 (2004) [Retiring]

Asus N56V Series Laptop - i7-3610QM 4C / 2.3GHz / 6G / W7Pro64 / Realtek (2014) [New - 2012/13 Demo Refurb]

Acer Aspire 5745 Laptop - i3-350M 2.26GHz 2C / 4G / Win7HP64 / Realtek (2010) [Retiring]

 

You can try https://webaudiodemos.appspot.com/

- Rasmus

Link to comment
Share on other sites

I have started to add support for the F18A. Try enabling the F18A on the options tab, then try out the Dungeon demo and the F18A scrolling demo from the Preloads menu.

 

https://googledrive.com/host/0B68J8LwEkfDyTUdTQWlVN0VPaEU/index.html

 

After you're done you may want to disable F18A support again, because it's pretty CPU intensive and probably buggy.

 

Edit: The two demos are based on emulation of a yet unreleased F18A firmware version, so you cannot run them on real hardware yet.

  • Like 2
Link to comment
Share on other sites

I have started to add support for the F18A. Try enabling the F18A on the options tab, then try out the Dungeon demo and the F18A scrolling demo from the Preloads menu.

 

https://googledrive.com/host/0B68J8LwEkfDyTUdTQWlVN0VPaEU/index.html

 

After you're done you may want to disable F18A support again, because it's pretty CPU intensive and probably buggy.

 

Edit: The two demos are based on emulation of a yet unreleased F18A firmware version, so you cannot run them on real hardware yet.

 

Excellent, great to see the F18 supported by an emulator! Thanks.

I also like your feature prioritization: scrolling and ECM (and to a lesser extent bitmap support) are in my humble opinion the most pertinent for games.

Link to comment
Share on other sites

 

Excellent, great to see the F18 supported by an emulator! Thanks.

I also like your feature prioritization: scrolling and ECM (and to a lesser extent bitmap support) are in my humble opinion the most pertinent for games.

 

Thanks, you have probably noticed there is also a bitmap demo now.

 

To make it really useful for development it should be easier to load and run your current project, perhaps by implementing the Google drive device I mentioned in an earlier post.

  • Like 1
Link to comment
Share on other sites

I have now added support for the F18A GPU. There are some demos in the Preloads menu you can try.

 

You will notice that the timing is all wrong. The single threaded nature of JavaScript and the low performance compared to compiled languages makes it very difficult to accurately emulate a 100MHz CPU, so this should be seen primarily as a tool for developers. In this implementation the GPU and the CPU never run together, the CPU waits for the GPU to become idle before continuing.

 

 

 

 

js99er-1.9.zip

  • Like 4
Link to comment
Share on other sites

The latest version has better support for mobile devices, and you can turn off sound if it doesn't work. There are buttons to control the joystick, and you can select an item from a TI menu by clicking or tapping on the number next to the item. F18A support is almost complete.

 

https://googledrive.com/host/0B68J8LwEkfDyTUdTQWlVN0VPaEU/index.html

  • Like 1
Link to comment
Share on other sites

Very nice! Any chance you could make the screen magnification adjustable via the GUI ?

 

That would allow me to see the screen at a bigger size.

 

I'm thinking about stowing away the log/registers on a tab, that would enable a bigger TI screen. But on my laptop the TI screen could not be much wider without becoming too tall. What is your screen resolution?

 

You may wonder why I have the big borders. This is for the F18A 30 row mode. Try the 'F18 scroll v 1.6' and hold down Fire/Tab to see this mode in action.

Link to comment
Share on other sites

Just tried it out. Works great and impressive.

 

I do dislike the keyboard emulation of the TI Keyboard as my Mac/PC keyboard does not have the key map on it.

Rather a pain in butt to pull out a TI and sit it beside me to type.

Link to comment
Share on other sites

 

I'm thinking about stowing away the log/registers on a tab, that would enable a bigger TI screen. But on my laptop the TI screen could not be much wider without becoming too tall. What is your screen resolution?

 

You may wonder why I have the big borders. This is for the F18A 30 row mode. Try the 'F18 scroll v 1.6' and hold down Fire/Tab to see this mode in action.

This is nice stuff! I'm using js99er on a desktop i7 pc with high-resolution 27" monitor.

Also use it on my laptop from time to time, that is why a configurable setting would be nice.

On a big monitor it is pretty cool to have the registers on the same page as the TI screen.

 

Here are some ideas, perhaps worth thinking about:

* possibilty to specify TI screen magnification level

* run TI screen in full-screen mode hiding most gui controls, think youtube here.

* Option to see the registers/debugger in an own window. That way you could put the window on a second monitor

* Communication between debugger and emulator based on JSON / javascript API. that way folks could write their own debugger

Link to comment
Share on other sites

Just tried it out. Works great and impressive.

 

I do dislike the keyboard emulation of the TI Keyboard as my Mac/PC keyboard does not have the key map on it.

Rather a pain in butt to pull out a TI and sit it beside me to type.

 

Yeah I know. The current keyboard mapping is based on physical keys (onkeydown, onkeyup events) rather than the characters produced by pressing the keys (onkeypress events). I'm considering switching to the latter, but there are also problems with that approach.

 

I have remapped a few keys, e.g. it should be easier for those of you with US/UK keyboards to find the double quote, and the arrow keys should work in text editing now. Let me know if there are any particular keys you want remapped.

  • Like 1
Link to comment
Share on other sites

This is nice stuff! I'm using js99er on a desktop i7 pc with high-resolution 27" monitor.

Also use it on my laptop from time to time, that is why a configurable setting would be nice.

On a big monitor it is pretty cool to have the registers on the same page as the TI screen.

 

Here are some ideas, perhaps worth thinking about:

* possibilty to specify TI screen magnification level

* run TI screen in full-screen mode hiding most gui controls, think youtube here.

* Option to see the registers/debugger in an own window. That way you could put the window on a second monitor

* Communication between debugger and emulator based on JSON / javascript API. that way folks could write their own debugger

 

I can definitely make some kind of customization of the magnification level possible. You probably know that canvas magnification is specified in CSS styles while the base pixel size is specified in the width and height attributes of the canvas. The problem is that I have been using the Bootstrap library in order to make the UI responsive, and this disagrees somewhat with the idea of specifying your own size. But I will think of something...

 

Seeing the log and registers in a separate window would be possible, but the idea of multiple browser windows is like so last decade. :)

 

There is actually no real debugger. The register display is just a period polling of the status. I don't know how much impact it would have on performance to add a real debugger, but so far I have been trying to avoid anything that could affect performance. It's like my game programming in TMS9900 assembler: you have to make sure your code fits within a 60Hz window. But I'm pretty sure that a debugger based on AJAX calls would be way too slow. Perhaps a web worker could be used, provided that the code in the base emulator could be reduced to a minimum?

 

Do you think having F18A emulation could revive some of your old game projects? I would love to see Time Pilot developed further. ;-)

 

Rasmus

  • Like 1
Link to comment
Share on other sites

Yeah, agree on the ajax calls. It is mighty impressive seeing how far you got with js99er.

It also shows how far browsers have evolved (javascript engines, etc).

 

I haven't done any TI programming in a long time, so I don't think Tutankham will be the next game I finish first.

It somehow, does not have the same drive as Pitfall had.

The major problem I see with Time Pilot is that it won't run without extra memory.

But I have done some graphics, I'd like to try how they look in the game.

 

I have been thinking about a new maze game. Something along the lines of jr. pacman. Baby Munchman :-)

The F18A emulation would serve me well there :-)

Edited by retroclouds
Link to comment
Share on other sites

If you have a Google account you can now access files on your Google Drive directly from Js99er.

 

Before you can use the new feature you need to go to the Options tab and enable Google drives. You now have 3 devices available: GDR1, GDR2, GDR3 that map to the folders Js99erDrives/GDR1-3 on your Google Drive. Files inside those folder are expected to be in TIFILES format, but there is also limited support for reading V9T9 files and PC files (assumed to be WinAsm99 object files).

 

Try to go to Basic and write a simple program, e.g. 10 PRINT "HELLO WORLD". Then save it to Google Drive device 1: SAVE GDR1.TEST.

 

The first time you access a Google Drive device it will create the corresponding folder on your Google Drive. In order for Js99er to access your drive it needs your permission. A popup window should appear that asks you to log in and give your permission for the App to manage files on your drive. If you don't see the popup and Js99er hangs a popup blocker might prevent the window from showing (in Chrome, look for a message in the top, right corner of the screen).

 

Authorization is handled via the OAuth 2.0 protocol and is a matter between you, your browser and Google. Js99er will never see your login or password, and Js99er is still running 100% locally in your browser. All the server is doing is to serve the static JavaScript files.

 

Note that even if you have the Google Drive client installed on your computer the file still needs to take a round-trip to Google's servers before ending on your local drive. That explains why the drive is slow compared to other emulated drives.

 

If saving seems to work on the TI side, try checking that the file has been created on your Google Drive as Js99erDrives/GDR1/TEST. To complete the test type NEW and OLD GDR1.TEST to load the file again.

 

The 'DSR' for the Google Drives is still very basic, only the SAVE, LOAD, OPEN, READ, WRITE and CLOSE op-codes are implemented. You cannot catalog drives or use sector functions. Error handling could also be improved, but it should work for basic saving and loading is most programs.

 

Rasmus

  • Like 2
Link to comment
Share on other sites

  • 4 weeks later...

I haven't worked much on Js99'er lately, but still a few features have been added:

  • An option to use your PC keyboard mapping on the TI. If you have a keyboard that is mapped differently from an English keyboard this makes a huge difference when typing in programs etc. In this mode the PC function keys are mapped to the TI Fctn+number key combinations. This is disabling F5 to reload the page, so you have to do this from the menu.
  • I discovered that Chrome has now implemented a speech API that can turn text into speech, so I mapped this to the resident vocabulary on the TI. It's far from a real emulation, but quite funny to hear the TI speak in a 2014 tech female voice. Try it in TI Scramble or in XB, e.g. CALL SAY("I WANT TO KNOW YOU"). It doesn't work with Parsec or anything that uses direct speech.
  • The screen is scaling better to the size of the host screen.
  • Light-year demo added.

Js99'er website.

 

I'm no longer recommending running this emulator from local files because some features may be blocked by security restrictions, but if you're interested in the source code it's available from the first post in this thread. For my development work I run it in node.js using the http-server plugin, which is a very easy way to set up a web sever compared to Apache etc.

 

Rasmus

  • Like 1
Link to comment
Share on other sites

I gotta say, this has become a very nice, full-featured emulator, and I often use it when I want to run something ad-hoc on a PC where I don't have MESS or Classic99 installed. I'll probably be doing the development of the F18A version of Alex Kidd on it.

 

I have a couple of questions about the accuracy of the emulator though:

  • Apart from the lack of threading and the (likely) slower GPU, is the F18A fully implemented?
  • Is your VDP implementation pixel, scanline or screen based?
  • I notice when running my Alex Kidd project in js99'er that oddly enough the jump physics seem to be a bit off compared to MESS or classic99. Admittedly I haven't tested it on real hardware yet, so it might be entirely my program.
  • Is there a way to run the emulation itself in full screen?

Again, very impressive work in such a short amount of time, I hope you keep working on it!

Link to comment
Share on other sites

  • Apart from the lack of threading and the (likely) slower GPU, is the F18A fully implemented?
  • Is your VDP implementation pixel, scanline or screen based?
  • I notice when running my Alex Kidd project in js99'er that oddly enough the jump physics seem to be a bit off compared to MESS or classic99. Admittedly I haven't tested it on real hardware yet, so it might be entirely my program.
  • Is there a way to run the emulation itself in full screen?

 

Hi Mole, it's great to know that my emulator is being used. :) I'm thinking of getting a proper website for it where I could add a download counter - as it is I haven't got a clue about how many people are using it.

 

The F18A is perhaps 90% implemented. It is running all the sample code I have found, but the implementation is based on how I think it's working (based on the relatively little documentation that exists) and has not been thoroughly tested. Multi colored tiles and sprites as well as the bitmap layer should work OK with all attributes implemented. [Edit: 30 row mode, and 80 column mode also work]. Scrolling also works fine but is based on a yet unreleased update to the F18A firmware where the fixed panels (left, right, top, bottom) are replaced with a second top layer of tiles. This is a great improvement and I hope Matthew will have time to finish this update soon. Special things like updating the F18A flash RAM are not implemented.

 

The VDP implementation is actually pixel/scanline based, so in theory it could draw the image in parallel with the CPU if JavaScript provided a mechanism for doing so. Even if I alternated between drawing a scanline and running the CPU the update to the display would not be visible to the end user. As it is now, the main loop is running the CPU for 50000 clock cycles, then the VDP is drawing the full image and so on. When the GPU is active it's simply taking over from the main CPU. The scanline interrupt is not implemented, and I have not bothered to implement sprite flickering or the 5th sprite bits in the status reg. And the counters/random number generators are not implemented either because Matthew is going to remove them.

 

If you have any code that is not working as expected I'm happy to take a look at it. I don't think you have posted any of your Alex Kidd code yet.

 

About running the emulator in full screen, this is not an option right now, but I could easily create an alternative html file that did not display the log panels. Is it for your own use or for embedding the emulator in a web site?

 

Rasmus

Link to comment
Share on other sites

It really amazes me how lucky we are as TI-99 fans, users, and hobbyists to have so many emulators from which to choose. I've been using a combination of PC99 through DOXBOX, the Java based V9T9, Classic99, and Win994A, and have tried Ti994W. I have been avoiding MESS mainly due to the fact that it supports so many other platforms, but I know I should bite the bullet and dive in, especially since I think it also supports the Geneve and has some features not available on all the others.



Now with Js99'er, we have yet another choice, one that can be used within a web browser, much like I've seen with the Apple ][. Those multi-carts are really cool! Thanks RasmusM for giving us yet another option to enjoy what to many of us is more than just another classic computer platform. I know it's more a novelty than a necessity for most of us, but any chance of more support for the speech synthesizer? I've found that the quality of speech on the different emulators varies, sometimes even from program to program.


  • Like 1
Link to comment
Share on other sites

 

Now with Js99'er, we have yet another choice, one that can be used within a web browser, much like I've seen with the Apple ][. Those multi-carts are really cool! Thanks RasmusM for giving us yet another option to enjoy what to many of us is more than just another classic computer platform. I know it's more a novelty than a necessity for most of us, but any chance of more support for the speech synthesizer? I've found that the quality of speech on the different emulators varies, sometimes even from program to program.

 

 

Thanks. :) Unfortunately I don't know the first thing about how to the speech synthesis works, so I would have to borrow the code form MESS or somewhere else. It seems to be quite a big job with relatively little reward.

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