Skip to content

Commit

Permalink
Add mapper ocornut#36 MAPPER_GG_Super_Gear_23_in_1_FFFE_FFFF for "S…
Browse files Browse the repository at this point in the history
…uper Gear 23 in 1 [Ninja Gaiden] (Unl)"

This mapper has the ability to toggle between native GG move and SMS-GG mode. This seems to mostly work though there are minor game window size glitches after a switch back to native GG mode from SMS-GG mode or vice versa (most noticeable when loading from a save state.)

All games can be started and played. However loading a save state results in a crashed game for some games due to incorrect re-initialization across the GG/SMS-GG mode-switching boundary.

I've been calling it "Super Gear 23 in 1 [Ninja Gaiden] (Unl)" but the actual names are different:

SUPER 23 IN 1 [menu]
SUPER GEAR 23 in 1 [box front, box back]
GEAR 23 in 1 [label, box sides]

The box front also says:

SELECT GAMES ON SCREEN
超級强卡 GEAR 23 in 1 (partial simplification of "超級強卡 GEAR 23 in 1", i.e. "super powerful Card GEAR 23 in 1")

NOTE: the use of simplified 强 in place of 強 alongside otherwise-traditional characters may suggest a Taiwanese origin

This is a 1032KB ROM (1MB for the games + 8KB for the menu.) Despite the "23" this actually only contains 20 games - the same ones (including exactly the same bits for every game) as found in the pushbutton "Super Gear 20 in 1 [Ninja Gaiden] (Unl)" described here: ocornut#95

The PCB includes the following ICs:
- National Semiconductor NMC27C64Q, a 64kbit a.k.a. 8KB memory containing the menu
- JM62300, likely an 8Mbit a.k.a. 1MB memory for all the games
- 2× AMI 18CV8PC-25 PEEL's, likely implementing the mapper logic

Newest date codes on mine are from 1993.

The label and the back of the box also include parallel game lists in both English and Traditional Chinese: (some "." punctuators are omitted on the label version, apparently due to a rough image-copying process)

```
01. NINJA GAIDEN / 01. 忍者外傳 (i.e. "Ninja Gaiden")
02. HALLEY WARS / 02. 哈雷慧星 (i.e. "Halley's comet")
03. HEAVY WEIGHT CHAMP / 03. 拳擊手 (i.e. "boxer")
04. ALIEN SYNDROME / 04. 異形風暴 (i.e. "Alien Storm")
05. RSTRO FLASH [typo for ASTRO FLASH] / 05. 噴射機 (i.e. "jet machine")
06. MY HERO / 06. 英雄爭霸戰 (i.e. "Hero Battle")
07. SPY VS SPY / 07. 諜對諜 (i.e. "spy vs. spy")
08. BANK PANIC / 08. 銀行大盗 [simplification/typo of 銀行大盜, i.e. "bank robber"]
09. TEDDY BOY BLUES / 09. 擲骰小子 (i.e. "dice kid")
10. GHOST HOUSE / 10. 鬼屋歷險記 (i.e. "haunted house adventures")
11. SATELLITE 7 / 11. 衛星七號 (i.e. "satellite seven")
12. HANG·ON / 12. 電單車賽 (i.e. "motorcycle race")
13. SOCCER / 13. 足球 (i.e. "soccer" or "football")
14. TENNIS / 14. 網球 (i.e. "tennis")
15. GREAT BASEBALL / 15. 超任棒球 [typo for 超仼棒球, i.e. "super baseball"]
16. PIT POT / 16. 英雄救美 (i.e. "hero saves the beauty")
17. COLUMNS / 17. 寶石方塊 (i.e. "gem cube", a name by which Columns is sometimes known in Chinese)
18. PENGO / 18. 企鵝推水 (i.e. "penguin pushes water"; possibly typo for 企鵝推冰, i.e. "penguin pushes ice" or "Pengo")
19. WOODY POP / 19. 玩具磚王 (i.e. "toy brick king")
20. JOE MACHINECUN [typo for JOE MACHINEGUN] / 20. 機關槍掃射 (i.e. "machine gun strafing")
21.GHOST / 21. 鬼屋 (i.e. "ghost house")
22.ARKANOLL / 22  撞磚 (i.e. "hit a brick")
23.PENGO / 23. 企鵝推冰 (i.e. "penguin pushes ice" or "Pengo")
```

Some character choices suggest a possible Hong Kong origin for the original 20-in-1 label this 23-in-1 label was based on, e.g. 電單車 for motorcycle.

Typographic changes in entries 06 and 21-23, and in the "3" of "GEAR 23 in 1", suggest that those were edited separately from the rest of the label. The remainder is effectively identical to the game list of the "Super Gear 20 in 1 [Ninja Gaiden] (Unl)" pushbutton mulicart. All of this suggests the 23-in-1 version with a menu was created after the 20-in-1 pushbutton version, possibly by different people, yet it still contains more or less the same games.

Menu contents: ("→" is the movable cursor, shown here in the initial position on each screen)

Screen 1:

```
SUPER 23 IN 1

PUSH ↑.↓.1.2.START

 01.NINJA GAIDEN   [0xFFFE=0x00, 0xFFFE=0x04, 0xFFFE=0x08, 0xFFFF=0x08]; it's part-00-Ninja Gaiden (JP)-128k.gg
 02.ALIEN SYNDROME [0xFFFE=0x00, 0xFFFE=0x07, 0xFFFE=0x08, 0xFFFF=0x08]; it's part-0c-Alien Syndrome (JP)-128k.gg
 03.HALLEY WARS    [0xFFFE=0x00, 0xFFFE=0x05, 0xFFFE=0x08, 0xFFFF=0x08]; it's part-04-Halley Wars (JP)-128k.gg
 04.KO BOXING      [0xFFFE=0x00, 0xFFFE=0x06, 0xFFFE=0x08, 0xFFFF=0x08]; it's part-08-Heavy weight Champ (JP)-128k.gg
→05.COLUMNS        [0xFFFE=0x00, 0xFFFE=0x04, 0xFFFE=0x09, 0xFFFF=0x08]; it's part-10-Columns [v1] (JP)-32k.gg
 06.PENGO          [0xFFFE=0x01, 0xFFFE=0x04, 0xFFFE=0x09, 0xFFFF=0x08]; it's part-11-pengo-32k.gg
 07.WOODY POP      [0xFFFE=0x02, 0xFFFE=0x04, 0xFFFE=0x09, 0xFFFF=0x08]; it's part-12-Woody Pop [v0] (JP)-32k.gg
 08.BASE BALL      [0xFFFE=0x02, 0xFFFE=0x07, 0xFFFE=0x0B, 0xFFFF=0x08]; it's part-1e-Great Baseball [JP] (JP)-32k.sms
 09.ASTRO FLASH    [0xFFFE=0x00, 0xFFFE=0x05, 0xFFFE=0x0B, 0xFFFF=0x08]; it's part-14-astro-flash-32k.sms
 10.MY HERO        [0xFFFE=0x01, 0xFFFE=0x05, 0xFFFE=0x0B, 0xFFFF=0x08]; it's part-15-Seishun Scandal (JP)-32k.sms
```

Screen 2:

```
SUPER 23 IN 1

PUSH ↑.↓.1.2.START

 11.SPY VS SPY     [0xFFFE=0x02, 0xFFFE=0x05, 0xFFFE=0x0B, 0xFFFF=0x08]; it's part-16-Spy vs Spy (JP,KR)-32k.sms
 12.BANK PANIC     [0xFFFE=0x03, 0xFFFE=0x05, 0xFFFE=0x0B, 0xFFFF=0x08]; it's part-17-bank-panic-32k.sms
 13.TEDDY BOY      [0xFFFE=0x00, 0xFFFE=0x06, 0xFFFE=0x0B, 0xFFFF=0x08]; it's part-18-Teddy Boy Blues (JP)-32k.sms
 14.GHOST HOUSE    [0xFFFE=0x01, 0xFFFE=0x06, 0xFFFE=0x0B, 0xFFFF=0x08]; it's part-19-Ghost House (JP)-32k.sms
→15.SATELLITE 7    [0xFFFE=0x02, 0xFFFE=0x06, 0xFFFE=0x0B, 0xFFFF=0x08]; it's part-1a-Satellite 7 (JP)-32k.sms
 16.HANG ON        [0xFFFE=0x03, 0xFFFE=0x06, 0xFFFE=0x0B, 0xFFFF=0x08]; it's part-1b-Hang On (EU,AU,BR,DE,IT)-32k.sms
 17.SOCCER         [0xFFFE=0x00, 0xFFFE=0x07, 0xFFFE=0x0B, 0xFFFF=0x08]; it's part-1c-Great Soccer (JP)-32k.sms
 18.TENNIS         [0xFFFE=0x01, 0xFFFE=0x07, 0xFFFE=0x0B, 0xFFFF=0x08]; it's part-1d-Super Tennis (US,EU,DE)-32k.sms
 19.MACHINE GUN    [0xFFFE=0x03, 0xFFFE=0x04, 0xFFFE=0x0B, 0xFFFF=0x08]; it's part-13-Comical Machine Gun Joe (JP)-32k.sms
 20.PIT POT        [0xFFFE=0x03, 0xFFFE=0x07, 0xFFFE=0x0B, 0xFFFF=0x08]; it's part-1f-Fushigi no Oshiro Pit Pot (JP,KR)-32k.sms
```

Screen 3:

```
SUPER 23 IN 1

PUSH ↑.↓.1.2.START

 21.ARKANOID       [0xFFFE=0x02, 0xFFFE=0x04, 0xFFFE=0x09, 0xFFFF=0x08]; it's part-12-Woody Pop [v0] (JP)-32k.gg
→22.EASY PENGO     [0xFFFE=0x01, 0xFFFE=0x04, 0xFFFE=0x09, 0xFFFF=0x08]; it's part-11-pengo-32k.gg
 23.GHOST          [0xFFFE=0x01, 0xFFFE=0x06, 0xFFFE=0x0B, 0xFFFF=0x08]; it's part-19-Ghost House (JP)-32k.sms
```

At power-on the 8KB menu is mirrored 6 times:

0x0000..0x1FFF 8KB menu ROM
0x2000..0x3FFF 8KB menu ROM
0x4000..0x5FFF 8KB menu ROM
0x6000..0x7FFF 8KB menu ROM
0x8000..0x9FFF 8KB menu ROM
0xA000..0xBFFF 8KB menu ROM

Once a menu item is selected, 0xFFFE is written three times with different values depending on the game chosen, and then 0xFFFF is written with 0x08.

Once that write happens, the mapper seems to be locked in Sega mapper mode with the selected base page, which will be OR'ed with the pages selected by the Sega mapper thereafter. This means base pages 0x00, 0x04, 0x08, 0x0C, 0x10, 0x14, 0x18, and 0x1C are sufficient to fully dump the game ROM.

Dumping snippet for the games:
```
        local game_id = 0x18; //0x00;//0x04;//0x08;//0x0c;//0x10;//0x14;//0x18;//0x1C;
        local first_unlock = game_id & 0x03;
        local second_unlock = ((game_id & 0xC) >> 2) | 0x04;
        local third_unlock = ((game_id & 0x10) >> 4) | 0x08;
        local fourth_unlock = 0x08;
        // bit 0x02 in third_unlock seems to mean "SMS-GG mode" as opposed to "GG mode"
        //
        // it is not needed for dumping
        cpu_write(d, 0xFFFE, first_unlock);
        cpu_write(d, 0xFFFE, first_unlock);
        cpu_write(d, 0xFFFE, second_unlock);
        cpu_write(d, 0xFFFE, second_unlock);
        cpu_write(d, 0xFFFE, third_unlock);
        cpu_write(d, 0xFFFE, third_unlock);
        cpu_write(d, 0xFFFF, fourth_unlock);
        cpu_write(d, 0xFFFF, fourth_unlock);
        // After this, use the Sega mapper to dump games 128KB at a
        // time (yes, even consecutive 32KB games can be dumped this
        // way! However you need to power-cycle the cartridge in
        // between.
```

For the menu, simply dump any 8KB page at power-on.

To construct to overall ROM image, place the 1MB games ROM first, and follow it with the 8KB menu ROM. The mapper will initially be in "menu" mode, where all reads will return data from the menu ROM. Once a game mapping is activated, only the selected 128KB, 64KB, or 32KB region (based on the lower bits of the game number) of the first 1MB "games" ROM will be visible.

Note that the "Super Gear 20 in 1 [Ninja Gaiden] (Unl)" ROM dump can be reconstructed from this one by concatenating the game ROM sections in label order (rather than ROM order or menu order) for items 01 through 20 and omitting the 8KB menu ROM.

ROM fingerprint info:

1.1M Super Gear 23 in 1 [Ninja Gaiden] (Unl).gg
Checking for export header with matching CRC... NO
sha256:eed8b645c038acf99da87169daac7283e3b3b9aa56f236fd6af43dd83ce8b6af Super Gear 23 in 1 [Ninja Gaiden] (Unl).gg
sha1:77430840cdedf95547df8e5b70eb4e8a014a0abe Super Gear 23 in 1 [Ninja Gaiden] (Unl).gg
md5:57568901cc57dd5f8557aab1f7d8b3c9 Super Gear 23 in 1 [Ninja Gaiden] (Unl).gg
mekacrc:306E7F66E4B6F9EA Super Gear 23 in 1 [Ninja Gaiden] (Unl).gg
crc32:67a43451 Super Gear 23 in 1 [Ninja Gaiden] (Unl).gg

128K Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-00-Ninja Gaiden (JP)-128k.gg
Checking for export header with matching CRC... NO
sha256:c97821952624b660a8e785966042e17e85be28fd90c01e3a40b09ff8394e94ad Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-00-Ninja Gaiden (JP)-128k.gg
sha1:53fad0e2a180d0add8497f0195fd35537f508afb Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-00-Ninja Gaiden (JP)-128k.gg
md5:43174663563199c6a0e7a47719703888 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-00-Ninja Gaiden (JP)-128k.gg
mekacrc:4B1A5BE482A63301 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-00-Ninja Gaiden (JP)-128k.gg
crc32:4ed37a63 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-00-Ninja Gaiden (JP)-128k.gg

128K Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-04-Halley Wars (JP)-128k.gg
Checking for export header with matching CRC... NO
sha256:af245727b846b3d13f9f6c4ba6977537408925074a17c44456448779f0953607 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-04-Halley Wars (JP)-128k.gg
sha1:1c9932f592bb12e61acf597985e0bd5041e45da5 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-04-Halley Wars (JP)-128k.gg
md5:9b26a17f41f2f0dc508d0815945e2634 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-04-Halley Wars (JP)-128k.gg
mekacrc:1F25824E7BFAA5D2 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-04-Halley Wars (JP)-128k.gg
crc32:def5a5d0 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-04-Halley Wars (JP)-128k.gg

128K Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-08-Heavy weight Champ (JP)-128k.gg
Checking for export header with matching CRC... NO
sha256:d990ebd322393050382ed5b44f108e959605a4a59d38dfcd8e231e6f81ea3d8e Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-08-Heavy weight Champ (JP)-128k.gg
sha1:7cfd703ebdab4b2665f402adeac0060740615b6c Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-08-Heavy weight Champ (JP)-128k.gg
md5:b963441c5edad8396b857a9ad8448995 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-08-Heavy weight Champ (JP)-128k.gg
mekacrc:BFF25E2CEA4F8C00 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-08-Heavy weight Champ (JP)-128k.gg
crc32:beed9150 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-08-Heavy weight Champ (JP)-128k.gg

128K Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-0c-Alien Syndrome (JP)-128k.gg
Checking for export header with matching CRC... NO
sha256:2ccac0ba78ce294a28c041e1e2ce1555093160150df0bb5ba8b2c411601e8491 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-0c-Alien Syndrome (JP)-128k.gg
sha1:b72e54493bfa7f13883a608bcf8c9f315dd490ca Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-0c-Alien Syndrome (JP)-128k.gg
md5:df495096e2d7ff9e2c13945e2a2bacba Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-0c-Alien Syndrome (JP)-128k.gg
mekacrc:8E692D2511E6F5CB Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-0c-Alien Syndrome (JP)-128k.gg
crc32:ffe4ed47 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-0c-Alien Syndrome (JP)-128k.gg

32K Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-10-Columns [v1] (JP)-32k.gg
Checking for export header with matching CRC... NO
sha256:9e0a2b9c2af94bdfc95ca5c884fdf40ac9178388a6e8a36ccac263492ad74781 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-10-Columns [v1] (JP)-32k.gg
sha1:d83fd16bd23c51750555a692535daa171ed41af0 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-10-Columns [v1] (JP)-32k.gg
md5:36b33d28235b4c9439ab0f62ab1c97c4 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-10-Columns [v1] (JP)-32k.gg
mekacrc:C8F45DEC67DF2095 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-10-Columns [v1] (JP)-32k.gg
crc32:ac37e092 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-10-Columns [v1] (JP)-32k.gg

32K Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-11-pengo-32k.gg
Checking for export header with matching CRC... NO
sha256:e1051bba30d7b681b7d7a17f9ea280daf1ed1f9f9184f24a5a88afc536c5d1c1 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-11-pengo-32k.gg
sha1:5f1c16d637ff94147ab93690a7acf0a3da7c1155 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-11-pengo-32k.gg
md5:6254d1c010a646fa73142b7c344b31bd Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-11-pengo-32k.gg
mekacrc:593C7A3470EED48B Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-11-pengo-32k.gg
crc32:189e02fa Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-11-pengo-32k.gg

32K Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-12-Woody Pop [v0] (JP)-32k.gg
Checking for export header with matching CRC... NO
sha256:b6b639dcfa1492b5616b83ae4ac8b76ded84c449161291964a2fc3db0f3fb1a2 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-12-Woody Pop [v0] (JP)-32k.gg
sha1:9e7defda6873b7bca5650fad4426a6fb443522d8 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-12-Woody Pop [v0] (JP)-32k.gg
md5:c017baf7fa0de71219dfab91caa59f8f Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-12-Woody Pop [v0] (JP)-32k.gg
mekacrc:902D4CDEE014FD28 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-12-Woody Pop [v0] (JP)-32k.gg
crc32:9c0e5a04 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-12-Woody Pop [v0] (JP)-32k.gg

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

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

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

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

32K Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-17-bank-panic-32k.sms
Checking for export header with matching CRC... NO
sha256:1cbb449b665c4766ef5faa1983995c066e91621dc7dd68955de7b800b0590d00 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-17-bank-panic-32k.sms
sha1:70e07afaa6633938124add8cdb476f1bc69f2de0 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-17-bank-panic-32k.sms
md5:97b2bd168b9b41b7a693c199cab9d3ca Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-17-bank-panic-32k.sms
mekacrc:D7A23BCA59CD77E5 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-17-bank-panic-32k.sms
crc32:11d816cb Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-17-bank-panic-32k.sms

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

32K Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-19-Ghost House (JP)-32k.sms
Checking for export header with matching CRC... NO
sha256:c01f783f10fd4350816932e367bc9439b47e2ee1034a3179dcd93d660deecf43 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-19-Ghost House (JP)-32k.sms
sha1:051e74c499c6792f891668a7be23a11c2c4087af Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-19-Ghost House (JP)-32k.sms
md5:89028bfb152a553adf25668649d39ca6 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-19-Ghost House (JP)-32k.sms
mekacrc:827C30E5ED689206 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-19-Ghost House (JP)-32k.sms
crc32:c0f3ce7e Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-19-Ghost House (JP)-32k.sms

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

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

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

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

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

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

8.0K Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-20-menu-8k.gg
Checking for export header with matching CRC... NO
sha256:3c61e955fd46d1a42f2292a0605539f0a05f1c8684b836e05db59b5cf8da052b Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-20-menu-8k.gg
sha1:c2a7e890f843b05bf78e0a252d4f2bd4963902de Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-20-menu-8k.gg
md5:ba1731cb2e8616f25c8dcfdd1dde201c Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-20-menu-8k.gg
mekacrc:F9049C32B695B03A Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-20-menu-8k.gg
crc32:d59d5e15 Super Gear 23 in 1 [Ninja Gaiden] (Unl)/part-20-menu-8k.gg
  • Loading branch information
bsittler committed May 11, 2023
1 parent 7c635bd commit dd681f2
Show file tree
Hide file tree
Showing 6 changed files with 134 additions and 4 deletions.
3 changes: 2 additions & 1 deletion meka/compat.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1408,6 +1408,7 @@
Super Battletank Ok
Super Columns Ok
Super Columns (JP) Ok
Super Gear 23 in 1 [Ninja Gaiden] *Ok
Super Golf (JP) Ok
Super Kick Off [SMS-GG] Ok
Superman - The Man of Steel Ok
Expand Down Expand Up @@ -1498,7 +1499,7 @@
Zoop (US) Ok
Zoop [Proto] (US) Ok
-----------------------------------------------------------------------------
517 games tested - 506 are "Ok" - Compatibility rate: 97.63%
518 games tested - 507 are "Ok" - Compatibility rate: 97.88%
-----------------------------------------------------------------------------

-----------------------------------------------------------------------------
Expand Down
1 change: 1 addition & 0 deletions meka/meka.nam
Original file line number Diff line number Diff line change
Expand Up @@ -1291,6 +1291,7 @@ GG b421c057 96BD12C62621B8D6 Striker/COUNTRY=EU/PRODUCT_NO=2551-50
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
GG 67a43451 306E7F66E4B6F9EA Super Gear 23 in 1 [Ninja Gaiden]/EMU_MAPPER=36
GG 528cbbce FAE75543A7740E5E Super Golf/COUNTRY=JP/PRODUCT_NO=T-26017,T-26027
GG 73df5a15 43574420E8CF212A Superman - The Man of Steel/COUNTRY=EU/PRODUCT_NO=T-70068,70068-00
GG aa3f2172 0A5C6040EBCF152B Superman - The Man of Steel [Proto]/FLAGS=PROTO/COMMENT=Prototype version of the game.
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 @@ -196,6 +197,9 @@ void Machine_Set_Handler_MemRW(void)
case MAPPER_SMS_Korean_MSX_32KB_2000:
WrZ80 = WrZ80_NoHook = Write_Mapper_SMS_Korean_MSX_32KB_2000;
break;
case MAPPER_GG_Super_Gear_23_in_1_FFFE_FFFF:
WrZ80 = WrZ80_NoHook = Write_Mapper_GG_Super_Gear_23_in_1_FFFE_FFFF;
break;
}
}

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

case MAPPER_GG_Super_Gear_23_in_1_FFFE_FFFF:
Map_8k_ROM(0, 0x80 & tsms.Pages_Mask_8k);
Map_8k_ROM(1, 0x80 & tsms.Pages_Mask_8k);
Map_8k_ROM(2, 0x80 & tsms.Pages_Mask_8k);
Map_8k_ROM(3, 0x80 & tsms.Pages_Mask_8k);
Map_8k_ROM(4, 0x80 & tsms.Pages_Mask_8k);
Map_8k_ROM(5, 0x80 & tsms.Pages_Mask_8k);
Map_8k_RAM(6, 0);
Map_8k_RAM(7, 0);
g_machine.mapper_regs_count = 3;
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
75 changes: 75 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 @@ -952,6 +955,78 @@ WRITE_FUNC (Write_Mapper_SMS_Korean_MSX_32KB_2000)
Write_Error (Addr, Value);
}

// Mapper #36
// Super Gear 23 in 1 [Ninja Gaiden]
WRITE_FUNC(Write_Mapper_GG_Super_Gear_23_in_1_FFFE_FFFF)
{
if ((Addr == 0xFFFE) || (Addr == 0xFFFF)) // Configurable segment -----------------------------------------------
{
if (Addr == 0xFFFF)
{
g_machine.mapper_regs[1] = Value;
if (! (g_machine.mapper_regs[0] & 0x80)) {
// "menu mode"
if (Value & 0x08) {
// switch to "Sega mode"
g_machine.mapper_regs[0] |= 0x80;
g_machine.mapper_regs[2] = 1;
}
}
}
else if (Addr == 0xFFFE)
{
g_machine.mapper_regs[2] = Value;
if (! (g_machine.mapper_regs[0] & 0x80)) {
// "menu mode"
if (Value & 0x08) {
g_machine.mapper_regs[0] &= 0xCF;
g_machine.mapper_regs[0] |= (Value & 0x03) << 4;
if (g_machine.mapper_regs[0] & 0x20) {
drv_set(DRV_SMS);
} else {
drv_set(DRV_GG);
}
gamebox_resize_all();
VDP_UpdateLineLimits();
Video_GameMode_UpdateBounds();
} else if (Value & 0x04) {
g_machine.mapper_regs[0] &= 0xF3;
g_machine.mapper_regs[0] |= (Value & 0x03) << 2;
} else {
g_machine.mapper_regs[0] &= 0xFC;
g_machine.mapper_regs[0] |= Value & 0x03;
}
}
}
if (! (g_machine.mapper_regs[0] & 0x80)) {
// "menu mode"
Map_8k_ROM(0, 0x80 & tsms.Pages_Mask_8k);
Map_8k_ROM(1, 0x80 & tsms.Pages_Mask_8k);
Map_8k_ROM(2, 0x80 & tsms.Pages_Mask_8k);
Map_8k_ROM(3, 0x80 & tsms.Pages_Mask_8k);
Map_8k_ROM(4, 0x80 & tsms.Pages_Mask_8k);
Map_8k_ROM(5, 0x80 & tsms.Pages_Mask_8k);
} else {
// "Sega mode"
Map_8k_ROM(0, ((g_machine.mapper_regs[0] & 0x1F) * 4) & tsms.Pages_Mask_8k);
Map_8k_ROM(1, (((g_machine.mapper_regs[0] & 0x1F) * 4) | 1) & tsms.Pages_Mask_8k);
Map_8k_ROM(2, (((g_machine.mapper_regs[0] & 0x1F) * 4) | ((g_machine.mapper_regs[2] & 0x07) * 2)) & tsms.Pages_Mask_8k);
Map_8k_ROM(3, (((g_machine.mapper_regs[0] & 0x1F) * 4) | ((g_machine.mapper_regs[2] & 0x07) * 2) | 1) & tsms.Pages_Mask_8k);
Map_8k_ROM(4, (((g_machine.mapper_regs[0] & 0x1F) * 4) | ((g_machine.mapper_regs[1] & 0x07) * 2)) & tsms.Pages_Mask_8k);
Map_8k_ROM(5, (((g_machine.mapper_regs[0] & 0x1F) * 4) | ((g_machine.mapper_regs[1] & 0x07) * 2) | 1) & tsms.Pages_Mask_8k);
}
}

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
2 changes: 2 additions & 0 deletions meka/srcs/mappers.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
#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_GG_Super_Gear_23_in_1_FFFE_FFFF (36) // Registers at 0xFFFE and 0xFFFF (Super Gear 23 in 1 [Ninja Gaiden])

#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 @@ -96,6 +97,7 @@ WRITE_FUNC (Write_Mapper_SMS_Korean_MD_FFF0);
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_GG_Super_Gear_23_in_1_FFFE_FFFF);
//-----------------------------------------------------------------------------
void Out_SC3000_SurvivorsMulticarts_DataWrite(u8 v);

Expand Down
35 changes: 32 additions & 3 deletions meka/srcs/saves.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,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 @@ -144,13 +145,39 @@ void Load_Game_Fixup(void)
case MAPPER_SMS_Korean_MSX_32KB_2000:
WrZ80_NoHook(0x2000, g_machine.mapper_regs[0]);
break;
case MAPPER_GG_Super_Gear_23_in_1_FFFE_FFFF:
if (1) {
unsigned int mapper_mode = g_machine.mapper_regs[0];
unsigned int slot_8000_page_offset_16k_FFFF = g_machine.mapper_regs[1];
unsigned int slot_4000_page_offset_16k_FFFE = g_machine.mapper_regs[2];
g_machine.mapper_regs[0] = 0x00;
g_machine.mapper_regs[1] = 0x00;
g_machine.mapper_regs[2] = 0x00;
WrZ80_NoHook(0xFFFE, mapper_mode & 0x03);
WrZ80_NoHook(0xFFFE, 0x04 | ((mapper_mode & 0x0C) >> 2));
WrZ80_NoHook(0xFFFE, 0x08 | ((mapper_mode & 0x30) >> 4));
if (mapper_mode & 0x80) {
// "Sega mode"
WrZ80_NoHook(0xFFFF, 0x08);
WrZ80_NoHook(0xFFFF, slot_8000_page_offset_16k_FFFF);
WrZ80_NoHook(0xFFFE, slot_4000_page_offset_16k_FFFE);
}
g_machine.mapper_regs[0] = mapper_mode;
g_machine.mapper_regs[1] = slot_8000_page_offset_16k_FFFF;
g_machine.mapper_regs[2] = slot_4000_page_offset_16k_FFFE;
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 @@ -339,6 +366,7 @@ int Save_Game_MSV(FILE *f)
case MAPPER_SMS_Korean_MD_FFF5:
case MAPPER_SMS_Korean_MD_FFFA:
case MAPPER_SMS_Korean_MSX_32KB_2000:
case MAPPER_GG_Super_Gear_23_in_1_FFFE_FFFF:
default:
fwrite (RAM, 0x2000, 1, f); // Do not use g_driver->ram because of g_driver video mode change
break;
Expand Down Expand Up @@ -518,6 +546,7 @@ int Load_Game_MSV(FILE *f)
case MAPPER_SMS_Korean_MD_FFF5:
case MAPPER_SMS_Korean_MD_FFFA:
case MAPPER_SMS_Korean_MSX_32KB_2000:
case MAPPER_GG_Super_Gear_23_in_1_FFFE_FFFF:
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 dd681f2

Please sign in to comment.