Mapper details: ReproCartridgeV1/V2 or Repro Factory V1/V2

Por Bengalack

Paladin (747)

Imagen del Bengalack

29-01-2023, 19:25

Opening the SMW User Manual I read "To get full save functions simply load the rom in any free slot and select Repro factory V1 as the mapper type". Checking openmsx the closest I find is ReproCartridgeV1 and ReproCartridgeV2, so I assume it's the same. Where can I find more information about these mappers?

Login sesión o register para postear comentarios

Por Daemos

Prophet (2063)

Imagen del Daemos

29-01-2023, 20:56

its basically a SCC+ mapper onto which you can flashwrite. Same as using a MFR+SCC or carnivore that is still flashable when running the program.

The game you are reffering to saves a portion of RAM by flashing it to a free block at the end of the flashrom. Problem is that not much mappers support writing and having SCC + more then the usual 512K of data. The Reprofactory mapper does just that. It is huge 2Mb in size with SCC support and RW.

Por Bengalack

Paladin (747)

Imagen del Bengalack

29-01-2023, 21:05

Thanks. Sounds nice and convenient.

But I guess it would be ideal if the details could be listed here: https://www.msx.org/wiki/MegaROM_Mappers

... And looking at that page, it becomes unclear to me what a SCC+ mapper is. Is it the Snatcher/SD_Snatcher?

It could list up differences between V1 and V2 too.

I just wonder if it is something for me, but I need to know the details to decide :)

Por Daemos

Prophet (2063)

Imagen del Daemos

29-01-2023, 21:13

Not sure about the difference between V1 and V2 but I am sure Manuel knows. Should be very subtle.

SCC+ is indeed the snatcher type.

Por Manuel

Ascended (19463)

Imagen del Manuel

30-01-2023, 00:05

More info about the mappers are in the openMSX implementations Tongue

Por Bengalack

Paladin (747)

Imagen del Bengalack

30-01-2023, 19:27

Ok. At first I didn't find out from the C-code, but after a second try I found some comments in the sources which people may find interesting.

V1:

/******************************************************************************
 * DOCUMENTATION AS PROVIDED BY MANUEL PAZOS, WHO DEVELOPED THE CARTRIDGE     *
 ******************************************************************************
 
   Repro Cartridge version 1 is similar to Konami Ultimate Collection. It
   uses the same flashROM, SCC/SCC+. But it only supports Konami SCC mapper.
 
   Released were cartridges with the following content (at least): only Metal
   Gear, only Metal Gear 2
 
[REGISTER (#7FFF)]
If it contains value 0x50, the flash is writable and the mapper is disabled.
Otherwise, the mapper is enabled and the flash is readonly.
 
- Mapper supports 4 different ROMs of 2MB each, with the KonamiSCC mapper
- Cartridge has a PSG at 0x10, write only
- On I/O port 0x13 the 2MB block can be selected (default 0, so up to 3)
 
******************************************************************************/

And V2:

/******************************************************************************
 * DOCUMENTATION AS PROVIDED BY MANUEL PAZOS, WHO DEVELOPED THE CARTRIDGE     *
 ******************************************************************************
 
   Repro Cartridge version 2 is similar to Konami Ultimate Collection. It
   uses the same flashROM, SCC/SCC+. But 2 PSG's and volume control and
   multiple mappers.
 
   Released were cartridge with the following content: Only Metal Gear, only
   Metal Gear 2, Vampire Killer (original, Castlevania patch, enhanced SCC),
   Usas (original, enhanced), Nemesis 3 (enhanced) and Metal Gear Collection
   (Metal Gear 1 and 2, both in 3 languages)
 
 
[REGISTER (#7FFE)]
Selects the mapper, using bits 0 and 1 (other bits are ignored):
    00 = Konami SCC
    01 = Konami
    10 = ASCII8
    11 = ASCII16
 
[REGISTER (#7FFF)]
If it contains value 0x50, the flash is writable and the mapper is disabled.
Otherwise, the mapper is enabled and the flash is readonly.
 
- Mapper supports 8 different ROMs of 1MB each, with the above mappers.
- Cartridge has a PSG at 0x10 and a PSG at 0xA0, both write only
- On I/O port 0x33 the 1MB block can be selected (default 0, so up to 7)
- On I/O port 0x31 the volume can be selected of the 3 sound chips:
  Bits EEIIISSS:  EE(7-6) = PSG#10, III(5-3) = PSG#A0, SSS(2-0) = SCC
  Default value is &B10000010. 0 means silent. So, clone PSG is silent by
  default.
 
Note: there is also a version 1 of this hardware, with the following
differences:
- Only Konami SCC mapper (no register at #7FFE)
- No volume control register behind port #31
- Main bank register is behind port #13 instead of #33
- Main block size is 2MB instead of 1MB
- No extra PSG at 0xA0 (but the PSG at #10 is there)
 
******************************************************************************/

Por Bengalack

Paladin (747)

Imagen del Bengalack

30-01-2023, 19:30

Wonder why it is called "REGISTER (#7FFE)" - it seems like this is just the address :S

Por Grauw

Ascended (10768)

Imagen del Grauw

30-01-2023, 20:16

It is a memory-mapped register (like an I/O port, but on a memory address). That is, the hardware responds to reads from and writes to the address by enabling functions, changing behaviour, switching memory banks, producing sound, etc.

As opposed to a plain RAM or ROM address which has no side effects other than storing and returning a value and not doing anything special with it.

Other examples of memory-mapped registers are the secondary slot selection register, the SCC sound registers, and the bank select registers of pretty much all ROM mappers.

Some processors other than Z80 (e.g. the 6502 used in the NES and the C64) do not even have a concept of I/O ports, and all hardware is accessed through memory-mapped registers only.

On MSX there is a mix of I/O ports and memory-mapped I/O. Ports are a bit easier to build in hardware, while memory-mapped has the advantage that due to the slots system you can have more than one of the same cartridge present without conflicting. This is why you can plug in 4 SCCs (memory-mapped I/O) at once and play music on all of them to get 20 SCC channels in total, while you can have only 1 Philips Music Module (ports I/O) in your system.

Por Bengalack

Paladin (747)

Imagen del Bengalack

30-01-2023, 21:02

Grauw wrote:

It is a memory-mapped register (like an I/O port, but on a memory address). That is, the hardware responds to reads from and writes to the address by enabling functions, changing behaviour, switching memory banks, producing sound, etc.

As opposed to a plain RAM or ROM address which has no side effects other than storing and returning a value and not doing anything special with it.

Other examples of memory-mapped registers are the secondary slot selection register, the SCC sound registers, and the bank select registers of pretty much all ROM mappers.

Some processors other than Z80 (e.g. the 6502 used in the NES and the C64) do not even have a concept of I/O ports, and all hardware is accessed through memory-mapped registers only.

On MSX there is a mix of I/O ports and memory-mapped I/O. Ports are a bit easier to build in hardware, while memory-mapped has the advantage that due to the slots system you can have more than one of the same cartridge present without conflicting. This is why you can plug in 4 SCCs (memory-mapped I/O) at once and play music on all of them to get 20 SCC channels in total, while you can have only 1 Philips Music Module (ports I/O) in your system.

Great, thanks a lot. All this makes perfect sense. Limited ports vs memory-mapping per slot or subslot: haven't really considered that significant difference before Smile