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 - Dumping "Super Game 150" (슈퍼게임150)

Reply to topic
Author Message
  • Joined: 22 Apr 2018
  • Posts: 530
Reply with quote
슈퍼게임150 (Super Game 150) [label] / 슈퍼게임 (Super Game) [menu]
Post Posted: Tue Jan 10, 2023 4:54 am
I call it "Super Game 150 (KR)", but the actual name is written in Hangul:

슈퍼게임150 (Super Game 150 ~ syupeogeim 150) [label top]
슈퍼게임 (Super Game ~ syupeogeim) [main menu]

This is a collection of 150 games, including many 32KB SMS games and MSX ports.

My cartridge is loose (no box or manual.) The label front has a picture of various cartoonish animals wearing ties in a somewhat fantastic rural setting.

The front of the cartridge says:

MEGA ROM (with an MSX-style Mega ROM mark)
겜보이 (Gam*Boy ~ gemboi)

Other than that and the collection title there are no other markings on the cartridge.

Total ROM size is 2MB, and uses 8KB paging with a somewhat flexible mapper.

Three of the 8KB pages are duplicated: 0x78 and 0x79 are identical, 0xDC and 0xDD are identical, and 0xF8 and 0xF9 are identical.

Certain pages are used to implement special mapper features in addition to being accessible through normal paging — e.g. 0x80 and 0x81 together provide an MSX BIOS replacement mapped into 0x0000…0x3FFF when running MSX ports, and 0xFF is used as a "filler" for both 0x8000…0x9FFF and 0xA000…0xBFFF when running 32KB MSX games.

The memory mapper appears to use two registers at 0xFFFC and 0xFFF3.

I call the register at 0xFFFC Mode
I call the register at 0xFFF3 Mapper

- initial Mode value is 0x00
- initial Mapper value is 0x00
- Only the upper 4 bits of Mode appear to do anything (Mode & 0xF0)
- Only the lower 6 bits of Mapper appear to do anything (Mapper & 0x3F)
- (Mode & 0x10) * 8 + (Mapper & 0x3E) * 2 selects a starting page for Mapper indexing
- Mode & 0xE0 selects the mirroring/mapping mode; I call this "Config"
- Mapper even/odd (Mapper & 0x01) selects one of two patterns for each mirroring/mapping mode (except when those are the same)

Some examples:



FFFC,FFF3 Contents
------------------
20,00 Main Menu
20,02 SMS Pit Pot
20,0a SMS Teddy Boy
40,3f MSX Cabbage Patch Kids
80,29 MSX Galaga
a0,1a MSX Wonder Boy
a0,22 MSX Knightmare
a0,24 MSX Goonies
a0,26 MSX TwinBee



Mapper modes:

The following table explains each mapper mode using shortcodes.
Each shortcode shows, in order, the contents of each mappable 8KB page:



Key to shortcode layout:

+------ 0x0000…0x1FFF first shortcode symbol
|
|+----- 0x2000…0x3FFF second shortcode symbol
||
||+---- 0x4000…0x5FFF third shortcode symbol
|||
|||+--- 0x6000…0x7FFF fourth shortcode symbol
||||
||||+-- 0x8000…0x9FFF fifth shortcode symbol
|||||
|||||+- 0xA000…0xBFFF sixth shortcode symbol
||||||
ABCDEF

Key to shortcode symbols:

0 - 8KB page number (Mode & 0x10) * 8 + (Mapper & 0x3E) * 2 + 0
1 - 8KB page number (Mode & 0x10) * 8 + (Mapper & 0x3E) * 2 + 1
2 - 8KB page number (Mode & 0x10) * 8 + (Mapper & 0x3E) * 2 + 2
3 - 8KB page number (Mode & 0x10) * 8 + (Mapper & 0x3E) * 2 + 3
u - 8KB page number 0x80 // lower 8KB (0x0000…0x1FFF) of MSX BIOS replacement
v - 8KB page number 0x81 // upper 8KB (0x2000…0x3FFF) of MSX BIOS replacement
y - 8KB page number 0xFE // ???
z - 8KB page number 0xFF // ???

Active shortcode determination:

Config (Mode & 0xE0)
 |
 |  Active Shortcodes
 |          |
 |      +---+---+
 |      |       |
 |   (Mapper & 0x01)
 |     0x00    0x01
 |    (Even)  (Odd)
 |      |       |    Explanation
-+------+-------+--------------
0x00  0101zz 2323zz  16KB SMS
0x20  0123zz 0123zz  32KB SMS
0x40  uv01zz uv23zz  MSX mapped at 0x4000
0x60  uvyz01 uvyz23  MSX mapped at 0x8000
0x80  uv0110 uv2332  MSX (8KB permuted)
0xA0  uv0123 uv2301  MSX (16KB permuted)
0xC0  zzzzzz zzzzzz  ???
0xE0  zzzzzz zzzzzz  ???



Squirrel script fragment I used to dump the cartridge via the Tengu GG dumper + Master Gear Converter + (homemade) Mark Master Converter:



function cpu_dump_sg150(d, rom_size, banksize, offset)
{
    // Korean Super Game 150 ~ Super Game

    // run with:
    // - offset=1 for the first megabyte
    // - offset=2 for the second megabyte

    local max_dump_size = 0x100000;
    local block_step = 0x8000;
    local block_start = 0x0000;
    local bias = (offset - 1) * (max_dump_size / block_step);

    local mode_register = 0xFFFC;
    local mapper_register = 0xFFF3;

    for(local a = 0x0000; a < rom_size; a += block_step)
    {
        local i = bias + (a / block_step);

        local low_block = i * 2;
        local mode_byte = 0x20 | ((low_block & 0x40) ? 0x10 : 0x00);
        local mapper_byte = low_block & 0x3E;
        cpu_write(d, mode_register, mode_byte);
        cpu_write(d, mode_register, mode_byte);
        cpu_write(d, mapper_register, mapper_byte);
        cpu_write(d, mapper_register, mapper_byte);
        cpu_read(d, block_start, block_step);
    }
}



ROM fingerprint info:

2.0M Super Game 150 (KR).sms
Checking for export header with matching CRC... NO
sha256:b39ebb28bb87fa4841a3a82118014f479fe257072319e5b207a1449326db0997 Super Game 150 (KR).sms
sha1:58e175ef16edf4e17e00fdd247f5a67ce0407e6e Super Game 150 (KR).sms
md5:096055cb99481e0b296daf9a65d30154 Super Game 150 (KR).sms
mekacrc:CFD4EB5527452E83 Super Game 150 (KR).sms
crc32:1b8956d1 Super Game 150 (KR).sms

The attached meka diff adds support for this (as mapper #25) and also includes multicart mappers #21, #22, #23, and #24.
meka-mappers-21-22-23-24-25.diff.txt (23.71 KB)
meka diff - adds support for this (as mapper #25) and also includes multicart mappers #21, #22, #23, and #24.
Super Game 150 (KR).zip (1.21 MB)
ROM dump

  View user's profile Send private message
  • Site Admin
  • Joined: 08 Jul 2001
  • Posts: 8652
  • Location: Paris, France
Reply with quote
Post Posted: Sat Aug 26, 2023 3:41 pm
Added game page and getting ready to release:
https://www.smspower.org/Games/SuperGame150-SMS
  View user's profile Send private message Visit poster's website
Reply to topic



Back to the top of this page

Back to SMS Power!