Hacking NDSSFC/CATSFC revival

What sort of additional hotkeys do you want?


  • Total voters
    98
Just tried out this emu, I like cleaned up GUI, But unfortunately Mega Man X2 and X3 are still really laggy. ( I don't expect Miracles) The Rundra translation by AG plays great like it before. This EMu however has made it step closer in it being able to be read on the DS. (1/2 of the letters are cut off down the middle) I thank you for your hard work in this project. Well that is my 2 cents.:yaysp:
 
Like others have said, the reason why Secret of Mana has that problem is because it isn't using the high-resolution mode that the SNES supports, but rather than block it entirely, the emulator interprets the data as if was using the default mode. If you look at the picture mechagouki posted, you'll notice that every other letter in the text is being skipped. Use the picture below as a reference (though this picture is also using 256x224, so this is what it would look like if the emulator handled the mode correctly)

som_00004.png


It isn't just the text, but the entire way it handles background layer tiles (look at the D-Pad display, and compare).

For ferret7463's observance, don't expect games like Megaman X2/X3 to run smoothly, because those games, as well as others, incorporate special chips to handle tasks not possible on the SNES base hardware.
 
There's this line in source/nds/entry.cpp:

Code:
Settings.SupportHiRes = FALSE;

I think that all the hi-res-related problems fall to this line. However, it's not simply a matter of setting Settings.SupportHiRes to TRUE; the images are rendered at 512xsomething, then they have to be resized for the DS in pure software by the DSTWO's MIPS processor. That, while it may make the game's text more readable (though I question whether 3-pixel-wide letters are readable on a DS), would kill the framerate and may also kill the responsiveness of controls.
 
I haven't looked at the rendering code myself, but I wonder how much of a performance drop it would be if it were, when in high-rez mode, to simply render every other pixel, whereas in an order of 0, 1, 2, 3, 4 , 5 , 6, etc it would render 0, 2, 4, 6, etc in the spots of 0, 1, 2, 3, etc., both horizontally and vertically. It would be an essential downscale while it renders, rather than render in high-rez and then downscale. To be honest, the 3-pixel width text is really not that bad (as shown above), as only a few letters look indistinguishable, but the entire word helps to determine what those letters would likely be.
 
Like others have said, the reason why Secret of Mana has that problem is because it isn't using the high-resolution mode that the SNES supports, but rather than block it entirely, the emulator interprets the data as if was using the default mode. If you look at the picture mechagouki posted, you'll notice that every other letter in the text is being skipped. Use the picture below as a reference (though this picture is also using 256x224, so this is what it would look like if the emulator handled the mode correctly)

som_00004.png


It isn't just the text, but the entire way it handles background layer tiles (look at the D-Pad display, and compare).

For ferret7463's observance, don't expect games like Megaman X2/X3 to run smoothly, because those games, as well as others, incorporate special chips to handle tasks not possible on the SNES base hardware.

Gotta love pseudo hi-res Mode 7, that thing is a real b**ch to emulate. Mega Man X2 and X3 use the Cx4 chip, which helps perform certain special computations and for wireframe polygons. Secret of Mana didn't use a special chip, just hi-res Mode 7 of 512 x 244 or something to that effect. The DS won't be able to display that resolution.

This is how it's supposed to look like when Hi-res Mode 7 is emulated
tkC2i.png
 
I haven't looked at the rendering code myself, but I wonder how much of a performance drop it would be if it were, when in high-rez mode, to simply render every other pixel, whereas in an order of 0, 1, 2, 3, 4 , 5 , 6, etc it would render 0, 2, 4, 6, etc in the spots of 0, 1, 2, 3, etc., both horizontally and vertically. It would be an essential downscale while it renders, rather than render in high-rez and then downscale. To be honest, the 3-pixel width text is really not that bad (as shown above), as only a few letters look indistinguishable, but the entire word helps to determine what those letters would likely be.
That may be good enough. I'll look at that sometime soon.

Would it be possible for you to try to implement speedhacks?

There's some talk about it here(about half-way down the page, extending into the next few pages):
http://gbatemp.net/threads/catsfc-released.281917/page-3

Looks like ShadauxCat was going to implement them, but I guess he wasn't able to make it work.
Is there a database of those speed hacks somewhere, for enough games that it's worth it to implement? Also, I thought there was already a good speedhack in Snes9x, in the form of CPU_SHUTDOWN and SPC700_SHUTDOWN. :huh:
 
Is there a database of those speed hacks somewhere, for enough games that it's worth it to implement? Also, I thought there was already a good speedhack in Snes9x, in the form of CPU_SHUTDOWN and SPC700_SHUTDOWN. :huh:

There's the SuperDAT on the SNESAdvance site:
http://www.snesadvance.org/

It's from 2006. Looks like there's a more recently updated one on the PocketHeaven forums, but they seem to be down or something right now.
 
While you guys are here, if you speak English and a language that is currently not represented in the CATSFC GUI, I would much appreciate your help translating the English text to your language. You can find instructions to make and submit translations on the GitHub page: http://github.com/ShadauxCat/CATSFC

Languages currently represented in CATSFC are Chinese with simplified characters, French and English. It should be easy to add Finnish, German, Italian, Spanish, Portuguese, Estonian, Latvian, Lithuanian and a few more languages because the font already has glyphs for all the characters. A bit harder would be Welsh, Danish, Swedish and Norwegian. Japanese, Greek, Russian etc. would require major editing, because the font has nothing for their scripts. Not sure about Chinese with traditional characters.
 
There's the SuperDAT on the SNESAdvance site:
http://www.snesadvance.org/

It's from 2006. Looks like there's a more recently updated one on the PocketHeaven forums, but they seem to be down or something right now.
That DAT seems to have a lot of SPC700-related NOPs (to skip audio that isn't/wasn't emulated in SNESAdvance). I don't really want to tell users to install a DAT that will screw things up because the game can't synchronise anymore with the SPC700 or kinda-sorta disable sound in random places. So I will respectfully decline implementing this, but if a speedhack patch arrives in a pull request on GitHub, I'll look at it.
 
I think there's a few problems with this version. Mega Man X's sound is too fast, Super Mario All Stars + Super Mario World doesn't let you move Mario, and Street Fighter 2 (The New Challengers I think) freezes when I pause it.
 
I think there's a few problems with this version. Mega Man X's sound is too fast, Super Mario All Stars + Super Mario World doesn't let you move Mario, and Street Fighter 2 (The New Challengers I think) freezes when I pause it.
Some odd picture-processing-related freezes are fixed in 1.12. It may fix all of the games you mentioned. At least, I know it fixes Legend of Zelda's freezing at the rain sequence right at the beginning of the game.
 
Some odd picture-processing-related freezes are fixed in 1.12. It may fix all of the games you mentioned. At least, I know it fixes Legend of Zelda's freezing at the rain sequence right at the beginning of the game.
That's the version I'm using.
 
That DAT seems to have a lot of SPC700-related NOPs (to skip audio that isn't/wasn't emulated in SNESAdvance). I don't really want to tell users to install a DAT that will screw things up because the game can't synchronise anymore with the SPC700 or kinda-sorta disable sound in random places. So I will respectfully decline implementing this, but if a speedhack patch arrives in a pull request on GitHub, I'll look at it.

You can just ignore the NOPs, as DanTheManMS points out here:
http://gbatemp.net/threads/catsfc-released.281917/page-3#post-3501571

DanTheManMS said:
And as long as I'm at it, here's a tiny bit more additional info:

If you do implement the spedhacks used by SNES Advance and Snezziboy for the GBA, there's an important distinction to be made with the "snesadvance.dat" speedhack databasse. Anything that looks like "xxxx=EAEA" isn't a speedhack, and is instead a means of preventing the game from calling out to the SPC engine. Since these emulator did not support sound at all, sometimes the game would call out to the sound engine and refuse to continue until it got a response. By replacing these calls with EAEA ("EA" = "NOP" = "no operation") we can make the games continue to play.

In short, speedhacks take the form of "xxxx=42xx" or "xxxx=DBxx" while anything of the form "xxxx=EAEA" should be ignored since that's based on a specific emulator that doesn't support sound. Since the Supercard's emulator does support sound, this is a non-issue.
 
Done, still getting the same problems.

Mega Man X freezes after a few seconds on the title screen.
I cannot confirm this is happening. I stayed at the title screen for minutes, then pressed Start, waited a few seconds too many and got back into the title screen, then I pressed Start and got into a game.
 
... Super Metroid lags? I thought it was a pretty standard BG/sprite game, so it should have performance comparable to Super Mario World. What FPS do you get during the sequence? (I don't own that game)
I don't have a save on there so I started a new game. The intro level (the space station) has some gradient overlay (looks like palette writes, which I know are expensive to emulate), but it's still playable... until the Ridley fight at the end of the intro level. It drops to like, 10FPS or less (a guess, it's almost unplayably low), during the escape sequence right after that too. This is without screen scaling, using the "centered cropped" option, sound on, CPU speed 5. My previous uses of the emulator stopped before the fight and were just to show the there's some input lag, so I don't know if the older versions do it too.

Also the input missing I mentioned, I first noticed on the options screen. If I tap a direction or button quickly, there's a chance it won't be recognized.

I still think it's quite important to distinguish the SuperCard Team effort from the GBAtemp community effort
And what about your effort? NEBSFC works fine for me. BAG took NDSSFC and modified the title to show it was his work, then Shadaux did the same with CATSFC, and now you've picked up the torch, and I think it'd only fair you have your name in there somewhere too since you're putting forth the effort, time, and using your skills for something the community benefits from.

Is there a database of those speed hacks somewhere, for enough games that it's worth it to implement? Also, I thought there was already a good speedhack in Snes9x, in the form of CPU_SHUTDOWN and SPC700_SHUTDOWN. :huh:
There's a few speedhack databases rolling around the 'net, some emulators come with updated versions, and I know the PSP emulators could use them so I might check later to see the datestamp on the speedhack file I'm using on my PSP. I know it's not the old one being talked about, since sound still runs fine...

I don't really want to tell users to install a DAT that will screw things up because the game can't synchronise anymore with the SPC700 or kinda-sorta disable sound in random places.
Why not have a toggle in the misc. settings on whether the speedhack database is used?
 

Site & Scene News

Popular threads in this forum