Hacking NDSSFC/CATSFC revival

What sort of additional hotkeys do you want?


  • Total voters
    98

ferret7463

Well-Known Member
Member
Joined
Sep 21, 2010
Messages
613
Trophies
1
Age
50
XP
618
Country
United States
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:
 

DiscostewSM

Well-Known Member
Member
Joined
Feb 10, 2009
Messages
5,484
Trophies
2
Location
Sacramento, California
Website
lazerlight.x10.mx
XP
5,482
Country
United States
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.
 

Deleted member 319809

MAH BOI/GURL
OP
Member
Joined
Dec 22, 2012
Messages
900
Trophies
0
XP
461
Country
Canada
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.
 

DiscostewSM

Well-Known Member
Member
Joined
Feb 10, 2009
Messages
5,484
Trophies
2
Location
Sacramento, California
Website
lazerlight.x10.mx
XP
5,482
Country
United States
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.
 

the_randomizer

The Temp's official fox whisperer
Member
Joined
Apr 29, 2011
Messages
31,284
Trophies
2
Age
38
Location
Dr. Wahwee's castle
XP
18,969
Country
United States
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
 

Deleted member 319809

MAH BOI/GURL
OP
Member
Joined
Dec 22, 2012
Messages
900
Trophies
0
XP
461
Country
Canada
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:
 

windwakr

Well-Known Member
Member
Joined
Sep 13, 2009
Messages
502
Trophies
1
Website
windwakr.github.io
XP
1,790
Country
United States
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.
 

Deleted member 319809

MAH BOI/GURL
OP
Member
Joined
Dec 22, 2012
Messages
900
Trophies
0
XP
461
Country
Canada
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.
 

Deleted member 319809

MAH BOI/GURL
OP
Member
Joined
Dec 22, 2012
Messages
900
Trophies
0
XP
461
Country
Canada
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.
 

Dann Woolf

Deadpan Snarker
Member
Joined
Oct 12, 2010
Messages
362
Trophies
0
Age
34
Location
Deventer
XP
284
Country
Netherlands
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.
 

Deleted member 319809

MAH BOI/GURL
OP
Member
Joined
Dec 22, 2012
Messages
900
Trophies
0
XP
461
Country
Canada
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.
 

windwakr

Well-Known Member
Member
Joined
Sep 13, 2009
Messages
502
Trophies
1
Website
windwakr.github.io
XP
1,790
Country
United States
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.
 

Deleted member 319809

MAH BOI/GURL
OP
Member
Joined
Dec 22, 2012
Messages
900
Trophies
0
XP
461
Country
Canada
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.
 

Rydian

Resident Furvert™
Member
Joined
Feb 4, 2010
Messages
27,880
Trophies
0
Age
36
Location
Cave Entrance, Watching Cyan Write Letters
Website
rydian.net
XP
9,111
Country
United States
... 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

General chit-chat
Help Users
  • No one is chatting at the moment.
    Xdqwerty @ Xdqwerty: good night