NES playroutine identifier

Discuss NSF files, FamiTracker, MML tools, or anything else related to NES music.

Moderator: Moderators

SuperWill24
Posts: 33
Joined: Sat May 13, 2017 7:54 pm

Re: NES playroutine identifier

Post by SuperWill24 »

Karmic wrote:Another small update with only a few fixes for existing IDs. Still 356 unidentified NSFs in Knurek's archive.
You should try identifying all the files in MrNorbert1994's NSF archive. :)
User avatar
Gil-Galad
Posts: 321
Joined: Sat Nov 13, 2004 9:43 pm
Location: Ohio, USA
Contact:

Re: NES playroutine identifier

Post by Gil-Galad »

Is it possible to update the program so that it displays the signature in a readable form on the console?

I am working on a game that was detected as Namco_1. It's programmed by Pony Canyon.

Namco_1
F0 ?? C9 05 90 ?? 38 E9 05 ?? A9 01 END
A0 04 BD ?? ?? 90 03 9D 00 40 E8 88 D0 END
A0 04 90 06 BD ?? ?? 9D 00 40 E8 88 D0 END
A9 01 99 ?? ?? A0 00 98 91 ?? C8 C0 END
(Micronics)
85 ?? 98 29 07 A8 B9 ?? ?? A0 00 11 ?? 91 END

I converted two lines to show you what I mean, generally.

BEQ ?? CMP #$05 BCC ?? SEC SBC #$05 ?? LDA #$01 END

LDY #$04 LDA $????,x BCC 03 STA $4000,x INX DEY BNE END
User avatar
Karmic
Posts: 306
Joined: Sun Jun 05, 2016 2:10 am
Location: Canada
Contact:

Re: NES playroutine identifier

Post by Karmic »

One thing I forgot to mention about the tool: the -m switch should be used to nake it possible to see the sub-IDs (in brackets).

@Gil: Unfortunately not. I still don't really know C.
User avatar
Karmic
Posts: 306
Joined: Sun Jun 05, 2016 2:10 am
Location: Canada
Contact:

Re: NES playroutine identifier

Post by Karmic »

Another update.
Attachments
nsfid.zip
(51.4 KiB) Downloaded 622 times
tepples
Posts: 22705
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: NES playroutine identifier

Post by tepples »

A few bug reports (is there a more formal issue tracker?):
  1. Thank you for including my makefile. But the part before gcc needs to be an actual tab character, not spaces. (phpBB corrupted this.)
  2. -c nsfid.cfg doesn't work; it has to be -cnsfid.cfg. It's traditional for programs to accept both.
  3. On non-Win32, the result of GetModuleFileName() is stored in argv[0], so you can mostly just strncpy that into place, then deal with the presence or absence of an executable extension.
  4. ishex() already exists in <ctype.h> under the name isxdigit().
Are you looking for someone else to take over as maintainer?
User avatar
Karmic
Posts: 306
Joined: Sun Jun 05, 2016 2:10 am
Location: Canada
Contact:

Re: NES playroutine identifier

Post by Karmic »

New ID for Indies_Soft, now identifies Bishoujo SF Alien Battle
Attachments
nsfid.zip
(51.41 KiB) Downloaded 586 times
TheJuanCarlos64
Posts: 27
Joined: Wed Dec 14, 2016 8:53 pm

Re: NES playroutine identifier

Post by TheJuanCarlos64 »

Hey Karmic.
Needs to be updated because some Famicompo entities uses both FT and 0cc entities
Yeah. Still "Famitracker" here.
I need to be added
"0CC-FT 0.3.1X.X"
"j0CC-FT 0.X.X"
User avatar
Karmic
Posts: 306
Joined: Sun Jun 05, 2016 2:10 am
Location: Canada
Contact:

Re: NES playroutine identifier

Post by Karmic »

TheJuanCarlos64 wrote:Hey Karmic.
Needs to be updated because some Famicompo entities uses both FT and 0cc entities
Yeah. Still "Famitracker" here.
I need to be added
"0CC-FT 0.3.1X.X"
"j0CC-FT 0.X.X"
Try using the /m command line option, where I've added a sub-id for (0CC-FamiTracker). j0CC as far as I know has an identical NSF driver so it can't be identified.
User avatar
Karmic
Posts: 306
Joined: Sun Jun 05, 2016 2:10 am
Location: Canada
Contact:

Re: NES playroutine identifier

Post by Karmic »

Renamed Nice_Code_1 to TXC as I've found it first used in "Qi Wang - Chinese Chess", and updated Hirokazu_Tanaka to identify Stroke & Match Golf.

Remember to use the -m switch, always.
Attachments
nsfid.zip
(51.59 KiB) Downloaded 342 times
User avatar
Karmic
Posts: 306
Joined: Sun Jun 05, 2016 2:10 am
Location: Canada
Contact:

Re: NES playroutine identifier

Post by Karmic »

Slowly but surely scratching more games off the "unidentified" list. Added several players and fixed some IDs, mostly ones only used in a couple games.
Attachments
nsfid.zip
(52.03 KiB) Downloaded 284 times
tepples
Posts: 22705
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: NES playroutine identifier

Post by tepples »

Thank you for the update. But I saw this and couldn't resist:
Rare
AUTHOR: Mark Betteridge, Chris Stamper
Headline: Serious Issues in Rare's Sound Driver?

Article body: No.
User avatar
Karmic
Posts: 306
Joined: Sun Jun 05, 2016 2:10 am
Location: Canada
Contact:

Re: NES playroutine identifier

Post by Karmic »

I have finally gotten around to creating a github repository for this program. All updates will be pushed there from now on.

I will accept modifications from others, but be prepared to justify any modifications you make.
User avatar
Karmic
Posts: 306
Joined: Sun Jun 05, 2016 2:10 am
Location: Canada
Contact:

Re: NES playroutine identifier

Post by Karmic »

OK, major update, not in the signatures but in the utility itself.

I have finally gotten around to rewriting the tool to fix the annoyances I had, including only being able to search by directory, and one at a time. Now you may specify as many directories or files as you wish, with (in my tests at least) limited wildcard support. You can search for any amount of specific drivers. I am using a more sophisticated command line argument parser. -m is no longer an option- it's all you have.

But the real reason I have made this new program is so I could extend the same concept to different systems easily. I have added a new "FILETYPES" directive in the config files that allows you to specify which file types the configuration file is intended to scan, which means you no longer have to make another modification of the program just to scan any other system's rip formats. Additionally, multiple types may be assigned to a config file, so you can scan not only audio rips but ROM dumps too. This of course may be overridden by the user if they still wish to only search through rips, or if they want to scan any file regardless of extension.

The name is now a bit awkward with this new facelift, I guess. Any backronym suggestions or new names would be interesting to hear.
User avatar
Memblers
Site Admin
Posts: 4044
Joined: Mon Sep 20, 2004 6:04 am
Location: Indianapolis
Contact:

Re: NES playroutine identifier

Post by Memblers »

I appreciate this program and database, thanks for making this. I've used it now to add driver info display to my NSF player using _popen(). Instead of parsing the output I took a shortcut, and added a -q option into nsfid.c. With that, on an error-free run it prints only the driver name to stdout. I just pass it one NSF file at a time, this is really cool.

Looks like the code has changed since then, if that feature is interesting I could try to merge it in. It worked well for me, at least. If not, I'll just post that source whenever I start doing releases (rest of my program will probably be MIT or BSD license or something).
User avatar
Karmic
Posts: 306
Joined: Sun Jun 05, 2016 2:10 am
Location: Canada
Contact:

Re: NES playroutine identifier

Post by Karmic »

Memblers wrote: Fri Feb 14, 2020 12:38 am I appreciate this program and database, thanks for making this. I've used it now to add driver info display to my NSF player using _popen(). Instead of parsing the output I took a shortcut, and added a -q option into nsfid.c. With that, on an error-free run it prints only the driver name to stdout. I just pass it one NSF file at a time, this is really cool.

Looks like the code has changed since then, if that feature is interesting I could try to merge it in. It worked well for me, at least. If not, I'll just post that source whenever I start doing releases (rest of my program will probably be MIT or BSD license or something).
Interesting use case. Actually I think it might be a good idea for me to restructure the program so you can just use it as a library- you would load a configuration file from disk with a loadcfg() function and I'd have to change the scanfile() function so it returns simply a list of driver names instead of printing them out right then and there. Of course I'd keep a command line version that acts identically to the one now.
Post Reply