mamedev / mame

MAME
https://www.mamedev.org/
Other
8.06k stars 2.01k forks source link

v.smile mess in sysroms #6137

Closed bmx closed 4 years ago

bmx commented 4 years ago

I don't know how to sort this mess, but:

vsmile.zip sha1sum vsmilebios.bin 11f77c4973d29c962567390e41879c86a759c93b ^ this dump is not in a correct byte order. Once bytes swapped: sha1sum vsmilebios.rev.bin 5c8d1eada1b6b545555b8d2b09325d7127681af8

vsmilef.zip sha1sum sysrom_france 5c8d1eada1b6b545555b8d2b09325d7127681af8

Well, when we (bushing and i) dumped our consoles, we notices it was the same exact sysrom (he bought his in a US mall, i bought mines in a french one). Next, i dumped the vsmile pocket one, and it was different, a few bytes different. That's because if was a newer sysrom.

There is no region sysrom, but a number of versioned ones: v1.00 7bcf761b5885c8b1524607aabaf364b4559c8cc (klaus's german one) v1.02 5c8d1eada1b6b545555b8d2b09325d7127681af8 (found in all fat v.smile) v1.03 5f2fd211b6ff3a6f5121b14adc6bbf4f49e89f33 (found in my v.smile pocket)

The noticeable difference is a fix in the italian messages. and maybe to compensate for the pocket hardware differences (one controller, lcd timings and so on?

Could mame hashes and region load be fixed one for all with this correct version scheme?

1.02 and 1.03 were dumped by running a custom made cartridge and a few insn to send the sysrom content to a serial port (controller port). 1.00 (TV1.0) was dumped by destroying a german vsmile the hard way.

ghost commented 4 years ago

That makes sense, and yes, one of them needs byteswapping (well, removing, since as you say, once correctly swapped it matches one of the others)

I can incorporate this information into a future PR, or if you want to add your new dump, you can do it. (I can't add your 1.03 myself as you haven't provided it)

btw, I seem to recall certain games contain an extra copy of the BIOS rom as part of the game ROM too, I don't know if those have been searched for other possible revisions.

If 1.02 and 1.00 are for the same type of system they should be one system (with selectable BIOS revision) If 1.03 is only in the Pocket units then it should be a different system.

bmx commented 4 years ago

thx, https://vkart.pagesperso-orange.fr/sysrom.pocket_fr.dump (here since Apr 2010, and given to TE around that time, sic).

Well, it took me 30s to check the games having a copy of it: (for z in *zip;do unzip -p $z | strings -el | tail;done)

Most are 1.0, my own lionking is 1.01 (yay), the released one is 1.3 (!) as well as a few others.

No, i don't think it's system dependent. After disassembling the 1.03, i didn't noticed anything else than a string constant update. it's just a firmware revision thing, based on console manufacturing date. The pocket being a later product, it has the latest revision.

The Lion King thing is interesting though.

ghost commented 4 years ago

it makes me wonder if there's a method whereby either the cart or BIOS gets reprogrammed depending on which is the newest when you plug one in, although I've never looked for any code to do this. It's quite odd they have these duplicate copies otherwise tho.

bmx commented 4 years ago

sysrom is ... rom. When the card is inserted, the code can choose what to map and where, and use it or not. For the carts, there is a WR signal, but so far, the only cart using it is studio, to save the design to a battery backed ram chip. the WR is not routed to any of the flash chips.

ghost commented 4 years ago

https://github.com/mamedev/mame/pull/6142 anyway

bmx commented 4 years ago

perfect! compiled, tested, running fine.