I want to make this a big post, but there really isn't much to say. It might not be news to some, but Sega (of Japan?) seems to actually patch their games before they release them - either by disassembly or with the source code right next to them. The Genesis/Megadrive roms are also in their proprietary format - SGD (trivia: some of the games in drx's big proto release last year were in .SGD format). But that isn't really interesting, what is interesting is that Sega does try to patch some things in their games before releasing them on the Virtual Console. One of these games that are heavily patched is Phantasy Star IV.
All the comments in this patch file are in Japanese with no clear distinction as to who might've done it. The patches seem to fix some color, but most importantly, the imfamous lvl99 bug in the game. Check it out (this was taken from the EU release of the game/wad, but the patch seems to be universal):
There are some other games that have these patch files. If I find a WAD of an interesting game, I'd be happy to look for some patch notes (some master system games have some). I can already say that none of the Sonic games that I know of have any. But I'm very interested in the recently released "Japan-Only" stuff - most notably Pulseman.
Hope this topic was interesting.
Ninja Edit: I have some patch notes from Phantasy Star II. As some of you know, Yuji Naka programmed that game. And it's been reported recently that he does assist in patching the old games he's worked on. Anyone interested?
All the comments in this patch file are in Japanese with no clear distinction as to who might've done it. The patches seem to fix some color, but most importantly, the imfamous lvl99 bug in the game. Check it out (this was taken from the EU release of the game/wad, but the patch seems to be universal):
CODE
>0x120 string "PHANTASY STAR The end of the millennium"
#
# colorup_r1の上限修正版(jue共通)
#
0x2fff00:
beshort 0x7600 # moveq.l #$00,d3
beshort 0x0c78,0x0100,0xec28 # cmpi.w #$0100,$ec28.w
beshort 0x6d0e # blt.s 1f
beshort 0x0c78,0x0108,0xec28 # cmpi.w #$0108,$ec28.w
beshort 0x6e06 # bgt.s 1f
beshort 0x4a38,0xee69 # tst.b $ee69.w
beshort 0x6624 # bne.s 4f
#1:
beshort 0x41f8,0xfb02 # lea.l $fb02.w,a0
beshort 0xd0c0 # adda.w d0,a0
beshort 0x7e0c # moveq.l #$0c,d7
#2:
beshort 0x3a10 # move.w (a0),d5
beshort 0xe67d # ror.w d3,d5
beshort 0x3405 # move.w d5,d2
beshort 0x5445 # addq.w #2,d5
beshort 0x3205 # move.w d5,d1
beshort 0x0c41,0x000c # cmpi.w #$000c,d1;上限修正値(元は$000e)
beshort 0x6f04 # ble.s 3f
beshort 0x3a3c,0x000c # move.w #$000c,d5;上限修正値(元は$000e)
#3:
beshort 0xe77d # rol.w d3,d5
beshort 0x30c5 # move.w d5,(a0)+
beshort 0x51cf,0xffe6 # dbra.w d7,2b
#4:
beshort 0x4e75 # rts
#
# lvl99バグパッチ(jue共通)
#
0x2ffe00:
beshort 0x3028,0x0008 # move.w $0008(a0),d0
beshort 0x0c40,0x0063 # cmpi.w #$0063,d0;lvl99?
beshort 0x6608 # bne 1f
beshort 0x323c,0x0000 # move.w #$0000,d1;not99 = false
beshort 0x5c8b # addq.l #$06,a3;バグの根幹、99の場合もlvupdataのポインタ(a3)を次の人に
beshort 0x4e75 # rts
#1:
beshort 0x323c,0xffff # move.w #$ffff,d1;not99 = true
beshort 0x4e75 # rts
#
# jp
#
>0x180 string "GM G-5524 -00"
# 光過敏対応
0x035ca2:
beshort 0x0888 # player critical hit flash color(元は0x0eee)
0x0359da:
beshort 0x0888 # boss damage flash color(元は0x0eee)
0x03fdd6:
beshort 0x0eec # destruction cyan color(元は0x0ec6)
0x02dfa4:
beshort 0x000f # last boss megido イントロの赤増加頻度(0x0008/(n+1))
0x02dfb0:
beshort 0x0002 # last boss megido イントロの赤増加回数(元4回)
0x02e0e1:
byte 0x01 # last boss megido 爆発赤減少回数n+1(元3+1回)
0x02e101:
byte 0x01 # last boss megido 爆発赤増加回数n+1(元3+1回)
0x02dba4:
beshort 0x002f,0xff00 # jsr colorup_r1をパッチルーチンへ
0x02dc36:
beshort 0x000c # last boss dead action 赤増減エフェクト上限修正値
# メギドバグ修正
0x071700:
beshort 0x0061 # 元は0x0060(ラザンと被る)、海外では修正済み
# lvl99バグ修正
0x003e66:
beshort 0x4eb9,0x002f,0xfe00 # jsr 0x2ffe00;lvl99の場合もlvupdataのポインタ(a3)を進めるパッチ処理を呼ぶ
beshort 0x4a41 # tst.w d1;check not99
#### デバッグ用戦闘後取得経験値操作
###0x002f34:
### beshort 0x223c,0x0020,0x0000 # move.l #$00200000,d1
#
# us
#
>0x180 string "GM MK-1307 -00"
# 光過敏対応
0x00c06c:
beshort 0x117c,0x0004 # move.b btdmg_tim+1(a4),colch_tim(a0) -> move.b #$0004,colch_tim(a0); 雑魚のクリティカルダメージフラッシュを固定時間に
0x035cb8:
beshort 0x0888 # player critical hit flash color(元は0x0eee)
0x0359f0:
beshort 0x0666 # boss damage flash color(元は0x0eee)
0x03fdec:
beshort 0x0eee # destruction cyan color(元は0x0ec6)
0x02dfb2:
beshort 0x000f # last boss megido イントロの赤増加頻度(0x0008/(n+1))
0x02dfbe:
beshort 0x0002 # last boss megido イントロの赤増加回数(元4回)
0x02e0ef:
byte 0x01 # last boss megido 爆発赤減少回数n+1(元3+1回)
0x02e10f:
byte 0x01 # last boss megido 爆発赤増加回数n+1(元3+1回)
0x02dbaa:
beshort 0x002f,0xff00 # jsr colorup_r1をパッチルーチンへ
0x02dc3c:
beshort 0x000c # last boss dead action 赤増減エフェクト上限修正値
# lvl99バグ修正
0x003f4c:
beshort 0x4eb9,0x002f,0xfe00 # jsr 0x2ffe00;lvl99の場合もlvupdataのポインタ(a3)を進めるパッチ処理を呼ぶ
beshort 0x4a41 # tst.w d1;check not99
#
# eu
#
>0x180 string "GM MK -1307 "
# 光過敏対応
0x00c074:
beshort 0x117c,0x0004 # move.b btdmg_tim+1(a4),colch_tim(a0) -> move.b #$0004,colch_tim(a0); 雑魚のクリティカルダメージフラッシュを固定時間に
0x035cc0:
beshort 0x0888 # player critical hit flash color(元は0x0eee)
0x0359f8:
beshort 0x0666 # boss damage flash color(元は0x0eee)
0x03fdf4:
beshort 0x0eee # destruction cyan color(元は0x0ec6)
0x02dfba:
beshort 0x000f # last boss megido イントロの赤増加頻度(0x0008/(n+1))
0x02dfc6:
beshort 0x0002 # last boss megido イントロの赤増加回数(元4回)
0x02e0f7:
byte 0x01 # last boss megido 爆発赤減少回数n+1(元3+1回)
0x02e117:
byte 0x01 # last boss megido 爆発赤増加回数n+1(元3+1回)
0x02dbb2:
beshort 0x002f,0xff00 # jsr colorup_r1をパッチルーチンへ
0x02dc44:
beshort 0x000c # last boss dead action 赤増減エフェクト上限修正値
# lvl99バグ修正
0x003f54:
beshort 0x4eb9,0x002f,0xfe00 # jsr 0x2ffe00;lvl99の場合もlvupdataのポインタ(a3)を進めるパッチ処理を呼ぶ
beshort 0x4a41 # tst.w d1;check not99
#
# colorup_r1の上限修正版(jue共通)
#
0x2fff00:
beshort 0x7600 # moveq.l #$00,d3
beshort 0x0c78,0x0100,0xec28 # cmpi.w #$0100,$ec28.w
beshort 0x6d0e # blt.s 1f
beshort 0x0c78,0x0108,0xec28 # cmpi.w #$0108,$ec28.w
beshort 0x6e06 # bgt.s 1f
beshort 0x4a38,0xee69 # tst.b $ee69.w
beshort 0x6624 # bne.s 4f
#1:
beshort 0x41f8,0xfb02 # lea.l $fb02.w,a0
beshort 0xd0c0 # adda.w d0,a0
beshort 0x7e0c # moveq.l #$0c,d7
#2:
beshort 0x3a10 # move.w (a0),d5
beshort 0xe67d # ror.w d3,d5
beshort 0x3405 # move.w d5,d2
beshort 0x5445 # addq.w #2,d5
beshort 0x3205 # move.w d5,d1
beshort 0x0c41,0x000c # cmpi.w #$000c,d1;上限修正値(元は$000e)
beshort 0x6f04 # ble.s 3f
beshort 0x3a3c,0x000c # move.w #$000c,d5;上限修正値(元は$000e)
#3:
beshort 0xe77d # rol.w d3,d5
beshort 0x30c5 # move.w d5,(a0)+
beshort 0x51cf,0xffe6 # dbra.w d7,2b
#4:
beshort 0x4e75 # rts
#
# lvl99バグパッチ(jue共通)
#
0x2ffe00:
beshort 0x3028,0x0008 # move.w $0008(a0),d0
beshort 0x0c40,0x0063 # cmpi.w #$0063,d0;lvl99?
beshort 0x6608 # bne 1f
beshort 0x323c,0x0000 # move.w #$0000,d1;not99 = false
beshort 0x5c8b # addq.l #$06,a3;バグの根幹、99の場合もlvupdataのポインタ(a3)を次の人に
beshort 0x4e75 # rts
#1:
beshort 0x323c,0xffff # move.w #$ffff,d1;not99 = true
beshort 0x4e75 # rts
#
# jp
#
>0x180 string "GM G-5524 -00"
# 光過敏対応
0x035ca2:
beshort 0x0888 # player critical hit flash color(元は0x0eee)
0x0359da:
beshort 0x0888 # boss damage flash color(元は0x0eee)
0x03fdd6:
beshort 0x0eec # destruction cyan color(元は0x0ec6)
0x02dfa4:
beshort 0x000f # last boss megido イントロの赤増加頻度(0x0008/(n+1))
0x02dfb0:
beshort 0x0002 # last boss megido イントロの赤増加回数(元4回)
0x02e0e1:
byte 0x01 # last boss megido 爆発赤減少回数n+1(元3+1回)
0x02e101:
byte 0x01 # last boss megido 爆発赤増加回数n+1(元3+1回)
0x02dba4:
beshort 0x002f,0xff00 # jsr colorup_r1をパッチルーチンへ
0x02dc36:
beshort 0x000c # last boss dead action 赤増減エフェクト上限修正値
# メギドバグ修正
0x071700:
beshort 0x0061 # 元は0x0060(ラザンと被る)、海外では修正済み
# lvl99バグ修正
0x003e66:
beshort 0x4eb9,0x002f,0xfe00 # jsr 0x2ffe00;lvl99の場合もlvupdataのポインタ(a3)を進めるパッチ処理を呼ぶ
beshort 0x4a41 # tst.w d1;check not99
#### デバッグ用戦闘後取得経験値操作
###0x002f34:
### beshort 0x223c,0x0020,0x0000 # move.l #$00200000,d1
#
# us
#
>0x180 string "GM MK-1307 -00"
# 光過敏対応
0x00c06c:
beshort 0x117c,0x0004 # move.b btdmg_tim+1(a4),colch_tim(a0) -> move.b #$0004,colch_tim(a0); 雑魚のクリティカルダメージフラッシュを固定時間に
0x035cb8:
beshort 0x0888 # player critical hit flash color(元は0x0eee)
0x0359f0:
beshort 0x0666 # boss damage flash color(元は0x0eee)
0x03fdec:
beshort 0x0eee # destruction cyan color(元は0x0ec6)
0x02dfb2:
beshort 0x000f # last boss megido イントロの赤増加頻度(0x0008/(n+1))
0x02dfbe:
beshort 0x0002 # last boss megido イントロの赤増加回数(元4回)
0x02e0ef:
byte 0x01 # last boss megido 爆発赤減少回数n+1(元3+1回)
0x02e10f:
byte 0x01 # last boss megido 爆発赤増加回数n+1(元3+1回)
0x02dbaa:
beshort 0x002f,0xff00 # jsr colorup_r1をパッチルーチンへ
0x02dc3c:
beshort 0x000c # last boss dead action 赤増減エフェクト上限修正値
# lvl99バグ修正
0x003f4c:
beshort 0x4eb9,0x002f,0xfe00 # jsr 0x2ffe00;lvl99の場合もlvupdataのポインタ(a3)を進めるパッチ処理を呼ぶ
beshort 0x4a41 # tst.w d1;check not99
#
# eu
#
>0x180 string "GM MK -1307 "
# 光過敏対応
0x00c074:
beshort 0x117c,0x0004 # move.b btdmg_tim+1(a4),colch_tim(a0) -> move.b #$0004,colch_tim(a0); 雑魚のクリティカルダメージフラッシュを固定時間に
0x035cc0:
beshort 0x0888 # player critical hit flash color(元は0x0eee)
0x0359f8:
beshort 0x0666 # boss damage flash color(元は0x0eee)
0x03fdf4:
beshort 0x0eee # destruction cyan color(元は0x0ec6)
0x02dfba:
beshort 0x000f # last boss megido イントロの赤増加頻度(0x0008/(n+1))
0x02dfc6:
beshort 0x0002 # last boss megido イントロの赤増加回数(元4回)
0x02e0f7:
byte 0x01 # last boss megido 爆発赤減少回数n+1(元3+1回)
0x02e117:
byte 0x01 # last boss megido 爆発赤増加回数n+1(元3+1回)
0x02dbb2:
beshort 0x002f,0xff00 # jsr colorup_r1をパッチルーチンへ
0x02dc44:
beshort 0x000c # last boss dead action 赤増減エフェクト上限修正値
# lvl99バグ修正
0x003f54:
beshort 0x4eb9,0x002f,0xfe00 # jsr 0x2ffe00;lvl99の場合もlvupdataのポインタ(a3)を進めるパッチ処理を呼ぶ
beshort 0x4a41 # tst.w d1;check not99
There are some other games that have these patch files. If I find a WAD of an interesting game, I'd be happy to look for some patch notes (some master system games have some). I can already say that none of the Sonic games that I know of have any. But I'm very interested in the recently released "Japan-Only" stuff - most notably Pulseman.
Hope this topic was interesting.
Ninja Edit: I have some patch notes from Phantasy Star II. As some of you know, Yuji Naka programmed that game. And it's been reported recently that he does assist in patching the old games he's worked on. Anyone interested?
This post has been edited by evilhamwizard: 13 July 2009 - 01:05 PM


00
