Skip to content

Commit

Permalink
Add mapper ocornut#49 MAPPER_GG_18_in_1_00xx for "18 in 1 - Super G…
Browse files Browse the repository at this point in the history
…ames Collection [Columns] (Unl)" and "Super 18 in 1 - 1993 New Game [Columns]"

Scroll down to see information on each of the supported multicarts

---

I've been calling this "18 in 1 - Super Games Collection [Columns] (Unl)" but the actual name is unclear

The label is titled "Super Games Collection"

The menu is titled "18 IN 1"

The first entry in the first menu screen is "COLUMNS"

This is a 512KB Game Gear multicart containing a mix of 32KB Game Gear games and 32KB SMS games and a menu system with 18 entries and 15 distinct games; they are GG: Columns, Pengo, Woody Pop, SMS: Great Baseball, Astro Flash, Seishun Scandal, Spy vs. Spy, Pit Pot, Teddy Boy, Ghost House, Satellite-7, Hang-On, Great Soccer, Super Tennis, Machine Gun Joe

The label has a game list with both Traditional Chinese and English names for each menu item. Spelling is notably awful for the English part. The menu system spelling is quite a bit better though English-only

Label text: (transcription or translation errors mine)

𝒮𝓊𝓅ℯ𝓇 𝒢𝒶𝓂ℯ𝓈 𝒞ℴ𝓁𝓁ℯ𝒸𝓉𝒾ℴ𝓃
⒈ 寶石方塊COLUMS (i.e. "gem cube")
⒉ 企鵝推冰PENGO (i.e. "penguin pushing ice")
⒊ 玩具撞磚WOODY POP (i.e. "toy brick")
⒋ 棒球BASE BALL (i.e. "baseball")
⒌ 空中戰機AS TRO FLASE (i.e. "aerial fighter")
⒍ 青春英雄MY HERO (i.e. "youth fighter")
⒎ 諜對諜SPY V.S. SPY (i.e. "spy vs. spy")
⒏ 陷阱遊戲PIT POT (i.e. "trap game")
⒐ 泰迪男孩( 頗皮童)TEDDY BOY (i.e. "teddy boy (puppy boy)")
⒑ 鬼屋GHOST HOUSE (i.e. "haunted house")
⒒ 雷鳥STAELLILE (i.e. "thunder bird")
⒓ 越野機車HANG NO (i.e. "off-road bike")
⒔ 足球SOCCER (i.e. "football"/"soccer")
⒕ 網球TENNIS (i.e. "tennis")
⒖ 機槍大戰MACHING GUN (i.e. "machine gun battle")
⒗ 20雙撞磚王ARKANOID (perhaps "20 double brick king"?)
⒘ 超級企鵝EASY PENGO (i.e. "super penguin")
⒙ 恐怖鬼屋GHOST HOUSE (i.e. "terrifying haunted house")

NOTE: The menu uses a movable harpoon cursor "⇀" to mark the current selection. Its initial position is shown in each screen below.

Contents of the first menu screen:

```
      18 IN 1

 PUSH ↑.↓.1.2.START

  01.COLUMNS        [0x0002=0x00]; it's part-02-columns-32k.gg
  02.PENGO          [0x0001=0x05]; it's part-01-pengo-32k.gg
  03.WOODY POP      [0x0003=0x03]; it's part-03-woody-pop-32k.gg
  04.BASE BALL      [0x001E=0x00]; it's part-0e-Great Baseball [JP] (JP)-32k.sms
 ⇀05.ASTRO FLASH    [0x0014=0x05]; it's part-04-astro-flash-32k.sms
  06.MY HERO        [0x0015=0x00]; it's part-05-Seishun Scandal (JP)-32k.sms
  07.SPY VS SPY     [0x0016=0x00]; it's part-06-Spy vs Spy (JP,KR)-32k.sms
  08.PIT POT        [0x001F=0x00]; it's part-0f-Fushigi no Oshiro Pit Pot (JP,KR)-32k.sms
  09.TEDDY BOY      [0x0018=0x00]; it's part-08-Teddy Boy Blues (JP)-32k.sms
  10.GHOST HOUSE    [0x0019=0x02]; it's part-09-ghost-house-32k.sms
```

Contents of the second menu screen:

```
      18 IN 1

 PUSH ↑.↓.1.2.START

  11.STAELLITE 7    [0x001A=0x00]; it's part-0a-Satellite 7 (JP)-32k.sms
  12.HANG ON        [0x001B=0x00]; it's part-0b-Hang On (EU,AU,BR,DE,IT)-32k.sms
  13.SOCCER         [0x001C=0x00]; it's part-0c-Great Soccer (JP)-32k.sms
 ⇀14.TENNIS         [0x001D=0x00]; it's part-0d-Super Tennis (US,EU,DE)-32k.sms
  15.MACHINE GUN    [0x0017=0x00]; it's part-07-Comical Machine Gun Joe (JP)-32k.sms
  16.ARKANOID       [0x0003=0x14]; it's part-03-woody-pop-32k.gg
  17.EASY PENGO     [0x0001=0x14]; it's part-01-pengo-32k.gg
  18.GHOST          [0x0019=0x14]; it's part-09-ghost-house-32k.sms
```

The mapper seems to work by writing a byte to one of the low 32 addresses (0x0001...0x001F), with the 0x0010 bit specifying SMS-GG mode and the low 4 bits selecting the game. Games that have multiple trainings write different byte values for each training, and Astro Flash writes 0x05. Some games have been modified to interact with RAM-based trainer code and/or to obscure original authorship.

The entire multicart is readable in one go using a very simple dumping script:

```
// 18 in 1 - Super Games Collection [Columns]
for (local page = 0; (page * 0x8000) < rom_size; page += 1) {
    cpu_write(d, page & 0x0F, page >> 4);
    cpu_read (d, 0, 0x8000);
}
```

The mapper appears to be build using just a few NAND gates and some D flip-flops.

ROM fingerprint info:

512K 18 in 1 - Super Games Collection [Columns] (Unl).gg
Checking for export header with matching CRC... NO
sha256:b46635b8c87199f8e3f05008ea39eaac00009737947822e946c29cc9cc032f7e 18 in 1 - Super Games Collection [Columns] (Unl).gg
sha1:2af084c8d60c31c66134aa940d0dd7362b89fbd2 18 in 1 - Super Games Collection [Columns] (Unl).gg
md5:c9f96b821074d186c15dfbad04b0dedd 18 in 1 - Super Games Collection [Columns] (Unl).gg
mekacrc:6AAE6866CB4814F3 18 in 1 - Super Games Collection [Columns] (Unl).gg
crc32:81818f55 18 in 1 - Super Games Collection [Columns] (Unl).gg

32K 18 in 1 - Super Games Collection [Columns] (Unl)/part-00-menu-and-pengo-remnants-32k.gg
Checking for export header with matching CRC... NO
sha256:e64cc5c5308d94bc292878a49ac0d47d67b704a006ccd27b9db3c662c89af88b 18 in 1 - Super Games Collection [Columns] (Unl)/part-00-menu-and-pengo-remnants-32k.gg
sha1:5e7059001651a09e9350be9461dfb98cc415dc1b 18 in 1 - Super Games Collection [Columns] (Unl)/part-00-menu-and-pengo-remnants-32k.gg
md5:b8fd7243db3507a79f55207795536309 18 in 1 - Super Games Collection [Columns] (Unl)/part-00-menu-and-pengo-remnants-32k.gg
mekacrc:458A4C66FE7CAA5B 18 in 1 - Super Games Collection [Columns] (Unl)/part-00-menu-and-pengo-remnants-32k.gg
crc32:2e46d85d 18 in 1 - Super Games Collection [Columns] (Unl)/part-00-menu-and-pengo-remnants-32k.gg

32K 18 in 1 - Super Games Collection [Columns] (Unl)/part-01-pengo-32k.gg
Checking for export header with matching CRC... NO
sha256:fb19e89fafeba20a1fd976465f28d7f0623e321239be9b96b4cd72ddd7d954b4 18 in 1 - Super Games Collection [Columns] (Unl)/part-01-pengo-32k.gg
sha1:b48bd6bec0cdde7b1f6cb10364e027a0e3a03a55 18 in 1 - Super Games Collection [Columns] (Unl)/part-01-pengo-32k.gg
md5:630e6ca44a8933c508691baaa5d2769c 18 in 1 - Super Games Collection [Columns] (Unl)/part-01-pengo-32k.gg
mekacrc:7C42713471EBDD64 18 in 1 - Super Games Collection [Columns] (Unl)/part-01-pengo-32k.gg
crc32:cc13c408 18 in 1 - Super Games Collection [Columns] (Unl)/part-01-pengo-32k.gg

32K 18 in 1 - Super Games Collection [Columns] (Unl)/part-02-columns-32k.gg
Checking for export header with matching CRC... NO
sha256:dccfe80f1ca1f10ad68c5b930c12623394cdd8f712fdaf9706c374ab938aa38a 18 in 1 - Super Games Collection [Columns] (Unl)/part-02-columns-32k.gg
sha1:52493c55c2b3815d960886a70a416df685823307 18 in 1 - Super Games Collection [Columns] (Unl)/part-02-columns-32k.gg
md5:f8c12df1869aa3e4c363b9d7dc308790 18 in 1 - Super Games Collection [Columns] (Unl)/part-02-columns-32k.gg
mekacrc:29E34504572F0322 18 in 1 - Super Games Collection [Columns] (Unl)/part-02-columns-32k.gg
crc32:5a1e2db6 18 in 1 - Super Games Collection [Columns] (Unl)/part-02-columns-32k.gg

32K 18 in 1 - Super Games Collection [Columns] (Unl)/part-03-woody-pop-32k.gg
Checking for export header with matching CRC... NO
sha256:bf73da437483edfc250ca6174258edf73118eca624fba2a1b910d9e275935db7 18 in 1 - Super Games Collection [Columns] (Unl)/part-03-woody-pop-32k.gg
sha1:00752ac2ad89e4006cc2a1a3f18336d786d66b0e 18 in 1 - Super Games Collection [Columns] (Unl)/part-03-woody-pop-32k.gg
md5:3dfa83da24646abcc0794f8053412a30 18 in 1 - Super Games Collection [Columns] (Unl)/part-03-woody-pop-32k.gg
mekacrc:932C48DEDF130029 18 in 1 - Super Games Collection [Columns] (Unl)/part-03-woody-pop-32k.gg
crc32:b16eab57 18 in 1 - Super Games Collection [Columns] (Unl)/part-03-woody-pop-32k.gg

32K 18 in 1 - Super Games Collection [Columns] (Unl)/part-04-astro-flash-32k.sms
Checking for export header with matching CRC... NO
sha256:bf22972cc6e88a0eb3a6f2e483fa769ba4a5573edfe421dbfa75a6697053bef7 18 in 1 - Super Games Collection [Columns] (Unl)/part-04-astro-flash-32k.sms
sha1:94a0c358ef4e4c13ae2dc03558a0d5f46a28efd9 18 in 1 - Super Games Collection [Columns] (Unl)/part-04-astro-flash-32k.sms
md5:9d9aac5b483d3e750ba120959aaaac20 18 in 1 - Super Games Collection [Columns] (Unl)/part-04-astro-flash-32k.sms
mekacrc:2D22172DD72A88E4 18 in 1 - Super Games Collection [Columns] (Unl)/part-04-astro-flash-32k.sms
crc32:ea5692a8 18 in 1 - Super Games Collection [Columns] (Unl)/part-04-astro-flash-32k.sms

32K 18 in 1 - Super Games Collection [Columns] (Unl)/part-05-Seishun Scandal (JP)-32k.sms
Checking for export header with matching CRC... NO
sha256:5c86b5f3531518e20bb875a05e26430aa3fbd3d162164da807826eb4bc4b262c 18 in 1 - Super Games Collection [Columns] (Unl)/part-05-Seishun Scandal (JP)-32k.sms
sha1:6942f38e608cc7d70cf9cc8c13ee8c22e4b81679 18 in 1 - Super Games Collection [Columns] (Unl)/part-05-Seishun Scandal (JP)-32k.sms
md5:fb2ad2524646bd069e3ec1b51fd7eb39 18 in 1 - Super Games Collection [Columns] (Unl)/part-05-Seishun Scandal (JP)-32k.sms
mekacrc:A2297AFAC9472988 18 in 1 - Super Games Collection [Columns] (Unl)/part-05-Seishun Scandal (JP)-32k.sms
crc32:f0ba2bc6 18 in 1 - Super Games Collection [Columns] (Unl)/part-05-Seishun Scandal (JP)-32k.sms

32K 18 in 1 - Super Games Collection [Columns] (Unl)/part-06-Spy vs Spy (JP,KR)-32k.sms
Checking for export header with matching CRC... NO
sha256:e3df51893d16e512cadf3723a58f143dc679127fbe4444662be63fafb4b2a777 18 in 1 - Super Games Collection [Columns] (Unl)/part-06-Spy vs Spy (JP,KR)-32k.sms
sha1:c5e004b34d6569e6e1d99bff6be940f308e2c39f 18 in 1 - Super Games Collection [Columns] (Unl)/part-06-Spy vs Spy (JP,KR)-32k.sms
md5:2a6ee78e2617886fe540dcb8a1500e90 18 in 1 - Super Games Collection [Columns] (Unl)/part-06-Spy vs Spy (JP,KR)-32k.sms
mekacrc:440AA3B0518BF192 18 in 1 - Super Games Collection [Columns] (Unl)/part-06-Spy vs Spy (JP,KR)-32k.sms
crc32:d41b9a08 18 in 1 - Super Games Collection [Columns] (Unl)/part-06-Spy vs Spy (JP,KR)-32k.sms

32K 18 in 1 - Super Games Collection [Columns] (Unl)/part-07-Comical Machine Gun Joe (JP)-32k.sms
Checking for export header with matching CRC... NO
sha256:ea9c74555e551974a681296c41972c1f6ddd7289fed5502f64e35b8527b6dde4 18 in 1 - Super Games Collection [Columns] (Unl)/part-07-Comical Machine Gun Joe (JP)-32k.sms
sha1:33c21d164fd3cdf7aa9e7e0fe1a3ae5a491bd9f5 18 in 1 - Super Games Collection [Columns] (Unl)/part-07-Comical Machine Gun Joe (JP)-32k.sms
md5:2d59b3d27f022b04a597e767e6660ca9 18 in 1 - Super Games Collection [Columns] (Unl)/part-07-Comical Machine Gun Joe (JP)-32k.sms
mekacrc:59868AC9BD4815B4 18 in 1 - Super Games Collection [Columns] (Unl)/part-07-Comical Machine Gun Joe (JP)-32k.sms
crc32:9d549e08 18 in 1 - Super Games Collection [Columns] (Unl)/part-07-Comical Machine Gun Joe (JP)-32k.sms

32K 18 in 1 - Super Games Collection [Columns] (Unl)/part-08-Teddy Boy Blues (JP)-32k.sms
Checking for export header with matching CRC... NO
sha256:42de9fc6028da76b4991ba81b3a666c9ae303e269d8f55c715f6518dcadb8773 18 in 1 - Super Games Collection [Columns] (Unl)/part-08-Teddy Boy Blues (JP)-32k.sms
sha1:fb61c04f30c83733fdbf503b16e17aa8086932df 18 in 1 - Super Games Collection [Columns] (Unl)/part-08-Teddy Boy Blues (JP)-32k.sms
md5:de5d6c9e1349844b74f53caaf2af680b 18 in 1 - Super Games Collection [Columns] (Unl)/part-08-Teddy Boy Blues (JP)-32k.sms
mekacrc:BBE8D843FF8FF6BE 18 in 1 - Super Games Collection [Columns] (Unl)/part-08-Teddy Boy Blues (JP)-32k.sms
crc32:316727dd 18 in 1 - Super Games Collection [Columns] (Unl)/part-08-Teddy Boy Blues (JP)-32k.sms

32K 18 in 1 - Super Games Collection [Columns] (Unl)/part-09-ghost-house-32k.sms
Checking for export header with matching CRC... NO
sha256:5c31df49065f505b5390019b5bb75f1e3fb7ac5f1799cb69d1081ddc1ce082ea 18 in 1 - Super Games Collection [Columns] (Unl)/part-09-ghost-house-32k.sms
sha1:654468a74a1c633ceecfb83e07a88ddf1b53a57b 18 in 1 - Super Games Collection [Columns] (Unl)/part-09-ghost-house-32k.sms
md5:bc9281e171d910e9ac3dadc65eb3c8ce 18 in 1 - Super Games Collection [Columns] (Unl)/part-09-ghost-house-32k.sms
mekacrc:777E31E6ED69940A 18 in 1 - Super Games Collection [Columns] (Unl)/part-09-ghost-house-32k.sms
crc32:8f0284e3 18 in 1 - Super Games Collection [Columns] (Unl)/part-09-ghost-house-32k.sms

32K 18 in 1 - Super Games Collection [Columns] (Unl)/part-0a-Satellite 7 (JP)-32k.sms
Checking for export header with matching CRC... NO
sha256:3e659f15fbcc6511dfeb2112762074a8441479bb33887d196eb343e124d14fe5 18 in 1 - Super Games Collection [Columns] (Unl)/part-0a-Satellite 7 (JP)-32k.sms
sha1:88fc5596773ea31eda8ae5a8baf6f0ce5c3f7e5e 18 in 1 - Super Games Collection [Columns] (Unl)/part-0a-Satellite 7 (JP)-32k.sms
md5:eac6a843975c50e39eb32f764da2a5ac 18 in 1 - Super Games Collection [Columns] (Unl)/part-0a-Satellite 7 (JP)-32k.sms
mekacrc:ABFBCE1810529280 18 in 1 - Super Games Collection [Columns] (Unl)/part-0a-Satellite 7 (JP)-32k.sms
crc32:16249e19 18 in 1 - Super Games Collection [Columns] (Unl)/part-0a-Satellite 7 (JP)-32k.sms

32K 18 in 1 - Super Games Collection [Columns] (Unl)/part-0b-Hang On (EU,AU,BR,DE,IT)-32k.sms
Checking for export header with matching CRC... YES
sha256:0d35d0e232d64e714fa5d07e45acaf01ea9fb5a8f88fe9ac8018719ac2818d6f 18 in 1 - Super Games Collection [Columns] (Unl)/part-0b-Hang On (EU,AU,BR,DE,IT)-32k.sms
sha1:e601257f6477b85eb0b25a5b6d46ebc070d8a05a 18 in 1 - Super Games Collection [Columns] (Unl)/part-0b-Hang On (EU,AU,BR,DE,IT)-32k.sms
md5:2864be0d35269c5030a7f297f70e3ac3 18 in 1 - Super Games Collection [Columns] (Unl)/part-0b-Hang On (EU,AU,BR,DE,IT)-32k.sms
mekacrc:F0A23277115075EF 18 in 1 - Super Games Collection [Columns] (Unl)/part-0b-Hang On (EU,AU,BR,DE,IT)-32k.sms
crc32:071b045e 18 in 1 - Super Games Collection [Columns] (Unl)/part-0b-Hang On (EU,AU,BR,DE,IT)-32k.sms

32K 18 in 1 - Super Games Collection [Columns] (Unl)/part-0c-Great Soccer (JP)-32k.sms
Checking for export header with matching CRC... NO
sha256:b2a524164e1a0a264dc4ac7cb29742293b3384b9369e0ce0cf2ab5ca2b50a1cd 18 in 1 - Super Games Collection [Columns] (Unl)/part-0c-Great Soccer (JP)-32k.sms
sha1:110536303b7bccc193bef4437ba5a9eb6fd4ac8e 18 in 1 - Super Games Collection [Columns] (Unl)/part-0c-Great Soccer (JP)-32k.sms
md5:0ed883302e87ca46c1c1a55660e17900 18 in 1 - Super Games Collection [Columns] (Unl)/part-0c-Great Soccer (JP)-32k.sms
mekacrc:68A3CEF02BC61B2B 18 in 1 - Super Games Collection [Columns] (Unl)/part-0c-Great Soccer (JP)-32k.sms
crc32:2d7fd7ef 18 in 1 - Super Games Collection [Columns] (Unl)/part-0c-Great Soccer (JP)-32k.sms

32K 18 in 1 - Super Games Collection [Columns] (Unl)/part-0d-Super Tennis (US,EU,DE)-32k.sms
Checking for export header with matching CRC... YES
sha256:5fb097b508a482c29f12c2203a0a98a0dd7ce9873e7ef12fb7e0aeea250a99e2 18 in 1 - Super Games Collection [Columns] (Unl)/part-0d-Super Tennis (US,EU,DE)-32k.sms
sha1:67787f3f29a5b5e74b5f6a636428da4517a0f992 18 in 1 - Super Games Collection [Columns] (Unl)/part-0d-Super Tennis (US,EU,DE)-32k.sms
md5:2db9404fe79593fd2379921ca822103a 18 in 1 - Super Games Collection [Columns] (Unl)/part-0d-Super Tennis (US,EU,DE)-32k.sms
mekacrc:F799F9C458560EF7 18 in 1 - Super Games Collection [Columns] (Unl)/part-0d-Super Tennis (US,EU,DE)-32k.sms
crc32:914514e3 18 in 1 - Super Games Collection [Columns] (Unl)/part-0d-Super Tennis (US,EU,DE)-32k.sms

32K 18 in 1 - Super Games Collection [Columns] (Unl)/part-0e-Great Baseball [JP] (JP)-32k.sms
Checking for export header with matching CRC... NO
sha256:84a62928d7a231657db0a5d77efa77eebda9f5cbefb5d5a68af64af2ecdb88fd 18 in 1 - Super Games Collection [Columns] (Unl)/part-0e-Great Baseball [JP] (JP)-32k.sms
sha1:e6eaaec61bec32dee5161ae59a7a0902f0d05dc9 18 in 1 - Super Games Collection [Columns] (Unl)/part-0e-Great Baseball [JP] (JP)-32k.sms
md5:94ca79d4eb2709ad98b850d33728a045 18 in 1 - Super Games Collection [Columns] (Unl)/part-0e-Great Baseball [JP] (JP)-32k.sms
mekacrc:9F82F97234F38CC1 18 in 1 - Super Games Collection [Columns] (Unl)/part-0e-Great Baseball [JP] (JP)-32k.sms
crc32:89e98a7c 18 in 1 - Super Games Collection [Columns] (Unl)/part-0e-Great Baseball [JP] (JP)-32k.sms

32K 18 in 1 - Super Games Collection [Columns] (Unl)/part-0f-Fushigi no Oshiro Pit Pot (JP,KR)-32k.sms
Checking for export header with matching CRC... NO
sha256:be7c284c39c1e18e53f7a97d3950caf93550783cdddcdf9324f9b209353682b9 18 in 1 - Super Games Collection [Columns] (Unl)/part-0f-Fushigi no Oshiro Pit Pot (JP,KR)-32k.sms
sha1:b1afa682b2f70bfc4ab2020d7c3047aabbaf9a24 18 in 1 - Super Games Collection [Columns] (Unl)/part-0f-Fushigi no Oshiro Pit Pot (JP,KR)-32k.sms
md5:209ee37dcabc263aa462c781d3123fce 18 in 1 - Super Games Collection [Columns] (Unl)/part-0f-Fushigi no Oshiro Pit Pot (JP,KR)-32k.sms
mekacrc:B637976CB4B28D1D 18 in 1 - Super Games Collection [Columns] (Unl)/part-0f-Fushigi no Oshiro Pit Pot (JP,KR)-32k.sms
crc32:e6795c53 18 in 1 - Super Games Collection [Columns] (Unl)/part-0f-Fushigi no Oshiro Pit Pot (JP,KR)-32k.sms

---

I call this "Super 18 in 1 - 1993 New Game [Columns] (Unl)" but the correct name is not entirely clear

This is completely identical to "18 in 1 - Super Games Collection [Columns] (Unl)" except for the menu's "TMR SEGA" header which has been updated

This is a 512KB ROM containing a menu (based on Pengo code, though there is a separate still-playable Pengo elsewhere in the ROM) and 15 distinct games - three Game Gear games and twelve SMS games. They are: GG: Menu & Pengo Remnants, Pengo, Columns, Woody Pop; SMS: Astro Flash, Seishun Scandal (JP), Spy vs Spy (JP, KR), Comical Machine Gun Joe (JP), Teddy Boy Blues (JP), Ghost House, Satellite 7 (JP), Hang On (EU, AU, BR, DE, IT), Great Soccer (JP), Super Tennis (US, EU, DE), Great Baseball [JP] (JP), Fushigi no Oshiro Pit Pot (JP, KR)

Dumping was identical to the other version:
```
// 18 in 1 - Super Games Collection [Columns]
for (local page = 0; (address_scale_factor * page * 0x8000) < rom_size; page += 1) {
    cpu_write(d, address_scale_factor * (page & 0x0F), page >> 4);
    cpu_read (d, address_scale_factor * 0, address_scale_factor * 0x8000);
}
```

Menu and mapper information are identical too. Please refer to the information on "18 in 1 - Super Games Collection [Columns]" for more details

ROM fingerprint information:

512K Super 18 in 1 - 1993 New Game [Columns] (Unl).gg crc32:54690a05 mekacrc:6BAD6667CB4815F3 md5:f76a3657f008b8c4a1bf880fa34774a0 sha1:0d2864b04e7400532785e67f8d02353d475878ce sha256:48ecff834b7be6f79055b8f9e8b6d4ae92dc03def9dccb30397830b4ec9da2f0

32K part-00-menu-and-pengo-remnants-with-fixed-header-32k.gg crc32:c4bf0589 mekacrc:46894A67FE7CAB5B md5:152d21ec1a13742526344362bc56b9de sha1:7778e8c01ca06e9e47b0d460383e065bbd280686 sha256:dd92f1a55f391c17802b4c071a1b1d3a2d4e273ba4d4519a0eef96d75d83757d

32K part-01-pengo-32k.gg crc32:cc13c408 mekacrc:7C42713471EBDD64 md5:630e6ca44a8933c508691baaa5d2769c sha1:b48bd6bec0cdde7b1f6cb10364e027a0e3a03a55 sha256:fb19e89fafeba20a1fd976465f28d7f0623e321239be9b96b4cd72ddd7d954b4

32K part-02-columns-32k.gg crc32:5a1e2db6 mekacrc:29E34504572F0322 md5:f8c12df1869aa3e4c363b9d7dc308790 sha1:52493c55c2b3815d960886a70a416df685823307 sha256:dccfe80f1ca1f10ad68c5b930c12623394cdd8f712fdaf9706c374ab938aa38a

32K part-03-woody-pop-32k.gg crc32:b16eab57 mekacrc:932C48DEDF130029 md5:3dfa83da24646abcc0794f8053412a30 sha1:00752ac2ad89e4006cc2a1a3f18336d786d66b0e sha256:bf73da437483edfc250ca6174258edf73118eca624fba2a1b910d9e275935db7

32K part-04-astro-flash-32k.sms crc32:ea5692a8 mekacrc:2D22172DD72A88E4 md5:9d9aac5b483d3e750ba120959aaaac20 sha1:94a0c358ef4e4c13ae2dc03558a0d5f46a28efd9 sha256:bf22972cc6e88a0eb3a6f2e483fa769ba4a5573edfe421dbfa75a6697053bef7

32K part-05-Seishun Scandal (JP)-32k.sms crc32:f0ba2bc6 mekacrc:A2297AFAC9472988 md5:fb2ad2524646bd069e3ec1b51fd7eb39 sha1:6942f38e608cc7d70cf9cc8c13ee8c22e4b81679 sha256:5c86b5f3531518e20bb875a05e26430aa3fbd3d162164da807826eb4bc4b262c

32K part-06-Spy vs Spy (JP,KR)-32k.sms crc32:d41b9a08 mekacrc:440AA3B0518BF192 md5:2a6ee78e2617886fe540dcb8a1500e90 sha1:c5e004b34d6569e6e1d99bff6be940f308e2c39f sha256:e3df51893d16e512cadf3723a58f143dc679127fbe4444662be63fafb4b2a777

32K part-07-Comical Machine Gun Joe (JP)-32k.sms crc32:9d549e08 mekacrc:59868AC9BD4815B4 md5:2d59b3d27f022b04a597e767e6660ca9 sha1:33c21d164fd3cdf7aa9e7e0fe1a3ae5a491bd9f5 sha256:ea9c74555e551974a681296c41972c1f6ddd7289fed5502f64e35b8527b6dde4

32K part-08-Teddy Boy Blues (JP)-32k.sms crc32:316727dd mekacrc:BBE8D843FF8FF6BE md5:de5d6c9e1349844b74f53caaf2af680b sha1:fb61c04f30c83733fdbf503b16e17aa8086932df sha256:42de9fc6028da76b4991ba81b3a666c9ae303e269d8f55c715f6518dcadb8773

32K part-09-ghost-house-32k.sms crc32:8f0284e3 mekacrc:777E31E6ED69940A md5:bc9281e171d910e9ac3dadc65eb3c8ce sha1:654468a74a1c633ceecfb83e07a88ddf1b53a57b sha256:5c31df49065f505b5390019b5bb75f1e3fb7ac5f1799cb69d1081ddc1ce082ea

32K part-0a-Satellite 7 (JP)-32k.sms crc32:16249e19 mekacrc:ABFBCE1810529280 md5:eac6a843975c50e39eb32f764da2a5ac sha1:88fc5596773ea31eda8ae5a8baf6f0ce5c3f7e5e sha256:3e659f15fbcc6511dfeb2112762074a8441479bb33887d196eb343e124d14fe5

32K part-0b-Hang On (EU,AU,BR,DE,IT)-32k.sms crc32:071b045e mekacrc:F0A23277115075EF md5:2864be0d35269c5030a7f297f70e3ac3 sha1:e601257f6477b85eb0b25a5b6d46ebc070d8a05a sha256:0d35d0e232d64e714fa5d07e45acaf01ea9fb5a8f88fe9ac8018719ac2818d6f

32K part-0c-Great Soccer (JP)-32k.sms crc32:2d7fd7ef mekacrc:68A3CEF02BC61B2B md5:0ed883302e87ca46c1c1a55660e17900 sha1:110536303b7bccc193bef4437ba5a9eb6fd4ac8e sha256:b2a524164e1a0a264dc4ac7cb29742293b3384b9369e0ce0cf2ab5ca2b50a1cd

32K part-0d-Super Tennis (US,EU,DE)-32k.sms crc32:914514e3 mekacrc:F799F9C458560EF7 md5:2db9404fe79593fd2379921ca822103a sha1:67787f3f29a5b5e74b5f6a636428da4517a0f992 sha256:5fb097b508a482c29f12c2203a0a98a0dd7ce9873e7ef12fb7e0aeea250a99e2

32K part-0e-Great Baseball [JP] (JP)-32k.sms crc32:89e98a7c mekacrc:9F82F97234F38CC1 md5:94ca79d4eb2709ad98b850d33728a045 sha1:e6eaaec61bec32dee5161ae59a7a0902f0d05dc9 sha256:84a62928d7a231657db0a5d77efa77eebda9f5cbefb5d5a68af64af2ecdb88fd

32K part-0f-Fushigi no Oshiro Pit Pot (JP,KR)-32k.sms crc32:e6795c53 mekacrc:B637976CB4B28D1D md5:209ee37dcabc263aa462c781d3123fce sha1:b1afa682b2f70bfc4ab2020d7c3047aabbaf9a24 sha256:be7c284c39c1e18e53f7a97d3950caf93550783cdddcdf9324f9b209353682b9
  • Loading branch information
bsittler committed Jun 1, 2023
1 parent 1566428 commit 643f244
Show file tree
Hide file tree
Showing 6 changed files with 85 additions and 5 deletions.
4 changes: 3 additions & 1 deletion meka/compat.txt
Original file line number Diff line number Diff line change
Expand Up @@ -984,6 +984,7 @@
-----------------------------------------------------------------------------
SEGA GAME GEAR (GG) COMPATIBILITY LIST
-----------------------------------------------------------------------------
18 in 1 - Super Games Collection [Columns] *Ok
5 in One Fun Pak Ok
Aa Harimanada (JP) Ok
Addams Family, The Ok
Expand Down Expand Up @@ -1409,6 +1410,7 @@
Street Hero [Proto 1] [SMS-GG] Ok
Strider Returns Ok
Striker Ok
Super 18 in 1 - 1993 New Game [Columns] *Ok
Super Battletank Ok
Super Columns Ok
Super Columns (JP) Ok
Expand Down Expand Up @@ -1502,7 +1504,7 @@
Zoop (US) Ok
Zoop [Proto] (US) Ok
-----------------------------------------------------------------------------
517 games tested - 506 are "Ok" - Compatibility rate: 97.63%
519 games tested - 508 are "Ok" - Compatibility rate: 97.88%
-----------------------------------------------------------------------------

-----------------------------------------------------------------------------
Expand Down
2 changes: 2 additions & 0 deletions meka/meka.nam
Original file line number Diff line number Diff line change
Expand Up @@ -886,6 +886,7 @@ SMS 317f14da 642D4E5E1BB23ABC Ninja Gaiden/FLAGS=TRANS/TRANS=DE/VERSION=1.00/A
; DATA - SEGA GAME GEAR (GG)
;-----------------------------------------------------------------------------

GG 81818f55 6AAE6866CB4814F3 18 in 1 - Super Games Collection [Columns]/EMU_MAPPER=49/COMMENT=Identical to "Super 18 in 1 - 1993 New Game [Columns]" other than TMR SEGA header
GG f85a8ce8 5DB92D172BF43C4B 5 in One Fun Pak/COUNTRY=US/PRODUCT_NO=T-125028
GG 1d17d2a0 A5D21350B842022A Aa Harimanada/COUNTRY=JP/PRODUCT_NO=G-3327
GG 1d01f999 EE39E44E85E0C77B Addams Family, The/COUNTRY=US,EU,JP/PRODUCT_NO=T-81188,T-81188-50,T-81087
Expand Down Expand Up @@ -1293,6 +1294,7 @@ GG 0b618409 85CFE82DBD812633 Streets of Rage II/NAME_US=Streets of Rage 2/NAM
GG 6c395a69 BC45532F90B98FA5 Streets of Rage II [Proto]/NAME_US=Streets of Rage 2/NAME_JP=Bare Knuckle II/FLAGS=PROTO/COMMENT=Prototype version of the game.
GG 1ebfa5ca 24A227CBB87248D6 Strider Returns (Journey from Darkness)/COUNTRY=US,EU/PRODUCT_NO=T-79048,79048,79048-50
GG b421c057 96BD12C62621B8D6 Striker/COUNTRY=EU/PRODUCT_NO=2551-50
GG 54690a05 6BAD6667CB4815F3 Super 18 in 1 - 1993 New Game [Columns]/EMU_MAPPER=49/COMMENT=Identical to "18 in 1 - Super Games Collection [Columns]" other than TMR SEGA header
GG 73d6745a 18CC99C9849C9901 Super Battletank/COUNTRY=US/PRODUCT_NO=1239
GG 8ba43af3 DAA4C785B7042952 Super Columns/COUNTRY=US,EU/PRODUCT_NO=2449,2449-50
GG 2a100717 E7260408CEC8EE63 Super Columns/COUNTRY=JP/PRODUCT_NO=G-3226
Expand Down
22 changes: 22 additions & 0 deletions meka/srcs/machine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#include "tvtype.h"
#include "sound/fmunit.h"
#include "sound/psg.h"
#include "app_game.h"

//-----------------------------------------------------------------------------
// Data
Expand Down Expand Up @@ -199,6 +200,9 @@ void Machine_Set_Handler_MemRW(void)
case MAPPER_SMS_Korean_MSX_SMS_8000:
WrZ80 = WrZ80_NoHook = Write_Mapper_SMS_Korean_MSX_SMS_8000;
break;
case MAPPER_GG_18_in_1_00xx:
WrZ80 = WrZ80_NoHook = Write_Mapper_GG_18_in_1_00xx;
break;
}
}

Expand Down Expand Up @@ -502,6 +506,24 @@ void Machine_Set_Mapping (void)
g_machine.mapper_regs[i] = 0;
break;

case MAPPER_GG_18_in_1_00xx:
Map_8k_ROM(0, 0 & tsms.Pages_Mask_8k);
Map_8k_ROM(1, 1 & tsms.Pages_Mask_8k);
Map_8k_ROM(2, 2 & tsms.Pages_Mask_8k);
Map_8k_ROM(3, 3 & tsms.Pages_Mask_8k);
Map_8k_ROM(4, 0 & tsms.Pages_Mask_8k);
Map_8k_ROM(5, 1 & tsms.Pages_Mask_8k);
Map_8k_RAM(6, 0);
Map_8k_RAM(7, 0);
g_machine.mapper_regs_count = 1;
for (int i = 0; i != MAPPER_REGS_MAX; i++)
g_machine.mapper_regs[i] = 0;
drv_set(DRV_GG);
gamebox_resize_all();
VDP_UpdateLineLimits();
Video_GameMode_UpdateBounds();
break;

case MAPPER_SC3000_Survivors_Multicart:
g_machine.mapper_regs_count = 1;
for (int i = 0; i != MAPPER_REGS_MAX; i++)
Expand Down
41 changes: 41 additions & 0 deletions meka/srcs/mappers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
#include "shared.h"
#include "mappers.h"
#include "eeprom.h"
#include "vdp.h"
#include "video.h"
#include "app_game.h"

//-----------------------------------------------------------------------------
// Data
Expand Down Expand Up @@ -989,6 +992,44 @@ WRITE_FUNC (Write_Mapper_SMS_Korean_MSX_SMS_8000)
Write_Error (Addr, Value);
}

// Mapper #49
// 18 in 1 - Super Games Collection [Columns]
WRITE_FUNC (Write_Mapper_GG_18_in_1_00xx)
{
// FIXME: It is likely the actual hardware does not completely
// decode the address bits, but the effective mapper address
// decoding mask is not yet known
if ((Addr | 0x001F) == 0x001F) // Configurable segment -----------------------------------------------
{
g_machine.mapper_regs[0] = Addr & 0x1F;
if (Addr & 0x10) {
drv_set(DRV_SMS);
} else {
drv_set(DRV_GG);
}
gamebox_resize_all();
VDP_UpdateLineLimits();
Video_GameMode_UpdateBounds();
unsigned int base_page_8k = (Addr & 0x0F) * 4;
Map_8k_ROM(0, base_page_8k & tsms.Pages_Mask_8k);
Map_8k_ROM(1, (base_page_8k | 1) & tsms.Pages_Mask_8k);
Map_8k_ROM(2, (base_page_8k | 2) & tsms.Pages_Mask_8k);
Map_8k_ROM(3, (base_page_8k | 3) & tsms.Pages_Mask_8k);
Map_8k_ROM(4, base_page_8k & tsms.Pages_Mask_8k);
Map_8k_ROM(5, (base_page_8k | 1) & tsms.Pages_Mask_8k);
return;
}

switch (Addr >> 13)
{
// RAM [0xC000] = [0xE000] ------------------------------------------------
case 6: Mem_Pages[6][Addr] = Value; return;
case 7: Mem_Pages[7][Addr] = Value; return;
}

Write_Error(Addr, Value);
}

// Based on MSX ASCII 8KB mapper? http://bifi.msxnet.org/msxnet/tech/megaroms.html#ascii8
// - This mapper requires 4 registers to save bank switching state.
// However, all other mappers so far used only 3 registers, stored as 3 bytes.
Expand Down
4 changes: 3 additions & 1 deletion meka/srcs/mappers.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@
#define MAPPER_SMS_Korean_MD_FFF5 (25) // Registers at 0xFFF5 and 0xFFFF (Jaemiissneun Game Mo-eumjip 42/65 Hap [SMS-MD], Pigu Wang Hap ~ Jaemiiss-neun Game Mo-eumjip [SMS-MD])
#define MAPPER_SMS_Korean_MD_FFFA (26) // Registers at 0xFFFA and 0xFFFF (Game Jiphap 30 Hap [SMS-MD])
#define MAPPER_SMS_Korean_MSX_32KB_2000 (27) // Register at 0x2000 (2 Hap in 1 (Moai-ui bomul, David-2))
#define MAPPER_SMS_Korean_MSX_SMS_8000 (40) // Register at 0x8000 with 8KB granularity and both MSX and SMS game support (Zemina Best 88 [MISSING 64K])
#define MAPPER_SMS_Korean_MSX_SMS_8000 (40) // Register at 0x8000 with 8KB granularity and both MSX and SMS game support (Zemina Best 88)
#define MAPPER_GG_18_in_1_00xx (49) // Registers at 0x0000..0x001F (18 in 1 - Super Games Collection [Columns])

#define READ_FUNC(_NAME) u8 _NAME(register u16 Addr)
#define WRITE_FUNC(_NAME) void _NAME(register u16 Addr, register u8 Value)
Expand Down Expand Up @@ -98,6 +99,7 @@ WRITE_FUNC (Write_Mapper_SMS_Korean_MD_FFF5);
WRITE_FUNC (Write_Mapper_SMS_Korean_MD_FFFA);
WRITE_FUNC (Write_Mapper_SMS_Korean_MSX_32KB_2000);
WRITE_FUNC (Write_Mapper_SMS_Korean_MSX_SMS_8000);
WRITE_FUNC (Write_Mapper_GG_18_in_1_00xx);
//-----------------------------------------------------------------------------
void Out_SC3000_SurvivorsMulticarts_DataWrite(u8 v);

Expand Down
17 changes: 14 additions & 3 deletions meka/srcs/saves.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
#include "vmachine.h"
#include "sound/fmunit.h"
#include "sound/psg.h"
#include "video.h"
#include "app_game.h"

//-----------------------------------------------------------------------------
// Functions
Expand All @@ -26,6 +28,7 @@ void Load_Game_Fixup(void)
{
int i;
u8 b;
bool sms_gg_mode_in_mapper = false;

// CPU
#ifdef MARAT_Z80
Expand Down Expand Up @@ -151,13 +154,19 @@ void Load_Game_Fixup(void)
WrZ80_NoHook(0x8000, mapper_page);
}
break;
case MAPPER_GG_18_in_1_00xx:
WrZ80_NoHook(0x0000 | g_machine.mapper_regs[0], 0x00);
sms_gg_mode_in_mapper = true;
break;
}
}

// VDP/Graphic related
tsms.VDP_Video_Change |= VDP_VIDEO_CHANGE_ALL;
VDP_UpdateLineLimits();
// FALSE!!! // tsms.VDP_Line = 224;
if (!sms_gg_mode_in_mapper) {
tsms.VDP_Video_Change |= VDP_VIDEO_CHANGE_ALL;
VDP_UpdateLineLimits();
// FALSE!!! // tsms.VDP_Line = 224;
}

// Rewrite all VDP registers (we can do that since it has zero side-effect)
for (i = 0; i < 16; i ++)
Expand Down Expand Up @@ -347,6 +356,7 @@ int Save_Game_MSV(FILE *f)
case MAPPER_SMS_Korean_MD_FFFA:
case MAPPER_SMS_Korean_MSX_32KB_2000:
case MAPPER_SMS_Korean_MSX_SMS_8000:
case MAPPER_GG_18_in_1_00xx:
default:
fwrite (RAM, 0x2000, 1, f); // Do not use g_driver->ram because of g_driver video mode change
break;
Expand Down Expand Up @@ -527,6 +537,7 @@ int Load_Game_MSV(FILE *f)
case MAPPER_SMS_Korean_MD_FFFA:
case MAPPER_SMS_Korean_MSX_32KB_2000:
case MAPPER_SMS_Korean_MSX_SMS_8000:
case MAPPER_GG_18_in_1_00xx:
default:
fread (RAM, 0x2000, 1, f); // Do not use g_driver->ram because of g_driver video mode change
break;
Expand Down

0 comments on commit 643f244

Please sign in to comment.