初代熱血硬派くにおくん 総合情報サイト
解析編
解析時の覚書ライクなもの。半端な内容を多分に含みます。
雑記システム編との住み分けは微妙ですが、こちらはさらにマニアックです。
■PC動作の優先順位
■PCが殴った相手の名前
■ガード
■延髄切り
■マッハパンチ
■掴み技
■セーブデータ
■イベント進行フラグ
◆ 趣旨
発動条件を同時に満たした場合のPC動作の優先順位。
◆ 優先順位
数値の小さいものほど優先的に発動する。
1.くにおの部屋で寝る
2.ガード
3.Aボタン始動イベント(自販機、キオスク等)
4.武器殴り
5.武器拾い
6.引き起こし
7.襟掴み、羽交い締め
8.会話
9.マッハパンチ
10.キック、決めキック
11.ジャンプ
12.武器投げ
13.パンチ、決めパンチ、ビンタ
14.歩行
◆ 趣旨
PCがNPCを殴ったときに、自分の体力ゲージの下に相手の名前&体力ゲージが表示されます。
◆ ゲーム開始時
ゲーム開始時は、PCはNPCを一度も殴っていないため、殴った相手の名前として
次のとおり仮の名前が設定されています(□は空白)。
1Pが殴った相手の名前 = ひでき□
2Pが殴った相手の名前 = ひでき□
◆ 疑問
ひできは一体何者なのでしょうか。
◆ 定義
本項において、ガードを行う主体となるキャラを「G」、
Gに攻撃するキャラを「A」といいます。
◆ PCのガード(PCがGの場合)
発動までのフロー
1.GのYボタンが入力されている
2.Gが武器を持っていない
3.Gが注目している相手(PCの場合、画面内で一番近くにいる相手)がAである
4.Aの攻撃中フラグがONである
5.GとAが逆方向を向いている(向かい合っているか、背中合わせになっている)
6.Gのキャラ番号(1P=0、2P=1)とAの不明アドレスが一致しない
7.乱数Xを生成する
8.乱数X<Gの素早さである
10.(続く)
考察
PCのガード処理は意図不明な処理が多く、発動することは非常に稀です。
◆ NPCのガード(NPCがGの場合)
発動までのフロー
1.Gが武器を所持していない
2.Gが注目している相手(NPCの場合、ターゲットしている相手)がAである
3.GとAが逆方向を向いている(向かい合っているか、背中合わせになっている)
4.Gの向きとAの不明アドレスとの排他的論理和がネガティブ(128以上)でない
5.GとAとの間合いが 5 未満である
6.Aの攻撃中フラグがONである
7.Aの現在の動作が「ジャンプ」「ジャンプキック」「その他」によって以下分岐
<Aの現在の動作が「ジャンプ」「ジャンプキック」のとき>
8.乱数Xを生成する
9.Gの「何もしない値」(下表1参照)と乱数Xを比較する
10.乱数X<何もしない値の場合、「何もしない」をGの行動として処理終了
11.乱数X≧何もしない値の場合、Gの「しゃがみ値」(下表2参照)と乱数Xを比較する
12.乱数X≧しゃがみ値の場合、「しゃがみ」をGの行動として処理終了
13.乱数X<しゃがみ値の場合、乱数Yを生成する
14.Gの素早さと乱数Yを比較する
15.乱数Y≧Gの素早さの場合、「何もしない」をGの行動として処理終了
16.乱数Y<Gの素早さの場合、「ガード」をGの行動として処理終了
<Aの現在の動作が「その他」のとき>
8.乱数Zを生成する
9.プレイヤー1Pのキャラタイプの「ガード値」(下表3参照)と乱数Zを比較する
10.乱数≧ガード値の場合、「ガード」をGの行動として処理終了
11.乱数<ガード値の場合、「何もしない」をGの行動として処理終了
考察
NPCのガード処理もPC版ほどではありませんが、バグが多いです。
NPCが左向き時に一切ガードできないバグは、4番の処理が原因です。
推測では「GとAが背中合わせになっている場合は発動しない」という命令を
入れるつもりだったと思われます。
しかし、実際はGが右向きの時のみ次の処理に進むようになっています。
また、<Aの現在の動作が「その他」のとき>の9番の処理ですが、
下表3をご覧いただければ分かるとおり、本来はGのキャラタイプによって
ガード頻度を変更するつもりだったと思われます。
しかし、実際はGがNPCであればAが誰であるかにかかわらず、
常にPC1のキャラタイプ(=「くにお」)を参照してしまっており、
「くにお」のガード値である「200」が常に適用されるようになっています。
ちなみに、プレイヤー1Pが不思議な指輪で「女子学生」に変身している場合は
「女子学生」のガード値を参照しますが、同じく「200」のため影響はありません。
以上のような処理となっているため、Gが右向き時の地上技(&延髄切り)に対する
ガード確率は21.875%となります。
しかし、体感上はもっと遥かに高い確率でガードされてしまいます。
その理由は、Aが攻撃を繰り出してからGに命中するまでの間に、
何度もこの処理が行われてしまうためです。
例えばくにおのパンチをギリギリ届く距離から繰り出した場合、一発ヒットするまでに
6回前後この処理が繰り返され、一度でもガードが行動選択されればガードされてしまうため、
結果的にガードされる確率は約 77.3% になってしまいます。
別表集
表1 何もしない値 |
くに |
りき |
小男 |
女子 |
ヤ男 |
ヤ女 |
モヒ |
ト男 |
ト女 |
リ1 |
リ2 |
リ3 |
OL |
オジ |
オバ |
学生 |
派手 |
珍走 |
本田 |
総長 |
ポリ |
0 |
0 |
127 |
150 |
90 |
80 |
70 |
127 |
90 |
127 |
90 |
90 |
70 |
100 |
50 |
85 |
90 |
70 |
10 |
30 |
0 |
表2 しゃがみ値 |
くに |
りき |
小男 |
女子 |
ヤ男 |
ヤ女 |
モヒ |
ト男 |
ト女 |
リ1 |
リ2 |
リ3 |
OL |
オジ |
オバ |
学生 |
派手 |
珍走 |
本田 |
総長 |
ポリ |
0 |
0 |
200 |
170 |
200 |
145 |
135 |
200 |
200 |
200 |
200 |
200 |
127 |
230 |
70 |
180 |
200 |
155 |
255 |
60 |
255 |
表3 ガード値 |
くに |
りき |
小男 |
女子 |
ヤ男 |
ヤ女 |
モヒ |
ト男 |
ト女 |
リ1 |
リ2 |
リ3 |
OL |
オジ |
オバ |
学生 |
派手 |
珍走 |
本田 |
総長 |
ポリ |
200 |
200 |
200 |
200 |
150 |
150 |
128 |
180 |
200 |
200 |
180 |
180 |
150 |
180 |
150 |
128 |
128 |
100 |
128 |
100 |
0 |
◆ PCの発動条件
1.キャラタイプが「くにお」又は「りき」
2.武器を持っていない
3.Yボタンが入力されている
4.ジャンプ中又は吹っ飛び中
5.現在速度が 0 (速度がついている場合はジャンプキックに移行)
6.現在高度が 10 又は 11
7.レベルが 23 以上
◆ NPC
NPCは延髄切りを使用しません。
「くにお」「りき」と同型キャラタイプである「男子学生」は一応使用時の
グラフィックが設定されていますが、無理矢理使用させると「決めパンチ」と
同様に顔の一部が「くにお」に化けてしまいます。
◆ 考察
6番より、発動可能高度が非常にシビアになっています。
特に、垂直ジャンプ中は一瞬で通過してしまうため、発動がかなり困難です。
吹っ飛び中は当該高度に滞在する時間が比較的長いため、出しやすくなっています。
初代は処理落ちが激しいゲームであり、敵が多い場面などでは
毎フレーム必ず入力を受け付けてくれるとは限らないため、
熟達しても100%出せるようにはなりません。
◆ 連打数
PCがマッハパンチを発動させるためのYボタンの連打回数を「連打数」と定義します。
◆ 発動ボタン
連打数が 5 以上のときにYボタン又はBボタンを押すとマッハパンチが発動します。
◆ 連打による継続
マッハパンチの発動条件を満たして入力をやめた(6回しかボタンを押さない)場合、
1 カウントでモーションが終了します。
マッハパンチの発動中にYボタン又はBボタンを連打すると、
最大 4 カウントまでモーションが継続し、4 カウント経過でモーションが終了します。
◆ 効果音
マッハパンチの空振り音は、両手武器の空振り音と同じです。
◆ NPC
NPCはマッハパンチを使用しません。
「くにお」「りき」と同型キャラタイプである「男子学生」は使用時のグラフィックが
設定されていて、内部データ的には問題なく使用できます。
◆ 考察
Bボタンでの発動・継続はおそらくバグでしょう。
Yボタンを素早く 5 回連打した直後にBボタンを連打すると分かりやすいです。
なお、連打数のカウントは厳密には1回目が 0、2回目が 1、5回目が 4 になります。
6回目を入力すると、連打数カウント処理が先に行われて 5 になり、
その直後に連打数がチェックされ、 5 以上なのでマッハパンチが発動する
というフローになっています。
マッハパンチ使いのボスキャラがいたら面白そうです。
PCの体力だと瞬殺されそうですが。
◆ 前提
本項では、襟掴み及び羽交い締めを併せて「掴み技」と定義します。
腰掛けパンチ、抱きつき及びパワーボム並びに派生技の襟掴みキック、襟掴み投げ、
ジャーマンスープレックスは、本項において「掴み技」に含みません。
また、特に断りのない限りPCの使用する掴み技についての記述となります。
◆ 武器所有時
片手武器所有時は、掴み技のモーション中武器のグラフィックが消滅しますが使用できます。
両手武器所有時は、掴み技は使用できません。
◆ 対ポリさん
ポリさんには、羽交い締めを直接かけることはできません。
襟掴みからの派生でかけることはできます。
不思議な仕様ですが、とりあえずおうみは凄いということです。
◆ 掴み技可能モーション
掴み技は、相手が次のいずれかの動作中のみかけることができます。
1.何もしない
2.歩行
3.グロッキー
4.のけぞり
5.会話
◆ 幻の「羽交い締め落とし」
説明書及び攻略本に記載されている「羽交い締め落とし」について。
羽交い締めからの派生動作は、プログラム上2つ用意されています。
1つはジャーマンスープレックス、もう1つは中身が何もありません。
「羽交い締め落とし」を実装しようとした、又は削除した名残と思われます。
製品版のプログラム上「羽交い締め落とし」は存在しません。
◆ NPC
NPCは、イベントを除き掴み技を使用しません。
ただし、プログラムはほぼ全て実装されており、発動条件が絶対に満たされないため
結果的に使用しないことになっています。意図的かバグかは不明です。
◆ 領域
通常セーブデータは1〜6番まで作成できますが、データ上は7,8番も存在します。
区分 |
開始アドレス |
終了アドレス |
ヘッダ |
000 |
01F |
データ1 |
020 |
11F |
データ2 |
120 |
21F |
データ3 |
220 |
31F |
データ4 |
320 |
41F |
データ5 |
420 |
51F |
データ6 |
520 |
61F |
データ7 |
620 |
71F |
データ8 |
720 |
7FF |
◆ セーブデータの内容
データ1のセーブデータの内容をアドレスごとに記載します(データ2以降は+100h)。
アドレス |
内容 |
ゲーム中RAMアドレス
(1Pの場合) |
備考 |
020〜027 |
ファイル名 |
|
2byte*4文字 |
028〜029 |
チェックサム |
|
|
02A |
? |
$0100 |
|
02B |
レベル |
$0102 |
|
02C |
最大体力 |
$0104 |
|
02D |
最大気力 |
$0106 |
|
02E〜030 |
経験値 |
$0108〜$010A |
|
031 |
体力 |
$010E |
|
032 |
気力 |
$0110 |
|
033 |
力 |
$0112 |
|
034 |
素早さ |
$0114 |
|
035 |
攻撃力 |
$0116 |
|
036 |
守備力 |
$0118 |
|
037 |
運の良さ1 |
$011A |
ロード時にリセットされるので無意味 |
038 |
運の良さ2 |
$011C |
|
039 |
? |
$1BDB |
|
03A |
? |
$1BDD |
|
03B |
? |
$1BDF |
|
03C |
? |
$1BE1 |
|
03D |
武器 |
$01E5 |
|
03E |
裏地 |
$01E7 |
|
03F |
靴 |
$01E9 |
|
040 |
体調 |
$01EB |
|
041 |
装備品の素早さ |
$01F2 |
|
042 |
装備品の攻撃力 |
$01F4 |
|
043 |
装備品の守備力 |
$01F6 |
|
044 |
? |
$1BF7 |
|
045 |
プリペイドカード度数 |
$01C1 |
|
046 |
タクシーカード度数 |
$01C3 |
|
047 |
貴重品所持数 |
$011E |
|
048〜067 |
所持貴重品 |
$011F〜$013E |
32(20h)個まで記録できるが、作中では9個しか入手しない |
068 |
アイテム所持数 |
$013F |
|
069〜088 |
所持アイテム |
$0140〜$015F |
32(20h)個まで記録できるが、システム上10個までしか持てない |
089〜0A8 |
未使用領域 |
$0160〜$017F |
|
0A9 |
進行フラグ |
$1D0C |
シナリオの進行状況 |
0AA |
同行者 |
$1B89 |
00h:不在、01h:ひろし、02h:みほ、04h:うらべ |
0AB |
大阪港行けるフラグ |
$1D0D |
81h以上なら行ける |
0AC |
分岐 |
$1DDB |
00h:ひろしの頼みを聞いた、01h:断った |
0AD |
分岐 |
$08D8 |
00h:わだに協力、01h:わだを倒した |
0AE |
? |
$08DA |
未使用分岐? |
0AF |
分岐 |
$08D9 |
00h:連合ルート、01h:同盟ルート |
0B0 |
? |
$1BE4 |
未使用分岐? |
0B1 |
固定値 |
$7846 |
54h |
0B2 |
固定値 |
$7847 |
4Ah |
0B3 |
固定値 |
$7848 |
43h |
0B4〜11F |
未使用領域 |
|
セーブ時に00hで埋める |
◆ フラグ表
$1D0C |
格納場所 |
ポインタ |
参照先 |
CP |
次に開始するイベント |
00 |
$02:0200 |
00 00 |
- |
|
- |
01 |
$02:0202 |
66 80 |
$02:0266 |
○ |
デモ |
02 |
$02:0204 |
FC 81 |
$02:03FC |
○ |
オープニング |
03 |
$02:0206 |
D3 88 |
$02:0AD3 |
○ |
くにおが来るまで待とう |
04 |
$02:0208 |
C2 8F |
$02:11C2 |
○ |
ひろしの頼みを聞いた朝〜ひろしが迎えに来る |
05 |
$02:020A |
10 95 |
$02:1710 |
○ |
ひろしの頼みを断った朝〜くにおの部屋によしひろ登場 |
06 |
$02:020C |
F3 95 |
$02:17F3 |
○ |
ウメチカ西でひろしが連合にリンチされ入院 |
07 |
$02:020E |
A7 99 |
$02:1BA7 |
|
ひろし入院だけで済みそうだって |
08 |
$02:0210 |
68 9E |
$02:2068 |
○ |
もんま一味との対決〜梅田部隊全滅まで |
09 |
$02:0212 |
FD A3 |
$02:25FD |
○ |
くにおの部屋で待っているみほ1回目〜よしひろに同盟の集合場所を教える |
0A |
$02:0214 |
CA A5 |
$02:27CA |
○ |
心斎橋での集会1回目 |
0B |
$02:0216 |
01 AA |
$02:2C01 |
○ |
地下駐車場のとうやま |
0C |
$02:0218 |
16 AB |
$02:2D16 |
○ |
梅田地下線路の連合集会所 |
0D |
$02:021A |
79 AB |
$02:2D79 |
○ |
なかはら |
0E |
$02:021C |
B2 AB |
$02:2DB2 |
○ |
連合集会所 地下2Fの違う扉に入る(敵もいないし何も起きない) |
0F |
$02:021E |
BB AB |
$02:2DBB |
○ |
連合集会所 地下3Fに入る |
10 |
$02:0220 |
56 B0 |
$02:3256 |
○ |
くにおの部屋で待っているみほ2回目(心斎橋まで同行) |
11 |
$02:0222 |
18 B1 |
$02:3318 |
|
上に同じ |
12 |
$02:0224 |
94 B1 |
$02:3394 |
○ |
心斎橋での集会2回目 |
13 |
$02:0226 |
76 AA |
$02:2C76 |
|
くにおの部屋で待っているみほ2回目 ほくとを倒していないとき(※CPにすると無限ループでハマる) |
14 |
$02:0228 |
00 00 |
- |
|
- |
15 |
$02:022A |
1E B6 |
$02:381E |
|
うらべくんは町の様子を調べてるわ |
16 |
$02:022C |
F7 BA |
$02:3CF7 |
|
? |
17 |
$02:022E |
44 BD |
$02:3F44 |
|
うらべ、みほと一緒に下水道に突入した瞬間の待ち伏せイベント |
18 |
$02:0230 |
01 BE |
$02:4001 |
|
けんじ、てらだ、ともみの待ち伏せ(※CPにするとこうじの部屋で戦闘になる) |
19 |
$02:0232 |
70 BE |
$02:4070 |
|
えびぬまグループの待ち伏せ(※CPにするとこうじの部屋でイベント開始してハマる) |
1A |
$02:0234 |
3E BF |
$02:413E |
|
難波到着 |
1B |
$02:0236 |
80 C2 |
$02:4480 |
○ |
拉致されている同盟に会いに行く |
1C |
$02:0238 |
4F C9 |
$02:4B4F |
|
? |
1D |
$02:023A |
D0 C9 |
$02:4BD0 |
|
? |
1E |
$02:023C |
00 00 |
- |
|
- |
1F |
$02:023E |
B9 CA |
$02:4CB9 |
○ |
心斎橋での集会3回目orわだへの報告 |
20 |
$02:0240 |
7F CE |
$02:507F |
|
? |
21 |
$02:0242 |
79 D0 |
$02:5279 |
○ |
恵比須町のまさきの部下に会う |
22 |
$02:0244 |
6E D2 |
$02:546E |
○ |
なるみに会う |
23 |
$02:0246 |
28 D3 |
$02:5528 |
○ |
よこやまにトレインカードもらう |
24 |
$02:0248 |
75 D3 |
$02:5575 |
|
? |
25 |
$02:024A |
5D D4 |
$02:565D |
○ |
甲子園のまさきに会う |
26 |
$02:024C |
65 D8 |
$02:5A65 |
○ |
ホテル大阪襲撃事件 |
27 |
$02:024E |
71 DB |
$02:5D71 |
○ |
難波決戦 |
28 |
$02:0250 |
51 DF |
$02:6151 |
○ |
恵比須町襲撃事件 通天閣本通りのバトル |
29 |
$02:0252 |
6F E1 |
$02:636F |
|
恵比須町襲撃事件 通天閣2Fのバトル |
2A |
$02:0254 |
B3 F2 |
$02:74B3 |
○ |
大阪港最終決戦 |
2B |
$02:0256 |
61 F5 |
$02:7761 |
|
エンディング |
2C |
$02:0258 |
38 FA |
$02:7C38 |
|
スタッフロール |
2D |
$02:025A |
00 00 |
- |
|
- |
2E |
$02:025C |
00 00 |
- |
|
- |
2F |
$02:025E |
00 00 |
- |
|
- |
30 |
$02:0260 |
00 00 |
- |
|
- |
31 |
$02:0262 |
00 00 |
- |
|
- |
32 |
$02:0264 |
66 80 |
$02:0266 |
|
フリーズ |
◆ 解説
ゲーム中の$1D0Cの値に対応して、次にどのイベントからゲームが進行するかが決定される。
「格納場所」及び「参照先」のアドレスは、ROMヘッダ無しの場合-200h。
「CP」(チェックポイント)は、セーブ時に保存されるかどうか、あるいは死亡時にそこから再開されるかどうか。
例えば、$1D0C の 12h〜1Ah あたりを見ると、心斎橋に集合してから難波でわだイベントを終了するまでに
多くのフラグが用意されていることが分かるが、わだイベントを終了するまでの道中で死亡すると
CPに設定されている12h(心斎橋での集会2回目)まで戻されてしまう。
50番目(32h)のポインタが$02:0264〜$02:0265に格納されており、$02:0266からはイベントの中身が格納されている。
フラグは50個(初期値を考慮しても49個)まで作成できるが、欠番らしきものも多く実際には40個前後しか使われていない。
また、0Ehなど、明らかに無意味なものもあり。
■トップに戻る