Jump to content
IGNORED

DS99/4a - Emulator for the DS/DSi


wavemotion

Recommended Posts

Okay... yeah, that makes a ton of sense @PeteE.  And I can see exactly the problem @jedimatt42 had with the virtual keyboard.  I just checked in 0.9e with the keys working exactly as you suggested and it's much cleaner. The code change was not all that trivial - considering it ended up only being a few lines of code.  The FCTN/CTRL/SHIFT sticks (with clear indication on screen) until you press and RELEASE a normal key... so if you hold a key down it will keep both the sticky FCTN/CTRL/SHIFT and the key going until you release.  This seems to behave much smoother in actual operation ... and I was able to easily break out of a for loop (I had to make 5 attempts at this and was really getting tired of typing 10 PRINT X 20 GOTO 10 :) )

  • Like 2
  • Thanks 2
Link to comment
Share on other sites

Just waiting for one last Beta tester to report in... then I can finally get a 1.0 release out.  Looks like compatibility is above 98% with more than 200 games and programs tested.  Doing some final graphical tweaks on the new keyboard - you can see the new disk icon in the lower left.

image.png.03c608c138ee63f8d06f06bc959907bc.png

 

I've updated the readme on my github page with better instructions on how to load and run the emulator. 

 

Soon... soon.

  • Like 10
Link to comment
Share on other sites

Version 1.0 is released! https://github.com/wavemotion-dave/DS994a 


V1.0: 11-Feb-2023 by wavemotion-dave

  • Improved TI99 keyboard look-and-feel which is the new default.
  • Improved DSK saves for more robust writes.
  • Screen Snapshot added (press and hold L+R+Y)
  • Ability to swap upper / lower screens (press and hold L+R+X)
  • Cleanup across the board for the official 1.0 release.

Many thanks to everyone that provided feedback. This represents more than 150 hours of development effort on my part - plus countless hours of development by the authors of some of the underlying code. If you're running a pre-1.0 version, I would appreciate you updating as soon as is convenient - at this point I'd like to only take feedback and issues on the officially released version. 

 

I'm pleased at where this got to for a first release... the obvious omission here is the Speech Module emulation which is now slated for a future release. I was also hopeful to get in custom keyboard/graphic overlays... but that, too, is now slated for the future.

 

Finally, I'd like to extend gratitude for the warm welcoming of this project by the 99ers here at AtariAge. As you can imagine, I've got similar threads on other parts of AtariAge for my other emulators - but none have received quite the response and enthusiasm as this one. You guys might be a little smaller in number but no less grand in stature! 

 

 

  • Like 10
  • Thanks 2
Link to comment
Share on other sites

  • 2 weeks later...

Not ready for a new formal release, but I did check in a daily build with the first support for Speech samples.

 

Notice I didn't say Speech emulation... I'm going a different route for the short-haul. I've got about 30 samples included for Parsec, Alpiner and Moonmine built into the main binary in a sort of internal sound-library. When I see the game write the appropriate pattern for speech output, I just trigger playing the right WAV sound clip. The upside of this is that it takes almost no CPU time to output these WAV samples as the DS has 16 independent sound channels largely offloaded from the main ARM9 CPU. So the samples play fine on even the oldest DS hardware... I did compress them down to 8-bit mono to save space but they sound quite fine for the little handheld. 

 

 

  • Like 2
Link to comment
Share on other sites

4 minutes ago, Tursi said:

That will probably cover more than half of people's wants.

For sure!  Honestly, those are the 3 games I remember playing with Speech as a kid. And I have to admit... having the speech does trigger a bit more nostalgia for me - especially the sassy and sarcastic female voice berating me in Alpiner.  It's also not 100% of the samples - I'm running up against some memory limitations for the older DS handhelds and so left out a few of the lesser used or not very exciting phrases (e.g. BONUS POINTS AWARDED in Moonmine or the Game Over Press BACK or REDO on Alpiner). But I've got enough samples that it feels like full-on TI-Speech for those games. 

 

If I want to extend this method further, I'll have to look at probably reading .DSK files on the fly (rather than buffering 360K x 3) - seeking and reading a sector will still be quite fast from the SD card and seeking and writing a sector shouldn't be too shabby either. And that would free up nearly 1MB of RAM.

  • Like 4
Link to comment
Share on other sites

11 minutes ago, llabnip said:

For sure!  Honestly, those are the 3 games I remember playing with Speech as a kid. And I have to admit... having the speech does trigger a bit more nostalgia for me - especially the sassy and sarcastic female voice berating me in Alpiner.  It's also not 100% of the samples - I'm running up against some memory limitations for the older DS handhelds and so left out a few of the lesser used or not very exciting phrases (e.g. BONUS POINTS AWARDED in Moonmine or the Game Over Press BACK or REDO on Alpiner). But I've got enough samples that it feels like full-on TI-Speech for those games. 

 

If I want to extend this method further, I'll have to look at probably reading .DSK files on the fly (rather than buffering 360K x 3) - seeking and reading a sector will still be quite fast from the SD card and seeking and writing a sector shouldn't be too shabby either. And that would free up nearly 1MB of RAM.

You should also play Big Foot from MB and add it to the list... ;-) 

 

  • Like 1
Link to comment
Share on other sites

This is the list of game cart that have speech if you want add more:

 

Alpiner
Berlin
Bigfoot
Buck Rogers Planet of Zoom
Championship Baseball
E.T. the Extra-Terrestrial
Fantasy
Fathom
Fathom
Frog Stickers
Honey Hunt
I'm Hiding
Lasso
Love Tennis
M*A*S*H
Meteor Belt
Microsurgeon
Micro-Tennis
Moon Mine
Nature's Way
Parsec
Princess and Frog
Sewermania
Soundtrack Trolley
Space Bandits
Star Trek
Super Demon Attack (Beta)
Super Fly
Terry Turtle's Adventure
Von Drakes Molecular Mission
Wing War

 

  • Like 2
Link to comment
Share on other sites

1 hour ago, llabnip said:

If I want to extend this method further, I'll have to look at probably reading .DSK files on the fly (rather than buffering 360K x 3) - seeking and reading a sector will still be quite fast from the SD card and seeking and writing a sector shouldn't be too shabby either. And that would free up nearly 1MB of RAM.

Oh, frig, yes. Absolutely. There's nothing about disk access that needs to be fast, and the seek calculation is trivial. ;)

 

  • Like 2
Link to comment
Share on other sites

adding new samples would be easy if I knew the offset data of each phrase. Otherwise I have to sniff the debug when playing. See the alpiner thread where a few games on the TI wiki have the GROM address offsets which makes my life easy. I’m trying to figure out how to get the offsets more easily.  

Link to comment
Share on other sites

Version 1.2 is available:  https://github.com/wavemotion-dave/DS994a 

 

This has speech samples for Parsec, Alpiner and Moonmine (about 80% of the samples are included for each game... a bit more for Alpiner which is a shining example of Speech done right). I'm down to 24K out of 4MB free on the older DS hardware.  

 

This scheme takes about 3 hours per game to add speech samples - it's not an entirely fun process. But at least I can make progress on it and has the benefit of working great even on the ancient DS handhelds.  

 

I have a path forward to free up more memory with a change in the way I buffer the DSK1/2/3 drives ... but I don't know how many more games I'll add samples for.  Bigfoot is an amazing game - but the speech isn't a shining example of what's possible on the system.  Star Trek and Microsurgeon are more likely next targets and possibly MASH... depending on my mood. 

  • Like 5
Link to comment
Share on other sites

At lunch I squeezed back about 400K of memory and added the rest of the samples for Parsec, Alpiner and Moonmine. Those should now have 100% of the speech samples included.  Last night I also re-recorded all of the Parsec samples using MAME so they sound much nicer (I had done that for Alpiner and Moonmine already... but was using the lossy MP3s at whtech for Parsec until now).

 

And for fun (and because three people have asked), I put in some preliminary speech handling for Bigfoot. Had to fool the game - it seems to try and read out the first byte of the Speech ROM and it expects to see 'AA' to determine if it should use the TI Speech Synth... once I handled that (you don't need the Speech ROM... I just look for the command write and read-back and return AA) adding some preliminary speech was pretty easy. 

  • Like 5
Link to comment
Share on other sites

4 minutes ago, ti99iuc said:

maybe I missed some bits and pieces and I apologize if I haven't already read the answer somewhere, just to get a better understanding....
Have you given up the Speech Synthesizer emulation altogether or do you think you will add it sooner or later anyway?

Short-term, I'm going to cheat and add speech samples to specific games rather than full-blown emulation of the TMS5220.  If I do manage to get full speech emulation to work in the future, it's going to sound worse than using samples - and will not be supported on the older DS hardware which simply doesn't have the processing power needed.  This is the way the Blue Sky Rangers did the early Intellivision emulators on limited systems - they simply included the speech phrases as sound files and played them back when the game asked for them.

  • Like 2
Link to comment
Share on other sites

34 minutes ago, ti99iuc said:

I feel a little sorry for this kind of choice, but I can understand the difficulty and problems to fully emulating the speech synthesizer.

I totally understand this response. My 'solution' is far from ideal... but I was really running into a wall on the Speech emulation. Better a partial solution than a full solution. This lets me keep enough passion in my fuel-tank to continue to work on the emulator rather than burn-out.

 

All seven (7) emulators I've worked on are available on GitHub and anyone with a bit of skill and determination can improve them. Having said that, I inherited some of these emulators from Alekmaul and nobody worked on them for 10 years. So the chances of someone swooping in and magically adding full Speech Synth are pretty close to zero. But a man can dream!  

  • Like 3
  • Haha 1
Link to comment
Share on other sites

Oh yes, of course, the TI99 is already a dream for how it works and I agree that this solution is anyway a good compromise; I agree that it is already good to have this kind of speech emulation instead of nothing of course! :)  
I asked to understand better only because this very good emulator presents disk support so I suppose that someone could load a game from extended basic that uses speech for example. 
In that case, it will not work of course but for sure it is not so relevant compared to all the rest.
I wanted just to understand better for myself so to update in the right way the article on ti99iuc site.

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

I know this a ridiculous thing to even be trying, but I don't have a ds (not yet... i'm a PSP owner), and I was interested in checking out this TI emulator on a ds/3ds emulator, like OpenEmu or Citra. I have not had any luck with either one. Has anyone else tried this totally unnecessary task?

  • Like 1
Link to comment
Share on other sites

2 minutes ago, ndp630 said:

I know this a ridiculous thing to even be trying, but I don't have a ds (not yet... i'm a PSP owner), and I was interested in checking out this TI emulator on a ds/3ds emulator, like OpenEmu or Citra. I have not had any luck with either one. Has anyone else tried this totally unnecessary task?

Normally DevKitPro code (which I use) won’t run natively on any DS emulator but there are a few DS developers who figured how to use an emulator (I think MellonDS) and managed to hack it to run something like Twilight Menu and homebrews. But it’s all science fiction to me. I still do it the old fashioned way: code on my Linux PC, compile using DevKitPro and copy to an SD card for my DSi. Lather rinse and repeat 100x a day as I’m debugging 🤓🤪

  • Like 2
Link to comment
Share on other sites

3 minutes ago, llabnip said:

Normally DevKitPro code (which I use) won’t run natively on any DS emulator but there are a few DS developers who figured how to use an emulator (I think MellonDS) and managed to hack it to run something like Twilight Menu and homebrews. But it’s all science fiction to me. I still do it the old fashioned way: code on my Linux PC, compile using DevKitPro and copy to an SD card for my DSi. Lather rinse and repeat 100x a day as I’m debugging 🤓🤪

Thanks for the reply! That is good to know.. I will just keep my eye out for a ds/dsi/3ds to grab up. The PSP is ripe for a good TI emulator as well.

  • Like 1
Link to comment
Share on other sites

3 hours ago, llabnip said:

I totally understand this response. My 'solution' is far from ideal... but I was really running into a wall on the Speech emulation. Better a partial solution than a full solution. This lets me keep enough passion in my fuel-tank to continue to work on the emulator rather than burn-out.

 

All seven (7) emulators I've worked on are available on GitHub and anyone with a bit of skill and determination can improve them. Having said that, I inherited some of these emulators from Alekmaul and nobody worked on them for 10 years. So the chances of someone swooping in and magically adding full Speech Synth are pretty close to zero. But a man can dream!  

One thought that runs through my head at this point: another game that you probably want to use as a test object for speech would be Lasso. The original files from TI hang if they don't detect a speech synthesizer on startup. . .you don't necessarily need to add the speech samples for it, but you definitely have to trick it into believing that a speech synthesizer is present.

  • Like 3
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...