game_gamen
1: 2021/05/19(水) 14:05:46.42 _USER9
https://news.denfaminicogamer.jp/news/210519e

ファミリーコンピュータ向けソフト『ドラゴンクエストIV 導かれし者たち』(以下、ドラゴンクエスト4)では、ボス戦で「にげる」を8回繰り返すと、以後、会心の一撃が連発するという裏技がある。この裏技に関して、本作のプログラマーである内藤寛氏と山名学氏がYouTubeで証言をしている。

DQ4にげ8バグについて、あの人を直撃
https://youtu.be/N1HYWuOewjI


1990年に発売された『ドラゴンクエスト4』は、キャラクターごとに分かれた章立ての形式、AIによる戦闘システムなどを導入し、ドラマティックな名作として語り継がれている。2001年にはPlayStation向けにリメイクされ、それをベースにニンテンドーDSやスマートフォンにも移植された。こうしたリメイクにより、オリジナルをプレイしたことがない人でも時代を超えて魅了し続けている作品だ。

このオリジナル版『ドラゴンクエスト4』では、ボス戦で「にげる」を8回繰り返すと、以後、会心の一撃が連発する裏技が存在する。最終決戦のデスピサロ戦などで重宝するので、利用したプレイヤーも多いだろう。プレイヤーの救済措置として、あまりにも出来すぎた裏技なので、開発者が意図した仕様なのか、意図しなかったバグなのか疑問に思った人もいたはず。この裏技について詳細を明かしたのは、『ドラゴンクエスト4』のプログラマーである内藤寛氏のYouTubeチャンネル「内藤かんチャン」に投稿された動画「DQ4にげ8バグについて、あの人を直撃!」だ。

ここで内藤寛氏は視聴者からの質問に答える形で、戦闘部分のプログラムを担当した山名学氏にこの裏技について電話で直撃。結論から言うと意図していなかった「バグ」であり、当時のメモリー容量の問題もあり、「にげる」をカウントする専用のカウンターを持っていなかったことが原因とのこと。

『ドラゴンクエスト4』では「にげる」は通常、4回までしかできない。戦闘では必ず4回目で逃げられる仕様になっていた。しかしボス戦では逃げることができないため、4回目で逃げることができると開発者が想定していなかった自体に突入する。コンピューターは2進数が使われているため、10進数の「4」は3桁の「100」、「8」は「1000」となる。このため「にげる」を8回行うと、カウントが1000になるわけだ。

しかしメモリー容量の問題もあり、本作は専用カウンターを持っていないので、2進数が3桁や4桁になってしまうと隣のフラグまで侵食。「にげる」のカウンターの隣の隣のフラグは、たまたまパルプンテにおける会心の一撃が連発するフラグを担当していた。そのため本作で8回逃げると2進数が1000となり、会心の一撃フラグが「0」から「1」になる。このため戦闘で会心の一撃が連発することになってしまったわけである。

このほか、YouTubeチャンネル「内藤かんチャン」では、『ドラゴンクエスト3』の有名な「ランシールバグ」や、『ドラゴンクエスト3』のタイトルロゴについての裏話も披露している。

ドラゴンクエスト3のあのバグは何故起こったのか?
https://youtu.be/OE6K0kx3Z7g


ドラゴンクエスト3/4のタイトルロゴの秘密
https://youtu.be/_P23ryjobh0


https://img-denfaminicogamer.com/wp-content/uploads/2021/05/09c4cd589dd00d6fa205b6c119b86a57.jpg
https://img-denfaminicogamer.com/wp-content/uploads/2021/05/0d40a5e4a645fc6b96e767d64ac0878e.jpg

188: 2021/05/19(水) 16:40:19.85
>>1
ドラクエ3のランシールバグ、
当時のジャンプに「アイテム増殖バグがある、でもやってほしくないのでやり方は書かない」
みたいに載っていて 子供心に最高に腹立ったな
載せないなら最初から書くなと

192: 2021/05/19(水) 16:51:25.13
>>1
8回逃げるで会心の一撃?毎回攻撃したほうが早いやんけ

247: 2021/05/19(水) 19:08:01.28
>>192
自動回復があるから逃げたほうが早いんでは?

294: 2021/05/19(水) 23:32:15.63
>>1
> そのため本作で8回逃げると2進数が1000となり

それだと
16回逃げると 0010 000
32回逃げると 0100 000
64回逃げると 1000 000
となっていくからいろいろ面白そうなことが起こりそうだね

5: 2021/05/19(水) 14:08:29.76
なるほど、そういうことだったのか

6: 2021/05/19(水) 14:08:33.73
ちょっと頭が良くなった
と言うか、4回目で必ず逃げれるの知らなかった

7: 2021/05/19(水) 14:08:35.06
人生逃げまくってるけど会心の一撃出ねえわ

9: 2021/05/19(水) 14:09:41.44
>>7
そろそろチキンナイフを持って暴れまわる頃だな

58: 2021/05/19(水) 14:31:54.36
>>9
逃げなければブレイブブレイドの方が強い

73: 2021/05/19(水) 14:39:50.56
>>58
あれ見た目の攻撃力は高いけど実際はチキンナイフの方が上なんじゃなかったっけ?

173: 2021/05/19(水) 16:05:21.14
>>73
チキンナイフは色んなジョブで装備できたからナイフのほうが有能

11: 2021/05/19(水) 14:10:37.13
これとカジノの838861って
初期生産のロムしかできないんだっけ

150: 2021/05/19(水) 15:46:23.44
>>11
これ発売10日で近所の高校生に教えて貰ったけど何だったんだろ

229: 2021/05/19(水) 18:08:19.20
>>150
ジャンプに載ってたからじゃね

277: 2021/05/19(水) 21:31:13.94
>>229
大技林にもずっと掲載されてなかったのに
ジャンプに掲載されてたの?

300: 2021/05/20(木) 00:33:19.80
>>277
ドラクエは情報統制が厳しかったからね
エニックス出版のガンガンですら週刊少年ジャンプより先に情報を出すことは許されなかった

13: 2021/05/19(水) 14:10:52.88
解析でメモリの話は大分前から言われてた

実は違うのか?と思って読んだらやっぱりその通りだった

14: 2021/05/19(水) 14:11:26.68
そんな仕組みだったんか
ちょっと面白いな

15: 2021/05/19(水) 14:11:37.64

16: 2021/05/19(水) 14:11:55.21
YouTubeで開発者の裏話を聞けるとは良い時代になったもんだね
そりゃテレビ衰退するわ

110: 2021/05/19(水) 15:07:47.10
>>16
テレビのまねごとじゃん

283: 2021/05/19(水) 22:12:22.61
>>110
そんなことを言ったらテレビニュースは新聞やラジオの真似事じゃん
コンテンツの内容ではなく発信の方法が重要でしょ

19: 2021/05/19(水) 14:12:11.76
逃げるは恥だが役に立つ

24: 2021/05/19(水) 14:13:47.73
はーなるほどねえ
でもこの程度で済んで良かったんじゃないの
変なアドレスだったら逃げる連打したらバグって停止してただろ

28: 2021/05/19(水) 14:15:25.64
こういうのも含めてこの時代の裏ワザは面白い

38: 2021/05/19(水) 14:19:24.95
8回も逃げてる内に全滅するんじゃないのか?

40: 2021/05/19(水) 14:21:25.47
>>38
意外としないよ
2軍メンバーが全滅してもその後一軍で会心の一撃連続で倒せる

42: 2021/05/19(水) 14:24:32.86
16回逃げたらどうなんの?

55: 2021/05/19(水) 14:30:33.44
>>42
フラグ解除でノーマル状態に戻る

44: 2021/05/19(水) 14:24:53.21
説明聞いてもわからない俺

45: 2021/05/19(水) 14:24:53.66
4のAIは初めて会った敵にアストロン4回以上唱えてターン経過させると、意外と賢く立ち回ってくれる
ラスボスは変形毎に別敵判定なので変形したら毎回やる

50: 2021/05/19(水) 14:26:14.25
この技を無理に使わなくても、聖水ではぐれメタルは瞬殺だからレベル上げるのも簡単だし、
まどろみの剣とかいうボスにも有効なチート武器もあったからなぁ

52: 2021/05/19(水) 14:26:56.67
メモリ直接インクリメントしてるのかレジスタ介してるのか知らんけど
下位3bit以外をマスクしてないとしたら逃げる回数増えるともっとフラグが侵食されて変なことが起こるのだろうか

59: 2021/05/19(水) 14:31:56.33
>>52
メモリアクセスはバイト単位
1バイトを複数の機能に割ってるから起きたこと

53: 2021/05/19(水) 14:27:49.34
2進数でとなりのフラグを書き替えるなら
9回、10回と逃げるとどうなるんだ?

66: 2021/05/19(水) 14:37:42.54
>>53
考えりゃわかるだろ。
1111になる15回までは何も変わらないだろ。
16回目で0000に戻るだけだ。

74: 2021/05/19(水) 14:40:14.95
メモリが少なかったころは、職人技でプログラムしてたんだなあ

87: 2021/05/19(水) 14:48:32.07
1回目25%
2回目50%
3回目75%
4回目100%

逃げる成功率ってこの形なのが3とか4だっけ?
全部じゃないんだよな

131: 2021/05/19(水) 15:24:59.97
>>87
1回目25%ってSFC版の3じゃなかったか?
50→50→75→100だったような

88: 2021/05/19(水) 14:48:41.32
メモリマップを見る限り該当アドレスの最上位ビットがパルプンテの不思議な霧 (呪文無効?) のフラグになってるみたいで
逃げ回数でそれをセットすることも可能みたいね

96: 2021/05/19(水) 14:57:40.48
誰が発見してネットのない時代にどうやって広まったのかわからん

99: 2021/05/19(水) 14:59:50.73
>>96
本当の情報もそうだけど
5のエスターク仲間になるなんていう嘘情報も全国的に有名になったのが不思議だわ
どうやって広まってんの

357: 2021/05/20(木) 12:40:59.67
>>99
昔は深夜ラジオと雑誌の投稿コーナーにネタが飛び交ってたから意外と全国で知られてる

102: 2021/05/19(水) 15:01:37.97
内藤寛のYouTube見たけど資源カツカツな時代の
プログラム経験ないと全然おもしろくないだろうな。

逆に経験者は楽しめる。

114: 2021/05/19(水) 15:11:34.88
DQ3は最近なんでもありだと5分未満でクリアとか言い始めてるし
この人もその話題に触れたり交流もあるみたいね
それこそ30年たっても遊び倒してくれてるのは製作者冥利に尽きるだろう

124: 2021/05/19(水) 15:21:30.01
カジノコイン購入のオーバーフローも勉強になった

132: 2021/05/19(水) 15:26:22.22
わざわざ聞かなくてもガチ勢が解析して仕組み公開してそう

139: 2021/05/19(水) 15:34:48.52
おもろいね。
でもこの話知らん人には聞いても分からんだろうなあ

146: 2021/05/19(水) 15:43:18.50
インクリメントのチェックを入れるか
ボス戦では逃げる数を数える必要がないからカウントしないようにするかのどちらかすればいいけど
バイト単位でケチケチ詰めてた時代だからしかたないわな

148: 2021/05/19(水) 15:44:50.76
仕様上不要なら、そのチェックは省きたいからな。
特に処理が遅い系ならば。

154: 2021/05/19(水) 15:51:28.76
838861は知らない方が良かったわ。せっかくの楽しいカジノが台無し

178: 2021/05/19(水) 16:21:03.67
0000
0001
0010
0011←本来ならこの後で確実に逃げられる
0100←桁溢れて隣のビットの何かのフラグたてちゃう
0101
0110
0111
1000←さらに桁が溢れて会心フラグたてちゃう
1001
1010
1011
1100
1101
1110
1111
0000←この4ビットだけ見ればオーバーフロー
???10000になるか、???00000になるかは元々フラグがたっていたかどうか次第

上位4ビットなら
0000???? になる

で良いんじゃないの?

256: 2021/05/19(水) 20:11:29.56
>>178
上位って話がよく分からんのだけど下位4bit以外ないんじゃないの
1インクリメントでそこのbit加算されるんでしょ

263: 2021/05/19(水) 20:34:10.10
>>256
自分も相当昔の記憶だからうろ覚えの発言になっちゃうけど、アセンブラは『0000 0000』みたいな感じで8bit単位で数値が管理されてて
内部データ的には下位4bitと上位4bitは実質繋がってたはず、なので下位4bitに変な計算すると弄る予定の無い上位4bitにも影響が出る

間違ってたらスマヌ

270: 2021/05/19(水) 21:00:36.15
>>263
下位で桁があふれたら上位に影響出るけど
上位で桁があふれても下位には影響がない。

180: 2021/05/19(水) 16:25:17.70
内藤寛がドラクエ3のチーフプログラマーだったのって20歳のときだよね
天才だったのかな

194: 2021/05/19(水) 16:54:06.59
これ気づかなかったな
しかもボス戦にしか発動しないんじゃな。

って、待てよ?
4ってことはデスピサロなんかより凶悪なキングレオにも発動するのか??
あれは勝ったら不味い訳だが・・・(´・ω・`)

196: 2021/05/19(水) 17:02:07.63
>>194
4章キングレオは毎ターンHPが全回復する
ちからが最大値で会心の一撃を繰り返しても倒せない
パラメータ改造して倒しても再度キングレオ戦が始まるだけ

211: 2021/05/19(水) 17:31:26.37
ほんとメモリかつかつで使ってたんだなあ。
今となっては考えられない。

213: 2021/05/19(水) 17:34:08.48
ファミコン時代のメモリであんなのだけど
AI搭載したのは驚異的だったんだな

224: 2021/05/19(水) 17:59:35.68
ハイスペックなゲームもいいんだけど、やっぱ限られた容量のスレスレを綱引きしてた時代も美しいわね

230: 2021/05/19(水) 18:09:29.02
C言語もあまりわかってないけど、逃げるのフラグを000から111の3bitで管理してたんだよね?
んで、そのフラグの先頭アドレス(ポインタ)を指定して、1000(4bit)のサイズのデータを書き込んだら、隣のメモリも書き換えちゃったということ?

そもそもドラクエ4がC言語じゃなくてアセンブラで書かれているのだとしたら、アセンブラはやったことがないのでわからん。

238: 2021/05/19(水) 18:50:15.17
>>230
ステータス管理を独立した変数に持たせたら1ステータス度に1変数256bit必要

なんで256bitを分割して
X=AABBBCDD
とし、DDが逃げるカウンタ

DDは初期値00
逃げる失敗度に+Xを実行、ただし11の時は逃げる必ず成功
先頭抜けたらandとかorでDDを00にクリア

通常時11の時はX+は実行されることはない

ボス戦は11で必ず成功がスルーされるから+Xが実行されてCのフラグが0→1に

255: 2021/05/19(水) 20:00:32.83
>>230
ポインタとかそんなレベルの話じゃないよ。

8bitの変数を1つのデータに使うのでなく
複数のデータで共有していただけ。

資源足りない環境では処理よくやること。

233: 2021/05/19(水) 18:16:27.85
少ない容量で工夫して作っていた当時のプログラマーは凄いな

239: 2021/05/19(水) 18:50:30.15
ファミコンの時代にC言語などで開発されるわけがない。
6502アセンブラらしいな。

253: 2021/05/19(水) 19:45:49.65
じゃあさ、もっとビットシフトするくらいにげる繰り返したら
会心以外のフラグも意図的にたてられるのかな

265: 2021/05/19(水) 20:42:42.45
桁あふれによるバグだな

286: 2021/05/19(水) 22:19:04.46
なるほどな桁があふれた結果のたまたまだったのか、すごい偶然だな。まあ意図してやるとは思わんけど解明された理由があったんだな。
ファミコンの容量とか信じられんほど少なかったからカツカツで活用してたし、プログラム圧縮の技術も芸術的だったらしいな。

291: 2021/05/19(水) 22:51:37.31
つかファミコン時代の裏技なんてほぼバグ技だと思うが

292: 2021/05/19(水) 22:53:41.45
カジノの838861枚は
典型的な桁あふれなんで
プログラミングに詳しい人は割とすぐに気づくらしい

308: 2021/05/20(木) 01:17:32.53
むしろ4回目で必ず逃げられるのに驚いたわ。

317: 2021/05/20(木) 07:06:43.81
ドラクエ4の容量は512kbしかないんだぜ

324: 2021/05/20(木) 08:02:51.39
納得した
昔は容量との戦いが大変だったようだね

327: 2021/05/20(木) 08:12:05.41
>>324
ドラクエ1なんかカタカナが全部使えなくてダークドラゴンの「ク」が容量制限で使えなくて「ダースドラゴン」になったくらい容量との戦い。

340: 2021/05/20(木) 11:24:26.85
>>327
三大謎ネーム

ダースドラゴンのダース
スライムベスのベス
リカントマムルのマムル
タホドラキーのタホ

362: 2021/05/20(木) 13:24:27.73
>>340
ダースドラゴンは有名では?
カタカナの”ク”が容量の関係で無かったからスになった

363: 2021/05/20(木) 13:44:48.65
>>362
DQ1は敵やアイテムやストーリーなどに1度も「ク」のフォントが出てこないのか
それもまた凄い気がする

348: 2021/05/20(木) 11:48:29.93
8ビット時代はコンパクトに書く事が至上命題だったからね
オペコードが1or2バイト、オペランドがあれば更に1~4バイト
DPレジスタも無いみたいだし、マスクにしろ条件分岐にしろ処理加えたら10バイトぐらい増えるんじゃないの
ファミコンの仕様知らんけど裏ラム使うとか出来たのかね
何にせよ1バイト削るのに心血注いでた当時のあるあるの話だね

引用元 : 【ゲーム】『ドラゴンクエスト4』で8回逃げると「会心の一撃」になるのはバグか仕様の裏技か 真相が明らかに [muffin★]