Homebrew Emulation Introducing Nintellivision - an Emulator for the DS/DSi

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
508
Trophies
1
XP
3,453
Country
United States
Not ready for a new build yet... but 2.5b is checked in. This cleans up the save state so that we can now save state of games with extra RAM (Chess, Land Battle and a few others). Unfortunately this breaks compatibility with old save states - so your old save state files will not load (the emulator will prevent them from loading - wiping them clean if you try). Sorry about that - the new save state handling should be cleaner and with better future-proofing for games that utilize extra RAM.

Next up (tomorrow most likely) will be Disc Controller support on custom overlays.
 

Tomtani1

Well-Known Member
Newcomer
Joined
Dec 26, 2018
Messages
75
Trophies
0
Age
51
XP
594
Country
United States
Hi Dave and Ariela. I posted the problem of (Nintellivision not working on melonDS for the Switch) on the melonDS gbatemp forum page and got the following response from the melonDS developer catlover007.

"romlist.bin is integrated into melonds.nro since a few versions ago. For homebrew it shouldn't matter at any time (it's only rom hacks where the romlist can be problematic).

The issue you have might be that the homebrew requires some sd card setup. melonDS does support emulating that, but I haven't added support for that in the Switch frontend."

Thank you for everyone's help. For now I can still use the wonderful Nintellivision emulator on my New 3DS XL using Twightlight Menu++ (which also is a great software).
 

Tomtani1

Well-Known Member
Newcomer
Joined
Dec 26, 2018
Messages
75
Trophies
0
Age
51
XP
594
Country
United States
Hi Dave. My favorite Intellivision game is Space Armada. I played it on the real Intellivision hardware back in the early 1980s. Recently I have been playing Space Armada using the NDS Intellivision Lives in TwightlightMenu++ on my New 3DS XL. I thought it was a good way of playing Space Armada again. It was until I a week ago when by chance I discovered your Nintellivision DS emulator.

I now have both the NDS Intellivision Lives and your Nintellivision DS emulator running in TwightlightMenu++ on my New 3DS XL. Space Armada using your Nintellivision DS emulator runs fast and smooth and the control is so responsive, just like I remembered from playing on the real hardware 40 years ago. Whereas, the Space Armada in Intellivision Lives is slow, clunky and not as responsive. It is quite a joy to play Space Armada using your Nintellivision DS emulator.

Space Armada is a great game to play even in 2021. The later stages is where the excitement begins with the green thingy zapping down quickly from above while the pink homing missile is chasing after you. All the while the red space ship is flying all over the screen, sometimes hiding and coming out to suck away your defense shields. All of this is going on and your main task is to shoot all of the invading aliens that are marching down. Your Nintellivision DS emulator runs Space Armada smooth and perfect, so much better than the commercial version.
 
Last edited by Tomtani1,

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
508
Trophies
1
XP
3,453
Country
United States
Thanks for the kind words, @Tomtani1 - it's much appreciated! Like you, I was a disappointed in the commercial Intellivision Lives DS - the number of obvious bugs made me wonder how anyone at Intellivision Productions could have OK-ed that release. As you mention, it's got framerate issues (which is forgivable - it's not been easy getting it to run full speed on the older DS hardware) but the most glaring things are the collision detection issues (play the Lives-DS version Buzz Bomber and move your firing spray can over to a honeycomb that has hit the ground... you will "stick" to it and never move again!).

It's also gratifying to see so many different "faces" here enjoying Nintellivision. I think a few came over from Atariage to follow the progress. Having been involved in the Atari and Intellivision scene for a long time, one thing I can say is that the Intellivision fans tend to be all-in on their console of choice ... to the point where some people seem to have gone out and bought a DS-XL or 2/3DS just to play this new emulator :)
 

CrashMidnick

Well-Known Member
Member
Joined
Jul 22, 2015
Messages
322
Trophies
0
Age
39
XP
1,337
Country
France
Thanks for the kind words, @Tomtani1 - it's much appreciated! Like you, I was a disappointed in the commercial Intellivision Lives DS - the number of obvious bugs made me wonder how anyone at Intellivision Productions could have OK-ed that release. As you mention, it's got framerate issues (which is forgivable - it's not been easy getting it to run full speed on the older DS hardware) but the most glaring things are the collision detection issues (play the Lives-DS version Buzz Bomber and move your firing spray can over to a honeycomb that has hit the ground... you will "stick" to it and never move again!).

It's also gratifying to see so many different "faces" here enjoying Nintellivision. I think a few came over from Atariage to follow the progress. Having been involved in the Atari and Intellivision scene for a long time, one thing I can say is that the Intellivision fans tend to be all-in on their console of choice ... to the point where some people seem to have gone out and bought a DS-XL or 2/3DS just to play this new emulator :)
Live DS team should have hired you :)

Same on the Dreamcast scene, we just got a full speed and sound Megadrive/Genesis emulator (gens4good). Sega never was able to provide such a thing. What a year for our old ladies ;)
 
  • Like
Reactions: wavemotion

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
508
Trophies
1
XP
3,453
Country
United States
Version 2.6 is released: https://github.com/wavemotion-dave/NINTV-DS

V2.6 : 18-Oct-2021 by wavemotion-dave
  • Added disc controller direction support to custom overlays. See Vectron.ovl in extras.
  • Patched Q-Bert so it doesn't lose a life after each board.
  • 15 new Manuals added (mainly thanks to @ts-x) - see extras folder.
  • Fixed save states so we can save games with extra RAM (old save states will not work - sorry)
The big change here is the new .disc line supported in Custom Overlay (.ovl) files. This allows you to map any of the 16 disc directions from the Intellivision controller onto touch screen areas. I've included a custom overlay for Vectron in the extras folder to show you how it's done. Vectron is a good example because it requires the lower 7 disc presses to fire in those directions. I realize my overlay won't win any style awards - but the main goal is to show others how to do it and hopefully some good graphic folks will make some awesome overlays with the new features!

1634474666790.png
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
508
Trophies
1
XP
3,453
Country
United States
Yesterday I wrote myself a mini-debugger for the emulator so I could peek at what the emulated CP1610 CPU is doing along with relevant graphics operations, sound generation, Intellivision RAM access, etc. I'm hoping to use this to help debug the graphical glitch remaining in D1K and D2K when the ape climbs the ladders. Apparently this bug also shows itself in some FPGA hardware emulation of the Intellivision so it's definitely something tricky that the original code is doing that works on real hardware (and jzintv emulator) but not the BLISS core I use (nor some other emulations).

I don't know CP1610 assembly as well as game programmers - and it's a little daunting looking under the hood... but hopefully something here will allow me to figure it out!

1634556633558.png
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
508
Trophies
1
XP
3,453
Country
United States
No worries spacehunter - games matter more :) Keep working on those!

Not ready for a new release but 2.6c is checked in. I screwed up the sound for the older DS-LITE/PHAT hardware with the 2.5 release and this fixes that... but it comes with a bonus: more speed! I found another 2-3% across the board and for games which utilize lots of the same color background the speed increase is almost 10%.

I've also got a real fix for the Q-Bert lost-lives bug. So the old patch is gone and the correct fix is in place ... Q-Bert should now play perfectly.

But here's the best news!! The D1K and D2K glitch is fixed. nanochess over on Atariage found the problem (or at least guessed close enough that I could find/fix it). Amazing - that's the last of the glitches!!!

Version 2.7 likely tomorrow - need to run through and test 2.6c a bunch tonight. I might just watch the ape climb the ladders in DK for a few hours 🤪😁🤓
 
Last edited by wavemotion,

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
508
Trophies
1
XP
3,453
Country
United States
Version 2.7 is released: https://github.com/wavemotion-dave/NINTV-DS

V2.7 : 19-Oct-2021 by wavemotion-dave
  • Fixed graphical glitches on D1K and D2K!
  • Proper fix for Q-Bert so it plays perfectly (no patch needed).
  • Fix for .man manuals sometimes missing last line.
  • Minor sound cleanup and other under-the-hood improvements for speed.
What a day: proper fix for Q-Bert (no patch needed) and D1K and D2K glitches fixed. That's the last of the graphical/play issues that prevented near-perfect emulation.

Next I'm turning my attention to sound. It's come a long way - and it's miles better than the 1.0 release which was scratchy and hard to listen to. But if you've played Nintellivision for any length of time, you've heard the 'Zingers'. That's what I call them anyway... these little sound glitches that kind of 'ZING' by every so often. I'm not a sound engineer - and the DS makes sound both easy (in that you just set it up once) and hard (in that it has to coordinate a FIFO buffer between the 2 ARM processors plus the emulated sound chip of the Intellivision). I'm trying to remember my ancient Physics classes and Nyquist frequencies and sample rates... and it's daunting :) But with the other issues well under wraps - the sound will now get worked on to improve it as much as human determination will allow.

Enjoy!
 
Last edited by wavemotion,

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
508
Trophies
1
XP
3,453
Country
United States
Just for my knowledge, how did you fix DK1 and 2 glitch ?
It came down to this debug... MOB 4 (a MOB is just a sprite... known as a 'Movable "Object') was the glitch.

1634644192572.png


It is marked as "Double Y" which means it uses 2 graphical tiles to represent the object. That's fine... and Nintellivision supports that (otherwise we would have glitches everywhere). What I didn't know is that the STIC (the graphics processor for the Intellivision) requires that Double Y (2 graphical tiles/cards) must point to an even card number. In this case, the programmer of D1K and D2K used an odd card (0x2B hex which is card #43). A real intellivision will just ignore the lower bit and call that Card #42... and use Card #42 and #43 for the MOB (sprite). But Nintellivision (and, apparently many other emulators) take it as #43 and #44 ... so it's using the wrong cards/tiles to draw the sprite. One of the really smart programmers over on AtariAge saw it and had the solution I needed!

As an aside, the Q-Bert bug fix came from the same screenshot. Look at Mob 7 (the last column)... it's got an XLOC of 0xFD which is 253 and way off the screen (Intellivision is 160 pixels wide). Some programmers will 'hide' MOBs (sprites) by moving them off screen. In Q-Bert they moved Q-Bert plus all the baddies off the screen to the same location when you clear a level. The buggy BLISS core (and MAME core) will "see" all those objects grouped together and produce a 'collision' off-screen... essentially the off-screen Q-Bert is colliding with all the hidden baddies... and that loses a life. Real hardware will not produce any collisions for off-screen objects and now Nintellivision matches that behavior. Whew!
 

MarioKartFan

Well-Known Member
Member
Joined
Aug 27, 2019
Messages
536
Trophies
0
XP
1,818
Country
Algeria
Version 2.7 is released: https://github.com/wavemotion-dave/NINTV-DS

V2.7 : 19-Oct-2021 by wavemotion-dave
  • Fixed graphical glitches on D1K and D2K!
  • Proper fix for Q-Bert so it plays perfectly (no patch needed).
  • Fix for .man manuals sometimes missing last line.
  • Minor sound cleanup and other under-the-hood improvements for speed.
What a day: proper fix for Q-Bert (no patch needed) and D1K and D2K glitches fixed. That's the last of the graphical/play issues that prevented near-perfect emulation.

Next I'm turning my attention to sound. It's come a long way - and it's miles better than the 1.0 release which was scratchy and hard to listen to. But if you've played Nintellivision for any length of time, you've heard the 'Zingers'. That's what I call them anyway... these little sound glitches that kind of 'ZING' by every so often. I'm not a sound engineer - and the DS makes sound both easy (in that you just set it up once) and hard (in that it has to coordinate a FIFO buffer between the 2 ARM processors plus the emulated sound chip of the Intellivision). I'm trying to remember my ancient Physics classes and Nyquist frequencies and sample rates... and it's daunting :) But with the other issues well under wraps - the sound will now get worked on to improve it as much as human determination will allow.

Enjoy!
Dave,

Congratulations and thanks for the continued, amazing work. With the fixes to Q-Bert, D1K and D2K, I think it's fair to describe this entire emulator as a complete success. The ability to use the dual screens of the DS/DSi/3DS to simulate the unique Intellivision controller sets this emulator apart from all others. I dare say it is the absolute best way to play those gems of the past, save the original system itself.
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
508
Trophies
1
XP
3,453
Country
United States
Thanks MKF - always appreciative of the feedback! Since there are no emulation groupies or massive amounts of money rolling in from this effort, the kind words are all that sustain me :D

Not ready for a new build, but 2.7a is checked in with the first of the improvements for sound. The improvement here is on the Intellivision side (not the sound rendering side... which is the side that produces the "zingers"). I've increased the sound quality 2 levels - so we now have:

BEST (12)
EXCELLENT (14) - this is the new default for DSi
GOOD (16) - this was the OLD "best"
AVERAGE (20) - this is the new default for the DS-LITE/PHAT
FAIR (24) - this was the OLD default for the DS-LITE/PHAT
DISABLED (this probably isn't useful anymore... Intellivision without sound is like crackers without cheese. Why bother?)

I did not change the config version so if you previously had "BEST" selected, you'll have the NEW "BEST" selected automatically. Be aware, the new BEST is a bit CPU consuming and although everything on the DSi runs with it... games like Space Spartans get very frantic with multiple channels of sound, voice and action on screen and it's possible your frame rate will dip below 60FPS if you set it to BEST. That's why I've gone conservative and defaulted the DSi to "EXCELLENT".

This really makes the audio sound great EXCEPT when we get those occasional 'zingers' which is the next thing I'm working on. If you play Beauty and the Beast or Masters of the Universe on EXCELLENT you will hear all the glory that is the Intellivision. To be honest, I had a hard time even with headphones telling the difference between BEST and EXCELLENT and when I went even more aggressive than BEST (say, a sound divisor of 10 or 8), I couldn't tell any difference (but the CPU utilization goes way up). So from the emulation side - this is as good as the sound gets.

Now my attention goes to the output side on the DS. I did a lot of research last night and put out some forum messages hoping for a bit of direction on how to solve the output side.
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
508
Trophies
1
XP
3,453
Country
United States
Version 2.8 is released: https://github.com/wavemotion-dave/NINTV-DS

V2.8 : 20-Oct-2021 by wavemotion-dave
  • First round of sound cleanup - two new improved settings in configuration.
  • Fixed crash with 'complex' custom overlay (out of memory) coming out of menu/config.
Sorry guys... while working on the sound at lunch I discovered that sometimes when you come out of the main menu (or config) with a custom overlay, the game would crash. With 2.7 I tried to get very aggressive in re-using memory buffers that were not used simultaneously to keep the emulator running on the older DS hardware as long as possible... but I screwed up with the custom overlay rendering. This is fixed now - no more crashes coming out of configuration.
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
508
Trophies
1
XP
3,453
Country
United States
A bit of an update... first full night of sound debug and experimentation.

I've found at least a half-dozen new ways to produce sound that are significantly worse :)

And I found one way that eliminates the zingers! But it comes at too high a cost - the CPU speed drops to the point where Intellivoice games don't run full speed even on the faster DSi. And the overall sound quality is lower (they sound similar without headphones but with headphones you can tell that the zinger-free version is grittier).

So I've abandoned that new method - and will start again today with 2.8 and try some other avenues.

Along the way I did learn a lot about how the ARM9 and ARM7 cooperate inside the DS. To be honest, it's a miracle any of this stuff works at all :)

Edit: I just checked in 2.8a... with some slight sound core optimizations. The main difference here is cleaner handling going in and out of menus. If you noticed on previous builds if you went into a menu and came back out, the sound (and emulation) briefly sped up a bit to try and re-sync... this is now seamless and should not be jarring anymore.

I also discovered that the STIC (the graphics processor for the Intellivision) does not render the 160th column of pixels. Who knew! So I cut that one row of pixels off now... it fixes a single vertical line of wrong-color on D1K and otherwise is hardly noticeable.
 
Last edited by wavemotion,

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
508
Trophies
1
XP
3,453
Country
United States
Not ready for a new build but just checked in 2.8b with some speed improvements. In looking at the sound I found a few spots where they were doing some heavy math and data moving that could be simplified and that gives us a few more frames of speed on the DSi and a solid frame on the older DS-LITE. Having more CPU power at my disposal is never a bad thing :)

D1K on the older DS-LITE is 58 FPS and it's certainly playable though it really just needs a bit more speed to be smooth. MS Pac Man is now steady 59 and occasionally hits 60fps on the older DS hardware!

On the DSi, of course, everything is butter-smooth. Even the Intellivoice games will play full-speed on the highest sound quality settings (though just barely... I'm leaving those on 'Excellent' for now).

On the sound-front battle... I've now found at least 2 dozen ways that won't work! It's only a matter of time before I find the way that does... though after hearing some of the really bad audio attempts, the occasional zinger really isn't too bad :D
 
Last edited by wavemotion,

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
508
Trophies
1
XP
3,453
Country
United States
Still not ready for a new build but 2.8c is checked in with even more optimization. Another few frames of improvement on the DSi and another frame or so of improvement on the older DS-LITE/PHAT. Ms Pac-Man is finally running at a sustained 60FPS and D1K is at a solid 59 on the older hardware. More common games like Astrosmash, Beauty and the Beast, Thunder Castle and Burgertime are all capable of running at least 10% overspeed if unthrottled - that's cushion! Intellivoice games are still too slow on the older hardware - I'll keep chipping away.

Edit: 2.8d checked in. Found another optimization in the memory bus area... got another couple of frames. D1K is now holding a full 60 frames-per-second on the older DS-LITE/PHAT! Going to play this a bit today and if all looks good, there are simply too many speed improvements that it's worth putting out the next full release.
 
Last edited by wavemotion,

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
508
Trophies
1
XP
3,453
Country
United States
Version 2.9 is released: https://github.com/wavemotion-dave/NINTV-DS

V2.9 : 23-Oct-2021 by wavemotion-dave
  • Minor sound improvement across the board.
  • Significant speed improvement - games run 6-12% faster. DS-LITE will run more games.

Well, I wasn't looking for speed, but in my quest to smooth the sound out I found some. And it's significant. Just from the previous version 2.8 to this new 2.9, unthrottled test benchmarks for some key games (each of these games presents a different challenge in terms of emulation):

Code:
GAME             V2.8    V2.9   IMPROVEMENT
=================================================
Astrosmash      94fps   105fps    11.7%
Beauty/Beast    89fps   100fps    12.3%
Stampede        73fps    78fps     6.8%
Venture         84fps    93fps    10.7%
Space Spartans  62fps    68fps     9.6%

This is as fast as the emulator has ever been... compatibility remains the same. Sound is very slightly improved - partially thanks to more CPU power to smooth out frame-to-frame timing but also I figured out that the ARM9 will cache memory that it is sharing with the ARM7 for sound buffers... and so I now use the uncached memory areas so that the ARM7 is always seeing the most current data. The occasional zingers, however, still remain.
 
Last edited by wavemotion,
General chit-chat
Help Users
    K @ kenny25: Please can help me with fairy tail 1.0.6 cheats to Nintendo Switch? Thanks :(