Page 1 of 1

Quackshot!

Posted: Fri Jan 08, 2021 4:56 pm
by hiddenbyleaves
Can someone confirm that Quackshot works?

I've tried the rom from the everdrive packs and from emuparadise and get a black screen on both.

Re: Quackshot!

Posted: Fri Jan 08, 2021 5:24 pm
by Gryzor
Yes, Quackshot works flawlessly here.
Seems you’re not using the proper ROM file.

Re: Quackshot!

Posted: Fri Jan 08, 2021 8:42 pm
by darklpopman
Revision A only shows a black screen. The one in the everdrive pack (Revisions/USA) works.

Re: Quackshot!

Posted: Tue Jan 26, 2021 10:39 pm
by meauxdal
As of the latest update, Rev A still just shows a black screen.
CRC32 5DD28DD7 - https://datomatic.no-intro.org/?page=sh ... =32&n=1764

The following versions do appear to work normally:
https://datomatic.no-intro.org/?page=sh ... =32&n=1059
https://datomatic.no-intro.org/?page=sh ... =32&n=1060

Re: Quackshot!

Posted: Wed Jan 27, 2021 3:34 pm
by meauxdal
I am creating an issue for this on the core GitHub. I've never done this before so it's very possible I'll screw it up somehow, but I figure it will at least get seen that way.

Re: Quackshot!

Posted: Wed Jan 27, 2021 4:18 pm
by aberu
Said this on github too, but saying it here...

https://github.com/ekeeke/Genesis-Plus- ... art.c#L378

This specific rom has it's own exception in emulators for it to work, it's memory mapping isn't standard.

Code: Select all

  /* support for Quackshot REV 01 (real) dump */
  if (strstr(rominfo.product,"00004054-01") && (cart.romsize == 0x80000))
  {
    /* $000000-$0fffff: first 256K mirrored (A18 not connected to ROM chip, A19 not decoded) */
    for (i=0x00; i<0x10; i++)
    {
      /* $200000-$3fffff: mirror of $000000-$1fffff (A21 not decoded) */
      m68k.memory_map[i].base = m68k.memory_map[i + 0x20].base = cart.rom + ((i & 0x03) << 16);
    }

    /* $100000-$1fffff: second 256K mirrored (A20 connected to ROM chip A18) */
    for (i=0x10; i<0x20; i++)
    {
      /* $200000-$3fffff: mirror of $000000-$1fffff (A21 not decoded) */
      m68k.memory_map[i].base = m68k.memory_map[i + 0x20].base = cart.rom + 0x40000 + ((i & 0x03) << 16);
    }
  }