Forums

Sega Master System / Mark III / Game Gear
SG-1000 / SC-3000 / SF-7000 / OMV
Home - Forums - Games - Scans - Maps - Cheats - Credits
Music - Videos - Development - Hacks - Translations - Homebrew

View topic - Mapping hardware in Codemasters SMS cartridges

Reply to topic
Author Message
  • Joined: 21 Apr 2000
  • Posts: 598
  • Location: Newcastle upon Tyne, England
Reply with quote
Mapping hardware in Codemasters SMS cartridges
Post Posted: Thu Sep 21, 2000 9:20 pm
Here's the pinout of the Codemasters mapping chip if anyone is interested. It's a Texas Instruments PAL16R4 programmable array logic device.

<img src="http://www.mikeg2.freeserve.co.uk/masterful/MS976B.gif">

The logic in the lower part of the picture is implemented using a single 4011 (CMOS quad 2-input NAND gate) chip.

(Thanks to Maxim for lending me his Cosmic Spacehead cartridge!)


Mike
MS976B.gif (4.87 KB)
Attachment fairy
MS976B.gif

  View user's profile Send private message Visit poster's website
  • Joined: 12 Jul 2005
  • Posts: 55
Reply with quote
Post Posted: Fri Sep 22, 2000 3:40 am
Quote
> Here's the pinout of the Codemasters mapping chip if anyone is interested. It's a Texas Instruments PAL16R4 programmable array logic device.
I'm interested, of course. I guess other people here are too ! =)



By looking to this picture, I notice that the mapper chip doesn't receive address lines lower than A14, doesn't receive /CE
from SMS slot and uses /MREQ instead. This means that any write to at least one of the ROM area frames will modify it's
internal 4-bit register. With the pins used by the mapper it's possible to implement memory banks in all 3 banks. But my
guess is that it' s a one bank only mapper. Probably it's current page is changed by writting the page number to the
changeable frame address space. (Just like MSX Megaroms)

Quote
> The logic in the lower part of the picture is implemented using a single 4011 (CMOS quad 2-input NAND gate) chip.

I guess this guy (4011) keeps the ROM outside the internal RAM address space (frame 3)

Quote
> (Thanks to Maxim for lending me his Cosmic Spacehead cartridge!)

Is this game already dumped ? I can try to copy it's mapper if I get it's ROM ...

Quote
>
> Mike

Cya ...
and thanks for sharing this stuff ... =)
  View user's profile Send private message
  • Joined: 24 Jun 1999
  • Posts: 1732
  • Location: Paris, France
Reply with quote
Post Posted: Fri Sep 22, 2000 7:33 am
How the mapper work on the software side was not already entirely figured out.
But the game uses a few other weird features unrelated to its mapper and which are a pain to emulate.
I am now waiting to receive a package from Mike and I'll do some test with the modified ROM on a real Master System and see what happens.
  View user's profile Send private message Visit poster's website
  • Joined: 12 Jul 2005
  • Posts: 55
Reply with quote
Post Posted: Fri Sep 22, 2000 3:34 pm
Quote
> How the mapper work on the software side was not already entirely figured out.
> But the game uses a few other weird features unrelated to its mapper and which are a pain to emulate.
> I am now waiting to receive a package from Mike and I'll do some test with the modified ROM on a real Master System and see what happens.

Zoop, if you want me to help with this mater, (hardware side) just send me a dump of the game ROM ... =)
I'll try to re-make the mapper with discrete logic chips.

Cya ...
  View user's profile Send private message
  • Site Admin
  • Joined: 25 Oct 1999
  • Posts: 2029
  • Location: Monterey, California
Reply with quote
Post Posted: Fri Sep 22, 2000 5:19 pm
Quote
> How the mapper work on the software side was not already entirely figured out.

Having a quick glance at things, it looks like they use $8000 as the paging address. Usually it'll write a byte between 0 and $f in $8000 and call some address in frame 2 (and then of course I can't see what's there yet).


It doesn't look like you can read it back from $8000, but I do see a lot of things like

ld a,($bfff)
push af

...

pop af
ld ($8000),a

so I guess $bfff is the address you can read it from.
That's probably what you figured out too.


What puzzles me is, looking at the pin outs of the mapper chip, I don't see how it can tell $bfff is being read from as opposed to any other address in the $8000-$bfff range. I also don't see what the NAND gates at the bottom do.


Quote
> But the game uses a few other weird features unrelated to its mapper and which are a pain to emulate.

....what sort of features?

Quote
> I am now waiting to receive a package from Mike and I'll do some test with the modified ROM on a real Master System and see what happens.

Modified rom... are you going to try to patch it to use the standard paging registers?
  View user's profile Send private message Visit poster's website
  • Joined: 24 Jun 1999
  • Posts: 1732
  • Location: Paris, France
Reply with quote
Post Posted: Fri Sep 22, 2000 9:25 pm
Quote
> Having a quick glance at things, it looks like they use $8000 as the paging address.

0x0000, 0x4000 and 0x8000 for the different frames, so nothing complicated.

Quote
> It doesn't look like you can read it back from $8000, but I do see a lot of things like
> ld a,($bfff)
> push af
[..]
Quote
> so I guess $bfff is the address you can read it from.
> That's probably what you figured out too.
> What puzzles me is, looking at the pin outs of the mapper chip, I don't see how it can tell $bfff is being read from as opposed to any other address in the $8000-$bfff range.

Maybe it support all of them. Anyway let me point out the picture Mike posted is from Cosmic Spacehead which doesn't make any read to the mapper to maybe it is slighty different in Fantastic Dizzy.

Quote
>> But the game uses a few other weird features unrelated to its mapper and which are a pain to emulate.
> ....what sort of features?

Overscan video mode, and the fact it sometimes doesn't write properly on the VRAM which is pissing me off @!# :)

Quote
>> I am now waiting to receive a package from Mike and I'll do some test with the modified ROM on a real Master System and see what happens.
> Modified rom... are you going to try to patch it to use the standard paging registers?

Yeah I did it (I wanted to see how it behiaved on other emulators, and it's usually worse because they don't support overscan.
  View user's profile Send private message Visit poster's website
  • Site Admin
  • Joined: 25 Oct 1999
  • Posts: 2029
  • Location: Monterey, California
Reply with quote
Post Posted: Sat Sep 23, 2000 1:34 am
Quote
> > What puzzles me is, looking at the pin outs of the mapper chip, I don't see how it can tell $bfff is being read from as opposed to any other address in the $8000-$bfff range.

> Maybe it support all of them. Anyway let me point out the picture Mike posted is from Cosmic Spacehead which doesn't make any read to the mapper to maybe it is slighty different in Fantastic Dizzy.

Ahh, yes, I was assuming that they all used the same mapper but there's no reason for me to have thought that. I was looking at the micro machines dump.

I would assume there'd have to be more pins connected to tell if $bfff was being addressed, unless there's some other features of the sms bus that I don't know about.

Quote
> Overscan video mode, and the fact it sometimes doesn't write properly on the VRAM which is pissing me off @!# :)

oh yeah, -that-

Quote
> Yeah I did it (I wanted to see how it behiaved on other emulators, and it's usually worse because they don't support overscan.
  View user's profile Send private message Visit poster's website
  • Joined: 14 Aug 2000
  • Posts: 742
  • Location: Adelaide, Australia
Reply with quote
Codemasters logic - for those who wanted to know
Post Posted: Mon Sep 25, 2000 8:14 am
Quote
> Here's the pinout of the Codemasters mapping chip if anyone is interested. It's a Texas Instruments PAL16R4 programmable array logic device.

>

> The logic in the lower part of the picture is implemented using a single 4011 (CMOS quad 2-input NAND gate) chip.

> (Thanks to Maxim for lending me his Cosmic Spacehead cartridge!)

>
> Mike

the NAND gates assert the ROM_CE only when CE (cart enable) is asserted for any address where A14 and A15 both aren't 1, i.e. for page 3
of the memory which is occupied by the 8kB of RAM (mirrored). it solve the pain-in-the-ass issue that RAM_CE and cart enable are not
mutually exclusive - CE is asserted for the entire address range.

i can see why they used the RD for the OE instead of using the provided OE's (EXM1 and EXM2) but who cares...

a s out.
  View user's profile Send private message
Reply to topic



Back to the top of this page

Back to SMS Power!