Homebrew [Release] Vice3DS (C64 Emulator)

Badda

me too
OP
Member
Joined
Feb 26, 2016
Messages
318
Trophies
0
Location
under the bridge
XP
2,400
Country
Tokelau
That doesn't surprise me. The two-screen technology is unique. Of course the project is not designed to accommodate this. At least we know what's going on. Thanks for finding out. So interesting. I understand that the best we can achieve without a lengthy effort is to put the settings screen on the bottom screen, while the top screen with the emulation pauses? It's not a real achievement but a "proof of concept" of sorts. Perhaps it will compel somebody to do the work. It will be "in the face" that there should be an emulation flow that doesn't get interrupted by launching the menu or whatever. I find it funny that people are getting into extreme detail about perfecting the emulation, while the actual experience of simulating the uninterrupted reality of a C64 machine with monitor and floppy is still lacking very much. Only the 3DS will be able to deliver the ultimate experience eventually. Other ports will follow by simulating the bottom screen of the 3DS. Wanna bet? :)
The bottom screen we already have with virtual keyboard and soft buttons, plus the 3 hardware joysticks and multiple buttons, makes all other ports pale, especially the mobile ones.

Two questions to your suggestion:
- If the menu is on the bottom screen, how can soft buttons/soft keyboard be used (eg. for definition of mappings or for text/number input) while covered by the menu?
- new settings in the menu are currently applied when the menu is closed. How should this be handled if the menu is on the bottom and the emulation is still running? Should changes be applied immediately (which might be unwanted, e.g. when selecting a new ROM file)?

I'm just thinking about how to make this possible in general ...
 
Last edited by Badda,

Badda

me too
OP
Member
Joined
Feb 26, 2016
Messages
318
Trophies
0
Location
under the bridge
XP
2,400
Country
Tokelau
By the way - ReSID implementation, is it possible or not? Some demos (mainly these working with adsr sample method, like Vicious SID and others) do not sound exact. If not, never mind. There are still tons of games and these works great!

Indeed. Resid would be nice. It will use more resources but should be usable. (Even my rs-97 with a 600mhz mips single core can run a lot of games well with resid active). Digitized audio on the c64 these days mainly uses the testbit/oscillator seek method as well as the single write d418 (6bit+ volume/filter switch) method which requires resid

Forget it ... I tested ReSID on N3DS and I'm getting 5 fps and chopped sound :-(
The 3DS is way too underpowered for ReSID.

I don't really know what is eating up all the resources but emulating a C64 should be a piece of cake for the 3DS (especially the N3DS). My suspicion is that the SDL implementation is to blame: there is a lot of screen buffer copying and unnecessary rendering going on in the background. I would love to analyze that by profiling the code but alas, devkitARM does not support compiling for profiling (gcc -pg). It gives me a linkage error "undefined reference to `__gnu_mcount_nc'" (meaning the profiling libraries are not available).
I adressed this to @realWinterMute already but have not yet gotten an answer...
 
Last edited by Badda,

thealgorithm

Well-Known Member
Member
Joined
Oct 27, 2015
Messages
393
Trophies
0
Age
48
XP
786
Country
Forget it ... I tested ReSID on N3DS and I'm getting 5 fps and chopped sound :-(
The 3DS is way too underpowered for ReSID.

I don't really know what is eating up all the resources but emulating a C64 should be a piece of cake for the 3DS (especially the N3DS). My suspicion is that the SDL implementation is to blame: there is a lot of screen buffer copying and unnecessary rendering going on in the background. I would love to analyze that by profiling the code but alas, devkitARM does not support compiling for profiling (gcc -pg). It gives me a linkage error "undefined reference to `__gnu_mcount_nc'" (meaning the profiling libraries are not available).
I adressed this to @realWinterMute already but have not yet gotten an answer...

There are a lot of quirks on the c64 that rely on cycle exact timing to achieve certain effects/video modes, I would guess this is why emulation can be more demanding if it needs to take into account cycle exact emulation of cpu and other components Resid works fine for the low spec rs-97 (which is based on a 600mhz mips jz4760b) I would guess the 800mhz arm11 or so on the new3ds should run it better, although that is a port of vice 2.4 I think (for the jz4760 port).
 

PetePetePetePete

Member
Newcomer
Joined
Jun 29, 2019
Messages
12
Trophies
0
Age
124
XP
110
Country
Czech Republic
I remember my old Nokia N900 with viceC64 emulator a resid option. N900 was single-core device with ARM A8 600mhz, DSP, PowerVR 530 GPU and 256mb of ram. It could be overclocked to 950mhz and slight more yet, but with higher speed was system unstable. If i did overclock to 900mhz, Vice64 with resid enabled ran nicely, only with some framedrops. What I remember, it depended on type of SID (old 6581 was slower). I know, Vice for Nokia is old release and maybe no so exact like todays releases, same with resid. But it sounded really cool and nearly the same like original C64. With so obsolete device :)
 

Elwyndas

Well-Known Member
Member
Joined
Dec 19, 2018
Messages
197
Trophies
0
XP
680
Country
United States
How do you determine the quality of the sound? I connect the audio out to a powerful system, and the default oomph of Vice 3DS is definitely satisfying. Better than the junk sound I remember from squeaky TV's in the 80's!
 

ChicagoMel

Well-Known Member
Member
Joined
Sep 1, 2015
Messages
521
Trophies
0
Age
42
XP
852
Country
United States
How do I play games? Why does it say it can’t attach the cartridge image??

Edit: got it working. It lags slightly though the game isn’t a very graphics intense one but it’s playable. I’m sure I’d get more out of it on new 3ds but I’m happy with what I can get. I see it varies by game though. Terminator 2 won’t play after I load it...Star Wars played though. I’ll keep Breadbox 3dsx as a backup.
 
Last edited by ChicagoMel,

Badda

me too
OP
Member
Joined
Feb 26, 2016
Messages
318
Trophies
0
Location
under the bridge
XP
2,400
Country
Tokelau
How do I play games? Why does it say it can’t attach the cartridge image??

Edit: got it working. It lags slightly though the game isn’t a very graphics intense one but it’s playable. I’m sure I’d get more out of it on new 3ds but I’m happy with what I can get. I see it varies by game though. Terminator 2 won’t play after I load it...Star Wars played though. I’ll keep Breadbox 3dsx as a backup.

Next version will have a significant performance increase - this should make most games playable even on O3DS. I'm just giving it the last finishing touches :-D
 

Vague Rant

Deceptively cute
Member
Joined
Aug 7, 2008
Messages
2,463
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,302
Country
uh? work in o3ds? or is a imposible dream?
I did some digging and found this post by Vice3DS's author, Badda. It took a while to find, I had to scroll up by like, one post. :P
Next version will have a significant performance increase - this should make most games playable even on O3DS. I'm just giving it the last finishing touches :-D
 
  • Like
Reactions: lone_wolf323

thealgorithm

Well-Known Member
Member
Joined
Oct 27, 2015
Messages
393
Trophies
0
Age
48
XP
786
Country
Forget it ... I tested ReSID on N3DS and I'm getting 5 fps and chopped sound :-(
The 3DS is way too underpowered for ReSID.

I don't really know what is eating up all the resources but emulating a C64 should be a piece of cake for the 3DS (especially the N3DS). My suspicion is that the SDL implementation is to blame: there is a lot of screen buffer copying and unnecessary rendering going on in the background. I would love to analyze that by profiling the code but alas, devkitARM does not support compiling for profiling (gcc -pg). It gives me a linkage error "undefined reference to `__gnu_mcount_nc'" (meaning the profiling libraries are not available).
I adressed this to @realWinterMute already but have not yet gotten an answer...

I enabled resid on my gpi case (pi zero) device and the thing was slow severely (as in 3fps or so). however turning interpolation to none or fast brought it back up to a very decent speed, could it be that? I believe the pi zero has similar architecture cpu to the new3ds (arm11) alas single core and 1ghz
 
  • Like
Reactions: Vague Rant

Badda

me too
OP
Member
Joined
Feb 26, 2016
Messages
318
Trophies
0
Location
under the bridge
XP
2,400
Country
Tokelau
I enabled resid on my gpi case (pi zero) device and the thing was slow severely (as in 3fps or so). however turning interpolation to none or fast brought it back up to a very decent speed, could it be that? I believe the pi zero has similar architecture cpu to the new3ds (arm11) alas single core and 1ghz
What interpolation? And where do you turn it on and off?
 

thealgorithm

Well-Known Member
Member
Joined
Oct 27, 2015
Messages
393
Trophies
0
Age
48
XP
786
Country
What interpolation? And where do you turn it on and off?

In Vice SDL, its in Machine settings->Model Settings->Sid Settings->Resid Sampling method->

In that section there is fast, Interpolating, Resampling and Fast resampling

Using anything other than fast grinds the emulator to a crawl (3-5fps max) but leaving it at fast, keeps resid emulation and no noticeable slowdowns either.

And resid is not fallen back to fastsid either as running demo's that only have audio working correctly on resid work just fine and with framerate just as good. I have tried this using very low power mips and arm devices and everything runs just fine so the main slowdown is in the resampling method used in resid (apart from the fast setting)
 
  • Like
Reactions: Badda

Badda

me too
OP
Member
Joined
Feb 26, 2016
Messages
318
Trophies
0
Location
under the bridge
XP
2,400
Country
Tokelau
In Vice SDL, its in Machine settings->Model Settings->Sid Settings->Resid Sampling method->

In that section there is fast, Interpolating, Resampling and Fast resampling

Using anything other than fast grinds the emulator to a crawl (3-5fps max) but leaving it at fast, keeps resid emulation and no noticeable slowdowns either.

And resid is not fallen back to fastsid either as running demo's that only have audio working correctly on resid work just fine and with framerate just as good. I have tried this using very low power mips and arm devices and everything runs just fine so the main slowdown is in the resampling method used in resid (apart from the fast setting)

You're right :-) turning off interpolation makes reSID performance acceptable - and the sound is by FAR better than fastSID. Next version will have reSID support. I'm actually already getting a bit excited about v1.6 :-)
 

thealgorithm

Well-Known Member
Member
Joined
Oct 27, 2015
Messages
393
Trophies
0
Age
48
XP
786
Country
You're right :-) turning off interpolation makes reSID performance acceptable - and the sound is by FAR better than fastSID. Next version will have reSID support. I'm actually already getting a bit excited about v1.6 :-)

Excellent news. Your port to the 3ds is easily by far the best port I have seen (and the second screen helps a lot - e.g keyboard options etc). Adding resid to this will not only make the audio more accurate in standard sid tunes, but will also allow all those demo's which use various sample replay techniques to sound as they should. (e.g adsr, oscillator and filter+d418 based methods)
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    AncientBoi @ AncientBoi: Cool. I got Prime