STによる基礎値計算 1:ST=0BA 2:乱数3 3:0BA×3=22E 4:22E/0A=37 5:ASL(BA) =(BA×2)=174 6:174+37=1AB 06:8A7B:A9 09 LDA #$09 06:8A7D:85 18 STA $0018 = #$00 $18=9 06:8A7F:20 C5 DA JSR $DAC5 06:8A82:A5 24 LDA $0024 = #$06 乱数生成($0024=0-8) 06:8A84:85 18 STA $0018 = #$00 06:8A86:AD 27 65 LDA $6527 = #$BA ST 06:8A89:85 1C STA $001C = #$53 06:8A8B:20 DF DA JSR $DADF ST×乱数(0-8) 06:8A8E:A5 24 LDA $0024 = #$06 06:8A90:85 18 STA $0018 = #$00 06:8A92:A5 25 LDA $0025 = #$00 06:8A94:85 19 STA $0019 = #$00 $19$18=ST×乱数の結果 06:8A96:A9 0A LDA #$0A 06:8A98:85 1C STA $001C = #$53 06:8A9A:A9 00 LDA #$00 06:8A9C:85 1D STA $001D = #$00 06:8A9E:20 CD DB JSR $DBCD ($24) =($19$18/0A) 06:8AA1:AD 27 65 LDA $6527 = #$BA ST 06:8AA4:0A ASL 左シフト(ST×2) 06:8AA5:90 02 BCC $8AA9 キャリーフラグがクリアなら、ジャンプ 06:8AA7:E6 25 INC $0025 = #$00 $25を加算 06:8AA9:18 CLC 06:8AAA:65 24 ADC $0024 = #$06 06:8AAC:85 18 STA $0018 = #$00 $18 = (ST×2 + $24) 06:8AAE:A5 25 LDA $0025 = #$00 06:8AB0:69 00 ADC #$00 06:8AB2:85 19 STA $0019 = #$00 $19 = $25(上位バイト) 06:8AB4:A5 19 LDA $0019 = #$00 06:8AB6:D0 10 BNE $8AC8 キャリーフラグがセットされている時にブランチ 06:8AB8:A5 18 LDA $0018 = #$00 06:8ABA:CD 59 65 CMP $6559 = #$B9 DF 06:8ABD:B0 09 BCS $8AC8 キャリーフラグがセットされている時にブランチ 06:8ABF:A9 00 LDA #$00 06:8AC1:85 24 STA $0024 = #$06 (DF以下のダメージだった場合はダメージ0に初期化?) 06:8AC3:85 25 STA $0025 = #$00 06:8AC5:4C 20 8B JMP $8B20 DFによる計算 1:DF = 55 2:1AB - 55 = 156 3:LSR(156) = 156/2(切り上げ) = AB 4:6505 = 0A(守護星) 5:AB × 0A = 6AE 6:6AE / 0A = AB 7:6506 = 0A(種族相性差) 8:AB × 08 = 558 9:558 / 0A = 88 10:88 + 1 = 89 11:スタック=89 12:6507 = 1(1/2の確率) 0(1/2の確率)(タイミング打法) 13:$24 = 1〜3 4 $24=1 2 14:LSR(LSR($24)) = 0 $24=1 0 1 15:89(ダメージ基礎値) ASL(89)=89×2 89 ASL(89)=89×2 06:8AC8:A5 18 LDA $0018 = #$00 06:8ACA:38 SEC 06:8ACB:ED 59 65 SBC $6559 = #$B9 DF 06:8ACE:85 18 STA $0018 = #$00 $18 = $18 - DF 06:8AD0:A5 19 LDA $0019 = #$00 06:8AD2:E9 00 SBC #$00 06:8AD4:85 19 STA $0019 = #$00 $19 = $19 - #00 - キャリーフラグ 06:8AD6:46 19 LSR $0019 = #$00 左シフト A=A×2 06:8AD8:66 18 ROR $0018 = #$00 左ローテート 06:8ADA:AD 05 65 LDA $6505 = #$0A 何かの相性? 06:8ADD:85 1C STA $001C = #$53 06:8ADF:A9 00 LDA #$00 06:8AE1:85 1D STA $001D = #$00 06:8AE3:20 01 DB JSR $DB01 $19$18を$6505倍して$25$24に出力 06:8AE6:A5 24 LDA $0024 = #$06 06:8AE8:85 18 STA $0018 = #$00 06:8AEA:A5 25 LDA $0025 = #$00 06:8AEC:85 19 STA $0019 = #$00 $19$18=$25$24 06:8AEE:A9 0A LDA #$0A 06:8AF0:85 1C STA $001C = #$53 06:8AF2:A9 00 LDA #$00 06:8AF4:85 1D STA $001D = #$00 06:8AF6:20 CD DB JSR $DBCD ($25$24) =($19$18/0A) 06:8AF9:A5 24 LDA $0024 = #$06 06:8AFB:85 18 STA $0018 = #$00 06:8AFD:A5 25 LDA $0025 = #$00 06:8AFF:85 19 STA $0019 = #$00 $19$18=$25$24 06:8B01:AD 06 65 LDA $6506 = #$0C 何かの相性? 06:8B04:85 1C STA $001C = #$53 06:8B06:A9 00 LDA #$00 06:8B08:85 1D STA $001D = #$00 06:8B0A:20 01 DB JSR $DB01 19$18を$6506倍して$25$24に出力 06:8B0D:A5 24 LDA $0024 = #$06 06:8B0F:85 18 STA $0018 = #$00 06:8B11:A5 25 LDA $0025 = #$00 06:8B13:85 19 STA $0019 = #$00 $19$18=$25$24 06:8B15:A9 0A LDA #$0A 06:8B17:85 1C STA $001C = #$53 06:8B19:A9 00 LDA #$00 06:8B1B:85 1D STA $001D = #$00 06:8B1D:20 CD DB JSR $DBCD ($24) =($19$18/0A) 06:8B20:E6 24 INC $0024 = #$06 $24=$24+1 06:8B22:D0 02 BNE $8B26 ゼロフラグがクリアされている時にブランチ 06:8B24:E6 25 INC $0025 = #$00 $25=$25+1 06:8B26:A5 24 LDA $0024 = #$06 06:8B28:48 PHA スタック1=$24 06:8B29:A5 25 LDA $0025 = #$00 06:8B2B:48 PHA スタック2=$25 06:8B2C:AD 07 65 LDA $6507 = #$00 タイミング打法(1/2の確率で00、01) 06:8B2F:D0 0D BNE $8B3E ゼロフラグがクリアされている時にブランチ 06:8B31:A9 02 LDA #$02 06:8B33:85 18 STA $0018 = #$00 $18=2 06:8B35:20 D9 DA JSR $DAD9 06:8B38:A5 24 LDA $0024 = #$06 ($24=乱数1-2) 06:8B3A:4A LSR 左シフト 06:8B3B:4C 49 8B JMP $8B49 06:8B3E:A9 04 LDA #$04 06:8B40:85 18 STA $0018 = #$00 $18=4 06:8B42:20 D9 DA JSR $DAD9 06:8B45:A5 24 LDA $0024 = #$06 ($24=乱数1-4) 06:8B47:4A LSR 左シフト 06:8B48:4A LSR 左シフト 06:8B49:F0 0D BEQ $8B58 ゼロフラグならジャンプ 06:8B4B:68 PLA スタック2取り出し 06:8B4C:85 25 STA $0025 = #$00 06:8B4E:68 PLA スタック1取り出し 06:8B4F:85 24 STA $0024 = #$02 06:8B51:06 24 ASL $0024 = #$06 $24を左シフト 06:8B53:26 25 ROL $0025 = #$00 $25を左ローテート 06:8B55:4C 5E 8B JMP $8B5E 06:8B58:68 PLA スタック2取り出し 06:8B59:85 25 STA $0025 = #$00 06:8B5B:68 PLA スタック1取り出し 06:8B5C:85 24 STA $0024 = #$06 06:8B5E:60 RTS ($25$24がダメージ基礎値に) 06:8B5F:20 2A 8C JSR $8C2A 06:8B62:AD 2F 65 LDA $652F = #$13 特殊能力1 06:8B65:20 6F 8B JSR $8B6F 倍剣計算1枚目 06:8B68:AD 91 65 LDA $6591 = #$00 特殊能力2 06:8B6B:20 6F 8B JSR $8B6F 倍剣計算2枚目 06:8B6E:60 RTS 07:DAD9:20 C5 DA JSR $DAC5 乱数生成($0024=0-8) 07:DADC:E6 24 INC $0024 = #$06 $0024=(1-9) 07:DADE:60 RTS 07:DAC5:20 62 78 JSR $7862 07:DAC8:A5 18 LDA $0018 = #$00 07:DACA:F0 0A BEQ $DAD6 07:DACC:A5 30 LDA $0030 = #$2A 07:DACE:C5 18 CMP $0018 = #$00 07:DAD0:90 04 BCC $DAD6 07:DAD2:E5 18 SBC $0018 = #$00 07:DAD4:D0 F8 BNE $DACE 07:DAD6:85 24 STA $0024 = #$06 07:DAD8:60 RTS :7862:A5 55 LDA $0055 = #$73 :7864:C5 30 CMP $0030 = #$2A :7866:D0 06 BNE $786E :7868:E6 55 INC $0055 = #$73 :786A:A5 55 LDA $0055 = #$73 :786C:49 FF EOR #$FF :786E:85 30 STA $0030 = #$2A :7870:60 RTS ×6507 = 03CE = 1/2の確率で1に。タイミング打法ということか? 06:80BE:AD CE 03 LDA $03CE = #$00 06:80C1:8D 07 65 STA $6507 = #$00 06:A393:A9 09 LDA #$09 06:A395:85 59 STA $0059 = #$09 06:A397:A5 37 LDA $0037 = #$4C(乱数) 06:A399:29 10 AND #$10 06:A39B:D0 0B BNE $A3A8 ゼロフラグでなければジャンプ(10-1F,30-3F,50-5F,70-7F,90-9F,B0-BF,D0-DF,E0-EF) 06:A39D:A9 01 LDA #$01 06:A39F:8D CE 03 STA $03CE = #$00 06:A3A2:A6 36 LDX $0036 = #$00 06:A3A4:A9 F5 LDA #$F5 06:A3A6:95 64 STA $64,X @ $0064 = #$3E 06:A3A8:38 SEC 06:A3A9:60 RTS 1P:65FCに依存しやすい 6507 = 03CE= 2P:65FFに依存しやすい ことはなかった。 6502が00のときになるので、この処理で03CEは必ず00に初期化される。 06:A364:A5 36 LDA $0036 = #$00 06:A366:8D 02 65 STA $6502 = #$00 06:A369:C9 03 CMP #$03 06:A36B:F0 47 BEQ $A3B4 06:A36D:C9 02 CMP #$02 06:A36F:F0 50 BEQ $A3C1 06:A371:C9 00 CMP #$00 06:A373:F0 0B BEQ $A380 06:A375:20 06 A1 JSR $A106 06:A378:BD FC 65 LDA $65FC,X @ $65FF = #$0 06:A37B:4A LSR 06:A37C:90 02 BCC $A380 06:A37E:B0 2A BCS $A3AA 06:A380:A9 00 LDA #$00 06:A382:8D CE 03 STA $03CE = #$00 65FF=653B=(前読みか先読みか) 06:8325:20 22 94 JSR $9422 06:8328:20 4F 91 JSR $914F 06:832B:A5 24 LDA $0024 = #$02 06:832D:8D 3B 65 STA $653B = #$00 06:914F:AD 0B 65 LDA $650B = #$34 1桁目 06:9152:C9 20 CMP #$20 06:9154:D0 03 BNE $9159 ゼロフラグでなければ 06:9156:4C 89 91 JMP $9189 06:9159:C9 32 CMP #$32 1桁目が2以上か? 06:915B:B0 1B BCS $9178 06:915D:AD 12 65 LDA $6512 = #$31 7桁目 06:9160:C9 35 CMP #$35 7桁目が5か? 06:9162:B0 03 BCS $9167 06:9164:4C 90 91 JMP $9190 06:9167:AD 0E 65 LDA $650E = #$38 4桁目 06:916A:C9 32 CMP #$32 4桁目が2か? 06:916C:B0 1B BCS $9189 06:916E:AD 10 65 LDA $6510 = #$38 5桁目 06:9171:C9 32 CMP #$32 5桁目が2か? 06:9173:B0 14 BCS $9189 06:9175:4C 90 91 JMP $9190 06:9178:AD 0D 65 LDA $650D = #$39 3桁目 06:917B:C9 39 CMP #$39 3桁目が9か? 06:917D:D0 0A BNE $9189 06:917F:AD 14 65 LDA $6514 = #$35 9桁目 06:9182:C9 35 CMP #$35 9桁目が5か? 06:9184:D0 03 BNE $9189 ゼロフラグクリア(一致せず) 06:9186:4C 90 91 JMP $9190 06:9189:A9 01 LDA #$01 06:918B:85 24 STA $0024 = #$02 後読みなら$0024=1 06:918D:4C 97 91 JMP $9197 06:9190:A9 02 LDA #$02 06:9192:85 24 STA $0024 = #$02 先読みなら$0024=2 06:9194:4C 97 91 JMP $9197 06:9197:60 RTS