Jump to content
IGNORED

DS99/4a - Emulator for the DS/DSi


wavemotion

Recommended Posts

56 minutes ago, llabnip said:

The version 0.2 should be 10-15% faster across the board helping games that were running at ~50 fps be much closer to full-speed.

 

I also bumped up the cart banking memory to to 512K mostly because I wanted to play Flying Shark. I fixed Slymoids and other games using IDLE.  Other minor cleanups as time permitted before I fell asleep last night.

 

Enjoy!

Great, I'll start now testing this update. With the previous one I have these results:

 

Game                                   Working / avg. fps on DS Lite

4A Flyer YES - 54fps
Angler Dangler YES - 58fps
Ant Colony YES - 58fps
Anteater YES - 60fps
Arcturus YES - 53fps
Astro Fighter YES - 53fps
Barrage YES - 53fps
Berlin YES - 45/60fps
Beyond Parsec YES - 56fps
Beyond Space YES - 56fps
Bigfoot YES - 56/60fps
Black Hole YES - 51fps
Car Wars YES - 45fps
Centipede YES - 60fps
Defender YES - 60fps
Demon Attack (Beta) YES - 45fps
Donkey Kong YES - 48fps
Frogger YES - 50fps
Hunt the Wumpus YES - 48fps
Miner 2049er NO
Munchman (gobbles dot) YES - 60fps
Parsec YES - 46fps
Popeye YES - 52fps
Sewermania NO
Super Fly NO
The Attack (Beta) YES - 53/60fps
TI Invaders YES - 50fps

 

 

In particular, in Sewermania the hero sprite is disappering when you start to move. Miner 2049er: you cannot pass the title screen (I've tried now using joystick 2). I remember a similar problem with the MiSTer TI99 core. The available version of Miner is a crack from the disk version and it needs the 32K memory (I think it is copying the code on the 32K memory). Superfly, as indicated in my previous post need speech synth (as in FinalGrom on a real TI). I'll try again Miner and Sewermania with this new update.

 

 

 

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

12 minutes ago, tmop69 said:

In particular, in Sewermania the hero sprite is disappering when you start to move. Miner 2049er: you cannot pass the title screen (I've tried now using joystick 2). I remember a similar problem with the MiSTer TI99 core. The available version of Miner is a crack from the disk version and it needs the 32K memory (I think it is copying the code on the 32K memory). Superfly, as indicated in my previous post need speech synth (as in FinalGrom on a real TI). I'll try again Miner and Sewermania with this new update.

Wow - thanks for the detailed feedback! Most of those frames-per-second should be significantly better on V0.2 on the older DS-Lite handheld.

 

I also saw the Peter Pepper sprite disappear on Burgertime when he climbs to the top level. I think what's happening is that the top of the sprite is just off the top of the display (by like 1 pixel) area and my emulation is thinking the whole sprite is "off screen" and so isn't rendering it. I can look into that and will add it to the short-term fix-list.

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

1 hour ago, llabnip said:

As a DS programmer, I'm well aware of the hardware!

Ooh, but you did call it "the ultimate 8-bit classic gaming machine". I'm just pointing out it not an 8-bit machine, and neither is a PC, yet it blows the DS out of the water when it comes to "8-bit classic gaming". Even going back through the years one-on-one until 2004.

1 hour ago, llabnip said:

I mean that the DS is the best 8-bit classic system emulator.

In terms of users, machines, emulators and games emulated, it's clearly not. PC wins! 😄
 

  • Like 1
Link to comment
Share on other sites

3 hours ago, llabnip said:

But the DS hardware (screen, button input and form-factor) is really nice... The touch-screen is particularly nice for overlays and such... here is a snap of my Nintellivision emulator with a custom overlay for AD&D Treasure of Tarmin:

I quite liked the DS hardware! I still have three DS dev systems here from the attempted run at Cool Herders DS. ;) Despite the limitations, it's a pretty beefy little machine.

 

 

  • Like 2
Link to comment
Share on other sites

2 hours ago, llabnip said:

Wow - thanks for the detailed feedback! Most of those frames-per-second should be significantly better on V0.2 on the older DS-Lite handheld.

 

I also saw the Peter Pepper sprite disappear on Burgertime when he climbs to the top level. I think what's happening is that the top of the sprite is just off the top of the display (by like 1 pixel) area and my emulation is thinking the whole sprite is "off screen" and so isn't rendering it. I can look into that and will add it to the short-term fix-list.

Remember that the Y axis of sprites are off-by-one. That is, line 255 is the first visible line of the display as far as sprites go! :) Sprites should then fade off the top as it continues to count negative.

 

I remember issues in Classic99 with Miner 2049er too, but my notes don't say anything about the title page. The issue was a lack of collision detection. The reason is Miner is checking the wrong VDP status bit - it checks >02 (part of the sprite counter) instead of >20 (collision bit), and only checks what is colliding when it's set. Classic99 used to work around this by just returning a random sprite index if the sprite value wasn't latched by 5-on-a-line or end of frame.

 

  • Like 3
Link to comment
Share on other sites

1 hour ago, Tursi said:

Remember that the Y axis of sprites are off-by-one. That is, line 255 is the first visible line of the display as far as sprites go! :) Sprites should then fade off the top as it continues to count negative.

Yep! Thanks again - squished that bug and sprites are now showing properly on BT and Sewermania.

 

I'll work on 2049er soon with your clues it should be fairly easy... it's on the list!

 

At lunch I got a couple more frames of performance on the old DS... TI Invaders is now sustaining 60 fps (was at 50 fps on v0.1 and 57 fps on v0.2).

  • Like 4
Link to comment
Share on other sites

On 1/5/2023 at 7:48 PM, llabnip said:

Absolutely - all 7 of my emulators will run fine on the 3DS using Twilight Menu. You will get the full 2x CPU experience and everything will run full-speed.

I now have a 3DS with TWiLight Menu++. How do I run install/run your emulator?

  • Like 2
Link to comment
Share on other sites

18 minutes ago, Asmusr said:

I now have a 3DS with TWiLight Menu++. How do I run install/run your emulator?

You're on easy street. The 3DS running TWL++ will unlock the 2X CPU Speed for homebrews like DS99/4a.  I've yet to find any TI game that will not run full speed when using such hardware. 

 

From the readme on my github page:  https://github.com/wavemotion-dave/DS994a
 

Installation :

  • You will need the two console BIOS files as described below. Place both .bin BIOS files into /roms/bios (you can just make the directory on your SD card).
  • You will also need the emulator itself. You can get this from the GitHub page - the only file you need here is DS994a.nds (the .nds is a Nintendo executable file).
  • You will need games to play... right now the emulator supports C/D/G files and '8' non-inverted files. Basically just try loading a file to see if it works... the ROMs should have a .bin extension.
  • Recommend you put your games into /roms/ti99 as the emulator will default to that directory. That's where the cool kids keep them.

BIOS Files :

Here are the BIOS file CRC32 hashes I'm using with all of my testing - seek these out if you want maximum compatibility:

* db8f33e5	994aROM.bin (8K)
* af5c2449	994aGROM.bin (24K)
Edited by llabnip
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

9 minutes ago, llabnip said:

You will also need the emulator itself. You can get this from the GitHub page - the only file you need here is DS994a.nds (the .nds is a Nintendo executable file).

Where do put the emulator? Sorry, this is all new to me, before today I didn't even know that (my son's) 3DS had an SD card.

  • Like 1
Link to comment
Share on other sites

You can put the DS994a.nds file (the emulator) anywhere you want... though most people throw it in the root directory of the SD card so it's easy to navigate via TWL++.

 

All 7 of my emulators work basically the same in terms of setup... 

 

The DSi was the first to add the SD card (the 2DS and 3DS followed suit) and being able to just put some simple firmware on the card to run TWL++ opens up a world of homebrews and emulation.

 

And no worries on the questions - I'm happy to help!

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

8 minutes ago, llabnip said:

You can put the DS994a.nds file (the emulator) anywhere you want... though most people throw it in the root directory of the SD card so it's easy to navigate via TWL++.

OK, and once I have done that, how do I run the emulator on the 3DS?

Link to comment
Share on other sites

Assuming Twilight Menu++ is installed, you should be able to navigate anywhere on your SD card. Anything that is a .nds file should show up as something you can click on. 

 

In the case of DS99/4a, you just tap the icon (seeing it reminds me that I have to change ColecoDS to DS994a... I work on a lot of emulators):

image.thumb.png.2d05849769fabc14317c58ad806b0451.png

  • Like 2
Link to comment
Share on other sites

It works for me now. Great fun to see my see and play my games on the 3DS. It would be nice if you could get past the TI title screen without having to press keys on the keyboard (e.g. 2, 2). I think the default should be 4 sprites per line.

 

Running the mega demo that we did a few years ago reveals some issues with missing sprites at the top of the screen, which shows in the infinite dots part (I think it's the 5th part). The multicolor roto-zoom part is running at a lower frame than the other parts (45 FPS as opposed to 60 elsewhere). In the part with the twister at the right side of the screen, the sprites should appear to move under to horizontal bar (relies of more than 4 sprites on a line being hidden). And finally it never gets through the 'scanline sine scroller', which relies on the 5th sprite flag to work. It's a great test for an emulator that it can run the entire demo correctly. 

 

megademo8.bin

  • Like 4
Link to comment
Share on other sites

On 1/6/2023 at 8:16 AM, tmop69 said:

Miner 2049er: you cannot pass the title screen (I've tried now using joystick 2). 

The version of Miner 2049 that I got from the Atariage FinalGrom repository thread seems to work fine in 0.1 and 0.2.  I was able to play the first level with just the default settings.

 

I did find a problem with the 5th sprite code... fixed that but Skyway still won't run after 2 hours of debug. I'll keep looking!

  • Like 3
Link to comment
Share on other sites

1 hour ago, llabnip said:

I did find a problem with the 5th sprite code... fixed that but Skyway still won't run after 2 hours of debug. I'll keep looking!

Does your emulation allow the CPU to run while the screen is drawn? Giving it some time between each scanline is enough, but if it draws the whole picture without letting the CPU in, the mega demo and Skyway will never work.

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

4 hours ago, llabnip said:

The version of Miner 2049 that I got from the Atariage FinalGrom repository thread seems to work fine in 0.1 and 0.2.  I was able to play the first level with just the default settings.

 

 

Sorry, my fault. I was pressing fire button(s)/enter and not the space key to start the game. 🙂 

 

Other games with problems:
- Mancala. Hangs when you start to play a game. There was a similar crash on MiSTer core and it should be related to the bank switching used in this game;
- Tutankham. Hangs immediatly after the menu selection;
- Lasso. Hangs after the title, but this is related to missing Speech synth;

 

  • Like 1
Link to comment
Share on other sites

Version 0.3 is ready:  https://github.com/wavemotion-dave/DS994a 
 

V0.3: 7-Jan-2023 by wavemotion-dave

  • Improved speed 8% across the board
  • Fixed spirte cut-off at top of screen
  • Fixed X in control mapping so that it toggles P1 vs P2
  • Added 50Hz PAL (along with default NTSC) support
  • New splash screen and logo
  • Other minor cleanups as time permitted
  • Configuration and Save States will be wiped clean with this upgrade - I had to clean up both and future-proof them (I added about 20 spare config bytes for each game so I can have more options down the road).

 

A bit of a frustrating last 12 hours - I'm clearly in over my head on some areas that I just don't have a good grip on. The VDP "5th Sprite" and/or problems with the megademo and Skyway is eluding me.  I tried to get in simple tape support - and I can see most of it working but it only fires the timer interrupt (used for cassette) once. I looked at the TI99Sim core and I don't ever see any clearing of any interrupt besides the VDP so I'm not sure how it could possibly work. I tried to manually clear the interrupt (on a joypad button press) and it does trigger the next timer interrupt but I have no idea when/how a real system would clear the interrupt. Maybe TI99Sim doesn't care because they don't support cassette.

 

I gave a 1 hour read of TI99Sim and Classic99's handling of disks and most of it was over my head - I was surprised that the codebase for filesystem support is larger than the actual core CPU chip stuff. That was depressing.

 

So I'm feeling a little down after a good start on this... I feel like I've got a huge learning curve to take this to the next level. Maybe I just need a nap :)

 

 

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

9 minutes ago, llabnip said:

@tmop69 so I can get Lasso and Superfly to play simply by responding to the Speech Synth read addresses and reporting back 'Buffer Empty'.  That doesn't make them talk, mind you... but does make them playable.  Not ideal, I realize but for now....

yes, thanks, that could work, and surely it's better than nothing. 🙂 I remember that there are 2/3 educational cart that have the same problem. For the next tests I'll now use the new version. You are progressing ultra fast with the emulator and hope you are having a lot of fun discovering the TI! ;-) 

 

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