nesdev.com
https://forums.nesdev.com/

Vs. DualSystem
https://forums.nesdev.com/viewtopic.php?f=3&t=18232
Page 2 of 5

Author:  lidnariq [ Mon Dec 31, 2018 11:42 pm ]
Post subject:  Re: Vs. DualSystem

There is no mapper 0 Vs. System game. If you find one, it is a bad header.

The mapper 0 hardware is defined as "no PRG bankswitching, no CHR bankswitching" and that cannot happen on the Vs. System board: it is physically laid out such that you can't not have CHR bankswitching. It's not like putting an 8 KiB CHR ROM in a CNROM board and having a latch that does nothing: instead there are two physical sockets, and you can only put an 8 KiB (or smaller, but that was never done) ROM in each socket or fail to put anything in that socket: The result is still mapper 99 and the empty socket results in open bus.

It may work as mapper 0, in the same way emulators don't "have" to enforce bus conflicts on discrete logic mappers, but it's incorrect.


MAME's database is in https://github.com/mamedev/mame/blob/ma ... /vsnes.cpp
To convert common names to MAME codename, go to the bottom with the GAME macro.
To convert MAME codename into dipswitches, look for INPUT_PORTS_START( codename )
To convert MAME codename into ROM sizes and hashes, look for ROM_START( codename )

Author:  Memblers [ Tue Jan 01, 2019 12:41 am ]
Post subject:  Re: Vs. DualSystem

zeroone wrote:
I am looking at the Dipswitch definitions file in Mesen. The number of switches and options suggests that the VS. DualSystem games have 16 DIPs instead of 8 DIPs. Perhaps this is possible since there are 4 controller ports instead of 2?


Yes, for a DualSystem game there effectively are 16 dipswitches. Each CPU sees 8, mapped into the same location. Other than the shared RAM, the 2 sides are symmetrical. In a dual cabinet it can run 2 UniSystem games independently. The single monitor cabinets use the same board but only install one CPU/PPU.

Author:  zeroone [ Tue Jan 01, 2019 7:00 pm ]
Post subject:  Re: Vs. DualSystem

Do any of the VS games in GoodNES3.23b work in the current Mesen release? None of them seem to open.

Author:  NewRisingSun [ Tue Jan 01, 2019 7:55 pm ]
Post subject:  Re: Vs. DualSystem

No. As mentioned before, you need to create them from MAME ROM sets.

Author:  zeroone [ Tue Jan 01, 2019 8:17 pm ]
Post subject:  Re: Vs. DualSystem

NewRisingSun wrote:
No. As mentioned before, you need to create them from MAME ROM sets.


Oh. Why are the GoodNES ROMs useless? There is absolute no way to run them? It's starting to sound like if I support the VS DualSystem, no one is going to have the games to play it.

Author:  lidnariq [ Tue Jan 01, 2019 8:37 pm ]
Post subject:  Re: Vs. DualSystem

Historically, it's been impossible to encode Vs. DualSystem ROMs in iNES format because the iNES format implies exactly one chunk of PRG and one chunk of CHR.

The DualSystem requires two chunks of PRG and two chunks of CHR... NewRisingSun has lead the effort to define an official encoding of Vs. DualSystems into NES2.0, but that's very recent.

Supporting MAME romsets would be the most immediate way to make it easy for people to run.

Author:  zeroone [ Tue Jan 01, 2019 8:56 pm ]
Post subject:  Re: Vs. DualSystem

lidnariq wrote:
The DualSystem requires two chunks of PRG and two chunks of CHR...


The existing GoodNES VS DualSystem .nes files are twice the size as their regular counterparts. Is the PRG and CHR ROMs not just doubled up?

Author:  lidnariq [ Tue Jan 01, 2019 9:11 pm ]
Post subject:  Re: Vs. DualSystem

At the very least, the GoodNES 3.23b's Vs. System image for Balloon Fight is only one half. (The other half is named "(Player 2 Mode) [b1]" but it isn't a bad dump, it's the same hashes as in MAME).

Balloon Fight for NES/Famicom is a 16+8 game. Balloon Fight for the Vs. DualSystem is a 32+32+16+16 game. (Almost all DualSystem games are 32+32+16+16. Except Vs. Mahjong, which is 24+24+8+8)

There's no way for the original iNES format to mark whether the contents of the file is one PRG chunk or two. That's one of the things that NewRisingSun added in NES2.0.

Author:  NewRisingSun [ Wed Jan 02, 2019 2:54 am ]
Post subject:  Re: Vs. DualSystem

zeroone wrote:
It's starting to sound like if I support the VS DualSystem, no one is going to have the games to play it.
As more emulators add Vs. Dual System support, future versions of No-Intro and GoodNES (if there ever is one again) will likely include the proper NES 2.0 ROMs in their their datfiles and the associated collections, so I would say it's more of a temporary problem.

Author:  zeroone [ Wed Jan 02, 2019 7:43 am ]
Post subject:  Re: Vs. DualSystem

lidnariq wrote:
At the very least, the GoodNES 3.23b's Vs. System image for Balloon Fight is only one half. (The other half is named "(Player 2 Mode) [b1]" but it isn't a bad dump, it's the same hashes as in MAME).

Balloon Fight for NES/Famicom is a 16+8 game. Balloon Fight for the Vs. DualSystem is a 32+32+16+16 game. (Almost all DualSystem games are 32+32+16+16. Except Vs. Mahjong, which is 24+24+8+8)

There's no way for the original iNES format to mark whether the contents of the file is one PRG chunk or two. That's one of the things that NewRisingSun added in NES2.0.


Ouch. Those GoodNES files are going to confuse anyone who wants to play those games. For the emulators that support the VS DualSystem, those ROMs are going to create the impression that the support is incomplete or buggy.

NewRisingSun wrote:
As more emulators add Vs. Dual System support, future versions of No-Intro and GoodNES (if there ever is one again) will likely include the proper NES 2.0 ROMs in their their datfiles and the associated collections, so I would say it's more of a temporary problem.


This is the first time I heard of "No-Intro". Is it a better collection than GoodNES?

More importantly, I agree with your sentiment. Let me PM you with a proposal.

Author:  lidnariq [ Wed Jan 02, 2019 1:55 pm ]
Post subject:  Re: Vs. DualSystem

No-Intro is a community-run effort to replace Cowering's GoodTools, especially after he took leave for a decade.

Currently their NES/FC set don't include headers: it's just hashes of known good dumps. Official headers might be included there after NewRisingSun / Kevtris release a canonical set.

Author:  zeroone [ Sat Jan 05, 2019 12:08 pm ]
Post subject:  Re: Vs. DualSystem

lidnariq wrote:
There is no mapper 0 Vs. System game. If you find one, it is a bad header.

The mapper 0 hardware is defined as "no PRG bankswitching, no CHR bankswitching" and that cannot happen on the Vs. System board: it is physically laid out such that you can't not have CHR bankswitching. It's not like putting an 8 KiB CHR ROM in a CNROM board and having a latch that does nothing: instead there are two physical sockets, and you can only put an 8 KiB (or smaller, but that was never done) ROM in each socket or fail to put anything in that socket: The result is still mapper 99 and the empty socket results in open bus.

It may work as mapper 0, in the same way emulators don't "have" to enforce bus conflicts on discrete logic mappers, but it's incorrect.


MAME's database is in https://github.com/mamedev/mame/blob/ma ... /vsnes.cpp
To convert common names to MAME codename, go to the bottom with the GAME macro.
To convert MAME codename into dipswitches, look for INPUT_PORTS_START( codename )
To convert MAME codename into ROM sizes and hashes, look for ROM_START( codename )


FCEUX contains a table describing each VS UniSystem game:

Code:
VSUNIENTRY VSUniGames[] =
{
   { "Baseball", 0x691d4200ea42be45LL, 99, 2, RP2C04_001, 0 },
   { "Battle City", 0x8540949d74c4d0ebLL, 99, 2, RP2C04_001, 0 },
   { "Battle City(Bootleg)", 0x8093cbe7137ac031LL, 99, 2, RP2C04_001, 0 },

   { "Clu Clu Land", 0x1b8123218f62b1eeLL, 99, 2, RP2C05_004, IOPTION_SWAPDIRAB },
   { "Dr Mario", 0xe1af09c477dc0081LL, 1, 0, RP2C04_003, IOPTION_SWAPDIRAB },
   { "Duck Hunt", 0x47735d1e5f1205bbLL, 99, 2, RCP2C03B, IOPTION_GUN },
   { "Excitebike", 0x3dcd1401bcafde77LL, 99, 2, RP2C04_003, 0 },
   { "Excitebike (J)", 0x7ea51c9d007375f0LL, 99, 2, RP2C05_004, 0 },
   { "Freedom Force", 0xed96436bd1b5e688LL, 4, 0, RP2C04_001, IOPTION_GUN }, /* Wrong color in game select screen? */
   { "Stroke and Match Golf", 0x612325606e82bc66LL, 99, 2, RP2C04_002, IOPTION_SWAPDIRAB | IOPTION_PREDIP, 0x01 },

   { "Goonies", 0xb4032d694e1d2733LL, 151, 1, RP2C04_003, 0 },
   { "Gradius", 0x50687ae63bdad976LL, 151, 1, RP2C04_001, IOPTION_SWAPDIRAB },
   { "Gumshoe", 0x87161f8ee37758d3LL, 99, 2, RC2C05_03, IOPTION_GUN },
   { "Gumshoe", 0xb8500780bf69ce29LL, 99, 2, RC2C05_03, IOPTION_GUN },
   { "Hogan's Alley", 0xd78b7f0bb621fb45LL, 99, 2, RP2C04_001, IOPTION_GUN },
   { "Ice Climber", 0xd21e999513435e2aLL, 99, 2, RP2C05_004, IOPTION_SWAPDIRAB },
   { "Ladies Golf", 0x781b24be57ef6785LL, 99, 2, RP2C04_002, IOPTION_SWAPDIRAB | IOPTION_PREDIP, 0x1 },

   { "Mach Rider", 0x015672618af06441LL, 99, 2, RP2C04_002, 0 },
   { "Mach Rider (J)", 0xa625afb399811a8aLL, 99, 2, RP2C04_001, 0 },
   { "Mighty Bomb Jack", 0xe6a89f4873fac37bLL, 0, 2, RC2C05_02, 0 },
   { "Ninja Jajamaru Kun", 0xb26a2c31474099c0LL, 99, 2, RC2C05_01, IOPTION_SWAPDIRAB },
   { "Pinball", 0xc5f49d3de7f2e9b8LL, 99, 2, RP2C04_001, IOPTION_PREDIP, 0x01 },
   { "Pinball (J)", 0x66ab1a3828cc901cLL, 99, 2, RCP2C03B, IOPTION_PREDIP, 0x1 },
   { "Platoon", 0x160f237351c19f1fLL, 68, 1, RP2C04_001, 0 },
   { "RBI Baseball", 0x6a02d345812938afLL, 4, 1, RP2C04_001, IOPTION_SWAPDIRAB },
   { "Soccer", 0xd4e7a9058780eda3LL, 99, 2, RP2C04_003, IOPTION_SWAPDIRAB },
   { "Star Luster", 0x8360e134b316d94cLL, 99, 2, RCP2C03B, 0 },
   { "Stroke and Match Golf (J)", 0x869bb83e02509747LL, 99, 2, RCP2C03B, IOPTION_SWAPDIRAB | IOPTION_PREDIP, 0x1 },
   { "Super Sky Kid", 0x78d04c1dd4ec0101LL, 4, 1, RCP2C03B, IOPTION_SWAPDIRAB | IOPTION_PREDIP, 0x20 },

   { "Super Xevious", 0x2d396247cf58f9faLL, 206, 0, RP2C04_001, 0 },
   { "Tetris", 0x531a5e8eea4ce157LL, 99, 2, RCP2C03B, IOPTION_PREDIP, 0x20 },
   { "Top Gun", 0xf1dea36e6a7b531dLL, 2, 0, RC2C05_04, 0 },
   { "VS Castlevania", 0x92fd6909c81305b9LL, 2, 1, RP2C04_002, 0 },
   { "VS Slalom", 0x4889b5a50a623215LL, 0, 1, RP2C04_002, 0 },
   { "VS Super Mario Bros", 0x39d8cfa788e20b6cLL, 99, 2, RP2C05_004, 0 },
   { "VS Super Mario Bros [a1]", 0xfc182e5aefbce14dLL, 99, 2, RP2C05_004, 0 },
   { "VS TKO Boxing", 0x6e1ee06171d8ce3aLL, 4, 1, RP2C04_003, IOPTION_PREDIP, 0x00 },
   { 0 }
};


The value to the right of the checksum is mapper number. Several games function outside of mapper 99. And a few are mapper 0.

If this is incorrect, does that mean that description of Mapper 99 on the wiki is incomplete since it needs to absorb characteristics of other mappers for certain games?

Author:  NewRisingSun [ Sat Jan 05, 2019 12:41 pm ]
Post subject:  Re: Vs. DualSystem

Mapper 99 is the CHR-ROM bank switch built into the Vs. System hardware. Since all games run on the Vs. System hardware, they will at minimum have mapper 99. Vs. Slalom merely has only one 8 KiB CHR-ROM bank, so not emulating the $4016 CHR-ROM switch by specifying mapper 0 amounts to the same result. But pedantically speaking, it's wrong. Other games do indeed bring their own mappers 1, 206, and 67/68. Mapper 151 is a duplicate of 75, meaning VRC1. Their existence does not mean that Mapper 99's description is incomplete, though.

Author:  zeroone [ Sun Jan 06, 2019 9:27 am ]
Post subject:  Re: Vs. DualSystem

NewRisingSun wrote:
Other games do indeed bring their own mappers 1, 206, and 67/68. Mapper 151 is a duplicate of 75, meaning VRC1. Their existence does not mean that Mapper 99's description is incomplete, though.


Does the NES 2.0 header indicate the use of these other mappers?

Author:  NewRisingSun [ Sun Jan 06, 2019 10:22 am ]
Post subject:  Re: Vs. DualSystem

Of course. Just look at the Vs. System's ROM files...

Page 2 of 5 All times are UTC - 7 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/