It is currently Sun Oct 22, 2017 1:26 am

All times are UTC - 7 hours





Post new topic Reply to topic  [ 36 posts ]  Go to page Previous  1, 2, 3  Next
Author Message
 Post subject: Re: GoodNES3.14 audit
PostPosted: Mon Jan 23, 2017 7:57 pm 
Offline
User avatar

Joined: Mon Dec 29, 2014 1:46 pm
Posts: 710
Location: New York, NY
lidnariq wrote:
But Nestopia's DB doesn't? It's still just the two mentioned on the wiki.


Castlevania III from NstDatabase.xml (1.47):

Code:
    <game>
        <cartridge system="NES-NTSC" dump="ok" crc="C471E42D" sha1="2447D6133573F7ED2CC49DC95B3130427BD4DC35">
            <board type="NES-SLROM" mapper="1">
                <prg size="128k" />
                <chr size="128k" />
                <chip type="MMC1A" />
            </board>
        </cartridge>
    </game>


It is listed as mapper 1, but it also tags it as MMC1A, implying mapper 155.


Top
 Profile  
 
 Post subject: Re: GoodNES3.14 audit
PostPosted: Mon Jan 23, 2017 8:07 pm 
Online

Joined: Sun Apr 13, 2008 11:12 am
Posts: 6294
Location: Seattle
... Sure enough, Nestopia uses the 'chip type="MMC1A"' to force MMC1A behavior.

This feels kinda pedantic? But ok, let's walk through this:

Mapper 155 was created for the subset of MMC1 games that require the use of the MMC1A.

By definition, any release of a game on hardware that used the MMC1A must able to be emulated as mapper 155, but it may also be compatible with the generic MMC1 model as well.

It's like tepples's point that all NROM games are subsets of CNROM, and all CNROM games (with less not more than 128KiB of CHR) are subsets of GNROM.


Last edited by lidnariq on Mon Jan 23, 2017 8:26 pm, edited 1 time in total.

Top
 Profile  
 
 Post subject: Re: GoodNES3.14 audit
PostPosted: Mon Jan 23, 2017 8:14 pm 
Offline
User avatar

Joined: Sun Sep 19, 2004 9:28 pm
Posts: 3192
Location: Mountain View, CA, USA
zeroone wrote:
It is listed as mapper 1, but it also tags it as MMC1A, implying mapper 155.

This is an open-ended statement with no real backing in and by itself; you need to look at the NestopiaUE source code to make the determination as to whether or not it keys off the chip type or if it's purely cosmetical. There are some cases where it's cosmetical, other cases where it's not. So let's look at it; I'll try as best as I can.

Other than the database file itself, there are two places the MMC1A string is found:

* source/core/board/NstBoard.cpp -- https://github.com/rdanbrook/nestopia/b ... .cpp#L1266 -- this keys off of the mapper number itself. If the mapper number is 155, then it adds to the chip list for the particular game (at run-time) the MMC1A string.

* source/core/board/NstBoardSxRom.hpp -- https://github.com/rdanbrook/nestopia/b ... om.hpp#L34 -- this keys off of the chip list for the particular game, looking for either MMC1 or MMC1A -- if it's found, the SxRom() function ends up returning REV_A.

REV_A is part of an enum in source/core/board/NstBoardMmc1.hpp -- https://github.com/rdanbrook/nestopia/b ... c1.hpp#L38 -- for board revision. There are other places in the source code that reference REV_A but not in the MMC1 context; we'll ignore those.

So now we have to figure out what uses this magic Revision enum, and if it really cares about something REV_A MMC1 specific. There are two places, but in a single source file:

* source/core/board/NstBoardMmc1.cpp -- https://github.com/rdanbrook/nestopia/b ... c1.cpp#L39 -- keys off of the revision when writing to a log file (at least that's what it looks like to me)
* source/core/board/NstBoardMmc1.cpp -- https://github.com/rdanbrook/nestopia/b ... 1.cpp#L131 -- the UpdateWrk() function definitely cares about revision, which I think is some kind of parameter or something for Mmc1::Mmc1. I can't read this code because it's OO that I don't understand. But I would say that revision refers to the Revision enum in this case, for the particular game.

So yes, it looks like essentially this can act as an "override" for this particular MMC1 revision quirk/design.

To me, based on this code that in NestopiaUE, mapper 155 ends up being the exact same thing as mapper==1 && chip==MMC1A (REV_A).

Edit: lidnariq apparently was off doing the same thing I was.


Top
 Profile  
 
 Post subject: Re: GoodNES3.14 audit
PostPosted: Tue Jan 24, 2017 5:39 am 
Offline
Formerly Fx3
User avatar

Joined: Fri Nov 12, 2004 4:59 pm
Posts: 3064
Location: Brazil
You see... There's no awesome-perfect header that helps proper cartridge ID. The only way is a database - a 16-byte header would complete the loading info, but that's all. So, in order to get mapper 1 or 155, a database must be used. Period.

With respect, but the way of how Nestopia handles MMC1 or whatever mapper isn't interesting - just cosmetic.


Top
 Profile  
 
 Post subject: Re: GoodNES3.14 audit
PostPosted: Tue Jan 24, 2017 8:07 am 
Offline
User avatar

Joined: Mon Dec 29, 2014 1:46 pm
Posts: 710
Location: New York, NY
Zepper wrote:
With respect, but the way of how Nestopia handles MMC1 or whatever mapper isn't interesting - just cosmetic.


This is not the case:

koitsu wrote:
To me, based on this code that in NestopiaUE, mapper 155 ends up being the exact same thing as mapper==1 && chip==MMC1A (REV_A).


If it is tagged as MMC1A in the DB, Nestopia uses the mapper 155 logic.

However:

lidnariq wrote:
By definition, any release of a game on hardware that used the MMC1A must able to be emulated as mapper 155, but it may also be compatible with the generic MMC1 model as well.


Apparently, Nestopia's DB overzealously tagged MMC1 ROMs as MMC1A. Since the audit in the OP compared the headers against the database, an excessive amount of 155 vs 1 mismatches showed up.


Top
 Profile  
 
 Post subject: Re: GoodNES3.14 audit
PostPosted: Tue Jan 24, 2017 8:22 am 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 19115
Location: NE Indiana, USA (NTSC)
I guess "this chip was labeled MMC1A when we opened the cartridge" doesn't mean the same as "this game will not run with later revisions".


Top
 Profile  
 
 Post subject: Re: GoodNES3.14 audit
PostPosted: Tue Jan 24, 2017 5:37 pm 
Offline
User avatar

Joined: Mon Dec 29, 2014 1:46 pm
Posts: 710
Location: New York, NY
Here is a list of mappers implemented in various emulators that do not appear in the GoodNES3.14 set or in the cart DBs:

43, 63, 123, 125, 126, 151, 162, 170, 218, 220, 236

Any idea what ROMs were used to test these mappers?

Edit: The wiki describes mapper 218 and it refers to a test ROM.

Edit 2: The wiki also explains that mapper 151 is effectively VRC1.

Edit 3: According the FCEUX source, mapper 43 supports Mr. Mary, a pirate hack of Mario Bros. I cannot track down a ROM.

Edit 4: Mapper 63 is supported by Nintendulator and it calls it, "Hello Kitty 255 in 1". I cannot track down a ROM.

Edit 5: Mapper 123 is a pirate MMC3 mapper supported by FCEUX. I do not know which ROMs use it, but FCEUX refers to the mapper as H2288.

Edit 6: Mapper 125 is supported by Nintendulator, which claims it supports the NES conversion of the FDS game, "Monty on the Run". I cannot track down a ROM.

Edit 7: Mapper 126 is "Super Joy" according to Nintendulator, which is a pirate MMC3 mapper. I cannot track down a ROM.

Edit 8: Mapper 162 is a Waixing pirate ROM mapper. I do not which games use it. FCEUX suggests it is a variation of mapper 164.

Edit 9: Mapper 170 is supported by FCEUX and it looks like a very simple mapper. But, I have no clue what games uses it.

Edit 10: FCEUX calls mapper 220, "Debug Mapper" and "KS7057". As with the others, the associated ROMs are a mystery.

Edit 11: According to Mesen, mapper 236 is equivalent to BMC-70IN1 for which there are UNIF ROMs.


Last edited by zeroone on Tue Jan 24, 2017 7:52 pm, edited 13 times in total.

Top
 Profile  
 
 Post subject: Re: GoodNES3.14 audit
PostPosted: Tue Jan 24, 2017 6:45 pm 
Online

Joined: Sun Apr 13, 2008 11:12 am
Posts: 6294
Location: Seattle
AFAIK, mapper 218 is CHRless. There's only a few random homebrews that use it, and AFAIK all of them are using the most-obviously-useful 1-screen PPUA13 variant.
* Nocash's Magic Floor
* A few of my tests
* The IRE measurement test that tepples wrote for me.


Top
 Profile  
 
 Post subject: Re: GoodNES3.14 audit
PostPosted: Tue Jan 24, 2017 6:51 pm 
Offline
Formerly Fx3
User avatar

Joined: Fri Nov 12, 2004 4:59 pm
Posts: 3064
Location: Brazil
151 99 is VS Unisystem, like VS Super Mario Bros. Writes to $4016 swap CHR bank.


Last edited by Zepper on Tue Jan 24, 2017 7:10 pm, edited 2 times in total.

Top
 Profile  
 
 Post subject: Re: GoodNES3.14 audit
PostPosted: Tue Jan 24, 2017 6:58 pm 
Offline
Formerly Fx3
User avatar

Joined: Fri Nov 12, 2004 4:59 pm
Posts: 3064
Location: Brazil
zeroone wrote:
Zepper wrote:
With respect, but the way of how Nestopia handles MMC1 or whatever mapper isn't interesting - just cosmetic.


This is not the case:

Nestopia isn't the rule. It can't be the rule of how to do the right things.


Top
 Profile  
 
 Post subject: Re: GoodNES3.14 audit
PostPosted: Tue Jan 24, 2017 7:01 pm 
Offline
User avatar

Joined: Mon Dec 29, 2014 1:46 pm
Posts: 710
Location: New York, NY
Zepper wrote:
Nestopia isn't the rule. It can't be the rule of how to do the right things.


Agreed. But, ROMs have been vetted against its cart DB for quite a long time; so, I used it's DB in part of the audit.


Top
 Profile  
 
 Post subject: Re: GoodNES3.14 audit
PostPosted: Tue Jan 24, 2017 7:01 pm 
Online

Joined: Sun Apr 13, 2008 11:12 am
Posts: 6294
Location: Seattle
Zepper wrote:
151 is VS Unisystem, like VS Super Mario Bros. Writes to $4016 swap CHR bank.
151 is strictly the VRC1 on the Vs System.

Writes to $4016 should not change the CHR bank; rather it should behave identically to mapper 75 (including that the "4-screen nametables" bit should override mapper-controlled mirroring)


Top
 Profile  
 
 Post subject: Re: GoodNES3.14 audit
PostPosted: Tue Jan 24, 2017 7:07 pm 
Offline
Formerly Fx3
User avatar

Joined: Fri Nov 12, 2004 4:59 pm
Posts: 3064
Location: Brazil
lidnariq wrote:
Zepper wrote:
151 is VS Unisystem, like VS Super Mario Bros. Writes to $4016 swap CHR bank.
151 is strictly the VRC1 on the Vs System.

Writes to $4016 should not change the CHR bank; rather it should behave identically to mapper 75 (including that the "4-screen nametables" bit should override mapper-controlled mirroring)

Oh no! I was wrong! It's mapper 99 used by VS Super Mario Bros and has $4016 CHR swap.


Top
 Profile  
 
 Post subject: Re: GoodNES3.14 audit
PostPosted: Fri Jan 27, 2017 6:02 pm 
Offline
User avatar

Joined: Mon Dec 29, 2014 1:46 pm
Posts: 710
Location: New York, NY
Does anyone have the Mapper 43 ROM mentioned here?


Top
 Profile  
 
 Post subject: Re: GoodNES3.14 audit
PostPosted: Fri Jan 27, 2017 7:06 pm 
Offline
Formerly Fx3
User avatar

Joined: Fri Nov 12, 2004 4:59 pm
Posts: 3064
Location: Brazil
zeroone wrote:
Does anyone have the Mapper 43 ROM mentioned here?

*ahem*


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 36 posts ]  Go to page Previous  1, 2, 3  Next

All times are UTC - 7 hours


Who is online

Users browsing this forum: Google Adsense [Bot] and 14 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group