Overview

The Nintendo Wii console featured a "Virtual Console" section in its online store, which featured a total of 17 Master System titles over its lifetime. (No other Sega 8-bit systems were supported.) This page gives some of the details of how this was achieved.

Downloaded app format

The downloaded apps seem to include the following:

  1. An unaltered ROM image, identical to those used by emulators
  2. A patch file, containing any edits made to the game - see below
  3. An emulator configuration file, featuring settings such as:
    1. Region settings (presumably for display scaling and frame rate)
    2. Controller mapping
    3. Volume and brightness compensation
    4. Emulator module selection (some games had more advanced features like game saving)
  4. A compressed archive of the manual, in HTML format
  5. A small version of the Opera browser, for displaying the manual

Game versions featured

This table lists the details of the ROMs used.

GameRegionsFilenameCRC32, MD5, SHA-1Comments
Alex Kidd in Miracle World / Alex Kidd no Miracle World (アレックスキッドのミラクルワールド) / Alex Kidd (알렉스키드)EU, USAlexKiddInMiracleWorld_UE.SMS17a40e29
3d9a8d5c2d6d3f8ff63a8f7c77ffa983
8cecf8ed0f765163b2657be1b0a3ce2a9cb767f4
Uses the v0 ROM variant, with a minor glitch when falling between rooms in castles
Alex Kidd in Shinobi WorldEU, USAlexKiddInShinobiWorld_UE.SMSd2417ed7
d62b631506913712a2103f54912458a5
e7c7c24e208afb986ab389883f98a1b5a8249fea
 
Alex Kidd: The Lost Stars (アレックス キッド ザ ロストスターズ / 알렉스키드 로스트스타즈)EU, USAlexKiddTheLostStars_JUE.SMSc13896d5
ea50dcdd1241667f32d39d606a9f7083
6dbf2684c3dfea7442d0b40a9ff7c8b8fc9b1b98
 
Ashura (阿修羅) / Secret Command (Secret Commando) / Rambo: First Blood Part IIEU, USscommndo.SMS00529114
3f6c5515a2e39826fbf816780298701c
e7a952f8bd6dddbb365870e906801021b240a533
Filename matches early internet ROM dump name
Enduro Racer (エンデューロレーサー) / Super CrossEU, USEnduroRacer_UE.SMS00e73541
06779a1a9dbada60efb1f37e37040a5b
10dc132166c1aa47ca7b89fbb1f0a4e56b428359
 
Fantasy Zone (ファンタジーゾーン)EU, USFantasyZone1_JUE_02.SMS65d7e4e0
fed8690ee5fb895c09caa8e2b879ebd6
0278cd120dc3a7707eda9314c46c7f27f9e8fdda
 
Fantasy Zone II - The tears of OPA-OPA / Fantasy Zone II - Opa-Opa no Namida (ファンタジーゾーンII オパオパの涙)EU, USFantasyZone2_UE_01.SMSb8b141f9
481a01c4e768c535ee18d6d78815fc89
b84831378c7c19798b6fd560647e2941842bb80a
 
Hokuto no Ken (北斗の拳)JPHOKUTO-B.SMS24f5fe8c
ddd6b56e864a7dfd74a9e04bc4407f41
26c5da3ee48bc0f8fd3d20f9408e584242edcd9d
Filename matches original SMS Power! ROM release in November 1999
Phantasy Star (ファンタシースター, 환타지스타)EU, USPhantasyStar1_UE.SMS00bef1d7
1110938df80f4e44c8213d7f85cfb5e6
07fcf297be4f4c9d92cd3f119a7ac48467e06838
ROM is the most common v3 variant, with a bugfix from the rarer v2
R-TypeEU, USRType_UE.SMSbb54b6b0
9e5507d51ac6f24c702a52a7abce0d3c
08ec70a2cd98fcb2645f59857f845d41b0045115
 
Sonic ChaosEU, USSonicChaos_UE.SMSaedf3bdf
1d661134b14eedf6b4ae1c907581fd96
f64c8eea26a103582f09831c3e02c6045a6aff94
 
Sonic The HedgehogEU, USSonic1_UE.SMSb519e833
dc13a61eafe75c13c15b5ece419ac57b
6b9677e4a9abb37765d6db4658f4324251807e07
 
Sonic The Hedgehog 2EU, USSonic2_UE_01.SMSd6f2bfca
0ac157b6b7e839953fc8eba7538fb74a
689339bac11c3565dd774f8cd4d8ea1b27831118
ROM is the later v1 variant with bugfixes and gameplay adjustments
Space Harrier (スペースハリアー)EUSpaceHarrier_E.SMSca1d3752
dde5d7a2694e6917bafab185594a267e
9e92d8e27fad71635c71612e8bdd632d760f9a2d
 
Space Harrier (スペースハリアー)USSpaceHarrier_JU.SMSbeddf80e
b2e5047df186af7c02da17f1b285ae4f
51ba2185a2b93957c1c51b0a2e2b80394463bed8
 
Wonder Boy / Super Wonder Boy (スーパーワンダーボーイ)EU, USWonderBoy1_JUE.SMS73705c02
7e805aa51bfb5f206c950a32ebcdab7c
63149f20bf69cd2f24d0e58841fcfcdace972f49
 
Wonder Boy in Monster Land / Super Wonder Boy Monster World (スーパーワンダーボーイ モンスターワールド) / Super Wonder Boy Super Monster LandEU, USMonsterWorld1_UE_01.SMS8cbef0c1
8f8aaac492de96f2cfddb9d1a57dd979
51715db7a49a18452292dadb2bba0108aa6d6402
 
Wonder Boy III: The Dragon's Trap / Monster World II (モンスターワールドII)EU, USMonsterWorld2_UE.SMS679e1676
e7f86c049e4bd8b26844ff62bd067d57
99e73de2ffe5ea5d40998faec16504c226f4c1ba
 

Apart from where mentioned above, filenames seem to match GoodSMS names (commonly found on the internet) with almost all non-alphabetical character removed. This suggests that all of the ROM images were obtained from the internet rather than from Sega's internal archives.

Patches

Some of the games have text-based patches, apparently to remove flashing and red cross imagery - which is a registered logo of the Red Cross in many countries, and thus a potential legal liability, despite also being widely considered a symbol of medicine/hospitals.

Fantasy Zone

>0x7ff0		string		"TMR SEGA"
>>0x7ffc	belong		0x5250024f

0x0007b8:
	byte	0xc9		# boss defeat flash skip

The first two lines confirm the ROM image matches. The last one adds a ret opcode to skip the flashing effect when a boss is defeated.

Hokuto no Ken

#>0x7ffc		string		"03230077"
>0x7ff0		string		"TMR SEGA"
>>0x7ffc	belong		0x0313003f

0x000040:
	byte	0x3e,0x3f,0x3e,0x3f,0x3e,0x3f,0x3e	# ラオウを倒した時の点滅色テーブル
0x005e00:
	byte	0x40,0x00				# 矢印の参照アドレス(元は0x5eb0)
#	leshort	0x0040					# 矢印の参照アドレス(元は0x5eb0)

Translations:

The patch inserts an alternate mild flashing colour table (white and pale yellow) and edits a pointer to use it in the aforementioned place.

Phantasy Star

>0x7ff0		string		"TMR SEGA"
>>0x7ffc	beshort		0x0095


#
# 赤十字パッチ(JP,UE共通)
#
# city hospital bg table
0x05c667:
	byte	0x00
0x05c675:
	byte	0x00
0x05c681:
	byte	0x00
0x05c68d:
	byte	0x00
0x05c699:
	byte	0x00
0x05c6a5:
	byte	0x00

# village hospital bg table
0x05c8f0:
	byte	0x00
0x05c8fe:
	byte	0x00
0x05c90a:
	byte	0x00
0x05c916:
	byte	0x00
0x05c922:
	byte	0x00
0x05c92e:
	byte	0x00

# city hospital map cg L ($052)
0x058796:
	byte	0x0c, 0x14, 0x17, 0x14, 0x14, 0x24	# plane 0
0x059200:
	byte	0xf3, 0xeb, 0xe8, 0xeb, 0xeb, 0xdb	# plane 1
0x059c09:
	byte	0x06, 0x06, 0x07, 0x07, 0x06, 0x06	# plane 2
0x05a4b7:
	byte	0x0e, 0x16, 0x17, 0x17, 0x16, 0x26	# plane 3

# city hospital map cg R ($055)
0x0587ab:
	byte	0x50, 0x48, 0xc8, 0x48, 0x48, 0x44
0x059216:
	byte	0xaf, 0xb7, 0x37, 0xb7, 0xb7, 0xbb
0x059c1d:
	byte	0x60, 0x60, 0xe0, 0xe0, 0x60, 0x60
0x05a4cd:
	byte	0x70, 0x68, 0xe8, 0xe8, 0x68, 0x64

# village hospital map cg UL ($135)
0x058d44:
	byte	0xf6	# line 7 plane 0
0x059794:
	byte	0xe9	# line 7 plane 1
0x05a095:
	byte	0xe6	# line 7 plane 2
0x05aa72:
	byte	0xe6	# line 7 plane 3

# village hospital map cg UR ($136)
0x058d4c:
	byte	0x68	# line 7 plane 0
0x05979c:
	byte	0x87	# line 7 plane 1
0x05a09d:
	byte	0x60	# line 7 plane 2
0x05aa7a:
	byte	0x70	# line 7 plane 3

# village hospital map cg DL ($137)
0x058d4d:
	byte	0xe6, 0xe7, 0xe7, 0xe6, 0xe6	# plane 0
0x05979d:
	byte	0xc9, 0xd8, 0xd8, 0xd9, 0x99	# plane 1
0x05a09e:
	byte	0xc6, 0xc7, 0xc7, 0xc6, 0x86	# plane 2
0x05aa7b:
	byte	0xd6, 0xc7, 0xc7, 0xc6, 0x86	# plane 3

# village hospital map cg DR ($138)
0x058d55:
	byte	0x6c, 0xe4, 0xe4, 0x44, 0x44	# plane 0
0x0597a5:
	byte	0x83, 0x03, 0x03, 0xa1, 0xa1	# plane 1
0x05a0a6:
	byte	0x60, 0xe0, 0xe0, 0x60, 0x60	# plane 2
0x05aa83:
	byte	0x70, 0xf8, 0xf8, 0x7a, 0x7a	# plane 3

Translation:

The patches change the appearance of hospitals in the game, by changing their external appearance from a red cross to the letter "H", and removing red crosses on the inside:

BeforeAfter

This is especially tricky because the data in question is actually compressed; the patches modify the compressed data in such a way that it changes the uncompressed result. This is helped by the fact that the shape of "+" is similar to "H".

Download this patch in IPS format

Sonic The Hedgehog 2

>0x7ff0		string		"TMR SEGA"

#
# 7-3ステージで最終ボスのエッグマンを撃破後のエンディング青色フラッシュ修正
#(エッグマン消失時、テイルズ救出時演出での青色点滅)
# ※全ての面でカオスエメラルドを取得してクリアする必要があります。

# rev. A(MPR-15159A)
>>0x7ffc	belong		0x15900140
0x07af31:
	byte	0x10		# 元は0x3e	
0x07af3e:
	byte	0x0e		# 元は0x00	


# normal(MPR-15159)
>>0x7ffc	belong		0x15900040
0x07afb1:
	byte	0x10		# 元は0x3e	
0x07afbe:
	byte	0x0e		# 元は0x00	

Translations:

It seems to be detecting the two ROM variants known (v0 and v1) based on their headers, and patching them both - but only v1 is included in the Virtual Console app.

Wonder Boy in Monster Land

>0x7ff0		string		"TMR SEGA"

#
# 赤十字修正
#

# UE 
>>0x7ffc	belong		0x07700140

0x001d22:
		byte		0xcd,0x8a,0x4c	# call 4c8aH
		byte		0xcd,0x8a,0x4c	# call 4c8aH
		byte		0xc3,0x0a,0x4d	# jp   4d0aH

0x0031fa:	# 看護師転送時の書き換えフック
		byte		0x20,0x1e	# call 0660H -> call 1e20H

0x004359:	# 病院ドア転送時の書き換えフック
		byte		0x00,0x1e	# call 0660H -> call 1e00H


0x001e00:	# 病院ドアの書き換え処理
		byte		0xcd,0x60,0x06	# call 0660H
		byte		0x01,0x40,0x00	# ld bc,0040H
		byte		0x11,0xc0,0x68	# ld de,68c0H
		byte		0x21,0x40,0x1e	# ld hl,1e40H
		byte		0xc3,0x38,0x03	# call 0338H; ret

0x001e20:	# 看護師の書き換え処理
		byte		0xcd,0x60,0x06	# call 0660H
		byte		0x01,0x40,0x00	# ld bc,0040H
		byte		0x11,0xa0,0x6a	# ld de,6aa0H
		byte		0x21,0x80,0x1e	# ld hl,1e80H
		byte		0xcd,0x38,0x03	# call 0338H

		byte		0x01,0x20,0x00	# ld bc,0020H
		byte		0x11,0xe0,0x6c	# ld de,6ce0H
		byte		0x21,0xc0,0x1e	# ld hl,1ec0H
		byte		0xc3,0x38,0x03	# call 0338H; ret


# 書き換え用SMSのベタパターン(1byteで8ドットのビットマップ、4プレーン単位)
0x001e40:	# 病院ドア(十字->H印)、縦2パターン分を水平反転して4マス表示
		byte		0x00,0xff,0x00,0x00,0x7f,0x80,0x00,0x00,0x7f,0x80,0x00,0x00,0x61,0x9e,0x00,0x00 # 上
		byte		0x6d,0x9e,0x00,0x00,0x6d,0x9e,0x00,0x0c,0x6c,0x9f,0x00,0x0c,0x6f,0x9f,0x00,0x0c
		byte		0x6f,0x9f,0x00,0x0f,0x6c,0x9f,0x00,0x0c,0x6d,0x9e,0x00,0x0c,0x6d,0x9e,0x00,0x0c # 下
		byte		0x61,0x9e,0x00,0x00,0x7f,0x80,0x00,0x00,0x7f,0x80,0x00,0x00,0x00,0xff,0x00,0x00

0x001e80:	# 看護師帽子(十字->無地)、2パターン分
		byte		0xf8,0xff,0xf8,0x00,0xe7,0xf8,0xe0,0x00,0x9f,0xe0,0x80,0x00,0x7f,0x80,0x00,0x00 # 左
		byte		0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00
		byte		0x1f,0xff,0x1f,0x00,0xe7,0x1f,0x07,0x00,0xf9,0x07,0x01,0x00,0xfc,0x01,0x00,0x02 # 右
		byte		0xfc,0x00,0x00,0x03,0xfc,0x00,0x00,0x03,0xf0,0x00,0x00,0x0f,0xe0,0x00,0x01,0x1f
0x001ec0:	# 看護師腹(十字->無地)、1パターン分を水平反転して2マス表示
		byte		0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xfb,0x00,0x00,0x04
		byte		0xe7,0x00,0x00,0x18,0x1f,0x00,0x00,0xe0,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00


Translations:

Red crosses are again changed into the letter H on hospital doors and removed inside hospitals.

BeforeAfter

Download this patch in IPS format

Wonder Boy III

#
# patch for MASTER SYSTEM Monster World II(Wonder Boy III)[UE]
#
>0x7ff0		string		"TMR SEGA"
>>0x7ffc	belong		0x26700040

#
# 海外版の時、FMチェックをスキップしてしまうのを修正
#
0x00025b: 	byte	0x00,0x00	# jr 0297h -> nop; nop


#
# 光過敏修正
#

# ドラゴンに変身にするときのフラッシュカラー(mk3 B2G2R2) 
0x01c8b4: 	byte	0x10	# 0x30
0x01c8b7: 	byte	0x01	# 0x03
0x01c8ba: 	byte	0x04	# 0x0c
0x01c8bd: 	byte	0x11	# 0x3f

# メカドラゴンへのダメージフラッシュカラー(mk3 B2G2R2) 
0x01c8c3:	byte	0x01	# 0x03
0x01c8c6:	byte	0x05	# 0x0f
0x01c8c9:	byte	0x01	# 0x03
0x01c8cc:	byte	0x05	# 0x0f

# メカドラゴンを倒した時のフラッシュカラー(mk3 B2G2R2) 
0x01c8d2: 	byte	0x01	# 0x03
0x01c8d8: 	byte	0x01	# 0x03
0x01c8de: 	byte	0x01	# 0x03
0x01c8e4: 	byte	0x01	# 0x03


#
# 赤十字修正
#

# 書き換え用SMSのベタパターン(1byteで8ドットのビットマップ、4プレーン単位=4bytesで8x1個分)
0x021500:	# アイテムアイコン、左
#	byte	0xff, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x7f, 0x7f, 0xc0, 0x7f, 0x7f, 0x7f, 0xc3, 0x7c, 0x7c, 0x7c # 左上
#	byte	0xc2, 0x7d, 0x7c, 0x7d, 0xc2, 0x7d, 0x7c, 0x7d, 0xde, 0x61, 0x60, 0x61, 0xd0, 0x6f, 0x60, 0x6f 
	byte	0xff, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x7f, 0x7f, 0xc0, 0x7f, 0x7f, 0x7f, 0xde, 0x61, 0x61, 0x61 
	byte	0xd2, 0x6d, 0x61, 0x6d, 0xd2, 0x6d, 0x61, 0x6d, 0xd3, 0x6c, 0x60, 0x6c, 0xd0, 0x6f, 0x60, 0x6f 

#	byte	0xd0, 0x6f, 0x60, 0x6f, 0xde, 0x61, 0x60, 0x61, 0xc2, 0x7d, 0x7c, 0x7d, 0xc2, 0x7d, 0x7c, 0x7d # 左下
#	byte	0xc3, 0x7c, 0x7c, 0x7c, 0xc0, 0x7f, 0x7f, 0x7f, 0xbf, 0x40, 0x7f, 0x40, 0xff, 0x00, 0x00, 0x00 
	byte	0xd0, 0x6f, 0x60, 0x6f, 0xd3, 0x6c, 0x60, 0x6c, 0xd2, 0x6d, 0x61, 0x6d, 0xd2, 0x6d, 0x61, 0x6d 
	byte	0xde, 0x61, 0x61, 0x61, 0xc0, 0x7f, 0x7f, 0x7f, 0xbf, 0x40, 0x7f, 0x40, 0xff, 0x00, 0x00, 0x00 

0x021700:	# アイテムアイコン、右
#	byte	0xff, 0x00, 0x00, 0x00, 0xfd, 0xfe, 0xfe, 0xfe, 0x03, 0xfc, 0xfe, 0xfc, 0xc3, 0x3c, 0x3e, 0x3c # 右上 
#	byte	0x43, 0xbc, 0x3e, 0xbc, 0x43, 0xbc, 0x3e, 0xbc, 0x7b, 0x84, 0x06, 0x84, 0x0b, 0xf4, 0x06, 0xf4 
	byte	0xff, 0x00, 0x00, 0x00, 0xfd, 0xfe, 0xfe, 0xfe, 0x03, 0xfc, 0xfe, 0xfc, 0x7b, 0x84, 0x86, 0x84 
	byte	0x4b, 0xb4, 0x86, 0xb4, 0x4b, 0xb4, 0x86, 0xb4, 0xcb, 0x34, 0x06, 0x34, 0x0b, 0xf4, 0x06, 0xf4 

#	byte	0x0b, 0xf4, 0x06, 0xf4, 0x7b, 0x84, 0x06, 0x84, 0x43, 0xbc, 0x3e, 0xbc, 0x43, 0xbc, 0x3e, 0xbc # 右下 
#	byte	0xc3, 0x3c, 0x3e, 0x3c, 0x03, 0xfc, 0xfe, 0xfc, 0xff, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x00, 0x00 
	byte	0x0b, 0xf4, 0x06, 0xf4, 0xcb, 0x34, 0x06, 0x34, 0x4b, 0xb4, 0x86, 0xb4, 0x4b, 0xb4, 0x86, 0xb4 
	byte	0x7b, 0x84, 0x86, 0x84, 0x03, 0xfc, 0xfe, 0xfc, 0xff, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x00, 0x00 

0x02AAE0:	# 看護婦帽子、左
#	byte	0x00, 0xff, 0x3f, 0xff, 0x00, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff 
#	byte	0x0f, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0x03, 0xff, 0x9f, 0xff 
	byte	0x00, 0xff, 0x3f, 0xff, 0x00, 0xff, 0xff, 0xff, 0x0c, 0xff, 0xff, 0xff, 0x0c, 0xff, 0xff, 0xff 
	byte	0x0f, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0x0c, 0xff, 0xff, 0xff, 0x0c, 0xff, 0x9f, 0xff 

0x02ABC0:	# 看護婦帽子、右
#	byte	0x01, 0xfe, 0xdf, 0xfe, 0x06, 0xf9, 0xf7, 0xf9, 0x02, 0xfd, 0xfb, 0xfd, 0x00, 0xff, 0xfd, 0xff 
#	byte	0xc0, 0xff, 0xfd, 0xff, 0xc7, 0xf8, 0xf8, 0xff, 0x19, 0xe0, 0xc6, 0xff, 0x22, 0xc0, 0x9d, 0xff 
	byte	0x01, 0xfe, 0xdf, 0xfe, 0x06, 0xf9, 0xf7, 0xf9, 0xc2, 0xfd, 0xfb, 0xfd, 0xc0, 0xff, 0xfd, 0xff 
	byte	0xc0, 0xff, 0xfd, 0xff, 0xc7, 0xf8, 0xf8, 0xff, 0xd9, 0xe0, 0xc6, 0xff, 0xa2, 0xc0, 0x9d, 0xff

Translations:

The flashing effects are all reduced from maximum intensity to minimum intensity (i.e. colour value 1 instead of 3 per channel). The comments all show the previous values. The red crosses in the village hospital (the icon and the nurse's hat) are changed to the letter H:

BeforeAfter

Download this patch in IPS format




Return to top
0.177s