|
ForumsSega Master System / Mark III / Game GearSG-1000 / SC-3000 / SF-7000 / OMV |
Home - Forums - Games - Scans - Maps - Cheats - Credits Music - Videos - Development - Hacks - Translations - Homebrew |
Author | Message |
---|---|
|
슈퍼게임150 (Super Game 150) [label] / 슈퍼게임 (Super Game) [menu]
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. |
|
|
Posted: Sat Aug 26, 2023 3:41 pm |
Added game page and getting ready to release:
https://www.smspower.org/Games/SuperGame150-SMS |
|