Offline
San Francisco Bay Area

Hey all, I have an EMS 64M flash cart that I've had for about five years now, and recently this weird problem arose after not using my Gameboy for about a month. When I boot up LSDJ on it, it fails at the ROM check. RAM check is fine. So, I extracted my save and reflashed the ROM with a fresh LSDJ copy - same error. Just to check to make sure the ROM chip didn't fail, I flashed another game on it and it worked fine, no problems saving and all. At some point I reflashed the cartridge with a completely blank ROM that overwrote the entire bank, then flashed LSDJ aaand still nope. Can't seem to find any information about this, anyone know if the cart is a goner for LSDJ? It's just a weird issue considering LSDJ is the only thing that has problems with it.

Oh, and before it's asked, I also cleaned the pins very thoroughly

Last edited by Kal (Dec 16, 2018 9:15 am)

Offline
San Francisco Bay Area

Hm, nobody has an idea of the problem?

Offline
Bratislava, Slovakia

I have EMS 64M (from Nonfinite electronics) since 2011 and i have no problems with it, even backup battery is still first, at first page is only LSDJ and at second some additional chiptune tools and even games. Little problem was when i upgraded to Windows 10, because drivers are not MS certified and must be installed on that special boot mode for betatesting. I backup my LSDJ tracks monthly and try if everything is loaded fine in emulator BGB

What the heck is ROM check? I personally think that EMS 64M flash cartridge is rock-solid made because i have had no issues with it, but you can *probably* try other Gameboy if same happens, i sometimes also switch cartridges between mine DMGs smile

Offline
NUMBSKULL

The rom check is something LSDJ does the first time the cart boots. My guess is that some issue only affecting higher sectors (like a bad sector, or possibly pins becoming desoldered or something). LSDJ is one of only a few roms that use 1mb flash storage, and the only one I know of that actually attempts to verify the rom image.

Was the rom you flashed the one from here? https://catskull.net/erase-an-ems-64-us … -cart.html

You could try flashing that rom, then dumping it again and comparing the roms in a hex editor to make sure it's all 1's and no 0's. You could also do the same thing but change the rom to write all 0's and do the same thing. My guess is somewhere near the end of the dumped rom, you'll see bad data.

Offline
Bratislava, Slovakia

That linked article is excellent, but formulation is not accurate, because ROM cannot be rewritten, maybe eprom or these flash nand technologies. During my time with LSDJ i had once occurance, where one track was not loaded properly, it was mistaked in some patterns, but it was battery in my gameboy, when i changed it to new all was loaded properly, luckily.

Last edited by martin_demsky (Dec 19, 2018 7:19 pm)

Offline
Sweeeeeeden
martin_demsky wrote:

but formulation is not accurate, because ROM cannot be rewritten, maybe eprom or these flash nand technologies.

In context, it's correct usage. Even though the flash memory can be rewritten, it works as a ROM for the most of the time. Even EPROM means electrically programmable read-only memory, which is an apparent oxymoron. But the point is that it fills the function that a ROM would normally fill, and is only seldom updated.

Offline
Bratislava, Slovakia

During my time at electrotechnical high school my teacher told me that rom can be written only once, and eprom rewritten also only once (Erasable Programmable Read-Only Memory), so logically rom chips are used for pernament things on computer boot, like core of OS, basic interpreter, core routines to communicate with basic devices like disk drives, tapes, or printers on 8255 parallel port etc.

But i know what U mean Nitro smile))

And sorry for little offtopic, i hope that Kal has found solution to his question.

Last edited by martin_demsky (Dec 20, 2018 11:26 am)

Offline
San Francisco Bay Area
catskull wrote:

The rom check is something LSDJ does the first time the cart boots. My guess is that some issue only affecting higher sectors (like a bad sector, or possibly pins becoming desoldered or something). LSDJ is one of only a few roms that use 1mb flash storage, and the only one I know of that actually attempts to verify the rom image.

Was the rom you flashed the one from here? https://catskull.net/erase-an-ems-64-us … -cart.html

You could try flashing that rom, then dumping it again and comparing the roms in a hex editor to make sure it's all 1's and no 0's. You could also do the same thing but change the rom to write all 0's and do the same thing. My guess is somewhere near the end of the dumped rom, you'll see bad data.

Thank you all for your replies! I reflashed the blank ROM before, but I did not think to compare it in a hex editor. Thank you for the idea, I'll be sure to check and report back here.

I also had another idea, of putting lsdj on the second bank to see if that would help solve the issue. As I stated before, it is a very weird issue and I don't think anyone else has had the same problem from what I can find. I've been using LSDJ on these carts for 6 years now, no problem. I have another cart somewhere so all is well anyway, but I prefer having two cartridges because some of my projects use 2 gameboys(or I'll have a game on one and LSDJ on the other, makes it easier)

Offline
IL, US - also known as d_strct

When in doubt on things like this, always trust nitro, even over college professors. Dude knows his stuff

Offline
San Francisco Bay Area

Alright, update:

Dumped the ROM, files were EXACTLY identical.

Dude, what the heck?? It should work since there's no problem with the ROM -- So why isn't it?

Anyone have a clue, I dont want to give this up o.o

Anyone I could contact who might better be able to diagnose the issue?

Last edited by Kal (Dec 26, 2018 11:48 am)

Offline
San Francisco Bay Area

UPDATE: I have fixed the issue!


Simply enough, all it took was me uploading an older sav file.

I wonder why the sav file was messing up the ROM check??

Now THAT is a weird issue.

Anyone with the same issue I've had - clear or revert the sav to an older version.

Sadly, I lost a couple weeks of progress, but it's something I can get back to with some time. I should start backing up more than once a month..

Offline
Bratislava, Slovakia

My advice, remove battery from EMS cart for an hour/or change to new, if still occurs and you have second Gameboy, try cartridge on this, if even on this fails, you have probably only option, send an e-mail to LSDJ author Johan Kotlinski. If all three things fails, there is probably some nasty ghost in the cartridge.

You may also write to manufacturer of the cartridge but i dont know what company is EMS, i have bought mine from nonfinite electronics, and even at kitch bent it is out of stock, so probably support is not available.

Last edited by martin_demsky (Dec 26, 2018 12:11 pm)

Offline
Sweeeeeeden
e.s.c. wrote:

When in doubt on things like this, always trust nitro, even over college professors. Dude knows his stuff

To be fair, he's technically correct. (The best kind of correct as some people say.) But the use of the word ROM is colloquially acceptable in the context, and arguing that it's absolutely wrong, in my opinion becomes pretty much a hypercorrection.

Here's the deal with the checksum check: The check is done whenever LSDj detects an incorrect signature in the save data under the assumption that this also means that the cartridge is being used for the first time. But this also means that the check is performed if the save RAM got corrupted. And it also means that if you write a working save file to SRAM, LSDj considers the cartridge to already be initialized and skips the check. So it's possible both to get false negatives and false positives compared to the intended outcome of the test.

But what's more, the checks relies on a particular behavior in the memory mapper (MBC) on the cartridge. A typical Gameboy cartridge ill expose two 16k areas, one that will always be bank 0, and one where the program can select any ROM bank. However older MBCs (MBC1-3) would select 1 if you asked it to select bank 0, because selecting bank 0 would mean that the same ROM bank is visible in two different places in the memory map. The newer MBC5 does not have this behavior, and selects bank 0 when asked to. LSDj's checksum relies on the fact that bank 0 is selected when writing bank 0, which is the newer MBC5 behavior.

Some emulators, as well as some flashcarts, implement the MBC1-3 behavior, which also causes this error. The latest version of LSDj should fix this so it works on either type of cartridge, so upgrading might be a good idea.

So the question is, which type does your EMS64 cart behave as? Here's a ROM for testing this. It will also test the whole ROM image for corruption, but that's not what's interesting here. You're looking for what it says after MBC type. Could you please write this to your cartridge and see what it says after MBC type? If it says MBC1/3 that explains the mystery. If it says MBC5, then it truly is a mystery.

http://www.gg8.se/temp/verifyrom-mbctest.zip

Btw, if you thought to make a backup of the RAM data before writing new data to the cartridge, I might be able to recover the songs that were ost.

Offline
IL, US - also known as d_strct

Lol, i know. Just meant within the chip realm you'd be more likely to be correct than a college professor. Except maybe professor little-scale (depending on the specific hardware/software) smile