Homebrew SNES9x for Old 3DS

  • Thread starter Thread starter bubble2k16
  • Start date Start date
  • Views Views 883,684
  • Replies Replies 2,507
  • Likes Likes 147
Thanks for bringing this to my attention. I've heard on the translucency problems, but never saw it for myself until you made those screens, that is. Thank you for that.

Technically we'll have to generate 2 screens, one with the odd pixels, the other with the even pixels and blend them together to achieve the same TV effect (and this time without the flickering). But I'll have to think of how to handle this efficiently.

Here is my thought on it. You have a main screen and sub screen targets, yes? And you render to those as decided by active layers and such? Wouldn't you just normally render the screens, then do a full-blown average blend of the two for the final result? The way "pseudo hi-res" works from my perspective, it alternates between main and sub screen pixels as half-pixels. If both had only layer 0 active, then you'd see layer 0 with nothing to make it look special, but if layer 1 was also active on just one screen, layer 0 would look no different, but layer 1 would appear translucent because only one screen is actually shown as visible for it. If the other screen also had layer 1 active, then it would look normal. Basically, if you just do a full-blown average as "(main + sub) / 2", it should do the trick.
 
Here is my thought on it. You have a main screen and sub screen targets, yes? And you render to those as decided by active layers and such? Wouldn't you just normally render the screens, then do a full-blown average blend of the two for the final result? The way "pseudo hi-res" works from my perspective, it alternates between main and sub screen pixels as half-pixels. If both had only layer 0 active, then you'd see layer 0 with nothing to make it look special, but if layer 1 was also active on just one screen, layer 0 would look no different, but layer 1 would appear translucent because only one screen is actually shown as visible for it. If the other screen also had layer 1 active, then it would look normal. Basically, if you just do a full-blown average as "(main + sub) / 2", it should do the trick.

Yup that's pretty much what I have in mind. I can already generate the odd/even pixels, except now they alternate between two frames (hence the flicker). I simply have to render both odd/even pixels in a single frame into the main+sub screens and blend them together.

But because I want to avoid generating 2 lists of separate vertex buffers to the 3D hardware, I'm going to have to update my shaders slightly to do the heavy work of 'shifting' between odd/even pixels while using the same vertex buffer twice. Saves tonnes time on the 3DS main ARM CPU.

I'm actually already doing this for the non hi-res screens in v0.80, if a BG or the OBJ layer is rendered to both main/sub screens, I only create 1 vertex list. Just have to tweak it for the hi-res, and hi-res will look so much better!

Yes it does.

Great! I'll have a look. Thanks!
 
Last edited by bubble2k16,
just something i realised
I use Cia version of 0.80 and if i dont touch the screen to enter the emulator menu and then i press the home button when i get back to the the game(resume from the OS) i get a white screen only but the game keep playing with sounds. to revert this i have to press the screen to get the emulator menu and then press B to get back in game. is it normal?
 
just something i realised
I use Cia version of 0.80 and if i dont touch the screen to enter the emulator menu and then i press the home button when i get back to the the game(resume from the OS) i get a white screen only but the game keep playing with sounds. to revert this i have to press the screen to get the emulator menu and then press B to get back in game. is it normal?

Yea, the CIA doesn't really play well with the Home / Sleep functions. Yet. :rofl2:

I'll see if something can be done about it.
 
  • Like
Reactions: Michierusama
Hey @bubble2k16, are you the guy who coded SNEmulDS? it's compatibility list is better than the Snes0x? you have a fix for running it in TWLoader?
twlloader would have to be fixed to run it right.

just use this, its compability list is almost perfect and its -probably- running all games better than snemulds could
 
^The problem is that games like TopGear3000, Star Fox may run on SNEmulDS better than on my O3DS, since i can force the homebrew to use 133mhz :/, and i really want to play Kirby Super Star on my 3DS, it will be a race, Who is gonna be faster, Snes9xO3DS gonna run Kirby SuperStar at 60Fps or Nds-Bootstrap/TWLoader gonna run Kirby Super Star Ultra? :D lol
But yeah, i really wanna play TopGear and KirbySuperStar :(
 
^The problem is that games like TopGear3000, Star Fox may run on SNEmulDS better than on my O3DS, since i can force the homebrew to use 133mhz :/, and i really want to play Kirby Super Star on my 3DS, it will be a race, Who is gonna be faster, Snes9xO3DS gonna run Kirby SuperStar at 60Fps or Nds-Bootstrap/TWLoader gonna run Kirby Super Star Ultra? :D lol
But yeah, i really wanna play TopGear and KirbySuperStar :(

I did only the CPU core for SnemulDS, and that CPU core has very very poor compatibility overall, it has bugs everywhere. And many games do not run or run properly. In addition to that, there are layering problems brought about by the limitation in the DS's graphics hardware.

Ironically, it *may* run the Top Gear games better because of 8-bit colors for sprites and backgrounds, allowing better emulation of the in-frame palette changes (required for the lane markers on the road). That's because a DS/GBA's graphics hardware is much closer to an SNES than a 3DS hardware is, despite the difference in layering support. I don't know how Nintendo manages to "emulate" this in-frame palette change part on the 3DS with its TWL firmware, but given that the DS CPU doesn't really have to be emulated, they can probably devote a lot of CPU power to emulate the graphics in software.

But SnemulDS will never play Star Fox or Kirby Super Star because it doesn't emulate the Super FX and the SA-1 chip. You will just get a black screen for both these games. :) Even if we program SnemulDS to emulate these chips, my gut feel is that 133MHz is still too slow to emulate these games at full speed.
 
^Wow thanks for answering man :D, you think that someday Snes9xO3ds may run Kirby Super Star at full speed? i would love to see that, but i think that i'm gonna wait for the nds-bootstrap be more complete to run Kirby Super Star Ultra actually, and man, the DS has GOOD emulators, i got emulating Neogeo on NeoDS and PCE-CD games on NitroGrafx at full speed, on a O3DS,i would never get that on emulators on RetroArch, and i think that the TWL_FIRM and AGB_FIRM function like WII U, WII and NGC retro-compatibility, maybe there's a part of the CPU of 3DS that is actually a DS CPU, that also has a GBA part on it, because definitly 3DS would be capable of emulating a DS in any way.
 
doesn't run full speed on my N3DS. Do i also have to turn on N3DS clock?
Luma last update fix a issue similar to yours:
  • Fixed the New 3DS CPU patch affecting titles which already make use of the higher CPU clock and L2 cache (New 3DS exclusive titles and others like Smash Bros and Pokemon S/M). If "Clock" or "L2" are selected, these titles will now retain their normal (Clock + L2) setting.
Maybe that was the problem or maybe is an issue still unresolved. BTW are you using the last version of Luma?
 
Last edited by Burrumon,
^Wow thanks for answering man :D, you think that someday Snes9xO3ds may run Kirby Super Star at full speed? i would love to see that, but i think that i'm gonna wait for the nds-bootstrap be more complete to run Kirby Super Star Ultra actually, and man, the DS has GOOD emulators, i got emulating Neogeo on NeoDS and PCE-CD games on NitroGrafx at full speed, on a O3DS,i would never get that on emulators on RetroArch, and i think that the TWL_FIRM and AGB_FIRM function like WII U, WII and NGC retro-compatibility, maybe there's a part of the CPU of 3DS that is actually a DS CPU, that also has a GBA part on it, because definitly 3DS would be capable of emulating a DS in any way.

Kirby Super Star uses SA-1 so it's not likely to run full speed unfortunately.

As for the other emus, it's a matter of whether any dev wants to devote time to porting these emus to take advantage of the aging Old 3DS hardware. To shed some light, it took me almost 9 months to get to here. In those DS days, high-powered smartphones were practically non-existent. Now with fast mobile phones and a New 3DS... Getting new hardware is probably the easier way. :)
 
^Yeah, your emulator is the best out there for the 3DS, i would tell that 9 months is little for a emulator of this level, it's a shame that the O3DS hardware cannot run Kirby Super Star, the only thing that i can hope on is TWLoader development now, and TopGear3000 we will ever see it fullspeed on O3DS?
 
^Yeah, your emulator is the best out there for the 3DS, i would tell that 9 months is little for a emulator of this level, it's a shame that the O3DS hardware cannot run Kirby Super Star, the only thing that i can hope on is TWLoader development now, and TopGear3000 we will ever see it fullspeed on O3DS?

Oh I realized Top Gear 3000 is also an SA-1 game. So yea... it's likely going to stay at this current speed.
 
Luma last update fix a issue similar to yours:
  • Fixed the New 3DS CPU patch affecting titles which already make use of the higher CPU clock and L2 cache (New 3DS exclusive titles and others like Smash Bros and Pokemon S/M). If "Clock" or "L2" are selected, these titles will now retain their normal (Clock + L2) setting.
Maybe that was the problem or maybe is an issue still unresolved. BTW are you using the last version of Luma?
i thought there was a new update, but it's still 6.6.
And yes, i'm on the last stable release.
 
Can you configure your controls through the emulator settings? I can't seem to find any option that lets you change your button assignments.
 
If the frameskip could be increased to 5 or 6 I could absolutely tolerate the horrible colors Kirby Superstar displays on this emulator. It's quite a show.
 
If the frameskip could be increased to 5 or 6 I could absolutely tolerate the horrible colors Kirby Superstar displays on this emulator. It's quite a show.

You can try to go to settings to enable inframe palette changes. It should fix the colors problem.

Frame skipping wouldn't help much in SA1 games. The bulk of the time is used to emulate the SA1 processor and this cannot be skipped. So frame skips, which skips drawing the screen, won't help much.

--------------------- MERGED ---------------------------

Can you configure your controls through the emulator settings? I can't seem to find any option that lets you change your button assignments.

No plans for now.
 
Last edited by bubble2k16,

Site & Scene News

Popular threads in this forum