中原の覇者完全版

三国志 中原の覇者 完全版


オリジナル版からの修正点


◇修正点
  • 道を見る
 微妙に違うマップチップを加筆、配置修正
  • 城の位置
 ほとんどの城の位置が下に1ドット分ずれているので修正
 
 
 ※上の図がオリジナル版で下の図が完全版
 城の位置の1ドット分の修正は分かりづらいですがウィンドウが表示されたときに
 城の底辺とウィンドウの上枠が重ならないようになっています

  • 武将の顔
 チョウショウ(張松)の下枠が太いので加筆修正
 

  • 情報集め結果メッセージ
 おおけのハカを→おうけのハカを
 

  • 武将名
 シンビ→シンピ(辛毘)
 シンビョウ→シンピョウ(辛評)
 ギキョ→ショウギキョ(蒋義渠)
 ボクトツ→トウトン(トウ頓)
 ソウユイ→ソウユウ(曹熊) ※1
 チンジュ→チンシュウ(陳就)
 ソウカン→テイホウ ※2
 コウロウ→ショウロウ(向朗)
 エイネン→ホウヨウ(彭ヨウ)
 コウエキ→そのまま ※3
 キンカンケツ→そのまま ※4
 ※1能力値はソウエイと交換
 ※2おそらくソンカン(孫桓)の間違えだが修正するとソンカン(孫乾)とかぶるので
   異論はあると思うがテイホウにした
 ※3テイホウを入れるならこいつを修正するべきか迷ったがソンカンかぶりがあるので
   ここはショウキン(蒋欽)の字のコウエキ(公奕)ではなくコウソ(黄祖)の子の
   コウエキ(黄射)と判断した
 ※4最大で8文字だが濁点半濁点が入らないと表示されるときにスペースがなくなり見栄えが悪くかつ
   8文字目が欠ける事もあるのでそのままとした
  • 在野武将
 リョウトウ(遼東)51:コウソンコウ(公孫康)→50:コウソンエン(公孫淵)
 ユウシュウ(幽州)74:ジョセイ(徐盛)→7A:シンピョウ(辛評)
 

  残念ながら修正できず

  • 忠誠度の変化
 忠誠度50台は変化すると必ず67になるがプログラミングミスと思われるので修正した
 修正内容は忠誠値変化ルーチンを参照してください

  • 裏技(バグ)対策
 ■機動力バグ
機動力が3~5の間で攻撃の対象を選択すると機動力が3減算されるが
そこでキャンセルし続けざまに攻撃の対象を選択すると更に3減算され
オーバフローを起こし機動力がMAXの40となるバグ技
戦闘開始直前(攻撃の対象を選択した直後)
修正前
D68C : AD 6F 06		lda	$066F		;機動力読み込み
D68F : 38		sec			;キャリーフラグセット
D690 : E9 03		sbc	#$03		;3減算
D692 : 8D 6F 06		sta	$066F		;機動力上書き
D695 : 20 5E C3		jsr	$C35E		;戦闘準備等のルーチン
D698 : F0 01		beq	$D69B		;
D69A : 60		rts			;
D69B : AD 89 06		lda	$0689		;
↓
修正後
D68C : 20 5E C3		jsr	$C35E		;戦闘準備等のルーチン
D68F : F0 0A		beq	D69B		;
D691 : 60		rts			;
;機動力3減算ルーチン
---------------------------------------------------------------------------------------
D692 : AD 6F 06		lda	$066F		;機動力読み込み
D695 : F0 03		beq	$D69B		;機動力が0(戦争開始直後)なら処理を飛ばす
D697 : 38		sec			;キャリーフラグセット
D698 : E9 03		sbc	#$03		;3減算
D69A : 60		rts			;
---------------------------------------------------------------------------------------
D69B : AD 89 06		lda	$0689		;

戦闘開始直後、戦闘終了後
修正前
B5EC : AD 6F 06		lda	$066F		;機動力読み込み
B5EF : 48		pha			;
↓
修正後
B5EC : 20 92 D6		jsr	$D692		;機動力3減算ルーチンへ
B5EF : 48		pha			;
 戦闘開始直前の機動力を3減算する処理を消し以降の処理を詰める
 空いた箇所に3を減算するルーチンを作り戦闘終了後にそのルーチンを読み込むように変更した

 ■降伏バク
戦闘中に降伏を選択すると確認メッセージが出るがそこでいいえを選択し戦闘を再開すると
直前に行動していた部隊ユニットに関係なく左側の武将ユニットから行動が開始されるバグ技
降伏のコマンドは任意のタイミングで選択できるため武将ユニットの行動終了後に降伏→いいえ→戦闘再開で
ずっと俺のターンとなる ザ・ワールド
降伏選択時
修正前
B098 : AC 8A 06		ldy	$068A		;実行中部隊ユニット番号(左側部隊0x 右側部隊8x)読み込み 
B09B : 8C 93 06		sty	$0693		;$0693へ退避
省略
AEDF : A9 00		lda	#$00		;00をセット 
AEE1 : 8D 93 06		sta	$0693		;※どこからも参照されずに00で上書きされているので退避した意味が無い
↓
修正後
B098 : AC 8A 06		ldy	$068A		;実行中部隊ユニット番号(左側部隊0x 右側部隊8x)読み込み 
B09B : 8C F0 00		sty	$00F0		;$00F0へ退避

降伏いいえを選択後
修正前
AE89 : AD 93 06		lda	$0693		;退避先から00を読み込み(00で上書きされているため)
AE8C : 8D 8A 06		sta	$068A		;実行中部隊ユニット番号書き込み
↓
修正後
AE89 : AD F0 00		lda	$00F0		;退避先から実行中部隊ユニット番号を読み込み
AE8C : 8D 8A 06		sta	$068A		;実行中部隊ユニット番号書き込み
 実行中部隊ユニット番号を退避したアドレスに参照する事も無くその後の処理で00を上書きしているのがおかしい
 対策は二つあり一つは退避先を変更することで値を保持するやり方でこのパッチはこのやり方で修正している
 もう一つは$AEE1の上書きする処理を消して空の命令(nop)に置き換えるやり方がある


◇ペンディング事項
 戦略中の曹操の右手に未使用グラがある(ほとんど気付かないと思うので)


◇新たに発見したプログラミングミス(パッチは修正されていません)
 ■COM国造り実行可否バグ
$CCC7 20 E0 E9	jsr $E9E0	;ランダム値0~F抽出 ※ここが駄目かも
$CCCA AC 88 6D	ldy $6D88	;ゲームレベル抽出(レベル1=00、レベル2=01、レベル3=02)
$CCCD D9 AD CC	cmp $CCAD,y	;テーブル内と比較(15 2A 55)
$CCD0 B0 E2	bcs $CCB4	;ランダム値0~F-15 or 2A or 55 なので必ずキャリーフラグはクリアの状態
$CCD2 A9 3C	lda #$3C	;
↓
$CCC7 20 C7 E9	jsr $E9C7	;ランダム値64未満抽出だったのかも??
レベル1=21% レベル2=42% レベル3=85%の確率で内政をするプログラムだったのではないか?
ただしCOMが内政しなさ過ぎるのもアレなのでこのままでいいかも

 ■COM在野武将捜索バグ
ヨシュウ(予州)やヨウシュウ(揚州)のように在野武将がいない年があると翌年以降の在野武将が任官されないバグ
$CD01 A9 FF	lda #$FF	;
$CD03 85 21	sta $21		;在野武将テーブルオフセット値
$CD05 E6 21	inc $21		;
$CD07 A4 21	ldy $21		;
$CD09 C4 20	cpy &20		;スタート後何年経過したか比較(ループの終了値と比較)
$CD0B 90 03	bcc $CD10	;
$CD0D 4C B4 CC	jmp $CCB4	;次の都市の処理へ
$CD10 B1 1B	lda ($1B),y	;在野武将テーブルから武将ID取得
$CD12 85 9F	sta $9F		;
$CD14 C9 FF	cmp #$FF	;在野武将がいないかどうか
$CD16 D0 03	bne $CD1B	;
$CD18 4C B4 CC	jmp $CCB4	;次の都市の処理へ ※ここが駄目
$CD1B A0 00	ldy #$00	;
↓
$CD18 4C 05 CD	jmp $CD05	;在野武将がいない(FF)場合はオフセット値をインクリメントする処理へ戻る

 ■在野武将登場前死亡バグ
COM同士の戦争で関係のない武将に死亡フラグが立ってしまうバグ
戦争時のワークエリアにある武将IDを読み取る際のループの終了条件の設定ミスと思われる
エリア外のデータを読み込みそのデータを武将IDとして読み取って後の処理で死亡フラグが立てられてしまう
ちなみに死亡フラグが立つ条件は 武力+20<ランダム値(0~100)
幸いオリジナル版はこの条件に当てはまる武将が登場済みの武将か条件に当てはまりにくい武将なのであまり目立たないが
改造版では散見されるバグ
登場済みの武将にフラグが立っても居なくなるわけではない
下記の2箇所の3Cを39に修正する事でたぶん直る
$C489 A9 39	lda #$39	;
$C498 A9 39	lda #$39	;

他にもいくつかあやしい箇所があるので
ある程度判明したらまとめて修正してパッチ化予定
最終更新:2012年10月30日 22:54