忠誠値変化ルーチン 12F94h~
味方になったり捕らわれた際の忠誠値変化決定ルーチン
- 準備:レジスタaに対象の武将ID
- 結果:対象の武将の忠誠値が変化する
AF84 : A0 05 ldy #$05 ;忠誠のオフセットy=5
AF86 : 20 45 EE jsr $EE45 ;武将データ抽出ルーチンへ(忠誠抽出)
AF89 : C9 50 cmp #$50 ;忠誠と80を比較
AF8B : B0 18 bcs $AFA5 ;80以上なら$AFA5へ
AF8D : C9 3C cmp #$3C ;忠誠と60を比較
AF8F : B0 0C bcs $AF9D ;60以上なら$AF9Dへ
AF91 : C9 32 cmp #$32 ;忠誠と50を比較
AF93 : 90 16 bcc $AFAB ;50未満なら$AFABへ(忠誠の変化無し)
-------------------------------------------------
AF95 : AD D4 E9 lda $E9D4 ;32(h20)を抽出 ※本当は20 D4 E9 jsr $E9D4の間違いだと思われる
AF98 : 18 clc ;キャリーフラグクリア
AF99 : 69 23 adc #$23 ;+35
AF9B : D0 0E bne $AFAB ;ゼロフラグがクリアされている事は無いので$AFABへ
-------------------------------------------------
AF9D : 20 DA E9 jsr $E9DA ;ランダム値0~7抽出ルーチンへ
AFA0 : 18 clc ;キャリーフラグクリア
AFA1 : 69 19 adc #$19 ;+25
AFA3 : D0 06 bne $AFAB ;ゼロフラグがクリアされている事は無いので$AFABへ
-------------------------------------------------
AFA5 : 20 D4 E9 jsr $E9D4 ;ランダム値0~3抽出ルーチンへ
AFA8 : 18 clc ;キャリーフラグクリア
AFA9 : 69 14 adc #$14 ;+20
-------------------------------------------------
AFAB : 91 00 sta ($00),y ;忠誠書き換え
AFAD : 60 rts ;
ランダム値抽出ルーチン近辺
E9C7 : 20 E6 E9 jsr $E9E6 ;ランダム値抽出
E9CA : C9 64 cmp #$64 ;100か
E9CC : B0 F9 bcs $E9C7 ;100以上なら$E9C7へブランチ
E9CE : 60 rts ;
-------------------------------------------------
E9CF : 20 E6 E9 jsr $E9E6 ;ランダム値抽出
E9D2 : 4A lsr a ;右シフト(結果0~127の値が生成)
E9D3 : 60 rts ;
-------------------------------------------------
E9D4 : 20 E6 E9 jsr $E9E6 ;ランダム値抽出
E9D7 : 29 03 and #$03 ;ランダム値0~3生成
E9D9 : 60 rts ;
-------------------------------------------------
E9DA : 20 E6 E9 jsr $E9E6 ;ランダム値抽出
E9DD : 29 07 and #$07 ;ランダム値0~7生成
E9DF : 60 rts ;
-------------------------------------------------
E9E0 : 20 E6 E9 jsr $E9E6 ;ランダム値抽出
E9E3 : 29 0F and #$0F ;ランダム値0~15生成
E9E5 : 60 rts ;
-------------------------------------------------
E9E6 : 86 2F stx $2F ;
E9E8 : A6 2E ldx $2E ;
E9EA : BD F2 E9 lda $E9F2,x ;ランダム値テーブルから抽出
E9ED : E6 2E inc $2E ;
E9EF : A6 2F ldx $2F ;
E9F1 : 60 rts ;
※AF95 : AD D4 E9 lda $E9D4 は本来20 D4 E9 jsr $E9D4だったのではと思われる
(59~50はランダム値0~3+35の35~38に変化する)
| 元の忠誠 |
変化後の忠誠 |
| 99~80 |
20~23 |
| 79~60 |
25~32 |
| 59~50 |
67 |
| 49~0 |
変化無し |
最終更新:2012年06月18日 00:14