;-------------------------------- ; ;-------------------------------- LC20000: JMP $0003 LC20003: PHP REP #$30 ; X,Y = 16bit A = 16bit PHB PHD PHA PHX PHY LDA #$0000 ; #$0000 = 0 SEP #$20 ; A = 8bit REP #$10 ; X,Y = 16bit JSR $0053 ; REP #$20 ; A = 16bit CLC LDA $09C0 ; 戦闘回数(下位) ADC #$0001 ; #$0001 = 1 BCC $0023 LDA #$FFFF ; #$FFFF = 65535 LC20023: STA $09C0 ; 戦闘回数(下位) TDC SEP #$20 ; A = 8bit STZ $7CD8 LC2002C: JSR $4CE0 ; LDA #$00 ; #$00 = 0 STA $002100 STA $00420C STA $00420B STA $004200 LDA $7CD8 BNE $002C SEI JSR $0053 ; REP #$30 ; X,Y = 16bit A = 16bit PLY PLX PLA PLD PLB PLP RTL ;-------------------------------- ; ;-------------------------------- LC20053: LDA #$00 ; #$00 = 0 PHA PLB STA $4200 LDX #$0000 ; #$0000 = 0 PHX PLD LDA #$80 ; #$80 = 128 STA $2100 LDA #$7E ; #$7E = 126 PHA PLB RTS ;-------------------------------- ; ;-------------------------------- LC20069: JSL $C10000 RTS ;-------------------------------- ; ;-------------------------------- LC2006E: INC $DBB3 STA $1D00 JSL $C40004 STZ $DBB3 RTS ;-------------------------------- ; X〜Aの範囲の乱数取得 ;-------------------------------- LC2007C: SEP #$10 ; X,Y = 8bit STX $3C CPX #$FF ; #$FF = 255 BNE $0086 BRA $00C7 LC20086: CMP #$F000 ; #$F000 = 61440 AND $3CC5,X BEQ $00C7 PHA TDC TAX LDA $7C55 EOR #$8D01 EOR $7C,X TAX LDA $3A,X TAX PLA SEC SBC $3C CMP #$D0FF ; #$D0FF = 53503 ASL $BF CPY #$C0FE ; #$C0FE = 49406 BRA $00C7 INC STA $7CB9 ; 除算ルーチン 除数(下位) STZ $7CBA ; 除算ルーチン 除数(上位) LDA $C0FEC0,X ; 乱数テーブル(256バイト) TAX STX $7CB7 ; 除算ルーチン 被除数(下位) REP #$10 ; X,Y = 16bit JSR $010C ; 除算 (($7CB7)÷($7CB9) = ($7CBB) 余り($7CBD)) SEP #$10 ; X,Y = 8bit CLC LDA $7CBD ; 除算ルーチン 除算余剰結果(下位) ADC $3C LC200C7: PHA LDA $7C55 TAX INC $3A,X REP #$10 ; X,Y = 16bit PLA RTS ;-------------------------------- ; 乗算(16bit) (($2A)×($2C) = ($2E)) ;-------------------------------- LC200D2: REP #$20 ; A = 16bit LDX #$0010 ; #$0010 = 16 STZ $2E STZ $30 LC200DB: ROR $2C BCC $00E6 CLC LDA $2A ADC $30 STA $30 LC200E6: ROR $30 ROR $2E DEX BNE $00DB TDC SEP #$20 ; A = 8bit RTS ;-------------------------------- ; 乗算(8bit) (($24)×($25) = ($26)) ;-------------------------------- LC200F1: LDA $24 STA $004202 ; 乗算器(8bit×8bit) 被乗数 LDA $25 STA $004203 ; 乗算器(8bit×8bit) 乗数 REP #$20 ; A = 16bit NOP NOP NOP LDA $004216 ; 乗算結果(下位) or 除算余剰結果 STA $26 TDC SEP #$20 ; A = 8bit RTS ;-------------------------------- ; 除算 (($7CB7)÷($7CB9) = ($7CBB) 余り($7CBD)) ;-------------------------------- LC2010C: REP #$20 ; A = 16bit STZ $7CBB ; 除算ルーチン 除算結果(下位) STZ $7CBD ; 除算ルーチン 除算余剰結果(下位) LDA $7CB7 ; 除算ルーチン 被除数(下位) BEQ $0144 LDA $7CB9 ; 除算ルーチン 除数(下位) BEQ $0144 CLC LDX #$0010 ; #$0010 = 16 LC20122: ROL $7CB7 ; 除算ルーチン 被除数(下位) ROL $7CBD ; 除算ルーチン 除算余剰結果(下位) SEC LDA $7CBD ; 除算ルーチン 除算余剰結果(下位) SBC $7CB9 ; 除算ルーチン 除数(下位) STA $7CBD ; 除算ルーチン 除算余剰結果(下位) BCS $013E LDA $7CBD ; 除算ルーチン 除算余剰結果(下位) ADC $7CB9 ; 除算ルーチン 除数(下位) STA $7CBD ; 除算ルーチン 除算余剰結果(下位) CLC LC2013E: ROL $7CBB ; 除算ルーチン 除算結果(下位) DEX BNE $0122 LC20144: TDC SEP #$20 ; A = 8bit RTS DB $20 DB $20 DB $20 DB $20 DB $20 DB $BA DB $C9 DB $20 DB $BB DB $B8 DB $CB DB $DD DB $20 DB $A6 DB $20 DB $BB DB $B2 DB $B1 DB $B2 DB $C5 DB $D9 DB $20 DB $B5 DB $C4 DB $B3 DB $C4 DB $20 DB $CB DB $B8 DB $DE DB $C1 DB $20 DB $C0 DB $B6 DB $C9 DB $D8 DB $20 DB $C6 DB $20 DB $BB DB $BB DB $B9 DB $DE DB $D9 DB $20 DB $20 DB $20 DB $C8 DB $B6 DB $DE DB $DC DB $B8 DB $CA DB $DE DB $20 DB $BF DB $C9 DB $20 DB $C0 DB $CF DB $BC DB $B2 DB $20 DB $C9 DB $20 DB $D4 DB $BD DB $D7 DB $B6 DB $20 DB $C5 DB $D7 DB $DD DB $20 DB $BA DB $C4 DB $20 DB $A6 DB $20 DB $20 DB $20 DB $31 DB $39 DB $39 DB $32 ; 一時変数 自分アドレスへのインデックス DB $20 DB $32 ; 一時変数 自分アドレスへのインデックス DB $2E DB $31 DB $33 DB $20 DB $CB DB $B8 DB $DE DB $C1 DB $20 DB $B6 ;-------------------------------- ; ;-------------------------------- LC201A9: DB $C2 DB $CB DB $BB DB $20 ;-------------------------------- ; ;-------------------------------- LC201AD: DB $20 DB $20 DB $20 DB $20 ;-------------------------------- ; 256倍する ;-------------------------------- LC201B1: ASL ;-------------------------------- ; 128倍する ;-------------------------------- LC201B2: ASL ;-------------------------------- ; 64倍する ;-------------------------------- LC201B3: ASL ;-------------------------------- ; 32倍する ;-------------------------------- LC201B4: ASL ;-------------------------------- ; 16倍する ;-------------------------------- LC201B5: ASL ;-------------------------------- ; 8倍する ;-------------------------------- LC201B6: ASL ;-------------------------------- ; 4倍する ;-------------------------------- LC201B7: ASL ;-------------------------------- ; 2倍する ;-------------------------------- LC201B8: ASL RTS ;-------------------------------- ; 256で割る ;-------------------------------- LC201BA: LSR ;-------------------------------- ; 128で割る ;-------------------------------- LC201BB: LSR ;-------------------------------- ; 64で割る ;-------------------------------- LC201BC: LSR ;-------------------------------- ; 32で割る ;-------------------------------- LC201BD: LSR ;-------------------------------- ; 16で割る ;-------------------------------- LC201BE: LSR ;-------------------------------- ; 8で割る ;-------------------------------- LC201BF: LSR ;-------------------------------- ; 4で割る ;-------------------------------- LC201C0: LSR ;-------------------------------- ; 2で割る ;-------------------------------- LC201C1: LSR RTS ;-------------------------------- ; Aレジスタのセットされたビットの数をXレジスタに格納する ;-------------------------------- LC201C3: LDX #$0000 ; #$0000 = 0 LDY #$0008 ; #$0008 = 8 LC201C9: ASL BCC $01CD INX LC201CD: DEY BNE $01C9 RTS ;-------------------------------- ; Aレジスタの値の(7 - Xレジスタ)ビットをクリアする ;-------------------------------- LC201D1: AND $D0ECDE,X ; $7F, $BF, $DF, $EF, $F7, $FB, $FD, $FE RTS ;-------------------------------- ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする ;-------------------------------- LC201D6: ORA $D0ECE6,X RTS ;-------------------------------- ; Aレジスタの値の(7 - Xレジスタ)ビットがセットされていない場合は0クリアする ;-------------------------------- LC201DB: AND $D0ECE6,X ; $80, $40, $20, $10, $08, $04, $02, $01 RTS ;-------------------------------- ; Xレジスタ += 0x80 (次のキャラクタへ) ;-------------------------------- LC201E0: REP #$20 ; A = 16bit CLC TXA ADC #$0080 ; #$0080 = 128 TAX TDC SEP #$20 ; A = 8bit RTS ;-------------------------------- ; ($32: 自分アドレスへのインデックス) = Aレジスタ×128 ;-------------------------------- LC201EC: REP #$20 ; A = 16bit JSR $01B2 ; 128倍する TAX TDC SEP #$20 ; A = 8bit STX $32 ; 一時変数 自分アドレスへのインデックス RTS ;-------------------------------- ; Yレジスタと($34) = Aレジスタ×650 ;-------------------------------- LC201F8: ASL TAX REP #$20 ; A = 16bit LDA $D0ED59,X ; 0, 650, 1300, 1950 (650の倍数の数列) STA $34 TAY TDC SEP #$20 ; A = 8bit RTS ;-------------------------------- ; Yレジスタと($36) = Aレジスタ×11 ;-------------------------------- LC20207: PHX ASL TAX REP #$20 ; A = 16bit LDA $D0ED61,X ; 0, 11, 22, 33, 44, 55, 66, 77, 88, 99, 110, 121 (11の倍数の数列) STA $36 TAY TDC SEP #$20 ; A = 8bit PLX RTS ;-------------------------------- ; メモリ領域を初期化する ($3B3B〜$3BCC = 0, $34CC〜$384C = $FF, $3C00〜$3C5F = $FF, $7B3A〜$7B49 = 0, $3C90〜$3CBF = 0) ;-------------------------------- LC20218: LDX #$0090 ; #$0090 = 144 LC2021B: STZ $3BCC,X DEX BPL $021B TXA LDX #$037F ; #$037F = 895 LC20225: STA $384C,X DEX BPL $0225 LDX #$005F ; #$005F = 95 LC2022E: STA $3C5F,X DEX BPL $022E TDC LDX #$000F ; #$000F = 15 LC20238: STZ $7B49,X DEX BPL $0238 LDX #$002F ; #$002F = 47 LC20241: STZ $3CBF,X DEX BPL $0241 RTS ;-------------------------------- ; 修正値をもとにして4つのステータスとレベルとを設定する ;-------------------------------- LC20248: PHX PHY TDC TAY LC2024C: CLC LDA $2028,X ; 力(装備補正あり) ADC $2074,X ; 力修正値? CMP #$64 ; #$64 = 100 BCC $0259 LDA #$63 ; #$63 = 99 LC20259: STA $7BE1,Y ; 現在行動中のキャラクタの力 INX INY CPY #$0004 ; #$0004 = 4 BNE $024C PLY PLX CLC LDA $2002,X ; レベル ADC $2078,X ; レベル修正値? CMP #$64 ; #$64 = 100 BCC $0272 LDA #$63 ; #$63 = 99 LC20272: STA $7BE5 ; 現在行動中のキャラクタのレベル RTS ;-------------------------------- ; ;-------------------------------- LC20276: TAX LDA $D0ED79,X ; 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7 ASL TAX LDA $3C5D STA $3A4C,X LDA $3C5E STA $3A4D,X RTS ;-------------------------------- ; ;-------------------------------- LC2028A: STZ $0048 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) LDX #$0133 ; #$0133 = 307 LC20290: STZ $79F9,X DEX BPL $0290 TXA LDX #$0010 ; #$0010 = 16 LC2029A: STA $7B2D,X DEX BPL $029A TDC RTS ;-------------------------------- ; 0〜99の範囲の乱数取得 ;-------------------------------- LC202A2: TDC TAX LDA #$63 ; #$63 = 99 JMP $007C ; X〜Aの範囲の乱数取得 ;-------------------------------- ; ;-------------------------------- LC202A9: LDA $65 PHA AND #$F0 LSR LSR LSR LSR ORA $66 STA $2720 ; コマンド関連汎用領域?[0] PLA AND #$0F ASL ASL ASL ASL STA $2721 ; コマンド関連汎用領域?[1] RTS ;-------------------------------- ; ;-------------------------------- LC202C2: LDA $65 ORA $66 JSR $01C3 ; Aレジスタのセットされたビットの数をXレジスタに格納する DEX TXA STA $26A0 RTS ;-------------------------------- ; ;-------------------------------- LC202CF: STZ $7C29 TDC TAX STX $0E LC202D6: LDA $3EC2,X BEQ $02EB LDY $0E LDA $201A,Y ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$C0 BNE $02EB LDA $201D,Y ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$81 BEQ $0307 LC202EB: PHX CPX #$0004 ; #$0004 = 4 BCS $02FA LDA $66 JSR $01D1 ; Aレジスタの値の(7 - Xレジスタ)ビットをクリアする STA $66 BRA $0306 LC202FA: TXA SEC SBC #$04 ; #$04 = 4 TAX LDA $65 JSR $01D1 ; Aレジスタの値の(7 - Xレジスタ)ビットをクリアする STA $65 LC20306: PLX LC20307: REP #$20 ; A = 16bit CLC LDA $0E ADC #$0080 ; #$0080 = 128 STA $0E TDC SEP #$20 ; A = 8bit INX CPX #$000C ; #$000C = 12 BNE $02D6 LDA $66 ORA $65 BNE $0323 INC $7C29 LC20323: RTS ;-------------------------------- ; Aレジスタを魔法番号と見なし、FILEPOS_MAGDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) ;-------------------------------- LC20324: REP #$20 ; A = 16bit JSR $01B6 ; 8倍する TAX TDC SEP #$20 ; A = 8bit STZ $3D LC2032F: LDA $D10B80,X ; FILEPOS_MAGDATA STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY INC $3D LDA $3D CMP #$05 ; #$05 = 5 BNE $032F INY INY INY INY LC20344: LDA $D10B80,X ; FILEPOS_MAGDATA STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY INC $3D LDA $3D CMP #$08 ; #$08 = 8 BNE $0344 RTS ;-------------------------------- ; ;-------------------------------- LC20356: CLC LDA $3CEF ADC #$18 ; #$18 = 24 STA $3CEF CLC LDA $3CF0 ADC #$0C ; #$0C = 12 STA $3CF0 RTS ;-------------------------------- ; ;-------------------------------- LC20369: LDA $2620,Y ; 汎用領域?[0] BPL $0373 LDA #$AA ; #$AA = 170 JMP $03F9 LC20373: AND #$40 BEQ $0386 LDA $2B34,Y AND #$20 BEQ $0382 LDA #$AA ; #$AA = 170 BRA $03F9 LC20382: LDA #$00 ; #$00 = 0 BRA $03F9 LC20386: LDA $2620,Y ; 汎用領域?[0] ASL ASL TAX TDC TAY LC2038E: LDA $D12480,X ; ? (4バイト×64) STA $2720,Y ; コマンド関連汎用領域?[0] INX INY CPY #$0004 ; #$0004 = 4 BNE $038E TDC TAX TAY LDA #$AA ; #$AA = 170 STA $0E LC203A3: LDA $4199,X AND $2720,Y ; コマンド関連汎用領域?[0] BNE $03C3 LDA $419A,X AND $2721,Y ; コマンド関連汎用領域?[1] BNE $03C3 LDA $419B,X AND $2722,Y ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 BNE $03C3 LDA $419C,X AND $2723,Y ; コマンド関連汎用領域?[3] BEQ $03EE LC203C3: TXA LSR LSR BNE $03D0 LDA $0E AND #$7F STA $0E BRA $03EE LC203D0: CMP #$01 ; #$01 = 1 BNE $03DC LDA $0E AND #$DF STA $0E BRA $03EE LC203DC: CMP #$02 ; #$02 = 2 BNE $03E8 LDA $0E AND #$F7 STA $0E BRA $03EE LC203E8: LDA $0E AND #$FD STA $0E LC203EE: INX INX INX INX CPX #$0010 ; #$0010 = 16 BNE $03A3 LDA $0E LC203F9: RTS ;-------------------------------- ; ;-------------------------------- LC203FA: BEQ $042D CMP #$E0 ; #$E0 = 224 BCS $0471 CMP #$80 ; #$80 = 128 BCC $0439 SEC SBC #$80 ; #$80 = 128 REP #$20 ; A = 16bit ASL ASL STA $0E ASL CLC ADC $0E TAX TDC SEP #$20 ; A = 8bit LDA $D10600,X ; FILEPOS_ITEMDATA_PROTECTOR[0] AND #$08 BEQ $042D LDA $D10602,X ; FILEPOS_ITEMDATA_PROTECTOR[2] AND #$3F STA $2620,Y ; 汎用領域?[0] LDA #$5A ; #$5A = 90 STA $2B34,Y BRA $0490 LC2042D: LDA #$80 ; #$80 = 128 STA $2620,Y ; 汎用領域?[0] LDA #$5A ; #$5A = 90 STA $2B34,Y BRA $0490 LC20439: REP #$20 ; A = 16bit ASL ASL STA $0E ASL CLC ADC $0E TAX TDC SEP #$20 ; A = 8bit LDA $D10004,X ; FILEPOS_ITEMDATA_WEAPON[4] AND #$80 JSR $01BD ; 32で割る STA $2B34,Y LDA $D10000,X ; FILEPOS_ITEMDATA STA $2A34,Y LDA $D10002,X ; FILEPOS_ITEMDATA_WEAPON[2] PHA AND #$C0 ORA #$1A ORA $2B34,Y STA $2B34,Y PLA AND #$3F STA $2620,Y ; 汎用領域?[0] BRA $0490 LC20471: SEC SBC #$E0 ; #$E0 = 224 REP #$20 ; A = 16bit ASL ASL ASL TAX TDC SEP #$20 ; A = 8bit LDA $D10A80,X ; FILEPOS_ITEMDATA_TOOL[0] STA $2A34,Y LDA $D10A82,X ; FILEPOS_ITEMDATA_TOOL[2] STA $2B34,Y LDA #$40 ; #$40 = 64 STA $2620,Y ; 汎用領域?[0] LC20490: RTS ;-------------------------------- ; ;-------------------------------- LC20491: LDX #$000F ; #$000F = 15 LC20494: STZ $0E,X DEX BPL $0494 LDX #$0064 ; #$0064 = 100 STX $12 LDX $2E STX $0E LDA $30 STA $10 REP #$20 ; A = 16bit CLC LDX #$0020 ; #$0020 = 32 LC204AC: ROL $0E ROL $10 ROL $1A ROL $1C SEC LDA $1A SBC $12 STA $1A LDA $1C SBC $14 STA $1C BCS $04D0 LDA $1A ADC $12 STA $1A LDA $1C ADC $14 STA $1C CLC LC204D0: ROL $16 ROL $18 DEX BNE $04AC TDC SEP #$20 ; A = 8bit CLC LDA $16 ADC $08 STA $08 LDA $17 ADC $09 STA $09 SEC LDA $08 SBC $0A LDA $09 SBC $0B BCC $04FA LDA $0A STA $08 LDA $0B STA $09 LC204FA: RTS ;-------------------------------- ; ;-------------------------------- LC204FB: JSR $16E1 ; LDA $79FA TAX STZ $7B2D,X STZ $7B1C,X STZ $7ACC,X INC $7BFB JMP $1750 ; ;-------------------------------- ; コマンドタイプ No.000(00): ""(00), そのほか / コマンドタイプ No.035(23): だみい01 ;-------------------------------- LC20511: LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCC $053B SEC SBC #$04 ; #$04 = 4 ASL TAX LDA $D0EE95,X ; 0, 100, 200, 300, 400, 500, 600, 700 (100の倍数の数列) STA $0E LDA $D0EE96,X STA $0F TDC TAY LDX $0E LC2052C: LDA $4367,X STA $384C,Y INX INY CPY #$0064 ; #$0064 = 100 BNE $052C BRA $054D LC2053B: JSR $98FA ; STZ $384C,X STZ $384D,X STZ $384E,X STZ $384F,X STZ $3850,X LC2054D: LDA $79FA TAX LDA #$7E ; #$7E = 126 STA $7B2D,X STZ $7B1C,X STZ $7ACC,X INC $7BFB LDA $79FA ASL TAX LDA #$80 ; #$80 = 128 STA $7ADC,X STZ $7ADD,X INC $79FA RTS ;-------------------------------- ; コマンドタイプ No.001(01): アイテム / コマンドタイプ No.031(1F): のむ ;-------------------------------- LC20570: STZ $7C62 JSR $9923 ; Aレジスタと($0C) = ($79FA)×12 ($79FAの範囲は0〜23を想定?) JSR $175F ; 自分の($2058)と($2059)とを($65)と($66)にコピーする LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2056,X ; (フラグ系?) AND #$10 BEQ $0585 JMP $0632 LC20585: LDA $205A,X ; 使用するアイテムの番号? CMP #$EF ; #$EF = 239 BNE $0592 JSR $0767 ; 魔法のランプの使用を魔法の使用に変換する? JMP $0E43 LC20592: STA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 SEC SBC #$E0 ; #$E0 = 224 REP #$20 ; A = 16bit JSR $01B6 ; 8倍する TAX TDC SEP #$20 ; A = 8bit LDY $0C STZ $0A LC205A5: LDA $D10A80,X ; FILEPOS_ITEMDATA_TOOL[0] STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY INC $0A LDA $0A CMP #$05 ; #$05 = 5 BNE $05A5 INY INY INY INY LC205BA: LDA $D10A80,X ; FILEPOS_ITEMDATA_TOOL[0] STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY INC $0A LDA $0A CMP #$08 ; #$08 = 8 BNE $05BA JSR $02C2 ; BNE $05E3 LDY $0C LDA $7A00,Y ; FILEPOS_MONMAP BPL $05E0 LDA $79FA TAX INC $7BEB,X BRA $05E3 LC205E0: JSR $4AFE ; LC205E3: JSR $02A9 ; LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 STA $2621 ; 汎用領域?[1] LDA #$04 ; #$04 = 4 STA $2620 ; 汎用領域?[0] JSR $992F ; JSR $98FA ; STZ $384C,X LDA #$FC ; #$FC = 252 STA $384D,X LDA #$09 ; #$09 = 9 STA $384E,X LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 STA $384F,X STZ $3850,X LDY $0C LDA $79FA TAX LDA $7A00,Y ; FILEPOS_MONMAP AND #$7F STA $7B2D,X LDA $26A0 STA $7B1C,X BEQ $0628 INC $7B1C,X LDA #$80 ; #$80 = 128 LC20628: STA $7ACC,X JSR $1735 ; JSR $98E3 ; RTS LC20632: STZ $45 LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) TAX LDA $D0ED85,X ; 0, 84, 168, 252 (84の倍数の数列) TAY LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $205A,X ; 使用するアイテムの番号? BNE $0652 LDA $2013,X ; 装備品 (左手) STA $205A,X ; 使用するアイテムの番号? STA $7C62 TAX LDA $408B,Y BRA $0661 LC20652: INC $45 LDA $2014,X ; 装備品 (右手) STA $205A,X ; 使用するアイテムの番号? STA $7C62 TAX LDA $4097,Y LC20661: STA $46 AND #$7F TXY PHA PHA LDA $79FA TAX PLA STA $7B2D,X TYA STA $2621 ; 汎用領域?[1] LDA #$04 ; #$04 = 4 STA $2620 ; 汎用領域?[0] JSR $992F ; LDA $79FA TAX LDA $7B2D,X LDY $0C JSR $0324 ; Aレジスタを魔法番号と見なし、FILEPOS_MAGDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) JSR $02C2 ; BNE $06A0 LDY $0C LDA $7A00,Y ; FILEPOS_MONMAP BPL $069D LDA $79FA TAX INC $7BEB,X BRA $06A0 LC2069D: JSR $4AFE ; LC206A0: JSR $02A9 ; JSR $98FA ; STZ $384C,X LDA #$FC ; #$FC = 252 STA $384D,X LDA #$0A ; #$0A = 10 STA $384E,X PLA STA $384F,X STZ $3850,X LDA $79FA TAX LDA $7B2D,X BPL $06C6 TDC BRA $06CD LC206C6: LDY $0C LDA $7A00,Y ; FILEPOS_MONMAP AND #$7F LC206CD: STA $7B2D,X LDA $26A0 STA $7B1C,X BEQ $06DD INC $7B1C,X LDA #$80 ; #$80 = 128 LC206DD: STA $7ACC,X JSR $1735 ; JSR $98E3 ; LDA $46 BPL $0766 LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) JSR $01B7 ; 4倍する STA $0E ASL CLC ADC $0E TAY LDA $45 BNE $0715 TDC STA $37AC,Y STA $37AE,Y STA $37B0,Y LDA #$38 ; #$38 = 56 STA $37B2,Y LDA #$5A ; #$5A = 90 STA $37B4,Y LDA #$AA ; #$AA = 170 STA $37B6,Y BRA $072E LC20715: TDC STA $37AD,Y STA $37AF,Y STA $37B1,Y LDA #$38 ; #$38 = 56 STA $37B3,Y LDA #$5A ; #$5A = 90 STA $37B5,Y LDA #$AA ; #$AA = 170 STA $37B7,Y LC2072E: LDA $3CEF TAY LDA #$50 ; #$50 = 80 STA $3C5F,Y LDA $3CEF STA $0E ASL CLC ADC $0E TAX LDA $7C62 STA $3CBF,X STZ $3CC0,X STZ $3CC1,X JSR $994C ; LDA $41CC PHA LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) STA $41CC STA $7B7B JSR $9F3A ; PLA STA $41CC JSR $9A6F ; LC20766: RTS ;-------------------------------- ; 魔法のランプの使用を魔法の使用に変換する? ;-------------------------------- LC20767: LDA $7C74 ; 魔法のランプを使用した回数 CMP #$0D ; #$0D = 13 BCC $0778 CMP #$20 ; #$20 = 32 BCS $0776 LDA #$0D ; #$0D = 13 BRA $0778 LC20776: LDA #$0E ; #$0E = 14 LC20778: TAX LDA $D0EEE7,X ; 109, 108, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 72, 115 STA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 STZ $2723 ; コマンド関連汎用領域?[3] CLC LDA $7C74 ; 魔法のランプを使用した回数 ADC #$01 ; #$01 = 1 BCC $078D LDA #$FF ; #$FF = 255 LC2078D: STA $7C74 ; 魔法のランプを使用した回数 RTS ;-------------------------------- ; コマンドタイプ No.002(02): チェンジ ;-------------------------------- LC20791: LDA #$03 ; #$03 = 3 JSR $16AA ; Aレジスタをコマンド番号と見なし、FILEPOS_CHRCMDDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) INC $7BFB LDA #$02 ; #$02 = 2 JSR $16E1 ; JSR $1705 ; JMP $1750 ; ;-------------------------------- ; コマンドタイプ No.003(03): ぼうぎょ ;-------------------------------- LC207A4: LDA #$03 ; #$03 = 3 JMP $04FB ; ;-------------------------------- ; コマンドタイプ No.005(05): まもり ;-------------------------------- LC207A9: LDA #$05 ; #$05 = 5 JMP $04FB ; ;-------------------------------- ; コマンドタイプ No.006(06): けり ;-------------------------------- LC207AE: LDA #$07 ; #$07 = 7 JSR $16AA ; Aレジスタをコマンド番号と見なし、FILEPOS_CHRCMDDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) JSR $175F ; 自分の($2058)と($2059)とを($65)と($66)にコピーする JSR $02A9 ; JSR $02C2 ; LDA #$07 ; #$07 = 7 JSR $16FA ; LDA #$06 ; #$06 = 6 JSR $16E1 ; JSR $171A ; JSR $1735 ; JMP $98E3 ; ;-------------------------------- ; コマンドタイプ No.007(07): ためる ;-------------------------------- LC207CF: LDA #$08 ; #$08 = 8 JSR $16FA ; LDA #$07 ; #$07 = 7 JSR $16E1 ; LDA $79FA TAX STZ $7B2D,X STZ $7B1C,X STZ $7ACC,X JSR $1750 ; LDX $32 ; 一時変数 自分アドレスへのインデックス LDA #$4E ; #$4E = 78 STA $2057,X ; 実行するコマンドの番号 LDA #$10 ; #$10 = 16 STA $201F,X ; フラグ (04: 防御無視?, 08: 乱れ打ちで半減?, 10: ためる?, 20: 不明(攻撃力1/2), 40: 投げる?, 80: 必ず命中?) LDA #$4E ; #$4E = 78 TAX LDA $D15DA0,X ; コマンド発動までの時間 (1バイト×96) PHA LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 LDX $32 ; 一時変数 自分アドレスへのインデックス PLA JSR $6163 ; AレジスタをATB時間とみなし、状態による修正を行う(ヘイストであれば1/2(下限: 1), スロウであれば2倍(上限: 255), 最終結果が0であれば1にする) STA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) LDA #$41 ; #$41 = 65 STA $3CFB,Y ; タイマー制御フラグ?(行動可能時間待ち(ATBゲージ)) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) INC $7BFC RTS ;-------------------------------- ; コマンドタイプ No.044(2C): コマンド(57) ;-------------------------------- LC20814: JSR $175F ; 自分の($2058)と($2059)とを($65)と($66)にコピーする JSR $4AFE ; LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $66 STA $2059,X ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) LDA $65 STA $2058,X ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) JSR $02A9 ; LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) TAX LDA $D0ED85,X ; 0, 84, 168, 252 (84の倍数の数列) TAX STX $0E LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2013,X ; 装備品 (左手) BNE $083D JMP $089D LC2083D: JSR $9923 ; Aレジスタと($0C) = ($79FA)×12 ($79FAの範囲は0〜23を想定?) STY $14 STZ $12 LDX $0E LC20846: LDA $4085,X STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY INC $12 LDA $12 CMP #$0C ; #$0C = 12 BNE $0846 LDX $0E LDA $408A,X AND #$04 BNE $0862 TDC BRA $0869 LC20862: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $207A,X ; 攻撃エフェクトの種類 AND #$7F LC20869: PHA JSR $98FA ; STZ $384C,X LDA #$FC ; #$FC = 252 STA $384D,X LDA #$01 ; #$01 = 1 STA $384E,X LDA #$04 ; #$04 = 4 STA $384F,X PLA STA $3850,X LDX $0E LDA $408D,X PHA LDA $79FA TAX PLA STA $7B2D,X STZ $7B1C,X STZ $7ACC,X JSR $1735 ; JSR $98E3 ; LC2089D: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2014,X ; 装備品 (右手) BNE $08A5 RTS LC208A5: JSR $9923 ; Aレジスタと($0C) = ($79FA)×12 ($79FAの範囲は0〜23を想定?) STY $12 STZ $14 LDX $0E LC208AE: LDA $4091,X STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY INC $14 LDA $14 CMP #$0C ; #$0C = 12 BNE $08AE LDX $0E LDA $79FA TAY LDA $4099,X STA $7B2D,Y JSR $98FA ; STZ $384C,X LDA #$FC ; #$FC = 252 STA $384D,X LDA #$01 ; #$01 = 1 STA $384E,X LDA #$04 ; #$04 = 4 STA $384F,X STX $08 LDX $0E LDA $4096,X AND #$04 BNE $08EE LDA #$80 ; #$80 = 128 BRA $08F5 LC208EE: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $207A,X ; 攻撃エフェクトの種類 ORA #$80 LC208F5: LDX $08 STA $3850,X LDA $79FA TAX STZ $7B1C,X STZ $7ACC,X JSR $1735 ; JSR $98E3 ; RTS ;-------------------------------- ; コマンドタイプ No.008(08): チャクラ ;-------------------------------- LC2090B: LDA #$09 ; #$09 = 9 JSR $16AA ; Aレジスタをコマンド番号と見なし、FILEPOS_CHRCMDDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) LDA #$09 ; #$09 = 9 JSR $16FA ; LDA #$08 ; #$08 = 8 JSR $16E1 ; JSR $1705 ; JSR $1750 ; LDA $79FA TAX STZ $7B2D,X STZ $7B1C,X STZ $7ACC,X JSR $1750 ; JMP $98E3 ; ;-------------------------------- ; コマンドタイプ No.009(09): とんずら ;-------------------------------- LC20933: LDA #$0A ; #$0A = 10 JSR $16AA ; Aレジスタをコマンド番号と見なし、FILEPOS_CHRCMDDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) INC $7BFB LDA #$0A ; #$0A = 10 JSR $16FA ; LDA #$09 ; #$09 = 9 JSR $16E1 ; JSR $1705 ; JSR $1750 ; JMP $994C ; ;-------------------------------- ; コマンドタイプ No.010(0A): ぬすむ ;-------------------------------- LC2094E: LDA #$0B ; #$0B = 11 JSR $16AA ; Aレジスタをコマンド番号と見なし、FILEPOS_CHRCMDDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) JSR $175F ; 自分の($2058)と($2059)とを($65)と($66)にコピーする JSR $4AFE ; JSR $02A9 ; LDA #$0B ; #$0B = 11 JSR $16FA ; LDA #$0A ; #$0A = 10 JSR $16E1 ; JSR $1705 ; JSR $1735 ; JMP $994C ; ;-------------------------------- ; コマンドタイプ No.011(0B): ぶんどる ;-------------------------------- LC2096F: STZ $79FA STZ $79F9 LDA #$0C ; #$0C = 12 JSR $16FA ; JSR $0814 ; コマンドタイプ No.044(2C): コマンド(57) LDA #$0B ; #$0B = 11 JSR $16AA ; Aレジスタをコマンド番号と見なし、FILEPOS_CHRCMDDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) LDA #$0A ; #$0A = 10 JSR $16E1 ; JSR $1705 ; JSR $1735 ; JMP $994C ; ;-------------------------------- ; コマンドタイプ No.012(0C): ジャンプ ;-------------------------------- LC20990: LDA #$0D ; #$0D = 13 JSR $16FA ; LC20995: LDA #$0C ; #$0C = 12 JSR $16E1 ; LDA $79FA TAX STZ $7B2D,X STZ $7B1C,X STZ $7ACC,X JSR $1750 ; INC $7BFB LDX $32 ; 一時変数 自分アドレスへのインデックス LDA #$4F ; #$4F = 79 STA $2057,X ; 実行するコマンドの番号 LDA #$10 ; #$10 = 16 STA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) LDA #$80 ; #$80 = 128 STA $201F,X ; フラグ (04: 防御無視?, 08: 乱れ打ちで半減?, 10: ためる?, 20: 不明(攻撃力1/2), 40: 投げる?, 80: 必ず命中?) LDA #$4F ; #$4F = 79 TAX LDA $D15DA0,X ; コマンド発動までの時間 (1バイト×96) PHA LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 LDX $32 ; 一時変数 自分アドレスへのインデックス PLA JSR $6163 ; AレジスタをATB時間とみなし、状態による修正を行う(ヘイストであれば1/2(下限: 1), スロウであれば2倍(上限: 255), 最終結果が0であれば1にする) STA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) LDA #$41 ; #$41 = 65 STA $3CFB,Y ; タイマー制御フラグ?(行動可能時間待ち(ATBゲージ)) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) INC $7BFC RTS ;-------------------------------- ; コマンドタイプ No.045(2D): コマンド(58) ;-------------------------------- LC209DD: LDA #$2D ; #$2D = 45 JSR $16E1 ; JSR $175F ; 自分の($2058)と($2059)とを($65)と($66)にコピーする JSR $4AFE ; LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $66 STA $2059,X ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) LDA $65 STA $2058,X ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) JSR $02A9 ; LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) TAX LDA $D0ED85,X ; 0, 84, 168, 252 (84の倍数の数列) TAX STX $0E LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2013,X ; 装備品 (左手) BNE $0A0B JMP $0A3C LC20A0B: JSR $9923 ; Aレジスタと($0C) = ($79FA)×12 ($79FAの範囲は0〜23を想定?) STZ $12 LDX $0E LC20A12: LDA $4085,X STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY INC $12 LDA $12 CMP #$0C ; #$0C = 12 BNE $0A12 LDX $0E LDA $408D,X PHA LDA $79FA TAX PLA STA $7B2D,X STZ $7B1C,X STZ $7ACC,X JSR $1735 ; JSR $98E3 ; LC20A3C: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2014,X ; 装備品 (右手) BNE $0A46 JMP $0A79 LC20A46: JSR $9923 ; Aレジスタと($0C) = ($79FA)×12 ($79FAの範囲は0〜23を想定?) STZ $12 LDX $0E LC20A4D: LDA $4091,X STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY INC $12 LDA $12 CMP #$0C ; #$0C = 12 BNE $0A4D LDX $0E LDA $79FA TAY LDA $4099,X STA $7B2D,Y LDA $79FA TAX STZ $7B1C,X STZ $7ACC,X JSR $1735 ; JSR $98E3 ; LC20A79: INC $7BFB RTS ;-------------------------------- ; コマンドタイプ No.046(2E): コマンド(59) ;-------------------------------- LC20A7D: LDA #$50 ; #$50 = 80 JSR $16AA ; Aレジスタをコマンド番号と見なし、FILEPOS_CHRCMDDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) JSR $175F ; 自分の($2058)と($2059)とを($65)と($66)にコピーする JSR $4AFE ; STZ $65 LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $66 JSR $02A9 ; INC $7BFB LDA #$2E ; #$2E = 46 JSR $16E1 ; JSR $1705 ; JMP $1735 ; ;-------------------------------- ; コマンドタイプ No.013(0D): りゅうけん ;-------------------------------- LC20AA4: JSR $175F ; 自分の($2058)と($2059)とを($65)と($66)にコピーする JSR $4AFE ; JSR $02A9 ; JSR $02C2 ; LDA #$0E ; #$0E = 14 JSR $16FA ; LDA #$0D ; #$0D = 13 JSR $16E1 ; JSR $9923 ; Aレジスタと($0C) = ($79FA)×12 ($79FAの範囲は0〜23を想定?) LDA #$71 ; #$71 = 113 JSR $0324 ; Aレジスタを魔法番号と見なし、FILEPOS_MAGDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) JSR $1705 ; JSR $1735 ; JSR $98E3 ; JSR $9923 ; Aレジスタと($0C) = ($79FA)×12 ($79FAの範囲は0〜23を想定?) LDA #$72 ; #$72 = 114 JSR $0324 ; Aレジスタを魔法番号と見なし、FILEPOS_MAGDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) JSR $1705 ; JSR $1735 ; JMP $98E3 ; ;-------------------------------- ; コマンドタイプ No.014(0E): けむりだま ;-------------------------------- LC20ADC: LDA #$0F ; #$0F = 15 JSR $16AA ; Aレジスタをコマンド番号と見なし、FILEPOS_CHRCMDDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) JSR $175F ; 自分の($2058)と($2059)とを($65)と($66)にコピーする JSR $02A9 ; JSR $02C2 ; LDA #$0F ; #$0F = 15 JSR $16FA ; LDA #$0E ; #$0E = 14 JSR $16E1 ; JSR $171A ; JMP $1735 ; ;-------------------------------- ; コマンドタイプ No.015(0F): ぶんしん ;-------------------------------- LC20AFA: LDA #$10 ; #$10 = 16 JSR $16AA ; Aレジスタをコマンド番号と見なし、FILEPOS_CHRCMDDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) LDA #$10 ; #$10 = 16 JSR $16FA ; LDA #$0F ; #$0F = 15 JSR $16E1 ; JSR $1705 ; JMP $1750 ; ;-------------------------------- ; コマンドタイプ No.016(10): なげる ;-------------------------------- LC20B0F: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $205A,X ; 使用するアイテムの番号? BPL $0B4E TDC TAX STZ $0E LC20B1A: LDA $3EC6,X BEQ $0B26 LDA $0E JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $0E LC20B26: INX CPX #$0008 ; #$0008 = 8 BNE $0B1A LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $0E STA $2058,X ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) LDA $04F1 ; モンスターパーティの種類(上位) BEQ $0B46 LDA $04F0 ; モンスターパーティの種類(下位) CMP #$BF ; #$BF = 191 BNE $0B46 LDA $0E AND #$FC STA $2058,X ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) LC20B46: LDA #$40 ; #$40 = 64 STA $2056,X ; (フラグ系?) JMP $0570 ; コマンドタイプ No.001(01): アイテム / コマンドタイプ No.031(1F): のむ LC20B4E: LDA #$11 ; #$11 = 17 JSR $16AA ; Aレジスタをコマンド番号と見なし、FILEPOS_CHRCMDDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) JSR $175F ; 自分の($2058)と($2059)とを($65)と($66)にコピーする JSR $4AFE ; JSR $02A9 ; LDA #$11 ; #$11 = 17 JSR $16FA ; LDA #$10 ; #$10 = 16 JSR $16E1 ; JSR $1705 ; JSR $1735 ; JMP $98E3 ; ;-------------------------------- ; コマンドタイプ No.017(11): みねうち ;-------------------------------- LC20B6F: LDA #$12 ; #$12 = 18 JSR $16FA ; INC $7BFD JMP $45FF ; コマンドタイプ No.004(04): たたかう ;-------------------------------- ; コマンドタイプ No.018(12): ぜになげ ;-------------------------------- LC20B7A: LDA #$13 ; #$13 = 19 JSR $16AA ; Aレジスタをコマンド番号と見なし、FILEPOS_CHRCMDDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) JSR $175F ; 自分の($2058)と($2059)とを($65)と($66)にコピーする JSR $02A9 ; JSR $02C2 ; LDA #$13 ; #$13 = 19 JSR $16FA ; LDA #$12 ; #$12 = 18 JSR $16E1 ; JSR $171A ; JSR $1735 ; JMP $98E3 ; ;-------------------------------- ; コマンドタイプ No.019(13): いあいぬき ;-------------------------------- LC20B9B: LDA #$14 ; #$14 = 20 JSR $16AA ; Aレジスタをコマンド番号と見なし、FILEPOS_CHRCMDDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) JSR $175F ; 自分の($2058)と($2059)とを($65)と($66)にコピーする JSR $02A9 ; JSR $02C2 ; INC $7BFB LDA #$14 ; #$14 = 20 JSR $16FA ; LDA #$13 ; #$13 = 19 JSR $16E1 ; JSR $171A ; JSR $1735 ; JMP $98E3 ; ;-------------------------------- ; コマンドタイプ No.020(14): どうぶつ ;-------------------------------- LC20BBF: TDC TAX LDA $7BE5 ; 現在行動中のキャラクタのレベル JSR $007C ; X〜Aの範囲の乱数取得 BNE $0BCC TDC BRA $0C06 LC20BCC: CMP #$05 ; #$05 = 5 BCS $0BD4 LDA #$01 ; #$01 = 1 BRA $0C06 LC20BD4: CMP #$0A ; #$0A = 10 BCS $0BDC LDA #$02 ; #$02 = 2 BRA $0C06 LC20BDC: CMP #$14 ; #$14 = 20 BCS $0BE4 LDA #$03 ; #$03 = 3 BRA $0C06 LC20BE4: CMP #$1E ; #$1E = 30 BCS $0BEC LDA #$04 ; #$04 = 4 BRA $0C06 LC20BEC: CMP #$28 ; #$28 = 40 BCS $0BF4 LDA #$05 ; #$05 = 5 BRA $0C06 LC20BF4: CMP #$32 ; #$32 = 50 BCS $0BFC LDA #$06 ; #$06 = 6 BRA $0C06 LC20BFC: CMP #$3C ; #$3C = 60 BCS $0C04 LDA #$07 ; #$07 = 7 BRA $0C06 LC20C04: LDA #$08 ; #$08 = 8 LC20C06: STA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 REP #$20 ; A = 16bit JSR $01B6 ; 8倍する TAX TDC SEP #$20 ; A = 8bit TDC TAY LC20C14: LDA $D16AB1,X ; FILEPOS_SPDATA STA $2620,Y ; 汎用領域?[0] INX INY CPY #$0008 ; #$0008 = 8 BNE $0C14 STZ $66 STZ $65 LDA $2620 ; 汎用領域?[0] BNE $0C36 LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $66 BRA $0C5B LC20C36: AND #$08 BNE $0C40 LDA #$F0 ; #$F0 = 240 STA $66 BRA $0C5B LC20C40: LDA $2620 ; 汎用領域?[0] AND #$40 BNE $0C57 TDC TAX LDA #$07 ; #$07 = 7 JSR $007C ; X〜Aの範囲の乱数取得 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $65 BRA $0C5B LC20C57: LDA #$FF ; #$FF = 255 STA $65 LC20C5B: STZ $20 STZ $21 LDA #$01 ; #$01 = 1 STA $2723 ; コマンド関連汎用領域?[3] JMP $5CE1 ; ;-------------------------------- ; コマンドタイプ No.021(15): ねらう ;-------------------------------- LC20C67: LDA #$16 ; #$16 = 22 JSR $16FA ; JMP $45FF ; コマンドタイプ No.004(04): たたかう ;-------------------------------- ; コマンドタイプ No.022(16): みだれうち ;-------------------------------- LC20C6F: LDA #$17 ; #$17 = 23 JSR $16FA ; STZ $22 LC20C76: TDC TAX LDA #$07 ; #$07 = 7 JSR $007C ; X〜Aの範囲の乱数取得 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする LDX $32 ; 一時変数 自分アドレスへのインデックス STA $2058,X ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) STZ $2059,X ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2058,X ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) STA $65 LDA $2059,X ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) STA $66 JSR $4AFE ; LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $66 STA $2059,X ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) LDA $65 STA $2058,X ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) PHA AND #$F0 LSR LSR LSR LSR ORA $2059,X ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) STA $2720 ; コマンド関連汎用領域?[0] PLA AND #$0F ASL ASL ASL ASL STA $2721 ; コマンド関連汎用領域?[1] LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) TAX LDA $D0ED85,X ; 0, 84, 168, 252 (84の倍数の数列) TAX STX $0E LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2013,X ; 装備品 (左手) BNE $0CD0 JMP $0D2C LC20CD0: JSR $9923 ; Aレジスタと($0C) = ($79FA)×12 ($79FAの範囲は0〜23を想定?) STY $14 STZ $12 LDX $0E LC20CD9: LDA $4085,X STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY INC $12 LDA $12 CMP #$0C ; #$0C = 12 BNE $0CD9 JSR $98FA ; STZ $384C,X LDA #$FC ; #$FC = 252 STA $384D,X LDA #$01 ; #$01 = 1 STA $384E,X LDA #$04 ; #$04 = 4 STA $384F,X STZ $3850,X LDX $0E LDA $408D,X PHA LDA $79FA TAX PLA STA $7B2D,X STZ $7B1C,X STZ $7ACC,X LDA $79FA ASL TAX LDA $2720 ; コマンド関連汎用領域?[0] STA $7ADC,X LDA $2721 ; コマンド関連汎用領域?[1] STA $7ADD,X INC $79FA JSR $98E3 ; LC20D2C: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2014,X ; 装備品 (右手) BNE $0D36 JMP $0D96 LC20D36: JSR $9923 ; Aレジスタと($0C) = ($79FA)×12 ($79FAの範囲は0〜23を想定?) STY $12 STZ $14 LDX $0E LC20D3F: LDA $4091,X STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY INC $14 LDA $14 CMP #$0C ; #$0C = 12 BNE $0D3F LDX $0E LDA $79FA TAY LDA $4099,X STA $7B2D,Y JSR $98FA ; STZ $384C,X LDA #$FC ; #$FC = 252 STA $384D,X LDA #$01 ; #$01 = 1 STA $384E,X LDA #$04 ; #$04 = 4 STA $384F,X LDA #$80 ; #$80 = 128 STA $3850,X LDA $79FA TAX STZ $7B1C,X STZ $7ACC,X LDA $79FA ASL TAX LDA $2720 ; コマンド関連汎用領域?[0] STA $7ADC,X LDA $2721 ; コマンド関連汎用領域?[1] STA $7ADD,X INC $79FA JSR $98E3 ; LC20D96: INC $22 LDA $22 CMP #$04 ; #$04 = 4 BEQ $0DA1 JMP $0C76 LC20DA1: RTS ;-------------------------------- ; コマンドタイプ No.024(18): しらべる ;-------------------------------- LC20DA2: LDA #$19 ; #$19 = 25 JSR $16AA ; Aレジスタをコマンド番号と見なし、FILEPOS_CHRCMDDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) JSR $175F ; 自分の($2058)と($2059)とを($65)と($66)にコピーする JSR $4AFE ; JSR $02A9 ; LDA #$19 ; #$19 = 25 JSR $16FA ; LDA #$18 ; #$18 = 24 JSR $16E1 ; JSR $1705 ; JSR $1735 ; JMP $994C ; ;-------------------------------- ; コマンドタイプ No.025(19): みやぶる ;-------------------------------- LC20DC3: LDA #$1A ; #$1A = 26 JSR $16AA ; Aレジスタをコマンド番号と見なし、FILEPOS_CHRCMDDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) JSR $175F ; 自分の($2058)と($2059)とを($65)と($66)にコピーする JSR $4AFE ; JSR $02A9 ; LDA #$1A ; #$1A = 26 JSR $16FA ; LDA #$19 ; #$19 = 25 JSR $16E1 ; JSR $1705 ; JSR $1735 ; JMP $994C ; ;-------------------------------- ; コマンドタイプ No.023(17): よびだす ;-------------------------------- LC20DE4: LDA $095A AND #$FE ORA $0959 BNE $0E19 LDA #$18 ; #$18 = 24 JSR $16FA ; LDA $3CEF TAX LDA #$1D ; #$1D = 29 STA $3C5F,X LDA $79FA TAX LDA #$7E ; #$7E = 126 STA $7B2D,X STZ $7B1C,X STZ $7ACC,X LDA #$0D ; #$0D = 13 JSR $16E1 ; JSR $1750 ; JSR $994C ; JMP $0EDF LC20E19: TDC TAX STX $0E LDA #$0E ; #$0E = 14 JSR $007C ; X〜Aの範囲の乱数取得 CLC ADC #$48 ; #$48 = 72 STA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 STZ $2723 ; コマンド関連汎用領域?[3] LSR ROR $0E LSR ROR $0E LSR ROR $0E TAY LDA $0E JSR $01BD ; 32で割る TAX LDA $0950,Y JSR $01DB ; Aレジスタの値の(7 - Xレジスタ)ビットがセットされていない場合は0クリアする BEQ $0E19 LC20E43: STZ $66 STZ $65 LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 REP #$20 ; A = 16bit JSR $01B6 ; 8倍する TAX TDC SEP #$20 ; A = 8bit TDC TAY LC20E55: LDA $D10B80,X ; FILEPOS_MAGDATA STA $2620,Y ; 汎用領域?[0] INX INY CPY #$0008 ; #$0008 = 8 BNE $0E55 LDA $2620 ; 汎用領域?[0] BNE $0E73 LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $66 BRA $0EBF LC20E73: AND #$40 BNE $0EAE LDA $2620 ; 汎用領域?[0] AND #$08 BNE $0E9E TDC TAX TAY LC20E81: LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$80 BNE $0E95 JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INY CPY #$0004 ; #$0004 = 4 BNE $0E81 LDA #$80 ; #$80 = 128 BRA $0E9A LC20E95: TYX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする LC20E9A: STA $66 BRA $0EBF LC20E9E: TDC TAX LDA #$07 ; #$07 = 7 JSR $007C ; X〜Aの範囲の乱数取得 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $65 BRA $0EBF LC20EAE: LDA $2620 ; 汎用領域?[0] AND #$08 BNE $0EBB LDA #$F0 ; #$F0 = 240 STA $66 BRA $0EBF LC20EBB: LDA #$FF ; #$FF = 255 STA $65 LC20EBF: STZ $20 STZ $21 JSR $5CE1 ; LDA $20 BEQ $0EDF LDA $20 STA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 STZ $2723 ; コマンド関連汎用領域?[3] LDA $23 STA $65 LDA $22 STA $66 INC $21 JSR $5CE1 ; LC20EDF: RTS ;-------------------------------- ; コマンドタイプ No.026(1A): なだめる ;-------------------------------- LC20EE0: LDA #$1B ; #$1B = 27 JSR $16AA ; Aレジスタをコマンド番号と見なし、FILEPOS_CHRCMDDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) JSR $175F ; 自分の($2058)と($2059)とを($65)と($66)にコピーする JSR $4AFE ; JSR $02A9 ; LDA #$1B ; #$1B = 27 JSR $16FA ; LDA #$1A ; #$1A = 26 JSR $16E1 ; JSR $1705 ; JMP $1735 ; ;-------------------------------- ; コマンドタイプ No.027(1B): あやつる ;-------------------------------- LC20EFE: LDA #$1C ; #$1C = 28 JSR $16AA ; Aレジスタをコマンド番号と見なし、FILEPOS_CHRCMDDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) JSR $175F ; 自分の($2058)と($2059)とを($65)と($66)にコピーする JSR $4AFE ; JSR $02A9 ; LDA #$1C ; #$1C = 28 JSR $16FA ; LDA #$1B ; #$1B = 27 JSR $16E1 ; JSR $1705 ; JSR $1735 ; JMP $994C ; ;-------------------------------- ; コマンドタイプ No.028(1C): とらえる ;-------------------------------- LC20F1F: LDA #$1D ; #$1D = 29 JSR $16AA ; Aレジスタをコマンド番号と見なし、FILEPOS_CHRCMDDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) JSR $175F ; 自分の($2058)と($2059)とを($65)と($66)にコピーする JSR $4AFE ; JSR $02A9 ; LDA #$1D ; #$1D = 29 JSR $16FA ; LDA #$1C ; #$1C = 28 JSR $16E1 ; JSR $1705 ; JSR $1735 ; JMP $994C ; ;-------------------------------- ; コマンドタイプ No.029(1D): はなつ ;-------------------------------- LC20F40: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2015,X ; 捕らえているモンスター STA $7C4B ; (捕らえているモンスター) PHA LDA #$FF ; #$FF = 255 STA $2015,X ; 捕らえているモンスター PLA TAX LDA $D08600,X ; FILEPOS_MONFREE STA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 REP #$20 ; A = 16bit JSR $01B6 ; 8倍する TAX TDC SEP #$20 ; A = 8bit TDC TAY LC20F62: LDA $D10B80,X ; FILEPOS_MAGDATA STA $262A,Y INX INY CPY #$0008 ; #$0008 = 8 BNE $0F62 JSR $9923 ; Aレジスタと($0C) = ($79FA)×12 ($79FAの範囲は0〜23を想定?) TDC TAX LC20F75: LDA $262A,X STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY CPX #$0005 ; #$0005 = 5 BNE $0F75 INY INY INY INY LC20F86: LDA $262A,X STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY CPX #$0008 ; #$0008 = 8 BNE $0F86 STZ $65 STZ $66 LDA $262A BNE $0FA7 LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $66 BRA $0FE7 LC20FA7: AND #$40 BNE $0FD6 LDA $262A AND #$08 BNE $0FC6 LC20FB2: TDC TAX LDA #$03 ; #$03 = 3 JSR $007C ; X〜Aの範囲の乱数取得 CMP $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) BEQ $0FB2 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $66 BRA $0FE7 LC20FC6: TDC TAX LDA #$07 ; #$07 = 7 JSR $007C ; X〜Aの範囲の乱数取得 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $65 BRA $0FE7 LC20FD6: LDA $262A AND #$08 BNE $0FE3 LDA #$F0 ; #$F0 = 240 STA $66 BRA $0FE7 LC20FE3: LDA #$FF ; #$FF = 255 STA $65 LC20FE7: JSR $02C2 ; BNE $0FFF LDA $262E BPL $0FFA LDA $79FA TAX INC $7BEB,X BRA $1005 LC20FFA: JSR $4AFE ; BRA $1005 LC20FFF: JSR $02CF ; JSR $02C2 ; LC21005: JSR $02A9 ; LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 STA $2621 ; 汎用領域?[1] STZ $2620 ; 汎用領域?[0] JSR $992F ; JSR $98FA ; STZ $384C,X STZ $3850,X LDA #$FC ; #$FC = 252 STA $384D,X LDA #$00 ; #$00 = 0 STA $384E,X LDA $2621 ; 汎用領域?[1] STA $384F,X LDA $79FA TAX LDA $262E AND #$7F STA $7B2D,X LDA $26A0 STA $7B1C,X BEQ $1046 INC $7B1C,X LDA #$80 ; #$80 = 128 LC21046: STA $7ACC,X LDA $79FA ASL TAX LDA $2720 ; コマンド関連汎用領域?[0] STA $7ADC,X STA $7AFC,X LDA $2721 ; コマンド関連汎用領域?[1] STA $7ADD,X STA $7AFD,X INC $79FA JSR $98E3 ; LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) STA $24 LDA #$14 ; #$14 = 20 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) TDC TAY LDX $26 LC21075: LDA $375C,X CMP #$1E ; #$1E = 30 BEQ $1085 ; INX INY CPY #$0004 ; #$0004 = 4 BNE $1075 BEQ $1093 ;-------------------------------- ; ;-------------------------------- LC21085: LDA #$1D ; #$1D = 29 STA $375C,X LDA #$28 ; #$28 = 40 STA $3768,X INX INY BRA $1075 LC21093: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2002,X ; レベル STA $2600 LDA $2044,X ; 攻撃力 (「はなつ」時にモンスターの攻撃力で上書きされる) STA $2601 LDA $2062,X ; ダメージ倍率 (「はなつ」時にモンスターの倍率で設定される) STA $2602 LDA $202B,X ; 魔力(装備補正あり) STA $2603 LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) STA $2604 TDC TAY LC210B5: LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) STA $2605,Y STZ $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) INX INY CPY #$0009 ; #$0009 = 9 BNE $10B5 TDC TAY LDX $32 ; 一時変数 自分アドレスへのインデックス LC210C9: LDA $2050,X ; 魔法剣 付加属性(2倍) (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) STA $260E,Y STZ $2050,X ; 魔法剣 付加属性(2倍) (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) INX INY CPY #$0006 ; #$0006 = 6 BNE $10C9 TDC TAY LDX $32 ; 一時変数 自分アドレスへのインデックス LC210DD: LDA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) STA $2614,Y STZ $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) INX INY CPY #$000B ; #$000B = 11 BNE $10DD LDA $7C4B ; (捕らえているモンスター) REP #$20 ; A = 16bit JSR $01B4 ; 32倍する TAX TDC SEP #$20 ; A = 8bit LDY $32 ; 一時変数 自分アドレスへのインデックス LDA $2000,Y ; 隊列(bit7)・キャラクタ番号(下位4ビット) AND #$7F STA $2000,Y ; 隊列(bit7)・キャラクタ番号(下位4ビット) LDA $D0001F,X ; FILEPOS_MONDATA[31] STA $2002,Y ; レベル LDA $D00001,X ; FILEPOS_MONDATA[1] STA $2044,Y ; 攻撃力 (「はなつ」時にモンスターの攻撃力で上書きされる) LDA $D00002,X ; FILEPOS_MONDATA[2] STA $2062,Y ; ダメージ倍率 (「はなつ」時にモンスターの倍率で設定される) LDA $D00005,X ; FILEPOS_MONDATA[5] STA $202B,Y ; 魔力(装備補正あり) LDA #$01 ; #$01 = 1 STA $7C4F RTS ;-------------------------------- ; コマンドタイプ No.030(1E): ちょうごう ;-------------------------------- LC21125: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2058,X ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) STA $65 LDA $2059,X ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) STA $66 LDA $205A,X ; 使用するアイテムの番号? SEC SBC #$E0 ; #$E0 = 224 TAX STX $0E LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $205F,X ; (「ものまね」で使用) SEC SBC #$E0 ; #$E0 = 224 STA $24 LDA #$0C ; #$0C = 12 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) REP #$20 ; A = 16bit CLC LDA $26 ADC $0E TAX TDC SEP #$20 ; A = 8bit LDA $D16EF9,X ; 調合用テーブル (12×12) STA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 STZ $20 STZ $21 LDA #$01 ; #$01 = 1 STA $2723 ; コマンド関連汎用領域?[3] JMP $5CE1 ; ;-------------------------------- ; コマンドタイプ No.032(20): ちゆ ;-------------------------------- LC21169: LDA #$21 ; #$21 = 33 JSR $16AA ; Aレジスタをコマンド番号と見なし、FILEPOS_CHRCMDDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) JSR $175F ; 自分の($2058)と($2059)とを($65)と($66)にコピーする JSR $02A9 ; JSR $02C2 ; LDA #$21 ; #$21 = 33 JSR $16FA ; LDA #$20 ; #$20 = 32 JSR $16E1 ; JSR $171A ; JSR $1735 ; JMP $98E3 ; ;-------------------------------- ; コマンドタイプ No.033(21): そせい ;-------------------------------- LC2118A: LDA #$22 ; #$22 = 34 JSR $16AA ; Aレジスタをコマンド番号と見なし、FILEPOS_CHRCMDDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) JSR $175F ; 自分の($2058)と($2059)とを($65)と($66)にコピーする JSR $02A9 ; JSR $02C2 ; LDA $79FA TAX INC $7BEB,X LDA #$22 ; #$22 = 34 JSR $16FA ; LDA #$21 ; #$21 = 33 JSR $16E1 ; JSR $171A ; JSR $1735 ; JMP $98E3 ; ;-------------------------------- ; コマンドタイプ No.034(22): ちけい ;-------------------------------- LC211B2: TDC TAX LDA $7BE5 ; 現在行動中のキャラクタのレベル JSR $007C ; X〜Aの範囲の乱数取得 CMP #$0B ; #$0B = 11 BCS $11C1 TDC BRA $11D3 LC211C1: CMP #$15 ; #$15 = 21 BCS $11C9 LDA #$01 ; #$01 = 1 BRA $11D3 LC211C9: CMP #$33 ; #$33 = 51 BCS $11D1 LDA #$02 ; #$02 = 2 BRA $11D3 LC211D1: LDA #$03 ; #$03 = 3 LC211D3: STA $0E LDA $04F2 ; 背景の種類 JSR $01B7 ; 4倍する CLC ADC $0E TAX LDA $D16DF9,X ; 地形に対応する攻撃方法 (4バイト×64) STA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 REP #$20 ; A = 16bit JSR $01B6 ; 8倍する TAX TDC SEP #$20 ; A = 8bit TDC TAY LC211F4: LDA $D16AB1,X ; FILEPOS_SPDATA STA $2620,Y ; 汎用領域?[0] INX INY CPY #$0008 ; #$0008 = 8 BNE $11F4 STZ $66 STZ $65 LDA $2620 ; 汎用領域?[0] BNE $1216 LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $66 BRA $1252 LC21216: AND #$08 BNE $1237 LDA $2620 ; 汎用領域?[0] AND #$40 BNE $1231 TDC TAX LDA #$03 ; #$03 = 3 JSR $007C ; X〜Aの範囲の乱数取得 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $66 BRA $1252 LC21231: LDA #$F0 ; #$F0 = 240 STA $66 BRA $1252 LC21237: LDA $2620 ; 汎用領域?[0] AND #$40 BNE $124E TDC TAX LDA #$07 ; #$07 = 7 JSR $007C ; X〜Aの範囲の乱数取得 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $65 BRA $1252 LC2124E: LDA #$FF ; #$FF = 255 STA $65 LC21252: STZ $20 STZ $21 LDA #$01 ; #$01 = 1 STA $2723 ; コマンド関連汎用領域?[3] JMP $5CE1 ; ;-------------------------------- ; コマンドタイプ No.036(24): かくれる ;-------------------------------- LC2125E: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) ORA #$01 STA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) LDA #$25 ; #$25 = 37 JSR $16FA ; LDA #$24 ; #$24 = 36 JSR $16E1 ; LDA $79FA TAX STZ $7B2D,X STZ $7B1C,X STZ $7ACC,X INC $7BFB JSR $1750 ; LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) STA $24 LDA #$14 ; #$14 = 20 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) TDC TAY LDX $26 LC21294: LDA $375C,X CMP #$25 ; #$25 = 37 BEQ $12A4 INX INY CPY #$0004 ; #$0004 = 4 BNE $1294 BEQ $12B2 LC212A4: LDA #$26 ; #$26 = 38 STA $375C,X LDA #$08 ; #$08 = 8 STA $3768,X INX INY BRA $1294 LC212B2: RTS ;-------------------------------- ; コマンドタイプ No.037(25): あらわれる ;-------------------------------- LC212B3: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$FE STA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) LDA #$26 ; #$26 = 38 JSR $16FA ; LDA #$25 ; #$25 = 37 JSR $16E1 ; LDA $79FA TAX STZ $7B2D,X STZ $7B1C,X STZ $7ACC,X INC $7BFB JSR $1750 ; LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) STA $24 LDA #$14 ; #$14 = 20 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) TDC TAY LDX $26 LC212E9: LDA $375C,X CMP #$26 ; #$26 = 38 BEQ $12F9 INX INY CPY #$0004 ; #$0004 = 4 BNE $12E9 BEQ $1305 LC212F9: LDA #$25 ; #$25 = 37 STA $375C,X STZ $3768,X INX INY BRA $12E9 LC21305: RTS ;-------------------------------- ; コマンドタイプ No.040(28): いろめ ;-------------------------------- LC21306: LDA #$29 ; #$29 = 41 JSR $16AA ; Aレジスタをコマンド番号と見なし、FILEPOS_CHRCMDDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) JSR $175F ; 自分の($2058)と($2059)とを($65)と($66)にコピーする JSR $4AFE ; JSR $02A9 ; LDA #$29 ; #$29 = 41 JSR $16FA ; LDA #$28 ; #$28 = 40 JSR $16E1 ; JSR $1705 ; JSR $1735 ; JSR $98E3 ; LDA $3CEF TAX LDA #$27 ; #$27 = 39 STA $3C5F,X JMP $994C ; ;-------------------------------- ; コマンドタイプ No.041(29): おどる ;-------------------------------- LC21333: STZ $79FA STZ $79F9 TDC TAX LDA #$03 ; #$03 = 3 JSR $007C ; X〜Aの範囲の乱数取得 STA $2733 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2039,X ; 装備特殊効果フラグ(01: HP1/2で捕獲, 02: 不死特性付加, 04: 剣の舞確率上昇, 08: 消費MP1/2, 10: 盗み成功率2倍, 20: 格闘効果付加, 40: エルフのマント, 80: イージスのたて) AND #$04 BEQ $1363 JSR $02A2 ; 0〜99の範囲の乱数取得 LSR BCS $1359 LDA #$03 ; #$03 = 3 STA $2733 BRA $1363 LC21359: JSR $02A2 ; 0〜99の範囲の乱数取得 LSR STZ $2733 ROL $2733 LC21363: LDA $2733 CMP #$03 ; #$03 = 3 BEQ $139C JSR $175F ; 自分の($2058)と($2059)とを($65)と($66)にコピーする JSR $4AFE ; JSR $02A9 ; JSR $02C2 ; CLC LDA $2733 ADC #$79 ; #$79 = 121 STA $2621 ; 汎用領域?[1] STZ $2620 ; 汎用領域?[0] JSR $992F ; LDA #$29 ; #$29 = 41 JSR $16E1 ; JSR $9923 ; Aレジスタと($0C) = ($79FA)×12 ($79FAの範囲は0〜23を想定?) LDA $2621 ; 汎用領域?[1] JSR $0324 ; Aレジスタを魔法番号と見なし、FILEPOS_MAGDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) JSR $1705 ; JSR $1735 ; JMP $98E3 ; LC2139C: LDA #$7D ; #$7D = 125 STA $2621 ; 汎用領域?[1] STZ $2620 ; 汎用領域?[0] JSR $992F ; LDA #$29 ; #$29 = 41 JSR $16E1 ; LDA $79FA TAX LDA #$7F ; #$7F = 127 STA $7B2D,X STZ $7B1C,X STZ $7ACC,X JSR $1750 ; JSR $98E3 ; LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201F,X ; フラグ (04: 防御無視?, 08: 乱れ打ちで半減?, 10: ためる?, 20: 不明(攻撃力1/2), 40: 投げる?, 80: 必ず命中?) ORA #$D0 STA $201F,X ; フラグ (04: 防御無視?, 08: 乱れ打ちで半減?, 10: ためる?, 20: 不明(攻撃力1/2), 40: 投げる?, 80: 必ず命中?) JMP $0814 ; コマンドタイプ No.044(2C): コマンド(57) ;-------------------------------- ; コマンドタイプ No.042(2A): ものまね ;-------------------------------- LC213CE: TDC TAY LDX $32 ; 一時変数 自分アドレスへのインデックス LC213D2: LDA $41D4,Y STA $2056,X ; (フラグ系?) INX INY CPY #$000A ; #$000A = 10 BNE $13D2 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2056,X ; (フラグ系?) AND #$FE STA $2056,X ; (フラグ系?) LDA $2057,X ; 実行するコマンドの番号 JMP $49D5 ;-------------------------------- ; コマンドタイプ No.047(2F): コマンド(5A) ;-------------------------------- LC213EF: JSR $98FA ; STZ $384C,X STZ $384D,X STZ $384E,X STZ $384F,X STZ $3850,X LDA $79FA TAX STZ $7B2D,X STZ $7B1C,X STZ $7ACC,X JSR $1750 ; LDA $3CEF TAX LDA #$28 ; #$28 = 40 STA $3C5F,X JMP $994C ; ;-------------------------------- ; コマンドタイプ No.048(30): コマンド(5B) ;-------------------------------- LC2141D: LDA #$52 ; #$52 = 82 JSR $16FA ; JMP $0995 ;-------------------------------- ; コマンドタイプ No.049(31): コマンド(5C) ;-------------------------------- LC21425: LDA #$4B ; #$4B = 75 STA $2733 LC2142A: STZ $0E STZ $79F9 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2013,X ; 装備品 (左手) BNE $143A LDA #$80 ; #$80 = 128 STA $0E LC2143A: JSR $98FA ; STZ $384C LDA #$FC ; #$FC = 252 STA $384D LDA #$01 ; #$01 = 1 STA $384E LDA #$04 ; #$04 = 4 STA $384F LDA $0E STA $3850 LDA #$7E ; #$7E = 126 STA $7B2D STZ $7B1C STZ $7ACC STZ $7ADC STZ $7ADD INC $79FA JSR $98E3 ; LDA #$FF ; #$FF = 255 STA $0065 STZ $0066 LDA $2733 STA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 LDA #$01 ; #$01 = 1 STA $2723 ; コマンド関連汎用領域?[3] STA $21 STZ $20 JSR $5CE1 ; LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2057,X ; 実行するコマンドの番号 CMP #$0C ; #$0C = 12 BNE $148F PLX LC2148F: RTS ;-------------------------------- ; コマンドタイプ No.050(32): コマンド(5D) ;-------------------------------- LC21490: LDX $32 ; 一時変数 自分アドレスへのインデックス CLC LDA $2001,X ; ジョブ番号 ADC #$30 ; #$30 = 48 JSR $16E1 ; LDA #$7F ; #$7F = 127 STA $7B2D STZ $7B1C STZ $7ACC LDA #$08 ; #$08 = 8 STA $7ADC STA $7AFC STZ $7ADD STZ $7AFD INC $7BFB RTS ;-------------------------------- ; コマンドタイプ No.051(33): コマンド(5E) ;-------------------------------- LC214B8: STZ $79FA STZ $79F9 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2058,X ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) STA $65 LDA $2059,X ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) STA $66 JSR $4AFE ; LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $66 STA $2059,X ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) LDA $65 STA $2058,X ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) PHA AND #$F0 LSR LSR LSR LSR ORA $2059,X ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) STA $2720 ; コマンド関連汎用領域?[0] PLA AND #$0F ASL ASL ASL ASL STA $2721 ; コマンド関連汎用領域?[1] LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) TAX LDA $D0ED85,X ; 0, 84, 168, 252 (84の倍数の数列) TAX STX $0E LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2013,X ; 装備品 (左手) BNE $1504 JMP $15C9 LC21504: JSR $9923 ; Aレジスタと($0C) = ($79FA)×12 ($79FAの範囲は0〜23を想定?) STY $14 STZ $12 LDX $0E LC2150D: LDA $4085,X STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY INC $12 LDA $12 CMP #$0C ; #$0C = 12 BNE $150D JSR $98FA ; STZ $384C,X LDA #$FC ; #$FC = 252 STA $384D,X LDA #$01 ; #$01 = 1 STA $384E,X LDA #$04 ; #$04 = 4 STA $384F,X STZ $3850,X LDX $0E LDA $408D,X PHA LDA $79FA TAX PLA STA $7B2D,X STZ $7B1C,X STZ $7ACC,X LDA $79FA ASL TAX LDA $2720 ; コマンド関連汎用領域?[0] STA $7ADC,X LDA $2721 ; コマンド関連汎用領域?[1] STA $7ADD,X INC $79FA JSR $98E3 ; JSR $9923 ; Aレジスタと($0C) = ($79FA)×12 ($79FAの範囲は0〜23を想定?) STY $14 STZ $12 LDX $0E LDA $408A,X AND #$02 BEQ $15C9 LDA $4090,X CMP #$55 ; #$55 = 85 BNE $15C9 LC21577: LDA $4085,X STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY INC $12 LDA $12 CMP #$0C ; #$0C = 12 BNE $1577 LDA #$80 ; #$80 = 128 STA $7C9B JSR $98FA ; STZ $384C,X STZ $384D,X STZ $384E,X STZ $384F,X STZ $3850,X LDX $0E LDA $408D,X PHA LDA $79FA TAX PLA STA $7B2D,X STZ $7B1C,X STZ $7ACC,X LDA $79FA ASL TAX LDA $2720 ; コマンド関連汎用領域?[0] STA $7ADC,X LDA $2721 ; コマンド関連汎用領域?[1] STA $7ADD,X INC $79FA JSR $98E3 ; LC215C9: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2014,X ; 装備品 (右手) BNE $15D3 JMP $16A1 LC215D3: JSR $9923 ; Aレジスタと($0C) = ($79FA)×12 ($79FAの範囲は0〜23を想定?) STY $12 STZ $14 LDX $0E LC215DC: LDA $4091,X STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY INC $14 LDA $14 CMP #$0C ; #$0C = 12 BNE $15DC LDX $0E LDA $79FA TAY LDA $4099,X STA $7B2D,Y JSR $98FA ; STZ $384C,X LDA #$FC ; #$FC = 252 STA $384D,X LDA #$01 ; #$01 = 1 STA $384E,X LDA #$04 ; #$04 = 4 STA $384F,X LDA #$80 ; #$80 = 128 STA $3850,X LDA $79FA TAX STZ $7B1C,X STZ $7ACC,X LDA $79FA ASL TAX LDA $2720 ; コマンド関連汎用領域?[0] STA $7ADC,X LDA $2721 ; コマンド関連汎用領域?[1] STA $7ADD,X INC $79FA JSR $98E3 ; JSR $9923 ; Aレジスタと($0C) = ($79FA)×12 ($79FAの範囲は0〜23を想定?) STY $12 STZ $14 LDX $0E LDA $4096,X AND #$02 BEQ $16A1 LDA $409C,X CMP #$55 ; #$55 = 85 BNE $16A1 LC2164A: LDA $4091,X STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY INC $14 LDA $14 CMP #$0C ; #$0C = 12 BNE $164A LDA $7C9B ORA #$40 STA $7C9B LDX $0E LDA $79FA TAY LDA $4099,X STA $7B2D,Y JSR $98FA ; STZ $384C,X STZ $384D,X STZ $384E,X STZ $384F,X STZ $3850,X LDA $79FA TAX STZ $7B1C,X STZ $7ACC,X LDA $79FA ASL TAX LDA $2720 ; コマンド関連汎用領域?[0] STA $7ADC,X LDA $2721 ; コマンド関連汎用領域?[1] STA $7ADD,X INC $79FA JSR $98E3 ; LC216A1: RTS ;-------------------------------- ; コマンドタイプ No.052(34): コマンド(5F) ;-------------------------------- LC216A2: LDA #$4A ; #$4A = 74 STA $2733 JMP $142A ;-------------------------------- ; Aレジスタをコマンド番号と見なし、FILEPOS_CHRCMDDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) ;-------------------------------- LC216AA: PHA JSR $9923 ; Aレジスタと($0C) = ($79FA)×12 ($79FAの範囲は0〜23を想定?) PLA REP #$20 ; A = 16bit JSR $01B6 ; 8倍する TAX TDC SEP #$20 ; A = 8bit STZ $0A LC216BA: LDA $D159E0,X ; FILEPOS_CHRCMDDATA STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY INC $0A LDA $0A CMP #$05 ; #$05 = 5 BNE $16BA INY INY INY INY LC216CF: LDA $D159E0,X ; FILEPOS_CHRCMDDATA STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY INC $0A LDA $0A CMP #$08 ; #$08 = 8 BNE $16CF RTS ;-------------------------------- ; ;-------------------------------- LC216E1: PHA JSR $98FA ; STZ $384C,X LDA #$FC ; #$FC = 252 STA $384D,X LDA #$01 ; #$01 = 1 STA $384E,X PLA STA $384F,X STZ $3850,X RTS ;-------------------------------- ; ;-------------------------------- LC216FA: STA $2621 ; 汎用領域?[1] LDA #$01 ; #$01 = 1 STA $2620 ; 汎用領域?[0] JMP $992F ; ;-------------------------------- ; ;-------------------------------- LC21705: LDA $79FA TAX LDY $0C LDA $7A00,Y ; FILEPOS_MONMAP AND #$7F STA $7B2D,X STZ $7B1C,X STZ $7ACC,X RTS ;-------------------------------- ; ;-------------------------------- LC2171A: LDA $79FA TAX LDY $0C LDA $7A00,Y ; FILEPOS_MONMAP AND #$7F STA $7B2D,X LDA $26A0 INC STA $7B1C,X LDA #$80 ; #$80 = 128 STA $7ACC,X RTS ;-------------------------------- ; ;-------------------------------- LC21735: LDA $79FA ASL TAX LDA $2720 ; コマンド関連汎用領域?[0] STA $7ADC,X STA $7AFC,X LDA $2721 ; コマンド関連汎用領域?[1] STA $7ADD,X STA $7AFD,X INC $79FA RTS ;-------------------------------- ; ;-------------------------------- LC21750: LDA $79FA ASL TAX STZ $7ADC,X STZ $7ADD,X INC $79FA RTS ;-------------------------------- ; 自分の($2058)と($2059)とを($65)と($66)にコピーする ;-------------------------------- LC2175F: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2059,X ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) STA $66 LDA $2058,X ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) STA $65 RTS ;-------------------------------- ; ;-------------------------------- LC2176C: LDA $41BE BNE $1774 JMP $1849 LC21774: LDA $41CC STA $7B7B JSR $01EC ; ($32: 自分アドレスへのインデックス) = Aレジスタ×128 REP #$20 ; A = 16bit LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) CMP $41CE BNE $179C LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) CMP $41D0 BNE $179C LDA $200A,X ; マジックポイント(下位) CMP $41D2 BNE $179C TDC SEP #$20 ; A = 8bit BRA $17FE LC2179C: TDC SEP #$20 ; A = 8bit JSR $1C74 ; BNE $17D1 JSR $1CB3 ; JSR $1C9A ; BNE $17D1 LDA #$05 ; #$05 = 5 JSR $0069 ; LDA #$06 ; #$06 = 6 JSR $0069 ; REP #$20 ; A = 16bit LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) STA $41CE LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) STA $41D0 LDA $200A,X ; マジックポイント(下位) STA $41D2 TDC SEP #$20 ; A = 8bit BRA $17FE LC217D1: LDA $41CC STA $70 LDA $7B7D BEQ $17E4 STZ $7B7D JSR $9F3A ; JSR $9A6F ; LC217E4: LDA $41CC STA $70 LDA $41B0 BEQ $17F3 LDA #$01 ; #$01 = 1 JSR $0069 ; LC217F3: LDA $41B0 BNE $17F3 LDA #$FF ; #$FF = 255 STA $41CC RTS LC217FE: LDA $7C42 BEQ $1848 LDA $41CC TAX LDA $7C3A,X BEQ $1812 TAX LDA $3EC2,X BNE $1848 LC21812: LDA $41CC STA $70 LDA $41B0 BEQ $1821 LDA #$01 ; #$01 = 1 JSR $0069 ; LC21821: LDA $41B0 BNE $1821 LDA #$80 ; #$80 = 128 STA $41BF STZ $41C0 ; 実行するコマンドの番号 STZ $41C2 STZ $41C3 STZ $41C4 STZ $41C6 STZ $41C7 STZ $41C9 STZ $41CA STZ $41CB BRA $1849 LC21848: RTS LC21849: LDA $41CC CMP #$FF ; #$FF = 255 BEQ $1853 JMP $18FF LC21853: LDA $41A9 CMP #$FF ; #$FF = 255 BNE $185B RTS LC2185B: PHA TDC TAX LC2185E: LDA $41AA,X STA $41A9,X INX CPX #$0004 ; #$0004 = 4 BNE $185E DEC $41AE PLA STA $70 STA $41CC JSR $01EC ; ($32: 自分アドレスへのインデックス) = Aレジスタ×128 LDA $7C51 ; クイックで行動できるターン数? BEQ $1895 LDA $41CC CMP $7CB6 BEQ $1895 JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 LDA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) BNE $189A LDA #$01 ; #$01 = 1 STA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) STA $3CFB,Y ; タイマー制御フラグ?(行動可能時間待ち(ATBゲージ)) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) BRA $189A LC21895: JSR $1C74 ; BEQ $18A0 LC2189A: LDA #$FF ; #$FF = 255 STA $41CC RTS LC218A0: STZ $71 JSR $1C9A ; BNE $189A JSR $1CB3 ; LDA #$01 ; #$01 = 1 STA $3ED4 LDA $3ED6 ; スピード関連 STA $3ED5 REP #$20 ; A = 16bit LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) STA $41CE LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) STA $41D0 LDA $200A,X ; マジックポイント(下位) STA $41D2 STZ $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) TDC SEP #$20 ; A = 8bit JSR $190B ; LDA #$01 ; #$01 = 1 STA $7C4E LDA $3EEF ; MONPARTY[0]: 視覚的効果 BPL $18E2 STZ $41BE RTS LC218E2: LDA $41CC JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 LDA $3CFB,Y ; タイマー制御フラグ?(行動可能時間待ち(ATBゲージ)) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) BEQ $18F5 LDA #$FF ; #$FF = 255 STA $41CC JMP $1853 LC218F5: TDC JSR $0069 ; LC218F9: LDA $41B0 BEQ $18F9 RTS LC218FF: STZ $3ED4 JSR $1926 ; LDA #$FF ; #$FF = 255 STA $41CC RTS ;-------------------------------- ; ;-------------------------------- LC2190B: STZ $7C42 LDA $41CC TAX LDA $7C3A,X BEQ $1922 TAY LDA $3EC2,Y BEQ $1922 LDA #$01 ; #$01 = 1 STA $7C42 LC21922: STA $7C4D RTS ;-------------------------------- ; ;-------------------------------- LC21926: LDA $3EEF ; MONPARTY[0]: 視覚的効果 BPL $192E JSR $1C51 ; LC2192E: LDA $41CC STA $7B7B LDA $7B7D BEQ $1942 STZ $7B7D JSR $9F3A ; JSR $9A6F ; LC21942: LDA $41CC JSR $01EC ; ($32: 自分アドレスへのインデックス) = Aレジスタ×128 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$C0 BNE $1967 LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$78 BNE $1967 LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$10 BNE $1967 LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$80 BEQ $1970 LC21967: LDA $41CC TAX STZ $7C3A,X BRA $19C3 LC21970: LDA $41CC CMP $41C1 BEQ $1984 LDA $3EEF ; MONPARTY[0]: 視覚的効果 BMI $1984 LDA #$0D ; #$0D = 13 JSR $0069 ; LC21982: BRA $1982 LC21984: LDA $41CC TAX LDA $7C3A,X BEQ $19E5 TAY LDA $3EC2,Y BEQ $19C3 INC $7C3E,X SEC LDA $7C3A,X SBC #$04 ; #$04 = 4 STA $0E TAY LDA $41CC TAX CLC LDA $D0EEDB,X ; 0, 20, 40, 60 (20の倍数の数列) ADC $41C4 TAX LDA $37DC,X STA $7C43,Y SEC LDA $0E ASL TAX LDA $41C3 STA $7C2A,X LDA $41C2 STA $7C2B,X LC219C3: LDA #$80 ; #$80 = 128 STA $41BF STZ $41C0 ; 実行するコマンドの番号 STZ $41C2 STZ $41C3 STZ $41C4 STZ $41C6 STZ $41C7 STZ $41C9 STZ $41CA STZ $41CB BRA $19EA LC219E5: LDA $7C4D BNE $19C3 LC219EA: LDA $41CC TAX STX $2A LDX #$028A ; #$028A = 650 STX $2C JSR $00D2 ; 乗算(16bit) (($2A)×($2C) = ($2E)) REP #$20 ; A = 16bit CLC LDA $2E ADC #$2D34 ; #$2D34 = 11572 STA $45 TDC SEP #$20 ; A = 8bit LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$18 BNE $1A75 LDA $41C0 ; 実行するコマンドの番号 STA $2057,X ; 実行するコマンドの番号 LDA $41C2 STA $2058,X ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) LDA $41C3 STA $2059,X ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) LDA $41C4 STA $205A,X ; 使用するアイテムの番号? LDA $41BF STA $2056,X ; (フラグ系?) AND #$20 BEQ $1A66 LDA $41C4 TAY LDA ($45),Y STA $205A,X ; 使用するアイテムの番号? LDA $41BF AND #$08 BEQ $1A66 LDA $41C7 STA $205C,X ; (「ものまね」で使用) LDA $41C9 STA $205D,X ; (「ものまね」で使用) LDA $41CA STA $205E,X ; (「ものまね」で使用) LDA $41CB TAY LDA ($45),Y STA $205F,X ; (「ものまね」で使用) LDA $41C6 STA $205B,X ; (「ものまね」で使用) BRA $1A75 LC21A66: STZ $205C,X ; (「ものまね」で使用) STZ $205D,X ; (「ものまね」で使用) STZ $205D,X ; (「ものまね」で使用) STZ $205F,X ; (「ものまね」で使用) STZ $205B,X ; (「ものまね」で使用) LC21A75: LDA $41C0 ; 実行するコマンドの番号 STA $24 LDA #$08 ; #$08 = 8 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) LDX $26 LDY $32 ; 一時変数 自分アドレスへのインデックス LDA $D159E2,X ; FILEPOS_CHRCMDDATA[2] STA $201E,Y ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) LDA $D159E3,X ; FILEPOS_CHRCMDDATA[3] STA $201F,Y ; フラグ (04: 防御無視?, 08: 乱れ打ちで半減?, 10: ためる?, 20: 不明(攻撃力1/2), 40: 投げる?, 80: 必ず命中?) LDA $41C0 ; 実行するコマンドの番号 CMP #$2C ; #$2C = 44 BCC $1AA6 CMP #$4E ; #$4E = 78 BCS $1AA6 LDA $2056,Y ; (フラグ系?) ORA #$01 STA $2056,Y ; (フラグ系?) LC21AA6: LDA $41C0 ; 実行するコマンドの番号 TAX LDA $D15DA0,X ; コマンド発動までの時間 (1バイト×96) BMI $1AE6 PHA LDA $41C0 ; 実行するコマンドの番号 CMP #$11 ; #$11 = 17 BEQ $1AD1 CMP #$20 ; #$20 = 32 BEQ $1AD1 CMP #$1F ; #$1F = 31 BNE $1AE2 LDA $41CB PHA TAX LDA $2734,X LDX $32 ; 一時変数 自分アドレスへのインデックス STA $205F,X ; (「ものまね」で使用) PLA JSR $1C36 ; LC21AD1: LDA $41C4 PHA TAX LDA $2734,X LDX $32 ; 一時変数 自分アドレスへのインデックス STA $205A,X ; 使用するアイテムの番号? PLA JSR $1C36 ; LC21AE2: PLA JMP $1BF7 LC21AE6: LDA $41BF AND #$08 BEQ $1AF0 JMP $1B7C LC21AF0: LDA $41BF AND #$40 BNE $1B49 LDA $41BF AND #$20 BEQ $1B01 JMP $1B7C LC21B01: LDA $41BF AND #$10 BEQ $1B0B JMP $1BBE LC21B0B: STZ $0E LDA $41CC STA $24 LDA #$54 ; #$54 = 84 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) LDY $26 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2013,X ; 装備品 (左手) BEQ $1B2E LDA $4085,Y AND #$03 TAX LDA $D0ECEE,X ; 0, 10, 20, 30 (10の倍数の数列) STA $0E LC21B2E: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2014,X ; 装備品 (右手) BEQ $1B44 LDA $4091,Y AND #$03 TAX CLC LDA $D0ECEE,X ; 0, 10, 20, 30 (10の倍数の数列) ADC $0E STA $0E LC21B44: LDA $0E JMP $1BF7 LC21B49: LDA $41C4 TAX LDA $2734,X LDX $32 ; 一時変数 自分アドレスへのインデックス STA $205A,X ; 使用するアイテムの番号? SEC SBC #$E0 ; #$E0 = 224 REP #$20 ; A = 16bit JSR $01B6 ; 8倍する TAX TDC SEP #$20 ; A = 8bit LDA $D10A82,X ; FILEPOS_ITEMDATA_TOOL[2] AND #$08 BNE $1B6F LDA $41C4 JSR $1C36 ; LC21B6F: LDA $D10A80,X ; FILEPOS_ITEMDATA_TOOL[0] AND #$03 TAX LDA $D0ECEE,X ; 0, 10, 20, 30 (10の倍数の数列) BRA $1BF7 LC21B7C: STZ $0E LDA $41C4 REP #$20 ; A = 16bit JSR $01B6 ; 8倍する TAX TDC SEP #$20 ; A = 8bit LDA $D10B80,X ; FILEPOS_MAGDATA AND #$03 TAX LDA $D0ECEE,X ; 0, 10, 20, 30 (10の倍数の数列) STA $0E LDA $41BF AND #$08 BEQ $1BBA LDA $41CB REP #$20 ; A = 16bit JSR $01B6 ; 8倍する TAX TDC SEP #$20 ; A = 8bit LDA $D10B80,X ; FILEPOS_MAGDATA AND #$03 TAX CLC LDA $D0ECEE,X ; 0, 10, 20, 30 (10の倍数の数列) ADC $0E STA $0E LC21BBA: LDA $0E BRA $1BF7 LC21BBE: LDA $41CC STA $24 LDA #$54 ; #$54 = 84 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) LDY $26 LDA $41C4 BEQ $1BDC REP #$20 ; A = 16bit TYA CLC ADC #$000C ; #$000C = 12 TAY TDC SEP #$20 ; A = 8bit LC21BDC: LDA $408B,Y AND #$7F BEQ $1BF7 REP #$20 ; A = 16bit JSR $01B6 ; 8倍する TAX TDC SEP #$20 ; A = 8bit LDA $D10B80,X ; FILEPOS_MAGDATA AND #$03 TAX LDA $D0ECEE,X ; 0, 10, 20, 30 (10の倍数の数列) LC21BF7: PHA LDA $41CC JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 LDX $32 ; 一時変数 自分アドレスへのインデックス PLA JSR $6163 ; AレジスタをATB時間とみなし、状態による修正を行う(ヘイストであれば1/2(下限: 1), スロウであれば2倍(上限: 255), 最終結果が0であれば1にする) STA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) LDA #$41 ; #$41 = 65 STA $3CFB,Y ; タイマー制御フラグ?(行動可能時間待ち(ATBゲージ)) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) LDA #$80 ; #$80 = 128 STA $41BF STZ $41C0 ; 実行するコマンドの番号 STZ $41C1 STZ $41C2 STZ $41C3 STZ $41C4 STZ $41C5 STZ $41C6 STZ $41C7 STZ $41C8 STZ $41C9 STZ $41CA STZ $41CB RTS ;-------------------------------- ; ;-------------------------------- LC21C36: TAX LDA $2834,X DEC STA $2834,X BNE $1C50 STZ $2734,X STZ $2A34,X LDA #$5A ; #$5A = 90 STA $2B34,X LDA #$AA ; #$AA = 170 STA $2C34,X LC21C50: RTS ;-------------------------------- ; ;-------------------------------- LC21C51: LDA #$80 ; #$80 = 128 STA $41BF STA $41C2 LDA #$54 ; #$54 = 84 STA $41C0 ; 実行するコマンドの番号 STZ $41C3 STZ $41C4 STZ $41C6 STZ $41C7 STZ $41C9 STZ $41CA STZ $41CB RTS ;-------------------------------- ; ;-------------------------------- LC21C74: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$C2 BNE $1C99 LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$78 BNE $1C99 LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$10 BNE $1C99 LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$84 BNE $1C99 TDC LC21C99: RTS ;-------------------------------- ; ;-------------------------------- LC21C9A: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2021,X ; アビリティフラグ? (01: 二刀流?, 10: 薬の知識, 20: 両手持ち, 40: 格闘?) AND #$08 BEQ $1CA8 LDA $3EEF ; MONPARTY[0]: 視覚的効果 BPL $1CAA LC21CA8: TDC RTS LC21CAA: LDA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA #$08 STA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) RTS ;-------------------------------- ; ;-------------------------------- LC21CB3: TDC TAX STX $16 LDA $7BE6 ; フラグ? (40: ミュート) AND #$40 BEQ $1CC3 LDX #$0080 ; #$0080 = 128 STX $16 LC21CC3: LDA $41CC JSR $01F8 ; Yレジスタと($34) = Aレジスタ×650 REP #$20 ; A = 16bit TDC STA $12 STA $14 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $200A,X ; マジックポイント(下位) STA $0E LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) ORA $2072,X ; 一時的状態変化3 (補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) STA $22 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) STA $10 AND #$0400 BEQ $1CF1 LDA #$0080 ; #$0080 = 128 STA $12 LC21CF1: LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$0020 BEQ $1D01 LDA #$0080 ; #$0080 = 128 STA $14 LC21D01: TDC TAX LC21D03: LDA $2F3C,Y AND #$0001 BNE $1D62 LDA $2E38,Y AND #$00FF CMP $0E BEQ $1D22 BCC $1D22 LDA $2F3C,Y ORA #$0080 STA $2F3C,Y BRA $1D62 LC21D22: LDA $2F3C,Y AND #$FF7F STA $2F3C,Y LDA $2D34,Y AND #$00FF CMP #$0080 ; #$0080 = 128 BCS $1D62 LDA $2F3C,Y ORA $12 ORA $14 ORA $16 STA $2F3C,Y LDA $16 BNE $1D62 LDA $12 BNE $1D62 LDA $14 BEQ $1D62 LDA $2D34,Y AND #$00FF CMP #$0029 ; #$0029 = 41 BNE $1D62 LDA $2F3C,Y AND #$FF7F STA $2F3C,Y LC21D62: INY INX CPX #$0082 ; #$0082 = 130 BNE $1D03 TDC SEP #$20 ; A = 8bit LDA $41CC STA $24 LDA #$14 ; #$14 = 20 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) TDC TAX STX $0E LDY $26 REP #$20 ; A = 16bit LC21D80: LDA $375C,Y AND #$00FF STA $12 BEQ $1DA2 ASL TAX LDA $D15CE0,X AND $10 BNE $1DA2 LDA $12 CMP #$0026 ; #$0026 = 38 BEQ $1DAD LDA $22 AND #$0100 BEQ $1DAD LC21DA2: LDA $376C,Y ORA #$0080 STA $376C,Y BRA $1DB6 LC21DAD: LDA $376C,Y AND #$FF7F STA $376C,Y LC21DB6: INY INC $0E LDA $0E CMP #$0004 ; #$0004 = 4 BNE $1D80 TDC SEP #$20 ; A = 8bit RTS ;-------------------------------- ; ;-------------------------------- LC21DC4: TDC TAX STX $3D STX $3F LC21DCA: LDX $3D LDA $7C04,X BEQ $1DEB LDX $3F LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$10 BNE $1E1D LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$60 BNE $1E1D LDX $3D DEC $7C04,X BRA $1E1D LC21DEB: LDX $3F LDA #$01 ; #$01 = 1 STA $2061,X LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$02 BEQ $1E01 JSR $1E2F ; BRA $1E1D LC21E01: LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$10 BEQ $1E10 JSR $1E62 ; BRA $1E1D LC21E10: LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$08 BEQ $1E1D JSR $1F80 ; LC21E1D: LDX $3F JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) STX $3F INC $003D LDA $003D CMP #$04 ; #$04 = 4 BNE $1DCA RTS ;-------------------------------- ; ;-------------------------------- LC21E2F: LDA #$80 ; #$80 = 128 STA $2056,X ; (フラグ系?) LDA #$05 ; #$05 = 5 STA $2057,X ; 実行するコマンドの番号 STZ $2058,X ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) STZ $205A,X ; 使用するアイテムの番号? STZ $205B,X ; (「ものまね」で使用) STZ $205C,X ; (「ものまね」で使用) STZ $205D,X ; (「ものまね」で使用) STZ $205E,X ; (「ものまね」で使用) STZ $205F,X ; (「ものまね」で使用) PHX TDC TAX LDA #$03 ; #$03 = 3 JSR $007C ; X〜Aの範囲の乱数取得 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする PLX STA $2059,X ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) JMP $1FB3 ;-------------------------------- ; ;-------------------------------- LC21E62: LDA $203D,X ; 使用できる魔法(その1) AND #$0F ORA $203E,X ; 使用できる魔法(その2) BEQ $1E73 JSR $02A2 ; 0〜99の範囲の乱数取得 CMP #$32 ; #$32 = 50 BCC $1EA8 LC21E73: LDX $3F LDA #$80 ; #$80 = 128 STA $2056,X ; (フラグ系?) LDA #$05 ; #$05 = 5 STA $2057,X ; 実行するコマンドの番号 STZ $2058,X ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) STZ $205A,X ; 使用するアイテムの番号? STZ $205B,X ; (「ものまね」で使用) STZ $205C,X ; (「ものまね」で使用) STZ $205D,X ; (「ものまね」で使用) STZ $205E,X ; (「ものまね」で使用) STZ $205F,X ; (「ものまね」で使用) PHX TDC TAX LDA #$03 ; #$03 = 3 JSR $007C ; X〜Aの範囲の乱数取得 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする PLX STA $2059,X ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) JMP $1F7D LC21EA8: LDA $3D TAX STX $2A LDX #$028A ; #$028A = 650 STX $2C JSR $00D2 ; 乗算(16bit) (($2A)×($2C) = ($2E)) LDX $2E STX $41 STZ $0E LC21EBB: LDA $2D46,X CMP #$46 ; #$46 = 70 BEQ $1EC6 CMP #$FF ; #$FF = 255 BNE $1ED1 LC21EC6: INX INC $0E LDA $0E CMP #$36 ; #$36 = 54 BNE $1EBB BRA $1E73 LC21ED1: LDX #$0012 ; #$0012 = 18 LDA #$47 ; #$47 = 71 JSR $007C ; X〜Aの範囲の乱数取得 REP #$20 ; A = 16bit ADC $41 TAX TDC SEP #$20 ; A = 8bit LDA $2D34,X CMP #$FF ; #$FF = 255 BEQ $1ED1 CMP #$46 ; #$46 = 70 BEQ $1ED1 PHA REP #$20 ; A = 16bit JSR $01B6 ; 8倍する TAX TDC SEP #$20 ; A = 8bit LDA $D10B80,X ; FILEPOS_MAGDATA STA $26A0 TDC TAY STY $16 LDA $26A0 BNE $1F18 REP #$20 ; A = 16bit LDA $3F JSR $01BB ; 128で割る TAX TDC SEP #$20 ; A = 8bit JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $16 BRA $1F54 LC21F18: AND #$40 BNE $1F43 LDA $26A0 AND #$08 BNE $1F33 TDC TAX LDA #$07 ; #$07 = 7 JSR $007C ; X〜Aの範囲の乱数取得 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $17 BRA $1F54 LC21F33: TDC TAX LDA #$03 ; #$03 = 3 JSR $007C ; X〜Aの範囲の乱数取得 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $16 BRA $1F54 LC21F43: LDA $26A0 AND #$08 BNE $1F50 LDA #$FF ; #$FF = 255 STA $17 BRA $1F54 LC21F50: LDA #$F0 ; #$F0 = 240 STA $16 LC21F54: LDX $3F PLA STA $205A,X ; 使用するアイテムの番号? LDA $16 STA $2059,X ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) LDA $17 STA $2058,X ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) LDA #$21 ; #$21 = 33 STA $2056,X ; (フラグ系?) LDA #$2C ; #$2C = 44 STA $2057,X ; 実行するコマンドの番号 STZ $205B,X ; (「ものまね」で使用) STZ $205C,X ; (「ものまね」で使用) STZ $205D,X ; (「ものまね」で使用) STZ $205E,X ; (「ものまね」で使用) STZ $205F,X ; (「ものまね」で使用) LC21F7D: JMP $1FB3 ;-------------------------------- ; ;-------------------------------- LC21F80: LDA #$80 ; #$80 = 128 STA $2056,X ; (フラグ系?) LDA #$05 ; #$05 = 5 STA $2057,X ; 実行するコマンドの番号 STZ $2059,X ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) STZ $205A,X ; 使用するアイテムの番号? STZ $205B,X ; (「ものまね」で使用) STZ $205C,X ; (「ものまね」で使用) STZ $205D,X ; (「ものまね」で使用) STZ $205E,X ; (「ものまね」で使用) STZ $205F,X ; (「ものまね」で使用) PHX TDC TAX LDA #$07 ; #$07 = 7 JSR $007C ; X〜Aの範囲の乱数取得 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする PLX STA $2058,X ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) JMP $1FB3 LC21FB3: LDA $3D JSR $2482 ; LDA $3D TAX LDA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) CMP #$7F ; #$7F = 127 BCC $1FC4 LDA #$7F ; #$7F = 127 LC21FC4: STA $7C04,X LDA #$01 ; #$01 = 1 STA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) LDA #$41 ; #$41 = 65 STA $3CFB,Y ; タイマー制御フラグ?(行動可能時間待ち(ATBゲージ)) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) RTS ;-------------------------------- ; ;-------------------------------- LC21FD2: LDA $474E BNE $1FDA JSR $2090 ; 全タイマーに対して、タイマー関連5が0でないなら1を引いてタイマー関連6に0をセット, タイマー関連5が0ならタイマーごとに固有の値をセットしてタイマー関連6に1をセット LC21FDA: TDC TAX DEC LC21FDD: STA $3E93,X ; タイマー関連3?(ストップ効果解除) INX CPX #$000C ; #$000C = 12 BNE $1FDD TDC TAY LC21FE8: TDC TAX LDA #$0B ; #$0B = 11 JSR $007C ; X〜Aの範囲の乱数取得 STA $0E LDX #$0000 ; #$0000 = 0 LC21FF4: LDA $0E CMP $3E93,X ; タイマー関連3?(ストップ効果解除) BEQ $2005 INX CPX #$000C ; #$000C = 12 BNE $1FF4 STA $3E93,Y ; タイマー関連3?(ストップ効果解除) INY LC22005: CPY #$000C ; #$000C = 12 BNE $1FE8 RTS ;-------------------------------- ; ;-------------------------------- LC2200B: JSR $2090 ; 全タイマーに対して、タイマー関連5が0でないなら1を引いてタイマー関連6に0をセット, タイマー関連5が0ならタイマーごとに固有の値をセットしてタイマー関連6に1をセット TDC TAY STY $0C LDA $0A JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 TYX LDY $0A LDA $3EC2,Y BEQ $204C LDA $3E9F,Y BNE $204C LDA $474E BNE $2032 LDA $3EAB,Y BNE $204C LC22032: JSR $2055 ; 指定されたタイマーのタイマー関連6が0でないならば、(以下調査中) LDA $08 BNE $204C LDY #$0008 ; #$0008 = 8 LC2203C: JSR $2055 ; 指定されたタイマーのタイマー関連6が0でないならば、(以下調査中) DEY BNE $203C JSR $2055 ; 指定されたタイマーのタイマー関連6が0でないならば、(以下調査中) LDA $08 BNE $204C JSR $2055 ; 指定されたタイマーのタイマー関連6が0でないならば、(以下調査中) LC2204C: INC $0A LDA $0A CMP #$0C ; #$0C = 12 BNE $2012 RTS ;-------------------------------- ; 指定されたタイマーのタイマー関連6が0でないならば、(以下調査中) ;-------------------------------- LC22055: STZ $08 PHY LDY $0C LDA $3EE4,Y ; タイマー関連6?(ストップ効果解除) BEQ $208B CPY #$000A ; #$000A = 10 BEQ $2069 LDA $474E BNE $208B LC22069: LDA $3CF1,X ; タイマー制御フラグ?(ストップ効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) BEQ $208B BMI $2085 LDA $3D75,X ; タイマー現在値(ストップ効果解除) BEQ $207D DEC $3D75,X ; タイマー現在値(ストップ効果解除) LDA $3D75,X ; タイマー現在値(ストップ効果解除) BNE $2085 LC2207D: LDA $3CF1,X ; タイマー制御フラグ?(ストップ効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) ORA #$81 STA $3CF1,X ; タイマー制御フラグ?(ストップ効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) LC22085: LDA $0C BNE $2089 LC22089: INC $08 LC2208B: PLY INX INC $0C RTS ;-------------------------------- ; 全タイマーに対して、タイマー関連5が0でないなら1を引いてタイマー関連6に0をセット, タイマー関連5が0ならタイマーごとに固有の値をセットしてタイマー関連6に1をセット ;-------------------------------- LC22090: TDC TAX LC22092: LDA $3ED9,X ; タイマー関連5?(ストップ効果解除) BEQ $209F DEC $3ED9,X ; タイマー関連5?(ストップ効果解除) STZ $3EE4,X ; タイマー関連6?(ストップ効果解除) BRA $20AB LC2209F: LDA #$01 ; #$01 = 1 STA $3EE4,X ; タイマー関連6?(ストップ効果解除) LDA $D12976,X ; $00, $02, $04, $0E, $01, $00, $00, $01, $00, $00, $00 STA $3ED9,X ; タイマー関連5?(ストップ効果解除) LC220AB: INX CPX #$000B ; #$000B = 11 BNE $2092 RTS ;-------------------------------- ; 全タイマーのタイマー関連2に0をセットする, (以下調査中) ;-------------------------------- LC220B2: TDC TAX STX $08 TAY LC220B7: STA $3E88,Y ; タイマー関連2?(ストップ効果解除) INY CPY #$000B ; #$000B = 11 BNE $20B7 LC220C0: TDC TAX STX $0A LDX $08 LDA $3E7D,X ; タイマー関連1?(ストップ効果解除) PHA LC220CA: LDX $08 LDA $3E7D,X ; タイマー関連1?(ストップ効果解除) TAX LDA $3E93,X ; タイマー関連3?(ストップ効果解除) STA $0C TAX LDA $3E9F,X BNE $214D LDA $474E BNE $20E5 LDA $3EAB,X BNE $214D LC220E5: LDA $0C JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 TYA CLC ADC $08 TAX LDA $3CF1,X ; タイマー制御フラグ?(ストップ効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) BPL $214D LDA $0C TAY LDA $3EC2,Y BEQ $214D LDA $08 CMP #$01 ; #$01 = 1 BEQ $210A CMP #$03 ; #$03 = 3 BEQ $210A CMP #$07 ; #$07 = 7 BNE $212F LC2210A: PHX LDX $08 LDA $3E7D,X ; タイマー関連1?(ストップ効果解除) TAX LDA $3E93,X ; タイマー関連3?(ストップ効果解除) REP #$20 ; A = 16bit JSR $01B2 ; 128倍する TAX TDC SEP #$20 ; A = 8bit LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$81 BNE $212B LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$10 BEQ $212E LC2212B: PLX BRA $214D LC2212E: PLX LC2212F: PLA LDA $3CF1,X ; タイマー制御フラグ?(ストップ効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) AND #$7E STA $3CF1,X ; タイマー制御フラグ?(ストップ効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) LDX $08 PHX LDA #$01 ; #$01 = 1 STA $3E88,X ; タイマー関連2?(ストップ効果解除) LDA $3E7D,X ; タイマー関連1?(ストップ効果解除) TAX LDA $3E93,X ; タイマー関連3?(ストップ効果解除) PLX STA $3EB7,X ; タイマー関連4?(ストップ効果解除) BRA $216B LC2214D: LDX $08 INC $3E7D,X ; タイマー関連1?(ストップ効果解除) LDA $3E7D,X ; タイマー関連1?(ストップ効果解除) CMP #$0C ; #$0C = 12 BNE $215C STZ $3E7D,X ; タイマー関連1?(ストップ効果解除) LC2215C: INC $0A LDA $0A CMP #$0C ; #$0C = 12 BEQ $2167 JMP $20CA LC22167: PLA STA $3E7D,X ; タイマー関連1?(ストップ効果解除) LC2216B: INC $08 LDA $08 CMP #$0B ; #$0B = 11 BEQ $2176 JMP $20C0 LC22176: RTS ;-------------------------------- ; ;-------------------------------- LC22177: TDC TAX STX $3ECE ; タイマーの種類 LC2217C: LDX $3ECE ; タイマーの種類 LDA $3E88,X ; タイマー関連2?(ストップ効果解除) BEQ $21AA INC $3E7D,X ; タイマー関連1?(ストップ効果解除) LDA $3E7D,X ; タイマー関連1?(ストップ効果解除) CMP #$0C ; #$0C = 12 BNE $2191 STZ $3E7D,X ; タイマー関連1?(ストップ効果解除) LC22191: LDA $3EB7,X ; タイマー関連4?(ストップ効果解除) JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 LDA $3EB7,X ; タイマー関連4?(ストップ効果解除) JSR $01EC ; ($32: 自分アドレスへのインデックス) = Aレジスタ×128 LDA $3ECE ; タイマーの種類 BEQ $21A7 LDA $3CF1,Y ; タイマー制御フラグ?(ストップ効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) BNE $21AA LC221A7: JSR $21B5 ; 各種タイマーの処理を行う LC221AA: INC $3ECE ; タイマーの種類 LDA $3ECE ; タイマーの種類 CMP #$0B ; #$0B = 11 BNE $217C RTS ;-------------------------------- ; 各種タイマーの処理を行う ;-------------------------------- LC221B5: LDA $3ECE ; タイマーの種類 ASL TAX LDA $C221CD,X ; タイマー処理ルーチンアドレス×11 STA $08 LDA $C221CE,X STA $09 LDA #$C2 ; #$C2 = 194 STA $0A JMP [$0008] DB $E3,$21 DB $EE,$21 DB $2A,$22 DB $35,$22 DB $4E,$22 DB $59,$22 DB $64,$22 DB $AD,$22 DB $19,$23 DB $7C,$23 DB $8F,$23 ;-------------------------------- ; タイマータイプ No.000(00): ストップ効果解除 ;-------------------------------- LC221E3: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$EF STA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) RTS ;-------------------------------- ; タイマータイプ No.001(01): 毒ダメージ ;-------------------------------- LC221EE: LDA #$01 ; #$01 = 1 STA $3CF2,Y ; タイマー制御フラグ?(毒ダメージ) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) LDA $3DFA,Y ; タイマー初期値(毒ダメージ) STA $3D76,Y ; タイマー現在値(毒ダメージ) JSR $0218 ; メモリ領域を初期化する ($3B3B〜$3BCC = 0, $34CC〜$384C = $FF, $3C00〜$3C5F = $FF, $7B3A〜$7B49 = 0, $3C90〜$3CBF = 0) REP #$20 ; A = 16bit LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2008,X ; 最大ヒットポイント(下位) JSR $01BE ; 16で割る BNE $2209 INC LC22209: STA $0E SEC LDA $2006,X ; ヒットポイント(下位) SBC $0E BCS $2214 TDC LC22214: STA $2006,X ; ヒットポイント(下位) TDC SEP #$20 ; A = 8bit LDA $3EB8 ; タイマー関連4?(毒ダメージ) LDX $0E STX $3C5D JSR $0276 ; LDA #$09 ; #$09 = 9 JMP $0069 ; ;-------------------------------- ; タイマータイプ No.002(02): リフレク効果解除 ;-------------------------------- LC2222A: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$7F STA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) RTS ;-------------------------------- ; タイマータイプ No.003(03): しのせんこく ;-------------------------------- LC22235: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$02 BNE $224D LDA $3EBA ; タイマー関連4?(しのせんこく) JSR $618A ; LDA $70 BEQ $224D LDA #$07 ; #$07 = 7 JSR $0069 ; LC2224D: RTS ;-------------------------------- ; タイマータイプ No.004(04): 沈黙効果解除 ;-------------------------------- LC2224E: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$FB STA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) RTS ;-------------------------------- ; タイマータイプ No.005(05): スリップ効果解除 ;-------------------------------- LC22259: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$F7 STA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) RTS ;-------------------------------- ; タイマータイプ No.006(06): 徐々に老化による能力値低下 ;-------------------------------- LC22264: LDA #$01 ; #$01 = 1 STA $3CF7,Y ; タイマー制御フラグ?(徐々に老化による能力値低下) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) LDA $3DFF,Y ; タイマー初期値(徐々に老化による能力値低下) STA $3D7B,Y ; タイマー現在値(徐々に老化による能力値低下) LDX $32 ; 一時変数 自分アドレスへのインデックス STZ $0E LC22273: LDA $2024,X ; 力(装備補正なし) DEC BEQ $227C STA $2024,X ; 力(装備補正なし) LC2227C: LDA $2028,X ; 力(装備補正あり) DEC BEQ $2285 STA $2028,X ; 力(装備補正あり) LC22285: INX INC $0E LDA $0E CMP #$04 ; #$04 = 4 BNE $2273 LDX $3ECE ; タイマーの種類 LDA $3EB7,X ; タイマー関連4?(ストップ効果解除) CMP #$04 ; #$04 = 4 BCC $22AC LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2002,X ; レベル ;-------------------------------- ; ;-------------------------------- LC2229D: DEC BEQ $22A3 STA $2002,X ; レベル LC222A3: LDA $2044,X ; 攻撃力 (「はなつ」時にモンスターの攻撃力で上書きされる) DEC BPL $22AC STA $2044,X ; 攻撃力 (「はなつ」時にモンスターの攻撃力で上書きされる) LC222AC: RTS ;-------------------------------- ; タイマータイプ No.007(07): リジェネ回復 ;-------------------------------- LC222AD: LDA #$01 ; #$01 = 1 STA $3CF8,Y ; タイマー制御フラグ?(リジェネ回復) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) LDA $3E00,Y ; タイマー初期値(リジェネ回復) CMP #$1E ; #$1E = 30 BCS $22BE LDA #$1E ; #$1E = 30 STA $3E00,Y ; タイマー初期値(リジェネ回復) LC222BE: STA $3D7C,Y ; タイマー現在値(リジェネ回復) JSR $0218 ; メモリ領域を初期化する ($3B3B〜$3BCC = 0, $34CC〜$384C = $FF, $3C00〜$3C5F = $FF, $7B3A〜$7B49 = 0, $3C90〜$3CBF = 0) LDX $32 ; 一時変数 自分アドレスへのインデックス JSR $0248 ; 修正値をもとにして4つのステータスとレベルとを設定する LDA $7BE5 ; 現在行動中のキャラクタのレベル STA $24 LDA $7BE3 ; 現在行動中のキャラクタの体力 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$02 BNE $2318 REP #$20 ; A = 16bit LDA $26 JSR $01BE ; 16で割る TAX BNE $22EA INC LC222EA: STA $0E LDX $32 ; 一時変数 自分アドレスへのインデックス CLC ADC $2006,X ; ヒットポイント(下位) BCS $22F9 CMP $2008,X ; 最大ヒットポイント(下位) BCC $22FC LC222F9: LDA $2008,X ; 最大ヒットポイント(下位) LC222FC: STA $2006,X ; ヒットポイント(下位) TDC SEP #$20 ; A = 8bit LDA $0F ORA #$80 STA $0F LDA $3EBE ; タイマー関連4?(リジェネ回復) LDX $0E STX $3C5D JSR $0276 ; LDA #$09 ; #$09 = 9 JSR $0069 ; LC22318: RTS ;-------------------------------- ; タイマータイプ No.008(08): 歌による能力値上昇 ;-------------------------------- LC22319: LDA #$01 ; #$01 = 1 STA $3CF9,Y ; タイマー制御フラグ?(歌による能力値上昇) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) LDA $3E01,Y ; タイマー初期値(歌による能力値上昇) STA $3D7D,Y ; タイマー現在値(歌による能力値上昇) TDC TAY LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $206F,X ; 歌でアップするパラメータ (08: レベル, 10: 魔力, 20: 体力, 40: 素速さ, 80: 力) BEQ $237B LC2232D: ASL BCS $2333 INY BRA $232D LC22333: STY $12 TDC TAX STX $0E LDA #$04 ; #$04 = 4 STA $10 LDA $3EBF ; タイマー関連4?(歌による能力値上昇) CMP #$04 ; #$04 = 4 BCC $234F LDA #$04 ; #$04 = 4 STA $0E LDA #$0C ; #$0C = 12 STA $10 LDX #$0180 ; #$0180 = 384 LC2234F: STX $14 REP #$20 ; A = 16bit TXA CLC ADC $12 TAX TDC SEP #$20 ; A = 8bit LC2235B: LDY $0E LDA $3EC2,Y BEQ $236E CLC LDA $2074,X ; 力修正値? INC CMP #$64 ; #$64 = 100 BCS $236E STA $2074,X ; 力修正値? LC2236E: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) STX $14 INC $0E LDA $0E CMP $10 BNE $235B LC2237B: RTS ;-------------------------------- ; タイマータイプ No.009(09): 麻痺効果解除 ;-------------------------------- LC2237C: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$DF STA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) LDX $3ECE ; タイマーの種類 LDA $3EB7,X ; タイマー関連4?(ストップ効果解除) JMP $2482 ; ;-------------------------------- ; タイマータイプ No.010(0A): 行動可能時間待ち(ATBゲージ) ;-------------------------------- LC2238F: JSR $5AB4 ; LDA $7BDE BNE $23D8 LDA $3EC1 ; タイマー関連4?(行動可能時間待ち(ATBゲージ)) STA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 TYX LDA $3CFA,X ; タイマー制御フラグ?(麻痺効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) BNE $23D8 LDA $3CFB,X ; タイマー制御フラグ?(行動可能時間待ち(ATBゲージ)) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) BEQ $23AD JMP $23DF LC223AD: LDA $3EC1 ; タイマー関連4?(行動可能時間待ち(ATBゲージ)) CMP #$04 ; #$04 = 4 BCS $23DB TDC TAX LC223B6: LDA $41A9,X CMP $3EC1 ; タイマー関連4?(行動可能時間待ち(ATBゲージ)) BEQ $23D8 INX CPX #$0004 ; #$0004 = 4 BNE $23B6 LDA $3EC1 ; タイマー関連4?(行動可能時間待ち(ATBゲージ)) JSR $1C74 ; BNE $23D8 LDX $41AE LDA $3EC1 ; タイマー関連4?(行動可能時間待ち(ATBゲージ)) STA $41A9,X INC $41AE LC223D8: JMP $23DE LC223DB: JSR $25D3 ; LC223DE: RTS LC223DF: JSR $48BD ; LDA $7BFC BNE $2431 LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCS $2426 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$E0 STA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) STZ $201F,X ; フラグ (04: 防御無視?, 08: 乱れ打ちで半減?, 10: ためる?, 20: 不明(攻撃力1/2), 40: 投げる?, 80: 必ず命中?) LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$02 BNE $240E LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$18 BEQ $2426 LC2240E: LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 TDC STA $3CFB,Y ; タイマー制御フラグ?(行動可能時間待ち(ATBゲージ)) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) INC STA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) TAX LDA $7C04,X AND #$7F STA $7C04,X LC22426: INC $7CC7 LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) JSR $2482 ; STZ $7CC7 LC22431: RTS ;-------------------------------- ; ;-------------------------------- LC22432: LDA $3ED4 BEQ $2446 LDA $3ED5 BEQ $2442 DEC STA $3ED5 BNE $2446 LC22442: TDC STA $3ED4 LC22446: RTS ;-------------------------------- ; ;-------------------------------- LC22447: TDC TAX TAY STX $0E LC2244C: LDA $0E JSR $2482 ; LDA $0E JSR $01EC ; ($32: 自分アドレスへのインデックス) = Aレジスタ×128 LDA $0E CMP #$04 ; #$04 = 4 BCS $2467 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) AND #$40 BEQ $2472 BNE $2479 LC22467: SEC LDA $0E SBC #$04 ; #$04 = 4 TAX LDA $4018,X BEQ $2479 LC22472: LDX $0E LDA #$01 ; #$01 = 1 STA $3EC2,X LC22479: INC $0E LDA $0E CMP #$0C ; #$0C = 12 BNE $244C RTS ;-------------------------------- ; ;-------------------------------- LC22482: PHA JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 PLA JSR $01EC ; ($32: 自分アドレスへのインデックス) = Aレジスタ×128 JSR $0248 ; 修正値をもとにして4つのステータスとレベルとを設定する LDA $2023,X ; 装備の重さ JSR $01BF ; 8で割る CLC ADC #$78 ; #$78 = 120 SEC SBC $7BE2 ; 現在行動中のキャラクタの素速さ BEQ $249E BCS $24A0 LC2249E: LDA #$01 ; #$01 = 1 LC224A0: JSR $6163 ; AレジスタをATB時間とみなし、状態による修正を行う(ヘイストであれば1/2(下限: 1), スロウであれば2倍(上限: 255), 最終結果が0であれば1にする) STA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) LDA $3EEF ; MONPARTY[0]: 視覚的効果 BPL $24BB LDX $32 ; 一時変数 自分アドレスへのインデックス CPX #$0200 ; #$0200 = 512 BCS $24B6 LDA #$01 ; #$01 = 1 BRA $24B8 LC224B6: LDA #$FF ; #$FF = 255 LC224B8: STA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) LC224BB: LDA $7CC7 BEQ $24DE LDA $7C51 ; クイックで行動できるターン数? BEQ $24DE LDA $474E BNE $24DE DEC $7C51 ; クイックで行動できるターン数? LDA $7C51 ; クイックで行動できるターン数? BNE $24D9 PHY JSR $24E4 ; PLY BRA $24DE LC224D9: LDA #$01 ; #$01 = 1 STA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) LC224DE: LDA #$01 ; #$01 = 1 STA $3CFB,Y ; タイマー制御フラグ?(行動可能時間待ち(ATBゲージ)) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) RTS ;-------------------------------- ; ;-------------------------------- LC224E4: TDC TAX LC224E6: STZ $3EAB,X INX CPX #$000C ; #$000C = 12 BNE $24E6 RTS ;-------------------------------- ; 各種タイマー停止? (Aレジスタ: タイマー適用キャラクタ, Xレジスタ: タイマーの種類) ;-------------------------------- LC224F0: PHX JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 PLX JSR $253F ; Yレジスタ = Xレジスタ + ($36) TDC STA $3CF1,Y ; タイマー制御フラグ?(ストップ効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) RTS ;-------------------------------- ; 各種タイマー発動 (Aレジスタ: タイマー適用キャラクタ, Xレジスタ: タイマーの種類) ;-------------------------------- LC224FD: PHX PHA JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 PLA JSR $01EC ; ($32: 自分アドレスへのインデックス) = Aレジスタ×128 JSR $0248 ; 修正値をもとにして4つのステータスとレベルとを設定する PLX JSR $2521 ; 各種タイマーのサイクルを設定 LDX $32 ; 一時変数 自分アドレスへのインデックス JSR $6163 ; AレジスタをATB時間とみなし、状態による修正を行う(ヘイストであれば1/2(下限: 1), スロウであれば2倍(上限: 255), 最終結果が0であれば1にする) STA $3D75,Y ; タイマー現在値(ストップ効果解除) STA $3DF9,Y ; タイマー初期値(ストップ効果解除) LDA #$01 ; #$01 = 1 STA $3CF1,Y ; タイマー制御フラグ?(ストップ効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STZ $3ED7 ; 2種類のタイマーサイクルのどちらを採用するか (0: 味方用, 1: 敵用) RTS ;-------------------------------- ; 各種タイマーのサイクルを設定 ;-------------------------------- LC22521: JSR $253F ; Yレジスタ = Xレジスタ + ($36) TXA ASL CLC ADC $3ED7 ; 2種類のタイマーサイクルのどちらを採用するか (0: 味方用, 1: 敵用) ASL TAX LDA $C2254A,X ; タイマーサイクル設定ルーチンアドレス×20 STA $08 LDA $C2254B,X STA $09 LDA #$C2 ; #$C2 = 194 STA $0A JMP [$0008] ;-------------------------------- ; Yレジスタ = Xレジスタ + ($36) ;-------------------------------- LC2253F: TXA REP #$20 ; A = 16bit CLC ADC $36 TAY TDC SEP #$20 ; A = 8bit RTS DB $72,$25 DB $76,$25 DB $79,$25 DB $79,$25 DB $72,$25 DB $84,$25 DB $72,$25 DB $87,$25 DB $72,$25 DB $8A,$25 DB $72,$25 DB $9A,$25 DB $9D,$25 DB $9D,$25 DB $A0,$25 DB $A0,$25 DB $AF,$25 DB $AF,$25 DB $B2,$25 DB $C3,$25 ;-------------------------------- ; サイクルタイプ No.000(00): ストップ効果解除(味方) / サイクルタイプ No.004(04): リフレク効果解除(味方) / サイクルタイプ No.006(06): しのせんこく(味方) / サイクルタイプ No.008(08): 沈黙効果解除(味方) / サイクルタイプ No.010(0A): スリップ効果解除(味方) (サイクル設定値) ;-------------------------------- LC22572: LDA $3ED8 ; サイクル設定値 RTS ;-------------------------------- ; サイクルタイプ No.001(01): ストップ効果解除(敵) (120固定) ;-------------------------------- LC22576: LDA #$78 ; #$78 = 120 RTS ;-------------------------------- ; サイクルタイプ No.002(02): 毒ダメージ(味方) / サイクルタイプ No.003(03): 毒ダメージ(敵) (体力 + 20 (上限: 255)) ;-------------------------------- LC22579: CLC LDA $7BE3 ; 現在行動中のキャラクタの体力 ADC #$14 ; #$14 = 20 BCC $2583 LDA #$FF ; #$FF = 255 LC22583: RTS ;-------------------------------- ; サイクルタイプ No.005(05): リフレク効果解除(敵) (120固定) ;-------------------------------- LC22584: LDA #$78 ; #$78 = 120 RTS ;-------------------------------- ; サイクルタイプ No.007(07): しのせんこく(敵) (49固定) ;-------------------------------- LC22587: LDA #$31 ; #$31 = 49 RTS ;-------------------------------- ; サイクルタイプ No.009(09): 沈黙効果解除(敵) (180 - 魔力÷2 (下限: 1)) ;-------------------------------- LC2258A: LDA $7BE4 ; 現在行動中のキャラクタの魔力 LSR STA $0E SEC LDA #$B4 ; #$B4 = 180 SBC $0E BCS $2599 LDA #$01 ; #$01 = 1 LC22599: RTS ;-------------------------------- ; サイクルタイプ No.011(0B): スリップ効果解除(敵) (180固定) ;-------------------------------- LC2259A: LDA #$B4 ; #$B4 = 180 RTS ;-------------------------------- ; サイクルタイプ No.012(0C): 徐々に老化による能力値低下(味方) / サイクルタイプ No.013(0D): 徐々に老化による能力値低下(敵) (10固定) ;-------------------------------- LC2259D: LDA #$0A ; #$0A = 10 RTS ;-------------------------------- ; サイクルタイプ No.014(0E): リジェネ回復(味方) / サイクルタイプ No.015(0F): リジェネ回復(敵) (110 - 魔力 (下限: 30)) ;-------------------------------- LC225A0: SEC LDA #$6E ; #$6E = 110 SBC $7BE4 ; 現在行動中のキャラクタの魔力 BCC $25AC CMP #$1E ; #$1E = 30 BCS $25AE LC225AC: LDA #$1E ; #$1E = 30 LC225AE: RTS ;-------------------------------- ; サイクルタイプ No.016(10): 歌による能力値上昇(味方) / サイクルタイプ No.017(11): 歌による能力値上昇(敵) (30固定) ;-------------------------------- LC225AF: LDA #$1E ; #$1E = 30 RTS ;-------------------------------- ; サイクルタイプ No.018(12): 麻痺効果解除(味方) (汎用カウンター - 魔力÷2 (下限: 1)) ;-------------------------------- LC225B2: LDA $7BE4 ; 現在行動中のキャラクタの魔力 LSR STA $0E SEC LDA $3ED8 ; サイクル設定値 SBC $0E BCS $25C2 LDA #$01 ; #$01 = 1 LC225C2: RTS ;-------------------------------- ; サイクルタイプ No.019(13): 麻痺効果解除(敵) (120 - 魔力÷2 (下限: 1)) ;-------------------------------- LC225C3: LDA $7BE4 ; 現在行動中のキャラクタの魔力 LSR STA $0E SEC LDA #$78 ; #$78 = 120 SBC $0E BCS $25D2 LDA #$01 ; #$01 = 1 LC225D2: RTS ;-------------------------------- ; ;-------------------------------- LC225D3: LDA #$01 ; #$01 = 1 STA $7C50 SEC LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) SBC #$04 ; #$04 = 4 STA $7C03 JSR $01B5 ; 16倍する TAX STX $435E ASL TAX STX $4360 TDC TAY STY $22 LDX $435E LDA #$FF ; #$FF = 255 LC225F5: STA $41DE,X INX INY CPY #$0010 ; #$0010 = 16 BNE $25F5 LDA $7C03 ASL TAX LDA $D0EE95,X ; 0, 100, 200, 300, 400, 500, 600, 700 (100の倍数の数列) STA $0E LDA $D0EE96,X STA $0F TDC TAY LDX $0E LDA #$FF ; #$FF = 255 LC22616: STA $4367,X INX INY CPY #$0064 ; #$0064 = 100 BNE $2616 LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) JSR $01EC ; ($32: 自分アドレスへのインデックス) = Aレジスタ×128 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA #$2C ; #$2C = 44 STA $2057,X ; 実行するコマンドの番号 LDA #$21 ; #$21 = 33 STA $2056,X ; (フラグ系?) LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$08 BEQ $2652 LDA #$01 ; #$01 = 1 STA $2061,X LDA #$80 ; #$80 = 128 STA $2640 LDA #$FF ; #$FF = 255 STA $2641 JSR $3210 ; JMP $26EC LC22652: LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$10 BEQ $2698 LC2265C: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA #$01 ; #$01 = 1 STA $2061,X TDC TAX LDA #$03 ; #$03 = 3 JSR $007C ; X〜Aの範囲の乱数取得 TAX STX $0E LDA $7C03 ASL TAX REP #$20 ; A = 16bit LDA $4020,X ; モンスター番号 JSR $01B7 ; 4倍する CLC ADC $0E TAX TDC SEP #$20 ; A = 8bit LDA $D05600,X ; FILEPOS_MONCTRL CMP #$FF ; #$FF = 255 BEQ $265C STA $2640 LDA #$FF ; #$FF = 255 STA $2641 INC $22 JSR $3210 ; BRA $26EC LC22698: LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$08 BEQ $26AB LDA #$51 ; #$51 = 81 STA $2057,X ; 実行するコマンドの番号 LDA #$80 ; #$80 = 128 STA $2056,X ; (フラグ系?) BRA $26EC LC226AB: LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$20 BNE $26BB LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$40 BNE $26CC BRA $26EF LC226BB: TDC TAY LC226BD: LDA $7C3A,Y CMP $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) BEQ $26C7 INY BRA $26BD LC226C7: LDA $7C3E,Y BNE $26D6 LC226CC: STZ $2057,X ; 実行するコマンドの番号 LDA #$80 ; #$80 = 128 STA $2056,X ; (フラグ系?) BRA $26EC LC226D6: TDC STA $7C3E,Y LDA $7C03 TAX LDA $7C43,X STA $2640 LDA #$FF ; #$FF = 255 STA $2641 JSR $3210 ; LC226EC: JMP $278A LC226EF: LDA $7C03 TAX LDA $4687,X STA $468F LDA $7C03 ASL TAX REP #$20 ; A = 16bit CLC LDA $D0EEA5,X ; 0, 1620, 3240, 4860, 6480, 8100, 9720, 11340 (1620の倍数の数列) ADC #$4759 ; #$4759 = 18265 STA $4B TDC SEP #$20 ; A = 8bit STZ $4690 LC22710: LDA $4690 TAX LDA $D0EEC9,X ; 0, 17, 34, 51, 68, 85, 102, 136, 153, 170 (17の倍数の数列) TAY STY $4692 STZ $4691 LC2271F: LDY $4692 LDA ($4B),Y BEQ $2750 CMP #$FE ; #$FE = 254 BEQ $2750 JSR $27BF ; LDA $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) BEQ $2746 REP #$20 ; A = 16bit CLC LDA $4692 ADC #$0004 ; #$0004 = 4 STA $4692 TDC SEP #$20 ; A = 8bit INC $4691 BRA $271F LC22746: INC $4690 LDA $4690 CMP #$0A ; #$0A = 10 BNE $2710 LC22750: REP #$20 ; A = 16bit CLC LDA $4B ADC #$00AA ; #$00AA = 170 STA $4B TDC SEP #$20 ; A = 8bit LDA $468F CMP $4690 BEQ $2787 LDA $7C03 TAX LDA $4690 STA $4687,X LDA $7C03 ASL TAY LDA $4690 ASL TAX LDA $D0EEB5,X ; 0, 64, 128, 192, 256, 320, 384, 448, 512, 576 (64の倍数の数列) STA $4696,Y LDA $D0EEB6,X STA $4697,Y LC22787: JSR $313B ; LC2278A: LDX $435E LDA $41DE,X REP #$20 ; A = 16bit JSR $01B6 ; 8倍する TAX TDC SEP #$20 ; A = 8bit LDA $D10B80,X ; FILEPOS_MAGDATA AND #$03 TAX LDA $D0ECEE,X ; 0, 10, 20, 30 (10の倍数の数列) PHA LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 PLA STA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) LDA #$41 ; #$41 = 65 STA $3CFB,Y ; タイマー制御フラグ?(行動可能時間待ち(ATBゲージ)) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) LDA $7C03 ASL TAX STZ $7C2A,X STZ $7C2B,X RTS ;-------------------------------- ; ;-------------------------------- LC227BF: CMP #$13 ; #$13 = 19 BCC $27C4 TDC LC227C4: STA $0E ASL TAX LDA $C22814,X ; ルーチンアドレス×19 STA $08 LDA $C22815,X STA $09 LDA #$C2 ; #$C2 = 194 STA $0A INY LDA ($4B),Y STA $2721 ; コマンド関連汎用領域?[1] INY LDA ($4B),Y STA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 INY LDA ($4B),Y STA $2723 ; コマンド関連汎用領域?[3] STZ $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) LDA $7C50 BNE $2811 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2006,X ; ヒットポイント(下位) ORA $2007,X ; ヒットポイント(上位) BEQ $2803 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$C0 BEQ $280A LC22803: LDA $0E CMP #$0F ; #$0F = 15 BEQ $2811 RTS LC2280A: LDA $0E CMP #$0F ; #$0F = 15 BNE $2811 RTS LC22811: JMP [$0008] DB $3A,$28 DB $3E,$28 DB $9D,$28 DB $DB,$28 DB $EB,$28 DB $1F,$29 DB $39,$29 DB $B1,$29 DB $29,$2A DB $63,$2A DB $9D,$2A DB $D2,$2A DB $19,$2B DB $2A,$2B DB $6F,$2B DB $87,$2B DB $93,$2B DB $C0,$2B DB $FD,$2B ;-------------------------------- ; 行動条件タイプ No.000(00): ;-------------------------------- LC2283A: INC $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) RTS ;-------------------------------- ; 行動条件タイプ No.001(01): ;-------------------------------- LC2283E: LDA $2721 ; コマンド関連汎用領域?[1] JSR $2C27 ; 攻撃目標を決定する($2620から24バイト(12要素分)に$FFFFを格納, $2600以降に攻撃目標のXオフセットを格納) LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 TAX STX $0E TDC TAY LC2284C: REP #$20 ; A = 16bit LDA $2620,Y ; 汎用領域?[0] CMP #$FFFF ; #$FFFF = 65535 BNE $285B TDC SEP #$20 ; A = 8bit BRA $288C LC2285B: STA $10 CLC ADC $0E TAX TDC SEP #$20 ; A = 8bit LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND $2723 ; コマンド関連汎用領域?[3] BNE $2882 LDA $0E BNE $2885 LDA $2723 ; コマンド関連汎用領域?[3] BPL $2885 LDX $10 LDA $2006,X ; ヒットポイント(下位) ORA $2006,X ; ヒットポイント(下位) BNE $2885 LC22882: INC $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) LC22885: INY INY CPY #$0018 ; #$0018 = 24 BNE $284C LC2288C: LDA $2724 ; ? BEQ $289C LDA $2725 ; ?? CMP $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) BEQ $289C STZ $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) LC2289C: RTS ;-------------------------------- ; 行動条件タイプ No.002(02): ;-------------------------------- LC2289D: LDA $2721 ; コマンド関連汎用領域?[1] JSR $2C27 ; 攻撃目標を決定する($2620から24バイト(12要素分)に$FFFFを格納, $2600以降に攻撃目標のXオフセットを格納) TDC TAY LC228A5: REP #$20 ; A = 16bit LDA $2620,Y ; 汎用領域?[0] TAX CMP #$FFFF ; #$FFFF = 65535 BEQ $28C7 LDA $2006,X ; ヒットポイント(下位) CMP $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 BCS $28BB INC $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) LC228BB: TDC SEP #$20 ; A = 8bit INY INY CPY #$0018 ; #$0018 = 24 BNE $28A5 BRA $28CA LC228C7: TDC SEP #$20 ; A = 8bit LC228CA: LDA $2724 ; ? BEQ $28DA LDA $2725 ; ?? CMP $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) BEQ $28DA STZ $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) LC228DA: RTS ;-------------------------------- ; 行動条件タイプ No.003(03): 内部変数"arg[2]"の値が"arg[3]"と等しければ条件合致 ;-------------------------------- LC228DB: LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 TAX LDA $4363,X ; モンスターの行動に関係する内部変数1? CMP $2723 ; コマンド関連汎用領域?[3] BNE $28EA INC $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) LC228EA: RTS ;-------------------------------- ; 行動条件タイプ No.004(04): ;-------------------------------- LC228EB: LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 BNE $28FA LDA $4048 JSR $01C3 ; Aレジスタのセットされたビットの数をXレジスタに格納する DEX BEQ $291B RTS LC228FA: LDA $7C03 ASL TAX LDA $4020,X ; モンスター番号 STA $0E TDC TAY LDA $3EC6,Y BEQ $2915 TYA ASL TAX LDA $4020,X ; モンスター番号 CMP $0E BNE $291E LC22915: INY CPY #$08 ; #$08 = 8 BRK $D0 XBA LC2291B: INC $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) LC2291E: RTS ;-------------------------------- ; 行動条件タイプ No.005(05): ;-------------------------------- LC2291F: LDA $2721 ; コマンド関連汎用領域?[1] BEQ $292D LDA $4048 CMP $2723 ; コマンド関連汎用領域?[3] BNE $2935 RTS LC2292D: LDA $4048 CMP $2723 ; コマンド関連汎用領域?[3] BNE $2938 LC22935: INC $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) LC22938: RTS ;-------------------------------- ; 行動条件タイプ No.006(06): ;-------------------------------- LC22939: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $4753 AND #$01 BNE $2978 LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 CMP #$07 ; #$07 = 7 BEQ $295F LDA $2721 ; コマンド関連汎用領域?[1] BEQ $2957 LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 CMP $2046,X BNE $29AD RTS LC22957: LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 CMP $2046,X BNE $29B0 LC2295F: LDA $2721 ; コマンド関連汎用領域?[1] BEQ $296D LDA $2723 ; コマンド関連汎用領域?[3] AND $2049,X BEQ $29AD RTS LC2296D: LDA $2723 ; コマンド関連汎用領域?[3] BEQ $29AD AND $2049,X BNE $29AD RTS LC22978: LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 CMP #$07 ; #$07 = 7 BEQ $2995 LDA $2721 ; コマンド関連汎用領域?[1] BEQ $298D LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 CMP $204D,X BNE $29AD RTS LC2298D: LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 CMP $204D,X BNE $29B0 LC22995: LDA $2721 ; コマンド関連汎用領域?[1] BEQ $29A3 LDA $2723 ; コマンド関連汎用領域?[3] AND $207B,X BEQ $29AD RTS LC229A3: LDA $2723 ; コマンド関連汎用領域?[3] BEQ $29AD AND $207B,X BEQ $29B0 LC229AD: INC $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) LC229B0: RTS ;-------------------------------- ; 行動条件タイプ No.007(07): ;-------------------------------- LC229B1: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $4753 AND #$01 BNE $29F0 LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 CMP #$07 ; #$07 = 7 BEQ $29D7 LDA $2721 ; コマンド関連汎用領域?[1] BEQ $29CF LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 CMP $2046,X BNE $2A25 RTS LC229CF: LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 CMP $2046,X BNE $2A28 LC229D7: LDA $2721 ; コマンド関連汎用領域?[1] BEQ $29E5 LDA $2723 ; コマンド関連汎用領域?[3] AND $204A,X BEQ $2A25 RTS LC229E5: LDA $2723 ; コマンド関連汎用領域?[3] BEQ $2A25 AND $204A,X BNE $2A25 RTS LC229F0: LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 CMP #$07 ; #$07 = 7 BEQ $2A0D LDA $2721 ; コマンド関連汎用領域?[1] BEQ $2A05 LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 CMP $204D,X BNE $2A25 RTS LC22A05: LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 CMP $204D,X BNE $2A28 LC22A0D: LDA $2721 ; コマンド関連汎用領域?[1] BEQ $2A1B LDA $2723 ; コマンド関連汎用領域?[3] AND $207C,X BEQ $2A25 RTS LC22A1B: LDA $2723 ; コマンド関連汎用領域?[3] BEQ $2A25 AND $207C,X BEQ $2A28 LC22A25: INC $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) LC22A28: RTS ;-------------------------------- ; 行動条件タイプ No.008(08): ;-------------------------------- LC22A29: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $4753 AND #$01 BNE $2A49 LDA $2721 ; コマンド関連汎用領域?[1] BEQ $2A40 LDA $2047,X CMP $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 BNE $2A5F RTS LC22A40: LDA $2047,X CMP $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 BEQ $2A5F RTS LC22A49: LDA $2721 ; コマンド関連汎用領域?[1] BEQ $2A57 LDA $204E,X ; アビリティフラグ(すっぴんのみ)? (01: 二刀流, 10: 薬の知識, 20: 両手持ち, 40: 格闘?) CMP $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 BNE $2A5F RTS LC22A57: LDA $204E,X ; アビリティフラグ(すっぴんのみ)? (01: 二刀流, 10: 薬の知識, 20: 両手持ち, 40: 格闘?) CMP $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 BNE $2A62 LC22A5F: INC $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) LC22A62: RTS ;-------------------------------- ; 行動条件タイプ No.009(09): ;-------------------------------- LC22A63: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $4753 AND #$01 BNE $2A83 LDA $2721 ; コマンド関連汎用領域?[1] BEQ $2A7A LDA $2048,X CMP $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 BNE $2A99 RTS LC22A7A: LDA $2048,X CMP $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 BEQ $2A99 RTS LC22A83: LDA $2721 ; コマンド関連汎用領域?[1] BEQ $2A91 LDA $204F,X CMP $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 BNE $2A99 RTS LC22A91: LDA $204F,X CMP $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 BNE $2A9C LC22A99: INC $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) LC22A9C: RTS ;-------------------------------- ; 行動条件タイプ No.010(0A): ;-------------------------------- LC22A9D: LDA $4753 AND #$01 BNE $2AB2 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $204B,X JSR $01C3 ; Aレジスタのセットされたビットの数をXレジスタに格納する DEX BMI $2AC0 JMP $2AC1 ; LC22AB2: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $207D,X JSR $01C3 ; Aレジスタのセットされたビットの数をXレジスタに格納する DEX BMI $2AC0 JSR $2AC1 ; LC22AC0: RTS ;-------------------------------- ; ;-------------------------------- LC22AC1: LDA $2723 ; コマンド関連汎用領域?[3] BNE $2ACB TXA BNE $2AD1 BEQ $2ACE LC22ACB: TXA BEQ $2AD1 LC22ACE: INC $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) LC22AD1: RTS ;-------------------------------- ; 行動条件タイプ No.011(0B): ;-------------------------------- LC22AD2: LDA $2721 ; コマンド関連汎用領域?[1] JSR $2C27 ; 攻撃目標を決定する($2620から24バイト(12要素分)に$FFFFを格納, $2600以降に攻撃目標のXオフセットを格納) LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 TAX STX $0E TDC TAY REP #$20 ; A = 16bit LDA $2620,Y ; 汎用領域?[0] CMP #$FFFF ; #$FFFF = 65535 BNE $2AEF TDC SEP #$20 ; A = 8bit BRA $2B08 LC22AEF: CLC ADC $0E TAX TDC SEP #$20 ; A = 8bit LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) CMP $2723 ; コマンド関連汎用領域?[3] BNE $2B01 INC $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) LC22B01: INY INY CPY #$18 ; #$18 = 24 BRK $D0 CLD LC22B08: LDA $2724 ; ? BEQ $2B18 LDA $2725 ; ?? CMP $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) BEQ $2B18 STZ $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) LC22B18: RTS ;-------------------------------- ; 行動条件タイプ No.012(0C): ;-------------------------------- LC22B19: REP #$20 ; A = 16bit LDA $00A2 CMP $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 BCC $2B26 INC $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) LC22B26: TDC SEP #$20 ; A = 8bit RTS ;-------------------------------- ; 行動条件タイプ No.013(0D): ;-------------------------------- LC22B2A: LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 TAX CMP #$03 ; #$03 = 3 BNE $2B63 STZ $0E TDC TAX TAY LC22B37: LDA $7C87 JSR $01DB ; Aレジスタの値の(7 - Xレジスタ)ビットがセットされていない場合は0クリアする BEQ $2B4E PHX LDA $2000,Y ; 隊列(bit7)・キャラクタ番号(下位4ビット) AND #$07 TAX LDA $0E JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $0E PLX LC22B4E: REP #$20 ; A = 16bit TYA CLC ADC #$0080 ; #$0080 = 128 TAY TDC SEP #$20 ; A = 8bit INX CPX #$0004 ; #$0004 = 4 BNE $2B37 LDA $0E BRA $2B66 LC22B63: LDA $7C84,X LC22B66: AND $2723 ; コマンド関連汎用領域?[3] BEQ $2B6E INC $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) LC22B6E: RTS ;-------------------------------- ; 行動条件タイプ No.014(0E): ;-------------------------------- LC22B6F: LDA $4753 AND #$01 BNE $2B7E LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $204C,X BNE $2B83 RTS LC22B7E: LDA $207E,X BEQ $2B86 LC22B83: INC $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) LC22B86: RTS ;-------------------------------- ; 行動条件タイプ No.015(0F): ;-------------------------------- LC22B87: STZ $4751 LDA #$01 ; #$01 = 1 STA $7C50 STA $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) RTS ;-------------------------------- ; 行動条件タイプ No.016(10): ;-------------------------------- LC22B93: TDC TAX TAY STY $0E LDA $3EC2,Y BEQ $2BAE LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$C2 BNE $2BAE LDA $2006,X ; ヒットポイント(下位) ORA $2007,X ; ヒットポイント(上位) BEQ $2BAE INC $0E LC22BAE: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INY CPY #$04 ; #$04 = 4 BRK $D0 SBC ($A5,X) ASL $D03A ORA $EE,S STY $46,X RTS ;-------------------------------- ; 行動条件タイプ No.017(11): ;-------------------------------- LC22BC0: LDA $4753 AND #$01 BNE $2BE1 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2046,X CMP #$2B ; #$2B = 43 BEQ $2BD4 CMP #$17 ; #$17 = 23 BNE $2BFC LC22BD4: LDA $2047,X CMP #$48 ; #$48 = 72 BCC $2BFC CMP #$57 ; #$57 = 87 BCS $2BFC BRA $2BF9 LC22BE1: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $204D,X CMP #$2B ; #$2B = 43 BEQ $2BEE CMP #$17 ; #$17 = 23 BNE $2BFC LC22BEE: LDA $204E,X ; アビリティフラグ(すっぴんのみ)? (01: 二刀流, 10: 薬の知識, 20: 両手持ち, 40: 格闘?) CMP #$48 ; #$48 = 72 BCC $2BFC CMP #$57 ; #$57 = 87 BCS $2BFC LC22BF9: INC $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) LC22BFC: RTS ;-------------------------------- ; 行動条件タイプ No.018(12): ;-------------------------------- LC22BFD: TDC TAX TAY LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) AND #$08 BEQ $2C1A LDA $3EC2,Y BEQ $2C1A LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$81 BNE $2C1A LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$10 BEQ $2C26 LC22C1A: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INY CPY #$04 ; #$04 = 4 BRK $D0 CMP $94EE,X LSR $60 ; 一時変数 魔法剣フラグ ;-------------------------------- ; 攻撃目標を決定する($2620から24バイト(12要素分)に$FFFFを格納, $2600以降に攻撃目標のXオフセットを格納) ;-------------------------------- LC22C27: ASL TAX LDA $C22C4D,X ; ルーチンアドレス×51 STA $08 LDA $C22C4E,X STA $09 LDA #$C2 ; #$C2 = 194 STA $0A LDX #$0017 ; #$0017 = 23 LDA #$FF ; #$FF = 255 LC22C3E: STA $2620,X ; 汎用領域?[0] DEX BPL $2C3E STZ $2724 ; ? STZ $2725 ; ?? JMP [$0008] DB $B3,$2C DB $DA,$2C DB $E0,$2C DB $E6,$2C DB $EC,$2C DB $F2,$2C DB $FE,$2C DB $0A,$2D DB $16,$2D DB $22,$2D DB $2E,$2D DB $3A,$2D DB $46,$2D DB $52,$2D DB $79,$2D DB $BD,$2D DB $C6,$2D DB $CD,$2D DB $D3,$2D DB $18,$2E DB $25,$2E DB $2D,$2E DB $37,$2E DB $44,$2E DB $4F,$2E DB $59,$2E DB $62,$2E DB $65,$2E DB $A6,$2E DB $00,$2F DB $0B,$2F DB $19,$2F DB $24,$2F DB $27,$2F DB $70,$2F DB $AB,$2F DB $B7,$2F DB $C0,$2F DB $C3,$2F DB $19,$30 DB $5D,$30 DB $9B,$30 DB $A1,$30 DB $A7,$30 DB $AD,$30 DB $B3,$30 DB $C2,$30 DB $F1,$30 DB $15,$31 DB $1B,$31 DB $21,$31 ;-------------------------------- ; 攻撃目標タイプ No.000(00): バッツ ;-------------------------------- LC22CB3: STZ $0E LC22CB5: TDC TAY TAX LC22CB8: LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) AND #$07 CMP $0E BNE $2CD0 LDA $3EC2,Y BEQ $2CD9 JSR $3127 ; 自分を攻撃目標として選択できるか (0: OK, 0以外: NG) BNE $2CD9 STX $2620 ; 汎用領域?[0] BRA $2CD9 LC22CD0: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INY CPY #$0004 ; #$0004 = 4 BNE $2CB8 LC22CD9: RTS ;-------------------------------- ; 攻撃目標タイプ No.001(01): レナ ;-------------------------------- LC22CDA: LDA #$01 ; #$01 = 1 STA $0E BRA $2CB5 ;-------------------------------- ; 攻撃目標タイプ No.002(02): ガラフ ;-------------------------------- LC22CE0: LDA #$02 ; #$02 = 2 STA $0E BRA $2CB5 ;-------------------------------- ; 攻撃目標タイプ No.003(03): ファリス ;-------------------------------- LC22CE6: LDA #$03 ; #$03 = 3 STA $0E BRA $2CB5 ;-------------------------------- ; 攻撃目標タイプ No.004(04): クルル ;-------------------------------- LC22CEC: LDA #$04 ; #$04 = 4 STA $0E BRA $2CB5 ;-------------------------------- ; 攻撃目標タイプ No.005(05): モンスター1 ;-------------------------------- LC22CF2: LDA $3EC6 BEQ $2CFD LDX #$0200 ; #$0200 = 512 STX $2620 ; 汎用領域?[0] LC22CFD: RTS ;-------------------------------- ; 攻撃目標タイプ No.006(06): モンスター2 ;-------------------------------- LC22CFE: LDA $3EC7 BEQ $2D09 LDX #$0280 ; #$0280 = 640 STX $2620 ; 汎用領域?[0] LC22D09: RTS ;-------------------------------- ; 攻撃目標タイプ No.007(07): モンスター3 ;-------------------------------- LC22D0A: LDA $3EC8 BEQ $2D15 LDX #$0300 ; #$0300 = 768 STX $2620 ; 汎用領域?[0] LC22D15: RTS ;-------------------------------- ; 攻撃目標タイプ No.008(08): モンスター4 ;-------------------------------- LC22D16: LDA $3EC9 BEQ $2D21 LDX #$0380 ; #$0380 = 896 STX $2620 ; 汎用領域?[0] LC22D21: RTS ;-------------------------------- ; 攻撃目標タイプ No.009(09): モンスター5 ;-------------------------------- LC22D22: LDA $3ECA BEQ $2D2D LDX #$0400 ; #$0400 = 1024 STX $2620 ; 汎用領域?[0] LC22D2D: RTS ;-------------------------------- ; 攻撃目標タイプ No.010(0A): モンスター6 ;-------------------------------- LC22D2E: LDA $3ECB BEQ $2D39 LDX #$0480 ; #$0480 = 1152 STX $2620 ; 汎用領域?[0] LC22D39: RTS ;-------------------------------- ; 攻撃目標タイプ No.011(0B): モンスター7 ;-------------------------------- LC22D3A: LDA $3ECC BEQ $2D45 LDX #$0500 ; #$0500 = 1280 STX $2620 ; 汎用領域?[0] LC22D45: RTS ;-------------------------------- ; 攻撃目標タイプ No.012(0C): モンスター8 ;-------------------------------- LC22D46: LDA $3ECD BEQ $2D51 LDX #$0580 ; #$0580 = 1408 STX $2620 ; 汎用領域?[0] LC22D51: RTS ;-------------------------------- ; 攻撃目標タイプ No.013(0D): 自分自身 ($7C56によって変化あり?) ;-------------------------------- LC22D52: LDA $7C56 BEQ $2D6A DEC BEQ $2D62 DEC $7C56 LDA $4755 BRA $2D6C LC22D62: CLC LDA $4755 ADC #$04 ; #$04 = 4 BRA $2D6C LC22D6A: LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) LC22D6C: REP #$20 ; A = 16bit JSR $01B2 ; 128倍する TAX TDC SEP #$20 ; A = 8bit STX $2620 ; 汎用領域?[0] RTS ;-------------------------------- ; 攻撃目標タイプ No.014(0E): ;-------------------------------- LC22D79: LDA $7C03 STA $12 INC $2724 ; ? LC22D81: TDC TAX STX $0E STX $10 LDX #$0200 ; #$0200 = 512 LC22D8A: LDY $10 LDA $3EC6,Y BEQ $2DB1 LDA $10 CMP $12 BEQ $2DB1 JSR $3127 ; 自分を攻撃目標として選択できるか (0: OK, 0以外: NG) BNE $2DB1 LDY $0E STX $08 LDA $08 STA $2620,Y ; 汎用領域?[0] LDA $09 STA $2621,Y ; 汎用領域?[1] INY INY STY $0E INC $2725 ; ?? LC22DB1: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INC $10 LDA $10 CMP #$08 ; #$08 = 8 BNE $2D8A RTS ;-------------------------------- ; 攻撃目標タイプ No.015(0F): ;-------------------------------- LC22DBD: LDA #$FF ; #$FF = 255 STA $12 INC $2724 ; ? BRA $2D81 ;-------------------------------- ; 攻撃目標タイプ No.016(10): ;-------------------------------- LC22DC6: LDA $7C03 STA $12 BRA $2D81 ;-------------------------------- ; 攻撃目標タイプ No.017(11): ;-------------------------------- LC22DCD: LDA #$FF ; #$FF = 255 STA $12 BRA $2D81 ;-------------------------------- ; 攻撃目標タイプ No.018(12): ;-------------------------------- LC22DD3: LDA #$80 ; #$80 = 128 STA $12 STZ $13 INC $2724 ; ? LC22DDC: TDC TAX STX $0E STX $10 LC22DE2: LDY $10 LDA $3EC2,Y BEQ $2E0C JSR $3127 ; 自分を攻撃目標として選択できるか (0: OK, 0以外: NG) BNE $2E0C LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) AND $12 CMP $13 BNE $2E0C LDY $0E STX $08 LDA $08 STA $2620,Y ; 汎用領域?[0] LDA $09 STA $2621,Y ; 汎用領域?[1] INY INY STY $0E INC $2725 ; ?? LC22E0C: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INC $10 LDA $10 CMP #$04 ; #$04 = 4 BNE $2DE2 RTS ;-------------------------------- ; 攻撃目標タイプ No.019(13): ;-------------------------------- LC22E18: LDA #$80 ; #$80 = 128 STA $12 LDA #$80 ; #$80 = 128 STA $13 INC $2724 ; ? BRA $2DDC ;-------------------------------- ; 攻撃目標タイプ No.020(14): ;-------------------------------- LC22E25: LDA #$80 ; #$80 = 128 STA $12 STZ $13 BRA $2DDC ;-------------------------------- ; 攻撃目標タイプ No.021(15): ;-------------------------------- LC22E2D: LDA #$80 ; #$80 = 128 STA $12 LDA #$80 ; #$80 = 128 STA $13 BRA $2DDC ;-------------------------------- ; 攻撃目標タイプ No.022(16): ;-------------------------------- LC22E37: LDA #$08 ; #$08 = 8 STA $12 LDA #$08 ; #$08 = 8 STA $13 INC $2724 ; ? BRA $2DDC ;-------------------------------- ; 攻撃目標タイプ No.023(17): ;-------------------------------- LC22E44: LDA #$08 ; #$08 = 8 STA $12 STZ $13 INC $2724 ; ? BRA $2DDC ;-------------------------------- ; 攻撃目標タイプ No.024(18): ;-------------------------------- LC22E4F: LDA #$08 ; #$08 = 8 STA $12 LDA #$08 ; #$08 = 8 STA $13 BRA $2DDC ;-------------------------------- ; 攻撃目標タイプ No.025(19): ;-------------------------------- LC22E59: LDA #$08 ; #$08 = 8 STA $12 STZ $13 JMP $2DDC ;-------------------------------- ; 攻撃目標タイプ No.026(1A): ;-------------------------------- LC22E62: INC $2724 ; ? ;-------------------------------- ; 攻撃目標タイプ No.027(1B): ;-------------------------------- LC22E65: TDC TAX STX $0E STX $10 LC22E6B: LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$40 BNE $2E9A LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$81 BNE $2E9A LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$10 BNE $2E9A LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) BPL $2E9A LDY $0E STX $08 LDA $08 STA $2620,Y ; 汎用領域?[0] LDA $09 STA $2621,Y ; 汎用領域?[1] INY INY STY $0E INC $2725 ; ?? LC22E9A: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INC $10 LDA $10 CMP #$04 ; #$04 = 4 BNE $2E6B RTS ;-------------------------------- ; 攻撃目標タイプ No.028(1C): ;-------------------------------- LC22EA6: LDA #$1C ; #$1C = 28 TAX STX $14 LDA #$80 ; #$80 = 128 STA $12 INC $2724 ; ? LC22EB2: TDC TAX STX $0E STX $10 LDX #$0200 ; #$0200 = 512 LC22EBB: PHX LDY $10 LDA $3EC6,Y BEQ $2EF3 JSR $3127 ; 自分を攻撃目標として選択できるか (0: OK, 0以外: NG) BNE $2EF3 REP #$20 ; A = 16bit CLC TXA ADC $14 TAX TDC SEP #$20 ; A = 8bit LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) ORA $2056,X ; (フラグ系?) AND $12 CMP $12 BNE $2EF3 LDY $0E STX $08 LDA $08 STA $2620,Y ; 汎用領域?[0] LDA $09 STA $2621,Y ; 汎用領域?[1] INY INY STY $0E INC $2725 ; ?? LC22EF3: PLX JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INC $10 LDA $10 CMP #$08 ; #$08 = 8 BNE $2EBB RTS ;-------------------------------- ; 攻撃目標タイプ No.029(1D): ;-------------------------------- LC22F00: LDA #$1C ; #$1C = 28 TAX STX $14 LDA #$80 ; #$80 = 128 STA $12 BRA $2EB2 ;-------------------------------- ; 攻撃目標タイプ No.030(1E): ;-------------------------------- LC22F0B: LDA #$1D ; #$1D = 29 TAX STX $14 LDA #$02 ; #$02 = 2 STA $12 INC $2724 ; ? BRA $2EB2 ;-------------------------------- ; 攻撃目標タイプ No.031(1F): ;-------------------------------- LC22F19: LDA #$1D ; #$1D = 29 TAX STX $14 LDA #$02 ; #$02 = 2 STA $12 BRA $2EB2 ;-------------------------------- ; 攻撃目標タイプ No.032(20): ;-------------------------------- LC22F24: INC $2724 ; ? ;-------------------------------- ; 攻撃目標タイプ No.033(21): ;-------------------------------- LC22F27: TDC TAX STX $0E STX $10 LDX #$0200 ; #$0200 = 512 LC22F30: LDY $10 LDA $3EC6,Y BEQ $2F64 JSR $3127 ; 自分を攻撃目標として選択できるか (0: OK, 0以外: NG) BNE $2F64 REP #$20 ; A = 16bit LDA $2008,X ; 最大ヒットポイント(下位) LSR CMP $2006,X ; ヒットポイント(下位) BCS $2F4C TDC SEP #$20 ; A = 8bit BRA $2F64 LC22F4C: TDC SEP #$20 ; A = 8bit LDY $0E STX $08 LDA $08 STA $2620,Y ; 汎用領域?[0] LDA $09 STA $2621,Y ; 汎用領域?[1] INY INY STY $0E INC $2725 ; ?? LC22F64: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INC $10 LDA $10 CMP #$08 ; #$08 = 8 BNE $2F30 RTS ;-------------------------------- ; 攻撃目標タイプ No.034(22): ;-------------------------------- LC22F70: TDC TAX STX $0E STX $10 LC22F76: LDY $10 LDA $3EC2,Y BEQ $2F9F JSR $3127 ; 自分を攻撃目標として選択できるか (0: OK, 0以外: NG) BNE $2F9F LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) ORA $2072,X ; 一時的状態変化3 (補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) BPL $2F9F LDY $0E STX $08 LDA $08 STA $2620,Y ; 汎用領域?[0] LDA $09 STA $2621,Y ; 汎用領域?[1] INY INY STY $0E INC $2725 ; ?? LC22F9F: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INC $10 LDA $10 CMP #$04 ; #$04 = 4 BNE $2F76 RTS ;-------------------------------- ; 攻撃目標タイプ No.035(23): ;-------------------------------- LC22FAB: LDA #$40 ; #$40 = 64 STA $12 STZ $13 INC $2724 ; ? JMP $2DDC ;-------------------------------- ; 攻撃目標タイプ No.036(24): ;-------------------------------- LC22FB7: LDA #$40 ; #$40 = 64 STA $12 STZ $13 JMP $2DDC ;-------------------------------- ; 攻撃目標タイプ No.037(25): ;-------------------------------- LC22FC0: INC $2724 ; ? ;-------------------------------- ; 攻撃目標タイプ No.038(26): ;-------------------------------- LC22FC3: TDC TAX STX $0E STX $10 LDX #$0200 ; #$0200 = 512 LC22FCC: LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$40 BNE $300D CPX #$0200 ; #$0200 = 512 BCC $2FDD LDA $7C4C BNE $2FEB LC22FDD: LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$81 BNE $300D LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$10 BNE $300D LC22FEB: LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) BMI $2FF8 LDA $2006,X ; ヒットポイント(下位) ORA $2007,X ; ヒットポイント(上位) BNE $300D LC22FF8: LDY $0E STX $08 LDA $08 STA $2620,Y ; 汎用領域?[0] LDA $09 STA $2621,Y ; 汎用領域?[1] INY INY STY $0E INC $2725 ; ?? LC2300D: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INC $10 LDA $10 CMP #$08 ; #$08 = 8 BNE $2FCC RTS ;-------------------------------- ; 攻撃目標タイプ No.039(27): ;-------------------------------- LC23019: TDC TAY SEC LDA $41 SBC #$1B ; #$1B = 27 TAX LDA $4367,X BEQ $305C STA $12 LDA $7C56 BNE $3034 SEC LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) SBC #$04 ; #$04 = 4 BRA $3037 LC23034: LDA $4755 LC23037: TAX STX $10 LDA $12 LC2303C: ASL BCS $3042 INY BRA $303C LC23042: CPY $10 BNE $3049 INY BRA $303C LC23049: TYA CLC ADC #$04 ; #$04 = 4 TAX INC $3EC2,X REP #$20 ; A = 16bit JSR $01B2 ; 128倍する STA $2620 ; 汎用領域?[0] TDC SEP #$20 ; A = 8bit LC2305C: RTS ;-------------------------------- ; 攻撃目標タイプ No.040(28): ;-------------------------------- LC2305D: STZ $0E LC2305F: TDC TAY TAX LC23062: LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) AND #$07 CMP $0E BNE $3091 LDA $3EC2,Y BEQ $309A LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$C0 BNE $309A LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$81 BNE $309A LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$10 BEQ $309A LDA $2057,X ; 実行するコマンドの番号 CMP #$50 ; #$50 = 80 BEQ $309A STX $2620 ; 汎用領域?[0] BRA $309A LC23091: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INY CPY #$0004 ; #$0004 = 4 BNE $3062 LC2309A: RTS ;-------------------------------- ; 攻撃目標タイプ No.041(29): ;-------------------------------- LC2309B: LDA #$01 ; #$01 = 1 STA $0E BRA $305F ;-------------------------------- ; 攻撃目標タイプ No.042(2A): ;-------------------------------- LC230A1: LDA #$02 ; #$02 = 2 STA $0E BRA $305F ;-------------------------------- ; 攻撃目標タイプ No.043(2B): ;-------------------------------- LC230A7: LDA #$03 ; #$03 = 3 STA $0E BRA $305F ;-------------------------------- ; 攻撃目標タイプ No.044(2C): ;-------------------------------- LC230AD: LDA #$04 ; #$04 = 4 STA $0E BRA $305F ;-------------------------------- ; 攻撃目標タイプ No.045(2D): ;-------------------------------- LC230B3: LDA $7C73 REP #$20 ; A = 16bit JSR $01B2 ; 128倍する STA $2620 ; 汎用領域?[0] TDC SEP #$20 ; A = 8bit RTS ;-------------------------------- ; 攻撃目標タイプ No.046(2E): ;-------------------------------- LC230C2: INC $2724 ; ? TDC TAX STX $0E STX $10 LC230CB: LDX $0E LDA $7C87 JSR $01DB ; Aレジスタの値の(7 - Xレジスタ)ビットがセットされていない場合は0クリアする BEQ $30E8 REP #$20 ; A = 16bit LDX $10 LDA $0E JSR $01B2 ; 128倍する STA $2620,X ; 汎用領域?[0] INC $10 INC $10 TDC SEP #$20 ; A = 8bit LC230E8: INC $0E LDA $0E CMP #$04 ; #$04 = 4 BNE $30CB RTS ;-------------------------------- ; 攻撃目標タイプ No.047(2F): ;-------------------------------- LC230F1: STZ $0E LC230F3: TDC TAY TAX LC230F6: LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) AND #$07 CMP $0E BNE $310B LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$80 BEQ $3114 STX $2620 ; 汎用領域?[0] BRA $3114 LC2310B: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INY CPY #$0004 ; #$0004 = 4 BNE $30F6 LC23114: RTS ;-------------------------------- ; 攻撃目標タイプ No.048(30): ;-------------------------------- LC23115: LDA #$01 ; #$01 = 1 STA $0E BRA $30F3 ;-------------------------------- ; 攻撃目標タイプ No.049(31): ;-------------------------------- LC2311B: LDA #$02 ; #$02 = 2 STA $0E BRA $30F3 ;-------------------------------- ; 攻撃目標タイプ No.050(32): ;-------------------------------- LC23121: LDA #$03 ; #$03 = 3 STA $0E BRA $30F3 ;-------------------------------- ; 自分を攻撃目標として選択できるか (0: OK, 0以外: NG) ;-------------------------------- LC23127: LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$C0 BNE $313A LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$81 BNE $313A LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$10 LC2313A: RTS ;-------------------------------- ; ;-------------------------------- LC2313B: LDX #$0040 ; #$0040 = 64 LDA #$FF ; #$FF = 255 LC23140: STA $2640,X DEX BPL $3140 LDA $7C03 ASL TAX LDA $4696,X STA $0E LDA $4697,X STA $0F TDC TAX LDY $0E LC23159: LDA ($4B),Y STA $2640,X INY INX CMP #$FE ; #$FE = 254 BNE $3167 JMP $31F8 LC23167: CMP #$FF ; #$FF = 255 BNE $316E JMP $31F8 LC2316E: CMP #$FD ; #$FD = 253 BNE $31DB LDA ($4B),Y STA $2640,X INY INX CMP #$F7 ; #$F7 = 247 BEQ $319B CMP #$F0 ; #$F0 = 240 BCS $31CA LDA ($4B),Y STA $2640,X INY INX LDA ($4B),Y STA $2640,X INY INX LDA ($4B),Y CMP #$FE ; #$FE = 254 BEQ $31F8 CMP #$FF ; #$FF = 255 BEQ $31F8 BRA $31E5 LC2319B: LDA ($4B),Y STA $2640,X STA $10 INY INX LDA ($4B),Y STA $2640,X INY INX STZ $11 LC231AD: LDA ($4B),Y STA $2640,X INY INX INC $11 LDA $11 CMP $10 BNE $31AD DEX LDA $2640,X CMP #$FE ; #$FE = 254 BEQ $31F8 CMP #$FF ; #$FF = 255 BEQ $31F8 BRA $31E5 LC231CA: LDA ($4B),Y STA $2640,X INY INX LDA ($4B),Y STA $2640,X INY INX JMP $3159 LC231DB: LDA ($4B),Y CMP #$FE ; #$FE = 254 BEQ $31F8 CMP #$FF ; #$FF = 255 BEQ $31F8 LC231E5: STY $0E LDA $7C03 ASL TAY LDA $0E STA $4696,Y LDA $0F STA $4697,Y BRA $3210 ; LC231F8: LDA $7C03 ASL TAY LDA $4690 ASL TAX LDA $D0EEB5,X ; 0, 64, 128, 192, 256, 320, 384, 448, 512, 576 (64の倍数の数列) STA $4696,Y LDA $D0EEB6,X STA $4697,Y ;-------------------------------- ; ;-------------------------------- LC23210: STZ $0E LDX $4360 LC23215: STZ $425E,X INX INC $0E LDA $0E CMP #$20 ; #$20 = 32 BNE $3215 LDX $435E STX $3D LDX $4360 STX $3F LDA $7C03 ASL TAX LDA $D0EE95,X ; 0, 100, 200, 300, 400, 500, 600, 700 (100の倍数の数列) STA $41 LDA $D0EE96,X STA $42 TDC TAY STY $43 STY $45 LC23242: LDX $41 LDY $43 LDA $2640,Y STA $4367,X CMP #$FE ; #$FE = 254 BEQ $329B CMP #$FF ; #$FF = 255 BEQ $329B CMP #$FD ; #$FD = 253 BCS $325D LC23258: JSR $329C ; BRA $3299 LC2325D: LDA $2641,Y CMP #$F0 ; #$F0 = 240 BCS $3269 JSR $334D ; BRA $3258 LC23269: CMP #$F2 ; #$F2 = 242 BNE $3272 JSR $336E ; BRA $3299 LC23272: CMP #$F3 ; #$F3 = 243 BNE $327B JSR $33EC ; BRA $3299 LC2327B: CMP #$F4 ; #$F4 = 244 BNE $3284 JSR $346F ; BRA $3299 LC23284: CMP #$F9 ; #$F9 = 249 BNE $328D JSR $347B ; BRA $3299 LC2328D: CMP #$FA ; #$FA = 250 BNE $3296 JSR $348A ; BRA $3299 LC23296: JSR $34D9 ; LC23299: BRA $3242 LC2329B: RTS ;-------------------------------- ; ;-------------------------------- LC2329C: LDX $3D CMP #$F1 ; #$F1 = 241 BNE $32CB LDX $41 LDA #$FF ; #$FF = 255 STA $4367,X STZ $16 LDA $3D LSR ROR $16 LSR ROR $16 LSR ROR $16 LSR ROR $16 LDA $16 BNE $32C7 LDX $32 ; 一時変数 自分アドレスへのインデックス STZ $2057,X ; 実行するコマンドの番号 LDA #$80 ; #$80 = 128 STA $2056,X ; (フラグ系?) LC232C7: LDA #$78 ; #$78 = 120 LDX $3D LC232CB: STA $41DE,X STA $16 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $45 CMP #$02 ; #$02 = 2 BCS $32EC DEC BEQ $32E2 LDA $16 STA $205A,X ; 使用するアイテムの番号? BRA $32EC LC232E2: LDA $16 STA $205F,X ; (「ものまね」で使用) LDA #$21 ; #$21 = 33 STA $205B,X ; (「ものまね」で使用) LC232EC: INC $3D INC $45 LDX $41 STZ $17 LC232F4: LDA #$FF ; #$FF = 255 STA $4367,X INX REP #$20 ; A = 16bit INC $41 SEP #$20 ; A = 8bit INC $17 LDA $17 CMP #$14 ; #$14 = 20 BNE $32F4 REP #$20 ; A = 16bit DEC $41 SEP #$20 ; A = 8bit LDX $3F LDA $425E,X ORA $425F,X BEQ $331E INC $3F INC $3F BRA $3344 LC2331E: LDA $7C03 ASL TAX LDA $7C2A,X ORA $7C2B,X BEQ $333F LDY $3F LDA $7C2A,X STA $425E,Y LDA $7C2B,X STA $425F,Y INC $3F INC $3F BRA $3344 LC2333F: LDA $16 JSR $3504 ; LC23344: REP #$20 ; A = 16bit INC $41 INC $43 SEP #$20 ; A = 8bit RTS ;-------------------------------- ; ;-------------------------------- LC2334D: STA $2720 ; コマンド関連汎用領域?[0] LDA $2642,Y STA $2721 ; コマンド関連汎用領域?[1] LDA $2643,Y STA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 INC $43 INC $43 INC $43 TDC TAX LDA #$02 ; #$02 = 2 JSR $007C ; X〜Aの範囲の乱数取得 TAX LDA $2720,X ; コマンド関連汎用領域?[0] RTS ;-------------------------------- ; ;-------------------------------- LC2336E: JSR $34D9 ; LDA $474E BEQ $3385 PHX LDA $7C03 TAX LDA $4751 JSR $01D1 ; Aレジスタの値の(7 - Xレジスタ)ビットをクリアする STA $4751 PLX LC23385: LDA $0F BNE $33B9 PHX LC2338A: TDC TAX LDA #$07 ; #$07 = 7 JSR $007C ; X〜Aの範囲の乱数取得 STA $10 CMP $7C03 BEQ $338A ASL TAX LDA $4020,X ; モンスター番号 AND $4021,X CMP #$FF ; #$FF = 255 BEQ $338A LDA $7C03 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする PHA LDA $10 TAX PLA JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする PLX STA $436A,X RTS LC233B9: LDA $0E AND #$40 BEQ $33EB PHX LC233C0: TDC TAX LDA #$07 ; #$07 = 7 JSR $007C ; X〜Aの範囲の乱数取得 STA $10 ASL TAX LDA $4020,X ; モンスター番号 AND $4021,X CMP #$FF ; #$FF = 255 BEQ $33C0 LDA $10 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする AND $0F BEQ $33C0 LDA $10 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする PLX STA $436A,X LC233EB: RTS ;-------------------------------- ; ;-------------------------------- LC233EC: JSR $34D9 ; LDA $7C56 BEQ $33F7 INC $7C56 LC233F7: LDA $0E JSR $2C27 ; 攻撃目標を決定する($2620から24バイト(12要素分)に$FFFFを格納, $2600以降に攻撃目標のXオフセットを格納) LDA $2620 ; 汎用領域?[0] AND $2621 ; 汎用領域?[1] CMP #$FF ; #$FF = 255 BEQ $346E TDC TAX TAY STX $0E LC2340B: REP #$20 ; A = 16bit LDA $2620,Y ; 汎用領域?[0] JSR $01BB ; 128で割る TAX TDC SEP #$20 ; A = 8bit CPX #$000C ; #$000C = 12 BCS $3439 TXA CMP #$04 ; #$04 = 4 BCS $342A LDA $0E JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $0E BRA $3435 LC2342A: SEC SBC #$04 ; #$04 = 4 TAX LDA $0F JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $0F LC23435: INY INY BRA $340B LC23439: LDA $2724 ; ? BNE $3462 LC2343E: TDC TAX LDA #$07 ; #$07 = 7 JSR $007C ; X〜Aの範囲の乱数取得 TAX LDA $0E JSR $01DB ; Aレジスタの値の(7 - Xレジスタ)ビットがセットされていない場合は0クリアする BEQ $3455 TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $0E BRA $3462 LC23455: LDA $0F JSR $01DB ; Aレジスタの値の(7 - Xレジスタ)ビットがセットされていない場合は0クリアする BEQ $343E TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $0F LC23462: LDX $3F LDA $0E STA $425E,X LDA $0F STA $425F,X LC2346E: RTS ;-------------------------------- ; ;-------------------------------- LC2346F: JSR $34D9 ; LDA $0E TAX LDA $0F STA $4363,X ; モンスターの行動に関係する内部変数1? RTS ;-------------------------------- ; ;-------------------------------- LC2347B: JSR $34D9 ; LDA $0E TAX LDA $7C84,X ORA $0F STA $7C84,X RTS ;-------------------------------- ; ;-------------------------------- LC2348A: JSR $34D9 ; LDA $0E REP #$20 ; A = 16bit CLC ADC $32 ; 一時変数 自分アドレスへのインデックス TAX TDC SEP #$20 ; A = 8bit LDA $0E CMP #$1A ; #$1A = 26 BCC $34D3 CMP #$1E ; #$1E = 30 BCC $34AA CMP #$70 ; #$70 = 112 BCC $34D3 CMP #$74 ; #$74 = 116 BCS $34D3 LC234AA: TDC TAY LDA $0F BEQ $34D2 LC234B0: ASL BCS $34B6 INY BRA $34B0 LC234B6: PHX TYX LDA $D0ECDE,X ; $7F, $BF, $DF, $EF, $F7, $FB, $FD, $FE STA $0E PLX LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) AND $0F EOR $0F STA $10 LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) AND $0E ORA $10 STA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) LC234D2: RTS LC234D3: LDA $0F STA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) RTS ;-------------------------------- ; ;-------------------------------- LC234D9: STA $4368,X LDA $2642,Y STA $4369,X STA $0E LDA $2643,Y STA $436A,X STA $0F STA $436B,X REP #$20 ; A = 16bit CLC LDA $41 ADC #$0005 ; #$0005 = 5 STA $41 TDC SEP #$20 ; A = 8bit CLC LDA $43 ADC #$04 ; #$04 = 4 STA $43 RTS ;-------------------------------- ; ;-------------------------------- LC23504: PHA PLA BNE $350D STZ $17 JMP $35A9 LC2350D: CMP #$EC ; #$EC = 236 BNE $352E LDA #$F0 ; #$F0 = 240 STA $16 STZ $17 TDC TAX LC23519: LDA $3EC2,X BEQ $3525 LDA $16 JSR $01D1 ; Aレジスタの値の(7 - Xレジスタ)ビットをクリアする STA $16 LC23525: INX CPX #$0004 ; #$0004 = 4 BNE $3519 JMP $35D2 LC2352E: REP #$20 ; A = 16bit JSR $01B6 ; 8倍する TAX TDC SEP #$20 ; A = 8bit LDA $D10B80,X ; FILEPOS_MAGDATA STA $26A0 TDC TAY STY $16 LDA $26A0 BNE $3553 LDA $7C03 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $17 BRA $35D2 LC23553: AND #$04 BEQ $3583 LC23557: TDC TAX LDA #$0B ; #$0B = 11 JSR $007C ; X〜Aの範囲の乱数取得 STA $16 TAY LDA $3EC2,Y BEQ $3557 LDA $16 CMP #$04 ; #$04 = 4 BCS $3575 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $16 BRA $35D2 LC23575: STZ $16 SEC SBC #$04 ; #$04 = 4 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $17 BRA $35D2 LC23583: LDA $26A0 AND #$40 BNE $35B9 LDA $26A0 AND #$08 BNE $35A5 LDA $22 BNE $35A9 LC23595: TDC TAX LDA #$07 ; #$07 = 7 JSR $007C ; X〜Aの範囲の乱数取得 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $17 BRA $35D2 LC235A5: LDA $22 BNE $3595 LC235A9: TDC TAX LDA #$03 ; #$03 = 3 JSR $007C ; X〜Aの範囲の乱数取得 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $16 BRA $35D2 LC235B9: LDA $26A0 AND #$08 BNE $35CA LDA $22 BNE $35CE LC235C4: LDA #$FF ; #$FF = 255 STA $17 BRA $35D2 LC235CA: LDA $22 BNE $35C4 LC235CE: LDA #$F0 ; #$F0 = 240 STA $16 LC235D2: LDX $3F LDA $16 STA $425E,X LDA $17 STA $425F,X INC $3F INC $3F RTS ;-------------------------------- ; ;-------------------------------- LC235E3: LDA #$01 ; #$01 = 1 STA $7C56 LDA $474E BNE $3666 LDA $4754 BNE $35F5 JMP $3C0C LC235F5: LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) STA $7C73 LDA #$FF ; #$FF = 255 STA $4755 STZ $4753 STZ $474F STZ $4750 STZ $4751 STZ $4752 LDA $3BCC AND #$40 BNE $3618 INC $4750 LC23618: LDA $3BCF STA $474F BNE $3630 LDA $3BD1 BEQ $3630 STA $474F LDA $4750 EOR #$01 STA $4750 LC23630: LDA #$80 ; #$80 = 128 STA $4753 LDA $7B2E CMP #$FF ; #$FF = 255 BEQ $3666 LDA $3BD3 AND #$40 BNE $3646 INC $4752 LC23646: LDA $3BD6 STA $4751 BNE $365E LDA $3BD8 BEQ $365E STA $4751 LDA $4752 EOR #$01 STA $4752 LC2365E: LDA $4753 ORA #$40 STA $4753 LC23666: LDA $4756 BEQ $366E JMP $3C0C LC2366E: LDA $4755 BMI $3676 JSR $3D08 ; LC23676: LDA $4753 AND #$01 BEQ $3680 JMP $3951 LC23680: TDC TAX LC23682: LDA $474F JSR $01DB ; Aレジスタの値の(7 - Xレジスタ)ビットがセットされていない場合は0クリアする BNE $3696 INX CPX #$0008 ; #$0008 = 8 BNE $3682 INC $4753 JMP $3951 LC23696: LDA $474F JSR $01D1 ; Aレジスタの値の(7 - Xレジスタ)ビットをクリアする STA $474F TXA STA $4755 LDA $4750 BNE $36B0 CLC LDA $4755 ADC #$04 ; #$04 = 4 BRA $36B3 LC236B0: LDA $4755 LC236B3: TAX LDA $3EC2,X BEQ $3680 TXA JSR $01EC ; ($32: 自分アドレスへのインデックス) = Aレジスタ×128 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$40 BNE $3680 LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$10 BNE $3680 LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$81 BNE $3680 LDA $4750 BEQ $36DA JMP $37B9 LC236DA: LDA $2047,X CMP #$80 ; #$80 = 128 BEQ $3704 CMP #$81 ; #$81 = 129 BEQ $3704 LDA $2046,X CMP #$04 ; #$04 = 4 BEQ $3704 CMP #$0B ; #$0B = 11 BEQ $3704 CMP #$15 ; #$15 = 21 BEQ $3704 CMP #$16 ; #$16 = 22 BEQ $3704 CMP #$2C ; #$2C = 44 BEQ $3704 CMP #$2D ; #$2D = 45 BEQ $3704 CMP #$33 ; #$33 = 51 BNE $3782 LC23704: LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$DF STA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) CLC LDA $4755 ADC #$04 ; #$04 = 4 STA $0E TDC TAY LC23716: LDA $7C3A,Y CMP $0E BEQ $3725 INY CPY #$04 ; #$04 = 4 BRK $D0 SBC ($80,S),Y CPY #$0004 ; #$0004 = 4 BNE $3716 BRA $373E LC23725: TDC STA $7C3A,Y LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) STA $10 LDA $4755 ASL TAX STZ $7C2A,X STZ $7C2B,X BRA $3754 LC2373E: LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) STA $10 LDA $4755 JSR $01B7 ; 4倍する TAY LDA $7B9F,Y AND #$40 BEQ $3763 LC23754: PHX LDA $0E JSR $2482 ; PLX LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$BF STA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) LC23763: LDA $4755 JSR $01B7 ; 4倍する TAY LDA $7B9F,Y AND #$10 BEQ $3779 LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$EF STA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) LC23779: LDA $10 AND #$78 BEQ $3782 LC2377F: JMP $3680 LC23782: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$78 BNE $377F LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$20 BNE $377F LDA $2046,X CMP #$1C ; #$1C = 28 BEQ $377F JSR $3C10 ; LDA $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) BNE $37A4 JMP $3680 LC237A4: CLC LDA $4755 ADC #$04 ; #$04 = 4 STA $4755 JSR $3C7F ; JSR $3DC7 ; JSR $3D9C ; JMP $3C0C LC237B9: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$04 BNE $37C9 LDA $7BE6 ; フラグ? (40: ミュート) AND #$40 BEQ $37E1 LC237C9: LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$04 BEQ $37E1 LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$FB STA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) LDA $55 ; 一時変数 防御力(上位) JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 TDC STA $3CF9,Y ; タイマー制御フラグ?(歌による能力値上昇) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) LC237E1: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2006,X ; ヒットポイント(下位) ORA $2007,X ; ヒットポイント(上位) BEQ $37FC LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$80 BNE $37FC LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$20 BEQ $37FF LC237FC: JMP $394B LC237FF: LDA $2047,X CMP #$80 ; #$80 = 128 BEQ $3829 CMP #$81 ; #$81 = 129 BEQ $3829 LDA $2046,X CMP #$04 ; #$04 = 4 BEQ $3829 CMP #$0B ; #$0B = 11 BEQ $3829 CMP #$15 ; #$15 = 21 BEQ $3829 CMP #$16 ; #$16 = 22 BEQ $3829 CMP #$2C ; #$2C = 44 BEQ $3829 CMP #$2D ; #$2D = 45 BEQ $3829 CMP #$33 ; #$33 = 51 BNE $3885 LC23829: LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) STA $0E LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) STA $0F LDA $4755 JSR $01B7 ; 4倍する TAY LDA $7B7F,Y AND #$40 BEQ $384C LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$BF STA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) LC2384C: LDA $7B7F,Y AND #$10 BEQ $385B LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$EF STA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) LC2385B: LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$FB STA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) LDA $7B7F,Y AND $0E AND #$50 BNE $387C LDA $0F AND #$04 BEQ $3899 LDA $4755 JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 TDC STA $3CF9,Y ; タイマー制御フラグ?(歌による能力値上昇) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) LC2387C: LDA $4755 JSR $2482 ; JMP $394B LC23885: LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$78 BNE $3896 LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$04 BEQ $3899 LC23896: JMP $394B LC23899: LDA $2020,X ; アビリティフラグ? (40: 白刃取り, 80: カウンター) AND #$20 BEQ $38F0 LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) ORA $2072,X ; 一時的状態変化3 (補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) BMI $38F0 LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCC $38F0 REP #$20 ; A = 16bit LDA $2008,X ; 最大ヒットポイント(下位) JSR $01BE ; 16で割る CMP $2006,X ; ヒットポイント(下位) BCC $38ED TDC SEP #$20 ; A = 8bit JSR $3C7F ; LDY $32 ; 一時変数 自分アドレスへのインデックス LDA #$20 ; #$20 = 32 STA $2056,Y ; (フラグ系?) LDA #$2C ; #$2C = 44 STA $2057,Y ; 実行するコマンドの番号 LDA #$7C ; #$7C = 124 STA $205A,Y ; 使用するアイテムの番号? LDA $4755 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $2059,Y ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) TDC STA $2058,Y ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) JSR $3E91 ; JSR $3D9C ; INC $474E JMP $394E LC238ED: TDC SEP #$20 ; A = 8bit LC238F0: LDA $2020,X ; アビリティフラグ? (40: 白刃取り, 80: カウンター) AND #$80 BPL $394B LDA $2047,X CMP #$80 ; #$80 = 128 BEQ $3915 CMP #$81 ; #$81 = 129 BNE $394B LDA $7C73 REP #$20 ; A = 16bit JSR $01B2 ; 128倍する TAY TDC SEP #$20 ; A = 8bit LDA $206E,Y ; とくいわざの特性 (01: 攻撃力3/2, 02: スリップ, 04: 混乱, 08: 麻痺, 10: 暗闇, 20: 猛毒, 40: 徐々に老化, 80: 回避不能/防御力無視) AND #$83 BEQ $394B LC23915: JSR $02A2 ; 0〜99の範囲の乱数取得 CMP #$32 ; #$32 = 50 BCS $394B JSR $3C7F ; LDY $32 ; 一時変数 自分アドレスへのインデックス LDA #$80 ; #$80 = 128 STA $2056,Y ; (フラグ系?) LDA #$05 ; #$05 = 5 STA $2057,Y ; 実行するコマンドの番号 SEC LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) SBC #$04 ; #$04 = 4 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $2058,Y ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) TDC STA $2059,Y ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) STA $205A,Y ; 使用するアイテムの番号? JSR $3E91 ; JSR $3D9C ; INC $474E JMP $394E LC2394B: JMP $3680 LC2394E: JMP $3C0C LC23951: TDC TAX LC23953: LDA $4751 JSR $01DB ; Aレジスタの値の(7 - Xレジスタ)ビットがセットされていない場合は0クリアする BNE $396F INX CPX #$0008 ; #$0008 = 8 BNE $3953 LDA $474E BEQ $396C JSR $3DBB ; STZ $474E LC2396C: JMP $3C0C LC2396F: LDA $4751 JSR $01D1 ; Aレジスタの値の(7 - Xレジスタ)ビットをクリアする STA $4751 TXA STA $4755 LDA $4752 BNE $3989 CLC LDA $4755 ADC #$04 ; #$04 = 4 BRA $398C LC23989: LDA $4755 LC2398C: TAX LDA $3EC2,X BEQ $3951 TXA JSR $01EC ; ($32: 自分アドレスへのインデックス) = Aレジスタ×128 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$40 BNE $3951 LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$10 BNE $3951 LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$81 BNE $3951 LDA $4752 BEQ $39B3 JMP $3A92 LC239B3: LDA $204E,X ; アビリティフラグ(すっぴんのみ)? (01: 二刀流, 10: 薬の知識, 20: 両手持ち, 40: 格闘?) CMP #$80 ; #$80 = 128 BEQ $39DD CMP #$81 ; #$81 = 129 BEQ $39DD LDA $204D,X CMP #$04 ; #$04 = 4 BEQ $39DD CMP #$0B ; #$0B = 11 BEQ $39DD CMP #$15 ; #$15 = 21 BEQ $39DD CMP #$16 ; #$16 = 22 BEQ $39DD CMP #$2C ; #$2C = 44 BEQ $39DD CMP #$2D ; #$2D = 45 BEQ $39DD CMP #$33 ; #$33 = 51 BNE $3A5B LC239DD: LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$DF STA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) CLC LDA $4755 ADC #$04 ; #$04 = 4 STA $0E TDC TAY LC239EF: LDA $7C3A,Y CMP $0E BEQ $39FE INY CPY #$0004 ; #$0004 = 4 BNE $39EF BRA $3A17 LC239FE: TDC STA $7C3A,Y LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) STA $10 LDA $4755 ASL TAX STZ $7C2A,X STZ $7C2B,X BRA $3A2D LC23A17: LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) STA $10 LDA $4755 JSR $01B7 ; 4倍する TAY LDA $7B9F,Y AND #$40 BEQ $3A3C LC23A2D: PHX LDA $0E JSR $2482 ; PLX LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$BF STA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) LC23A3C: LDA $4755 JSR $01B7 ; 4倍する TAY LDA $7B9F,Y AND #$10 BEQ $3A52 LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$EF STA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) LC23A52: LDA $10 AND #$78 BEQ $3A5B LC23A58: JMP $3951 LC23A5B: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$78 BNE $3A58 LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$20 BNE $3A58 LDA $204D,X CMP #$1C ; #$1C = 28 BEQ $3A58 JSR $3C10 ; LDA $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) BNE $3A7D JMP $3951 LC23A7D: CLC LDA $4755 ADC #$04 ; #$04 = 4 STA $4755 JSR $3C7F ; JSR $3DC7 ; JSR $3D9C ; JMP $3C0C LC23A92: LDA $474E BEQ $3A9D JSR $3DBB ; STZ $474E LC23A9D: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2006,X ; ヒットポイント(下位) ORA $2007,X ; ヒットポイント(上位) BEQ $3AB8 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$80 BNE $3AB8 LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$20 BEQ $3ABB LC23AB8: JMP $3C09 LC23ABB: LDA $204E,X ; アビリティフラグ(すっぴんのみ)? (01: 二刀流, 10: 薬の知識, 20: 両手持ち, 40: 格闘?) CMP #$80 ; #$80 = 128 BEQ $3AE5 CMP #$81 ; #$81 = 129 BEQ $3AE5 LDA $204D,X CMP #$04 ; #$04 = 4 BEQ $3AE5 CMP #$0B ; #$0B = 11 BEQ $3AE5 CMP #$15 ; #$15 = 21 BEQ $3AE5 CMP #$16 ; #$16 = 22 BEQ $3AE5 CMP #$2C ; #$2C = 44 BEQ $3AE5 CMP #$2D ; #$2D = 45 BEQ $3AE5 CMP #$33 ; #$33 = 51 BNE $3B41 LC23AE5: LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) STA $0E LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) STA $0F LDA $4755 JSR $01B7 ; 4倍する TAY LDA $7B7F,Y AND #$40 BEQ $3B08 LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$BF STA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) LC23B08: LDA $7B7F,Y AND #$10 BEQ $3B17 LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$EF STA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) LC23B17: LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$FB STA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) LDA $7B7F,Y AND $0E AND #$50 BNE $3B38 LDA $0F AND #$04 BEQ $3B55 LDA $4755 JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 TDC STA $3CF9,Y ; タイマー制御フラグ?(歌による能力値上昇) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) LC23B38: LDA $4755 JSR $2482 ; JMP $394B LC23B41: LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$78 BNE $3B52 LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$04 BEQ $3B55 LC23B52: JMP $394B LC23B55: LDA $2020,X ; アビリティフラグ? (40: 白刃取り, 80: カウンター) AND #$20 BEQ $3BAD LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) ORA $2072,X ; 一時的状態変化3 (補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) BMI $3BAD LDA $7C73 CMP #$04 ; #$04 = 4 BCC $3BAD REP #$20 ; A = 16bit LDA $2008,X ; 最大ヒットポイント(下位) JSR $01BE ; 16で割る CMP $2006,X ; ヒットポイント(下位) BCC $3BAA TDC SEP #$20 ; A = 8bit JSR $3C7F ; LDY $32 ; 一時変数 自分アドレスへのインデックス LDA #$20 ; #$20 = 32 STA $2056,Y ; (フラグ系?) LDA #$2C ; #$2C = 44 STA $2057,Y ; 実行するコマンドの番号 LDA #$7C ; #$7C = 124 STA $205A,Y ; 使用するアイテムの番号? LDA $4755 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $2059,Y ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) TDC STA $2058,Y ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) JSR $3E91 ; JSR $3D9C ; INC $474E JMP $3C0C LC23BAA: TDC SEP #$20 ; A = 8bit LC23BAD: LDA $2020,X ; アビリティフラグ? (40: 白刃取り, 80: カウンター) AND #$80 BPL $3C09 LDA $204E,X ; アビリティフラグ(すっぴんのみ)? (01: 二刀流, 10: 薬の知識, 20: 両手持ち, 40: 格闘?) CMP #$80 ; #$80 = 128 BEQ $3BD2 CMP #$81 ; #$81 = 129 BNE $3C09 LDA $7C73 REP #$20 ; A = 16bit JSR $01B2 ; 128倍する TAY TDC SEP #$20 ; A = 8bit LDA $206E,Y ; とくいわざの特性 (01: 攻撃力3/2, 02: スリップ, 04: 混乱, 08: 麻痺, 10: 暗闇, 20: 猛毒, 40: 徐々に老化, 80: 回避不能/防御力無視) AND #$83 BEQ $3C09 LC23BD2: JSR $02A2 ; 0〜99の範囲の乱数取得 CMP #$32 ; #$32 = 50 BCS $3C09 JSR $3C7F ; LDY $32 ; 一時変数 自分アドレスへのインデックス LDA #$80 ; #$80 = 128 STA $2056,Y ; (フラグ系?) LDA #$05 ; #$05 = 5 STA $2057,Y ; 実行するコマンドの番号 SEC LDA $7C73 SBC #$04 ; #$04 = 4 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $2058,Y ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) TDC STA $2059,Y ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) STA $205A,Y ; 使用するアイテムの番号? JSR $3E91 ; JSR $3D9C ; INC $474E JMP $3C0C LC23C09: JMP $3951 LC23C0C: STZ $7C56 RTS ;-------------------------------- ; ;-------------------------------- LC23C10: STZ $7C50 STZ $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) LDA $4755 STA $7C03 TAX LDA $4030,X BEQ $3C7E LDA $7CAE,X BNE $3C7E LDA $4755 ASL TAX REP #$20 ; A = 16bit CLC LDA $D0EEA5,X ; 0, 1620, 3240, 4860, 6480, 8100, 9720, 11340 (1620の倍数の数列) ADC #$4A83 ; #$4A83 = 19075 STA $4B TDC SEP #$20 ; A = 8bit STZ $4690 LC23C3E: LDA $4690 TAX LDA $D0EEC9,X ; 0, 17, 34, 51, 68, 85, 102, 136, 153, 170 (17の倍数の数列) TAY STY $4692 STZ $4691 LC23C4D: LDY $4692 LDA ($4B),Y BEQ $3C7E CMP #$FE ; #$FE = 254 BEQ $3C7E JSR $27BF ; LDA $4694 ; 条件適合フラグ (0以外: 適合した, 0: 適合してない) BEQ $3C74 REP #$20 ; A = 16bit CLC LDA $4692 ADC #$0004 ; #$0004 = 4 STA $4692 TDC SEP #$20 ; A = 8bit INC $4691 BRA $3C4D LC23C74: INC $4690 LDA $4690 CMP #$0A ; #$0A = 10 BNE $3C3E LC23C7E: RTS ;-------------------------------- ; ;-------------------------------- LC23C7F: TDC TAY LDX $32 ; 一時変数 自分アドレスへのインデックス LC23C83: LDA $2056,X ; (フラグ系?) STA $473A,Y INX INY CPY #$000A ; #$000A = 10 BNE $3C83 LDA $4755 CMP #$04 ; #$04 = 4 BCC $3CF1 SEC SBC #$04 ; #$04 = 4 STA $10 ASL TAX LDA $D0EE95,X ; 0, 100, 200, 300, 400, 500, 600, 700 (100の倍数の数列) STA $0E LDA $D0EE96,X STA $0F TDC TAY LDX $0E LDA $4367,X STA $46D6,Y INX INY CPY #$64 ; #$64 = 100 BRK $D0 SBC ($A5,S),Y BPL $3CDE LDA $01,X TAX STX $0E ASL TAX STX $10 TDC TAY LDX $0E LDA $41DE,X STA $46A6,Y INX INY CPY #$10 ; #$10 = 16 BRK $D0 SBC ($7B,S),Y TAY LDX $10 LDA $425E,X STA $46B6,Y LDA $425F,X STA $46B7,Y INX INX INY INY CPY #$20 ; #$20 = 32 BRK $D0 XBA LC23CF1: LDA $4755 ASL TAX LDA $D0ED61,X ; 0, 11, 22, 33, 44, 55, 66, 77, 88, 99, 110, 121 (11の倍数の数列) TAX LDA $3CFB,X ; タイマー制御フラグ?(行動可能時間待ち(ATBゲージ)) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $4744 LDA $3D7F,X ; タイマー現在値(行動可能時間待ち(ATBゲージ)) STA $4745 RTS ;-------------------------------- ; ;-------------------------------- LC23D08: LDA $4755 JSR $01EC ; ($32: 自分アドレスへのインデックス) = Aレジスタ×128 TDC TAY LDX $32 ; 一時変数 自分アドレスへのインデックス LC23D12: LDA $473A,Y STA $2056,X ; (フラグ系?) INX INY CPY #$000A ; #$000A = 10 BNE $3D12 LDA $4755 CMP #$04 ; #$04 = 4 BCC $3D80 SEC SBC #$04 ; #$04 = 4 STA $10 ASL TAX LDA $D0EE95,X ; 0, 100, 200, 300, 400, 500, 600, 700 (100の倍数の数列) STA $0E LDA $D0EE96,X STA $0F TDC TAY LDX $0E LDA $46D6,Y STA $4367,X INX INY CPY #$64 ; #$64 = 100 BRK $D0 SBC ($A5,S),Y BPL $3D6D LDA $01,X TAX STX $0E ASL TAX STX $10 TDC TAY LDX $0E LDA $46A6,Y STA $41DE,X INX INY CPY #$10 ; #$10 = 16 BRK $D0 SBC ($7B,S),Y TAY LDX $10 LDA $46B6,Y STA $425E,X LDA $46B7,Y STA $425F,X INX INX INY INY CPY #$20 ; #$20 = 32 BRK $D0 XBA LC23D80: LDA $4755 ASL TAX LDA $D0ED61,X ; 0, 11, 22, 33, 44, 55, 66, 77, 88, 99, 110, 121 (11の倍数の数列) TAX LDA $4744 STA $3CFB,X ; タイマー制御フラグ?(行動可能時間待ち(ATBゲージ)) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) LDA $4745 STA $3D7F,X ; タイマー現在値(行動可能時間待ち(ATBゲージ)) LDA #$FF ; #$FF = 255 STA $4755 RTS ;-------------------------------- ; ;-------------------------------- LC23D9C: TDC TAX STX $0E LDA $4755 LC23DA3: CMP $0E BNE $3DAC STZ $3E9F,X BRA $3DAF LC23DAC: INC $3E9F,X LC23DAF: INC $0E INX CPX #$000C ; #$000C = 12 BNE $3DA3 INC $4756 RTS ;-------------------------------- ; ;-------------------------------- LC23DBB: TDC TAX LC23DBD: STZ $3E9F,X INX CPX #$000C ; #$000C = 12 BNE $3DBD RTS ;-------------------------------- ; ;-------------------------------- LC23DC7: SEC LDA $4755 SBC #$04 ; #$04 = 4 STA $7C03 JSR $01B5 ; 16倍する TAX STX $435E ASL TAX STX $4360 TDC TAY LDX $435E LDA #$FF ; #$FF = 255 STA $41DE,X INX INY CPY #$10 ; #$10 = 16 BRK $D0 INC $A6,X AND ($A9) BIT $579D JSR $21A9 ; STA $2056,X ; (フラグ系?) INC $474E LDX #$0040 ; #$0040 = 64 LDA #$FF ; #$FF = 255 LC23E01: STA $2640,X DEX BPL $3E01 REP #$20 ; A = 16bit CLC LDA $4B ADC #$00AA ; #$00AA = 170 STA $4B TDC SEP #$20 ; A = 8bit LDA $4690 ASL TAX LDA $D0EEB5,X ; 0, 64, 128, 192, 256, 320, 384, 448, 512, 576 (64の倍数の数列) STA $0E LDA $D0EEB6,X STA $0F TDC TAX LDY $0E LC23E29: LDA ($4B),Y STA $2640,X INY INX CMP #$FE ; #$FE = 254 BEQ $3E8C CMP #$FF ; #$FF = 255 BEQ $3E8C CMP #$FD ; #$FD = 253 BNE $3E8C LDA ($4B),Y STA $2640,X INY INX CMP #$F7 ; #$F7 = 247 BEQ $3E59 CMP #$F0 ; #$F0 = 240 BCS $3E7C LDA ($4B),Y STA $2640,X INY INX LDA ($4B),Y STA $2640,X BRA $3E8C LC23E59: LDA ($4B),Y STA $2640,X STA $10 INY INX LDA ($4B),Y STA $2640,X INY INX STZ $11 LC23E6B: LDA ($4B),Y STA $2640,X INY INX INC $11 LDA $11 CMP $10 BNE $3E6B BRA $3E8C LC23E7C: LDA ($4B),Y STA $2640,X INY INX LDA ($4B),Y STA $2640,X INY INX BRA $3E29 LC23E8C: STZ $22 JSR $3210 ; ;-------------------------------- ; ;-------------------------------- LC23E91: LDA $4755 JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 LDA #$01 ; #$01 = 1 STA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) LDA #$41 ; #$41 = 65 STA $3CFB,Y ; タイマー制御フラグ?(行動可能時間待ち(ATBゲージ)) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) RTS ;-------------------------------- ; ;-------------------------------- LC23EA2: TDC TAX TAY LDA #$04 ; #$04 = 4 STA $10 LC23EA9: LDA #$50 ; #$50 = 80 STA $0E LDA $04F0 ; モンスターパーティの種類(下位) CMP #$F7 ; #$F7 = 247 BNE $3EC0 LDA $04F1 ; モンスターパーティの種類(上位) CMP #$01 ; #$01 = 1 BNE $3EC0 LDA #$08 ; #$08 = 8 STA $2073,Y ; 一時的状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) LC23EC0: LDA $0500,X STA $2000,Y ; 隊列(bit7)・キャラクタ番号(下位4ビット) INX INY DEC $0E LDA $0E BNE $3EC0 REP #$20 ; A = 16bit TYA CLC ADC #$0030 ; #$0030 = 48 TAY TDC SEP #$20 ; A = 8bit DEC $10 LDA $10 BNE $3EA9 LDA $04F1 ; モンスターパーティの種類(上位) BEQ $3F11 LDA $04F0 ; モンスターパーティの種類(下位) CMP #$BA ; #$BA = 186 BNE $3F11 TDC TAX TAY LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) AND #$07 CMP #$01 ; #$01 = 1 BNE $3F08 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$C6 BNE $3F11 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA #$04 STA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) BRA $3F11 LC23F08: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INY CPY #$04 ; #$04 = 4 BRK $D0 CMP $D520,X EOR $20 LSR $7B9A,X TAX STX $0E STX $10 STX $12 LDA #$D0 ; #$D0 = 208 STA $22 STA $1E LDX #$9C00 ; #$9C00 = 39936 STX $20 LC23F2A: LDX #$0000 ; #$0000 = 0 LDA #$02 ; #$02 = 2 JSR $007C ; X〜Aの範囲の乱数取得 CMP #$02 ; #$02 = 2 BNE $3F38 LDA #$FF ; #$FF = 255 LC23F38: STA $16 LDX $0E LDY $10 CLC LDA $3EFF,X ADC $16 STA $2225,Y STA $2229,Y LDA $3F00,X STA $2244,Y LDA $3F01,X STA $2262,Y LDA $3F02,X STA $222C,Y LDA $3F03,X STA $222D,Y LDA $3F04,X STA $2227,Y STA $222B,Y LDA $3F05,X STA $222F,Y LDA $3F06,X STA $222E,Y REP #$20 ; A = 16bit LDA $3F07,X STA $2206,Y STA $2208,Y LDA $3F09,X STA $220A,Y LDA #$270F ; #$270F = 9999 STA $220C,Y LDA $3F0B,X STA $2267,Y LDA $3F0D,X STA $2269,Y LDA $3F11,X STA $2235,Y TDC SEP #$20 ; A = 8bit STA $2200,Y LDA $3F13,X STA $2237,Y LDA $3F0F,X STA $2213,Y LDA $3F14,X STA $2230,Y LDA $3F10,X STA $2232,Y LDA $3F15,X STA $2264,Y LDA $3F16,X STA $2234,Y LDA $3F17,X STA $2265,Y LDA $3F18,X STA $2266,Y LDA $3F1E,X STA $2202,Y STA $222A,Y PHY LDA $3F19,X BPL $3FF0 REP #$20 ; A = 16bit TYA CLC ADC #$0056 ; #$0056 = 86 TAY TDC SEP #$20 ; A = 8bit LC23FF0: LDA $3F19,X AND #$7F STA $221A,Y LDA $3F1A,X STA $221B,Y LDA $3F1B,X STA $221C,Y LDA $3F1C,X STA $221D,Y LDA $12 ASL TAY LDA $3F1D,X STA $4008,Y LDA $4021 STA $4009,Y LDA $12 ASL TAX REP #$20 ; A = 16bit LDA $4020,X ; モンスター番号 ASL TAX TDC SEP #$20 ; A = 8bit LDA $D09900,X ; FILEPOS_MONTECH STA $1C LDA $D09901,X ; FILEPOS_MONTECH[1] STA $1D PLY LDA $1C STA $226E,Y LDA $1D STA $227F,Y LDA $12 ASL TAX REP #$20 ; A = 16bit LDA $4020,X ; モンスター番号 ASL TAY TDC SEP #$20 ; A = 8bit LDA [$20],Y STA $1C INY LDA [$20],Y STA $1D LDX #$0654 ; #$0654 = 1620 STX $2A LDX $12 STX $2C JSR $00D2 ; 乗算(16bit) (($2A)×($2C) = ($2E)) LDX $2E STX $08 STX $0A PHX TDC TAY STY $0C LC2406D: LDX $08 LC2406F: LDA [$1C],Y STA $4759,X INX INY CMP #$FE ; #$FE = 254 BNE $406F LDX $0A LC2407C: LDA [$1C],Y STA $4803,X INX INY CMP #$FF ; #$FF = 255 BEQ $40A8 CMP #$FE ; #$FE = 254 BNE $407C REP #$20 ; A = 16bit CLC LDA $08 ADC #$0011 ; #$0011 = 17 STA $08 CLC LDA $0A ADC #$0040 ; #$0040 = 64 STA $0A TDC SEP #$20 ; A = 8bit INC $0C LDA $0C CMP #$0A ; #$0A = 10 BNE $406D LC240A8: PLX STX $08 STX $0A STX $0C LC240AF: LDX $08 LC240B1: LDA [$1C],Y STA $4A83,X INX INY CMP #$FF ; #$FF = 255 BEQ $40F3 CMP #$FE ; #$FE = 254 BNE $40B1 LDX $12 INC $4030,X LDX $0A LC240C7: LDA [$1C],Y STA $4B2D,X INX INY CMP #$FF ; #$FF = 255 BEQ $40F3 CMP #$FE ; #$FE = 254 BNE $40C7 REP #$20 ; A = 16bit CLC LDA $08 ADC #$0011 ; #$0011 = 17 STA $08 CLC LDA $0A ADC #$0040 ; #$0040 = 64 STA $0A TDC SEP #$20 ; A = 8bit INC $0C LDA $0C CMP #$0A ; #$0A = 10 BNE $40AF LC240F3: LDX $10 JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) STX $10 CLC LDA $0E ADC #$20 ; #$20 = 32 STA $0E INC $12 LDA $12 CMP #$08 ; #$08 = 8 BEQ $410C JMP $3F2A LC2410C: TDC TAX LDA #$04 ; #$04 = 4 STA $2620 ; 汎用領域?[0] LC24113: LDA $2620 ; 汎用領域?[0] JSR $01EC ; ($32: 自分アドレスへのインデックス) = Aレジスタ×128 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$04 BEQ $4125 LDA #$01 ; #$01 = 1 JSR $41A3 ; LC24125: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$80 BEQ $4133 LDA #$06 ; #$06 = 6 JSR $41A3 ; LC24133: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$20 BEQ $4141 LDA #$09 ; #$09 = 9 JSR $41A3 ; LC24141: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$04 BEQ $414F LDA #$04 ; #$04 = 4 JSR $41A3 ; LC2414F: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$80 BEQ $415D LDA #$02 ; #$02 = 2 JSR $41A3 ; LC2415D: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$10 BEQ $416B LDA #$00 ; #$00 = 0 JSR $41A3 ; LC2416B: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$01 BEQ $4179 LDA #$07 ; #$07 = 7 JSR $41A3 ; LC24179: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$10 BEQ $4187 LDA #$03 ; #$03 = 3 JSR $41A3 ; LC24187: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$08 BEQ $4195 LDA #$05 ; #$05 = 5 JSR $41A3 ; LC24195: INC $2620 ; 汎用領域?[0] LDA $2620 ; 汎用領域?[0] CMP #$0C ; #$0C = 12 BEQ $41A2 JMP $4113 LC241A2: RTS ;-------------------------------- ; ;-------------------------------- LC241A3: TAX LDA #$01 ; #$01 = 1 STA $3ED7 ; 2種類のタイマーサイクルのどちらを採用するか (0: 味方用, 1: 敵用) LDA $2620 ; 汎用領域?[0] JMP $24FD ; 各種タイマー発動 (Aレジスタ: タイマー適用キャラクタ, Xレジスタ: タイマーの種類) ;-------------------------------- ; ;-------------------------------- LC241AF: TDC TAX LDA #$80 ; #$80 = 128 LC241B3: STA $2B34,X INX CPX #$0100 ; #$0100 = 256 BNE $41B3 TDC TAX STX $0E LC241C0: TDC TAY LDA #$81 ; #$81 = 129 LC241C4: STA $2F3C,X STA $2DB6,X INX INY CPY #$0082 ; #$0082 = 130 BNE $41C4 REP #$20 ; A = 16bit TXA CLC ADC #$0208 ; #$0208 = 520 TAX TDC SEP #$20 ; A = 8bit INC $0E LDA $0E CMP #$04 ; #$04 = 4 BNE $41C0 TDC TAX STX $0E LC241E8: TDC TAY LDA #$80 ; #$80 = 128 LC241EC: STA $376C,X INX INY CPY #$0004 ; #$0004 = 4 BNE $41EC TXA CLC ADC #$10 ; #$10 = 16 TAX INC $0E LDA $0E CMP #$04 ; #$04 = 4 BNE $41E8 TDC TAX STX $0E LC24207: TDC TAY LDA #$80 ; #$80 = 128 LC2420B: STA $37B4,X INX INY CPY #$0002 ; #$0002 = 2 BNE $420B TXA TXA CLC ADC #$0A ; #$0A = 10 TAX INC $0E LDA $0E CMP #$04 ; #$04 = 4 BNE $4207 TDC TAY TAX STY $0E LC24227: STZ $0E PHX LC2422A: LDA $2040,X ; 装備できるアイテム(その1) STA $4199,Y INX INY INC $0E LDA $0E CMP #$04 ; #$04 = 4 BNE $422A PLX JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INC $0F LDA $0F CMP #$04 ; #$04 = 4 BNE $4227 JSL $D0EF78 TDC TAX TAY LC2424D: LDA $0640,X STA $2734,X INX CPX #$0200 ; #$0200 = 512 BNE $424D LC24259: LDA $2734,Y JSR $03FA ; INY CPY #$0100 ; #$0100 = 256 BNE $4259 TDC TAY STY $08 LC24269: LDY $08 JSR $0369 ; LDY $08 STA $2620,Y ; 汎用領域?[0] INC $08 LDA $08 BNE $4269 TDC TAX LC2427B: LDA $2620,X ; 汎用領域?[0] STA $2C34,X INX CPX #$0100 ; #$0100 = 256 BNE $427B TDC TAX STX $0E STX $10 STX $18 INX STX $14 LC24292: LDA $0E CMP #$0C ; #$0C = 12 BCC $42A3 SEC LDA $0E SBC #$0C ; #$0C = 12 ;-------------------------------- ; ;-------------------------------- LC2429D: CLC ADC #$10 ; #$10 = 16 TAX BRA $42A5 LC242A3: LDX $0E LC242A5: LDA $0950,X STA $12 LDY #$0008 ; #$0008 = 8 LC242AD: LDX $10 CPX #$0081 ; #$0081 = 129 BNE $42B7 JMP $4367 LC242B7: ASL $12 BCS $42CB LDA #$FF ; #$FF = 255 STA $2D34,X STA $2FBE,X STA $3248,X STA $34D2,X BRA $4336 LC242CB: TXA CMP #$5F ; #$5F = 95 BCC $42E8 SEC SBC #$5F ; #$5F = 95 CLC ADC #$80 ; #$80 = 128 PHA LDA #$FF ; #$FF = 255 STA $2D34,X STA $2FBE,X STA $3248,X STA $34D2,X PLA DEX DEX LC242E8: STX $20 STA $2D34,X STA $2FBE,X STA $3248,X STA $34D2,X LDA $14 STA $2DB6,X STA $3040,X STA $32CA,X STA $3554,X LDA $2D34,X REP #$20 ; A = 16bit JSR $01B6 ; 8倍する TAX TDC SEP #$20 ; A = 8bit LDA $D10B80,X ; FILEPOS_MAGDATA PHA LDA $D10B83,X ; FILEPOS_MAGDATA[3] AND #$7F LDX $20 STA $2E38,X STA $30C2,X STA $334C,X STA $35D6,X PLA STA $2EBA,X STA $3144,X STA $33CE,X STA $3658,X LC24336: INC $15 LDA $15 CMP #$03 ; #$03 = 3 BNE $434C STZ $15 INC $14 LDA $14 CMP #$07 ; #$07 = 7 BNE $434C LDA #$01 ; #$01 = 1 STA $14 LC2434C: INC $10 LDA $18 BNE $435C LDA $10 CMP #$5F ; #$5F = 95 BCC $435C INC $18 BRA $4362 LC2435C: DEY BEQ $4362 JMP $42AD LC24362: INC $0E JMP $4292 LC24367: TDC TAY TAX LC2436A: STZ $0E PHX LC2436D: LDA $203D,X ; 使用できる魔法(その1) PHA JSR $01BE ; 16で割る INC STA $2620,Y ; 汎用領域?[0] PLA AND #$0F INC STA $2621,Y ; 汎用領域?[1] INY INY INX INC $0E LDA $0E CMP #$03 ; #$03 = 3 BNE $436D PLX JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) CPY #$0018 ; #$0018 = 24 BNE $436A TDC TAX TAY STY $12 STY $3D STY $3F LC2439C: STZ $1A PHX LDA $12 REP #$20 ; A = 16bit JSR $01B2 ; 128倍する TAX TDC SEP #$20 ; A = 8bit LDA $2039,X ; 装備特殊効果フラグ(01: HP1/2で捕獲, 02: 不死特性付加, 04: 剣の舞確率上昇, 08: 消費MP1/2, 10: 盗み成功率2倍, 20: 格闘効果付加, 40: エルフのマント, 80: イージスのたて) AND #$08 BEQ $43B8 LDA $12 TAX INC $3D,X INC $1A LC243B8: PLX STZ $10 STZ $14 LC243BD: STZ $0E LC243BF: LDA $14 CMP #$57 ; #$57 = 87 BEQ $43F9 LDA $2DB6,X CMP $2620,Y ; 汎用領域?[0] BCS $43E5 LDA $3EFE ; MONPARTY[15]: 不明(フラグ系?) AND #$04 BNE $43EE STZ $2F3C,X LDA $1A BEQ $43EE LSR $2E38,X BCC $43EE INC $2E38,X BRA $43EE LC243E5: LDA #$FF ; #$FF = 255 STA $2D34,X INC STA $2E38,X LC243EE: INC $14 INX INC $0E LDA $0E CMP #$12 ; #$12 = 18 BNE $43BF LC243F9: INY INC $10 LDA $10 CMP #$05 ; #$05 = 5 BNE $43BD REP #$20 ; A = 16bit TXA CLC ADC #$0233 ; #$0233 = 563 TAX TDC SEP #$20 ; A = 8bit INY INC $12 LDA $12 CMP #$04 ; #$04 = 4 BNE $439C LDA $3EFE ; MONPARTY[15]: 不明(フラグ系?) AND #$04 BNE $4463 STZ $0E LDX #$0057 ; #$0057 = 87 STX $12 LC24424: LDA $0E TAX LDA $3D,X STA $1A STZ $10 LDX $12 LC2442F: LDA $2D34,X CMP #$FF ; #$FF = 255 BEQ $4445 STZ $2F3C,X LDA $1A BEQ $4445 LSR $2E38,X BCC $4445 INC $2E38,X LC24445: INX INC $10 LDA $10 CMP #$28 ; #$28 = 40 BNE $442F REP #$20 ; A = 16bit CLC LDA $12 ADC #$028A ; #$028A = 650 STA $12 TDC SEP #$20 ; A = 8bit INC $0E LDA $0E CMP #$04 ; #$04 = 4 BNE $4424 LC24463: TDC TAX TAY STY $0E STY $10 LC2446A: STZ $11 LDX $0E LC2446E: PHX LDA $2016,X ; 戦闘コマンド (1番目) BEQ $449E CMP #$50 ; #$50 = 80 BCS $449E CMP #$1D ; #$1D = 29 BNE $448B LDX $0E LDA $2015,X ; 捕らえているモンスター CMP #$FF ; #$FF = 255 BEQ $4489 LDA #$1E ; #$1E = 30 BRA $448B LC24489: LDA #$1D ; #$1D = 29 LC2448B: STA $375C,Y REP #$20 ; A = 16bit JSR $01B6 ; 8倍する TAX TDC SEP #$20 ; A = 8bit LDA $D159E0,X ; FILEPOS_CHRCMDDATA STA $3768,Y LC2449E: PLX INY INX INC $11 LDA $11 CMP #$04 ; #$04 = 4 BNE $446E LDX $0E JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) STX $0E TYA CLC ADC #$10 ; #$10 = 16 TAY INC $10 LDA $10 CMP #$04 ; #$04 = 4 BNE $446A TDC TAX TAY STY $0E STY $10 LC244C4: STZ $11 LDX $0E LC244C8: PHX LDA $2013,X ; 装備品 (左手) BNE $44D1 LDA $2011,X ; フラグその1? (防御・回避率・魔法防御・装備の重さの表示に関係している?) LC244D1: CMP #$01 ; #$01 = 1 BNE $44D6 TDC LC244D6: STA $37AC,Y PHA CMP #$80 ; #$80 = 128 BCC $44FB SEC SBC #$80 ; #$80 = 128 REP #$20 ; A = 16bit JSR $01B7 ; 4倍する STA $12 ASL CLC ADC $12 TAX TDC SEP #$20 ; A = 8bit LDA #$5A ; #$5A = 90 STA $37B4,Y LDA $D10602,X ; FILEPOS_ITEMDATA_PROTECTOR[2] BRA $452D LC244FB: REP #$20 ; A = 16bit JSR $01B7 ; 4倍する STA $12 ASL CLC ADC $12 TAX TDC SEP #$20 ; A = 8bit LDA $D10000,X ; FILEPOS_ITEMDATA STA $37B2,Y LDA $D10004,X ; FILEPOS_ITEMDATA_WEAPON[4] AND #$80 JSR $01BD ; 32で割る STA $37B4,Y LDA $D10002,X ; FILEPOS_ITEMDATA_WEAPON[2] PHA AND #$C0 ORA #$1A ORA $37B4,Y STA $37B4,Y PLA LC2452D: JSR $455E ; ? STA $37B6,Y PLA BEQ $453B TDC INC STA $37AE,Y LC2453B: PLX INY INX INC $11 LDA $11 CMP #$02 ; #$02 = 2 BNE $44C8 LDX $0E JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) STX $0E TYA CLC ADC #$0A ; #$0A = 10 TAY INC $10 LDA $10 CMP #$04 ; #$04 = 4 BEQ $455D JMP $44C4 LC2455D: RTS ;-------------------------------- ; ? ;-------------------------------- LC2455E: PHY AND #$3F JSR $01B7 ; 4倍する TAX TDC TAY LC24567: LDA $D12480,X ; ? (4バイト×64) STA $2720,Y ; コマンド関連汎用領域?[0] INX INY CPY #$0004 ; #$0004 = 4 BNE $4567 TDC TAX TAY LDA #$AA ; #$AA = 170 STA $14 LC2457C: LDA $4199,X AND $2720,Y ; コマンド関連汎用領域?[0] BNE $459C LDA $419A,X AND $2721,Y ; コマンド関連汎用領域?[1] BNE $459C LDA $419B,X AND $2722,Y ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 BNE $459C LDA $419C,X AND $2723,Y ; コマンド関連汎用領域?[3] BEQ $45C8 LC2459C: TXA JSR $01C0 ; 4で割る BNE $45AA LDA $14 AND #$7F STA $14 BRA $45C8 LC245AA: CMP #$01 ; #$01 = 1 BNE $45B6 LDA $14 AND #$DF STA $14 BRA $45C8 LC245B6: CMP #$02 ; #$02 = 2 BNE $45C2 LDA $14 AND #$F7 STA $14 BRA $45C8 LC245C2: LDA $14 AND #$FD STA $14 LC245C8: INX INX INX INX CPX #$0010 ; #$0010 = 16 BNE $457C LDA $14 PLY RTS TDC TAX STX $22 STX $2620 ; 汎用領域?[0] LC245DC: LDX $22 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$04 BEQ $45ED LDA #$01 ; #$01 = 1 JSR $41A3 ; LC245ED: LDX $22 JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) STX $22 INC $2620 ; 汎用領域?[0] LDA $2620 ; 汎用領域?[0] CMP #$04 ; #$04 = 4 BNE $45DC RTS ;-------------------------------- ; コマンドタイプ No.004(04): たたかう ;-------------------------------- LC245FF: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2058,X ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) STA $65 LDA $2059,X ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) STA $66 JSR $4AFE ; LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $66 STA $2059,X ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) LDA $65 STA $2058,X ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) PHA AND #$F0 LSR LSR LSR LSR ORA $2059,X ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) STA $2720 ; コマンド関連汎用領域?[0] PLA AND #$0F ASL ASL ASL ASL STA $2721 ; コマンド関連汎用領域?[1] LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) TAX LDA $D0ED85,X ; 0, 84, 168, 252 (84の倍数の数列) TAX STX $0E LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2013,X ; 装備品 (左手) BNE $4645 JMP $4779 LC24645: LDX $0E LDA $408A,X STA $10 AND #$02 BEQ $4675 LDA $474E BNE $4675 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$02 BNE $4675 LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$10 BNE $4675 JSR $02A2 ; 0〜99の範囲の乱数取得 LDX $0E CMP $408F,X BCS $4675 LDA $4090,X JMP $49D5 LC24675: JSR $9923 ; Aレジスタと($0C) = ($79FA)×12 ($79FAの範囲は0〜23を想定?) STY $14 STZ $12 LDX $0E LC2467E: LDA $4085,X STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY INC $12 LDA $12 CMP #$0C ; #$0C = 12 BNE $467E LDX $0E LDA $408A,X AND #$04 BNE $469A TDC BRA $46A1 LC2469A: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $207A,X ; 攻撃エフェクトの種類 AND #$7F LC246A1: PHA JSR $98FA ; STZ $384C,X LDA #$FC ; #$FC = 252 STA $384D,X LDA #$01 ; #$01 = 1 STA $384E,X LDA #$04 ; #$04 = 4 STA $384F,X PLA STA $3850,X LDX $0E LDA $408D,X PHA LDA $79FA TAX PLA STA $7B2D,X STZ $7B1C,X STZ $7ACC,X LDA $79FA ASL TAX LDA $2720 ; コマンド関連汎用領域?[0] STA $7ADC,X LDA $2721 ; コマンド関連汎用領域?[1] STA $7ADD,X INC $79FA JSR $98E3 ; LDA $10 AND #$01 BEQ $4707 CLC LDA $7C76 ADC #$12 ; #$12 = 18 STA $10 CLC LDA $7C76 BNE $46FB INC LC246FB: ADC #$01 ; #$01 = 1 CMP #$24 ; #$24 = 36 BNE $4702 TDC LC24702: STA $7C76 BRA $471C LC24707: LDA $10 AND #$08 BEQ $4779 JSR $02A2 ; 0〜99の範囲の乱数取得 LDX $0E CMP $408F,X BCS $4779 LDA $4090,X STA $10 LC2471C: LDY $14 TYA CLC ADC #$0C ; #$0C = 12 TAY STY $14 LDA $10 PHA JSR $0324 ; Aレジスタを魔法番号と見なし、FILEPOS_MAGDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) LDA $79FA TAX LDY $14 LDA $7A00,Y ; FILEPOS_MONMAP AND #$7F STA $7B2D,X JSR $98FA ; PLA STA $384F,X STZ $384C,X STZ $3850,X LDA #$FC ; #$FC = 252 STA $384D,X LDA #$07 ; #$07 = 7 STA $384E,X LDA $79FA TAX STZ $7B1C,X LDA #$10 ; #$10 = 16 STA $7ACC,X LDA $79FA ASL TAX LDA $2720 ; コマンド関連汎用領域?[0] STA $7ADC,X STA $7AFC,X LDA $2721 ; コマンド関連汎用領域?[1] STA $7ADD,X STA $7AFD,X INC $79FA JSR $98E3 ; LC24779: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2014,X ; 装備品 (右手) BNE $4781 RTS LC24781: LDX $0E LDA $4096,X STA $10 AND #$02 BEQ $47B1 LDA $474E BNE $47B1 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$02 BNE $47B1 LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$10 BNE $47B1 JSR $02A2 ; 0〜99の範囲の乱数取得 LDX $0E CMP $409B,X BCS $47B1 LDA $409C,X JMP $49D5 LC247B1: JSR $9923 ; Aレジスタと($0C) = ($79FA)×12 ($79FAの範囲は0〜23を想定?) STY $12 STZ $14 LDX $0E LC247BA: LDA $4091,X STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY INC $14 LDA $14 CMP #$0C ; #$0C = 12 BNE $47BA LDX $0E LDA $79FA TAY LDA $4099,X STA $7B2D,Y JSR $98FA ; STZ $384C,X LDA #$FC ; #$FC = 252 STA $384D,X LDA #$01 ; #$01 = 1 STA $384E,X LDA #$04 ; #$04 = 4 STA $384F,X STX $08 LDX $0E LDA $4096,X AND #$04 BNE $47FA LDA #$80 ; #$80 = 128 BRA $4801 LC247FA: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $207A,X ; 攻撃エフェクトの種類 ORA #$80 LC24801: LDX $08 STA $3850,X LDA $79FA TAX STZ $7B1C,X STZ $7ACC,X LDA $79FA ASL TAX LDA $2720 ; コマンド関連汎用領域?[0] STA $7ADC,X LDA $2721 ; コマンド関連汎用領域?[1] STA $7ADD,X INC $79FA JSR $98E3 ; LDA $10 AND #$01 BEQ $4848 CLC LDA $7C76 ADC #$12 ; #$12 = 18 STA $10 CLC LDA $7C76 BNE $483C INC LC2483C: ADC #$01 ; #$01 = 1 CMP #$24 ; #$24 = 36 BNE $4843 TDC LC24843: STA $7C76 BRA $485D LC24848: LDA $10 AND #$08 BEQ $48BC JSR $02A2 ; 0〜99の範囲の乱数取得 LDX $0E CMP $409B,X BCS $48BC LDA $409C,X STA $10 LC2485D: LDY $12 TYA CLC ADC #$0C ; #$0C = 12 TAY STY $12 LDX $0E LDA $10 PHA JSR $0324 ; Aレジスタを魔法番号と見なし、FILEPOS_MAGDATAの8バイトを$79FC以降の12バイトにコピーする($79FC: 01, 02, 03, 04, 05, ??, ??, ??, ??, 06, 07, 08) LDY $12 LDA $79FA TAX LDA $7A00,Y ; FILEPOS_MONMAP AND #$7F STA $7B2D,X JSR $98FA ; STZ $384C,X STZ $3850,X LDA #$FC ; #$FC = 252 STA $384D,X LDA #$07 ; #$07 = 7 STA $384E,X PLA STA $384F,X LDA $79FA TAX STZ $7B1C,X LDA #$10 ; #$10 = 16 STA $7ACC,X LDA $79FA ASL TAX LDA $2720 ; コマンド関連汎用領域?[0] STA $7ADC,X STA $7AFC,X LDA $2721 ; コマンド関連汎用領域?[1] STA $7ADD,X STA $7AFD,X INC $79FA JSR $98E3 ; LC248BC: RTS ;-------------------------------- ; ;-------------------------------- LC248BD: LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) JSR $01EC ; ($32: 自分アドレスへのインデックス) = Aレジスタ×128 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2006,X ; ヒットポイント(下位) STA $7C64 ; 行動者?の現在ヒットポイント? LDA $2007,X ; ヒットポイント(上位) STA $7C65 LDX $7C64 ; 行動者?の現在ヒットポイント? CPX #$270F ; #$270F = 9999 BCC $48DE LDX #$270F ; #$270F = 9999 STX $7C64 ; 行動者?の現在ヒットポイント? LC248DE: LDX $32 ; 一時変数 自分アドレスへのインデックス JSR $0248 ; 修正値をもとにして4つのステータスとレベルとを設定する JSR $0218 ; メモリ領域を初期化する ($3B3B〜$3BCC = 0, $34CC〜$384C = $FF, $3C00〜$3C5F = $FF, $7B3A〜$7B49 = 0, $3C90〜$3CBF = 0) JSR $028A ; JSR $4968 ; JSR $9427 ; JSR $4C10 ; LDA $7C4F BEQ $48FA JSR $4A2F ; LC248FA: LDA $7C9B BEQ $4902 JSR $4923 ; LC24902: LDA #$0A ; #$0A = 10 JSR $0069 ; LDA $3EEF ; MONPARTY[0]: 視覚的効果 BPL $4917 LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCS $4917 LDA #$20 ; #$20 = 32 STA $7BDE LC24917: LDA #$FF ; #$FF = 255 STA $7C4B ; (捕らえているモンスター) INC $4754 STZ $4756 RTS ;-------------------------------- ; ;-------------------------------- LC24923: LDA $7C9B BPL $4959 LDA $3BCF ORA $3BD6 BEQ $4936 LDA $3BCE STA $3BCF LC24936: TDC TAX LC24938: LDA $3BDA,X STA $3BD3,X INX CPX #$0023 ; #$0023 = 35 BNE $4938 LDA $7C9B AND #$40 BEQ $4967 LDA $3BD6 ORA $3BDD BEQ $4959 LDA $3BD5 STA $3BD6 LC24959: TDC TAX LC2495B: LDA $3BE1,X STA $3BDA,X INX CPX #$0023 ; #$0023 = 35 BNE $495B LC24967: RTS ;-------------------------------- ; ;-------------------------------- LC24968: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$02 BNE $4978 LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$18 BEQ $498A LC24978: LDA $2061,X BNE $498A LDA #$01 ; #$01 = 1 STA $2061,X STZ $2057,X ; 実行するコマンドの番号 LDA #$80 ; #$80 = 128 STA $2056,X ; (フラグ系?) LC2498A: LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$40 BEQ $4999 STZ $2057,X ; 実行するコマンドの番号 LDA #$80 ; #$80 = 128 STA $2056,X ; (フラグ系?) LC24999: CPX #$0200 ; #$0200 = 512 BCS $49D0 LDA $2057,X ; 実行するコマンドの番号 BEQ $49D0 CMP #$25 ; #$25 = 37 BEQ $49D0 CMP #$26 ; #$26 = 38 BEQ $49D0 CMP #$2B ; #$2B = 43 BEQ $49D0 CMP #$4E ; #$4E = 78 BCS $49D0 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$02 BNE $49D0 LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$18 BNE $49D0 TDC TAY LC249C3: LDA $2056,X ; (フラグ系?) STA $41D4,Y INX INY CPY #$000A ; #$000A = 10 BNE $49C3 LC249D0: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2057,X ; 実行するコマンドの番号 LC249D5: PHA REP #$20 ; A = 16bit JSR $01B6 ; 8倍する TAX LDA $D159E2,X ; FILEPOS_CHRCMDDATA[2] LDX $32 ; 一時変数 自分アドレスへのインデックス STA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) TDC SEP #$20 ; A = 8bit PLA TAX LDA $D0ED02,X ; $00, $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0A, $0B, $0C, $0D, $0E, $0F, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $1A, $1B, $1C, $1D, $1E, $1F, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $2A, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2C, $2D, $2E, $2F, $30, $31, $32, $33, $34 STA $474D ASL TAX LDA $C24A94,X ; コマンド処理ルーチンアドレス×53 STA $08 LDA $C24A95,X STA $09 LDA #$C2 ; #$C2 = 194 STA $0A STZ $7BFB STZ $7BFC STZ $7C03 STZ $7C08 STZ $3CEF STZ $3CF0 STZ $7C4F STZ $7C9B STZ $7C9D STZ $7C9C TDC TAX LC24A23: STZ $7BEB,X INX CPX #$0010 ; #$0010 = 16 BNE $4A23 JMP [$0008] ;-------------------------------- ; ;-------------------------------- LC24A2F: LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) JSR $01EC ; ($32: 自分アドレスへのインデックス) = Aレジスタ×128 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2600 STA $2002,X ; レベル LDA $2601 STA $2044,X ; 攻撃力 (「はなつ」時にモンスターの攻撃力で上書きされる) LDA $2602 STA $2062,X ; ダメージ倍率 (「はなつ」時にモンスターの倍率で設定される) LDA $2603 STA $202B,X ; 魔力(装備補正あり) LDA $2604 STA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2605 AND #$7F STA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) TDC TAY LC24A61: LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2605,Y STA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) INX INY CPY #$0009 ; #$0009 = 9 BNE $4A61 TDC TAY LDX $32 ; 一時変数 自分アドレスへのインデックス LC24A75: LDA $260E,Y STA $2050,X ; 魔法剣 付加属性(2倍) (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) INX INY CPY #$0006 ; #$0006 = 6 BNE $4A75 TDC TAY LDX $32 ; 一時変数 自分アドレスへのインデックス LC24A86: LDA $2614,Y STA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) INX INY CPY #$000B ; #$000B = 11 BNE $4A86 RTS DB $11,$05 DB $70,$05 DB $91,$07 DB $A4,$07 DB $FF,$45 DB $A9,$07 DB $AE,$07 DB $CF,$07 DB $0B,$09 DB $33,$09 DB $4E,$09 DB $6F,$09 DB $90,$09 DB $A4,$0A DB $DC,$0A DB $FA,$0A DB $0F,$0B DB $6F,$0B DB $7A,$0B DB $9B,$0B DB $BF,$0B DB $67,$0C DB $6F,$0C DB $E4,$0D DB $A2,$0D DB $C3,$0D DB $E0,$0E DB $FE,$0E DB $1F,$0F DB $40,$0F DB $25,$11 DB $70,$05 DB $69,$11 DB $8A,$11 DB $B2,$11 DB $11,$05 DB $5E,$12 DB $B3,$12 DB $9F,$5B DB $9F,$5B DB $06,$13 DB $33,$13 DB $CE,$13 DB $9F,$5B DB $14,$08 DB $DD,$09 DB $7D,$0A DB $EF,$13 DB $1D,$14 DB $25,$14 DB $90,$14 DB $B8,$14 DB $A2,$16 ;-------------------------------- ; ;-------------------------------- LC24AFE: LDX $32 ; 一時変数 自分アドレスへのインデックス PHX STZ $0E LDA $65 BEQ $4B12 INC $0E JSR $01C3 ; Aレジスタのセットされたビットの数をXレジスタに格納する DEX BEQ $4B22 JMP $4BD3 LC24B12: LDA $66 BNE $4B19 JMP $4BD3 LC24B19: JSR $01C3 ; Aレジスタのセットされたビットの数をXレジスタに格納する DEX BEQ $4B22 JMP $4BD3 LC24B22: LDA $65 PHA AND #$F0 JSR $01BE ; 16で割る ORA $66 STA $10 PLA JSR $01B5 ; 16倍する STA $11 TDC TAX LC24B36: ASL $11 ROL $10 BCS $4B3F INX BRA $4B36 LC24B3F: LDA $3EC2,X BEQ $4B5D TXA JSR $01EC ; ($32: 自分アドレスへのインデックス) = Aレジスタ×128 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$C0 BNE $4B5D LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$81 BNE $4B5D LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$10 BEQ $4BD3 LC24B5D: LDA $0E BNE $4B75 STZ $12 LDA #$04 ; #$04 = 4 STA $13 JSR $4BD7 ; BNE $4BD3 TDC TAX LDA #$03 ; #$03 = 3 JSR $007C ; X〜Aの範囲の乱数取得 BRA $4B96 LC24B75: LDA #$04 ; #$04 = 4 STA $12 LDA #$0C ; #$0C = 12 STA $13 JSR $4BD7 ; BNE $4BD3 LDA $7C4C BEQ $4B8E LDX #$0004 ; #$0004 = 4 LDA #$06 ; #$06 = 6 BRA $4B93 LC24B8E: LDX #$0004 ; #$0004 = 4 LDA #$0B ; #$0B = 11 LC24B93: JSR $007C ; X〜Aの範囲の乱数取得 LC24B96: STA $10 TAX LDA $3EC2,X BEQ $4B5D LDA $10 JSR $01EC ; ($32: 自分アドレスへのインデックス) = Aレジスタ×128 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$C0 BNE $4B5D LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$81 BNE $4B5D LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$10 BNE $4B5D LDA $0E BNE $4BC7 LDA $10 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $66 BRA $4BD3 LC24BC7: SEC LDA $10 SBC #$04 ; #$04 = 4 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $65 LC24BD3: PLX STX $32 ; 一時変数 自分アドレスへのインデックス RTS ;-------------------------------- ; ;-------------------------------- LC24BD7: LDA $12 TAY LDA $3EC2,Y BEQ $4C02 LDA $12 REP #$20 ; A = 16bit JSR $01B2 ; 128倍する TAX TDC SEP #$20 ; A = 8bit LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$C0 BNE $4C02 LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$81 BNE $4C02 LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$10 BNE $4C02 TDC BRA $4C0C LC24C02: INC $12 LDA $12 CMP $13 BNE $4BD7 ; LDA #$01 ; #$01 = 1 LC24C0C: STA $7C29 RTS ;-------------------------------- ; ;-------------------------------- LC24C10: LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCS $4C17 RTS LC24C17: SEC SBC #$04 ; #$04 = 4 JSR $01B5 ; 16倍する REP #$20 ; A = 16bit CLC ADC #$41DE ; #$41DE = 16862 STA $3D TDC SEP #$20 ; A = 8bit TDC TAY STY $3F LC24C2C: LDY $3F LDA ($3D),Y STA $08 BEQ $4C43 CMP #$FF ; #$FF = 255 BEQ $4C43 CMP #$82 ; #$82 = 130 BCC $4C40 CMP #$A0 ; #$A0 = 160 BCC $4C44 LC24C40: JMP $4CDA LC24C43: RTS LC24C44: STZ $0E LDA $3F TAX LDA $D0EE85,X ; 0, 7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98, 105 (7の倍数の数列(1バイト×16要素)) TAX LDA $3BCF,X STA $0F LDA $3BCC,X AND #$40 BEQ $4C61 LDA $3BD1,X STA $0E STZ $0F LC24C61: LDA $0F ORA $0E STA $0E BEQ $4CDA TDC TAX STX $10 LC24C6D: LDX $10 LC24C6F: ASL $0E INC $10 BCS $4C7D INX CPX #$0008 ; #$0008 = 8 BNE $4C6F BRA $4CDA LC24C7D: REP #$20 ; A = 16bit TXA JSR $01B2 ; 128倍する TAY TDC SEP #$20 ; A = 8bit LDA $2020,Y ; アビリティフラグ? (40: 白刃取り, 80: カウンター) AND #$10 BEQ $4C6D LDA $08 REP #$20 ; A = 16bit JSR $01B6 ; 8倍する TAX TDC SEP #$20 ; A = 8bit LDA $D10B82,X ; FILEPOS_MAGDATA[2] AND #$F0 STA $10 BMI $4CDA AND #$40 BEQ $4CAB LDA #$64 ; #$64 = 100 BRA $4CBD LC24CAB: LDA $10 AND #$20 BEQ $4CB5 LDA #$32 ; #$32 = 50 BRA $4CBD LC24CB5: LDA $10 AND #$10 BEQ $4CDA LDA #$0A ; #$0A = 10 LC24CBD: STA $0E JSR $02A2 ; 0〜99の範囲の乱数取得 CMP $0E BCS $4CD8 LDA $7C20 CMP #$08 ; #$08 = 8 BEQ $4CDF TAX LDA $08 STA $7C21,X INC $7C20 BRA $4CDA LC24CD8: BRA $4C6D LC24CDA: INC $3F JMP $4C2C LC24CDF: RTS ;-------------------------------- ; ;-------------------------------- LC24CE0: JSR $4F0A ; Xレジスタに何らかのエフェクト番号? TDC TAX LC24CE5: ADC $0000,X ; FILEPOS_MONDATA INX CPX #$03E8 ; #$03E8 = 1000 BNE $4CE5 ADC $0AF9 STA $3A LC24CF3: ADC $0000,X ; FILEPOS_MONDATA INX CPX #$07D0 ; #$07D0 = 2000 BNE $4CF3 STA $3B TDC TAX LC24D00: LDA $D12976,X ; $00, $02, $04, $0E, $01, $00, $00, $01, $00, $00, $00 STA $3ED9,X ; タイマー関連5?(ストップ効果解除) INX CPX #$000B ; #$000B = 11 BNE $4D00 LDA $0970 AND #$0F TAX LDA $D0ECF2,X ; 0, 15, 30, 60, 120, 240, 0, 0, 0, 15, 30, 60, 120, 240, 0, 0 STA $3ED6 ; スピード関連 REP #$20 ; A = 16bit LDA $04F0 ; モンスターパーティの種類(下位) JSR $01B5 ; 16倍する TAX TDC SEP #$20 ; A = 8bit TAY LC24D27: LDA $D03000,X ; FILEPOS_MONPARTY STA $3EEF,Y ; MONPARTY[0]: 視覚的効果 INY INX CPY #$0010 ; #$0010 = 16 BNE $4D27 JSR $4E25 TDC TAX TAY LC24D3B: LDA $3EF3,X ; MONPARTY[4]: 1番目のモンスターの番号(下位8ビット) STA $4020,Y ; モンスター番号 CMP #$FF ; #$FF = 255 BNE $4D4A STA $4021,Y BRA $4D56 LC24D4A: LDA $3EFE ; MONPARTY[15]: 不明(フラグ系?) AND #$20 BEQ $4D56 LDA #$01 ; #$01 = 1 STA $4021,Y LC24D56: INX INY INY CPY #$0010 ; #$0010 = 16 BNE $4D3B TDC TAY TAX STX $10 LDA #$D0 ; #$D0 = 208 STA $14 LDY #$0000 ; #$0000 = 0 STY $12 LDY $10 LDA $4021,Y BEQ $4D7C LDA #$D0 ; #$D0 = 208 STA $14 LDY #$2000 ; #$2000 = 8192 STY $12 LC24D7C: LDY $10 LDA $3EF3,Y ; MONPARTY[4]: 1番目のモンスターの番号(下位8ビット) REP #$20 ; A = 16bit JSR $01B4 ; 32倍する TAY TDC SEP #$20 ; A = 8bit STZ $0E LC24D8C: LDA [$12],Y STA $3EFF,X INY INX INC $0E LDA $0E CMP #$20 ; #$20 = 32 BNE $4D8C INC $10 LDA $10 CMP #$08 ; #$08 = 8 BNE $4D7C TDC TAX LDA $3EF2 ; MONPARTY[3]: 戦闘開始時のモンスターの出現状態 (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) STA $3FFF STA $4048 STA $7C09 PHA EOR #$FF STA $7C0A ; モンスターを倒したかどうかのフラグ (ON: 倒した, OFF: 倒していない) PLA LC24DB8: ASL BCC $4DBE INC $4018,X LC24DBE: INX CPX #$0008 ; #$0008 = 8 BNE $4DB8 REP #$20 ; A = 16bit LDA $04F0 ; モンスターパーティの種類(下位) JSR $01B6 ; 8倍する TAX TDC SEP #$20 ; A = 8bit TDC TAY LC24DD2: LDA $D08900,X STA $4000,Y INX INY CPY #$0008 ; #$0008 = 8 BNE $4DD2 TDC TAX LC24DE2: LDA $3EF3,X ; MONPARTY[4]: 1番目のモンスターの番号(下位8ビット) CMP #$FF ; #$FF = 255 BNE $4DF2 LDA $7C09 JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $7C09 LC24DF2: INX CPX #$0008 ; #$0008 = 8 BNE $4DE2 JSR $3EA2 ; JSR $41AF ; JSR $1FD2 ; JSR $2447 ; JSR $5A41 ; JSR $5921 ; JSR $505C ; JSR $4F7A ; LDA #$02 ; #$02 = 2 JSR $0069 ; JSR $4E9F ; LDA $3C5F BEQ $4E22 LDA #$0A ; #$0A = 10 JSR $0069 ; LC24E22: JMP $5872 ;-------------------------------- ; ;-------------------------------- LC24E25: LDA $3EFE ; MONPARTY[15]: 不明(フラグ系?) AND #$10 BEQ $4E30 INC $7C4C RTS LC24E30: TDC TAX STX $10 LC24E34: LDX $10 LDA $04F0 ; モンスターパーティの種類(下位) CMP $D0FFE0,X BNE $4E72 LDA $04F1 ; モンスターパーティの種類(上位) CMP $D0FFE1,X BNE $4E72 LDA $D0FFE2,X STA $12 LDA $D0FFE3,X STA $13 TXA JSR $01C0 ; 4で割る STZ $0E LSR ROR $0E LSR ROR $0E LSR ROR $0E TAY LDA $0E JSR $01BD ; 32で割る TAX LDA $7C85,Y JSR $01DB ; Aレジスタの値の(7 - Xレジスタ)ビットがセットされていない場合は0クリアする BNE $4E81 LC24E72: INC $10 INC $10 INC $10 INC $10 LDA $10 CMP #$20 ; #$20 = 32 BNE $4E34 RTS LC24E81: REP #$20 ; A = 16bit LDA $12 STA $04F0 ; モンスターパーティの種類(下位) JSR $01B5 ; 16倍する TAX TDC SEP #$20 ; A = 8bit TAY LDA $D03000,X ; FILEPOS_MONPARTY STA $3EEF,Y ; MONPARTY[0]: 視覚的効果 INY INX CPY #$10 ; #$10 = 16 BRK $D0 SBC ($60) ;-------------------------------- ; ;-------------------------------- LC24E9F: LDA #$FF ; #$FF = 255 STA $0E TDC TAX TAY LC24EA6: LDA $3EC2,Y BEQ $4EB4 LDA $3D7F,X ; タイマー現在値(行動可能時間待ち(ATBゲージ)) CMP $0E BCS $4EB4 STA $0E LC24EB4: TXA CLC ADC #$0B ; #$0B = 11 TAX INY CPY #$000C ; #$000C = 12 BNE $4EA6 SEC LDA $0E SBC #$02 ; #$02 = 2 BCS $4EC7 TDC LC24EC7: STA $0E TDC TAX TAY LC24ECC: LDA $3EC2,Y BEQ $4EDA SEC LDA $3D7F,X ; タイマー現在値(行動可能時間待ち(ATBゲージ)) SBC $0E STA $3D7F,X ; タイマー現在値(行動可能時間待ち(ATBゲージ)) LC24EDA: TXA CLC ADC #$0B ; #$0B = 11 TAX INY CPY #$000C ; #$000C = 12 BNE $4ECC TDC TAX TAY LC24EE8: LDA $3EEF ; MONPARTY[0]: 視覚的効果 BMI $4EF9 LDA $2038,X ; 装備特殊効果フラグ?(20: まさむね, 40: さすけのかたな, 80: ディフェンダー) AND #$20 BEQ $4EF9 LDA #$01 ; #$01 = 1 STA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) LC24EF9: TYA CLC ADC #$0B ; #$0B = 11 TAY JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INC $0E LDA $0E CMP #$04 ; #$04 = 4 BNE $4EE8 RTS ;-------------------------------- ; Xレジスタに何らかのエフェクト番号? ;-------------------------------- LC24F0A: LDX #$0067 ; #$0067 = 103 TDC LC24F0E: STA $00,X DEX BPL $4F0E LDX #$5CD7 ; #$5CD7 = 23767 TDC LC24F17: STA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) DEX BPL $4F17 TXA STA $41A9 STA $41AA STA $41AB STA $41AC STA $41AD STA $41CC STA $7C4B ; (捕らえているモンスター) LDX #$01FF ; #$01FF = 511 LC24F36: STA $384C,X DEX BPL $4F36 TDC TAX LC24F3E: LDA $09B4,X STA $7C74,X ; 魔法のランプを使用した回数 INX CPX #$0020 ; #$0020 = 32 BNE $4F3E LDA $0AFB STA $7C94 LDA $0AFC STA $7C95 LDA $0AFD STA $7C96 INC $7C72 LDA #$40 ; #$40 = 64 STA $2200 STA $2280 STA $2300 STA $2380 STA $2400 STA $2480 STA $2500 STA $2580 RTS ;-------------------------------- ; ;-------------------------------- LC24F7A: TDC TAX TAY LC24F7D: LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) STA $7C1A,Y JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INY CPY #$0004 ; #$0004 = 4 BNE $4F7D LDA $4021 BNE $4FA3 LDA $2021 ; アビリティフラグ? (01: 二刀流?, 10: 薬の知識, 20: 両手持ち, 40: 格闘?) ORA $20A1 ORA $2121 ORA $21A1 STA $0E AND #$04 BNE $4FCA LC24FA3: LDA $3EFE ; MONPARTY[15]: 不明(フラグ系?) BMI $4FC2 LDA $4021 BNE $4FE6 LDA $3EEF ; MONPARTY[0]: 視覚的効果 BMI $4FE6 LDA $7CD8 BNE $4FCA TDC TAX LDA #$FF ; #$FF = 255 JSR $007C ; X〜Aの範囲の乱数取得 CMP #$10 ; #$10 = 16 BCS $4FCA LC24FC2: INC $7C19 JSR $4FEA ; BRA $4FE6 LC24FCA: LDA #$20 ; #$20 = 32 STA $10 LDA $0E AND #$02 BEQ $4FD8 LDA #$40 ; #$40 = 64 STA $10 LC24FD8: TDC TAX LDA #$FF ; #$FF = 255 JSR $007C ; X〜Aの範囲の乱数取得 CMP $10 BCS $4FE6 JSR $5001 ; LC24FE6: STZ $7CD8 RTS ;-------------------------------- ; ;-------------------------------- LC24FEA: LDA #$1C ; #$1C = 28 STA $3C5F TDC TAX TAY STY $0E LDA #$04 ; #$04 = 4 STA $10 STZ $12 LDA #$3C ; #$3C = 60 STA $16 JMP $501D ;-------------------------------- ; ;-------------------------------- LC25001: LDA #$1B ; #$1B = 27 STA $3C5F LDX #$0200 ; #$0200 = 512 LDY #$002C ; #$002C = 44 LDA #$04 ; #$04 = 4 STA $0E LDA #$0C ; #$0C = 12 STA $10 STA $12 LDA #$5A ; #$5A = 90 STA $16 JMP $501D LC2501D: LDA $2038,X ; 装備特殊効果フラグ?(20: まさむね, 40: さすけのかたな, 80: ディフェンダー) AND #$20 BNE $5035 CLC LDA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) ADC $16 BCC $502E LDA #$FF ; #$FF = 255 LC2502E: STA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) LDA $12 BNE $5048 LC25035: LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) AND #$7F STA $14 LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) AND #$80 EOR #$80 ORA $14 STA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) LC25048: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) TYA CLC ADC #$0B ; #$0B = 11 TAY INC $0E LDA $0E CMP $10 BNE $501D TDC JMP $5847 ; ;-------------------------------- ; ;-------------------------------- LC2505C: LDA $3EFD ; MONPARTY[14]: (08: ボス戦, 上位4ビット: 音楽関連) BMI $506F LDA $3EFD ; MONPARTY[14]: (08: ボス戦, 上位4ビット: 音楽関連) JSR $01BF ; 8で割る TAX LDA $D0EEDF,X ; 113, 114, 115, 116, 118, 119, 120, 121 JSR $006E ; LC2506F: RTS ;-------------------------------- ; ;-------------------------------- LC25070: JSR $0218 ; メモリ領域を初期化する ($3B3B〜$3BCC = 0, $34CC〜$384C = $FF, $3C00〜$3C5F = $FF, $7B3A〜$7B49 = 0, $3C90〜$3CBF = 0) LDX #$0007 ; #$0007 = 7 LC25076: STZ $013B,X STZ $7C66,X DEX BPL $5076 LDA $7CD8 BEQ $5087 JMP $5142 LC25087: LDA $7BDE AND #$40 BEQ $50A5 ; LDA #$01 ; #$01 = 1 JSR $5847 ; LDA #$75 ; #$75 = 117 JSR $006E ; LDA #$01 ; #$01 = 1 STA $7C84 LDA #$2A ; #$2A = 42 STA $3C5F JMP $5117 ;-------------------------------- ; ;-------------------------------- LC250A5: LDA $7BDE AND #$01 BEQ $50DC LDA #$02 ; #$02 = 2 STA $7C84 LDA #$80 ; #$80 = 128 STA $3BCF LDA #$0C ; #$0C = 12 JSR $0069 ; JSR $515C ; JSR $9A5E ; JSR $51F4 ; LDA #$2B ; #$2B = 43 STA $3C5F TDC JSR $5847 ; CLC LDA $7C75 ; 逃走回数? + 1? (上限: 255) ADC #$01 ; #$01 = 1 BCC $50D7 LDA #$FF ; #$FF = 255 LC250D7: STA $7C75 ; 逃走回数? + 1? (上限: 255) BRA $5117 LC250DC: STZ $7C84 JSR $515C ; LDA $7BDE BPL $510F LDA $3EFE ; MONPARTY[15]: 不明(フラグ系?) AND #$02 BNE $510F LDA $3EFD ; MONPARTY[14]: (08: ボス戦, 上位4ビット: 音楽関連) BMI $50F8 LDA #$70 ; #$70 = 112 JSR $006E ; LC250F8: LDA #$0D ; #$0D = 13 JSR $0069 ; LDA #$01 ; #$01 = 1 JSR $5847 ; LDA #$29 ; #$29 = 41 STA $3C5F LDA #$0A ; #$0A = 10 JSR $0069 ; JSR $52A2 ; LC2510F: JSR $9A5E ; JSR $51F4 ; BRA $511C LC25117: LDA #$0A ; #$0A = 10 JSR $0069 ; LC2511C: JSL $D0EF78 JSR $51C2 ; TDC TAX LC25125: LDA $7C74,X ; 魔法のランプを使用した回数 STA $09B4,X INX CPX #$0020 ; #$0020 = 32 BNE $5125 LDA $7C95 STA $0AFC LDA $7C96 STA $0AFD LDA #$0E ; #$0E = 14 JSR $0069 ; LC25142: TDC TAX LC25144: ORA $7C66,X INX CPX #$0008 ; #$0008 = 8 BNE $5144 PHA PLA BNE $515B LDA $3EFD ; MONPARTY[14]: (08: ボス戦, 上位4ビット: 音楽関連) BMI $515B LDA #$7F ; #$7F = 127 JSR $006E ; LC2515B: RTS ;-------------------------------- ; ;-------------------------------- LC2515C: TDC TAY TAX STX $0E LC25161: LDA $0502,Y ; (レベル) STA $2002,X ; レベル LDA $0524,Y ; (力) STA $2024,X ; 力(装備補正なし) LDA $0525,Y ; (素速さ) STA $2025,X ; 素速さ(装備補正なし) LDA $0526,Y ; (体力) STA $2026,X ; 体力(装備補正なし) LDA $0527,Y ; (魔力) STA $2027,X ; 魔力(装備補正なし) JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) REP #$20 ; A = 16bit TYA CLC ADC #$0050 ; #$0050 = 80 TAY TDC SEP #$20 ; A = 8bit INC $0E LDA $0E CMP #$04 ; #$04 = 4 BNE $5161 TDC TAX STX $0E STX $10 LC2519B: LDX $0E STZ $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) STZ $201F,X ; フラグ (04: 防御無視?, 08: 乱れ打ちで半減?, 10: ためる?, 20: 不明(攻撃力1/2), 40: 投げる?, 80: 必ず命中?) STZ $2022,X ; パワーアップ属性? TDC TAY LC251A8: STZ $2030,X ; 吸収属性 (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) INX INY CPY #$000A ; #$000A = 10 BNE $51A8 LDX $0E JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) STX $0E INC $10 LDA $10 CMP #$04 ; #$04 = 4 BNE $519B RTS ;-------------------------------- ; ;-------------------------------- LC251C2: TDC TAX LC251C4: TXY INY LC251C6: LDA $0640,X BEQ $51ED CMP $0640,Y BNE $51E7 CLC LDA $0740,X ADC $0740,Y CMP #$63 ; #$63 = 99 BCC $51DD LDA #$63 ; #$63 = 99 LC251DD: STA $0740,X TDC STA $0640,Y STA $0740,Y LC251E7: INY CPY #$0100 ; #$0100 = 256 BNE $51C6 LC251ED: INX CPX #$00FF ; #$00FF = 255 BNE $51C4 RTS ;-------------------------------- ; ;-------------------------------- LC251F4: TDC TAX TAY STY $10 STX $12 LC251FB: STZ $0E LDA $10 TAX LDA $7C59,X ; 巨人の薬使用フラグ?(1人目) BEQ $5220 PHY LDA $10 ASL TAY REP #$20 ; A = 16bit LDA $7C11,Y ; 巨人の薬使用前の最大ヒットポイント?(1人目) LDX $12 STA $2008,X ; 最大ヒットポイント(下位) CMP $2006,X ; ヒットポイント(下位) BCS $521C STA $2006,X ; ヒットポイント(下位) LC2521C: TDC SEP #$20 ; A = 8bit PLY LC25220: LDX $12 STZ $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) STZ $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) STZ $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) STZ $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) LDX $10 LDA $7C1A,X LDX $12 STA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) LC25238: LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) STA $0500,Y INX INY INC $0E LDA $0E CMP #$46 ; #$46 = 70 BNE $5238 REP #$20 ; A = 16bit TYA CLC ADC #$000A ; #$000A = 10 TAY TDC SEP #$20 ; A = 8bit LDX $12 JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) STX $12 INC $10 LDA $10 CMP #$04 ; #$04 = 4 BNE $51FB LDX #$00FF ; #$00FF = 255 LC25265: LDA $2734,X STA $0640,X BNE $5270 TDC BRA $5273 LC25270: LDA $2834,X LC25273: STA $0740,X BNE $527B STA $0640,X LC2527B: DEX BPL $5265 REP #$20 ; A = 16bit CLC LDA $094A ADC $DB6E STA $094A LDA $094C ADC $DB70 STA $094C BCC $529E LDA #$FFFF ; #$FFFF = 65535 STA $094A STA $094C LC2529E: TDC SEP #$20 ; A = 8bit RTS ;-------------------------------- ; ;-------------------------------- LC252A2: LDA $7C09 EOR #$FF STA $7C09 JSR $01C3 ; Aレジスタのセットされたビットの数をXレジスタに格納する REP #$20 ; A = 16bit TXA CLC ADC $094E ; 倒したモンスターの数(下位) BCC $52B9 LDA #$FFFF ; #$FFFF = 65535 LC252B9: STA $094E ; 倒したモンスターの数(下位) TDC SEP #$20 ; A = 8bit TDC TAX STX $7C0B STX $7C0D STX $7C0F STX $3D LDY #$0200 ; #$0200 = 512 STY $3F LC252D1: LDX $3D LDA $7C09 JSR $01DB ; Aレジスタの値の(7 - Xレジスタ)ビットがセットされていない場合は0クリアする BEQ $5314 CLC LDA $7C0B ADC $2069,Y STA $7C0B LDA $7C0C ADC $206A,Y STA $7C0C LDA $7C0D ADC #$00 ; #$00 = 0 STA $7C0D CLC LDA $7C0E ADC $2067,Y STA $7C0E LDA $7C0F ADC $2068,Y STA $7C0F LDA $7C10 ADC #$00 ; #$00 = 0 STA $7C10 JSR $569A ; LC25314: LDY $3F REP #$20 ; A = 16bit TYA CLC ADC #$0080 ; #$0080 = 128 TAY TDC SEP #$20 ; A = 8bit STY $3F INC $3D LDA $3D CMP #$08 ; #$08 = 8 BNE $52D1 CLC LDA $0947 ; 所持金(下位) ADC $7C0B STA $0947 ; 所持金(下位) LDA $0948 ; 所持金(中位) ADC $7C0C STA $0948 ; 所持金(中位) LDA $0949 ; 所持金(上位) ADC $7C0D STA $0949 ; 所持金(上位) SEC LDA $0947 ; 所持金(下位) SBC #$7F ; #$7F = 127 LDA $0948 ; 所持金(中位) SBC #$96 ; #$96 = 150 LDA $0949 ; 所持金(上位) SBC #$98 ; #$98 = 152 BCC $5368 LDA #$7F ; #$7F = 127 STA $0947 ; 所持金(下位) LDA #$96 ; #$96 = 150 STA $0948 ; 所持金(中位) LDA #$98 ; #$98 = 152 STA $0949 ; 所持金(上位) LC25368: LDA $3EF1 ; MONPARTY[2]: アビリティポイント TAX STX $0E TDC TAX STX $10 STX $12 LC25374: LDA $12 TAY LDA $3EC2,Y BEQ $5391 INC $10 REP #$20 ; A = 16bit CLC LDA $203B,X ; アビリティポイント(下位) ADC $0E BCC $538B LDA #$FFFF ; #$FFFF = 65535 LC2538B: STA $203B,X ; アビリティポイント(下位) TDC SEP #$20 ; A = 8bit LC25391: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INC $12 LDA $12 CMP #$04 ; #$04 = 4 BNE $5374 LDA $7C0E ORA $7C0F ORA $7C10 BEQ $53AA JSR $57E6 ; LC253AA: LDA $7C09 BNE $53B8 STZ $7C0E STZ $7C0F STZ $7C10 LC253B8: TDC TAX STX $0E LC253BC: LDA $0E TAY LDA $3EC2,Y BEQ $5401 CLC LDA $2003,X ; 経験値(下位) ADC $7C0E STA $2003,X ; 経験値(下位) LDA $2004,X ; 経験値(中位) ADC $7C0F STA $2004,X ; 経験値(中位) LDA $2005,X ; 経験値(上位) ADC $7C10 STA $2005,X ; 経験値(上位) SEC LDA $2003,X ; 経験値(下位) SBC #$7F ; #$7F = 127 LDA $2004,X ; 経験値(中位) SBC #$96 ; #$96 = 150 LDA $2005,X ; 経験値(上位) SBC #$98 ; #$98 = 152 BCC $5401 LDA #$7F ; #$7F = 127 STA $2003,X ; 経験値(下位) LDA #$96 ; #$96 = 150 STA $2004,X ; 経験値(中位) LDA #$98 ; #$98 = 152 STA $2005,X ; 経験値(上位) LC25401: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INC $0E LDA $0E CMP #$04 ; #$04 = 4 BNE $53BC LDA #$FF ; #$FF = 255 STA $3C5F LDA #$01 ; #$01 = 1 JSR $5847 ; TDC TAX LDA $7C0B STA $3CBF LDA $7C0C STA $3CC0 LDA $7C0D STA $3CC1 LDA $7C0B ORA $7C0C ORA $7C0D BEQ $543B LDA #$2C ; #$2C = 44 STA $3C5F,X INX LC2543B: LDA $7C0E STA $3CC2 LDA $7C0F STA $3CC3 LDA $7C10 STA $3CC4 LDA $7C0E ORA $7C0F ORA $7C10 BEQ $545E LDA #$2D ; #$2D = 45 STA $3C5F,X INX LC2545E: LDA $3EF1 ; MONPARTY[2]: アビリティポイント BEQ $5478 STA $3CC5 STZ $3CC6 STZ $3CC7 JSR $5674 ; LDA $0E BNE $5478 LDA #$2E ; #$2E = 46 STA $3C5F,X LC25478: LDA $3C5F CMP #$FF ; #$FF = 255 BEQ $5489 LDA #$0A ; #$0A = 10 JSR $0069 ; LDA #$FF ; #$FF = 255 STA $3C60 LC25489: LDA $7C20 BEQ $54E0 TDC TAX STX $3D LC25492: LDX $3D LDA $7C21,X BEQ $54E0 CMP #$82 ; #$82 = 130 BCC $54E0 CMP #$A0 ; #$A0 = 160 BCS $54E0 STA $3CBF STZ $3CC0 STZ $3CC1 STZ $0E LSR ROR $0E LSR ROR $0E LSR ROR $0E TAY LDA $0E JSR $01BD ; 32で割る TAX LDA $0950,Y JSR $01DB ; Aレジスタの値の(7 - Xレジスタ)ビットがセットされていない場合は0クリアする BNE $54DC LDA $0950,Y JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $0950,Y LDA #$01 ; #$01 = 1 JSR $5847 ; LDA #$32 ; #$32 = 50 STA $3C5F LDA #$0A ; #$0A = 10 JSR $0069 ; LC254DC: INC $3D BRA $5492 LC254E0: TDC TAX STX $3D STX $3F LC254E6: LDA $3D TAY LDA $3EC2,Y BEQ $554C LDX $3F LDA $2002,X ; レベル CMP #$63 ; #$63 = 99 BCS $554C TAX STX $0E REP #$20 ; A = 16bit LDA $0E ASL STA $10 CLC ADC $0E TAX LDA $D15000,X ; FILEPOS_CHREXP STA $0E TDC SEP #$20 ; A = 8bit LDA $D15002,X ; FILEPOS_CHREXP[2] STA $12 LDX $3F SEC LDA $2003,X ; 経験値(下位) SBC $0E LDA $2004,X ; 経験値(中位) SBC $0F LDA $2005,X ; 経験値(上位) SBC $12 BCC $554C JSR $56EC ; LDX $3F INC $2002,X ; レベル LDX $3F LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) AND #$07 STA $3CBF STZ $3CC0 STZ $3CC1 LDA #$2F ; #$2F = 47 STA $3C5F LDA #$0A ; #$0A = 10 JSR $0069 ; BRA $54E6 LC2554C: LDX $3F JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) STX $3F INC $3D LDA $3D CMP #$04 ; #$04 = 4 BNE $54E6 TDC TAX STX $3D STX $3F LC25561: LDA #$FF ; #$FF = 255 STA $3C60 STA $3C61 LDA $3D TAY LDA $3EC2,Y BNE $5574 JMP $5661 LC25574: LDX $3F LDA $203A,X ; ジョブレベル STA $10 LDA $2001,X ; ジョブ番号 CMP #$15 ; #$15 = 21 BEQ $558E TAX ASL STA $0E LDA $10 CMP $D152EA,X ; FILEPOS_CHRJOBLVMAX BNE $5591 LC2558E: JMP $5661 LC25591: LDA $0E TAX LDA $D152C0,X ; FILEPOS_CHRJOBLVUP_ADDR STA $12 LDA $D152C1,X STA $13 LDA #$D1 ; #$D1 = 209 STA $14 LDA $10 ASL CLC ADC $10 TAY LDA [$12],Y STA $10 INY LDA [$12],Y STA $11 INY LDA [$12],Y STA $12 LDX $3F SEC LDA $203B,X ; アビリティポイント(下位) SBC $10 LDA $203C,X ; アビリティポイント(上位) SBC $11 BCS $55CB JMP $5661 LC255CB: SEC LDA $203B,X ; アビリティポイント(下位) SBC $10 STA $203B,X ; アビリティポイント(下位) LDA $203C,X ; アビリティポイント(上位) SBC $11 STA $203C,X ; アビリティポイント(上位) INC $203A,X ; ジョブレベル LDA $3D ASL TAX LDA $D0EED3,X ; 2295, 2315, 2335, 2355 STA $0E LDA $D0EED4,X STA $0F LDA $12 BPL $55F8 AND #$7F CLC ADC #$4E ; #$4E = 78 LC255F8: ASL TAX LDA $D0EC00,X TAY LDA $D0EC01,X TAX LDA ($0E),Y JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA ($0E),Y LDA $3D TAX INC $08F3,X LDX $3F LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) AND #$07 STA $3CBF STZ $3CC0 STZ $3CC1 LDA #$30 ; #$30 = 48 STA $3C5F LDA #$0A ; #$0A = 10 JSR $0069 ; LDA #$31 ; #$31 = 49 STA $3C5F LDA $12 STA $3CBF CMP #$2C ; #$2C = 44 BCC $564D CMP #$4C ; #$4C = 76 BCS $564D SEC SBC #$2C ; #$2C = 44 TAX LDA $D0EF06,X STA $3CC2 LDA #$33 ; #$33 = 51 STA $3C5F LC2564D: STZ $3CC0 STZ $3CC1 STZ $3CC3 STZ $3CC4 LDA #$0A ; #$0A = 10 JSR $0069 ; JMP $5574 LC25661: LDX $3F JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) STX $3F INC $3D LDA $3D CMP #$04 ; #$04 = 4 BEQ $5673 JMP $5561 LC25673: RTS ;-------------------------------- ; ;-------------------------------- LC25674: PHX TDC TAX TAY STX $0E LC2567A: LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) AND #$40 BNE $568D LDA $2001,X ; ジョブ番号 CMP #$15 ; #$15 = 21 BEQ $568D LDA $3EC2,Y BNE $5698 LC2568D: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INY CPY #$0004 ; #$0004 = 4 BNE $567A INC $0E LC25698: PLX RTS ;-------------------------------- ; ;-------------------------------- LC2569A: LDA $04F1 ; モンスターパーティの種類(上位) BEQ $56A7 LDA $04F0 ; モンスターパーティの種類(下位) CMP #$BF ; #$BF = 191 BNE $56A7 RTS LC256A7: TDC TAX LDA #$FF ; #$FF = 255 JSR $007C ; X〜Aの範囲の乱数取得 STA $0E LDA $3D ASL TAX REP #$20 ; A = 16bit LDA $4020,X ; モンスター番号 JSR $01B7 ; 4倍する TAX TDC SEP #$20 ; A = 8bit LDY $3D LDA $D05003,X BEQ $56D4 CMP #$80 ; #$80 = 128 BEQ $56D4 CMP #$FF ; #$FF = 255 BEQ $56D4 STA $7C66,Y RTS LC256D4: LDA $0E CMP #$10 ; #$10 = 16 BCS $56EB LDA $D05002,X BEQ $56EB CMP #$80 ; #$80 = 128 BEQ $56EB CMP #$FF ; #$FF = 255 BEQ $56EB STA $7C66,Y LC256EB: RTS ;-------------------------------- ; ;-------------------------------- LC256EC: LDX $10 LDA $D15129,X ; FILEPOS_CHRHP STA $0E STA $2A LDA $D1512A,X STA $0F STA $2B LDX $3F LDA $2026,X ; 体力(装備補正なし) TAX STX $2C JSR $00D2 ; 乗算(16bit) (($2A)×($2C) = ($2E)) LDX #$0005 ; #$0005 = 5 LC2570C: LSR $31 ROR $30 ROR $2F ROR $2E DEX BNE $570C LDX $3F REP #$20 ; A = 16bit CLC LDA $0E ADC $2E CMP #$270F ; #$270F = 9999 BCC $5728 LDA #$270F ; #$270F = 9999 LC25728: STA $08 LDA #$270F ; #$270F = 9999 STA $0A TDC SEP #$20 ; A = 8bit TDC TAY LDA $2016,X ; 戦闘コマンド (1番目) CMP #$8E ; #$8E = 142 BCS $574A CMP #$8B ; #$8B = 139 BCC $574A PHX LDX $10 PHX JSR $57C7 ; PLX STX $10 PLX LC2574A: INX INY CPY #$04 ; #$04 = 4 BRK $D0 SBC $A6,S AND $9D08A5,X PHP JSR $09A5 ; STA $2009,X ; 最大ヒットポイント(上位) LDX $10 LDA $D151EF,X ; FILEPOS_CHRMP STA $0E STA $2A LDA $D151F0,X STA $0F STA $2B LDX $3F LDA $2027,X ; 魔力(装備補正なし) TAX STX $2C JSR $00D2 ; 乗算(16bit) (($2A)×($2C) = ($2E)) LDX #$0005 ; #$0005 = 5 LC2577D: LSR $31 ROR $30 ROR $2F ROR $2E DEX BNE $577D LDX $3F REP #$20 ; A = 16bit CLC LDA $0E ADC $2E CMP #$03E7 ; #$03E7 = 999 BCC $5799 LDA #$03E7 ; #$03E7 = 999 LC25799: STA $08 LDA #$03E7 ; #$03E7 = 999 STA $0A TDC SEP #$20 ; A = 8bit TDC TAY LDA $2016,X ; 戦闘コマンド (1番目) CMP #$90 ; #$90 = 144 BCS $57B3 CMP #$8E ; #$8E = 142 BCC $57B3 JSR $57C7 ; LC257B3: INX INY CPY #$04 ; #$04 = 4 BRK $D0 XBA LDX $3F LDA $08 STA $200C,X ; 最大マジックポイント(下位) LDA $09 STA $200D,X ; 最大マジックポイント(上位) RTS ;-------------------------------- ; ;-------------------------------- LC257C7: PHX PHY SEC SBC #$8B ; #$8B = 139 TAX LDA $C257E1,X ; 10, 20, 30, 10, 30 TAX STX $2A LDX $08 STX $2C JSR $00D2 ; 乗算(16bit) (($2A)×($2C) = ($2E)) JSR $0491 ; PLY PLX RTS DB $0A DB $14 DB $1E DB $0A DB $1E ;-------------------------------- ; ;-------------------------------- LC257E6: LDX $10 PHX LDX #$000F ; #$000F = 15 LC257EC: STZ $0E,X DEX BPL $57EC PLX STX $12 LDX $7C0E STX $0E LDA $7C10 STA $10 REP #$20 ; A = 16bit CLC LDX #$0020 ; #$0020 = 32 LC25804: ROL $0E ROL $10 ROL $1A ROL $1C SEC LDA $1A SBC $12 STA $1A LDA $1C SBC $14 STA $1C BCS $5828 LDA $1A ADC $12 STA $1A LDA $1C ADC $14 STA $1C CLC LC25828: ROL $16 ROL $18 DEX BNE $5804 TDC SEP #$20 ; A = 8bit LDA $16 ORA $17 ORA $18 BNE $583C INC $16 LC2583C: LDX $16 STX $7C0E LDA $18 STA $7C10 RTS ;-------------------------------- ; ;-------------------------------- LC25847: STA $384F STZ $384C LDA #$FC ; #$FC = 252 STA $384D LDA #$05 ; #$05 = 5 STA $384E STZ $3850 LDA #$20 ; #$20 = 32 STA $3BCC STZ $3BCD STZ $3BCE STZ $3BCF STZ $3BD0 STZ $3BD1 STZ $3BD2 RTS LC25872: TDC TAX LC25874: LDA $41B0,X STA $41BE,X INX CPX #$000E ; #$000E = 14 BNE $5874 LDA $7CD8 BNE $58F1 INC $7C53 LDA $7C53 CMP #$04 ; #$04 = 4 BNE $5897 STZ $7C53 INC $7C54 BRA $589A LC25897: STZ $7C54 LC2589A: LDA $474E BNE $58A5 JSR $6265 ; JSR $5A41 ; LC258A5: JSR $6257 ; LDA $474E BEQ $58B4 LDA $4755 CMP #$04 ; #$04 = 4 BCC $58B7 LC258B4: JSR $176C ; LC258B7: JSR $5921 ; LC258BA: LDA #$03 ; #$03 = 3 JSR $0069 ; JSR $5AB4 ; LDA $7BDE BNE $58F1 LDA $7C52 BNE $58BA JSR $5B6C ; LDA $474E BNE $58DC JSR $2432 ; BNE $58EB JSR $1DC4 ; LC258DC: STZ $4754 JSR $200B ; JSR $20B2 ; 全タイマーのタイマー関連2に0をセットする, (以下調査中) JSR $2177 ; JSR $35E3 ; LC258EB: JSR $02A2 ; 0〜99の範囲の乱数取得 JMP $5872 LC258F1: LDA #$03 ; #$03 = 3 JSR $0069 ; LDA $41CC CMP #$FF ; #$FF = 255 BEQ $590F STA $70 LDA $7B7D BEQ $590A JSR $9F3A ; JSR $9A6F ; LC2590A: LDA #$01 ; #$01 = 1 JSR $0069 ; LC2590F: JSR $5070 ; TDC TAX LC25914: LDA $7C66,X STA $013B,X INX CPX #$0008 ; #$0008 = 8 BNE $5914 RTS ;-------------------------------- ; ;-------------------------------- LC25921: TDC TAX TAY STX $10 REP #$20 ; A = 16bit LC25928: STZ $0E LC2592A: LDA $2006,X ; ヒットポイント(下位) STA $382C,Y INX INX INY INY INC $0E LDA $0E CMP #$0004 ; #$0004 = 4 BNE $592A CLC TXA ADC #$0078 ; #$0078 = 120 TAX CPY #$0020 ; #$0020 = 32 BNE $5928 TDC SEP #$20 ; A = 8bit LDA $3EEF ; MONPARTY[0]: 視覚的効果 BPL $5953 JMP $59E7 LC25953: TDC TAX TAY STZ $0E LC25958: PHX PHY LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$02 BNE $5988 LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$78 BNE $5988 LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$04 BNE $5988 LDA $0E TAX JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 LDA $3CFB,Y ; タイマー制御フラグ?(行動可能時間待ち(ATBゲージ)) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) AND #$40 BNE $5988 LDA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) STA $3ED0,X LC25988: PLY PLX LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) STA $7B7E,Y LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) STA $10 AND #$08 BEQ $59AC LDA $2001,X ; ジョブ番号 CMP #$06 ; #$06 = 6 BNE $59AC LDA $10 AND #$F7 STA $10 LC259AC: LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) ORA $2073,X ; 一時的状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) STA $7B81,Y AND #$80 BEQ $59C8 STA $7B81,Y TDC STA $7B7E,Y STA $7B7F,Y STA $7B80,Y BRA $59D6 LC259C8: LDA $10 STA $7B7F,Y LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) ORA $2072,X ; 一時的状態変化3 (補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) STA $7B80,Y LC259D6: INC $0E INY INY INY INY JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) CPY #$0010 ; #$0010 = 16 BEQ $59E7 JMP $5958 LC259E7: LDY #$0004 ; #$0004 = 4 STY $0E TDC TAY LC259EE: PHY LDY $0E LDA $3EC2,Y BNE $5A0D PLY LDA $7B9E,Y AND #$30 ORA #$80 STA $7B9E,Y TDC STA $7B9F,Y STA $7BA0,Y STA $7BA1,Y BRA $5A32 LC25A0D: PLY LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) STA $7B9E,Y LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) STA $7B9F,Y LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) ORA $2072,X ; 一時的状態変化3 (補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) STA $7BA0,Y LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) ORA $2073,X ; 一時的状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) STA $7BA1,Y LC25A32: INC $0E INY INY INY INY JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) CPY #$0020 ; #$0020 = 32 BNE $59EE RTS ;-------------------------------- ; ;-------------------------------- LC25A41: TDC TAX TAY STX $4038 STX $403A STX $403C STX $403E STX $4040 STX $4042 STX $4044 STX $4046 STZ $4048 STX $10 DEY STY $0E DEY DEY DEY LC25A67: LDX $10 LDA $3EC6,X BEQ $5AAB LDA $4048 JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $4048 TXA CLC ADC #$04 ; #$04 = 4 JSR $01EC ; ($32: 自分アドレスへのインデックス) = Aレジスタ×128 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$30 BNE $5AAB LDA $10 ASL TAX LDA $4008,X CMP $0E BEQ $5AA2 INY INY INY INY STA $4038,Y STA $0E LDA $4021 STA $4039,Y LC25AA2: CLC LDA $403A,Y ADC #$01 ; #$01 = 1 STA $403A,Y LC25AAB: INC $10 LDA $10 CMP #$08 ; #$08 = 8 BNE $5A67 RTS ;-------------------------------- ; ;-------------------------------- LC25AB4: TDC TAX TAY LDA $7BDE BEQ $5ABD RTS LC25ABD: LDA $7C94 CMP #$02 ; #$02 = 2 BNE $5AD2 LDA $7C95 ORA $7C96 BNE $5AD2 LDA #$20 ; #$20 = 32 STA $7BDE RTS LC25AD2: LDA $3EC2,Y BEQ $5AE1 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$02 BEQ $5AF0 LC25AE1: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INY CPY #$0004 ; #$0004 = 4 BNE $5AD2 LDA #$40 ; #$40 = 64 STA $7BDE RTS LC25AF0: LDA $3EC2,Y BEQ $5AFC LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$01 BEQ $5B0A LC25AFC: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INY CPY #$04 ; #$04 = 4 BRK $D0 XBA LDA $3EF0 ; MONPARTY[1]: 逃走のしやすさ (80: 逃走不能) BPL $5B62 LC25B0A: LDY #$0004 ; #$0004 = 4 LDX #$0200 ; #$0200 = 512 LC25B10: LDA $3EC2,Y BEQ $5B1F LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$02 BEQ $5B2E LC25B1F: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INY CPY #$000C ; #$000C = 12 BNE $5B10 LDA #$80 ; #$80 = 128 STA $7BDE RTS LC25B2E: LDA $7C4E BEQ $5B68 LDA $7BE8 BMI $5B62 BEQ $5B68 LDA $3EF0 ; MONPARTY[1]: 逃走のしやすさ (80: 逃走不能) BPL $5B50 JSR $0218 ; メモリ領域を初期化する ($3B3B〜$3BCC = 0, $34CC〜$384C = $FF, $3C00〜$3C5F = $FF, $7B3A〜$7B49 = 0, $3C90〜$3CBF = 0) TDC JSR $5847 ; LDA #$20 ; #$20 = 32 STA $3C5F LDA #$0A ; #$0A = 10 JMP $0069 ; LC25B50: INC $7C5F LDA $7C5F CMP #$14 ; #$14 = 20 BNE $5B6B JSR $02A2 ; 0〜99の範囲の乱数取得 CMP $3EF0 ; MONPARTY[1]: 逃走のしやすさ (80: 逃走不能) BCS $5B68 LC25B62: LDA #$01 ; #$01 = 1 STA $7BDE RTS LC25B68: STZ $7C5F LC25B6B: RTS ;-------------------------------- ; ;-------------------------------- LC25B6C: LDA #$0B ; #$0B = 11 JSR $0069 ; TDC TAX LDY #$0200 ; #$0200 = 512 LC25B76: LDA $2000,Y ; 隊列(bit7)・キャラクタ番号(下位4ビット) AND #$7F STA $2000,Y ; 隊列(bit7)・キャラクタ番号(下位4ビット) LDA $70 JSR $01DB ; Aレジスタの値の(7 - Xレジスタ)ビットがセットされていない場合は0クリアする BNE $5B8D LDA $2000,Y ; 隊列(bit7)・キャラクタ番号(下位4ビット) ORA #$80 STA $2000,Y ; 隊列(bit7)・キャラクタ番号(下位4ビット) LC25B8D: REP #$20 ; A = 16bit TYA CLC ADC #$0080 ; #$0080 = 128 TAY TDC SEP #$20 ; A = 8bit INX CPX #$0008 ; #$0008 = 8 BNE $5B76 RTS ;-------------------------------- ; コマンドタイプ No.038(26): だみい02 / コマンドタイプ No.039(27): うたう / コマンドタイプ No.043(2B): まほうけん, しろまほう, くろまほう, じくう, しょうかん, しろくろま, れんぞくま, あおまほう, ""(4E), ""(4F), パトリオ, ドキドキ, ひしょう, コマンド(53〜56) ;-------------------------------- LC25B9F: LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCC $5BA8 JMP $5C50 LC25BA8: STZ $20 STZ $21 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2058,X ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) STA $65 LDA $2059,X ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) STA $66 LDA $205A,X ; 使用するアイテムの番号? STA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 LDA $2056,X ; (フラグ系?) AND #$08 BEQ $5BEC LDA $66 BEQ $5BEC LDA $2059,X ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) CMP $205E,X ; (「ものまね」で使用) BNE $5BEC LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 CMP #$19 ; #$19 = 25 BEQ $5BE9 CMP #$21 ; #$21 = 33 BEQ $5BE9 CMP #$54 ; #$54 = 84 BEQ $5BE9 CMP #$1D ; #$1D = 29 BNE $5BEC INC $7C98 BRA $5BEC LC25BE9: INC $7C99 LC25BEC: STZ $2723 ; コマンド関連汎用領域?[3] JSR $5CE1 ; LDA $20 BEQ $5C0B LDA $20 STA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 STZ $2723 ; コマンド関連汎用領域?[3] LDA $23 STA $65 LDA $22 STA $66 INC $21 JSR $5CE1 ; LC25C0B: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2056,X ; (フラグ系?) AND #$08 BEQ $5C47 STZ $20 STZ $21 LDA $205D,X ; (「ものまね」で使用) STA $65 LDA $205E,X ; (「ものまね」で使用) STA $66 LDA $205F,X ; (「ものまね」で使用) STA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 STZ $2723 ; コマンド関連汎用領域?[3] JSR $5CE1 ; LDA $20 BEQ $5C47 LDA $20 STA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 STZ $2723 ; コマンド関連汎用領域?[3] LDA $23 STA $65 LDA $22 STA $66 INC $21 JSR $5CE1 ; LC25C47: STZ $7C99 STZ $7C98 JMP $5CE0 LC25C50: SEC LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) SBC #$04 ; #$04 = 4 ASL TAX LDA $D0EE95,X ; 0, 100, 200, 300, 400, 500, 600, 700 (100の倍数の数列) STA $0E LDA $D0EE96,X STA $0F TDC TAY LDX $0E LC25C67: LDA $4367,X STA $384C,Y INX INY CPY #$0064 ; #$0064 = 100 BNE $5C67 INC $7C03 STZ $1E SEC LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) SBC #$04 ; #$04 = 4 JSR $01B5 ; 16倍する TAX STX $0E REP #$20 ; A = 16bit CLC ADC #$41DE ; #$41DE = 16862 TAX STX $3D LDA $0E ASL CLC ADC #$425E ; #$425E = 16990 TAX STX $3F TDC SEP #$20 ; A = 8bit LC25C9A: LDA $1E TAY LDA ($3D),Y CMP #$FF ; #$FF = 255 BEQ $5CE0 STA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 CMP #$E9 ; #$E9 = 233 BNE $5CAD INC $7BFB LC25CAD: LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 CMP #$A8 ; #$A8 = 168 BNE $5CB7 INC $7C9C LC25CB7: LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 CMP #$83 ; #$83 = 131 BNE $5CC1 INC $7C9D LC25CC1: STZ $20 STZ $21 LDA $1E ASL TAY LDA ($3F),Y STA $66 INY LDA ($3F),Y STA $65 STZ $2723 ; コマンド関連汎用領域?[3] JSR $5CE1 ; INC $1E LDA $1E CMP #$10 ; #$10 = 16 BNE $5C9A LC25CE0: RTS ;-------------------------------- ; ;-------------------------------- LC25CE1: LDA $2723 ; コマンド関連汎用領域?[3] BNE $5D0A LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 CMP #$F1 ; #$F1 = 241 BNE $5CEF LDA #$78 ; #$78 = 120 LC25CEF: REP #$20 ; A = 16bit JSR $01B6 ; 8倍する TAX TDC SEP #$20 ; A = 8bit TDC TAY LC25CFA: LDA $D10B80,X ; FILEPOS_MAGDATA STA $262A,Y INX INY CPY #$0008 ; #$0008 = 8 BNE $5CFA BRA $5D26 LC25D0A: LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 REP #$20 ; A = 16bit JSR $01B6 ; 8倍する TAX TDC SEP #$20 ; A = 8bit TDC TAY LDA $D16AB1,X ; FILEPOS_SPDATA STA $262A,Y INX INY CPY #$0008 ; #$0008 = 8 BNE $5D2E LC25D26: LDA $2723 ; コマンド関連汎用領域?[3] BNE $5D39 LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 LC25D2E: CMP #$48 ; #$48 = 72 BCC $5D39 CMP #$57 ; #$57 = 87 BCS $5D39 JSR $60A3 ; LC25D39: JSR $9923 ; Aレジスタと($0C) = ($79FA)×12 ($79FAの範囲は0〜23を想定?) TDC TAX LC25D3E: LDA $262A,X STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY CPX #$0005 ; #$0005 = 5 BNE $5D3E INY INY INY INY LC25D4F: LDA $262A,X STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY CPX #$0008 ; #$0008 = 8 BNE $5D4F LDA $262C AND #$07 BEQ $5D67 JSR $5F75 ; RTS LC25D67: JSR $02C2 ; BNE $5DAB LDA $262E BPL $5D7C LC25D71: LDA $79FA TAX LDA #$01 ; #$01 = 1 STA $7BEB,X BRA $5DC6 LC25D7C: LDA $7C99 BNE $5D94 LDA $7C98 BEQ $5D9C JSR $614E ; LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) BMI $5D9C AND #$40 BNE $5D71 BRA $5D9C LC25D94: JSR $614E ; LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) BMI $5D71 LC25D9C: JSR $4AFE ; LDA $7C29 BEQ $5DC6 LC25DA4: LDA #$F1 ; #$F1 = 241 STA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 BRA $5DC6 LC25DAB: LDA $262E BPL $5DBB LDA $79FA TAX LDA #$01 ; #$01 = 1 STA $7BEB,X BRA $5DC6 LC25DBB: JSR $02CF ; LDA $7C29 BNE $5DA4 JSR $02C2 ; LC25DC6: JSR $02A9 ; LDA $2723 ; コマンド関連汎用領域?[3] BNE $5DFF LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 CMP #$80 ; #$80 = 128 BEQ $5DD9 CMP #$DE ; #$DE = 222 BNE $5DF5 LC25DD9: JSR $98FA ; STZ $384C,X LDA #$FC ; #$FC = 252 STA $384D,X LDA #$01 ; #$01 = 1 STA $384E,X LDA #$04 ; #$04 = 4 STA $384F,X TDC STA $3850,X JMP $5EBE LC25DF5: LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 CMP #$F1 ; #$F1 = 241 BNE $5DFF JMP $5EBE LC25DFF: LDA $21 BNE $5E2F LDA $2723 ; コマンド関連汎用領域?[3] BNE $5E4F LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 CMP #$82 ; #$82 = 130 BCC $5E4F STZ $0E SEC SBC #$80 ; #$80 = 128 LSR ROR $0E LSR ROR $0E LSR ROR $0E TAX LDA $D12981,X PHA LDA $0E JSR $01BD ; 32で割る TAX PLA JSR $01DB ; Aレジスタの値の(7 - Xレジスタ)ビットがセットされていない場合は0クリアする BEQ $5E4F LC25E2F: LDA $2723 ; コマンド関連汎用領域?[3] BNE $5E4F JSR $98FA ; STZ $384C,X STZ $3850,X LDA #$FC ; #$FC = 252 STA $384D,X LDA #$07 ; #$07 = 7 STA $384E,X LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 STA $384F,X BRA $5EBE LC25E4F: LDA #$00 ; #$00 = 0 STA $0E LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 STA $2621 ; 汎用領域?[1] LDA $2723 ; コマンド関連汎用領域?[3] BNE $5E90 LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 CMP #$81 ; #$81 = 129 BNE $5E90 LDA #$03 ; #$03 = 3 STA $2620 ; 汎用領域?[0] LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $207F,X ; とくいわざの名前 STA $2621 ; 汎用領域?[1] JSR $992F ; JSR $98FA ; STZ $384C,X LDA #$FC ; #$FC = 252 STA $384D,X LDA #$01 ; #$01 = 1 STA $384E,X LDA #$04 ; #$04 = 4 STA $384F,X TDC STA $3850,X BRA $5EBE LC25E90: LDA $2723 ; コマンド関連汎用領域?[3] BEQ $5E9B LDA #$02 ; #$02 = 2 STA $0E LDA #$02 ; #$02 = 2 LC25E9B: STA $2620 ; 汎用領域?[0] LDA $21 BNE $5EA5 JSR $992F ; LC25EA5: JSR $98FA ; STZ $384C,X STZ $3850,X LDA #$FC ; #$FC = 252 STA $384D,X LDA $0E STA $384E,X LDA $2621 ; 汎用領域?[1] STA $384F,X LC25EBE: LDA $79FA TAX LDA $262E AND #$7F STA $7B2D,X LDA $26A0 STA $7B1C,X BEQ $5ED7 INC $7B1C,X LDA #$80 ; #$80 = 128 LC25ED7: STA $7ACC,X LDA $79FA ASL TAX LDA $2720 ; コマンド関連汎用領域?[0] STA $7ADC,X STA $7AFC,X LDA $2721 ; コマンド関連汎用領域?[1] STA $7ADD,X STA $7AFD,X INC $79FA LDA $2723 ; コマンド関連汎用領域?[3] BNE $5F5A LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 CMP #$F1 ; #$F1 = 241 BEQ $5F25 LDX $32 ; 一時変数 自分アドレスへのインデックス CMP #$82 ; #$82 = 130 BCS $5F1B CMP #$80 ; #$80 = 128 BCS $5F5A LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$04 BNE $5F45 LDA $7BE6 ; フラグ? (40: ミュート) AND #$40 BNE $5F45 LC25F1B: LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$20 BEQ $5F5A LC25F25: LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 STZ $0E LSR ROR $0E LSR ROR $0E LSR ROR $0E TAX LDA $0E JSR $01BD ; 32で割る TAY PHY LDA $D0EF58,X PLX JSR $01DB ; Aレジスタの値の(7 - Xレジスタ)ビットがセットされていない場合は0クリアする BNE $5F5A LC25F45: LDA $3CEF TAX LDA #$1D ; #$1D = 29 STA $3C5F,X LDA $79FA DEC TAX LDA #$7E ; #$7E = 126 STA $7B2D,X BRA $5F71 LC25F5A: JSR $98E3 ; LDA $3CEF TAY REP #$20 ; A = 16bit LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 TAX TDC SEP #$20 ; A = 8bit LDA $D13840,X STA $3C5F,Y LC25F71: JSR $994C ; RTS ;-------------------------------- ; ;-------------------------------- LC25F75: STA $41 LDA $2723 ; コマンド関連汎用領域?[3] BEQ $5F85 LDA #$02 ; #$02 = 2 STA $0E STA $2620 ; 汎用領域?[0] BRA $5F8C LC25F85: LDA #$00 ; #$00 = 0 STA $0E STA $2620 ; 汎用領域?[0] LC25F8C: LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 STA $2621 ; 汎用領域?[1] JSR $992F ; JSR $98FA ; STZ $384C,X STZ $3850,X LDA #$FC ; #$FC = 252 STA $384D,X LDA $0E STA $384E,X LDA $2621 ; 汎用領域?[1] STA $384F,X LDA $41 STA $0E LC25FB2: TDC TAX LC25FB4: LDA $262A,X STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY CPX #$0005 ; #$0005 = 5 BNE $5FB4 INY INY INY INY LC25FC5: LDA $262A,X STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY CPX #$0008 ; #$0008 = 8 BNE $5FC5 DEC $0E LDA $0E BNE $5FB2 STZ $1A LDA $79FF ; 実行する魔法・技・道具・武器のデータ 3バイト目 AND #$7F TAX STX $0E LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2039,X ; 装備特殊効果フラグ(01: HP1/2で捕獲, 02: 不死特性付加, 04: 剣の舞確率上昇, 08: 消費MP1/2, 10: 盗み成功率2倍, 20: 格闘効果付加, 40: エルフのマント, 80: イージスのたて) AND #$08 BEQ $5FF1 LSR $0E BCC $5FF1 INC $0E LC25FF1: REP #$20 ; A = 16bit SEC LDA $200A,X ; マジックポイント(下位) SBC $0E BCC $6003 STA $200A,X ; マジックポイント(下位) TDC SEP #$20 ; A = 8bit BRA $6008 LC26003: TDC SEP #$20 ; A = 8bit INC $1A LC26008: LDA $65 BEQ $601C TDC TAX LDA #$07 ; #$07 = 7 JSR $007C ; X〜Aの範囲の乱数取得 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $65 BRA $602A LC2601C: TDC TAX LDA #$03 ; #$03 = 3 JSR $007C ; X〜Aの範囲の乱数取得 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $66 LC2602A: JSR $4AFE ; LDA $7C29 BEQ $6037 LDA #$7E ; #$7E = 126 STA $262E LC26037: JSR $02A9 ; LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$04 BNE $6057 LDA $7BE6 ; フラグ? (40: ミュート) AND #$40 BNE $6057 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$20 BEQ $605C LC26057: LDA #$7E ; #$7E = 126 STA $262E LC2605C: LDA $79FA TAX LDA $262E AND #$7F STA $7B2D,X LDA $1A BEQ $6071 LDA #$7E ; #$7E = 126 STA $7B2D,X LC26071: STZ $7B1C,X STZ $7ACC,X LDA $79FA ASL TAX LDA $2720 ; コマンド関連汎用領域?[0] STA $7ADC,X STA $7AFC,X LDA $2721 ; コマンド関連汎用領域?[1] STA $7ADD,X STA $7AFD,X INC $79FA LDA $2723 ; コマンド関連汎用領域?[3] BEQ $6099 JSR $98E3 ; LC26099: DEC $41 LDA $41 BMI $60A2 JMP $6008 LC260A2: RTS ;-------------------------------- ; ;-------------------------------- LC260A3: CLC LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 ADC #$17 ; #$17 = 23 STA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 CMP #$6B ; #$6B = 107 BEQ $60CD CMP #$6A ; #$6A = 106 BEQ $60E3 CMP #$5F ; #$5F = 95 BEQ $60BB JMP $6131 LC260BB: JSR $02A2 ; 0〜99の範囲の乱数取得 CMP #$08 ; #$08 = 8 BCS $6131 LDA #$6E ; #$6E = 110 STA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 LDA #$FF ; #$FF = 255 STA $65 BRA $6131 LC260CD: LDA $65 STA $23 LDA $66 STA $22 LDA #$FF ; #$FF = 255 STA $65 STZ $66 LDA #$70 ; #$70 = 112 STA $20 LDX $32 ; 一時変数 自分アドレスへのインデックス BRA $6131 LC260E3: TDC TAY TAX LDA $3EC6,Y BEQ $60F2 LDA $2265,X AND #$20 BNE $611E LC260F2: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INY CPY #$08 ; #$08 = 8 BRK $D0 XBA CLC LDA $7BE5 ; 現在行動中のキャラクタのレベル ADC #$50 ; #$50 = 80 SEC SBC $2202 BCS $6109 LDA #$01 ; #$01 = 1 LC26109: CMP #$63 ; #$63 = 99 BCC $610F LDA #$63 ; #$63 = 99 LC2610F: STA $0E JSR $02A2 ; 0〜99の範囲の乱数取得 CMP $0E BCS $611E LDA #$FF ; #$FF = 255 STA $65 BRA $6131 LC2611E: LDA #$6F ; #$6F = 111 STA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 TDC TAX LDA #$07 ; #$07 = 7 JSR $007C ; X〜Aの範囲の乱数取得 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $65 LC26131: LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 REP #$20 ; A = 16bit JSR $01B6 ; 8倍する TAX TDC SEP #$20 ; A = 8bit TDC TAY LC2613F: LDA $D10B80,X ; FILEPOS_MAGDATA STA $262A,Y INX INY CPY #$0008 ; #$0008 = 8 BNE $613F RTS ;-------------------------------- ; ;-------------------------------- LC2614E: TDC TAX LDA $66 LC26152: ASL BCS $6158 INX BRA $6152 LC26158: TXA REP #$20 ; A = 16bit JSR $01B2 ; 128倍する TAX TDC SEP #$20 ; A = 8bit RTS ;-------------------------------- ; AレジスタをATB時間とみなし、状態による修正を行う(ヘイストであれば1/2(下限: 1), スロウであれば2倍(上限: 255), 最終結果が0であれば1にする) ;-------------------------------- LC26163: PHA LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) ORA $2072,X ; 一時的状態変化3 (補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$08 BEQ $6174 PLA LSR BNE $6173 INC LC26173: PHA LC26174: LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) ORA $2072,X ; 一時的状態変化3 (補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$04 BEQ $6185 PLA ASL BCC $6184 LDA #$FF ; #$FF = 255 LC26184: PHA LC26185: PLA BNE $6189 INC LC26189: RTS ;-------------------------------- ; ;-------------------------------- LC2618A: PHA PHA STZ $70 TAX LDA $3EC2,X BNE $6195 RTS LC26195: STZ $3EC2,X PLA JSR $2482 ; TDC STA $3CF1,Y ; タイマー制御フラグ?(ストップ効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF2,Y ; タイマー制御フラグ?(毒ダメージ) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF3,Y ; タイマー制御フラグ?(リフレク効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF4,Y ; タイマー制御フラグ?(しのせんこく) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF5,Y ; タイマー制御フラグ?(沈黙効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF6,Y ; タイマー制御フラグ?(スリップ効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF7,Y ; タイマー制御フラグ?(徐々に老化による能力値低下) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF8,Y ; タイマー制御フラグ?(リジェネ回復) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF9,Y ; タイマー制御フラグ?(歌による能力値上昇) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CFA,Y ; タイマー制御フラグ?(麻痺効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) LDX $32 ; 一時変数 自分アドレスへのインデックス STZ $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) STZ $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) STZ $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) STZ $201F,X ; フラグ (04: 防御無視?, 08: 乱れ打ちで半減?, 10: ためる?, 20: 不明(攻撃力1/2), 40: 投げる?, 80: 必ず命中?) LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$FB STA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$80 BNE $61DE STZ $2006,X ; ヒットポイント(下位) STZ $2007,X ; ヒットポイント(上位) LC261DE: PLA PHA CMP #$04 ; #$04 = 4 BCS $6227 TAY LDA $7C3A,Y PHA TDC STA $7C3A,Y STA $7C3E,Y PLA REP #$20 ; A = 16bit JSR $01B2 ; 128倍する TAY TDC SEP #$20 ; A = 8bit LDA $201D,Y ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$DF STA $201D,Y ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$80 BEQ $6213 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$F3 STA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) BRA $621D LC26213: LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$F3 ORA #$80 STA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) LC2621D: LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$80 STA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) PLA RTS LC26227: LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$30 ORA #$80 STA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) STZ $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) PLA PHA SEC SBC #$04 ; #$04 = 4 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $70 PLA STA $0E TDC TAX LC26245: LDA $7C3A,X CMP $0E BNE $6250 STZ $7C3A,X RTS LC26250: INX CPX #$0004 ; #$0004 = 4 BNE $6245 RTS ;-------------------------------- ; ;-------------------------------- LC26257: STZ $2720 ; コマンド関連汎用領域?[0] LDA #$04 ; #$04 = 4 STA $2721 ; コマンド関連汎用領域?[1] STZ $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 JMP $6272 ;-------------------------------- ; ;-------------------------------- LC26265: LDA #$04 ; #$04 = 4 STA $2720 ; コマンド関連汎用領域?[0] LDA #$0C ; #$0C = 12 STA $2721 ; コマンド関連汎用領域?[1] STA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 LC26272: LDA $2720 ; コマンド関連汎用領域?[0] TAX STX $0E JSR $01EC ; ($32: 自分アドレスへのインデックス) = Aレジスタ×128 LC2627B: LDA $7C51 ; クイックで行動できるターン数? BEQ $62B1 LDA $0E CMP $7CB6 BNE $62B1 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$C2 BNE $62AB LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$78 BNE $62AB LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$10 BNE $62AB LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$84 BNE $62AB LDA $2006,X ; ヒットポイント(下位) ORA $2007,X ; ヒットポイント(上位) BNE $62B1 LC262AB: STZ $7C51 ; クイックで行動できるターン数? JSR $24E4 ; LC262B1: LDY $0E LDA $3EC2,Y BNE $62BB JMP $63F8 LC262BB: LDA $2722 ; コマンド関連汎用領域?[2]: 魔法・特殊・アイテムの番号 BNE $6301 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$C2 BNE $62E2 LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$78 BNE $62E2 LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$10 BNE $62E2 LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$80 BEQ $6301 LC262E2: LDY $0E LDA $7C3A,Y PHA TDC STA $7C3A,Y STA $7C3E,Y PLA REP #$20 ; A = 16bit JSR $01B2 ; 128倍する TAY TDC SEP #$20 ; A = 8bit LDA $201D,Y ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$DF STA $201D,Y ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) LC26301: LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) ORA $2073,X ; 一時的状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$08 BEQ $6337 LDA $7C54 BEQ $6337 LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$10 BNE $6337 REP #$20 ; A = 16bit LDA $2006,X ; ヒットポイント(下位) BEQ $6322 DEC STA $2006,X ; ヒットポイント(下位) LC26322: TDC SEP #$20 ; A = 8bit LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$01 BEQ $6337 LDA $2006,X ; ヒットポイント(下位) ORA $2007,X ; ヒットポイント(上位) BNE $6337 INC $2006,X ; ヒットポイント(下位) LC26337: LDA $04F0 ; モンスターパーティの種類(下位) CMP #$F7 ; #$F7 = 247 BNE $6345 LDA $04F1 ; モンスターパーティの種類(上位) CMP #$01 ; #$01 = 1 BEQ $6350 LC26345: LDA $2006,X ; ヒットポイント(下位) ORA $2007,X ; ヒットポイント(上位) BNE $6350 JMP $63D1 LC26350: REP #$20 ; A = 16bit LDA $2008,X ; 最大ヒットポイント(下位) JSR $01BF ; 8で割る CMP $2006,X ; ヒットポイント(下位) BCC $636A TDC SEP #$20 ; A = 8bit LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) ORA #$02 STA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) BRA $6383 LC2636A: LDA $2006,X ; ヒットポイント(下位) CMP $2008,X ; 最大ヒットポイント(下位) BCC $6378 LDA $2008,X ; 最大ヒットポイント(下位) STA $2006,X ; ヒットポイント(下位) LC26378: TDC SEP #$20 ; A = 8bit LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$FD STA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) LC26383: LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$80 BNE $63CA LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$40 BNE $63A2 LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) BPL $63F8 LDA $7C4C BNE $63F8 PHX LDA $0E JSR $618A ; PLX LC263A2: LDY $0E TDC STA $3EC2,Y LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$74 STA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$A4 STA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$91 STA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$9B STA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) BRA $63F8 LC263CA: TDC STA $2006,X ; ヒットポイント(下位) STA $2007,X ; ヒットポイント(上位) LC263D1: LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$02 BNE $63F8 PHX LDA $0E CMP #$04 ; #$04 = 4 BCC $63F2 SEC SBC #$04 ; #$04 = 4 TAX LDA $7C09 JSR $01D1 ; Aレジスタの値の(7 - Xレジスタ)ビットをクリアする ORA $7C0A ; モンスターを倒したかどうかのフラグ (ON: 倒した, OFF: 倒していない) STA $7C09 LC263F2: LDA $0E JSR $618A ; PLX LC263F8: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INC $0E LDA $0E CMP $2721 ; コマンド関連汎用領域?[1] BEQ $6407 JMP $627B LC26407: RTS ;-------------------------------- ; ;-------------------------------- LC26408: JSR $6523 ; 一時変数領域をクリアする ($4D〜$64, $7B69〜$7B7A) JSR $653A ; LDX $32 ; 一時変数 自分アドレスへのインデックス JSR $0248 ; 修正値をもとにして4つのステータスとレベルとを設定する STZ $7C61 LDA $7C4C BEQ $6434 LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) CMP #$07 ; #$07 = 7 BCC $6434 CMP #$0A ; #$0A = 10 BCS $6434 STA $7C60 INC $7C61 LDA #$0A ; #$0A = 10 STA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) LDX #$0500 ; #$0500 = 1280 STX $49 ; 一時変数 相手アドレスへのインデックス LC26434: LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) TAX LDA $3EC2,X BEQ $6461 LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$C0 BNE $6461 LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$01 BNE $6461 LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$10 BNE $6461 LDA $7C4C BNE $6496 LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$80 BNE $648F BRA $6496 LC26461: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$80 BNE $648F LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$10 BEQ $6478 LDA $7C9C BNE $6496 BRA $648F LC26478: LDA $7C9D BNE $648F LDA $7B2C TAX LDA $7BEB,X BNE $6496 LDA $7B2D,X AND #$7F CMP #$60 ; #$60 = 96 BEQ $6496 LC2648F: STZ $7C9D INC $56 ; 一時変数 命中判定用? (0であれば命中) BRA $64AF LC26496: STZ $7C9C LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) AND #$40 BNE $648F LDA $7BE8 BMI $648F LDA $7CD8 BNE $648F JSR $64B2 ; 効果タイプによって分岐する LC264AF: JMP $654D ;-------------------------------- ; 効果タイプによって分岐する ;-------------------------------- LC264B2: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) ORA $2072,X ; 一時的状態変化3 (補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$02 BEQ $64CD LDA $7B2C TAX LDA $7B2D,X AND #$7F CMP #$60 ; #$60 = 96 BNE $64D9 BRA $64FE LC264CD: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) ORA $2073,X ; 一時的状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$40 BEQ $64F7 LC264D9: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2057,X ; 実行するコマンドの番号 CMP #$1D ; #$1D = 29 BNE $64F3 LDA $7B2C TAX LDA $7B2D,X AND #$7F CMP #$60 ; #$60 = 96 BEQ $64FE LDA #$7E ; #$7E = 126 BRA $64FE LC264F3: LDA #$7F ; #$7F = 127 BRA $64FE LC264F7: LDA $7B2C TAX LDA $7B2D,X LC264FE: AND #$7F CMP #$7F ; #$7F = 127 BNE $6508 LDA #$75 ; #$75 = 117 BRA $650E LC26508: CMP #$7E ; #$7E = 126 BNE $650E LDA #$74 ; #$74 = 116 LC2650E: ASL TAX LDA $C27B21,X ; 効果タイプ処理ルーチンアドレス×118 STA $08 LDA $C27B22,X STA $09 LDA #$C2 ; #$C2 = 194 STA $0A JMP [$0008] ;-------------------------------- ; 一時変数領域をクリアする ($4D〜$64, $7B69〜$7B7A) ;-------------------------------- LC26523: LDX #$0017 ; #$0017 = 23 LC26526: STZ $4D,X DEX BPL $6526 TXA LDX #$0011 ; #$0011 = 17 LC2652F: STA $7B69,X ; 一時変数 ダメージポイント DEX BPL $652F TDC STA $3ED7 ; 2種類のタイマーサイクルのどちらを採用するか (0: 味方用, 1: 敵用) RTS ;-------------------------------- ; ;-------------------------------- LC2653A: LDA $39 TAX LDA $7A05,X ; 実行する魔法・技・道具・武器のデータ 9バイト目 STA $57 ; 一時変数 汎用データ1 LDA $7A06,X ; 実行する魔法・技・道具・武器のデータ 10バイト目 STA $58 ; 一時変数 汎用データ2 LDA $7A07,X ; 実行する魔法・技・道具・武器のデータ 11バイト目 STA $59 ; 一時変数 汎用データ3 RTS LC2654D: LDA $56 ; 一時変数 命中判定用? (0であれば命中) BEQ $6595 LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCS $6580 LDA $5D ; 一時変数 回避エフェクト (0: ミス, 1: ディフェンダー, 2: さすけのかたな, 3: エルフのマント, 4: ゴーレム, 5: 白刃取り, 6: 盾, 7: ミス) CMP #$07 ; #$07 = 7 BNE $656F LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする PHA LDA $7B2C TAX PLA STA $3C4C,X BRA $6580 LC2656F: LDA $7B2C TAX LDA $5A ; 一時変数? ORA $5B ; 一時変数? ORA $5C ; 一時変数? ORA $5D ; 一時変数 回避エフェクト (0: ミス, 1: ディフェンダー, 2: さすけのかたな, 3: エルフのマント, 4: ゴーレム, 5: 白刃取り, 6: 盾, 7: ミス) ORA $5E ; 一時変数? STA $3C3C,X LC26580: LDX #$0006 ; #$0006 = 6 LC26583: STZ $4746,X DEX BPL $6583 LDA $56 ; 一時変数 命中判定用? (0であれば命中) BPL $65B7 LDX #$4000 ; #$4000 = 16384 STX $7B6D ; 一時変数 相手のHP減少量 BRA $65B7 LC26595: LDA $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) STA $4749 LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCC $65AF LDA $7C61 BEQ $65AA LDA $7C60 BRA $65AC LC265AA: LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) LC265AC: SEC SBC #$04 ; #$04 = 4 LC265AF: TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $7B41 LC265B7: LDA $79FB STA $24 LDA #$18 ; #$18 = 24 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) LDX $7B6B ; 一時変数 自分のHP減少量 BMI $65F3 LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) JSR $685C ; LDA $7B6B ; 一時変数 自分のHP減少量 STA $3A4C,X LDA $7B6C STA $3A4D,X AND #$40 BNE $65F3 REP #$20 ; A = 16bit LDX $32 ; 一時変数 自分アドレスへのインデックス SEC LDA $2006,X ; ヒットポイント(下位) SBC $7B6B ; 一時変数 自分のHP減少量 BEQ $65EC BCS $65ED LC265EC: TDC LC265ED: STA $2006,X ; ヒットポイント(下位) TDC SEP #$20 ; A = 8bit LC265F3: LDX $7B6D ; 一時変数 相手のHP減少量 BPL $65FB JMP $66E8 LC265FB: BNE $661B LDA $4746 CMP #$2B ; #$2B = 43 BEQ $660D TAX LDA $D0EF26,X BEQ $661B BRA $6618 LC2660D: LDA $4747 CMP #$81 ; #$81 = 129 BEQ $6618 CMP #$80 ; #$80 = 128 BNE $661B LC26618: INC $7B40 LC2661B: LDA $7C61 BEQ $6625 LDA $7C60 BRA $6627 LC26625: LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) LC26627: JSR $685C ; LDA $7B46 BEQ $6679 REP #$20 ; A = 16bit LDA $3A4C,X CMP #$FFFF ; #$FFFF = 65535 BEQ $6676 LDA $3A4C,X AND #$3FFF STA $0E LDA $3A4C,X AND #$8000 STA $10 CLC LDA $7B6D ; 一時変数 相手のHP減少量 AND #$3FFF ADC $0E CMP #$270F ; #$270F = 9999 BCC $6669 SEC SBC #$270F ; #$270F = 9999 STA $12 SEC LDA $7B6D ; 一時変数 相手のHP減少量 SBC $12 STA $7B6D ; 一時変数 相手のHP減少量 LDA #$270F ; #$270F = 9999 LC26669: ORA $10 STA $3A4C,X TDC SEP #$20 ; A = 8bit LDA $3A4D,X BRA $6685 LC26676: TDC SEP #$20 ; A = 8bit LC26679: LDA $7B6D ; 一時変数 相手のHP減少量 STA $3A4C,X LDA $7B6E STA $3A4D,X LC26685: AND #$40 BNE $66E8 LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCS $66C3 LDA $4747 CMP #$80 ; #$80 = 128 BEQ $669E CMP #$DE ; #$DE = 222 BEQ $669E CMP #$81 ; #$81 = 129 BNE $66C3 LC2669E: LDA $7C1E ; ゴーレムで耐えられるダメージ?(下位) ORA $7C1F ; ゴーレムで耐えられるダメージ?(上位) BEQ $66C3 REP #$20 ; A = 16bit SEC LDA $7C1E ; ゴーレムで耐えられるダメージ?(下位) SBC $7B6D ; 一時変数 相手のHP減少量 BCS $66B2 TDC LC266B2: STA $7C1E ; ゴーレムで耐えられるダメージ?(下位) TDC SEP #$20 ; A = 8bit LDA $7B2C TAX LDA #$04 ; #$04 = 4 STA $3C3C,X BRA $66E8 LC266C3: LDA $7B6D ; 一時変数 相手のHP減少量 ORA $7B6E STA $474C LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCC $66D2 LC266D2: REP #$20 ; A = 16bit LDX $49 ; 一時変数 相手アドレスへのインデックス SEC LDA $2006,X ; ヒットポイント(下位) SBC $7B6D ; 一時変数 相手のHP減少量 BEQ $66E1 BCS $66E2 LC266E1: TDC LC266E2: STA $2006,X ; ヒットポイント(下位) TDC SEP #$20 ; A = 8bit LC266E8: LDX $7B6F ; 一時変数 自分のHP回復量 BMI $6722 LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) JSR $685C ; LDA $7B6F ; 一時変数 自分のHP回復量 STA $3A4C,X LDA $7B70 ORA #$80 STA $3A4D,X REP #$20 ; A = 16bit LDA $7B6F ; 一時変数 自分のHP回復量 AND #$3FFF STA $0E LDX $32 ; 一時変数 自分アドレスへのインデックス CLC LDA $2006,X ; ヒットポイント(下位) ADC $0E BCS $6719 CMP $2008,X ; 最大ヒットポイント(下位) BCC $671C LC26719: LDA $2008,X ; 最大ヒットポイント(下位) LC2671C: STA $2006,X ; ヒットポイント(下位) TDC SEP #$20 ; A = 8bit LC26722: LDX $7B71 ; 一時変数 相手のHP回復量 BMI $6766 LDA $7C61 BEQ $6731 LDA $7C60 BRA $6733 LC26731: LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) LC26733: JSR $685C ; LDA $7B71 ; 一時変数 相手のHP回復量 STA $3A4C,X LDA $7B72 ORA #$80 STA $3A4D,X REP #$20 ; A = 16bit LDA $7B71 ; 一時変数 相手のHP回復量 AND #$3FFF STA $0E LDX $49 ; 一時変数 相手アドレスへのインデックス CLC LDA $2006,X ; ヒットポイント(下位) ADC $0E BCS $675D CMP $2008,X ; 最大ヒットポイント(下位) BCC $6760 LC2675D: LDA $2008,X ; 最大ヒットポイント(下位) LC26760: STA $2006,X ; ヒットポイント(下位) TDC SEP #$20 ; A = 8bit LC26766: LDX $7B73 ; 一時変数 自分のMP回復量 BMI $679E LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) JSR $685C ; LDA $7B73 ; 一時変数 自分のMP回復量 STA $3A4C,X LDA $7B74 ORA #$80 STA $3A4D,X REP #$20 ; A = 16bit LDA $7B73 ; 一時変数 自分のMP回復量 AND #$3FFF STA $0E LDX $32 ; 一時変数 自分アドレスへのインデックス CLC LDA $200A,X ; マジックポイント(下位) ADC $0E CMP $200C,X ; 最大マジックポイント(下位) BCC $6798 LDA $200C,X ; 最大マジックポイント(下位) LC26798: STA $200A,X ; マジックポイント(下位) TDC SEP #$20 ; A = 8bit LC2679E: LDX $7B75 ; 一時変数 相手のMP回復量 BMI $67E0 LDA $7C61 BEQ $67AD LDA $7C60 BRA $67AF LC267AD: LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) LC267AF: JSR $685C ; LDA $7B75 ; 一時変数 相手のMP回復量 STA $3A4C,X LDA $7B76 ORA #$80 STA $3A4D,X REP #$20 ; A = 16bit LDA $7B75 ; 一時変数 相手のMP回復量 AND #$3FFF STA $0E LDX $49 ; 一時変数 相手アドレスへのインデックス CLC LDA $200A,X ; マジックポイント(下位) ADC $0E CMP $200C,X ; 最大マジックポイント(下位) BCC $67DA LDA $200C,X ; 最大マジックポイント(下位) LC267DA: STA $200A,X ; マジックポイント(下位) TDC SEP #$20 ; A = 8bit LC267E0: LDX $7B77 ; 一時変数 自分のMP減少量 BMI $6811 LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) JSR $685C ; LDA $7B77 ; 一時変数 自分のMP減少量 STA $3A4C,X LDA $7B78 STA $3A4D,X REP #$20 ; A = 16bit LDA $7B77 ; 一時変数 自分のMP減少量 AND #$3FFF STA $0E LDX $32 ; 一時変数 自分アドレスへのインデックス SEC LDA $200A,X ; マジックポイント(下位) SBC $0E BCS $680B TDC LC2680B: STA $200A,X ; マジックポイント(下位) TDC SEP #$20 ; A = 8bit LC26811: LDX $7B79 ; 一時変数 相手のMP減少量 BMI $684C LDA $7C61 BEQ $6820 LDA $7C60 BRA $6822 LC26820: LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) LC26822: JSR $685C ; LDA $7B79 ; 一時変数 相手のMP減少量 STA $3A4C,X LDA $7B7A STA $3A4D,X REP #$20 ; A = 16bit LDA $7B79 ; 一時変数 相手のMP減少量 AND #$3FFF STA $0E LDX $49 ; 一時変数 相手アドレスへのインデックス SEC LDA $200A,X ; マジックポイント(下位) SBC $0E BCS $6846 TDC LC26846: STA $200A,X ; マジックポイント(下位) TDC SEP #$20 ; A = 8bit LC2684C: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$02 BEQ $685B STZ $2006,X ; ヒットポイント(下位) STZ $2007,X ; ヒットポイント(上位) LC2685B: RTS ;-------------------------------- ; ;-------------------------------- LC2685C: TAX LDA $D0ED79,X ; 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7 ASL REP #$20 ; A = 16bit CLC ADC $26 TAX TDC SEP #$20 ; A = 8bit RTS ;-------------------------------- ; 効果タイプ No.000(00): (命中率・追加効果発動率・追加効果の番号) ;-------------------------------- LC2686C: INC $7BFB RTS ;-------------------------------- ; 効果タイプ No.001(01): 不明(未使用・未使用・未使用) ;-------------------------------- LC26870: JSR $7C47 ; 命中率 | 回避率設定 (100% | 物理回避率) JSR $7EBE ; 命中判定 (物理攻撃系1) (相手が混乱・麻痺・睡眠状態であれば命中, 自分が"必ず命中"状態であれば命中, 相手の$2064によって命中, アビリティ・装備品による回避判定, 回避率修正: 相手が蛙なら0, 相手が小人なら2倍(上限: 99), 命中率修正: 自分が暗闇なら1/4, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6893 JSR $8227 ; 攻撃力 | 倍率 | 防御力設定 ((モンスター)攻撃力×(1〜9/8) | (モンスター)倍率 | 相手の物理防御力) JSR $839B ; 倍率修正 (自分が後列であれば1/2, 相手が後列であれば1/2) JSR $83BD ; 攻撃力 | 倍率 | 防御力修正 (なげるでの攻撃ならば2倍, 自分の$201Fのbit5がONならば1/2, 相手が人間系で自分の$201Fのbit0がONならば2倍, 相手が守り状態ならば0 | ためる状態ならば2倍, 乱れ打ちならば1/2, 相手が防御状態ならば1/2 | 防御無視攻撃ならば0) JSR $8512 ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) JSR $8533 ; 攻撃力修正 (自分が蛙・小人なら3, 自分がバーサクなら3/2) JSR $8684 ; 魔法剣関連 (フレア剣なら攻撃力+100, 防御力1/4 / 属性が相手の吸収と一致: 吸収フラグON, 防御力0, 無効と一致: ミスフラグON, 半減と一致: 倍率1/2, 弱点が4倍属性と一致: 相手がボス属性でない場合は即死(ゾンビ時除く)、ある場合は攻撃力4倍で防御力0, 弱点が3倍属性と一致: 攻撃力3倍で防御力0, 弱点が2倍属性と一致: 攻撃力2倍で防御力0) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6893 JMP $8811 ; ダメージポイント & 相手のHP減少量設定 (現在調査中1) LC26893: LDA #$80 ; #$80 = 128 STA $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 効果タイプ No.002(02): 不明(未使用・未使用・未使用) ;-------------------------------- LC26898: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $206E,X ; とくいわざの特性 (01: 攻撃力3/2, 02: スリップ, 04: 混乱, 08: 麻痺, 10: 暗闇, 20: 猛毒, 40: 徐々に老化, 80: 回避不能/防御力無視) BMI $68A9 JSR $7C47 ; 命中率 | 回避率設定 (100% | 物理回避率) JSR $7EBE ; 命中判定 (物理攻撃系1) (相手が混乱・麻痺・睡眠状態であれば命中, 自分が"必ず命中"状態であれば命中, 相手の$2064によって命中, アビリティ・装備品による回避判定, 回避率修正: 相手が蛙なら0, 相手が小人なら2倍(上限: 99), 命中率修正: 自分が暗闇なら1/4, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $68DD LC268A9: JSR $7DE2 ; 命中判定補助 (相手が分身ならミス, 分身を減らす) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $68DD JSR $8227 ; 攻撃力 | 倍率 | 防御力設定 ((モンスター)攻撃力×(1〜9/8) | (モンスター)倍率 | 相手の物理防御力) JSR $839B ; 倍率修正 (自分が後列であれば1/2, 相手が後列であれば1/2) JSR $83BD ; 攻撃力 | 倍率 | 防御力修正 (なげるでの攻撃ならば2倍, 自分の$201Fのbit5がONならば1/2, 相手が人間系で自分の$201Fのbit0がONならば2倍, 相手が守り状態ならば0 | ためる状態ならば2倍, 乱れ打ちならば1/2, 相手が防御状態ならば1/2 | 防御無視攻撃ならば0) JSR $8512 ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) JSR $8533 ; 攻撃力修正 (自分が蛙・小人なら3, 自分がバーサクなら3/2) JSR $84AF ; 攻撃力 | 防御力修正 (とくいわざ特性のビット0がセットされていたら3/2 | とくいわざ特性のビット7がセットされていたら0) JSR $8684 ; 魔法剣関連 (フレア剣なら攻撃力+100, 防御力1/4 / 属性が相手の吸収と一致: 吸収フラグON, 防御力0, 無効と一致: ミスフラグON, 半減と一致: 倍率1/2, 弱点が4倍属性と一致: 相手がボス属性でない場合は即死(ゾンビ時除く)、ある場合は攻撃力4倍で防御力0, 弱点が3倍属性と一致: 攻撃力3倍で防御力0, 弱点が2倍属性と一致: 攻撃力2倍で防御力0) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $68DD JSR $8811 ; ダメージポイント & 相手のHP減少量設定 (現在調査中1) LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCS $68DA LDA $7C1E ; ゴーレムで耐えられるダメージ?(下位) ORA $7C1F ; ゴーレムで耐えられるダメージ?(上位) BNE $68E1 LC268DA: JMP $8C2F ; とくいわざの特性に従って状態変化 LC268DD: LDA #$80 ; #$80 = 128 STA $56 ; 一時変数 命中判定用? (0であれば命中) LC268E1: RTS ;-------------------------------- ; 効果タイプ No.003(03): 魔法剣(ID?・付加属性・付加状態変化1(永続的)) ;-------------------------------- LC268E2: JSR $90E9 ; 相手の魔法剣効果を初期化する LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $57 ; 一時変数 汎用データ1 STA $207A,X ; 攻撃エフェクトの種類 LDA $58 ; 一時変数 汎用データ2 STA $2050,X ; 魔法剣 付加属性(2倍) (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) LDA $59 ; 一時変数 汎用データ3 STA $2053,X ; 魔法剣 付加状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) RTS ;-------------------------------- ; 効果タイプ No.004(04): 魔法剣(ID?・付加属性・付加状態変化2(一時的)) ;-------------------------------- LC268F7: JSR $90E9 ; 相手の魔法剣効果を初期化する LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $57 ; 一時変数 汎用データ1 STA $207A,X ; 攻撃エフェクトの種類 LDA $58 ; 一時変数 汎用データ2 STA $2051,X ; 魔法剣 付加属性(3倍) (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) LDA $59 ; 一時変数 汎用データ3 STA $2054,X ; 魔法剣 付加状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) RTS ;-------------------------------- ; 効果タイプ No.005(05): 魔法剣(ID?・付加属性・特殊効果フラグ) ;-------------------------------- LC2690C: JSR $90E9 ; 相手の魔法剣効果を初期化する LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $57 ; 一時変数 汎用データ1 STA $207A,X ; 攻撃エフェクトの種類 LDA $58 ; 一時変数 汎用データ2 STA $2052,X ; 魔法剣 付加属性(4倍/即死) (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) LDA $59 ; 一時変数 汎用データ3 STA $2055,X ; 魔法剣 特殊効果フラグ(20: MP吸収, 40: HP吸収, 80: フレア剣効果) RTS ;-------------------------------- ; 効果タイプ No.006(06): 属性攻撃(未使用・効果値・属性) ;-------------------------------- LC26921: JSR $7C97 ; 魔法回避判定 (混乱・麻痺・睡眠・ストップ状態でない場合、以降の回避判定を行う / イージスのたて: 33%) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6942 LDA $59 ; 一時変数 汎用データ3 STA $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) JSR $7F30 ; 攻撃力 | 倍率 | 防御力設定 (汎用データ2×(1〜9/8) | (自分のレベル×魔力)÷256 + 4 | 相手の魔法防御力) JSR $8366 ; 攻撃力修正 (目標を全体化した場合に1/2?) JSR $84F3 ; 倍率 | 防御力修正 (相手がシェルなら1/2 | 相手が蛙なら0) JSR $866D ; 攻撃力修正 (攻撃属性とパワーアップ属性とが一致すれば1.5倍) JSR $876E ; 攻撃属性による倍率 | 防御力修正 (相手の吸収と一致: 吸収フラグON, 防御力0, ????と一致: ミスフラグON, 無効と一致: ミスフラグON, 半減と一致: 倍率1/2, 弱点と一致: 倍率2倍, 防御力0) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6942 JSR $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) LC26942: LDA $7C97 BEQ $6949 STZ $56 ; 一時変数 命中判定用? (0であれば命中) LC26949: RTS ;-------------------------------- ; 効果タイプ No.007(07): 状態変化をともなう比率ダメージ攻撃(命中率・効果比率・状態変化2(一時的)) ;-------------------------------- LC2694A: JSR $7E81 ; 命中判定 (魔法攻撃系1) (汎用データ1のbit7がONならば命中, 攻撃対象が味方同士・敵同士の場合は命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6970 LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2065,X ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) AND #$20 BNE $696E JSR $8874 ; ダメージポイント & 相手のHP減少量設定 (相手がボス属性でない場合: 汎用データ2×相手の現在HP÷16(最大値: 9999) / ある場合: 0) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6970 LDA #$3C ; #$3C = 60 STA $58 ; 一時変数 汎用データ2 JSR $8B7D ; 効果持続時間を設定する (汎用データ2のbit7がセットされている場合: 汎用データ2×2 + 自分のレベル÷4, セットされていない場合: (汎用データ2×2 + 自分のレベル÷4) - 相手のレベル÷4, セットされていない & 相手がボス属性である: 30固定) JSR $8D2E ; STZ $56 ; 一時変数 命中判定用? (0であれば命中) RTS LC2696E: INC $56 ; 一時変数 命中判定用? (0であれば命中) LC26970: RTS ;-------------------------------- ; 効果タイプ No.008(08): 防御力(ほぼ)無視の攻撃(未使用・効果値・属性) ;-------------------------------- LC26971: LDA $59 ; 一時変数 汎用データ3 STA $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) JSR $7F6A ; 攻撃力 | 倍率 | 防御力設定 (汎用データ2×(1〜33/32) | (自分のレベル×魔力)÷256 + 4 | 相手の魔法防御力÷32) JSR $8366 ; 攻撃力修正 (目標を全体化した場合に1/2?) JSR $84F3 ; 倍率 | 防御力修正 (相手がシェルなら1/2 | 相手が蛙なら0) JSR $866D ; 攻撃力修正 (攻撃属性とパワーアップ属性とが一致すれば1.5倍) JSR $876E ; 攻撃属性による倍率 | 防御力修正 (相手の吸収と一致: 吸収フラグON, 防御力0, ????と一致: ミスフラグON, 無効と一致: ミスフラグON, 半減と一致: 倍率1/2, 弱点と一致: 倍率2倍, 防御力0) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $698B JSR $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) LC2698B: LDA $7C97 BEQ $6992 STZ $56 ; 一時変数 命中判定用? (0であれば命中) LC26992: RTS ;-------------------------------- ; 効果タイプ No.009(09): ダメージ倍率一定の攻撃(未使用・倍率・属性) ;-------------------------------- LC26993: LDA $59 ; 一時変数 汎用データ3 STA $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) JSR $7FA7 ; 攻撃力 | 倍率 | 防御力設定 (50〜200 | 汎用データ2 | 相手の魔法防御力) JSR $8366 ; 攻撃力修正 (目標を全体化した場合に1/2?) JSR $84F3 ; 倍率 | 防御力修正 (相手がシェルなら1/2 | 相手が蛙なら0) JSR $866D ; 攻撃力修正 (攻撃属性とパワーアップ属性とが一致すれば1.5倍) JSR $876E ; 攻撃属性による倍率 | 防御力修正 (相手の吸収と一致: 吸収フラグON, 防御力0, ????と一致: ミスフラグON, 無効と一致: ミスフラグON, 半減と一致: 倍率1/2, 弱点と一致: 倍率2倍, 防御力0) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $69AD JSR $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) LC269AD: LDA $7C97 BEQ $69B4 STZ $56 ; 一時変数 命中判定用? (0であれば命中) LC269B4: RTS ;-------------------------------- ; 効果タイプ No.010(0A): 物理攻撃扱いの攻撃(命中率・効果値・属性) ;-------------------------------- LC269B5: JSR $7F1B ; 命中判定 (物理攻撃系2) (汎用データ1のbit7がONならば命中, 命中率設定: 汎用データ1 | 回避率設定: 物理回避率, アビリティ・装備品による回避判定, 回避率修正: 相手が蛙なら0, 相手が小人なら2倍(上限: 99), 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $69D3 LDA $59 ; 一時変数 汎用データ3 STA $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) JSR $7FC2 ; 攻撃力 | 倍率 | 防御力設定 (汎用データ2×(1〜9/8) | (自分のレベル×魔力)÷256 + 4 | 相手の物理防御力) JSR $8512 ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) JSR $866D ; 攻撃力修正 (攻撃属性とパワーアップ属性とが一致すれば1.5倍) JSR $876E ; 攻撃属性による倍率 | 防御力修正 (相手の吸収と一致: 吸収フラグON, 防御力0, ????と一致: ミスフラグON, 無効と一致: ミスフラグON, 半減と一致: 倍率1/2, 弱点と一致: 倍率2倍, 防御力0) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $69D3 JSR $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) LC269D3: LDA $7C97 BEQ $69DA STZ $56 ; 一時変数 命中判定用? (0であれば命中) LC269DA: RTS ;-------------------------------- ; 効果タイプ No.011(0B): 状態変化をともなうレベルによってダメージが決まる属性攻撃(属性・効果値・状態変化1(永続的)) ;-------------------------------- LC269DB: JSR $7C97 ; 魔法回避判定 (混乱・麻痺・睡眠・ストップ状態でない場合、以降の回避判定を行う / イージスのたて: 33%) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $69FF JSR $8205 ; 攻撃力 | 倍率 | 防御力設定 (10〜100 | レベル÷8 + 2 | 相手の魔法防御力) JSR $8366 ; 攻撃力修正 (目標を全体化した場合に1/2?) JSR $84F3 ; 倍率 | 防御力修正 (相手がシェルなら1/2 | 相手が蛙なら0) LDA $57 ; 一時変数 汎用データ1 STA $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) JSR $866D ; 攻撃力修正 (攻撃属性とパワーアップ属性とが一致すれば1.5倍) JSR $876E ; 攻撃属性による倍率 | 防御力修正 (相手の吸収と一致: 吸収フラグON, 防御力0, ????と一致: ミスフラグON, 無効と一致: ミスフラグON, 半減と一致: 倍率1/2, 弱点と一致: 倍率2倍, 防御力0) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $69FF JSR $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) JSR $8BF9 ; LC269FF: LDA $7C97 BEQ $6A06 STZ $56 ; 一時変数 命中判定用? (0であれば命中) LC26A06: RTS ;-------------------------------- ; 効果タイプ No.012(0C): 状態変化(スリップ)をともなう防御力(ほぼ)無視の属性攻撃(属性・効果値・持続時間) ;-------------------------------- LC26A07: JSR $7C97 ; 魔法回避判定 (混乱・麻痺・睡眠・ストップ状態でない場合、以降の回避判定を行う / イージスのたて: 33%) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6A34 LDA $57 ; 一時変数 汎用データ1 STA $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) JSR $7F6A ; 攻撃力 | 倍率 | 防御力設定 (汎用データ2×(1〜33/32) | (自分のレベル×魔力)÷256 + 4 | 相手の魔法防御力÷32) JSR $8366 ; 攻撃力修正 (目標を全体化した場合に1/2?) JSR $84F3 ; 倍率 | 防御力修正 (相手がシェルなら1/2 | 相手が蛙なら0) JSR $866D ; 攻撃力修正 (攻撃属性とパワーアップ属性とが一致すれば1.5倍) JSR $876E ; 攻撃属性による倍率 | 防御力修正 (相手の吸収と一致: 吸収フラグON, 防御力0, ????と一致: ミスフラグON, 無効と一致: ミスフラグON, 半減と一致: 倍率1/2, 弱点と一致: 倍率2倍, 防御力0) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6A34 JSR $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) LDA $59 ; 一時変数 汎用データ3 STA $3ED8 ; サイクル設定値 LDA #$08 ; #$08 = 8 STA $59 ; 一時変数 汎用データ3 JSR $8E05 ; 相手の状態変化4に汎用データ3の状態を追加(追加しようとする状態が"10: 死の宣告"の場合、相手がすでに死の宣告状態であればミス) LC26A34: LDA $7C97 BEQ $6A3B STZ $56 ; 一時変数 命中判定用? (0であれば命中) LC26A3B: RTS ;-------------------------------- ; 効果タイプ No.013(0D): ヒットポイントを吸収する攻撃(命中率・効果値・未使用) ;-------------------------------- LC26A3C: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201F,X ; フラグ (04: 防御無視?, 08: 乱れ打ちで半減?, 10: ためる?, 20: 不明(攻撃力1/2), 40: 投げる?, 80: 必ず命中?) BMI $6A4A JSR $7E81 ; 命中判定 (魔法攻撃系1) (汎用データ1のbit7がONならば命中, 攻撃対象が味方同士・敵同士の場合は命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6A53 LC26A4A: JSR $7F30 ; 攻撃力 | 倍率 | 防御力設定 (汎用データ2×(1〜9/8) | (自分のレベル×魔力)÷256 + 4 | 相手の魔法防御力) JSR $84F3 ; 倍率 | 防御力修正 (相手がシェルなら1/2 | 相手が蛙なら0) JMP $8926 ; 相手のHP減少量 & 自分のHP回復量設定 (ダメージポイント) / 相手がアンデッド特性の場合: 自分のHP減少量 & 相手のHP回復量設定 (〃) LC26A53: LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCS $6A64 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2056,X ; (フラグ系?) BPL $6A64 LDA #$80 ; #$80 = 128 STA $56 ; 一時変数 命中判定用? (0であれば命中) LC26A64: RTS ;-------------------------------- ; 効果タイプ No.014(0E): マジックポイントを吸収する攻撃(命中率・効果値・未使用) ;-------------------------------- LC26A65: JSR $7E81 ; 命中判定 (魔法攻撃系1) (汎用データ1のbit7がONならば命中, 攻撃対象が味方同士・敵同士の場合は命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6A75 JSR $7F6A ; 攻撃力 | 倍率 | 防御力設定 (汎用データ2×(1〜33/32) | (自分のレベル×魔力)÷256 + 4 | 相手の魔法防御力÷32) JSR $84F3 ; 倍率 | 防御力修正 (相手がシェルなら1/2 | 相手が蛙なら0) JSR $8985 ; 相手のMP減少量 & 自分のMP回復量設定 ((攻撃力 - 防御力)×倍率)(上限: 相手の現在MP) / 相手がアンデッド特性の場合: 自分のMP減少量 & 相手のMP回復量設定 ((攻撃力 - 防御力)×倍率)(上限: 自分の現在MP) LC26A75: RTS ;-------------------------------- ; 効果タイプ No.015(0F): 瀕死攻撃(命中率・未使用・未使用) ;-------------------------------- LC26A76: JSR $7E81 ; 命中判定 (魔法攻撃系1) (汎用データ1のbit7がONならば命中, 攻撃対象が味方同士・敵同士の場合は命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6A80 JSR $88FD ; 相手がボス属性でない場合は、相手のHPを1〜9にする LC26A80: RTS ;-------------------------------- ; 効果タイプ No.016(10): 回復(未使用・効果値・未使用) ;-------------------------------- LC26A81: JSR $7F30 ; 攻撃力 | 倍率 | 防御力設定 (汎用データ2×(1〜9/8) | (自分のレベル×魔力)÷256 + 4 | 相手の魔法防御力) TDC TAX STX $54 ; 一時変数 防御力(下位) JSR $8366 ; 攻撃力修正 (目標を全体化した場合に1/2?) JMP $88C1 ; ダメージポイント & 相手のHP減少量設定 (現在調査中2) ;-------------------------------- ; 効果タイプ No.017(11): 回復(目標が単体の時は別効果)(未使用・効果値・未使用) ;-------------------------------- LC26A8E: JSR $7F30 ; 攻撃力 | 倍率 | 防御力設定 (汎用データ2×(1〜9/8) | (自分のレベル×魔力)÷256 + 4 | 相手の魔法防御力) TDC TAX STX $54 ; 一時変数 防御力(下位) LDA $7B2C ASL TAX LDA $7AFC,X AND #$F0 BNE $6AB5 LDA $7AFC,X AND #$0F JSR $01B5 ; 16倍する STA $0E LDA $7AFD,X AND #$F0 JSR $01BE ; 16で割る ORA $0E LC26AB5: JSR $01C3 ; Aレジスタのセットされたビットの数をXレジスタに格納する DEX BEQ $6AC1 JSR $8366 ; 攻撃力修正 (目標を全体化した場合に1/2?) JMP $88C1 ; ダメージポイント & 相手のHP減少量設定 (現在調査中2) LC26AC1: JMP $88DE ; HP全回復, 相手がアンデッド特性で、ボス属性がなければ、相手のHPを1〜9にする ;-------------------------------- ; 効果タイプ No.018(12): 状態変化(命中率・不明・状態変化1(永続的)) ;-------------------------------- LC26AC4: JSR $7EF6 ; 命中判定 (魔法攻撃系2, 汎用データ1のbit7がONならば命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6ACE JSR $8CAC ; 相手の状態変化1に汎用データ3の状態を追加? (現在調査中) LC26ACE: RTS ;-------------------------------- ; 効果タイプ No.019(13): 状態変化(命中率・持続時間・状態変化2(一時的)) ;-------------------------------- LC26ACF: JSR $7EF6 ; 命中判定 (魔法攻撃系2, 汎用データ1のbit7がONならば命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6ADC JSR $8B7D ; 効果持続時間を設定する (汎用データ2のbit7がセットされている場合: 汎用データ2×2 + 自分のレベル÷4, セットされていない場合: (汎用データ2×2 + 自分のレベル÷4) - 相手のレベル÷4, セットされていない & 相手がボス属性である: 30固定) JSR $8D2E ; LC26ADC: RTS ;-------------------------------- ; 効果タイプ No.020(14): 状態変化(命中率・持続時間・状態変化3(補助魔法)) ;-------------------------------- LC26ADD: JSR $7EF6 ; 命中判定 (魔法攻撃系2, 汎用データ1のbit7がONならば命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6AEA JSR $8B7D ; 効果持続時間を設定する (汎用データ2のbit7がセットされている場合: 汎用データ2×2 + 自分のレベル÷4, セットされていない場合: (汎用データ2×2 + 自分のレベル÷4) - 相手のレベル÷4, セットされていない & 相手がボス属性である: 30固定) JSR $8DCB ; LC26AEA: RTS ;-------------------------------- ; 効果タイプ No.021(15): 状態変化(反転効果)(命中率・未使用・状態変化1(永続的)) ;-------------------------------- LC26AEB: JSR $7E81 ; 命中判定 (魔法攻撃系1) (汎用データ1のbit7がONならば命中, 攻撃対象が味方同士・敵同士の場合は命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6AF5 JSR $8E25 ; 相手の状態変化1耐性と汎用データ3の状態とが一致しなければ、相手の状態変化1に汎用データ3の状態を追加 LC26AF5: RTS ;-------------------------------- ; 効果タイプ No.022(16): 状態変化(状態解除をともなう)(命中率・解除される状態変化3(補助魔法)・状態変化3(補助魔法)) ;-------------------------------- LC26AF6: JSR $7EF6 ; 命中判定 (魔法攻撃系2, 汎用データ1のbit7がONならば命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6B00 JSR $8E51 ; LC26B00: RTS ;-------------------------------- ; 効果タイプ No.023(17): 状態変化(不死系モンスターへの特殊効果)(命中率・未使用・状態変化1(永続的)) ;-------------------------------- LC26B01: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2065,X ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) AND #$01 BNE $6B11 LDA $2039,X ; 装備特殊効果フラグ(01: HP1/2で捕獲, 02: 不死特性付加, 04: 剣の舞確率上昇, 08: 消費MP1/2, 10: 盗み成功率2倍, 20: 格闘効果付加, 40: エルフのマント, 80: イージスのたて) AND #$02 BEQ $6B1D LC26B11: REP #$20 ; A = 16bit LDA $2008,X ; 最大ヒットポイント(下位) STA $2006,X ; ヒットポイント(下位) TDC SEP #$20 ; A = 8bit RTS LC26B1D: JSR $7E81 ; 命中判定 (魔法攻撃系1) (汎用データ1のbit7がONならば命中, 攻撃対象が味方同士・敵同士の場合は命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6B31 LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) TAY LDA $3EC2,Y BEQ $6B2F JMP $8CAC ; 相手の状態変化1に汎用データ3の状態を追加? (現在調査中) LC26B2F: INC $56 ; 一時変数 命中判定用? (0であれば命中) LC26B31: RTS ;-------------------------------- ; 効果タイプ No.024(18): 即死系魔法(不死系モンスターへの特殊効果がない)(命中率・0x00・0x00) ;-------------------------------- LC26B32: JMP $8F82 ; 相手を戦闘不能にする (相手がボス属性であればミス, 命中判定(魔法攻撃系1)に失敗した場合はミス, 相手がゾンビ状態であればミス) ;-------------------------------- ; 効果タイプ No.025(19): 状態変化治療(状態変化1(永続的)・状態変化2(一時的)・状態変化3(補助魔法)) ;-------------------------------- LC26B35: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$10 BEQ $6B41 INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS LC26B41: JSR $8F6E ; 相手の状態変化3から汎用データ3(解除したい状態以外のビットがセット)で状態を解除, 効果解除タイマー停止 LDA $58 ; 一時変数 汎用データ2 STA $59 ; 一時変数 汎用データ3 JSR $8F11 ; LDA $57 ; 一時変数 汎用データ1 STA $59 ; 一時変数 汎用データ3 JMP $8EB6 ;-------------------------------- ; 効果タイプ No.026(1A): 戦闘不能治療(命中率・回復するパラメータの種別・効果比率) ;-------------------------------- LC26B52: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2065,X ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) AND #$01 BNE $6B62 LDA $2039,X ; 装備特殊効果フラグ(01: HP1/2で捕獲, 02: 不死特性付加, 04: 剣の舞確率上昇, 08: 消費MP1/2, 10: 盗み成功率2倍, 20: 格闘効果付加, 40: エルフのマント, 80: イージスのたて) AND #$02 BEQ $6B66 LC26B62: JSR $8F82 ; 相手を戦闘不能にする (相手がボス属性であればミス, 命中判定(魔法攻撃系1)に失敗した場合はミス, 相手がゾンビ状態であればミス) RTS LC26B66: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$80 BNE $6B72 INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS LC26B72: JSR $8FAA ; 相手の戦闘不能状態を回復する (相手がゾンビ状態であればミス), 相手のHP設定 (汎用データ3×相手の最大HP÷16 (最大値: 9999)) LDA $58 ; 一時変数 汎用データ2 BPL $6B7C JSR $89F7 ; MP全回復 LC26B7C: RTS ;-------------------------------- ; 効果タイプ No.027(1B): ヒットポイントを吸収する攻撃(吸収分を全員に配分)(未使用・効果値・未使用) ;-------------------------------- LC26B7D: LDA $79FB STA $24 LDA #$18 ; #$18 = 24 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) LDX $26 PHX JSR $7F30 ; 攻撃力 | 倍率 | 防御力設定 (汎用データ2×(1〜9/8) | (自分のレベル×魔力)÷256 + 4 | 相手の魔法防御力) JSR $84F3 ; 倍率 | 防御力修正 (相手がシェルなら1/2 | 相手が蛙なら0) JSR $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) REP #$20 ; A = 16bit LDA $7B6D ; 一時変数 相手のHP減少量 JSR $01C0 ; 4で割る STA $0E TDC SEP #$20 ; A = 8bit PLX STX $26 TDC TAY TAX STX $10 LC26BAA: LDA $3EC2,Y BEQ $6BEE LDX $10 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$C0 BNE $6BEE LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$81 BNE $6BEE LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$10 BNE $6BEE REP #$20 ; A = 16bit CLC LDA $2006,X ; ヒットポイント(下位) ADC $0E BCS $6BD5 CMP $2008,X ; 最大ヒットポイント(下位) BCC $6BD8 LC26BD5: LDA $2008,X ; 最大ヒットポイント(下位) LC26BD8: STA $2006,X ; ヒットポイント(下位) TDC SEP #$20 ; A = 8bit TYA JSR $685C ; LDA $0E STA $3A4C,X LDA $0F ORA #$80 STA $3A4D,X LC26BEE: LDX $10 JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) STX $10 INY CPY #$0004 ; #$0004 = 4 BNE $6BAA RTS ;-------------------------------- ; 効果タイプ No.028(1C): 属性吸収・無効化(吸収属性・無効化属性・弱点属性) ;-------------------------------- LC26BFC: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2030,X ; 吸収属性 (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) ORA $57 ; 一時変数 汎用データ1 STA $2030,X ; 吸収属性 (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) LDA $2032,X ; 無効属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) ORA $58 ; 一時変数 汎用データ2 STA $2032,X ; 無効属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) LDA $2034,X ; 弱点属性 (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) ORA $59 ; 一時変数 汎用データ3 STA $2034,X ; 弱点属性 (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) RTS ;-------------------------------- ; 効果タイプ No.029(1D): ライブラ・しらべる・みやぶる(得られる情報の種別・未使用・未使用) ;-------------------------------- LC26C17: JSR $9965 ; Yレジスタ = ($7B2C)×12, Xレジスタ = ($7B2C)×24 STX $0E STY $10 LDA $57 ; 一時変数 汎用データ1 BPL $6C2A LDA $4021 BEQ $6C2A JMP $6CE1 LC26C2A: LDA $57 ; 一時変数 汎用データ1 AND #$40 BEQ $6C46 LDA #$11 ; #$11 = 17 STA $3C5F,X INC $0E LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2002,X ; レベル STA $3CBF,Y TDC STA $3CC0,Y STA $3CC1,Y LC26C46: LDA $57 ; 一時変数 汎用データ1 AND #$20 BEQ $6C91 LDX $0E LDA #$12 ; #$12 = 18 STA $3C5F,X INC $0E LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2066,X ; 各種フラグ(08: とらえる耐性, 10: あやつる耐性, 80: ライブラのHP表示が「????」) BPL $6C72 LDA #$FF ; #$FF = 255 STA $3CC2,Y STA $3CC3,Y STA $3CC4,Y STA $3CC5,Y STA $3CC6,Y STA $3CC7,Y BRA $6C91 LC26C72: LDA $2006,X ; ヒットポイント(下位) STA $3CC2,Y LDA $2007,X ; ヒットポイント(上位) STA $3CC3,Y LDA $2008,X ; 最大ヒットポイント(下位) STA $3CC5,Y LDA $2009,X ; 最大ヒットポイント(上位) STA $3CC6,Y TDC STA $3CC4,Y STA $3CC7,Y LC26C91: LDA $57 ; 一時変数 汎用データ1 AND #$08 BEQ $6CB5 LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2034,X ; 弱点属性 (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) STA $12 LDX $0E TDC TAY LDA #$12 ; #$12 = 18 LC26CA4: INC ASL $12 BCC $6CAF STA $3C5F,X INX INC $0E LC26CAF: INY CPY #$0008 ; #$0008 = 8 BNE $6CA4 LC26CB5: LDA $57 ; 一時変数 汎用データ1 AND #$08 BEQ $6CE0 LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) STA $13 LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) STA $12 LDX $0E TDC TAY LDA #$00 ; #$00 = 0 LC26CCD: INC ASL $12 ROL $13 BCC $6CDA STA $3C5F,X INX INC $0E LC26CDA: INY CPY #$0010 ; #$0010 = 16 BNE $6CCD LC26CE0: RTS LC26CE1: INC $0E RTS ;-------------------------------- ; 効果タイプ No.030(1E): スピード(未使用・未使用・未使用) ;-------------------------------- LC26CE4: LDX #$0004 ; #$0004 = 4 LDA $D0ECF2,X ; 0, 15, 30, 60, 120, 240, 0, 0, 0, 15, 30, 60, 120, 240, 0, 0 STA $3ED6 ; スピード関連 RTS ;-------------------------------- ; 効果タイプ No.031(1F): ミュート(成功率・未使用・未使用) ;-------------------------------- LC26CEF: LDA $3EFE ; MONPARTY[15]: 不明(フラグ系?) AND #$40 BNE $6D2B JSR $02A2 ; 0〜99の範囲の乱数取得 CMP $57 ; 一時変数 汎用データ1 BCS $6D2B LDA $7BE6 ; フラグ? (40: ミュート) ORA #$40 STA $7BE6 ; フラグ? (40: ミュート) TDC TAX TAY LC26D08: LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$FB STA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) TDC STA $3CF9,Y ; タイマー制御フラグ?(歌による能力値上昇) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3D7D,Y ; タイマー現在値(歌による能力値上昇) STA $3E01,Y ; タイマー初期値(歌による能力値上昇) JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) CLC TYA ADC #$0B ; #$0B = 11 TAY INC $0E LDA $0E CMP #$0C ; #$0C = 12 BNE $6D08 RTS LC26D2B: INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 効果タイプ No.032(20): テレポ・とんずら・けむりだま(成功率・未使用・未使用) ;-------------------------------- LC26D2E: LDA $3EF0 ; MONPARTY[1]: 逃走のしやすさ (80: 逃走不能) BMI $6D40 JSR $02A2 ; 0〜99の範囲の乱数取得 CMP $57 ; 一時変数 汎用データ1 BCS $6D40 LDA #$80 ; #$80 = 128 STA $7BE8 RTS LC26D40: INC $56 ; 一時変数 命中判定用? (0であれば命中) JSR $9965 ; Yレジスタ = ($7B2C)×12, Xレジスタ = ($7B2C)×24 LDA #$20 ; #$20 = 32 STA $3C5F,X RTS ;-------------------------------- ; 効果タイプ No.033(21): リターン(未使用・未使用・未使用) ;-------------------------------- LC26D4B: LDA $04F2 ; 背景の種類 CMP #$1F ; #$1F = 31 BNE $6D57 LDA #$1C ; #$1C = 28 STA $04F2 ; 背景の種類 LC26D57: INC $7CD8 RTS ;-------------------------------- ; 効果タイプ No.034(22): クイック(未使用・未使用・未使用) ;-------------------------------- LC26D5B: LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCS $6D66 LDA $7C51 ; クイックで行動できるターン数? BEQ $6D69 LC26D66: INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS LC26D69: TDC TAX LC26D6B: INC $3EAB,X INX CPX #$000C ; #$000C = 12 BNE $6D6B LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) STA $7CB6 TAX STZ $3EAB,X LDA #$03 ; #$03 = 3 STA $7C51 ; クイックで行動できるターン数? RTS ;-------------------------------- ; 効果タイプ No.035(23): アースウォール(未使用・係数・未使用) (ゴーレムの耐久力が残っているならミス, それ以外の場合は汎用データ2×自分のレベル + 1000が耐久力となる) ;-------------------------------- LC26D83: LDA $7C1E ; ゴーレムで耐えられるダメージ?(下位) ORA $7C1F ; ゴーレムで耐えられるダメージ?(上位) BNE $6DA7 LDA $58 ; 一時変数 汎用データ2 STA $24 LDA $7BE5 ; 現在行動中のキャラクタのレベル STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) CLC LDA $26 ADC #$E8 ; #$E8 = 232 STA $7C1E ; ゴーレムで耐えられるダメージ?(下位) LDA $27 ADC #$03 ; #$03 = 3 STA $7C1F ; ゴーレムで耐えられるダメージ?(上位) RTS LC26DA7: INC $0056 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 効果タイプ No.036(24): 回復量固定のヒットポイント回復(効果値・倍率・未使用) ;-------------------------------- LC26DAB: JSR $8252 ; 攻撃力 | 倍率 | 防御力設定 (汎用データ1 | 汎用データ2 | 0) JSR $84CF ; 倍率修正 (薬の知識があれば2倍) JMP $88C1 ; ダメージポイント & 相手のHP減少量設定 (現在調査中2) ;-------------------------------- ; 効果タイプ No.037(25): 回復量固定のマジックポイント回復(効果値・倍率・未使用) ;-------------------------------- LC26DB4: JSR $8252 ; 攻撃力 | 倍率 | 防御力設定 (汎用データ1 | 汎用データ2 | 0) JSR $84CF ; 倍率修正 (薬の知識があれば2倍) JMP $89DE ; 相手のMP回復量設定 ((攻撃力 - 防御力)×倍率) ;-------------------------------- ; 効果タイプ No.038(26): ヒットポイント・マジックポイント回復(回復するパラメータの種別・未使用・未使用) ;-------------------------------- LC26DBD: LDA $57 ; 一時変数 汎用データ1 BPL $6DC4 JSR $88DE ; HP全回復, 相手がアンデッド特性で、ボス属性がなければ、相手のHPを1〜9にする LC26DC4: LDA $57 ; 一時変数 汎用データ1 AND #$40 BEQ $6DCD JSR $89F7 ; MP全回復 LC26DCD: LDA $57 ; 一時変数 汎用データ1 AND #$20 BEQ $6DD6 JSR $8B4D ; HPが最大HPの半分回復, MPが最大MPの半分回復 LC26DD6: RTS ;-------------------------------- ; 効果タイプ No.039(27): 状態変化(状態変化1(永続的)・状態変化2(一時的)・状態変化3(補助魔法)) ;-------------------------------- LC26DD7: LDA #$5A ; #$5A = 90 STA $3ED8 ; サイクル設定値 JSR $90CD ; 相手の状態変化3に汎用データ3の状態を追加, 効果解除タイマー設定 LDA $58 ; 一時変数 汎用データ2 STA $59 ; 一時変数 汎用データ3 JSR $9039 ; LDA $57 ; 一時変数 汎用データ1 STA $59 ; 一時変数 汎用データ3 JMP $902B ; 相手の状態変化1に汎用データ3の状態を追加, タイマー設定 ;-------------------------------- ; 効果タイプ No.040(28): 固定ダメージ攻撃(命中率・ダメージ値(下位バイト)・ダメージ値(上位バイト)) ;-------------------------------- LC26DED: JSR $7EF6 ; 命中判定 (魔法攻撃系2, 汎用データ1のbit7がONならば命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6E11 LDA $58 ; 一時変数 汎用データ2 TAX STX $0E LDA $59 ; 一時変数 汎用データ3 REP #$20 ; A = 16bit JSR $01B1 ; 256倍する CLC ADC $0E CMP #$270F ; #$270F = 9999 BCC $6E0B LDA #$270F ; #$270F = 9999 LC26E0B: STA $7B6D ; 一時変数 相手のHP減少量 TDC SEP #$20 ; A = 8bit LC26E11: RTS ;-------------------------------- ; 効果タイプ No.041(29): 状態変化(命中率・死の宣告のカウント・状態変化4(その他)) ;-------------------------------- LC26E12: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2065,X ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) AND #$20 BNE $6E2A JSR $7EF6 ; 命中判定 (魔法攻撃系2, 汎用データ1のbit7がONならば命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6E2C LDA $58 ; 一時変数 汎用データ2 STA $3ED8 ; サイクル設定値 JMP $8E05 ; 相手の状態変化4に汎用データ3の状態を追加(追加しようとする状態が"10: 死の宣告"の場合、相手がすでに死の宣告状態であればミス) LC26E2A: INC $56 ; 一時変数 命中判定用? (0であれば命中) LC26E2C: RTS ;-------------------------------- ; 効果タイプ No.042(2A): 状態変化(スリップ)をともなう比率ダメージ属性攻撃(属性・効果比率・持続時間) ;-------------------------------- LC26E2D: LDA $57 ; 一時変数 汎用データ1 STA $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) JSR $87B5 ; 攻撃属性による各種処理 (相手の吸収と一致: 吸収フラグON, 無効と一致: ミスフラグON, 半減と一致: 汎用データ2が1/2, 弱点と一致: 汎用データ2が2倍) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6E4B JSR $8A4E ; 相手のHP減少量設定 (汎用データ2×相手の最大HP÷16) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) LDA $59 ; 一時変数 汎用データ3 BEQ $6E4B LDA $59 ; 一時変数 汎用データ3 STA $3ED8 ; サイクル設定値 LDA #$08 ; #$08 = 8 STA $59 ; 一時変数 汎用データ3 JSR $8E05 ; 相手の状態変化4に汎用データ3の状態を追加(追加しようとする状態が"10: 死の宣告"の場合、相手がすでに死の宣告状態であればミス) LC26E4B: RTS ;-------------------------------- ; 効果タイプ No.043(2B): 自分に対する状態変化をともなう比率ダメージ属性攻撃(属性・効果比率・状態変化1(永続的)) ;-------------------------------- LC26E4C: LDA $57 ; 一時変数 汎用データ1 STA $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) JSR $87B5 ; 攻撃属性による各種処理 (相手の吸収と一致: 吸収フラグON, 無効と一致: ミスフラグON, 半減と一致: 汎用データ2が1/2, 弱点と一致: 汎用データ2が2倍) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6E5D JSR $8A9D ; 相手のHP減少量設定 (汎用データ2×自分の現在HP÷16) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) JSR $90DB ; 自分の状態変化1に汎用データ3の状態を追加, 効果解除タイマー設定 LC26E5D: RTS ;-------------------------------- ; 効果タイプ No.044(2C): 状態変化(2種類のうちどちらかの効果)(状態変化1(永続的)・持続時間・状態変化2(一時的)) ;-------------------------------- LC26E5E: JSR $02A2 ; 0〜99の範囲の乱数取得 CMP #$32 ; #$32 = 50 BCS $6E6C LDA $57 ; 一時変数 汎用データ1 STA $59 ; 一時変数 汎用データ3 JMP $8CAC ; 相手の状態変化1に汎用データ3の状態を追加? (現在調査中) LC26E6C: JSR $8B7D ; 効果持続時間を設定する (汎用データ2のbit7がセットされている場合: 汎用データ2×2 + 自分のレベル÷4, セットされていない場合: (汎用データ2×2 + 自分のレベル÷4) - 相手のレベル÷4, セットされていない & 相手がボス属性である: 30固定) JMP $8D2E ; ;-------------------------------- ; 効果タイプ No.045(2D): 属性攻撃(レビテトで無効化できる)(未使用・効果値・属性) ;-------------------------------- LC26E72: JSR $7E03 ; 命中判定補助 (相手がレビテトならミス) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6E93 LDA $59 ; 一時変数 汎用データ3 STA $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) JSR $7F30 ; 攻撃力 | 倍率 | 防御力設定 (汎用データ2×(1〜9/8) | (自分のレベル×魔力)÷256 + 4 | 相手の魔法防御力) JSR $8366 ; 攻撃力修正 (目標を全体化した場合に1/2?) JSR $84F3 ; 倍率 | 防御力修正 (相手がシェルなら1/2 | 相手が蛙なら0) JSR $866D ; 攻撃力修正 (攻撃属性とパワーアップ属性とが一致すれば1.5倍) JSR $876E ; 攻撃属性による倍率 | 防御力修正 (相手の吸収と一致: 吸収フラグON, 防御力0, ????と一致: ミスフラグON, 無効と一致: ミスフラグON, 半減と一致: 倍率1/2, 弱点と一致: 倍率2倍, 防御力0) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6E93 JSR $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) LC26E93: LDA $7C97 BEQ $6E9A STZ $56 ; 一時変数 命中判定用? (0であれば命中) LC26E9A: RTS ;-------------------------------- ; 効果タイプ No.046(2E): しにがみのつるぎ(命中率・効果値・状態変化1(永続的)) ;-------------------------------- LC26E9B: JSR $7F1B ; 命中判定 (物理攻撃系2) (汎用データ1のbit7がONならば命中, 命中率設定: 汎用データ1 | 回避率設定: 物理回避率, アビリティ・装備品による回避判定, 回避率修正: 相手が蛙なら0, 相手が小人なら2倍(上限: 99), 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6EB0 JSR $7FC2 ; 攻撃力 | 倍率 | 防御力設定 (汎用データ2×(1〜9/8) | (自分のレベル×魔力)÷256 + 4 | 相手の物理防御力) JSR $8512 ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) JSR $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) JSR $8CAC ; 相手の状態変化1に汎用データ3の状態を追加? (現在調査中) STZ $56 ; 一時変数 命中判定用? (0であれば命中) LC26EB0: RTS ;-------------------------------- ; 効果タイプ No.047(2F): 該当する行動なし(モンスタータイプ・未使用・状態変化1(永続的)) ;-------------------------------- LC26EB1: JSR $7E5B ; 命中判定補助 (相手のモンスタータイプと汎用データ1とが一致していなければミス) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6EBB JSR $8CAC ; 相手の状態変化1に汎用データ3の状態を追加? (現在調査中) LC26EBB: RTS ;-------------------------------- ; 効果タイプ No.048(30): 素手・けり(クリティカルヒット率・未使用・未使用) ;-------------------------------- LC26EBC: JSR $7C47 ; 命中率 | 回避率設定 (100% | 物理回避率) JSR $7EBE ; 命中判定 (物理攻撃系1) (相手が混乱・麻痺・睡眠状態であれば命中, 自分が"必ず命中"状態であれば命中, 相手の$2064によって命中, アビリティ・装備品による回避判定, 回避率修正: 相手が蛙なら0, 相手が小人なら2倍(上限: 99), 命中率修正: 自分が暗闇なら1/4, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BEQ $6ECB LDA #$80 ; #$80 = 128 STA $56 ; 一時変数 命中判定用? (0であれば命中) RTS LC26ECB: JSR $803E ; 攻撃力 | 倍率 | 防御力設定 (格闘なし: (0〜自分のレベル/4)(+ 7バイト目) | 2 | 相手の物理防御力 / 格闘あり: レベル×2 + (0〜自分のレベル/4)(+ 7バイト目)(+50(カイザーナックル)) | (自分のレベル×力)÷256 + 2 | 相手の物理防御力) JSR $839B ; 倍率修正 (自分が後列であれば1/2, 相手が後列であれば1/2) JSR $83BD ; 攻撃力 | 倍率 | 防御力修正 (なげるでの攻撃ならば2倍, 自分の$201Fのbit5がONならば1/2, 相手が人間系で自分の$201Fのbit0がONならば2倍, 相手が守り状態ならば0 | ためる状態ならば2倍, 乱れ打ちならば1/2, 相手が防御状態ならば1/2 | 防御無視攻撃ならば0) JSR $8512 ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) JSR $8533 ; 攻撃力修正 (自分が蛙・小人なら3, 自分がバーサクなら3/2) JSR $87DF ; クリティカルによる攻撃力 | 防御力設定 (<汎用データ1>%の確率でクリティカル, 攻撃力2倍, 防御力0) JSR $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) RTS ;-------------------------------- ; 効果タイプ No.049(31): 一般的な剣(攻撃属性・追加効果発動率・追加効果の番号) ;-------------------------------- LC26EE1: JSR $7C47 ; 命中率 | 回避率設定 (100% | 物理回避率) JSR $7EBE ; 命中判定 (物理攻撃系1) (相手が混乱・麻痺・睡眠状態であれば命中, 自分が"必ず命中"状態であれば命中, 相手の$2064によって命中, アビリティ・装備品による回避判定, 回避率修正: 相手が蛙なら0, 相手が小人なら2倍(上限: 99), 命中率修正: 自分が暗闇なら1/4, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6F19 JSR $7FFC ; 攻撃力 | 倍率 | 防御力設定 (武器攻撃力×(1〜9/8) | (自分のレベル×力)÷128 + 2 | 相手の物理防御力) JSR $839B ; 倍率修正 (自分が後列であれば1/2, 相手が後列であれば1/2) JSR $83BD ; 攻撃力 | 倍率 | 防御力修正 (なげるでの攻撃ならば2倍, 自分の$201Fのbit5がONならば1/2, 相手が人間系で自分の$201Fのbit0がONならば2倍, 相手が守り状態ならば0 | ためる状態ならば2倍, 乱れ打ちならば1/2, 相手が防御状態ならば1/2 | 防御無視攻撃ならば0) JSR $8430 ; 倍率修正 (自分が両手持ちで、$2011と$2012が0で、右手・左手のどちらかが空いていれば2倍) JSR $8512 ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) JSR $8533 ; 攻撃力修正 (自分が蛙・小人なら3, 自分がバーサクなら3/2) JSR $8684 ; 魔法剣関連 (フレア剣なら攻撃力+100, 防御力1/4 / 属性が相手の吸収と一致: 吸収フラグON, 防御力0, 無効と一致: ミスフラグON, 半減と一致: 倍率1/2, 弱点が4倍属性と一致: 相手がボス属性でない場合は即死(ゾンビ時除く)、ある場合は攻撃力4倍で防御力0, 弱点が3倍属性と一致: 攻撃力3倍で防御力0, 弱点が2倍属性と一致: 攻撃力2倍で防御力0) LDA $61 ; 一時変数 攻撃エフェクトフラグ(2)? BNE $6F1D LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6F19 LDA $57 ; 一時変数 汎用データ1 STA $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) JSR $8734 ; 攻撃属性による倍率 | 防御力修正 (相手の吸収と一致: 吸収フラグON, 防御力0, 無効と一致: ミスフラグON, 半減と一致: 倍率1/2, 弱点と一致: 倍率2倍, 防御力0) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6F19 JSR $8811 ; ダメージポイント & 相手のHP減少量設定 (現在調査中1) JMP $8BCF ; LC26F19: LDA #$80 ; #$80 = 128 STA $56 ; 一時変数 命中判定用? (0であれば命中) LC26F1D: RTS ;-------------------------------- ; 効果タイプ No.050(32): 一般的なナイフ・短刀(攻撃属性・追加効果発動率・追加効果の番号) ;-------------------------------- LC26F1E: JSR $7C53 ; 命中率 | 回避率設定 (100% | 物理回避率÷2) JSR $7EBE ; 命中判定 (物理攻撃系1) (相手が混乱・麻痺・睡眠状態であれば命中, 自分が"必ず命中"状態であれば命中, 相手の$2064によって命中, アビリティ・装備品による回避判定, 回避率修正: 相手が蛙なら0, 相手が小人なら2倍(上限: 99), 命中率修正: 自分が暗闇なら1/4, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6F53 JSR $80D4 ; 攻撃力 | 倍率 | 防御力設定 (武器攻撃力 + (0〜3) | ((自分の力×レベル)÷128 + 2) + ((素速さ×レベル) % 256)÷128 | 相手の物理防御力) JSR $839B ; 倍率修正 (自分が後列であれば1/2, 相手が後列であれば1/2) JSR $83BD ; 攻撃力 | 倍率 | 防御力修正 (なげるでの攻撃ならば2倍, 自分の$201Fのbit5がONならば1/2, 相手が人間系で自分の$201Fのbit0がONならば2倍, 相手が守り状態ならば0 | ためる状態ならば2倍, 乱れ打ちならば1/2, 相手が防御状態ならば1/2 | 防御無視攻撃ならば0) JSR $8512 ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) JSR $8533 ; 攻撃力修正 (自分が蛙・小人なら3, 自分がバーサクなら3/2) JSR $8684 ; 魔法剣関連 (フレア剣なら攻撃力+100, 防御力1/4 / 属性が相手の吸収と一致: 吸収フラグON, 防御力0, 無効と一致: ミスフラグON, 半減と一致: 倍率1/2, 弱点が4倍属性と一致: 相手がボス属性でない場合は即死(ゾンビ時除く)、ある場合は攻撃力4倍で防御力0, 弱点が3倍属性と一致: 攻撃力3倍で防御力0, 弱点が2倍属性と一致: 攻撃力2倍で防御力0) LDA $61 ; 一時変数 攻撃エフェクトフラグ(2)? BNE $6F57 LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6F53 LDA $57 ; 一時変数 汎用データ1 STA $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) JSR $8734 ; 攻撃属性による倍率 | 防御力修正 (相手の吸収と一致: 吸収フラグON, 防御力0, 無効と一致: ミスフラグON, 半減と一致: 倍率1/2, 弱点と一致: 倍率2倍, 防御力0) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6F53 JSR $8811 ; ダメージポイント & 相手のHP減少量設定 (現在調査中1) JMP $8BCF ; LC26F53: LDA #$80 ; #$80 = 128 STA $56 ; 一時変数 命中判定用? (0であれば命中) LC26F57: RTS ;-------------------------------- ; 効果タイプ No.051(33): 一般的な槍(攻撃属性・追加効果発動率・追加効果の番号) ;-------------------------------- LC26F58: JSR $7C47 ; 命中率 | 回避率設定 (100% | 物理回避率) JSR $7EBE ; 命中判定 (物理攻撃系1) (相手が混乱・麻痺・睡眠状態であれば命中, 自分が"必ず命中"状態であれば命中, 相手の$2064によって命中, アビリティ・装備品による回避判定, 回避率修正: 相手が蛙なら0, 相手が小人なら2倍(上限: 99), 命中率修正: 自分が暗闇なら1/4, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6F7F JSR $7FFC ; 攻撃力 | 倍率 | 防御力設定 (武器攻撃力×(1〜9/8) | (自分のレベル×力)÷128 + 2 | 相手の物理防御力) JSR $83BD ; 攻撃力 | 倍率 | 防御力修正 (なげるでの攻撃ならば2倍, 自分の$201Fのbit5がONならば1/2, 相手が人間系で自分の$201Fのbit0がONならば2倍, 相手が守り状態ならば0 | ためる状態ならば2倍, 乱れ打ちならば1/2, 相手が防御状態ならば1/2 | 防御無視攻撃ならば0) JSR $8452 ; 倍率修正 (ジャンプしている場合は2倍 or それ以外の場合は自分が後列であれば1/2, 相手が後列であれば1/2) JSR $8512 ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) JSR $8533 ; 攻撃力修正 (自分が蛙・小人なら3, 自分がバーサクなら3/2) LDA $57 ; 一時変数 汎用データ1 STA $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) JSR $8734 ; 攻撃属性による倍率 | 防御力修正 (相手の吸収と一致: 吸収フラグON, 防御力0, 無効と一致: ミスフラグON, 半減と一致: 倍率1/2, 弱点と一致: 倍率2倍, 防御力0) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6F7F JMP $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) LC26F7F: LDA #$80 ; #$80 = 128 STA $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 効果タイプ No.052(34): 一般的な斧・ハンマー・一部の杖(命中率・追加効果発動率・追加効果の番号) ;-------------------------------- LC26F84: JSR $7C60 ; 命中率 | 回避率設定 (汎用データ1 | 物理回避率) ※C27C3Bと同じ JSR $7EBE ; 命中判定 (物理攻撃系1) (相手が混乱・麻痺・睡眠状態であれば命中, 自分が"必ず命中"状態であれば命中, 相手の$2064によって命中, アビリティ・装備品による回避判定, 回避率修正: 相手が蛙なら0, 相手が小人なら2倍(上限: 99), 命中率修正: 自分が暗闇なら1/4, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6FA3 JSR $812B ; 攻撃力 | 倍率 | 防御力設定 (武器攻撃力×(1〜3/2) | (自分の力×レベル)÷128 + 2 | 相手の物理防御力÷4) JSR $839B ; 倍率修正 (自分が後列であれば1/2, 相手が後列であれば1/2) JSR $83BD ; 攻撃力 | 倍率 | 防御力修正 (なげるでの攻撃ならば2倍, 自分の$201Fのbit5がONならば1/2, 相手が人間系で自分の$201Fのbit0がONならば2倍, 相手が守り状態ならば0 | ためる状態ならば2倍, 乱れ打ちならば1/2, 相手が防御状態ならば1/2 | 防御無視攻撃ならば0) JSR $8430 ; 倍率修正 (自分が両手持ちで、$2011と$2012が0で、右手・左手のどちらかが空いていれば2倍) JSR $8512 ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) JSR $8533 ; 攻撃力修正 (自分が蛙・小人なら3, 自分がバーサクなら3/2) JMP $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) LC26FA3: LDA #$80 ; #$80 = 128 STA $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 効果タイプ No.053(35): 状態変化効果のある弓矢(命中率・状態変化発動率・状態変化) ;-------------------------------- LC26FA8: JSR $7C6C ; 命中率 | 回避率設定 (汎用データ1 | 物理回避率÷2) JSR $7EBE ; 命中判定 (物理攻撃系1) (相手が混乱・麻痺・睡眠状態であれば命中, 自分が"必ず命中"状態であれば命中, 相手の$2064によって命中, アビリティ・装備品による回避判定, 回避率修正: 相手が蛙なら0, 相手が小人なら2倍(上限: 99), 命中率修正: 自分が暗闇なら1/4, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6FC4 JSR $80D4 ; 攻撃力 | 倍率 | 防御力設定 (武器攻撃力 + (0〜3) | ((自分の力×レベル)÷128 + 2) + ((素速さ×レベル) % 256)÷128 | 相手の物理防御力) JSR $83BD ; 攻撃力 | 倍率 | 防御力修正 (なげるでの攻撃ならば2倍, 自分の$201Fのbit5がONならば1/2, 相手が人間系で自分の$201Fのbit0がONならば2倍, 相手が守り状態ならば0 | ためる状態ならば2倍, 乱れ打ちならば1/2, 相手が防御状態ならば1/2 | 防御無視攻撃ならば0) JSR $8512 ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) JSR $8533 ; 攻撃力修正 (自分が蛙・小人なら3, 自分がバーサクなら3/2) JSR $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) JMP $8BF9 ; LC26FC4: LDA #$80 ; #$80 = 128 STA $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 効果タイプ No.054(36): 属性・クリティカルヒットのある弓矢(命中率・クリティカルヒット率・攻撃属性) ;-------------------------------- LC26FC9: JSR $7C6C ; 命中率 | 回避率設定 (汎用データ1 | 物理回避率÷2) JSR $7EBE ; 命中判定 (物理攻撃系1) (相手が混乱・麻痺・睡眠状態であれば命中, 自分が"必ず命中"状態であれば命中, 相手の$2064によって命中, アビリティ・装備品による回避判定, 回避率修正: 相手が蛙なら0, 相手が小人なら2倍(上限: 99), 命中率修正: 自分が暗闇なら1/4, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6FF4 JSR $80D4 ; 攻撃力 | 倍率 | 防御力設定 (武器攻撃力 + (0〜3) | ((自分の力×レベル)÷128 + 2) + ((素速さ×レベル) % 256)÷128 | 相手の物理防御力) JSR $83BD ; 攻撃力 | 倍率 | 防御力修正 (なげるでの攻撃ならば2倍, 自分の$201Fのbit5がONならば1/2, 相手が人間系で自分の$201Fのbit0がONならば2倍, 相手が守り状態ならば0 | ためる状態ならば2倍, 乱れ打ちならば1/2, 相手が防御状態ならば1/2 | 防御無視攻撃ならば0) JSR $8512 ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) JSR $8533 ; 攻撃力修正 (自分が蛙・小人なら3, 自分がバーサクなら3/2) LDA $59 ; 一時変数 汎用データ3 STA $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) JSR $8734 ; 攻撃属性による倍率 | 防御力修正 (相手の吸収と一致: 吸収フラグON, 防御力0, 無効と一致: ミスフラグON, 半減と一致: 倍率1/2, 弱点と一致: 倍率2倍, 防御力0) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $6FF4 LDA $58 ; 一時変数 汎用データ2 STA $57 ; 一時変数 汎用データ1 JSR $87DF ; クリティカルによる攻撃力 | 防御力設定 (<汎用データ1>%の確率でクリティカル, 攻撃力2倍, 防御力0) JMP $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) LC26FF4: LDA #$80 ; #$80 = 128 STA $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 効果タイプ No.055(37): 一般的な刀(クリティカルヒット率・追加効果発動率・追加効果の番号) ;-------------------------------- LC26FF9: JSR $7C47 ; 命中率 | 回避率設定 (100% | 物理回避率) JSR $7EBE ; 命中判定 (物理攻撃系1) (相手が混乱・麻痺・睡眠状態であれば命中, 自分が"必ず命中"状態であれば命中, 相手の$2064によって命中, アビリティ・装備品による回避判定, 回避率修正: 相手が蛙なら0, 相手が小人なら2倍(上限: 99), 命中率修正: 自分が暗闇なら1/4, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $701B JSR $7FFC ; 攻撃力 | 倍率 | 防御力設定 (武器攻撃力×(1〜9/8) | (自分のレベル×力)÷128 + 2 | 相手の物理防御力) JSR $839B ; 倍率修正 (自分が後列であれば1/2, 相手が後列であれば1/2) JSR $83BD ; 攻撃力 | 倍率 | 防御力修正 (なげるでの攻撃ならば2倍, 自分の$201Fのbit5がONならば1/2, 相手が人間系で自分の$201Fのbit0がONならば2倍, 相手が守り状態ならば0 | ためる状態ならば2倍, 乱れ打ちならば1/2, 相手が防御状態ならば1/2 | 防御無視攻撃ならば0) JSR $8430 ; 倍率修正 (自分が両手持ちで、$2011と$2012が0で、右手・左手のどちらかが空いていれば2倍) JSR $8512 ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) JSR $8533 ; 攻撃力修正 (自分が蛙・小人なら3, 自分がバーサクなら3/2) JSR $87DF ; クリティカルによる攻撃力 | 防御力設定 (<汎用データ1>%の確率でクリティカル, 攻撃力2倍, 防御力0) JMP $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) LC2701B: LDA #$80 ; #$80 = 128 STA $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 効果タイプ No.056(38): 鞭・その他(命中率・追加効果発動率・追加効果の番号) ;-------------------------------- LC27020: JSR $7C60 ; 命中率 | 回避率設定 (汎用データ1 | 物理回避率) ※C27C3Bと同じ JSR $7EBE ; 命中判定 (物理攻撃系1) (相手が混乱・麻痺・睡眠状態であれば命中, 自分が"必ず命中"状態であれば命中, 相手の$2064によって命中, アビリティ・装備品による回避判定, 回避率修正: 相手が蛙なら0, 相手が小人なら2倍(上限: 99), 命中率修正: 自分が暗闇なら1/4, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7039 JSR $80D4 ; 攻撃力 | 倍率 | 防御力設定 (武器攻撃力 + (0〜3) | ((自分の力×レベル)÷128 + 2) + ((素速さ×レベル) % 256)÷128 | 相手の物理防御力) JSR $83BD ; 攻撃力 | 倍率 | 防御力修正 (なげるでの攻撃ならば2倍, 自分の$201Fのbit5がONならば1/2, 相手が人間系で自分の$201Fのbit0がONならば2倍, 相手が守り状態ならば0 | ためる状態ならば2倍, 乱れ打ちならば1/2, 相手が防御状態ならば1/2 | 防御無視攻撃ならば0) JSR $8512 ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) JSR $8533 ; 攻撃力修正 (自分が蛙・小人なら3, 自分がバーサクなら3/2) JMP $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) LC27039: LDA #$80 ; #$80 = 128 STA $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 効果タイプ No.057(39): 一般的なベル(0x00・0x00・0x00) ;-------------------------------- LC2703E: JSR $7DF1 ; 命中判定補助 (ミュート状態ならミス) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $704E JSR $816F ; 攻撃力 | 倍率 | 防御力設定 (武器攻撃力×(1/2〜1) | ((自分の素速さ×レベル)÷128 + 2) + (魔力×レベル)÷128 | 相手の魔法防御力) JSR $84F3 ; 倍率 | 防御力修正 (相手がシェルなら1/2 | 相手が蛙なら0) JMP $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) LC2704E: LDA #$80 ; #$80 = 128 STA $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 効果タイプ No.058(3A): 追加効果のあるハンマーなど(命中率・追加効果発動率・追加効果の番号) ;-------------------------------- LC27053: JSR $7C60 ; 命中率 | 回避率設定 (汎用データ1 | 物理回避率) ※C27C3Bと同じ JSR $7EBE ; 命中判定 (物理攻撃系1) (相手が混乱・麻痺・睡眠状態であれば命中, 自分が"必ず命中"状態であれば命中, 相手の$2064によって命中, アビリティ・装備品による回避判定, 回避率修正: 相手が蛙なら0, 相手が小人なら2倍(上限: 99), 命中率修正: 自分が暗闇なら1/4, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $706F JSR $812B ; 攻撃力 | 倍率 | 防御力設定 (武器攻撃力×(1〜3/2) | (自分の力×レベル)÷128 + 2 | 相手の物理防御力÷4) JSR $83BD ; 攻撃力 | 倍率 | 防御力修正 (なげるでの攻撃ならば2倍, 自分の$201Fのbit5がONならば1/2, 相手が人間系で自分の$201Fのbit0がONならば2倍, 相手が守り状態ならば0 | ためる状態ならば2倍, 乱れ打ちならば1/2, 相手が防御状態ならば1/2 | 防御無視攻撃ならば0) JSR $8430 ; 倍率修正 (自分が両手持ちで、$2011と$2012が0で、右手・左手のどちらかが空いていれば2倍) JSR $8512 ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) JSR $8533 ; 攻撃力修正 (自分が蛙・小人なら3, 自分がバーサクなら3/2) JMP $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) LC2706F: LDA #$80 ; #$80 = 128 STA $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 効果タイプ No.059(3B): 一般的なロッド(命中率・クリティカルヒット率・攻撃属性) ;-------------------------------- LC27074: JSR $7C79 ; 命中率 | 回避率設定 (汎用データ1 | 魔法回避率) JSR $7C97 ; 魔法回避判定 (混乱・麻痺・睡眠・ストップ状態でない場合、以降の回避判定を行う / イージスのたて: 33%) JSR $7D8B ; 命中率 | 回避率修正 (相手がシェルなら1/2(下限: 1) | 相手が蛙なら0) JSR $7E12 ; 命中判定補助 (乱数で命中判定, 相手の状態は関係なし) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7098 JSR $81CB ; 攻撃力 | 倍率 | 防御力設定 (武器攻撃力×(0〜1) | (自分の魔力×レベル)÷256 + 2 | 相手の魔法防御力) JSR $84F3 ; 倍率 | 防御力修正 (相手がシェルなら1/2 | 相手が蛙なら0) LDA $59 ; 一時変数 汎用データ3 STA $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) JSR $8734 ; 攻撃属性による倍率 | 防御力修正 (相手の吸収と一致: 吸収フラグON, 防御力0, 無効と一致: ミスフラグON, 半減と一致: 倍率1/2, 弱点と一致: 倍率2倍, 防御力0) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7098 JMP $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) LC27098: LDA #$80 ; #$80 = 128 STA $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 効果タイプ No.060(3C): マジックポイントを消費してクリティカルヒットする武器(命中率・攻撃力上昇値・消費マジックポイント) ;-------------------------------- LC2709D: JSR $7C60 ; 命中率 | 回避率設定 (汎用データ1 | 物理回避率) ※C27C3Bと同じ JSR $7EBE ; 命中判定 (物理攻撃系1) (相手が混乱・麻痺・睡眠状態であれば命中, 自分が"必ず命中"状態であれば命中, 相手の$2064によって命中, アビリティ・装備品による回避判定, 回避率修正: 相手が蛙なら0, 相手が小人なら2倍(上限: 99), 命中率修正: 自分が暗闇なら1/4, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $70BF JSR $812B ; 攻撃力 | 倍率 | 防御力設定 (武器攻撃力×(1〜3/2) | (自分の力×レベル)÷128 + 2 | 相手の物理防御力÷4) JSR $8467 ; 攻撃力 | 倍率修正 (汎用データ2だけ増加 | (自分のレベル×魔力)÷128だけ増加) (MPを汎用データ3だけ消費/MP不足時は何もしない) JSR $839B ; 倍率修正 (自分が後列であれば1/2, 相手が後列であれば1/2) JSR $83BD ; 攻撃力 | 倍率 | 防御力修正 (なげるでの攻撃ならば2倍, 自分の$201Fのbit5がONならば1/2, 相手が人間系で自分の$201Fのbit0がONならば2倍, 相手が守り状態ならば0 | ためる状態ならば2倍, 乱れ打ちならば1/2, 相手が防御状態ならば1/2 | 防御無視攻撃ならば0) JSR $8430 ; 倍率修正 (自分が両手持ちで、$2011と$2012が0で、右手・左手のどちらかが空いていれば2倍) JSR $8512 ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) JSR $8533 ; 攻撃力修正 (自分が蛙・小人なら3, 自分がバーサクなら3/2) JMP $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) LC270BF: LDA #$80 ; #$80 = 128 STA $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 効果タイプ No.061(3D): 状態変化を伴う瀕死攻撃(命中率・持続時間・状態変化2(一時的)) ;-------------------------------- LC270C4: JSR $7EF6 ; 命中判定 (魔法攻撃系2, 汎用データ1のbit7がONならば命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $70DA JSR $88FD ; 相手がボス属性でない場合は、相手のHPを1〜9にする LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $70DA JSR $8B7D ; 効果持続時間を設定する (汎用データ2のbit7がセットされている場合: 汎用データ2×2 + 自分のレベル÷4, セットされていない場合: (汎用データ2×2 + 自分のレベル÷4) - 相手のレベル÷4, セットされていない & 相手がボス属性である: 30固定) JSR $8D2E ; STZ $56 ; 一時変数 命中判定用? (0であれば命中) LC270DA: RTS ;-------------------------------- ; 効果タイプ No.062(3E): しっぱいさく(瀕死効果になる確率・持続時間・状態変化4) ;-------------------------------- LC270DB: JSR $02A2 ; 0〜99の範囲の乱数取得 CMP $57 ; 一時変数 汎用データ1 BCS $70E5 JMP $88FD ; 相手がボス属性でない場合は、相手のHPを1〜9にする LC270E5: JSR $8B7D ; 効果持続時間を設定する (汎用データ2のbit7がセットされている場合: 汎用データ2×2 + 自分のレベル÷4, セットされていない場合: (汎用データ2×2 + 自分のレベル÷4) - 相手のレベル÷4, セットされていない & 相手がボス属性である: 30固定) JSR $8E05 ; 相手の状態変化4に汎用データ3の状態を追加(追加しようとする状態が"10: 死の宣告"の場合、相手がすでに死の宣告状態であればミス) RTS ;-------------------------------- ; 効果タイプ No.063(3F): 戦闘不能時に状態変化を伴う攻撃(未使用・効果値・未使用) ;-------------------------------- LC270EC: JSR $7C97 ; 魔法回避判定 (混乱・麻痺・睡眠・ストップ状態でない場合、以降の回避判定を行う / イージスのたて: 33%) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7118 JSR $7FA7 ; 攻撃力 | 倍率 | 防御力設定 (50〜200 | 汎用データ2 | 相手の魔法防御力) JSR $84F3 ; 倍率 | 防御力修正 (相手がシェルなら1/2 | 相手が蛙なら0) JSR $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2006,X ; ヒットポイント(下位) STA $0E LDA $2007,X ; ヒットポイント(上位) STA $0F LDX $7B6D ; 一時変数 相手のHP減少量 CPX $0E BCC $7118 LDX $49 ; 一時変数 相手アドレスへのインデックス LDA #$02 ; #$02 = 2 STA $59 ; 一時変数 汎用データ3 JSR $8CAC ; 相手の状態変化1に汎用データ3の状態を追加? (現在調査中) LC27118: RTS ;-------------------------------- ; 効果タイプ No.064(40): 隊列変更(命中率・隊列変更の種別・未使用) ;-------------------------------- LC27119: JSR $7EF6 ; 命中判定 (魔法攻撃系2, 汎用データ1のbit7がONならば命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7133 LDA $58 ; 一時変数 汎用データ2 BPL $7127 JMP $9101 ; 相手の隊列を入れ替える LC27127: LDA $58 ; 一時変数 汎用データ2 AND #$40 BEQ $7130 JMP $9117 ; 相手を前列に移動させる LC27130: JMP $9122 ; 自分を後列に移動させる LC27133: RTS ;-------------------------------- ; 効果タイプ No.065(41) ;-------------------------------- LC27134: JSR $8261 ; 攻撃力 | 倍率 | 防御力設定 (汎用データ1×(1〜2) | (自分のレベル×力)÷128 | 相手の物理防御力) JSR $8512 ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) JSR $8533 ; 攻撃力修正 (自分が蛙・小人なら3, 自分がバーサクなら3/2) JMP $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) ;-------------------------------- ; 効果タイプ No.066(42): 回復 + 状態変化治療(命中率・効果値・状態変化1(永続的)) ;-------------------------------- LC27140: JSR $7F30 ; 攻撃力 | 倍率 | 防御力設定 (汎用データ2×(1〜9/8) | (自分のレベル×魔力)÷256 + 4 | 相手の魔法防御力) JSR $88C1 ; ダメージポイント & 相手のHP減少量設定 (現在調査中2) LDA $57 ; 一時変数 汎用データ1 BPL $714D JMP $8EB6 LC2714D: JMP $8F11 ; ;-------------------------------- ; 効果タイプ No.067(43): ぬすむ(成功率・未使用・未使用) ;-------------------------------- LC27150: STZ $7C9A LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $206B,X ; アイテムを盗んだかどうかのフラグ(0: まだ盗んでいない) BEQ $715F INC $7C9A BRA $7196 LC2715F: SEC LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) SBC #$04 ; #$04 = 4 ASL TAX REP #$20 ; A = 16bit LDA $4020,X ; モンスター番号 JSR $01B7 ; 4倍する TAX TDC SEP #$20 ; A = 8bit LDA $D05000,X ; FILEPOS_MONITEM ORA $D05001,X BNE $7181 INC $7C9A BRA $7196 LC27181: JSR $7C85 ; 命中率 | 回避率設定 (汎用データ1, 「盗賊のこて」装備時は2倍 | 0%) JSR $7E12 ; 命中判定補助 (乱数で命中判定, 相手の状態は関係なし) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7196 JSR $9208 ; 「ぬすむ」処理 LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7196 LDA #$21 ; #$21 = 33 BRA $71A3 LC27196: INC $56 ; 一時変数 命中判定用? (0であれば命中) LDA $7C9A BEQ $71A1 LDA #$4B ; #$4B = 75 BRA $71A3 LC271A1: LDA #$22 ; #$22 = 34 LC271A3: PHA JSR $9965 ; Yレジスタ = ($7B2C)×12, Xレジスタ = ($7B2C)×24 LDA $4746 CMP #$0B ; #$0B = 11 BEQ $71B2 CMP #$33 ; #$33 = 51 BNE $71B4 LC271B2: TDC TAX LC271B4: PLA STA $3C5F,X RTS ;-------------------------------- ; 効果タイプ No.068(44): とうそう(未使用・未使用・未使用) ;-------------------------------- LC271B9: LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCC $71D6 SEC SBC #$04 ; #$04 = 4 TAX INC $7CAE,X LDA $7C0A ; モンスターを倒したかどうかのフラグ (ON: 倒した, OFF: 倒していない) JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $7C0A ; モンスターを倒したかどうかのフラグ (ON: 倒した, OFF: 倒していない) LDX $32 ; 一時変数 自分アドレスへのインデックス LDA #$80 ; #$80 = 128 STA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) LC271D6: RTS ;-------------------------------- ; 効果タイプ No.069(45): なげる(命中率・未使用・未使用) ;-------------------------------- LC271D7: LDA $57 ; 一時変数 汎用データ1 STA $4E ; 一時変数 命中率 TDC STA $4F ; 一時変数 回避率 JSR $7EBE ; 命中判定 (物理攻撃系1) (相手が混乱・麻痺・睡眠状態であれば命中, 自分が"必ず命中"状態であれば命中, 相手の$2064によって命中, アビリティ・装備品による回避判定, 回避率修正: 相手が蛙なら0, 相手が小人なら2倍(上限: 99), 命中率修正: 自分が暗闇なら1/4, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $71F4 JSR $8299 ; 攻撃力 | 倍率 | 防御力設定 (何らかのアイテムの攻撃力×(1〜9/8) | (自分の力×レベル)÷128 + (素速さ×レベル)÷128 + 2 | 相手の物理防御力) JSR $83BD ; 攻撃力 | 倍率 | 防御力修正 (なげるでの攻撃ならば2倍, 自分の$201Fのbit5がONならば1/2, 相手が人間系で自分の$201Fのbit0がONならば2倍, 相手が守り状態ならば0 | ためる状態ならば2倍, 乱れ打ちならば1/2, 相手が防御状態ならば1/2 | 防御無視攻撃ならば0) JSR $8512 ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) JSR $8533 ; 攻撃力修正 (自分が蛙・小人なら3, 自分がバーサクなら3/2) JSR $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) LC271F4: RTS ;-------------------------------- ; 効果タイプ No.070(46): ぜになげ(消費ギルの係数・ダメージの係数・未使用) ;-------------------------------- LC271F5: JSR $830A ; 攻撃力 | 倍率 | 防御力設定 (レベル + 10, 所持金が(汎用データ1×レベル)未満であれば0 | 汎用データ2 | 相手の物理防御力) JMP $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) ;-------------------------------- ; 効果タイプ No.071(47): なだめる(未使用・持続時間・状態変化3(補助魔法)) ;-------------------------------- LC271FB: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2065,X ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) AND #$04 BEQ $720A JSR $8B7D ; 効果持続時間を設定する (汎用データ2のbit7がセットされている場合: 汎用データ2×2 + 自分のレベル÷4, セットされていない場合: (汎用データ2×2 + 自分のレベル÷4) - 相手のレベル÷4, セットされていない & 相手がボス属性である: 30固定) JMP $8DCB ; LC2720A: INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 効果タイプ No.072(48): とらえる(未使用・未使用・未使用) ;-------------------------------- LC2720D: JSR $9965 ; Yレジスタ = ($7B2C)×12, Xレジスタ = ($7B2C)×24 STX $14 LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2066,X ; 各種フラグ(08: とらえる耐性, 10: あやつる耐性, 80: ライブラのHP表示が「????」) AND #$08 BEQ $721F LDA #$4F ; #$4F = 79 BRA $7248 LC2721F: LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$02 BNE $7251 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2039,X ; 装備特殊効果フラグ(01: HP1/2で捕獲, 02: 不死特性付加, 04: 剣の舞確率上昇, 08: 消費MP1/2, 10: 盗み成功率2倍, 20: 格闘効果付加, 40: エルフのマント, 80: イージスのたて) AND #$01 BEQ $7246 LDX $49 ; 一時変数 相手アドレスへのインデックス REP #$20 ; A = 16bit LDA $2008,X ; 最大ヒットポイント(下位) LSR CMP $2006,X ; ヒットポイント(下位) BCS $7241 TDC SEP #$20 ; A = 8bit BRA $7246 LC27241: TDC SEP #$20 ; A = 8bit BRA $7251 LC27246: LDA #$25 ; #$25 = 37 LC27248: LDX $14 STA $3C5F,X INC $56 ; 一時変数 命中判定用? (0であれば命中) BRA $7254 LC27251: JSR $93A5 ; LC27254: RTS ;-------------------------------- ; 効果タイプ No.073(49): いろめ/リリスのロッド(命中率・追加効果発動率・追加効果の番号) ;-------------------------------- LC27255: JSR $7C0D ; 命中率 | 回避率設定 ((汎用データ1 + (レベル関連?)) - (相手のレベル + 相手のレベル修正値?) | 魔法回避率) JSR $7D7F ; 命中率修正 (自分の剣の舞確率上昇フラグがONなら2倍) JSR $7E12 ; 命中判定補助 (乱数で命中判定, 相手の状態は関係なし) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7265 JSR $8E3A ; 相手がボス属性でない場合は、相手のフラグ($201E)に$08を追加 LC27265: RTS ;-------------------------------- ; 効果タイプ No.075(4B): レベル系状態変化(レベル・未使用・状態変化1(永続的)) ;-------------------------------- LC27266: JSR $7E67 ; 命中判定補助 (相手のレベルが汎用データ1の倍数ならばヒット) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $728C LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2065,X ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) AND #$01 BNE $727D LDA $2039,X ; 装備特殊効果フラグ(01: HP1/2で捕獲, 02: 不死特性付加, 04: 剣の舞確率上昇, 08: 消費MP1/2, 10: 盗み成功率2倍, 20: 格闘効果付加, 40: エルフのマント, 80: イージスのたて) AND #$02 BEQ $7289 LC2727D: REP #$20 ; A = 16bit LDA $2008,X ; 最大ヒットポイント(下位) STA $2006,X ; ヒットポイント(下位) TDC SEP #$20 ; A = 8bit RTS LC27289: JSR $902B ; 相手の状態変化1に汎用データ3の状態を追加, タイマー設定 LC2728C: RTS ;-------------------------------- ; 効果タイプ No.076(4C): レベル系状態変化(レベル・持続時間・状態変化2(一時的)) ;-------------------------------- LC2728D: JSR $7E67 ; 命中判定補助 (相手のレベルが汎用データ1の倍数ならばヒット) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $729A JSR $8B7D ; 効果持続時間を設定する (汎用データ2のbit7がセットされている場合: 汎用データ2×2 + 自分のレベル÷4, セットされていない場合: (汎用データ2×2 + 自分のレベル÷4) - 相手のレベル÷4, セットされていない & 相手がボス属性である: 30固定) JSR $9039 ; LC2729A: RTS ;-------------------------------- ; 効果タイプ No.077(4D): レベル系比率ダメージ攻撃(レベル・効果比率・未使用) ;-------------------------------- LC2729B: JSR $7E67 ; 命中判定補助 (相手のレベルが汎用データ1の倍数ならばヒット) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $72B1 JSR $8874 ; ダメージポイント & 相手のHP減少量設定 (相手がボス属性でない場合: 汎用データ2×相手の現在HP÷16(最大値: 9999) / ある場合: 0) LDA #$3C ; #$3C = 60 STA $58 ; 一時変数 汎用データ2 JSR $8B7D ; 効果持続時間を設定する (汎用データ2のbit7がセットされている場合: 汎用データ2×2 + 自分のレベル÷4, セットされていない場合: (汎用データ2×2 + 自分のレベル÷4) - 相手のレベル÷4, セットされていない & 相手がボス属性である: 30固定) JSR $9039 ; STZ $56 ; 一時変数 命中判定用? (0であれば命中) LC272B1: RTS ;-------------------------------- ; 効果タイプ No.078(4E): レベル系攻撃(レベル・効果値・未使用) ;-------------------------------- LC272B2: JSR $7E67 ; 命中判定補助 (相手のレベルが汎用データ1の倍数ならばヒット) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $72D3 LDA $59 ; 一時変数 汎用データ3 STA $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) JSR $7F6A ; 攻撃力 | 倍率 | 防御力設定 (汎用データ2×(1〜33/32) | (自分のレベル×魔力)÷256 + 4 | 相手の魔法防御力÷32) JSR $8366 ; 攻撃力修正 (目標を全体化した場合に1/2?) JSR $84F3 ; 倍率 | 防御力修正 (相手がシェルなら1/2 | 相手が蛙なら0) JSR $866D ; 攻撃力修正 (攻撃属性とパワーアップ属性とが一致すれば1.5倍) JSR $876E ; 攻撃属性による倍率 | 防御力修正 (相手の吸収と一致: 吸収フラグON, 防御力0, ????と一致: ミスフラグON, 無効と一致: ミスフラグON, 半減と一致: 倍率1/2, 弱点と一致: 倍率2倍, 防御力0) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $72D3 JSR $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) LC272D3: LDA $7C97 BEQ $72DA STZ $56 ; 一時変数 命中判定用? (0であれば命中) LC272DA: RTS ;-------------------------------- ; 効果タイプ No.079(4F): せいれい(命中率・未使用・状態変化1(永続的)*未使用*) ;-------------------------------- LC272DB: LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) TAY LDA $3EC2,Y BNE $72FD JSR $8FAA ; 相手の戦闘不能状態を回復する (相手がゾンビ状態であればミス), 相手のHP設定 (汎用データ3×相手の最大HP÷16 (最大値: 9999)) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $72FF JSR $02A2 ; 0〜99の範囲の乱数取得 CMP $57 ; 一時変数 汎用データ1 BCC $72F6 INC $7C5D BRA $72FF LC272F6: LDA #$02 ; #$02 = 2 STA $59 ; 一時変数 汎用データ3 JMP $8CAC ; 相手の状態変化1に汎用データ3の状態を追加? (現在調査中) LC272FD: INC $56 ; 一時変数 命中判定用? (0であれば命中) LC272FF: RTS ;-------------------------------- ; 効果タイプ No.080(50): ゴブリンパンチ(命中率・未使用・状態変化1(永続的)) ;-------------------------------- LC27300: JSR $7F1B ; 命中判定 (物理攻撃系2) (汎用データ1のbit7がONならば命中, 命中率設定: 汎用データ1 | 回避率設定: 物理回避率, アビリティ・装備品による回避判定, 回避率修正: 相手が蛙なら0, 相手が小人なら2倍(上限: 99), 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7318 JSR $85AD ; 攻撃力 | 倍率 | 防御力設定 ((モンスター)攻撃力 | (モンスター)倍率 or (自分のレベル×力)÷128 + 2 | 相手の物理防御力) JSR $855D ; 攻撃力 | 防御力修正 (自分と相手のレベルが等しければ8倍 | 自分と相手のレベルが等しければ0) JSR $8512 ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) JSR $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) JSR $8CAC ; 相手の状態変化1に汎用データ3の状態を追加? (現在調査中) STZ $56 ; 一時変数 命中判定用? (0であれば命中) LC27318: RTS ;-------------------------------- ; 効果タイプ No.081(51): ステータス上昇効果があるアイテム(命中率・対象となるステータス・上昇値) ;-------------------------------- LC27319: JSR $7EF6 ; 命中判定 (魔法攻撃系2, 汎用データ1のbit7がONならば命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $735D LDA $58 ; 一時変数 汎用データ2 BPL $7327 JSR $9136 ; 相手のレベルを1/2にする (下限値: 1) LC27327: LDA $58 ; 一時変数 汎用データ2 AND #$40 BEQ $7330 JSR $9136 ; 相手のレベルを1/2にする (下限値: 1) LC27330: LDA $58 ; 一時変数 汎用データ2 AND #$20 BEQ $7339 JSR $912D ; 相手の物理防御力・魔法防御力を1/2にする LC27339: LDA $58 ; 一時変数 汎用データ2 AND #$10 BEQ $7342 JSR $9143 ; 相手のレベルを汎用データ3だけ増加(上限値: 255) LC27342: LDA $58 ; 一時変数 汎用データ2 AND #$08 BEQ $734B JSR $9153 ; 相手のレベルを汎用データ3だけ減少(下限値: 1) LC2734B: LDA $58 ; 一時変数 汎用データ2 AND #$04 BEQ $7354 JSR $9197 ; 相手の$2044と$2045とを汎用データ3だけ増加(上限値: 255) LC27354: LDA $58 ; 一時変数 汎用データ2 AND #$02 BEQ $735D JSR $91B4 ; 相手の物理防御力・魔法防御力を汎用データ3だけ増加(上限値: 255) LC2735D: RTS ;-------------------------------- ; 効果タイプ No.082(52): 状態変化(スリップをともなう)(命中率・解除される状態変化3(補助魔法)・状態変化3(補助魔法)) ;-------------------------------- LC2735E: JSR $7EF6 ; 命中判定 (魔法攻撃系2, 汎用データ1のbit7がONならば命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7378 JSR $8E51 ; LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7378 LDA #$FF ; #$FF = 255 STA $3ED8 ; サイクル設定値 LDA #$08 ; #$08 = 8 STA $59 ; 一時変数 汎用データ3 JSR $8E05 ; 相手の状態変化4に汎用データ3の状態を追加(追加しようとする状態が"10: 死の宣告"の場合、相手がすでに死の宣告状態であればミス) LC27378: RTS ;-------------------------------- ; 効果タイプ No.083(53): マジックポイントに対する比率ダメージ攻撃(命中率・効果比率・未使用) ;-------------------------------- LC27379: JSR $7EF6 ; 命中判定 (魔法攻撃系2, 汎用データ1のbit7がONならば命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7383 JSR $8AEC ; 相手のMP減少量設定 (汎用データ2×相手の現在MP÷16 (最小値: 1, 最大値: 9999)) LC27383: RTS ;-------------------------------- ; 効果タイプ No.084(54): ヒットポイントの減少分をダメージとする攻撃(命中率・未使用・未使用) ;-------------------------------- LC27384: JSR $7EF6 ; 命中判定 (魔法攻撃系2, 汎用データ1のbit7がONならば命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $738E JSR $8B33 ; 相手のHP減少量設定 (自分の最大HP - 自分の現在HP (最大値: 9999)) LC2738E: RTS ;-------------------------------- ; 効果タイプ No.085(55): ゆうごう(未使用・未使用・状態変化1(永続的)) ;-------------------------------- LC2738F: JSR $88DE ; HP全回復, 相手がアンデッド特性で、ボス属性がなければ、相手のHPを1〜9にする JSR $89F7 ; MP全回復 JMP $90DB ; 自分の状態変化1に汎用データ3の状態を追加, 効果解除タイマー設定 ;-------------------------------- ; 効果タイプ No.086(56) ;-------------------------------- LC27398: JSR $7EF6 ; 命中判定 (魔法攻撃系2, 汎用データ1のbit7がONならば命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $73A2 JSR $91D1 ; 相手の状態変化4に汎用データ3の状態を反転 LC273A2: RTS ;-------------------------------- ; 効果タイプ No.087(57): 状態変化(2種類両方の効果)(状態変化1(永続的)・持続時間・状態変化2(一時的)) ;-------------------------------- LC273A3: JSR $8B7D ; 効果持続時間を設定する (汎用データ2のbit7がセットされている場合: 汎用データ2×2 + 自分のレベル÷4, セットされていない場合: (汎用データ2×2 + 自分のレベル÷4) - 相手のレベル÷4, セットされていない & 相手がボス属性である: 30固定) JSR $8D2E ; STZ $56 ; 一時変数 命中判定用? (0であれば命中) LDA $57 ; 一時変数 汎用データ1 STA $59 ; 一時変数 汎用データ3 JSR $8CAC ; 相手の状態変化1に汎用データ3の状態を追加? (現在調査中) STZ $56 ; 一時変数 命中判定用? (0であれば命中) LDA #$FF ; #$FF = 255 STA $3ED8 ; サイクル設定値 LDA #$08 ; #$08 = 8 STA $59 ; 一時変数 汎用データ3 JMP $8E05 ; 相手の状態変化4に汎用データ3の状態を追加(追加しようとする状態が"10: 死の宣告"の場合、相手がすでに死の宣告状態であればミス) ;-------------------------------- ; 効果タイプ No.088(58): マインドブラスト(命中率・効果値・持続時間) ;-------------------------------- LC273C0: JSR $7EF6 ; 命中判定 (魔法攻撃系2, 汎用データ1のbit7がONならば命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $73EF JSR $7F6A ; 攻撃力 | 倍率 | 防御力設定 (汎用データ2×(1〜33/32) | (自分のレベル×魔力)÷256 + 4 | 相手の魔法防御力÷32) JSR $8366 ; 攻撃力修正 (目標を全体化した場合に1/2?) JSR $84F3 ; 倍率 | 防御力修正 (相手がシェルなら1/2 | 相手が蛙なら0) JSR $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) LDA $59 ; 一時変数 汎用データ3 STA $58 ; 一時変数 汎用データ2 JSR $8B7D ; 効果持続時間を設定する (汎用データ2のbit7がセットされている場合: 汎用データ2×2 + 自分のレベル÷4, セットされていない場合: (汎用データ2×2 + 自分のレベル÷4) - 相手のレベル÷4, セットされていない & 相手がボス属性である: 30固定) LDA #$20 ; #$20 = 32 STA $59 ; 一時変数 汎用データ3 JSR $8D2E ; STZ $56 ; 一時変数 命中判定用? (0であれば命中) LDA #$FF ; #$FF = 255 STA $3ED8 ; サイクル設定値 LDA #$08 ; #$08 = 8 STA $59 ; 一時変数 汎用データ3 JSR $8E05 ; 相手の状態変化4に汎用データ3の状態を追加(追加しようとする状態が"10: 死の宣告"の場合、相手がすでに死の宣告状態であればミス) LC273EF: RTS ;-------------------------------- ; 効果タイプ No.089(59): きょじんのくすり(未使用・未使用・未使用) ;-------------------------------- LC273F0: LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCS $7404 LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) TAX LDA $7C59,X ; 巨人の薬使用フラグ?(1人目) BNE $7404 INC $7C59,X ; 巨人の薬使用フラグ?(1人目) JMP $9163 ; 相手の最大ヒットポイントを2倍にする(上限値: 9999), 相手がモンスターの場合は何もしない LC27404: INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 効果タイプ No.090(5A): ホワイトウィンド(未使用・未使用・未使用) ;-------------------------------- LC27407: LDX $7C64 ; 行動者?の現在ヒットポイント? STX $7B71 ; 一時変数 相手のHP回復量 RTS ;-------------------------------- ; 効果タイプ No.091(5B) ;-------------------------------- LC2740E: JSR $7EF6 ; 命中判定 (魔法攻撃系2, 汎用データ1のbit7がONならば命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7418 JSR $91DC ; 自分の$2079に汎用データ3を付加 LC27418: RTS ;-------------------------------- ; 効果タイプ No.092(5C): ほうよう(命中率・未使用・状態変化1(永続的)) ;-------------------------------- LC27419: JSR $7EF6 ; 命中判定 (魔法攻撃系2, 汎用データ1のbit7がONならば命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7426 JSR $88DE ; HP全回復, 相手がアンデッド特性で、ボス属性がなければ、相手のHPを1〜9にする JSR $8CAC ; 相手の状態変化1に汎用データ3の状態を追加? (現在調査中) LC27426: RTS ;-------------------------------- ; 効果タイプ No.093(5D): 状態変化(ゾンビ)(命中率・未使用・未使用) ;-------------------------------- LC27427: JSR $7EF6 ; 命中判定 (魔法攻撃系2, 汎用データ1のbit7がONならば命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $743C JSR $8FAA ; 相手の戦闘不能状態を回復する (相手がゾンビ状態であればミス), 相手のHP設定 (汎用データ3×相手の最大HP÷16 (最大値: 9999)) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $743C LDA #$02 ; #$02 = 2 STA $59 ; 一時変数 汎用データ3 JSR $8CAC ; 相手の状態変化1に汎用データ3の状態を追加? (現在調査中) LC2743C: RTS ;-------------------------------- ; 効果タイプ No.094(5E): パラメータを変化させる歌(未使用・未使用・変化対象となる能力値) ;-------------------------------- LC2743D: JSR $7DF1 ; 命中判定補助 (ミュート状態ならミス) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $745B LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) ORA #$04 STA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) LDA $59 ; 一時変数 汎用データ3 STA $206F,X ; 歌でアップするパラメータ (08: レベル, 10: 魔力, 20: 体力, 40: 素速さ, 80: 力) LDA #$08 ; #$08 = 8 TAX LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JSR $24FD ; 各種タイマー発動 (Aレジスタ: タイマー適用キャラクタ, Xレジスタ: タイマーの種類) LC2745B: RTS ;-------------------------------- ; 効果タイプ No.095(5F): 特定の種類の敵にのみ有効な状態変化(スリップ)をともなう防御力(ほぼ)無視の攻撃(有効モンスタータイプ・効果値・持続時間) ;-------------------------------- LC2745C: JSR $7E5B ; 命中判定補助 (相手のモンスタータイプと汎用データ1とが一致していなければミス) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7475 JSR $7F6A ; 攻撃力 | 倍率 | 防御力設定 (汎用データ2×(1〜33/32) | (自分のレベル×魔力)÷256 + 4 | 相手の魔法防御力÷32) JSR $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) LDA $59 ; 一時変数 汎用データ3 STA $3ED8 ; サイクル設定値 LDA #$08 ; #$08 = 8 STA $59 ; 一時変数 汎用データ3 JSR $8E05 ; 相手の状態変化4に汎用データ3の状態を追加(追加しようとする状態が"10: 死の宣告"の場合、相手がすでに死の宣告状態であればミス) LC27475: RTS ;-------------------------------- ; 効果タイプ No.096(60) ;-------------------------------- LC27476: TDC TAX LC27478: LDA $384D,X CMP #$F2 ; #$F2 = 242 BEQ $7486 INX INX INX INX INX BRA $7478 LC27486: LDA $384E,X STA $11 LDA $384F,X STA $10 TDC TAX STX $0E LC27494: LDX $0E LDA $4048 JSR $01DB ; Aレジスタの値の(7 - Xレジスタ)ビットがセットされていない場合は0クリアする BEQ $74BD LDA $10 JSR $01DB ; Aレジスタの値の(7 - Xレジスタ)ビットがセットされていない場合は0クリアする BEQ $74A8 JMP $7553 LC274A8: TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする ORA $7C0A ; モンスターを倒したかどうかのフラグ (ON: 倒した, OFF: 倒していない) STA $7C0A ; モンスターを倒したかどうかのフラグ (ON: 倒した, OFF: 倒していない) TXA CLC ADC #$04 ; #$04 = 4 TAX STZ $3EC2,X JMP $7553 LC274BD: LDA $10 JSR $01DB ; Aレジスタの値の(7 - Xレジスタ)ビットがセットされていない場合は0クリアする BNE $74C7 JMP $7553 LC274C7: TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする ORA $4048 STA $4048 LDA $7C0A ; モンスターを倒したかどうかのフラグ (ON: 倒した, OFF: 倒していない) JSR $01D1 ; Aレジスタの値の(7 - Xレジスタ)ビットをクリアする STA $7C0A ; モンスターを倒したかどうかのフラグ (ON: 倒した, OFF: 倒していない) TXA CLC ADC #$04 ; #$04 = 4 TAX INC $3EC2,X REP #$20 ; A = 16bit CLC LDA $0E ADC #$0004 ; #$0004 = 4 JSR $01B2 ; 128倍する TAX STX $14 TDC SEP #$20 ; A = 8bit STZ $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) STZ $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) STZ $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) STZ $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) CLC LDA $0E ADC #$04 ; #$04 = 4 JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 TDC STA $3CF1,Y ; タイマー制御フラグ?(ストップ効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF2,Y ; タイマー制御フラグ?(毒ダメージ) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF3,Y ; タイマー制御フラグ?(リフレク効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF4,Y ; タイマー制御フラグ?(しのせんこく) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF5,Y ; タイマー制御フラグ?(沈黙効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF6,Y ; タイマー制御フラグ?(スリップ効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF7,Y ; タイマー制御フラグ?(徐々に老化による能力値低下) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF8,Y ; タイマー制御フラグ?(リジェネ回復) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF9,Y ; タイマー制御フラグ?(歌による能力値上昇) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CFA,Y ; タイマー制御フラグ?(麻痺効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) LDA $11 BMI $7546 REP #$20 ; A = 16bit LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2006,X ; ヒットポイント(下位) LDX $14 STA $2006,X ; ヒットポイント(下位) CMP $2008,X ; 最大ヒットポイント(下位) BCC $7541 LDA $2008,X ; 最大ヒットポイント(下位) STA $2006,X ; ヒットポイント(下位) LC27541: TDC SEP #$20 ; A = 8bit BRA $7553 LC27546: REP #$20 ; A = 16bit LDX $14 LDA $2008,X ; 最大ヒットポイント(下位) STA $2006,X ; ヒットポイント(下位) TDC SEP #$20 ; A = 8bit LC27553: INC $0E LDA $0E CMP #$08 ; #$08 = 8 BEQ $755E JMP $7494 LC2755E: INC $7BFB RTS ;-------------------------------- ; 効果タイプ No.097(61): ストーカーしょり(未使用・未使用・未使用) ;-------------------------------- LC27562: LDA $7C4C BNE $75D8 TDC TAY LDX #$0200 ; #$0200 = 512 LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) ORA #$40 STA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INY CPY #$08 ; #$08 = 8 BRK $D0 SBC $0004A2 LDA #$0B ; #$0B = 11 JSR $007C ; X〜Aの範囲の乱数取得 TAY LDA $3EC2,Y BEQ $757D TYA REP #$20 ; A = 16bit JSR $01B2 ; 128倍する TAX TDC SEP #$20 ; A = 8bit LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$BF STA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) TDC TAY LDX #$0200 ; #$0200 = 512 REP #$20 ; A = 16bit LDA $2006,X ; ヒットポイント(下位) STA $0E LC275A9: LDA $2006,X ; ヒットポイント(下位) CMP $0E BCS $75B2 STA $0E LC275B2: CLC TXA ADC #$0080 ; #$0080 = 128 TAX INY CPY #$0004 ; #$0004 = 4 BNE $75A9 TDC TAY LDX #$0200 ; #$0200 = 512 LC275C3: LDA $0E STA $2006,X ; ヒットポイント(下位) CLC TXA ADC #$0080 ; #$0080 = 128 TAX INY CPY #$0004 ; #$0004 = 4 BNE $75C3 TDC SEP #$20 ; A = 8bit RTS LC275D8: TDC TAX LC275DA: LDA $384D,X CMP #$F2 ; #$F2 = 242 BEQ $75E8 INX INX INX INX INX BRA $75DA LC275E8: STX $10 TDC TAY LDX #$0200 ; #$0200 = 512 LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) ORA #$40 STA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INY CPY #$06 ; #$06 = 6 BRK $D0 SBC $0007A2 LDA #$09 ; #$09 = 9 JSR $007C ; X〜Aの範囲の乱数取得 STA $0E REP #$20 ; A = 16bit JSR $01B2 ; 128倍する TAX TDC SEP #$20 ; A = 8bit LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$BF STA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) STZ $3EC9 STZ $3ECA STZ $3ECB INC $3EC6 INC $3EC7 INC $3EC8 LDA $0E TAX INC $3EC2,X SEC SBC #$07 ; #$07 = 7 TAX LDA #$E0 ; #$E0 = 224 JSR $01D1 ; Aレジスタの値の(7 - Xレジスタ)ビットをクリアする STA $12 SEC LDA $0E SBC #$03 ; #$03 = 3 TAX STZ $3EC2,X SEC LDA $0E SBC #$04 ; #$04 = 4 TAX LDA $12 JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする LDX $10 STA $384F,X LDA #$02 ; #$02 = 2 STA $7C09 LDA #$FD ; #$FD = 253 STA $7C0A ; モンスターを倒したかどうかのフラグ (ON: 倒した, OFF: 倒していない) RTS ;-------------------------------- ; 効果タイプ No.098(62): ビブロスしょり(未使用・未使用・未使用) ;-------------------------------- LC27662: TDC TAX LC27664: LDA $384D,X CMP #$F2 ; #$F2 = 242 BEQ $7672 INX INX INX INX INX BRA $7664 LC27672: SEC LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) SBC #$04 ; #$04 = 4 INC STA $0E ASL TAY LDA $4020,Y ; モンスター番号 AND $4021,Y CMP #$FF ; #$FF = 255 BEQ $76C8 PHX LDA $0E TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする PLX STA $384F,X LDA $0E TAX DEX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする ORA $7C0A ; モンスターを倒したかどうかのフラグ (ON: 倒した, OFF: 倒していない) STA $7C0A ; モンスターを倒したかどうかのフラグ (ON: 倒した, OFF: 倒していない) TXA CLC ADC #$04 ; #$04 = 4 TAX STZ $3EC2,X LDA $0E TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする ORA $4048 STA $4048 LDA $7C0A ; モンスターを倒したかどうかのフラグ (ON: 倒した, OFF: 倒していない) JSR $01D1 ; Aレジスタの値の(7 - Xレジスタ)ビットをクリアする STA $7C0A ; モンスターを倒したかどうかのフラグ (ON: 倒した, OFF: 倒していない) TXA CLC ADC #$04 ; #$04 = 4 TAX INC $3EC2,X BRA $76CA LC276C8: INC $56 ; 一時変数 命中判定用? (0であれば命中) LC276CA: INC $7BFB RTS ;-------------------------------- ; 効果タイプ No.099(63): グランドクロス(未使用・未使用・未使用) ;-------------------------------- LC276CE: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$C2 BEQ $76D8 RTS LC276D8: LDA #$01 ; #$01 = 1 STA $3ED7 ; 2種類のタイマーサイクルのどちらを採用するか (0: 味方用, 1: 敵用) TDC TAX LDA #$11 ; #$11 = 17 JSR $007C ; X〜Aの範囲の乱数取得 BNE $76EA LDA #$80 ; #$80 = 128 BRA $7712 LC276EA: DEC BNE $76F1 LDA #$40 ; #$40 = 64 BRA $7712 LC276F1: DEC BNE $76F8 LDA #$20 ; #$20 = 32 BRA $7712 LC276F8: DEC BNE $76FF LDA #$10 ; #$10 = 16 BRA $7712 LC276FF: DEC BNE $7706 LDA #$04 ; #$04 = 4 BRA $7712 LC27706: DEC BNE $770D LDA #$02 ; #$02 = 2 BRA $7712 LC2770D: DEC BNE $7719 LDA #$01 ; #$01 = 1 LC27712: STA $59 ; 一時変数 汎用データ3 JSR $8CAC ; 相手の状態変化1に汎用データ3の状態を追加? (現在調査中) BRA $7771 LC27719: DEC BNE $7720 LDA #$80 ; #$80 = 128 BRA $7741 LC27720: DEC BNE $7727 LDA #$40 ; #$40 = 64 BRA $7741 LC27727: DEC BNE $772E LDA #$20 ; #$20 = 32 BRA $7741 LC2772E: DEC BNE $7735 LDA #$10 ; #$10 = 16 BRA $7741 LC27735: DEC BNE $773C LDA #$08 ; #$08 = 8 BRA $7741 LC2773C: DEC BNE $7748 LDA #$04 ; #$04 = 4 LC27741: STA $59 ; 一時変数 汎用データ3 JSR $8D2E ; BRA $7771 LC27748: DEC BNE $774F LDA #$04 ; #$04 = 4 BRA $7754 LC2774F: DEC BNE $775B LDA #$04 ; #$04 = 4 LC27754: STA $59 ; 一時変数 汎用データ3 JSR $8DCB ; BRA $7771 LC2775B: DEC BNE $7762 LDA #$10 ; #$10 = 16 BRA $7767 LC27762: DEC BNE $776E LDA #$08 ; #$08 = 8 LC27767: STA $59 ; 一時変数 汎用データ3 JSR $8E05 ; 相手の状態変化4に汎用データ3の状態を追加(追加しようとする状態が"10: 死の宣告"の場合、相手がすでに死の宣告状態であればミス) BRA $7771 LC2776E: JSR $88FD ; 相手がボス属性でない場合は、相手のHPを1〜9にする LC27771: STZ $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 効果タイプ No.100(64): チキンナイフ(0x00・追加効果発動率・追加効果の番号) ;-------------------------------- LC27774: JSR $7C53 ; 命中率 | 回避率設定 (100% | 物理回避率÷2) JSR $7EBE ; 命中判定 (物理攻撃系1) (相手が混乱・麻痺・睡眠状態であれば命中, 自分が"必ず命中"状態であれば命中, 相手の$2064によって命中, アビリティ・装備品による回避判定, 回避率修正: 相手が蛙なら0, 相手が小人なら2倍(上限: 99), 命中率修正: 自分が暗闇なら1/4, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $779E JSR $8626 ; 攻撃力 | 倍率 | 防御力設定 ((逃走回数? + 1? (上限: 255))÷2 | (自分のレベル×力)÷128 + (レベル×素速さ)÷128 + 2 | 相手の物理防御力) JSR $839B ; 倍率修正 (自分が後列であれば1/2, 相手が後列であれば1/2) JSR $83BD ; 攻撃力 | 倍率 | 防御力修正 (なげるでの攻撃ならば2倍, 自分の$201Fのbit5がONならば1/2, 相手が人間系で自分の$201Fのbit0がONならば2倍, 相手が守り状態ならば0 | ためる状態ならば2倍, 乱れ打ちならば1/2, 相手が防御状態ならば1/2 | 防御無視攻撃ならば0) JSR $8512 ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) JSR $8533 ; 攻撃力修正 (自分が蛙・小人なら3, 自分がバーサクなら3/2) JSR $8684 ; 魔法剣関連 (フレア剣なら攻撃力+100, 防御力1/4 / 属性が相手の吸収と一致: 吸収フラグON, 防御力0, 無効と一致: ミスフラグON, 半減と一致: 倍率1/2, 弱点が4倍属性と一致: 相手がボス属性でない場合は即死(ゾンビ時除く)、ある場合は攻撃力4倍で防御力0, 弱点が3倍属性と一致: 攻撃力3倍で防御力0, 弱点が2倍属性と一致: 攻撃力2倍で防御力0) LDA $61 ; 一時変数 攻撃エフェクトフラグ(2)? BNE $77A3 LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $779E JSR $8811 ; ダメージポイント & 相手のHP減少量設定 (現在調査中1) JMP $8BCF ; LC2779E: LDA #$80 ; #$80 = 128 STA $56 ; 一時変数 命中判定用? (0であれば命中) RTS LC277A3: RTS ;-------------------------------- ; 効果タイプ No.101(65): げいげきロケット(0x80・0x80・0x80) ;-------------------------------- LC277A4: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$10 BEQ $77B3 LDA #$50 ; #$50 = 80 STA $2057,X ; 実行するコマンドの番号 RTS LC277B3: INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 効果タイプ No.102(66): ターゲッティング(未使用・未使用・未使用) ;-------------------------------- LC277B6: SEC LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) SBC #$04 ; #$04 = 4 ASL TAY TDC STA $7C2A,Y STA $7C2B,Y LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCS $77D3 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $7C2A,Y RTS LC277D3: SEC SBC #$04 ; #$04 = 4 TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $7C2B,Y RTS RTS ;-------------------------------- ; 効果タイプ No.104(68): しゅうりょう(未使用・未使用・未使用) ;-------------------------------- LC277E0: LDA #$20 ; #$20 = 32 STA $7BDE ;-------------------------------- ; 効果タイプ No.103(67) ;-------------------------------- LC277E5: INC $7BFB RTS ;-------------------------------- ; 効果タイプ No.105(69): あやつる(未使用・未使用・未使用) ;-------------------------------- LC277E9: JSR $9965 ; Yレジスタ = ($7B2C)×12, Xレジスタ = ($7B2C)×24 STX $14 LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$18 BEQ $77FA JMP $78AE LC277FA: LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$20 BEQ $7804 JMP $78B2 LC27804: LDA $2066,X ; 各種フラグ(08: とらえる耐性, 10: あやつる耐性, 80: ライブラのHP表示が「????」) AND #$10 BEQ $780E JMP $78AE LC2780E: JSR $02A2 ; 0〜99の範囲の乱数取得 STA $0E LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $200E,X ; 装備品 (頭) CMP #$CB ; #$CB = 203 BNE $7824 LDA $0E CMP #$4B ; #$4B = 75 BCC $782D BRA $782A LC27824: LDA $0E CMP #$28 ; #$28 = 40 BCC $782D LC2782A: JMP $78B9 LC2782D: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA #$80 ; #$80 = 128 STA $2056,X ; (フラグ系?) STZ $2057,X ; 実行するコマンドの番号 LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) ORA #$20 STA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) TAX STZ $7C3E,X LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) STA $7C3A,X LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) TAX LDA $D0EEDB,X ; 0, 20, 40, 60 (20の倍数の数列) TAY STY $10 SEC LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) SBC #$04 ; #$04 = 4 ASL TAX REP #$20 ; A = 16bit LDA $4020,X ; モンスター番号 JSR $01B7 ; 4倍する TAX TDC SEP #$20 ; A = 8bit STZ $0E LC27869: LDA $D05600,X ; FILEPOS_MONCTRL STA $37DC,Y CMP #$FF ; #$FF = 255 BNE $7878 LDA #$80 ; #$80 = 128 BRA $7879 LC27878: TDC LC27879: STA $37EC,Y INX INY INC $0E LDA $0E CMP #$04 ; #$04 = 4 BNE $7869 STZ $0E LDY $10 LC2788A: LDA $37DC,Y REP #$20 ; A = 16bit JSR $01B6 ; 8倍する TAX TDC SEP #$20 ; A = 8bit LDA $D10B80,X ; FILEPOS_MAGDATA STA $37E8,Y INY INC $0E LDA $0E CMP #$04 ; #$04 = 4 BNE $788A LDX $14 LDA #$24 ; #$24 = 36 STA $3C5F,X RTS LC278AE: LDA #$4E ; #$4E = 78 BRA $78B4 LC278B2: LDA #$4C ; #$4C = 76 LC278B4: LDX $14 STA $3C5F,X LC278B9: INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 効果タイプ No.106(6A): 不明(未使用・未使用・未使用) ;-------------------------------- LC278BC: STZ $3EC6 STZ $3EC7 STZ $3EC8 STZ $3EC9 STZ $3ECA STZ $3ECB STZ $3ECC STZ $3ECD LDA #$80 ; #$80 = 128 STA $7BDE INC $7BFB RTS ;-------------------------------- ; 効果タイプ No.107(6B): モンスタータイプ付加・状態変化耐性付加・属性攻撃パワーアップ(モンスタータイプ・状態変化1(永続的)・属性) ;-------------------------------- LC278DD: JSR $91FD ; 相手のパワーアップ属性に汎用データ3の属性を付加 LDA $58 ; 一時変数 汎用データ2 STA $59 ; 一時変数 汎用データ3 JSR $91F2 ; 相手の状態変化1(永続的状態)耐性に汎用データ3を付加 LDA $57 ; 一時変数 汎用データ1 STA $59 ; 一時変数 汎用データ3 JMP $91E7 ; 相手のモンスタータイプに汎用データ3のタイプを付加 ;-------------------------------- ; 効果タイプ No.108(6C): 特定の種類の敵にクリティカルヒットする攻撃(未使用・効果値・有効モンスタータイプ) ;-------------------------------- LC278EE: JSR $7F30 ; 攻撃力 | 倍率 | 防御力設定 (汎用データ2×(1〜9/8) | (自分のレベル×魔力)÷256 + 4 | 相手の魔法防御力) JSR $84DD ; 攻撃力修正 (相手のモンスタータイプと汎用データ3とが一致すれば8倍) JSR $84F3 ; 倍率 | 防御力修正 (相手がシェルなら1/2 | 相手が蛙なら0) JMP $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) ;-------------------------------- ; 効果タイプ No.109(6D): ヒットポイントの減少分をダメージとする攻撃(ヒットポイント吸収)(命中率・未使用・未使用) ;-------------------------------- LC278FA: JSR $7EF6 ; 命中判定 (魔法攻撃系2, 汎用データ1のbit7がONならば命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $791A REP #$20 ; A = 16bit LDX $32 ; 一時変数 自分アドレスへのインデックス SEC LDA $2008,X ; 最大ヒットポイント(下位) SBC $2006,X ; ヒットポイント(下位) LSR STA $50 ; 一時変数 攻撃力(下位) TDC STA $54 ; 一時変数 防御力(下位) INC STA $52 ; 一時変数 倍率(下位) SEP #$20 ; A = 8bit JSR $8926 ; 相手のHP減少量 & 自分のHP回復量設定 (ダメージポイント) / 相手がアンデッド特性の場合: 自分のHP減少量 & 相手のHP回復量設定 (〃) LC2791A: RTS ;-------------------------------- ; 効果タイプ No.110(6E): ブレイブブレイド(0x00・0x00・0x00) ;-------------------------------- LC2791B: JSR $7C47 ; 命中率 | 回避率設定 (100% | 物理回避率) JSR $7EBE ; 命中判定 (物理攻撃系1) (相手が混乱・麻痺・睡眠状態であれば命中, 自分が"必ず命中"状態であれば命中, 相手の$2064によって命中, アビリティ・装備品による回避判定, 回避率修正: 相手が蛙なら0, 相手が小人なら2倍(上限: 99), 命中率修正: 自分が暗闇なら1/4, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7948 JSR $8577 ; 攻撃力 | 倍率 | 防御力設定 (武器攻撃力 - (逃走回数? + 1? (上限: 255))÷2 | (自分のレベル×力)÷128 + 2 | 相手の物理防御力) JSR $839B ; 倍率修正 (自分が後列であれば1/2, 相手が後列であれば1/2) JSR $83BD ; 攻撃力 | 倍率 | 防御力修正 (なげるでの攻撃ならば2倍, 自分の$201Fのbit5がONならば1/2, 相手が人間系で自分の$201Fのbit0がONならば2倍, 相手が守り状態ならば0 | ためる状態ならば2倍, 乱れ打ちならば1/2, 相手が防御状態ならば1/2 | 防御無視攻撃ならば0) JSR $8430 ; 倍率修正 (自分が両手持ちで、$2011と$2012が0で、右手・左手のどちらかが空いていれば2倍) JSR $8512 ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) JSR $8533 ; 攻撃力修正 (自分が蛙・小人なら3, 自分がバーサクなら3/2) JSR $8684 ; 魔法剣関連 (フレア剣なら攻撃力+100, 防御力1/4 / 属性が相手の吸収と一致: 吸収フラグON, 防御力0, 無効と一致: ミスフラグON, 半減と一致: 倍率1/2, 弱点が4倍属性と一致: 相手がボス属性でない場合は即死(ゾンビ時除く)、ある場合は攻撃力4倍で防御力0, 弱点が3倍属性と一致: 攻撃力3倍で防御力0, 弱点が2倍属性と一致: 攻撃力2倍で防御力0) LDA $61 ; 一時変数 攻撃エフェクトフラグ(2)? BNE $794C LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7948 JSR $8811 ; ダメージポイント & 相手のHP減少量設定 (現在調査中1) JMP $8BCF ; LC27948: LDA #$80 ; #$80 = 128 STA $56 ; 一時変数 命中判定用? (0であれば命中) LC2794C: RTS ;-------------------------------- ; 効果タイプ No.111(6F): たたかう(未使用・未使用・未使用) ;-------------------------------- LC2794D: JSR $85F1 ; 攻撃力 | 倍率 | 防御力設定 ((モンスター)攻撃力×(8〜65/8) | (モンスター)倍率 | 相手の物理防御力) JSR $8512 ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) JMP $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) ;-------------------------------- ; 効果タイプ No.112(70): ワームホール(未使用・未使用・状態変化4(その他)) ;-------------------------------- LC27956: LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) TAX LDA $3EC2,X BNE $7961 JMP $8E05 ; 相手の状態変化4に汎用データ3の状態を追加(追加しようとする状態が"10: 死の宣告"の場合、相手がすでに死の宣告状態であればミス) LC27961: INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 効果タイプ No.113(71): レベルダウン(未使用・未使用・未使用) ;-------------------------------- LC27964: REP #$20 ; A = 16bit TDC TAX TAY LC27969: LDA $D0FFA0,X CMP $04F0 ; モンスターパーティの種類(下位) BEQ $7982 CLC TXA ADC #$0010 ; #$0010 = 16 TAX INY CPY #$0004 ; #$0004 = 4 BNE $7969 TDC SEP #$20 ; A = 8bit RTS LC27982: CLC TXA ADC #$FFA0 ; #$FFA0 = 65440 STA $0E TDC SEP #$20 ; A = 8bit LDA #$D0 ; #$D0 = 208 STA $10 LC27990: LDA $7C72 ASL TAY LDA [$0E],Y STA $12 INY LDA [$0E],Y STA $13 LDA $12 ORA $13 BNE $79B2 LDA $7C72 DEC BNE $79AB RTS LC279AB: LDA #$01 ; #$01 = 1 STA $7C72 BRA $7990 LC279B2: INC $7C72 LDA #$D0 ; #$D0 = 208 STA $10 LDY #$0000 ; #$0000 = 0 STY $0E LDA $13 BEQ $79CB LDA #$D0 ; #$D0 = 208 STA $10 LDY #$2000 ; #$2000 = 8192 STY $0E LC279CB: LDA $12 REP #$20 ; A = 16bit JSR $01B4 ; 32倍する TAY TDC TAX SEP #$20 ; A = 8bit STZ $11 LC279D9: LDA [$0E],Y STA $26F0,X INY INX INC $11 LDA $11 CMP #$20 ; #$20 = 32 BNE $79D9 LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 TDC STA $3CF1,Y ; タイマー制御フラグ?(ストップ効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF2,Y ; タイマー制御フラグ?(毒ダメージ) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF3,Y ; タイマー制御フラグ?(リフレク効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF4,Y ; タイマー制御フラグ?(しのせんこく) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF5,Y ; タイマー制御フラグ?(沈黙効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF6,Y ; タイマー制御フラグ?(スリップ効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF7,Y ; タイマー制御フラグ?(徐々に老化による能力値低下) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF8,Y ; タイマー制御フラグ?(リジェネ回復) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CF9,Y ; タイマー制御フラグ?(歌による能力値上昇) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) STA $3CFA,Y ; タイマー制御フラグ?(麻痺効果解除) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) LDY $32 ; 一時変数 自分アドレスへのインデックス TDC STA $201A,Y ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) STA $201B,Y ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) STA $201C,Y ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) STA $201D,Y ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) TAX LDA $26F0,X STA $2025,Y ; 素速さ(装備補正なし) STA $2029,Y ; 素速さ(装備補正あり) LDA $26F1,X STA $2044,Y ; 攻撃力 (「はなつ」時にモンスターの攻撃力で上書きされる) LDA $26F2,X STA $2062,Y ; ダメージ倍率 (「はなつ」時にモンスターの倍率で設定される) LDA $26F3,X STA $202C,Y ; 物理回避率 LDA $26F4,X STA $202D,Y ; 物理防御力 LDA $26F5,X STA $2027,Y ; 魔力(装備補正なし) STA $202B,Y ; 魔力(装備補正あり) LDA $26F6,X STA $202F,Y ; 魔法防御力 LDA $26F7,X STA $202E,Y ; 魔法回避率 REP #$20 ; A = 16bit LDA $26F8,X STA $2006,Y ; ヒットポイント(下位) STA $2008,Y ; 最大ヒットポイント(下位) LDA $26FA,X STA $200A,Y ; マジックポイント(下位) LDA #$270F ; #$270F = 9999 STA $200C,Y ; 最大マジックポイント(下位) LDA $26FC,X STA $2067,Y LDA $26FE,X STA $2069,Y LDA $2702,X STA $2035,Y ; 状態変化1(永続的状態)耐性 (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) TDC SEP #$20 ; A = 8bit LDA $2704,X STA $2037,Y ; 状態変化3(補助魔法)耐性 (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) LDA $2700,X STA $2013,Y ; 装備品 (左手) LDA $2705,X STA $2030,Y ; 吸収属性 (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) LDA $2701,X STA $2032,Y ; 無効属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) LDA $2706,X STA $2064,Y LDA $2707,X STA $2034,Y ; 弱点属性 (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) LDA $2708,X STA $2065,Y ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) LDA $2709,X STA $2066,Y ; 各種フラグ(08: とらえる耐性, 10: あやつる耐性, 80: ライブラのHP表示が「????」) LDA $270F,X STA $2002,Y ; レベル STA $202A,Y ; 体力(装備補正あり) PHY REP #$20 ; A = 16bit LDA $12 ASL TAX TDC SEP #$20 ; A = 8bit LDA $D09900,X ; FILEPOS_MONTECH STA $1C LDA $D09901,X ; FILEPOS_MONTECH[1] STA $1D PLY LDA $1C STA $206E,Y ; とくいわざの特性 (01: 攻撃力3/2, 02: スリップ, 04: 混乱, 08: 麻痺, 10: 暗闇, 20: 猛毒, 40: 徐々に老化, 80: 回避不能/防御力無視) LDA $1D STA $207F,Y ; とくいわざの名前 RTS ;-------------------------------- ; 効果タイプ No.114(72): アルテミスのゆみ/りゅうのひげ/ビーストキラー/エイビスキラー(有効モンスタータイプ・追加効果発動率・追加効果の番号) ;-------------------------------- LC27AD9: JSR $7C53 ; 命中率 | 回避率設定 (100% | 物理回避率÷2) JSR $7EBE ; 命中判定 (物理攻撃系1) (相手が混乱・麻痺・睡眠状態であれば命中, 自分が"必ず命中"状態であれば命中, 相手の$2064によって命中, アビリティ・装備品による回避判定, 回避率修正: 相手が蛙なら0, 相手が小人なら2倍(上限: 99), 命中率修正: 自分が暗闇なら1/4, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7AF5 JSR $80D4 ; 攻撃力 | 倍率 | 防御力設定 (武器攻撃力 + (0〜3) | ((自分の力×レベル)÷128 + 2) + ((素速さ×レベル) % 256)÷128 | 相手の物理防御力) JSR $83BD ; 攻撃力 | 倍率 | 防御力修正 (なげるでの攻撃ならば2倍, 自分の$201Fのbit5がONならば1/2, 相手が人間系で自分の$201Fのbit0がONならば2倍, 相手が守り状態ならば0 | ためる状態ならば2倍, 乱れ打ちならば1/2, 相手が防御状態ならば1/2 | 防御無視攻撃ならば0) JSR $8512 ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) JSR $8533 ; 攻撃力修正 (自分が蛙・小人なら3, 自分がバーサクなら3/2) JSR $87F9 ; 倍率 | 防御力修正 (相手のモンスタータイプと汎用データ1とが等しければ2倍 | 等しければ0) JMP $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) LC27AF5: LDA #$80 ; #$80 = 128 STA $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 効果タイプ No.115(73): ひりゅうのやり/マンイーター(有効モンスタータイプ・追加効果発動率・追加効果の番号) ;-------------------------------- LC27AFA: JSR $7C47 ; 命中率 | 回避率設定 (100% | 物理回避率) JSR $7EBE ; 命中判定 (物理攻撃系1) (相手が混乱・麻痺・睡眠状態であれば命中, 自分が"必ず命中"状態であれば命中, 相手の$2064によって命中, アビリティ・装備品による回避判定, 回避率修正: 相手が蛙なら0, 相手が小人なら2倍(上限: 99), 命中率修正: 自分が暗闇なら1/4, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7B19 JSR $7FFC ; 攻撃力 | 倍率 | 防御力設定 (武器攻撃力×(1〜9/8) | (自分のレベル×力)÷128 + 2 | 相手の物理防御力) JSR $83BD ; 攻撃力 | 倍率 | 防御力修正 (なげるでの攻撃ならば2倍, 自分の$201Fのbit5がONならば1/2, 相手が人間系で自分の$201Fのbit0がONならば2倍, 相手が守り状態ならば0 | ためる状態ならば2倍, 乱れ打ちならば1/2, 相手が防御状態ならば1/2 | 防御無視攻撃ならば0) JSR $8452 ; 倍率修正 (ジャンプしている場合は2倍 or それ以外の場合は自分が後列であれば1/2, 相手が後列であれば1/2) JSR $8512 ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) JSR $8533 ; 攻撃力修正 (自分が蛙・小人なら3, 自分がバーサクなら3/2) JSR $87F9 ; 倍率 | 防御力修正 (相手のモンスタータイプと汎用データ1とが等しければ2倍 | 等しければ0) JMP $8A05 ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) LC27B19: LDA #$80 ; #$80 = 128 STA $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 効果タイプ No.116(74) ;-------------------------------- LC27B1E: INC $56 ; 一時変数 命中判定用? (0であれば命中) ;-------------------------------- ; 効果タイプ No.117(75) ;-------------------------------- LC27B20: RTS DB $6C,$68 DB $70,$68 DB $98,$68 DB $E2,$68 DB $F7,$68 DB $0C,$69 DB $21,$69 DB $4A,$69 DB $71,$69 DB $93,$69 DB $B5,$69 DB $DB,$69 DB $07,$6A DB $3C,$6A DB $65,$6A DB $76,$6A DB $81,$6A DB $8E,$6A DB $C4,$6A DB $CF,$6A DB $DD,$6A DB $EB,$6A DB $F6,$6A DB $01,$6B DB $32,$6B DB $35,$6B DB $52,$6B DB $7D,$6B DB $FC,$6B DB $17,$6C DB $E4,$6C DB $EF,$6C DB $2E,$6D DB $4B,$6D DB $5B,$6D DB $83,$6D DB $AB,$6D DB $B4,$6D DB $BD,$6D DB $D7,$6D DB $ED,$6D DB $12,$6E DB $2D,$6E DB $4C,$6E DB $5E,$6E DB $72,$6E DB $9B,$6E DB $B1,$6E DB $BC,$6E DB $E1,$6E DB $1E,$6F DB $58,$6F DB $84,$6F DB $A8,$6F DB $C9,$6F DB $F9,$6F DB $20,$70 DB $3E,$70 DB $53,$70 DB $74,$70 DB $9D,$70 DB $C4,$70 DB $DB,$70 DB $EC,$70 DB $19,$71 DB $34,$71 DB $40,$71 DB $50,$71 DB $B9,$71 DB $D7,$71 DB $F5,$71 DB $FB,$71 DB $0D,$72 DB $55,$72 DB $66,$72 DB $66,$72 DB $8D,$72 DB $9B,$72 DB $B2,$72 DB $DB,$72 DB $00,$73 DB $19,$73 DB $5E,$73 DB $79,$73 DB $84,$73 DB $8F,$73 DB $98,$73 DB $A3,$73 DB $C0,$73 DB $F0,$73 DB $07,$74 DB $0E,$74 DB $19,$74 DB $27,$74 DB $3D,$74 DB $5C,$74 DB $76,$74 DB $62,$75 DB $62,$76 DB $CE,$76 DB $74,$77 DB $A4,$77 DB $B6,$77 DB $E5,$77 DB $E0,$77 DB $E9,$77 DB $BC,$78 DB $DD,$78 DB $EE,$78 DB $FA,$78 DB $1B,$79 DB $4D,$79 DB $56,$79 DB $64,$79 DB $D9,$7A DB $FA,$7A DB $1E,$7B DB $20,$7B ;-------------------------------- ; 命中率 | 回避率設定 ((汎用データ1 + (レベル関連?)) - (相手のレベル + 相手のレベル修正値?) | 魔法回避率) ;-------------------------------- LC27C0D: LDX $32 ; 一時変数 自分アドレスへのインデックス CLC LDA $57 ; 一時変数 汎用データ1 ADC $7BE5 ; 現在行動中のキャラクタのレベル STA $0E LDX $49 ; 一時変数 相手アドレスへのインデックス CLC LDA $2002,X ; レベル ADC $2078,X ; レベル修正値? STA $0F SEC LDA $0E SBC $0F BCS $7C2D LDA #$01 ; #$01 = 1 BRA $7C33 LC27C2D: CMP #$63 ; #$63 = 99 BCC $7C33 LDA #$63 ; #$63 = 99 LC27C33: STA $4E ; 一時変数 命中率 LDA $202E,X ; 魔法回避率 STA $4F ; 一時変数 回避率 RTS ;-------------------------------- ; 命中率 | 回避率設定 (汎用データ1 | 物理回避率) ;-------------------------------- LC27C3B: LDA $57 ; 一時変数 汎用データ1 STA $4E ; 一時変数 命中率 LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202C,X ; 物理回避率 STA $4F ; 一時変数 回避率 RTS ;-------------------------------- ; 命中率 | 回避率設定 (100% | 物理回避率) ;-------------------------------- LC27C47: LDA #$64 ; #$64 = 100 STA $4E ; 一時変数 命中率 LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202C,X ; 物理回避率 STA $4F ; 一時変数 回避率 RTS ;-------------------------------- ; 命中率 | 回避率設定 (100% | 物理回避率÷2) ;-------------------------------- LC27C53: LDA #$64 ; #$64 = 100 STA $4E ; 一時変数 命中率 LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202C,X ; 物理回避率 LSR STA $4F ; 一時変数 回避率 RTS ;-------------------------------- ; 命中率 | 回避率設定 (汎用データ1 | 物理回避率) ※C27C3Bと同じ ;-------------------------------- LC27C60: LDA $57 ; 一時変数 汎用データ1 STA $4E ; 一時変数 命中率 LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202C,X ; 物理回避率 STA $4F ; 一時変数 回避率 RTS ;-------------------------------- ; 命中率 | 回避率設定 (汎用データ1 | 物理回避率÷2) ;-------------------------------- LC27C6C: LDA $57 ; 一時変数 汎用データ1 STA $4E ; 一時変数 命中率 LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202C,X ; 物理回避率 LSR STA $4F ; 一時変数 回避率 RTS ;-------------------------------- ; 命中率 | 回避率設定 (汎用データ1 | 魔法回避率) ;-------------------------------- LC27C79: LDA $57 ; 一時変数 汎用データ1 STA $4E ; 一時変数 命中率 LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202E,X ; 魔法回避率 STA $4F ; 一時変数 回避率 RTS ;-------------------------------- ; 命中率 | 回避率設定 (汎用データ1, 「盗賊のこて」装備時は2倍 | 0%) ;-------------------------------- LC27C85: LDA $57 ; 一時変数 汎用データ1 STA $4E ; 一時変数 命中率 STZ $4F ; 一時変数 回避率 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2039,X ; 装備特殊効果フラグ(01: HP1/2で捕獲, 02: 不死特性付加, 04: 剣の舞確率上昇, 08: 消費MP1/2, 10: 盗み成功率2倍, 20: 格闘効果付加, 40: エルフのマント, 80: イージスのたて) AND #$10 BEQ $7C96 ASL $4E ; 一時変数 命中率 LC27C96: RTS ;-------------------------------- ; 魔法回避判定 (混乱・麻痺・睡眠・ストップ状態でない場合、以降の回避判定を行う / イージスのたて: 33%) ;-------------------------------- LC27C97: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$70 BNE $7CC2 LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$10 BNE $7CC2 LDA $2039,X ; 装備特殊効果フラグ(01: HP1/2で捕獲, 02: 不死特性付加, 04: 剣の舞確率上昇, 08: 消費MP1/2, 10: 盗み成功率2倍, 20: 格闘効果付加, 40: エルフのマント, 80: イージスのたて) BPL $7CC2 JSR $02A2 ; 0〜99の範囲の乱数取得 CMP #$21 ; #$21 = 33 BCS $7CC2 LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) CMP $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) BEQ $7CC2 LDA #$07 ; #$07 = 7 STA $5D ; 一時変数 回避エフェクト (0: ミス, 1: ディフェンダー, 2: さすけのかたな, 3: エルフのマント, 4: ゴーレム, 5: 白刃取り, 6: 盾, 7: ミス) INC $56 ; 一時変数 命中判定用? (0であれば命中) LC27CC2: RTS ;-------------------------------- ; 命中率修正 (何らかの条件を満たすと1/2(下限: 1)) ;-------------------------------- LC27CC3: LDA $39 TAX LDA $79FC,X ; 実行する魔法・技・道具・武器のデータ 0バイト目 AND #$40 BNE $7CFB LDA $7B2C ASL TAX LDA $7AFC,X AND #$F0 BNE $7CED LDA $7AFC,X AND #$0F JSR $01B5 ; 16倍する STA $0E LDA $7AFD,X AND #$F0 JSR $01BE ; 16で割る ORA $0E LC27CED: JSR $01C3 ; Aレジスタのセットされたビットの数をXレジスタに格納する DEX BEQ $7CFB LSR $4E ; 一時変数 命中率 LDA $4E ; 一時変数 命中率 BNE $7CFB INC $4E ; 一時変数 命中率 LC27CFB: RTS ;-------------------------------- ; 物理回避判定 (混乱・麻痺・睡眠・ストップ状態でない場合、以降の回避判定を行う / 白刃取り: 25%, ディフェンダー: 25%, さすけのかたな: 25%, エルフのマント: 33%) ;-------------------------------- LC27CFC: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$70 BNE $7D7E LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$10 BNE $7D7E LDA $2020,X ; アビリティフラグ? (40: 白刃取り, 80: カウンター) AND #$40 BEQ $7D2A JSR $02A2 ; 0〜99の範囲の乱数取得 CMP #$19 ; #$19 = 25 BCS $7D2A LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) CMP $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) BEQ $7D2A LDA #$05 ; #$05 = 5 STA $5E ; 一時変数? INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS LC27D2A: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2038,X ; 装備特殊効果フラグ?(20: まさむね, 40: さすけのかたな, 80: ディフェンダー) BPL $7D45 JSR $02A2 ; 0〜99の範囲の乱数取得 CMP #$19 ; #$19 = 25 BCS $7D45 LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) CMP $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) BEQ $7D45 LDA #$01 ; #$01 = 1 STA $5A ; 一時変数? INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS LC27D45: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2038,X ; 装備特殊効果フラグ?(20: まさむね, 40: さすけのかたな, 80: ディフェンダー) AND #$40 BEQ $7D62 JSR $02A2 ; 0〜99の範囲の乱数取得 CMP #$19 ; #$19 = 25 BCS $7D62 LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) CMP $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) BEQ $7D62 LDA #$02 ; #$02 = 2 STA $5B ; 一時変数? INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS LC27D62: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2039,X ; 装備特殊効果フラグ(01: HP1/2で捕獲, 02: 不死特性付加, 04: 剣の舞確率上昇, 08: 消費MP1/2, 10: 盗み成功率2倍, 20: 格闘効果付加, 40: エルフのマント, 80: イージスのたて) AND #$40 BEQ $7D7E JSR $02A2 ; 0〜99の範囲の乱数取得 CMP #$21 ; #$21 = 33 BCS $7D7E LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) CMP $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) BEQ $7D7E LDA #$03 ; #$03 = 3 STA $5C ; 一時変数? INC $56 ; 一時変数 命中判定用? (0であれば命中) LC27D7E: RTS ;-------------------------------- ; 命中率修正 (自分の剣の舞確率上昇フラグがONなら2倍) ;-------------------------------- LC27D7F: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2039,X ; 装備特殊効果フラグ(01: HP1/2で捕獲, 02: 不死特性付加, 04: 剣の舞確率上昇, 08: 消費MP1/2, 10: 盗み成功率2倍, 20: 格闘効果付加, 40: エルフのマント, 80: イージスのたて) AND #$04 BEQ $7D8A ASL $4E ; 一時変数 命中率 LC27D8A: RTS ;-------------------------------- ; 命中率 | 回避率修正 (相手がシェルなら1/2(下限: 1) | 相手が蛙なら0) ;-------------------------------- LC27D8B: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) ORA $2072,X ; 一時的状態変化3 (補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$20 BEQ $7D9F LSR $4E ; 一時変数 命中率 LDA $4E ; 一時変数 命中率 BNE $7D9F INC $4E ; 一時変数 命中率 LC27D9F: LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$20 BEQ $7DAB STZ $4F ; 一時変数 回避率 LC27DAB: RTS ;-------------------------------- ; 回避率修正 (相手が蛙なら0, 相手が小人なら2倍(上限: 99)) ;-------------------------------- LC27DAC: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$20 BEQ $7DBA STZ $4F ; 一時変数 回避率 LC27DBA: LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$10 BEQ $7DD0 ASL $4F ; 一時変数 回避率 LDA $4F ; 一時変数 回避率 CMP #$63 ; #$63 = 99 BCC $7DD0 LDA #$63 ; #$63 = 99 STA $4F ; 一時変数 回避率 LC27DD0: RTS ;-------------------------------- ; 命中率修正 (自分が暗闇なら1/4) ;-------------------------------- LC27DD1: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$01 BEQ $7DE1 LSR $4E ; 一時変数 命中率 LSR $4E ; 一時変数 命中率 LC27DE1: RTS ;-------------------------------- ; 命中判定補助 (相手が分身ならミス, 分身を減らす) ;-------------------------------- LC27DE2: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$03 BEQ $7DF0 JSR $938F ; 分身を1つ減らす INC $56 ; 一時変数 命中判定用? (0であれば命中) LC27DF0: RTS ;-------------------------------- ; 命中判定補助 (ミュート状態ならミス) ;-------------------------------- LC27DF1: LDA $7BE6 ; フラグ? (40: ミュート) AND #$40 BEQ $7E02 INC $56 ; 一時変数 命中判定用? (0であれば命中) JSR $9965 ; Yレジスタ = ($7B2C)×12, Xレジスタ = ($7B2C)×24 LDA #$1F ; #$1F = 31 STA $3C5F,X LC27E02: RTS ;-------------------------------- ; 命中判定補助 (相手がレビテトならミス) ;-------------------------------- LC27E03: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$08 BEQ $7E11 INC $56 ; 一時変数 命中判定用? (0であれば命中) LC27E11: RTS ;-------------------------------- ; 命中判定補助 (乱数で命中判定, 相手の状態は関係なし) ;-------------------------------- LC27E12: JSR $02A2 ; 0〜99の範囲の乱数取得 CMP $4E ; 一時変数 命中率 BCS $7E20 JSR $02A2 ; 0〜99の範囲の乱数取得 CMP $4F ; 一時変数 回避率 BCS $7E22 LC27E20: INC $56 ; 一時変数 命中判定用? (0であれば命中) LC27E22: RTS ;-------------------------------- ; 命中判定補助 (乱数で命中判定, 相手が睡眠・麻痺・混乱・ストップなら回避率0) ;-------------------------------- LC27E23: JSR $02A2 ; 0〜99の範囲の乱数取得 CMP $4E ; 一時変数 命中率 BCS $7E58 LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$70 BNE $7E5A LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$10 BNE $7E5A JSR $02A2 ; 0〜99の範囲の乱数取得 CMP $4F ; 一時変数 回避率 BCS $7E5A LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2011,X ; フラグその1? (防御・回避率・魔法防御・装備の重さの表示に関係している?) ORA $2012,X ; フラグその2? (防御・回避率・魔法防御・装備の重さの表示に関係している?) BEQ $7E58 LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) CMP $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) BEQ $7E5A LDA #$06 ; #$06 = 6 STA $5D ; 一時変数 回避エフェクト (0: ミス, 1: ディフェンダー, 2: さすけのかたな, 3: エルフのマント, 4: ゴーレム, 5: 白刃取り, 6: 盾, 7: ミス) LC27E58: INC $56 ; 一時変数 命中判定用? (0であれば命中) LC27E5A: RTS ;-------------------------------- ; 命中判定補助 (相手のモンスタータイプと汎用データ1とが一致していなければミス) ;-------------------------------- LC27E5B: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2065,X ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) AND $57 ; 一時変数 汎用データ1 BNE $7E66 INC $56 ; 一時変数 命中判定用? (0であれば命中) LC27E66: RTS ;-------------------------------- ; 命中判定補助 (相手のレベルが汎用データ1の倍数ならばヒット) ;-------------------------------- LC27E67: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2002,X ; レベル TAX STX $7CB7 ; 除算ルーチン 被除数(下位) LDA $57 ; 一時変数 汎用データ1 TAX STX $7CB9 ; 除算ルーチン 除数(下位) JSR $010C ; 除算 (($7CB7)÷($7CB9) = ($7CBB) 余り($7CBD)) LDX $7CBD ; 除算ルーチン 除算余剰結果(下位) BEQ $7E80 INC $56 ; 一時変数 命中判定用? (0であれば命中) LC27E80: RTS ;-------------------------------- ; 命中判定 (魔法攻撃系1) (汎用データ1のbit7がONならば命中, 攻撃対象が味方同士・敵同士の場合は命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) ;-------------------------------- LC27E81: LDA $57 ; 一時変数 汎用データ1 BMI $7EBD LDA $58 ; 一時変数 汎用データ2 AND #$80 BEQ $7E9D LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCS $7E97 LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCC $7EBD LC27E97: LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCS $7EBD LC27E9D: LDA $39 TAX LDA $79FD,X ; 実行する魔法・技・道具・武器のデータ 1バイト目 LDX $49 ; 一時変数 相手アドレスへのインデックス AND $2064,X BNE $7EBD JSR $7C0D ; 命中率 | 回避率設定 ((汎用データ1 + (レベル関連?)) - (相手のレベル + 相手のレベル修正値?) | 魔法回避率) JSR $7C97 ; 魔法回避判定 (混乱・麻痺・睡眠・ストップ状態でない場合、以降の回避判定を行う / イージスのたて: 33%) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7EBD JSR $7CC3 ; 命中率修正 (何らかの条件を満たすと1/2(下限: 1)) JSR $7D8B ; 命中率 | 回避率修正 (相手がシェルなら1/2(下限: 1) | 相手が蛙なら0) JSR $7E12 ; 命中判定補助 (乱数で命中判定, 相手の状態は関係なし) LC27EBD: RTS ;-------------------------------- ; 命中判定 (物理攻撃系1) (相手が混乱・麻痺・睡眠状態であれば命中, 自分が"必ず命中"状態であれば命中, 相手の$2064によって命中, アビリティ・装備品による回避判定, 回避率修正: 相手が蛙なら0, 相手が小人なら2倍(上限: 99), 命中率修正: 自分が暗闇なら1/4, 乱数で命中判定) ;-------------------------------- LC27EBE: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$70 BNE $7EF2 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201F,X ; フラグ (04: 防御無視?, 08: 乱れ打ちで半減?, 10: ためる?, 20: 不明(攻撃力1/2), 40: 投げる?, 80: 必ず命中?) BMI $7EF2 LDA $39 TAX LDA $79FD,X ; 実行する魔法・技・道具・武器のデータ 1バイト目 LDX $49 ; 一時変数 相手アドレスへのインデックス AND $2064,X BNE $7EF2 JSR $7CFC ; 物理回避判定 (混乱・麻痺・睡眠・ストップ状態でない場合、以降の回避判定を行う / 白刃取り: 25%, ディフェンダー: 25%, さすけのかたな: 25%, エルフのマント: 33%) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7EF5 JSR $7DAC ; 回避率修正 (相手が蛙なら0, 相手が小人なら2倍(上限: 99)) JSR $7DD1 ; 命中率修正 (自分が暗闇なら1/4) JSR $7E23 ; 命中判定補助 (乱数で命中判定, 相手が睡眠・麻痺・混乱・ストップなら回避率0) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7EF5 LC27EF2: JSR $7DE2 ; 命中判定補助 (相手が分身ならミス, 分身を減らす) LC27EF5: RTS ;-------------------------------- ; 命中判定 (魔法攻撃系2, 汎用データ1のbit7がONならば命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) ;-------------------------------- LC27EF6: LDA $57 ; 一時変数 汎用データ1 BMI $7F1A LDA $39 TAX LDA $79FD,X ; 実行する魔法・技・道具・武器のデータ 1バイト目 LDX $49 ; 一時変数 相手アドレスへのインデックス AND $2064,X BNE $7F1A JSR $7C0D ; 命中率 | 回避率設定 ((汎用データ1 + (レベル関連?)) - (相手のレベル + 相手のレベル修正値?) | 魔法回避率) JSR $7C97 ; 魔法回避判定 (混乱・麻痺・睡眠・ストップ状態でない場合、以降の回避判定を行う / イージスのたて: 33%) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7F1A JSR $7CC3 ; 命中率修正 (何らかの条件を満たすと1/2(下限: 1)) JSR $7D8B ; 命中率 | 回避率修正 (相手がシェルなら1/2(下限: 1) | 相手が蛙なら0) JSR $7E12 ; 命中判定補助 (乱数で命中判定, 相手の状態は関係なし) LC27F1A: RTS ;-------------------------------- ; 命中判定 (物理攻撃系2) (汎用データ1のbit7がONならば命中, 命中率設定: 汎用データ1 | 回避率設定: 物理回避率, アビリティ・装備品による回避判定, 回避率修正: 相手が蛙なら0, 相手が小人なら2倍(上限: 99), 乱数で命中判定) ;-------------------------------- LC27F1B: LDA $57 ; 一時変数 汎用データ1 BMI $7F2F JSR $7C3B ; 命中率 | 回避率設定 (汎用データ1 | 物理回避率) JSR $7CFC ; 物理回避判定 (混乱・麻痺・睡眠・ストップ状態でない場合、以降の回避判定を行う / 白刃取り: 25%, ディフェンダー: 25%, さすけのかたな: 25%, エルフのマント: 33%) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $7F2F JSR $7DAC ; 回避率修正 (相手が蛙なら0, 相手が小人なら2倍(上限: 99)) JSR $7E23 ; 命中判定補助 (乱数で命中判定, 相手が睡眠・麻痺・混乱・ストップなら回避率0) LC27F2F: RTS ;-------------------------------- ; 攻撃力 | 倍率 | 防御力設定 (汎用データ2×(1〜9/8) | (自分のレベル×魔力)÷256 + 4 | 相手の魔法防御力) ;-------------------------------- LC27F30: TDC TAX LDA $58 ; 一時変数 汎用データ2 JSR $01BF ; 8で割る JSR $007C ; X〜Aの範囲の乱数取得 CLC ADC $58 ; 一時変数 汎用データ2 STA $50 ; 一時変数 攻撃力(下位) TDC ADC #$00 ; #$00 = 0 STA $51 ; 一時変数 攻撃力(上位) LDA $7BE5 ; 現在行動中のキャラクタのレベル STA $24 LDA $7BE4 ; 現在行動中のキャラクタの魔力 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) REP #$20 ; A = 16bit LDA $26 JSR $01BA ; 256で割る CLC ADC #$0004 ; #$0004 = 4 STA $52 ; 一時変数 倍率(下位) TDC SEP #$20 ; A = 8bit LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202F,X ; 魔法防御力 TAX STX $54 ; 一時変数 防御力(下位) RTS ;-------------------------------- ; 攻撃力 | 倍率 | 防御力設定 (汎用データ2×(1〜33/32) | (自分のレベル×魔力)÷256 + 4 | 相手の魔法防御力÷32) ;-------------------------------- LC27F6A: TDC TAX LDA $58 ; 一時変数 汎用データ2 JSR $01BD ; 32で割る JSR $007C ; X〜Aの範囲の乱数取得 CLC ADC $58 ; 一時変数 汎用データ2 STA $50 ; 一時変数 攻撃力(下位) TDC ADC #$00 ; #$00 = 0 STA $51 ; 一時変数 攻撃力(上位) LDA $7BE5 ; 現在行動中のキャラクタのレベル STA $24 LDA $7BE4 ; 現在行動中のキャラクタの魔力 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) REP #$20 ; A = 16bit LDA $26 JSR $01BA ; 256で割る CLC ADC #$0004 ; #$0004 = 4 STA $52 ; 一時変数 倍率(下位) TDC SEP #$20 ; A = 8bit LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202F,X ; 魔法防御力 JSR $01BD ; 32で割る TAX STX $54 ; 一時変数 防御力(下位) RTS ;-------------------------------- ; 攻撃力 | 倍率 | 防御力設定 (50〜200 | 汎用データ2 | 相手の魔法防御力) ;-------------------------------- LC27FA7: TDC TAX LDA #$96 ; #$96 = 150 JSR $007C ; X〜Aの範囲の乱数取得 CLC ADC #$32 ; #$32 = 50 TAX STX $50 ; 一時変数 攻撃力(下位) LDA $58 ; 一時変数 汎用データ2 TAX STX $52 ; 一時変数 倍率(下位) LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202F,X ; 魔法防御力 TAX STX $54 ; 一時変数 防御力(下位) RTS ;-------------------------------- ; 攻撃力 | 倍率 | 防御力設定 (汎用データ2×(1〜9/8) | (自分のレベル×魔力)÷256 + 4 | 相手の物理防御力) ;-------------------------------- LC27FC2: TDC TAX LDA $58 ; 一時変数 汎用データ2 JSR $01BF ; 8で割る JSR $007C ; X〜Aの範囲の乱数取得 CLC ADC $58 ; 一時変数 汎用データ2 STA $50 ; 一時変数 攻撃力(下位) TDC ADC #$00 ; #$00 = 0 STA $51 ; 一時変数 攻撃力(上位) LDA $7BE5 ; 現在行動中のキャラクタのレベル STA $24 LDA $7BE4 ; 現在行動中のキャラクタの魔力 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) REP #$20 ; A = 16bit LDA $26 JSR $01BA ; 256で割る CLC ADC #$0004 ; #$0004 = 4 STA $52 ; 一時変数 倍率(下位) TDC SEP #$20 ; A = 8bit LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202D,X ; 物理防御力 TAX STX $54 ; 一時変数 防御力(下位) RTS ;-------------------------------- ; 攻撃力 | 倍率 | 防御力設定 (武器攻撃力×(1〜9/8) | (自分のレベル×力)÷128 + 2 | 相手の物理防御力) ;-------------------------------- LC27FFC: LDA $39 TAX LDA $7A03,X ; 実行する魔法・技・道具・武器のデータ 7バイト目 TAX STX $0E JSR $01BF ; 8で割る LDX #$0000 ; #$0000 = 0 JSR $007C ; X〜Aの範囲の乱数取得 REP #$20 ; A = 16bit CLC ADC $0E STA $50 ; 一時変数 攻撃力(下位) TDC SEP #$20 ; A = 8bit LDA $7BE5 ; 現在行動中のキャラクタのレベル STA $24 LDA $7BE1 ; 現在行動中のキャラクタの力 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) REP #$20 ; A = 16bit LDA $26 JSR $01BB ; 128で割る CLC ADC #$0002 ; #$0002 = 2 STA $52 ; 一時変数 倍率(下位) TDC SEP #$20 ; A = 8bit LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202D,X ; 物理防御力 TAX STX $54 ; 一時変数 防御力(下位) RTS ;-------------------------------- ; 攻撃力 | 倍率 | 防御力設定 (格闘なし: (0〜自分のレベル/4)(+ 7バイト目) | 2 | 相手の物理防御力 / 格闘あり: レベル×2 + (0〜自分のレベル/4)(+ 7バイト目)(+50(カイザーナックル)) | (自分のレベル×力)÷256 + 2 | 相手の物理防御力) ;-------------------------------- LC2803E: LDA $39 TAX LDA $7A03,X ; 実行する魔法・技・道具・武器のデータ 7バイト目 TAX STX $0E TDC TAX LDA $7BE5 ; 現在行動中のキャラクタのレベル JSR $01C0 ; 4で割る JSR $007C ; X〜Aの範囲の乱数取得 TAX STX $10 LDA $7BE5 ; 現在行動中のキャラクタのレベル STA $24 LDA $7BE1 ; 現在行動中のキャラクタの力 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) LDX $26 STX $14 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2021,X ; アビリティフラグ? (01: 二刀流?, 10: 薬の知識, 20: 両手持ち, 40: 格闘?) AND #$40 BEQ $80BA LDA $7BE5 ; 現在行動中のキャラクタのレベル TAX STX $12 ASL $12 ROL $13 CLC LDA $10 ADC $12 STA $10 LDA $11 ADC $13 STA $11 REP #$20 ; A = 16bit CLC LDA $0E ADC $10 STA $50 ; 一時変数 攻撃力(下位) TDC SEP #$20 ; A = 8bit REP #$20 ; A = 16bit LDA $14 JSR $01BA ; 256で割る CLC ADC #$0002 ; #$0002 = 2 STA $52 ; 一時変数 倍率(下位) TDC SEP #$20 ; A = 8bit LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2039,X ; 装備特殊効果フラグ(01: HP1/2で捕獲, 02: 不死特性付加, 04: 剣の舞確率上昇, 08: 消費MP1/2, 10: 盗み成功率2倍, 20: 格闘効果付加, 40: エルフのマント, 80: イージスのたて) AND #$20 BEQ $80CB REP #$20 ; A = 16bit CLC LDA $50 ; 一時変数 攻撃力(下位) ADC #$0032 ; #$0032 = 50 STA $50 ; 一時変数 攻撃力(下位) TDC SEP #$20 ; A = 8bit BRA $80CB LC280BA: REP #$20 ; A = 16bit CLC LDA $0E ADC $10 STA $50 ; 一時変数 攻撃力(下位) TDC SEP #$20 ; A = 8bit LDX #$0002 ; #$0002 = 2 STX $52 ; 一時変数 倍率(下位) LC280CB: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202D,X ; 物理防御力 TAX STX $54 ; 一時変数 防御力(下位) RTS ;-------------------------------- ; 攻撃力 | 倍率 | 防御力設定 (武器攻撃力 + (0〜3) | ((自分の力×レベル)÷128 + 2) + ((素速さ×レベル) % 256)÷128 | 相手の物理防御力) ;-------------------------------- LC280D4: LDA $39 TAX LDA $7A03,X ; 実行する魔法・技・道具・武器のデータ 7バイト目 STA $50 ; 一時変数 攻撃力(下位) TDC TAX LDA #$03 ; #$03 = 3 JSR $007C ; X〜Aの範囲の乱数取得 CLC ADC $50 ; 一時変数 攻撃力(下位) TAX STX $50 ; 一時変数 攻撃力(下位) LDA $7BE1 ; 現在行動中のキャラクタの力 STA $24 LDA $7BE5 ; 現在行動中のキャラクタのレベル STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) REP #$20 ; A = 16bit LDA $26 JSR $01BB ; 128で割る CLC ADC #$0002 ; #$0002 = 2 STA $0E TDC SEP #$20 ; A = 8bit LDA $7BE2 ; 現在行動中のキャラクタの素速さ STA $24 LDA $7BE5 ; 現在行動中のキャラクタのレベル STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) LDA $26 REP #$20 ; A = 16bit JSR $01BB ; 128で割る CLC ADC $0E STA $52 ; 一時変数 倍率(下位) TDC SEP #$20 ; A = 8bit LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202D,X ; 物理防御力 TAX STX $54 ; 一時変数 防御力(下位) RTS ;-------------------------------- ; 攻撃力 | 倍率 | 防御力設定 (武器攻撃力×(1〜3/2) | (自分の力×レベル)÷128 + 2 | 相手の物理防御力÷4) ;-------------------------------- LC2812B: LDA $39 TAX LDA $7A03,X ; 実行する魔法・技・道具・武器のデータ 7バイト目 TAX STX $0E LSR $0E LDX #$0000 ; #$0000 = 0 JSR $007C ; X〜Aの範囲の乱数取得 REP #$20 ; A = 16bit CLC ADC $0E STA $50 ; 一時変数 攻撃力(下位) TDC SEP #$20 ; A = 8bit LDA $7BE1 ; 現在行動中のキャラクタの力 STA $24 LDA $7BE5 ; 現在行動中のキャラクタのレベル STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) REP #$20 ; A = 16bit LDA $26 JSR $01BB ; 128で割る CLC ADC #$0002 ; #$0002 = 2 STA $52 ; 一時変数 倍率(下位) TDC SEP #$20 ; A = 8bit LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202D,X ; 物理防御力 JSR $01C0 ; 4で割る TAX STX $54 ; 一時変数 防御力(下位) RTS ;-------------------------------- ; 攻撃力 | 倍率 | 防御力設定 (武器攻撃力×(1/2〜1) | ((自分の素速さ×レベル)÷128 + 2) + (魔力×レベル)÷128 | 相手の魔法防御力) ;-------------------------------- LC2816F: LDA $39 TAX LDA $7A03,X ; 実行する魔法・技・道具・武器のデータ 7バイト目 LSR TAX STX $0E LDX #$0000 ; #$0000 = 0 JSR $007C ; X〜Aの範囲の乱数取得 REP #$20 ; A = 16bit CLC ADC $0E STA $50 ; 一時変数 攻撃力(下位) TDC SEP #$20 ; A = 8bit LDA $7BE2 ; 現在行動中のキャラクタの素速さ STA $24 LDA $7BE5 ; 現在行動中のキャラクタのレベル STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) REP #$20 ; A = 16bit LDA $26 JSR $01BB ; 128で割る CLC ADC #$0002 ; #$0002 = 2 STA $0E TDC SEP #$20 ; A = 8bit LDA $7BE4 ; 現在行動中のキャラクタの魔力 STA $24 LDA $7BE5 ; 現在行動中のキャラクタのレベル STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) REP #$20 ; A = 16bit LDA $26 JSR $01BB ; 128で割る CLC ADC $0E STA $52 ; 一時変数 倍率(下位) TDC SEP #$20 ; A = 8bit LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202F,X ; 魔法防御力 TAX STX $54 ; 一時変数 防御力(下位) RTS ;-------------------------------- ; 攻撃力 | 倍率 | 防御力設定 (武器攻撃力×(0〜1) | (自分の魔力×レベル)÷256 + 2 | 相手の魔法防御力) ;-------------------------------- LC281CB: LDA $39 TAX LDA $7A03,X ; 実行する魔法・技・道具・武器のデータ 7バイト目 LDX #$0000 ; #$0000 = 0 JSR $007C ; X〜Aの範囲の乱数取得 REP #$20 ; A = 16bit ASL STA $50 ; 一時変数 攻撃力(下位) TDC SEP #$20 ; A = 8bit LDA $7BE4 ; 現在行動中のキャラクタの魔力 STA $24 LDA $7BE5 ; 現在行動中のキャラクタのレベル STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) REP #$20 ; A = 16bit LDA $26 JSR $01BA ; 256で割る CLC ADC #$0002 ; #$0002 = 2 STA $52 ; 一時変数 倍率(下位) TDC SEP #$20 ; A = 8bit LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202F,X ; 魔法防御力 TAX STX $54 ; 一時変数 防御力(下位) RTS ;-------------------------------- ; 攻撃力 | 倍率 | 防御力設定 (10〜100 | レベル÷8 + 2 | 相手の魔法防御力) ;-------------------------------- LC28205: TDC TAX LDA #$5A ; #$5A = 90 JSR $007C ; X〜Aの範囲の乱数取得 CLC ADC #$0A ; #$0A = 10 TAX STX $50 ; 一時変数 攻撃力(下位) LDA $7BE5 ; 現在行動中のキャラクタのレベル JSR $01BF ; 8で割る CLC ADC #$02 ; #$02 = 2 TAX STX $52 ; 一時変数 倍率(下位) LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202F,X ; 魔法防御力 TAX STX $54 ; 一時変数 防御力(下位) RTS ;-------------------------------- ; 攻撃力 | 倍率 | 防御力設定 ((モンスター)攻撃力×(1〜9/8) | (モンスター)倍率 | 相手の物理防御力) ;-------------------------------- LC28227: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2044,X ; 攻撃力 (「はなつ」時にモンスターの攻撃力で上書きされる) STA $0E JSR $01BF ; 8で割る LDX #$0000 ; #$0000 = 0 JSR $007C ; X〜Aの範囲の乱数取得 CLC ADC $0E STA $50 ; 一時変数 攻撃力(下位) TDC ADC #$00 ; #$00 = 0 STA $51 ; 一時変数 攻撃力(上位) LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2062,X ; ダメージ倍率 (「はなつ」時にモンスターの倍率で設定される) TAY STY $52 ; 一時変数 倍率(下位) LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202D,X ; 物理防御力 TAX STX $54 ; 一時変数 防御力(下位) RTS ;-------------------------------- ; 攻撃力 | 倍率 | 防御力設定 (汎用データ1 | 汎用データ2 | 0) ;-------------------------------- LC28252: LDA $57 ; 一時変数 汎用データ1 TAX STX $50 ; 一時変数 攻撃力(下位) LDA $58 ; 一時変数 汎用データ2 TAX STX $52 ; 一時変数 倍率(下位) TDC TAX STX $54 ; 一時変数 防御力(下位) RTS ;-------------------------------- ; 攻撃力 | 倍率 | 防御力設定 (汎用データ1×(1〜2) | (自分のレベル×力)÷128 | 相手の物理防御力) ;-------------------------------- LC28261: TDC TAX LDA $58 ; 一時変数 汎用データ2 JSR $007C ; X〜Aの範囲の乱数取得 STA $50 ; 一時変数 攻撃力(下位) CLC LDA $50 ; 一時変数 攻撃力(下位) ADC $58 ; 一時変数 汎用データ2 STA $50 ; 一時変数 攻撃力(下位) TDC ADC #$00 ; #$00 = 0 STA $51 ; 一時変数 攻撃力(上位) LDA $7BE5 ; 現在行動中のキャラクタのレベル STA $24 LDA $7BE1 ; 現在行動中のキャラクタの力 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) REP #$20 ; A = 16bit LDA $26 JSR $01BB ; 128で割る INC STA $52 ; 一時変数 倍率(下位) TDC SEP #$20 ; A = 8bit LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202D,X ; 物理防御力 TAX STX $54 ; 一時変数 防御力(下位) RTS ;-------------------------------- ; 攻撃力 | 倍率 | 防御力設定 (何らかのアイテムの攻撃力×(1〜9/8) | (自分の力×レベル)÷128 + (素速さ×レベル)÷128 + 2 | 相手の物理防御力) ;-------------------------------- LC28299: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $205A,X ; 使用するアイテムの番号? STA $7C63 REP #$20 ; A = 16bit JSR $01B7 ; 4倍する STA $0E ASL CLC ADC $0E TAX TDC SEP #$20 ; A = 8bit LDA $D10007,X ; FILEPOS_ITEMDATA_WEAPON[7] STA $0E JSR $01BF ; 8で割る LDX #$0000 ; #$0000 = 0 JSR $007C ; X〜Aの範囲の乱数取得 CLC ADC $0E STA $50 ; 一時変数 攻撃力(下位) TDC ADC #$00 ; #$00 = 0 STA $51 ; 一時変数 攻撃力(上位) LDA $7BE1 ; 現在行動中のキャラクタの力 STA $24 LDA $7BE5 ; 現在行動中のキャラクタのレベル STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) REP #$20 ; A = 16bit LDA $26 JSR $01BB ; 128で割る STA $0E TDC SEP #$20 ; A = 8bit LDA $7BE2 ; 現在行動中のキャラクタの素速さ STA $24 LDA $7BE5 ; 現在行動中のキャラクタのレベル STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) REP #$20 ; A = 16bit LDA $26 JSR $01BB ; 128で割る CLC ADC $0E ADC #$0002 ; #$0002 = 2 STA $52 ; 一時変数 倍率(下位) TDC SEP #$20 ; A = 8bit LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202D,X ; 物理防御力 TAX STX $54 ; 一時変数 防御力(下位) RTS ;-------------------------------- ; 攻撃力 | 倍率 | 防御力設定 (レベル + 10, 所持金が(汎用データ1×レベル)未満であれば0 | 汎用データ2 | 相手の物理防御力) ;-------------------------------- LC2830A: CLC LDA $7BE5 ; 現在行動中のキャラクタのレベル ADC #$0A ; #$0A = 10 TAX STX $50 ; 一時変数 攻撃力(下位) LDA $57 ; 一時変数 汎用データ1 STA $24 LDA $7BE5 ; 現在行動中のキャラクタのレベル STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) LDA $000949 ; 所持金(上位) BNE $8339 REP #$20 ; A = 16bit LDA $000947 ; 所持金(下位) CMP $26 BCS $8336 TDC STA $50 ; 一時変数 攻撃力(下位) SEP #$20 ; A = 8bit BRA $8358 LC28336: TDC SEP #$20 ; A = 8bit LC28339: SEC LDA $000947 ; 所持金(下位) SBC $26 STA $000947 ; 所持金(下位) LDA $000948 ; 所持金(中位) SBC $27 STA $000948 ; 所持金(中位) LDA $000949 ; 所持金(上位) SBC #$00 ; #$00 = 0 STA $000949 ; 所持金(上位) LC28358: LDA $58 ; 一時変数 汎用データ2 TAX STX $52 ; 一時変数 倍率(下位) LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202D,X ; 物理防御力 TAX STX $54 ; 一時変数 防御力(下位) RTS ;-------------------------------- ; 攻撃力修正 (目標を全体化した場合に1/2?) ;-------------------------------- LC28366: LDA $39 TAX LDA $79FC,X ; 実行する魔法・技・道具・武器のデータ 0バイト目 AND #$40 BNE $839A LDA $7B2C ASL TAX LDA $7AFC,X AND #$F0 BNE $8390 LDA $7AFC,X AND #$0F JSR $01B5 ; 16倍する STA $0E LDA $7AFD,X AND #$F0 JSR $01BE ; 16で割る ORA $0E LC28390: JSR $01C3 ; Aレジスタのセットされたビットの数をXレジスタに格納する DEX BEQ $839A LSR $51 ; 一時変数 攻撃力(上位) ROR $50 ; 一時変数 攻撃力(下位) LC2839A: RTS ;-------------------------------- ; 倍率修正 (自分が後列であれば1/2, 相手が後列であれば1/2) ;-------------------------------- LC2839B: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$10 BNE $83BC LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) BPL $83AF REP #$20 ; A = 16bit LSR $52 ; 一時変数 倍率(下位) SEP #$20 ; A = 8bit LC283AF: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) BPL $83BC REP #$20 ; A = 16bit LSR $52 ; 一時変数 倍率(下位) SEP #$20 ; A = 8bit LC283BC: RTS ;-------------------------------- ; 攻撃力 | 倍率 | 防御力修正 (なげるでの攻撃ならば2倍, 自分の$201Fのbit5がONならば1/2, 相手が人間系で自分の$201Fのbit0がONならば2倍, 相手が守り状態ならば0 | ためる状態ならば2倍, 乱れ打ちならば1/2, 相手が防御状態ならば1/2 | 防御無視攻撃ならば0) ;-------------------------------- LC283BD: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201F,X ; フラグ (04: 防御無視?, 08: 乱れ打ちで半減?, 10: ためる?, 20: 不明(攻撃力1/2), 40: 投げる?, 80: 必ず命中?) AND #$40 BEQ $83CC REP #$20 ; A = 16bit ASL $50 ; 一時変数 攻撃力(下位) SEP #$20 ; A = 8bit LC283CC: LDA $201F,X ; フラグ (04: 防御無視?, 08: 乱れ打ちで半減?, 10: ためる?, 20: 不明(攻撃力1/2), 40: 投げる?, 80: 必ず命中?) AND #$20 BEQ $83DA REP #$20 ; A = 16bit LSR $50 ; 一時変数 攻撃力(下位) TDC SEP #$20 ; A = 8bit LC283DA: LDA $201F,X ; フラグ (04: 防御無視?, 08: 乱れ打ちで半減?, 10: ためる?, 20: 不明(攻撃力1/2), 40: 投げる?, 80: 必ず命中?) AND #$10 BEQ $83E7 REP #$20 ; A = 16bit ASL $52 ; 一時変数 倍率(下位) SEP #$20 ; A = 8bit LC283E7: LDA $201F,X ; フラグ (04: 防御無視?, 08: 乱れ打ちで半減?, 10: ためる?, 20: 不明(攻撃力1/2), 40: 投げる?, 80: 必ず命中?) AND #$08 BEQ $83F5 REP #$20 ; A = 16bit LSR $52 ; 一時変数 倍率(下位) TDC SEP #$20 ; A = 8bit LC283F5: LDA $201F,X ; フラグ (04: 防御無視?, 08: 乱れ打ちで半減?, 10: ためる?, 20: 不明(攻撃力1/2), 40: 投げる?, 80: 必ず命中?) AND #$04 BEQ $8400 TDC TAX STX $54 ; 一時変数 防御力(下位) LC28400: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2065,X ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) BPL $8416 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201F,X ; フラグ (04: 防御無視?, 08: 乱れ打ちで半減?, 10: ためる?, 20: 不明(攻撃力1/2), 40: 投げる?, 80: 必ず命中?) AND #$01 BEQ $8416 REP #$20 ; A = 16bit ASL $50 ; 一時変数 攻撃力(下位) SEP #$20 ; A = 8bit LC28416: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) BPL $8424 REP #$20 ; A = 16bit LSR $52 ; 一時変数 倍率(下位) TDC SEP #$20 ; A = 8bit LC28424: LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$40 BEQ $842F TDC TAX STX $50 ; 一時変数 攻撃力(下位) LC2842F: RTS ;-------------------------------- ; 倍率修正 (自分が両手持ちで、$2011と$2012が0で、右手・左手のどちらかが空いていれば2倍) ;-------------------------------- LC28430: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2021,X ; アビリティフラグ? (01: 二刀流?, 10: 薬の知識, 20: 両手持ち, 40: 格闘?) AND #$20 BEQ $8451 LDA $2011,X ; フラグその1? (防御・回避率・魔法防御・装備の重さの表示に関係している?) ORA $2012,X ; フラグその2? (防御・回避率・魔法防御・装備の重さの表示に関係している?) BNE $8451 LDA $2013,X ; 装備品 (左手) BEQ $844B LDA $2014,X ; 装備品 (右手) BNE $8451 LC2844B: REP #$20 ; A = 16bit ASL $52 ; 一時変数 倍率(下位) SEP #$20 ; A = 8bit LC28451: RTS ;-------------------------------- ; 倍率修正 (ジャンプしている場合は2倍 or それ以外の場合は自分が後列であれば1/2, 相手が後列であれば1/2) ;-------------------------------- LC28452: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$10 BEQ $8463 REP #$20 ; A = 16bit ASL $52 ; 一時変数 倍率(下位) TDC SEP #$20 ; A = 8bit RTS LC28463: JSR $839B ; 倍率修正 (自分が後列であれば1/2, 相手が後列であれば1/2) RTS ;-------------------------------- ; 攻撃力 | 倍率修正 (汎用データ2だけ増加 | (自分のレベル×魔力)÷128だけ増加) (MPを汎用データ3だけ消費/MP不足時は何もしない) ;-------------------------------- LC28467: LDA $59 ; 一時変数 汎用データ3 TAX STX $12 LDA $58 ; 一時変数 汎用データ2 TAX STX $10 REP #$20 ; A = 16bit LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $200A,X ; マジックポイント(下位) CMP $12 BCC $84AB SEC SBC $12 STA $200A,X ; マジックポイント(下位) CLC LDA $50 ; 一時変数 攻撃力(下位) ADC $10 STA $50 ; 一時変数 攻撃力(下位) TDC SEP #$20 ; A = 8bit LDA $7BE5 ; 現在行動中のキャラクタのレベル STA $24 LDA $7BE4 ; 現在行動中のキャラクタの魔力 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) REP #$20 ; A = 16bit LDA $26 JSR $01BB ; 128で割る CLC ADC $52 ; 一時変数 倍率(下位) STA $52 ; 一時変数 倍率(下位) TDC SEP #$20 ; A = 8bit INC $5F ; 一時変数 攻撃エフェクトフラグ(1)? RTS LC284AB: TDC SEP #$20 ; A = 8bit RTS ;-------------------------------- ; 攻撃力 | 防御力修正 (とくいわざ特性のビット0がセットされていたら3/2 | とくいわざ特性のビット7がセットされていたら0) ;-------------------------------- LC284AF: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $206E,X ; とくいわざの特性 (01: 攻撃力3/2, 02: スリップ, 04: 混乱, 08: 麻痺, 10: 暗闇, 20: 猛毒, 40: 徐々に老化, 80: 回避不能/防御力無視) BPL $84BA STZ $54 ; 一時変数 防御力(下位) STZ $55 ; 一時変数 防御力(上位) LC284BA: LDA $206E,X ; とくいわざの特性 (01: 攻撃力3/2, 02: スリップ, 04: 混乱, 08: 麻痺, 10: 暗闇, 20: 猛毒, 40: 徐々に老化, 80: 回避不能/防御力無視) AND #$01 BEQ $84CE REP #$20 ; A = 16bit LDA $50 ; 一時変数 攻撃力(下位) LSR CLC ADC $50 ; 一時変数 攻撃力(下位) STA $50 ; 一時変数 攻撃力(下位) TDC SEP #$20 ; A = 8bit LC284CE: RTS ;-------------------------------- ; 倍率修正 (薬の知識があれば2倍) ;-------------------------------- LC284CF: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2021,X ; アビリティフラグ? (01: 二刀流?, 10: 薬の知識, 20: 両手持ち, 40: 格闘?) AND #$10 BEQ $84DC ASL $52 ; 一時変数 倍率(下位) ROL $53 ; 一時変数 倍率(上位) LC284DC: RTS ;-------------------------------- ; 攻撃力修正 (相手のモンスタータイプと汎用データ3とが一致すれば8倍) ;-------------------------------- LC284DD: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2065,X ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) AND $59 ; 一時変数 汎用データ3 BEQ $84F2 REP #$20 ; A = 16bit LDA $50 ; 一時変数 攻撃力(下位) JSR $01B6 ; 8倍する STA $50 ; 一時変数 攻撃力(下位) TDC SEP #$20 ; A = 8bit LC284F2: RTS ;-------------------------------- ; 倍率 | 防御力修正 (相手がシェルなら1/2 | 相手が蛙なら0) ;-------------------------------- LC284F3: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) ORA $2072,X ; 一時的状態変化3 (補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$20 BEQ $8503 LSR $53 ; 一時変数 倍率(上位) ROR $52 ; 一時変数 倍率(下位) LC28503: LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$20 BEQ $8511 STZ $54 ; 一時変数 防御力(下位) STZ $55 ; 一時変数 防御力(上位) LC28511: RTS ;-------------------------------- ; 防御力 | 倍率修正 (相手が蛙・小人なら0 | 相手がプロテスなら1/2) ;-------------------------------- LC28512: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$30 BEQ $8522 TDC TAX STX $54 ; 一時変数 防御力(下位) LC28522: LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) ORA $2072,X ; 一時的状態変化3 (補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$40 BEQ $8532 REP #$20 ; A = 16bit LSR $52 ; 一時変数 倍率(下位) SEP #$20 ; A = 8bit LC28532: RTS ;-------------------------------- ; 攻撃力修正 (自分が蛙・小人なら3, 自分がバーサクなら3/2) ;-------------------------------- LC28533: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$30 BEQ $8544 LDX #$0003 ; #$0003 = 3 STX $50 ; 一時変数 攻撃力(下位) LC28544: LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$08 BEQ $855C REP #$20 ; A = 16bit LDA $50 ; 一時変数 攻撃力(下位) ASL CLC ADC $50 ; 一時変数 攻撃力(下位) LSR STA $50 ; 一時変数 攻撃力(下位) TDC SEP #$20 ; A = 8bit LC2855C: RTS ;-------------------------------- ; 攻撃力 | 防御力修正 (自分と相手のレベルが等しければ8倍 | 自分と相手のレベルが等しければ0) ;-------------------------------- LC2855D: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2002,X ; レベル LDX $32 ; 一時変数 自分アドレスへのインデックス CMP $2002,X ; レベル BNE $8576 REP #$20 ; A = 16bit ASL $50 ; 一時変数 攻撃力(下位) ASL $50 ; 一時変数 攻撃力(下位) ASL $50 ; 一時変数 攻撃力(下位) TDC STA $54 ; 一時変数 防御力(下位) SEP #$20 ; A = 8bit LC28576: RTS ;-------------------------------- ; 攻撃力 | 倍率 | 防御力設定 (武器攻撃力 - (逃走回数? + 1? (上限: 255))÷2 | (自分のレベル×力)÷128 + 2 | 相手の物理防御力) ;-------------------------------- LC28577: LDA $39 TAX SEC LDA $7A03,X ; 実行する魔法・技・道具・武器のデータ 7バイト目 SBC $7C75 ; 逃走回数? + 1? (上限: 255) BCS $8584 TDC LC28584: TAX STX $50 ; 一時変数 攻撃力(下位) LDA $7BE5 ; 現在行動中のキャラクタのレベル STA $24 LDA $7BE1 ; 現在行動中のキャラクタの力 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) REP #$20 ; A = 16bit LDA $26 JSR $01BB ; 128で割る CLC ADC #$0002 ; #$0002 = 2 STA $52 ; 一時変数 倍率(下位) TDC SEP #$20 ; A = 8bit LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202D,X ; 物理防御力 TAX STX $54 ; 一時変数 防御力(下位) RTS ;-------------------------------- ; 攻撃力 | 倍率 | 防御力設定 ((モンスター)攻撃力 | (モンスター)倍率 or (自分のレベル×力)÷128 + 2 | 相手の物理防御力) ;-------------------------------- LC285AD: LDX $32 ; 一時変数 自分アドレスへのインデックス CLC LDA $2044,X ; 攻撃力 (「はなつ」時にモンスターの攻撃力で上書きされる) ADC $2045,X STA $50 ; 一時変数 攻撃力(下位) TDC ADC #$00 ; #$00 = 0 STA $51 ; 一時変数 攻撃力(上位) LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCC $85CB LDA $2062,X ; ダメージ倍率 (「はなつ」時にモンスターの倍率で設定される) TAX STX $52 ; 一時変数 倍率(下位) BRA $85E8 LC285CB: LDA $7BE5 ; 現在行動中のキャラクタのレベル STA $24 LDA $7BE1 ; 現在行動中のキャラクタの力 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) REP #$20 ; A = 16bit LDA $26 JSR $01BB ; 128で割る CLC ADC #$0002 ; #$0002 = 2 STA $52 ; 一時変数 倍率(下位) TDC SEP #$20 ; A = 8bit LC285E8: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202D,X ; 物理防御力 TAX STX $54 ; 一時変数 防御力(下位) RTS ;-------------------------------- ; 攻撃力 | 倍率 | 防御力設定 ((モンスター)攻撃力×(8〜65/8) | (モンスター)倍率 | 相手の物理防御力) ;-------------------------------- LC285F1: LDX $32 ; 一時変数 自分アドレスへのインデックス CLC LDA $2044,X ; 攻撃力 (「はなつ」時にモンスターの攻撃力で上書きされる) PHA REP #$20 ; A = 16bit JSR $01B6 ; 8倍する STA $50 ; 一時変数 攻撃力(下位) TDC SEP #$20 ; A = 8bit LDA $2062,X ; ダメージ倍率 (「はなつ」時にモンスターの倍率で設定される) TAX STX $52 ; 一時変数 倍率(下位) PLA JSR $01BF ; 8で割る LDX #$0000 ; #$0000 = 0 JSR $007C ; X〜Aの範囲の乱数取得 CLC ADC $50 ; 一時変数 攻撃力(下位) STA $50 ; 一時変数 攻撃力(下位) LDA $51 ; 一時変数 攻撃力(上位) ADC #$00 ; #$00 = 0 STA $51 ; 一時変数 攻撃力(上位) LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202D,X ; 物理防御力 TAX STX $54 ; 一時変数 防御力(下位) RTS ;-------------------------------- ; 攻撃力 | 倍率 | 防御力設定 ((逃走回数? + 1? (上限: 255))÷2 | (自分のレベル×力)÷128 + (レベル×素速さ)÷128 + 2 | 相手の物理防御力) ;-------------------------------- LC28626: LDA $7C75 ; 逃走回数? + 1? (上限: 255) LSR TAX STX $50 ; 一時変数 攻撃力(下位) LDA $7BE5 ; 現在行動中のキャラクタのレベル STA $24 LDA $7BE1 ; 現在行動中のキャラクタの力 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) LDX $26 STX $0E LDA $7BE5 ; 現在行動中のキャラクタのレベル STA $24 LDA $7BE2 ; 現在行動中のキャラクタの素速さ STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) REP #$20 ; A = 16bit LDA $26 JSR $01BB ; 128で割る STA $10 LDA $0E JSR $01BB ; 128で割る CLC ADC $10 ADC #$0002 ; #$0002 = 2 STA $52 ; 一時変数 倍率(下位) TDC SEP #$20 ; A = 8bit LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $202D,X ; 物理防御力 TAX STX $54 ; 一時変数 防御力(下位) RTS ;-------------------------------- ; 攻撃力修正 (攻撃属性とパワーアップ属性とが一致すれば1.5倍) ;-------------------------------- LC2866D: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2022,X ; パワーアップ属性? AND $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) BEQ $8683 REP #$20 ; A = 16bit LDA $50 ; 一時変数 攻撃力(下位) LSR CLC ADC $50 ; 一時変数 攻撃力(下位) STA $50 ; 一時変数 攻撃力(下位) TDC SEP #$20 ; A = 8bit LC28683: RTS ;-------------------------------- ; 魔法剣関連 (フレア剣なら攻撃力+100, 防御力1/4 / 属性が相手の吸収と一致: 吸収フラグON, 防御力0, 無効と一致: ミスフラグON, 半減と一致: 倍率1/2, 弱点が4倍属性と一致: 相手がボス属性でない場合は即死(ゾンビ時除く)、ある場合は攻撃力4倍で防御力0, 弱点が3倍属性と一致: 攻撃力3倍で防御力0, 弱点が2倍属性と一致: 攻撃力2倍で防御力0) ;-------------------------------- LC28684: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2050,X ; 魔法剣 付加属性(2倍) (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) ORA $2051,X ; 魔法剣 付加属性(3倍) (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) ORA $2052,X ; 魔法剣 付加属性(4倍/即死) (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) STA $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) ORA $2053,X ; 魔法剣 付加状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2054,X ; 魔法剣 付加状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2055,X ; 魔法剣 特殊効果フラグ(20: MP吸収, 40: HP吸収, 80: フレア剣効果) BEQ $869E INC $60 ; 一時変数 魔法剣フラグ LC2869E: LDA $2055,X ; 魔法剣 特殊効果フラグ(20: MP吸収, 40: HP吸収, 80: フレア剣効果) BPL $86B5 REP #$20 ; A = 16bit CLC LDA $50 ; 一時変数 攻撃力(下位) ADC #$0064 ; #$0064 = 100 STA $50 ; 一時変数 攻撃力(下位) LSR $54 ; 一時変数 防御力(下位) LSR $54 ; 一時変数 防御力(下位) TDC SEP #$20 ; A = 8bit RTS LC286B5: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2030,X ; 吸収属性 (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) AND $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) BEQ $86C5 INC $62 ; 一時変数 吸収フラグ? STZ $54 ; 一時変数 防御力(下位) STZ $55 ; 一時変数 防御力(上位) RTS LC286C5: LDA $2032,X ; 無効属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) AND $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) BEQ $86CF INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS LC286CF: LDA $2033,X ; 半減属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) AND $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) BEQ $86DB LSR $53 ; 一時変数 倍率(上位) ROR $52 ; 一時変数 倍率(下位) RTS LC286DB: LDA $2034,X ; 弱点属性 (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) STA $0E LDX $32 ; 一時変数 自分アドレスへのインデックス AND $2052,X ; 魔法剣 付加属性(4倍/即死) (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) BEQ $870D LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2065,X ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) AND #$20 BEQ $86FB REP #$20 ; A = 16bit ASL $50 ; 一時変数 攻撃力(下位) ASL $50 ; 一時変数 攻撃力(下位) STZ $54 ; 一時変数 防御力(下位) SEP #$20 ; A = 8bit RTS LC286FB: LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$02 BNE $8733 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA #$80 STA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) INC $61 ; 一時変数 攻撃エフェクトフラグ(2)? RTS LC2870D: LDA $0E AND $2051,X ; 魔法剣 付加属性(3倍) (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) BEQ $8724 REP #$20 ; A = 16bit LDA $50 ; 一時変数 攻撃力(下位) ASL CLC ADC $50 ; 一時変数 攻撃力(下位) STA $50 ; 一時変数 攻撃力(下位) TDC STA $54 ; 一時変数 防御力(下位) SEP #$20 ; A = 8bit RTS LC28724: LDA $0E AND $2050,X ; 魔法剣 付加属性(2倍) (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) BEQ $8733 REP #$20 ; A = 16bit ASL $50 ; 一時変数 攻撃力(下位) STZ $54 ; 一時変数 防御力(下位) SEP #$20 ; A = 8bit LC28733: RTS ;-------------------------------- ; 攻撃属性による倍率 | 防御力修正 (相手の吸収と一致: 吸収フラグON, 防御力0, 無効と一致: ミスフラグON, 半減と一致: 倍率1/2, 弱点と一致: 倍率2倍, 防御力0) ;-------------------------------- LC28734: LDA $60 ; 一時変数 魔法剣フラグ BNE $876D LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2030,X ; 吸収属性 (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) AND $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) BEQ $8748 INC $62 ; 一時変数 吸収フラグ? STZ $54 ; 一時変数 防御力(下位) STZ $55 ; 一時変数 防御力(上位) RTS LC28748: LDA $2032,X ; 無効属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) AND $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) BEQ $8752 INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS LC28752: LDA $2033,X ; 半減属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) AND $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) BEQ $875E LSR $51 ; 一時変数 攻撃力(上位) ROR $50 ; 一時変数 攻撃力(下位) RTS LC2875E: LDA $2034,X ; 弱点属性 (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) AND $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) BEQ $876D ASL $50 ; 一時変数 攻撃力(下位) ROL $51 ; 一時変数 攻撃力(上位) STZ $54 ; 一時変数 防御力(下位) STZ $55 ; 一時変数 防御力(上位) LC2876D: RTS ;-------------------------------- ; 攻撃属性による倍率 | 防御力修正 (相手の吸収と一致: 吸収フラグON, 防御力0, ????と一致: ミスフラグON, 無効と一致: ミスフラグON, 半減と一致: 倍率1/2, 弱点と一致: 倍率2倍, 防御力0) ;-------------------------------- LC2876E: LDA $60 ; 一時変数 魔法剣フラグ BNE $87B4 LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2030,X ; 吸収属性 (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) AND $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) BEQ $8782 INC $62 ; 一時変数 吸収フラグ? STZ $54 ; 一時変数 防御力(下位) STZ $55 ; 一時変数 防御力(上位) RTS LC28782: LDA $2031,X ; ????属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) AND $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) BEQ $878C INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS LC2878C: LDA $2032,X ; 無効属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) AND $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) BEQ $8799 INC $56 ; 一時変数 命中判定用? (0であれば命中) INC $7C97 RTS LC28799: LDA $2033,X ; 半減属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) AND $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) BEQ $87A5 LSR $51 ; 一時変数 攻撃力(上位) ROR $50 ; 一時変数 攻撃力(下位) RTS LC287A5: LDA $2034,X ; 弱点属性 (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) AND $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) BEQ $87B4 ASL $50 ; 一時変数 攻撃力(下位) ROL $51 ; 一時変数 攻撃力(上位) STZ $54 ; 一時変数 防御力(下位) STZ $55 ; 一時変数 防御力(上位) LC287B4: RTS ;-------------------------------- ; 攻撃属性による各種処理 (相手の吸収と一致: 吸収フラグON, 無効と一致: ミスフラグON, 半減と一致: 汎用データ2が1/2, 弱点と一致: 汎用データ2が2倍) ;-------------------------------- LC287B5: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2030,X ; 吸収属性 (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) AND $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) BEQ $87C1 INC $62 ; 一時変数 吸収フラグ? RTS LC287C1: LDA $2032,X ; 無効属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) AND $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) BEQ $87CB INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS LC287CB: LDA $2033,X ; 半減属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) AND $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) BEQ $87D5 LSR $58 ; 一時変数 汎用データ2 RTS LC287D5: LDA $2034,X ; 弱点属性 (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) AND $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) BEQ $87DE ASL $58 ; 一時変数 汎用データ2 LC287DE: RTS ;-------------------------------- ; クリティカルによる攻撃力 | 防御力設定 (<汎用データ1>%の確率でクリティカル, 攻撃力2倍, 防御力0) ;-------------------------------- LC287DF: LDA $60 ; 一時変数 魔法剣フラグ BNE $87F8 JSR $02A2 ; 0〜99の範囲の乱数取得 CMP $57 ; 一時変数 汎用データ1 BCS $87F8 LDA #$01 ; #$01 = 1 STA $5F ; 一時変数 攻撃エフェクトフラグ(1)? REP #$20 ; A = 16bit ASL $50 ; 一時変数 攻撃力(下位) SEP #$20 ; A = 8bit TDC TAX STX $54 ; 一時変数 防御力(下位) LC287F8: RTS ;-------------------------------- ; 倍率 | 防御力修正 (相手のモンスタータイプと汎用データ1とが等しければ2倍 | 等しければ0) ;-------------------------------- LC287F9: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2065,X ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) AND $57 ; 一時変数 汎用データ1 BEQ $8810 LDA #$01 ; #$01 = 1 STA $5F ; 一時変数 攻撃エフェクトフラグ(1)? REP #$20 ; A = 16bit ASL $52 ; 一時変数 倍率(下位) SEP #$20 ; A = 8bit TDC TAX STX $54 ; 一時変数 防御力(下位) LC28810: RTS ;-------------------------------- ; ダメージポイント & 相手のHP減少量設定 (現在調査中1) ;-------------------------------- LC28811: JSR $93F8 ; ダメージポイントの算出 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999)) LDX $7B69 ; 一時変数 ダメージポイント BNE $881D STX $7B6D ; 一時変数 相手のHP減少量 RTS LC2881D: LDA $39 TAX LDA $79FD,X ; 実行する魔法・技・道具・武器のデータ 1バイト目 LDX $49 ; 一時変数 相手アドレスへのインデックス AND $2064,X BEQ $8830 REP #$20 ; A = 16bit ASL $52 ; 一時変数 倍率(下位) SEP #$20 ; A = 8bit LC28830: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2055,X ; 魔法剣 特殊効果フラグ(20: MP吸収, 40: HP吸収, 80: フレア剣効果) AND #$40 BEQ $883C JMP $8926 ; 相手のHP減少量 & 自分のHP回復量設定 (ダメージポイント) / 相手がアンデッド特性の場合: 自分のHP減少量 & 相手のHP回復量設定 (〃) LC2883C: LDA $2055,X ; 魔法剣 特殊効果フラグ(20: MP吸収, 40: HP吸収, 80: フレア剣効果) AND #$20 BEQ $8846 JMP $894D ; 相手のMP減少量 & 自分のMP回復量設定 (相手の現在MPの1/4) / 相手がアンデッド特性の場合: 自分のMP減少量 & 相手のMP回復量設定 (自分の現在MPの1/4) LC28846: LDA $62 ; 一時変数 吸収フラグ? BEQ $8851 LDX $7B69 ; 一時変数 ダメージポイント STX $7B71 ; 一時変数 相手のHP回復量 RTS LC28851: LDA $63 ; 一時変数? BEQ $886D LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $202D,X ; 物理防御力 TAX STX $54 ; 一時変数 防御力(下位) JSR $93F8 ; ダメージポイントの算出 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999)) LDX $7B69 ; 一時変数 ダメージポイント BNE $8869 STX $7B6B ; 一時変数 自分のHP減少量 RTS LC28869: STX $7B6B ; 一時変数 自分のHP減少量 RTS LC2886D: LDX $7B69 ; 一時変数 ダメージポイント STX $7B6D ; 一時変数 相手のHP減少量 RTS ;-------------------------------- ; ダメージポイント & 相手のHP減少量設定 (相手がボス属性でない場合: 汎用データ2×相手の現在HP÷16(最大値: 9999) / ある場合: 0) ;-------------------------------- LC28874: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2065,X ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) AND #$20 BEQ $8886 TDC TAX STX $7B69 ; 一時変数 ダメージポイント STX $7B6D ; 一時変数 相手のHP減少量 RTS LC28886: LDA $2006,X ; ヒットポイント(下位) STA $2A LDA $2007,X ; ヒットポイント(上位) STA $2B LDA $58 ; 一時変数 汎用データ2 TAX STX $2C JSR $00D2 ; 乗算(16bit) (($2A)×($2C) = ($2E)) REP #$20 ; A = 16bit LSR $30 ROR $2E LSR $30 ROR $2E LSR $30 ROR $2E LSR $30 ROR $2E SEP #$20 ; A = 8bit LDX $30 BNE $88B7 LDX $2E CPX #$270F ; #$270F = 9999 BCC $88BA LC288B7: LDX #$270F ; #$270F = 9999 LC288BA: STX $7B69 ; 一時変数 ダメージポイント STX $7B6D ; 一時変数 相手のHP減少量 RTS ;-------------------------------- ; ダメージポイント & 相手のHP減少量設定 (現在調査中2) ;-------------------------------- LC288C1: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2065,X ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) AND #$01 BNE $88D1 LDA $2039,X ; 装備特殊効果フラグ(01: HP1/2で捕獲, 02: 不死特性付加, 04: 剣の舞確率上昇, 08: 消費MP1/2, 10: 盗み成功率2倍, 20: 格闘効果付加, 40: エルフのマント, 80: イージスのたて) AND #$02 BEQ $88D4 LC288D1: JMP $8811 ; ダメージポイント & 相手のHP減少量設定 (現在調査中1) LC288D4: JSR $93F8 ; ダメージポイントの算出 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999)) LDX $7B69 ; 一時変数 ダメージポイント STX $7B71 ; 一時変数 相手のHP回復量 RTS ;-------------------------------- ; HP全回復, 相手がアンデッド特性で、ボス属性がなければ、相手のHPを1〜9にする ;-------------------------------- LC288DE: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2065,X ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) AND #$01 BNE $88EE LDA $2039,X ; 装備特殊効果フラグ(01: HP1/2で捕獲, 02: 不死特性付加, 04: 剣の舞確率上昇, 08: 消費MP1/2, 10: 盗み成功率2倍, 20: 格闘効果付加, 40: エルフのマント, 80: イージスのたて) AND #$02 BEQ $88F1 LC288EE: JMP $88FD ; 相手がボス属性でない場合は、相手のHPを1〜9にする LC288F1: REP #$20 ; A = 16bit LDA $2008,X ; 最大ヒットポイント(下位) STA $2006,X ; ヒットポイント(下位) TDC SEP #$20 ; A = 8bit RTS ;-------------------------------- ; 相手がボス属性でない場合は、相手のHPを1〜9にする ;-------------------------------- LC288FD: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2065,X ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) AND #$20 BEQ $8909 INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS LC28909: TDC TAX LDA #$08 ; #$08 = 8 JSR $007C ; X〜Aの範囲の乱数取得 INC TAX STX $0E REP #$20 ; A = 16bit LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $0E CMP $2006,X ; ヒットポイント(下位) BCS $8922 STA $2006,X ; ヒットポイント(下位) LC28922: TDC SEP #$20 ; A = 8bit RTS ;-------------------------------- ; 相手のHP減少量 & 自分のHP回復量設定 (ダメージポイント) / 相手がアンデッド特性の場合: 自分のHP減少量 & 相手のHP回復量設定 (〃) ;-------------------------------- LC28926: JSR $93F8 ; ダメージポイントの算出 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999)) LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2065,X ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) AND #$01 BNE $8939 LDA $2039,X ; 装備特殊効果フラグ(01: HP1/2で捕獲, 02: 不死特性付加, 04: 剣の舞確率上昇, 08: 消費MP1/2, 10: 盗み成功率2倍, 20: 格闘効果付加, 40: エルフのマント, 80: イージスのたて) AND #$02 BEQ $8943 LC28939: LDX $7B69 ; 一時変数 ダメージポイント STX $7B6B ; 一時変数 自分のHP減少量 STX $7B71 ; 一時変数 相手のHP回復量 RTS LC28943: LDX $7B69 ; 一時変数 ダメージポイント STX $7B6D ; 一時変数 相手のHP減少量 STX $7B6F ; 一時変数 自分のHP回復量 RTS ;-------------------------------- ; 相手のMP減少量 & 自分のMP回復量設定 (相手の現在MPの1/4) / 相手がアンデッド特性の場合: 自分のMP減少量 & 相手のMP回復量設定 (自分の現在MPの1/4) ;-------------------------------- LC2894D: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2065,X ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) AND #$01 BNE $895D LDA $2039,X ; 装備特殊効果フラグ(01: HP1/2で捕獲, 02: 不死特性付加, 04: 剣の舞確率上昇, 08: 消費MP1/2, 10: 盗み成功率2倍, 20: 格闘効果付加, 40: エルフのマント, 80: イージスのたて) AND #$02 BEQ $8971 LC2895D: LDX $32 ; 一時変数 自分アドレスへのインデックス REP #$20 ; A = 16bit LDA $200A,X ; マジックポイント(下位) JSR $01C0 ; 4で割る STA $7B75 ; 一時変数 相手のMP回復量 STA $7B77 ; 一時変数 自分のMP減少量 TDC SEP #$20 ; A = 8bit RTS LC28971: LDX $49 ; 一時変数 相手アドレスへのインデックス REP #$20 ; A = 16bit LDA $200A,X ; マジックポイント(下位) JSR $01C0 ; 4で割る STA $7B73 ; 一時変数 自分のMP回復量 STA $7B79 ; 一時変数 相手のMP減少量 TDC SEP #$20 ; A = 8bit RTS ;-------------------------------- ; 相手のMP減少量 & 自分のMP回復量設定 ((攻撃力 - 防御力)×倍率)(上限: 相手の現在MP) / 相手がアンデッド特性の場合: 自分のMP減少量 & 相手のMP回復量設定 ((攻撃力 - 防御力)×倍率)(上限: 自分の現在MP) ;-------------------------------- LC28985: REP #$20 ; A = 16bit SEC LDA $50 ; 一時変数 攻撃力(下位) SBC $54 ; 一時変数 防御力(下位) STA $2A LDA $52 ; 一時変数 倍率(下位) STA $2C TDC SEP #$20 ; A = 8bit JSR $00D2 ; 乗算(16bit) (($2A)×($2C) = ($2E)) LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2065,X ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) AND #$01 BNE $89A8 LDA $2039,X ; 装備特殊効果フラグ(01: HP1/2で捕獲, 02: 不死特性付加, 04: 剣の舞確率上昇, 08: 消費MP1/2, 10: 盗み成功率2倍, 20: 格闘効果付加, 40: エルフのマント, 80: イージスのたて) AND #$02 BEQ $89C2 LC289A8: REP #$20 ; A = 16bit LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2E CMP $200A,X ; マジックポイント(下位) BCC $89B8 LDA $200A,X ; マジックポイント(下位) STA $2E LC289B8: LDA $2E STA $7B75 ; 一時変数 相手のMP回復量 STA $7B77 ; 一時変数 自分のMP減少量 BRA $89DA LC289C2: REP #$20 ; A = 16bit LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2E CMP $200A,X ; マジックポイント(下位) BCC $89D2 LDA $200A,X ; マジックポイント(下位) STA $2E LC289D2: LDA $2E STA $7B73 ; 一時変数 自分のMP回復量 STA $7B79 ; 一時変数 相手のMP減少量 LC289DA: TDC SEP #$20 ; A = 8bit RTS ;-------------------------------- ; 相手のMP回復量設定 ((攻撃力 - 防御力)×倍率) ;-------------------------------- LC289DE: REP #$20 ; A = 16bit SEC LDA $50 ; 一時変数 攻撃力(下位) SBC $54 ; 一時変数 防御力(下位) STA $2A LDA $52 ; 一時変数 倍率(下位) STA $2C TDC SEP #$20 ; A = 8bit JSR $00D2 ; 乗算(16bit) (($2A)×($2C) = ($2E)) LDX $2E STX $7B75 ; 一時変数 相手のMP回復量 RTS ;-------------------------------- ; MP全回復 ;-------------------------------- LC289F7: REP #$20 ; A = 16bit LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $200C,X ; 最大マジックポイント(下位) STA $200A,X ; マジックポイント(下位) TDC SEP #$20 ; A = 8bit RTS ;-------------------------------- ; 相手のHP減少量設定 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999) (状態によって倍率が2倍に?)) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) ;-------------------------------- LC28A05: JSR $93F8 ; ダメージポイントの算出 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999)) LDX $7B69 ; 一時変数 ダメージポイント BEQ $8A47 LDX $52 ; 一時変数 倍率(下位) BNE $8A26 INC $52 ; 一時変数 倍率(下位) LDA $39 TAX LDA $79FD,X ; 実行する魔法・技・道具・武器のデータ 1バイト目 LDX $49 ; 一時変数 相手アドレスへのインデックス AND $2064,X BEQ $8A26 REP #$20 ; A = 16bit ASL $52 ; 一時変数 倍率(下位) SEP #$20 ; A = 8bit LC28A26: LDA $62 ; 一時変数 吸収フラグ? BEQ $8A31 LDX $7B69 ; 一時変数 ダメージポイント STX $7B71 ; 一時変数 相手のHP回復量 RTS LC28A31: LDA $63 ; 一時変数? BEQ $8A47 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $202D,X ; 物理防御力 TAX STX $54 ; 一時変数 防御力(下位) JSR $93F8 ; ダメージポイントの算出 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999)) LDX $7B69 ; 一時変数 ダメージポイント STX $7B6B ; 一時変数 自分のHP減少量 RTS LC28A47: LDX $7B69 ; 一時変数 ダメージポイント STX $7B6D ; 一時変数 相手のHP減少量 RTS ;-------------------------------- ; 相手のHP減少量設定 (汎用データ2×相手の最大HP÷16) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) ;-------------------------------- LC28A4E: LDA $58 ; 一時変数 汎用データ2 TAX STX $2C LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2008,X ; 最大ヒットポイント(下位) STA $2A LDA $2009,X ; 最大ヒットポイント(上位) STA $2B JSR $00D2 ; 乗算(16bit) (($2A)×($2C) = ($2E)) REP #$20 ; A = 16bit LSR $30 ROR $2E LSR $30 ROR $2E LSR $30 ROR $2E LSR $30 ROR $2E LDA $30 BNE $8A7F LDA $2E CMP #$270F ; #$270F = 9999 BCC $8A84 LC28A7F: LDA #$270F ; #$270F = 9999 STA $2E LC28A84: LDA $2E ORA $30 BNE $8A8C INC $2E LC28A8C: TDC SEP #$20 ; A = 8bit LDX $2E LDA $62 ; 一時変数 吸収フラグ? BNE $8A99 STX $7B6D ; 一時変数 相手のHP減少量 RTS LC28A99: STX $7B71 ; 一時変数 相手のHP回復量 RTS ;-------------------------------- ; 相手のHP減少量設定 (汎用データ2×自分の現在HP÷16) / 吸収フラグONの場合: 相手のHP回復量設定 (〃) ;-------------------------------- LC28A9D: LDA $58 ; 一時変数 汎用データ2 TAX STX $2C LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2006,X ; ヒットポイント(下位) STA $2A LDA $2007,X ; ヒットポイント(上位) STA $2B JSR $00D2 ; 乗算(16bit) (($2A)×($2C) = ($2E)) REP #$20 ; A = 16bit LSR $30 ROR $2E LSR $30 ROR $2E LSR $30 ROR $2E LSR $30 ROR $2E LDA $30 BNE $8ACE LDA $2E CMP #$270F ; #$270F = 9999 BCC $8AD3 LC28ACE: LDA #$270F ; #$270F = 9999 STA $2E LC28AD3: LDA $2E ORA $30 BNE $8ADB INC $2E LC28ADB: TDC SEP #$20 ; A = 8bit LDX $2E LDA $62 ; 一時変数 吸収フラグ? BNE $8AE8 STX $7B6D ; 一時変数 相手のHP減少量 RTS LC28AE8: STX $7B71 ; 一時変数 相手のHP回復量 RTS ;-------------------------------- ; 相手のMP減少量設定 (汎用データ2×相手の現在MP÷16 (最小値: 1, 最大値: 9999)) ;-------------------------------- LC28AEC: LDA $58 ; 一時変数 汎用データ2 TAX STX $2C LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $200A,X ; マジックポイント(下位) STA $2A LDA $200B,X ; マジックポイント(上位) STA $2B JSR $00D2 ; 乗算(16bit) (($2A)×($2C) = ($2E)) REP #$20 ; A = 16bit LSR $30 ROR $2E LSR $30 ROR $2E LSR $30 ROR $2E LSR $30 ROR $2E LDA $30 BNE $8B1D LDA $2E CMP #$270F ; #$270F = 9999 BCC $8B22 LC28B1D: LDA #$270F ; #$270F = 9999 STA $2E LC28B22: LDA $2E ORA $30 BNE $8B2A INC $2E LC28B2A: TDC SEP #$20 ; A = 8bit LDX $2E STX $7B79 ; 一時変数 相手のMP減少量 RTS ;-------------------------------- ; 相手のHP減少量設定 (自分の最大HP - 自分の現在HP (最大値: 9999)) ;-------------------------------- LC28B33: REP #$20 ; A = 16bit LDX $32 ; 一時変数 自分アドレスへのインデックス SEC LDA $2008,X ; 最大ヒットポイント(下位) SBC $2006,X ; ヒットポイント(下位) CMP #$270F ; #$270F = 9999 BCC $8B46 LDA #$270F ; #$270F = 9999 LC28B46: STA $7B6D ; 一時変数 相手のHP減少量 TDC SEP #$20 ; A = 8bit RTS ;-------------------------------- ; HPが最大HPの半分回復, MPが最大MPの半分回復 ;-------------------------------- LC28B4D: REP #$20 ; A = 16bit LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2008,X ; 最大ヒットポイント(下位) LSR CLC ADC $2006,X ; ヒットポイント(下位) BCS $8B60 CMP $2008,X ; 最大ヒットポイント(下位) BCC $8B63 LC28B60: LDA $2008,X ; 最大ヒットポイント(下位) LC28B63: STA $2006,X ; ヒットポイント(下位) LDA $200C,X ; 最大マジックポイント(下位) LSR CLC ADC $200A,X ; マジックポイント(下位) CMP $200C,X ; 最大マジックポイント(下位) BCC $8B76 LDA $200C,X ; 最大マジックポイント(下位) LC28B76: STA $200A,X ; マジックポイント(下位) TDC SEP #$20 ; A = 8bit RTS ;-------------------------------- ; 効果持続時間を設定する (汎用データ2のbit7がセットされている場合: 汎用データ2×2 + 自分のレベル÷4, セットされていない場合: (汎用データ2×2 + 自分のレベル÷4) - 相手のレベル÷4, セットされていない & 相手がボス属性である: 30固定) ;-------------------------------- LC28B7D: STZ $0F LDA $58 ; 一時変数 汎用データ2 AND #$7F ASL ROL $0F STA $0E LDA $7BE5 ; 現在行動中のキャラクタのレベル JSR $01C0 ; 4で割る CLC ADC $0E STA $0E LDA $0F ADC #$00 ; #$00 = 0 BEQ $8B9D LDA #$FF ; #$FF = 255 STA $0E LC28B9D: LDA $58 ; 一時変数 汎用データ2 BMI $8BC9 LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2065,X ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) AND #$20 BEQ $8BB0 LDA #$1E ; #$1E = 30 STA $0E BRA $8BC9 LC28BB0: CLC LDA $2002,X ; レベル ADC $2078,X ; レベル修正値? JSR $01C0 ; 4で割る STA $0F SEC LDA $0E SBC $0F BEQ $8BC5 BCS $8BC7 LC28BC5: LDA #$01 ; #$01 = 1 LC28BC7: STA $0E LC28BC9: LDA $0E STA $3ED8 ; サイクル設定値 RTS ;-------------------------------- ; ;-------------------------------- LC28BCF: LDA $59 ; 一時変数 汎用データ3 PHA LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2053,X ; 魔法剣 付加状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) STA $59 ; 一時変数 汎用データ3 LDA #$01 ; #$01 = 1 STA $3ED7 ; 2種類のタイマーサイクルのどちらを採用するか (0: 味方用, 1: 敵用) JSR $8CAC ; 相手の状態変化1に汎用データ3の状態を追加? (現在調査中) LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2054,X ; 魔法剣 付加状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) STA $59 ; 一時変数 汎用データ3 LDA #$01 ; #$01 = 1 STA $3ED7 ; 2種類のタイマーサイクルのどちらを採用するか (0: 味方用, 1: 敵用) JSR $8D2E ; STZ $56 ; 一時変数 命中判定用? (0であれば命中) PLA STA $59 ; 一時変数 汎用データ3 STZ $3ED7 ; 2種類のタイマーサイクルのどちらを採用するか (0: 味方用, 1: 敵用) RTS ;-------------------------------- ; ;-------------------------------- LC28BF9: LDA $60 ; 一時変数 魔法剣フラグ BNE $8C2B LDA $58 ; 一時変数 汎用データ2 AND #$7F STA $4E ; 一時変数 命中率 JSR $02A2 ; 0〜99の範囲の乱数取得 CMP $4E ; 一時変数 命中率 BCS $8C2B LDA $58 ; 一時変数 汎用データ2 BPL $8C21 LDA #$01 ; #$01 = 1 STA $3ED7 ; 2種類のタイマーサイクルのどちらを採用するか (0: 味方用, 1: 敵用) JSR $8CAC ; 相手の状態変化1に汎用データ3の状態を追加? (現在調査中) LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) BPL $8C1F INC $61 ; 一時変数 攻撃エフェクトフラグ(2)? LC28C1F: BRA $8C29 LC28C21: LDA #$01 ; #$01 = 1 STA $3ED7 ; 2種類のタイマーサイクルのどちらを採用するか (0: 味方用, 1: 敵用) JSR $8D2E ; LC28C29: STZ $56 ; 一時変数 命中判定用? (0であれば命中) LC28C2B: STZ $3ED7 ; 2種類のタイマーサイクルのどちらを採用するか (0: 味方用, 1: 敵用) RTS ;-------------------------------- ; とくいわざの特性に従って状態変化 ;-------------------------------- LC28C2F: STZ $59 ; 一時変数 汎用データ3 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $206E,X ; とくいわざの特性 (01: 攻撃力3/2, 02: スリップ, 04: 混乱, 08: 麻痺, 10: 暗闇, 20: 猛毒, 40: 徐々に老化, 80: 回避不能/防御力無視) AND #$20 BEQ $8C3E LDA #$04 ; #$04 = 4 STA $59 ; 一時変数 汎用データ3 LC28C3E: LDA $206E,X ; とくいわざの特性 (01: 攻撃力3/2, 02: スリップ, 04: 混乱, 08: 麻痺, 10: 暗闇, 20: 猛毒, 40: 徐々に老化, 80: 回避不能/防御力無視) AND #$10 BEQ $8C4B LDA $59 ; 一時変数 汎用データ3 ORA #$01 STA $59 ; 一時変数 汎用データ3 LC28C4B: LDA #$01 ; #$01 = 1 STA $3ED7 ; 2種類のタイマーサイクルのどちらを採用するか (0: 味方用, 1: 敵用) JSR $8CAC ; 相手の状態変化1に汎用データ3の状態を追加? (現在調査中) STZ $59 ; 一時変数 汎用データ3 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $206E,X ; とくいわざの特性 (01: 攻撃力3/2, 02: スリップ, 04: 混乱, 08: 麻痺, 10: 暗闇, 20: 猛毒, 40: 徐々に老化, 80: 回避不能/防御力無視) AND #$40 BEQ $8C62 LDA #$80 ; #$80 = 128 STA $59 ; 一時変数 汎用データ3 LC28C62: LDA $206E,X ; とくいわざの特性 (01: 攻撃力3/2, 02: スリップ, 04: 混乱, 08: 麻痺, 10: 暗闇, 20: 猛毒, 40: 徐々に老化, 80: 回避不能/防御力無視) AND #$08 BEQ $8C6F LDA $59 ; 一時変数 汎用データ3 ORA #$20 STA $59 ; 一時変数 汎用データ3 LC28C6F: LDA $206E,X ; とくいわざの特性 (01: 攻撃力3/2, 02: スリップ, 04: 混乱, 08: 麻痺, 10: 暗闇, 20: 猛毒, 40: 徐々に老化, 80: 回避不能/防御力無視) AND #$04 BEQ $8C87 PHX LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) PLX AND #$20 BNE $8C87 LDA $59 ; 一時変数 汎用データ3 ORA #$10 STA $59 ; 一時変数 汎用データ3 LC28C87: LDA #$01 ; #$01 = 1 STA $3ED7 ; 2種類のタイマーサイクルのどちらを採用するか (0: 味方用, 1: 敵用) JSR $8D2E ; STZ $59 ; 一時変数 汎用データ3 LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $206E,X ; とくいわざの特性 (01: 攻撃力3/2, 02: スリップ, 04: 混乱, 08: 麻痺, 10: 暗闇, 20: 猛毒, 40: 徐々に老化, 80: 回避不能/防御力無視) AND #$02 BEQ $8CA6 LDA #$08 ; #$08 = 8 STA $59 ; 一時変数 汎用データ3 LDA #$01 ; #$01 = 1 STA $3ED7 ; 2種類のタイマーサイクルのどちらを採用するか (0: 味方用, 1: 敵用) JSR $8E05 ; 相手の状態変化4に汎用データ3の状態を追加(追加しようとする状態が"10: 死の宣告"の場合、相手がすでに死の宣告状態であればミス) LC28CA6: STZ $3ED7 ; 2種類のタイマーサイクルのどちらを採用するか (0: 味方用, 1: 敵用) STZ $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 相手の状態変化1に汎用データ3の状態を追加? (現在調査中) ;-------------------------------- LC28CAC: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2035,X ; 状態変化1(永続的状態)耐性 (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND $59 ; 一時変数 汎用データ3 BNE $8D2B LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCS $8D01 LDA $59 ; 一時変数 汎用データ3 AND #$02 BEQ $8D01 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$42 BNE $8D2B LDX $32 ; 一時変数 自分アドレスへのインデックス PHX LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JSR $2482 ; LDX $32 ; 一時変数 自分アドレスへのインデックス LDA #$80 ; #$80 = 128 STA $2056,X ; (フラグ系?) STZ $2057,X ; 実行するコマンドの番号 LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) TAX LDA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) CMP #$7F ; #$7F = 127 BCC $8CE9 LDA #$7F ; #$7F = 127 LC28CE9: STA $7C04,X TDC STA $3CFB,Y ; タイマー制御フラグ?(行動可能時間待ち(ATBゲージ)) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) INC STA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) LDX $49 ; 一時変数 相手アドレスへのインデックス STZ $2006,X ; ヒットポイント(下位) STZ $2007,X ; ヒットポイント(上位) PLX STX $32 ; 一時変数 自分アドレスへのインデックス BRA $8D17 LC28D01: LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCC $8D17 LDA $59 ; 一時変数 汎用データ3 AND #$40 BEQ $8D17 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA #$80 STA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) BRA $8D28 LC28D17: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$02 BNE $8D2B LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $59 ; 一時変数 汎用データ3 STA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) LC28D28: JMP $92A5 ; 汎用データ3を状態変化1とみなし、タイマーを設定する LC28D2B: INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; ;-------------------------------- LC28D2E: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2036,X ; 状態変化2(一時的状態)耐性 (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND $59 ; 一時変数 汎用データ3 BEQ $8D3A JMP $8DC8 LC28D3A: LDA $59 ; 一時変数 汎用データ3 AND #$10 BNE $8D59 LDA $59 ; 一時変数 汎用データ3 AND #$08 BEQ $8D9E LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$18 BNE $8DC8 LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$20 BNE $8DC8 BRA $8D6A LC28D59: LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$18 BNE $8DC8 LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$20 BNE $8DC8 LC28D6A: LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCS $8D9E LDX $32 ; 一時変数 自分アドレスへのインデックス PHX LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JSR $2482 ; LDX $32 ; 一時変数 自分アドレスへのインデックス LDA #$80 ; #$80 = 128 STA $2056,X ; (フラグ系?) STZ $2057,X ; 実行するコマンドの番号 LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) TAX LDA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) CMP #$7F ; #$7F = 127 BCC $8D8E LDA #$7F ; #$7F = 127 LC28D8E: STA $7C04,X TDC STA $3CFB,Y ; タイマー制御フラグ?(行動可能時間待ち(ATBゲージ)) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) INC STA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) PLX STX $32 ; 一時変数 自分アドレスへのインデックス BRA $8DBB LC28D9E: LDA $59 ; 一時変数 汎用データ3 AND #$20 BEQ $8DBB LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$20 BNE $8DC8 LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 TDC STA $3CFB,Y ; タイマー制御フラグ?(行動可能時間待ち(ATBゲージ)) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) INC STA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) LC28DBB: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $59 ; 一時変数 汎用データ3 STA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) JMP $9328 ; 汎用データ3を状態変化2とみなし、効果解除タイマーを設定する LC28DC8: INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; ;-------------------------------- LC28DCB: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2037,X ; 状態変化3(補助魔法)耐性 (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND $59 ; 一時変数 汎用データ3 BNE $8E02 LDA $59 ; 一時変数 汎用データ3 AND #$10 BEQ $8DF5 LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$10 BNE $8E02 LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 LDA $3CFB,Y ; タイマー制御フラグ?(行動可能時間待ち(ATBゲージ)) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) AND #$40 BNE $8DF5 LDA #$01 ; #$01 = 1 STA $3CFB,Y ; タイマー制御フラグ?(行動可能時間待ち(ATBゲージ)) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) LC28DF5: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) ORA $59 ; 一時変数 汎用データ3 STA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) JMP $934D ; 汎用データ3を状態変化3とみなし、効果解除タイマーを設定する LC28E02: INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 相手の状態変化4に汎用データ3の状態を追加(追加しようとする状態が"10: 死の宣告"の場合、相手がすでに死の宣告状態であればミス) ;-------------------------------- LC28E05: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $59 ; 一時変数 汎用データ3 AND #$10 BEQ $8E17 LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) ORA $2073,X ; 一時的状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND $59 ; 一時変数 汎用データ3 BNE $8E22 LC28E17: LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) ORA $59 ; 一時変数 汎用データ3 STA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) JMP $9372 ; 汎用データ3を状態変化4とみなし、効果解除タイマーを設定する LC28E22: INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 相手の状態変化1耐性と汎用データ3の状態とが一致しなければ、相手の状態変化1に汎用データ3の状態を追加 ;-------------------------------- LC28E25: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2035,X ; 状態変化1(永続的状態)耐性 (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND $59 ; 一時変数 汎用データ3 BNE $8E37 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) EOR $59 ; 一時変数 汎用データ3 STA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) RTS LC28E37: INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 相手がボス属性でない場合は、相手のフラグ($201E)に$08を追加 ;-------------------------------- LC28E3A: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2065,X ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) AND #$20 BEQ $8E46 INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS LC28E46: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) ORA #$08 STA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) RTS ;-------------------------------- ; ;-------------------------------- LC28E51: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2037,X ; 状態変化3(補助魔法)耐性 (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND $59 ; 一時変数 汎用データ3 BNE $8EB3 LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) STA $0E AND $58 ; 一時変数 汎用データ2 ORA $59 ; 一時変数 汎用データ3 STA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$04 BEQ $8E90 LDA $0E AND #$04 BNE $8E90 TDC TAX LC28E7A: LDA $3D75,Y ; タイマー現在値(ストップ効果解除) BEQ $8E87 ASL BCC $8E84 LDA #$FF ; #$FF = 255 LC28E84: STA $3D75,Y ; タイマー現在値(ストップ効果解除) LC28E87: INY INX CPX #$000B ; #$000B = 11 BNE $8E7A BRA $8EB2 LC28E90: LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$08 BEQ $8EB2 LDA $0E AND #$08 BNE $8EB2 TDC TAX LC28E9F: LDA $3D75,Y ; タイマー現在値(ストップ効果解除) BEQ $8EAB LSR BNE $8EA8 INC LC28EA8: STA $3D75,Y ; タイマー現在値(ストップ効果解除) LC28EAB: INY INX CPX #$000B ; #$000B = 11 BNE $8E9F LC28EB2: RTS LC28EB3: INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS LC28EB6: LDA $59 ; 一時変数 汎用データ3 EOR #$FF AND #$02 BEQ $8ED4 LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$02 BEQ $8ED4 LC28EC7: LDX $32 ; 一時変数 自分アドレスへのインデックス PHX LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JSR $2482 ; PLX STX $32 ; 一時変数 自分アドレスへのインデックス BRA $8EE5 LC28ED4: LDA $59 ; 一時変数 汎用データ3 EOR #$FF AND #$40 BEQ $8EE5 LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$40 BNE $8EC7 LC28EE5: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) STA $0E AND $59 ; 一時変数 汎用データ3 STA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) LDA $59 ; 一時変数 汎用データ3 STA $0F EOR #$FF STA $59 ; 一時変数 汎用データ3 JSR $92B4 ; 汎用データ3を状態変化1とみなし、タイマーを停止する LDA $0E AND #$40 STA $0E LDA $0F EOR #$FF AND $0E BEQ $8F10 LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) TAX INC $3EC2,X LC28F10: RTS ;-------------------------------- ; ;-------------------------------- LC28F11: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $59 ; 一時変数 汎用データ3 EOR #$FF AND #$10 BEQ $8F22 LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$10 BNE $8F4F LC28F22: LDA $59 ; 一時変数 汎用データ3 EOR #$FF AND #$08 BEQ $8F31 LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$18 BNE $8F4F LC28F31: LDA $59 ; 一時変数 汎用データ3 EOR #$FF AND #$20 BEQ $8F40 LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$20 BNE $8F4F LC28F40: LDA $59 ; 一時変数 汎用データ3 EOR #$FF AND #$40 BEQ $8F5A LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$40 BEQ $8F5A LC28F4F: LDX $32 ; 一時変数 自分アドレスへのインデックス PHX LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JSR $2482 ; PLX STX $32 ; 一時変数 自分アドレスへのインデックス LC28F5A: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND $59 ; 一時変数 汎用データ3 STA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) LDA $59 ; 一時変数 汎用データ3 EOR #$FF STA $59 ; 一時変数 汎用データ3 JSR $92C3 ; 汎用データ3を状態変化2とみなし、効果解除タイマーを停止する RTS ;-------------------------------- ; 相手の状態変化3から汎用データ3(解除したい状態以外のビットがセット)で状態を解除, 効果解除タイマー停止 ;-------------------------------- LC28F6E: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND $59 ; 一時変数 汎用データ3 STA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) LDA $59 ; 一時変数 汎用データ3 EOR #$FF STA $59 ; 一時変数 汎用データ3 JSR $92EE ; 汎用データ3を状態変化3とみなし、効果解除タイマーを停止する RTS ;-------------------------------- ; 相手を戦闘不能にする (相手がボス属性であればミス, 命中判定(魔法攻撃系1)に失敗した場合はミス, 相手がゾンビ状態であればミス) ;-------------------------------- LC28F82: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2065,X ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) AND #$20 BEQ $8F8E INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS LC28F8E: JSR $7E81 ; 命中判定 (魔法攻撃系1) (汎用データ1のbit7がONならば命中, 攻撃対象が味方同士・敵同士の場合は命中, 相手の$2064によって命中, 命中率設定: (汎用データ1 + 自分のレベル - 相手のレベル) | 回避率設定: 相手の魔法回避率, イージスのたて回避判定, 命中率修正: 相手がシェルなら1/2(下限: 1) | 回避率修正: 相手が蛙なら0, 乱数で命中判定) LDA $56 ; 一時変数 命中判定用? (0であれば命中) BNE $8FA9 LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$02 BNE $8FA7 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA #$80 STA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) RTS LC28FA7: INC $56 ; 一時変数 命中判定用? (0であれば命中) LC28FA9: RTS ;-------------------------------- ; 相手の戦闘不能状態を回復する (相手がゾンビ状態であればミス), 相手のHP設定 (汎用データ3×相手の最大HP÷16 (最大値: 9999)) ;-------------------------------- LC28FAA: LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCC $8FBF SEC SBC #$04 ; #$04 = 4 TAX LDA $7C0A ; モンスターを倒したかどうかのフラグ (ON: 倒した, OFF: 倒していない) JSR $01DB ; Aレジスタの値の(7 - Xレジスタ)ビットがセットされていない場合は0クリアする BEQ $8FBF LC28FBC: INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS LC28FBF: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$02 BNE $8FBC LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$7F STA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) LDA $59 ; 一時変数 汎用データ3 TAX STX $2C LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2008,X ; 最大ヒットポイント(下位) STA $2A LDA $2009,X ; 最大ヒットポイント(上位) STA $2B JSR $00D2 ; 乗算(16bit) (($2A)×($2C) = ($2E)) REP #$20 ; A = 16bit LSR $30 ROR $2E LSR $30 ROR $2E LSR $30 ROR $2E LSR $30 ROR $2E LDA $30 BNE $9001 LDA $2E CMP #$270F ; #$270F = 9999 BCC $9006 LC29001: LDA #$270F ; #$270F = 9999 STA $2E LC29006: LDA $2E BNE $900C INC $2E LC2900C: LDX $49 ; 一時変数 相手アドレスへのインデックス CLC LDA $2006,X ; ヒットポイント(下位) ADC $2E BCS $901B CMP $2008,X ; 最大ヒットポイント(下位) BCC $901E LC2901B: LDA $2008,X ; 最大ヒットポイント(下位) LC2901E: STA $2006,X ; ヒットポイント(下位) TDC SEP #$20 ; A = 8bit LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) TAX INC $3EC2,X RTS ;-------------------------------- ; 相手の状態変化1に汎用データ3の状態を追加, タイマー設定 ;-------------------------------- LC2902B: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $59 ; 一時変数 汎用データ3 STA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) JSR $92A5 ; 汎用データ3を状態変化1とみなし、タイマーを設定する RTS ;-------------------------------- ; ;-------------------------------- LC29039: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $59 ; 一時変数 汎用データ3 AND #$10 BNE $905A LDA $59 ; 一時変数 汎用データ3 AND #$08 BEQ $909F LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$18 BNE $90C9 LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$20 BNE $90C9 BRA $906B LC2905A: LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$18 BNE $90C9 LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$20 BNE $90C9 LC2906B: LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCS $909F LDX $32 ; 一時変数 自分アドレスへのインデックス PHX LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JSR $2482 ; LDX $32 ; 一時変数 自分アドレスへのインデックス LDA #$80 ; #$80 = 128 STA $2056,X ; (フラグ系?) STZ $2057,X ; 実行するコマンドの番号 LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) TAX LDA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) CMP #$7F ; #$7F = 127 BCC $908F LDA #$7F ; #$7F = 127 LC2908F: STA $7C04,X TDC STA $3CFB,Y ; タイマー制御フラグ?(行動可能時間待ち(ATBゲージ)) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) INC STA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) PLX STX $32 ; 一時変数 自分アドレスへのインデックス BRA $90BC LC2909F: LDA $59 ; 一時変数 汎用データ3 AND #$20 BEQ $90BC LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$20 BNE $90C9 LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JSR $0207 ; Yレジスタと($36) = Aレジスタ×11 TDC STA $3CFB,Y ; タイマー制御フラグ?(行動可能時間待ち(ATBゲージ)) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) INC STA $3D7F,Y ; タイマー現在値(行動可能時間待ち(ATBゲージ)) LC290BC: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $59 ; 一時変数 汎用データ3 STA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) JMP $9328 ; 汎用データ3を状態変化2とみなし、効果解除タイマーを設定する LC290C9: INC $0056 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 相手の状態変化3に汎用データ3の状態を追加, 効果解除タイマー設定 ;-------------------------------- LC290CD: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) ORA $59 ; 一時変数 汎用データ3 STA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) JSR $934D ; 汎用データ3を状態変化3とみなし、効果解除タイマーを設定する RTS ;-------------------------------- ; 自分の状態変化1に汎用データ3の状態を追加, 効果解除タイマー設定 ;-------------------------------- LC290DB: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $59 ; 一時変数 汎用データ3 STA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) JSR $92A5 ; 汎用データ3を状態変化1とみなし、タイマーを設定する RTS ;-------------------------------- ; 相手の魔法剣効果を初期化する ;-------------------------------- LC290E9: LDX $49 ; 一時変数 相手アドレスへのインデックス STZ $2050,X ; 魔法剣 付加属性(2倍) (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) STZ $2051,X ; 魔法剣 付加属性(3倍) (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) STZ $2052,X ; 魔法剣 付加属性(4倍/即死) (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) STZ $2053,X ; 魔法剣 付加状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) STZ $2054,X ; 魔法剣 付加状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) STZ $2055,X ; 魔法剣 特殊効果フラグ(20: MP吸収, 40: HP吸収, 80: フレア剣効果) STZ $207A,X ; 攻撃エフェクトの種類 RTS ;-------------------------------- ; 相手の隊列を入れ替える ;-------------------------------- LC29101: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) AND #$80 EOR #$80 STA $0E LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) AND #$7F ORA $0E STA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) RTS ;-------------------------------- ; 相手を前列に移動させる ;-------------------------------- LC29117: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) AND #$7F STA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) RTS ;-------------------------------- ; 自分を後列に移動させる ;-------------------------------- LC29122: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) ORA #$80 STA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) RTS ;-------------------------------- ; 相手の物理防御力・魔法防御力を1/2にする ;-------------------------------- LC2912D: LDX $49 ; 一時変数 相手アドレスへのインデックス LSR $202D,X ; 物理防御力 LSR $202F,X ; 魔法防御力 RTS ;-------------------------------- ; 相手のレベルを1/2にする (下限値: 1) ;-------------------------------- LC29136: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2002,X ; レベル LSR BNE $913F INC LC2913F: STA $2002,X ; レベル RTS ;-------------------------------- ; 相手のレベルを汎用データ3だけ増加(上限値: 255) ;-------------------------------- LC29143: LDX $49 ; 一時変数 相手アドレスへのインデックス CLC LDA $2002,X ; レベル ADC $59 ; 一時変数 汎用データ3 BCC $914F LDA #$FF ; #$FF = 255 LC2914F: STA $2002,X ; レベル RTS ;-------------------------------- ; 相手のレベルを汎用データ3だけ減少(下限値: 1) ;-------------------------------- LC29153: LDX $49 ; 一時変数 相手アドレスへのインデックス SEC LDA $2002,X ; レベル SBC $59 ; 一時変数 汎用データ3 BCS $915F LDA #$01 ; #$01 = 1 LC2915F: STA $2002,X ; レベル RTS ;-------------------------------- ; 相手の最大ヒットポイントを2倍にする(上限値: 9999), 相手がモンスターの場合は何もしない ;-------------------------------- LC29163: LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCC $916C INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS LC2916C: ASL TAY REP #$20 ; A = 16bit LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2008,X ; 最大ヒットポイント(下位) STA $7C11,Y ; 巨人の薬使用前の最大ヒットポイント?(1人目) ASL CMP #$270F ; #$270F = 9999 BCC $9181 LDA #$270F ; #$270F = 9999 LC29181: STA $2008,X ; 最大ヒットポイント(下位) LDA $2006,X ; ヒットポイント(下位) ASL CMP #$270F ; #$270F = 9999 BCC $9190 LDA #$270F ; #$270F = 9999 LC29190: STA $2006,X ; ヒットポイント(下位) TDC SEP #$20 ; A = 8bit RTS ;-------------------------------- ; 相手の$2044と$2045とを汎用データ3だけ増加(上限値: 255) ;-------------------------------- LC29197: LDX $49 ; 一時変数 相手アドレスへのインデックス CLC LDA $2044,X ; 攻撃力 (「はなつ」時にモンスターの攻撃力で上書きされる) ADC $59 ; 一時変数 汎用データ3 BCC $91A3 LDA #$FF ; #$FF = 255 LC291A3: STA $2044,X ; 攻撃力 (「はなつ」時にモンスターの攻撃力で上書きされる) CLC LDA $2045,X ADC $59 ; 一時変数 汎用データ3 BCC $91B0 LDA #$FF ; #$FF = 255 LC291B0: STA $2045,X RTS ;-------------------------------- ; 相手の物理防御力・魔法防御力を汎用データ3だけ増加(上限値: 255) ;-------------------------------- LC291B4: LDX $49 ; 一時変数 相手アドレスへのインデックス CLC LDA $202D,X ; 物理防御力 ADC $59 ; 一時変数 汎用データ3 BCC $91C0 LDA #$FF ; #$FF = 255 LC291C0: STA $202D,X ; 物理防御力 CLC LDA $202F,X ; 魔法防御力 ADC $59 ; 一時変数 汎用データ3 BCC $91CD LDA #$FF ; #$FF = 255 LC291CD: STA $202F,X ; 魔法防御力 RTS ;-------------------------------- ; 相手の状態変化4に汎用データ3の状態を反転 ;-------------------------------- LC291D1: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) EOR $59 ; 一時変数 汎用データ3 STA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) RTS ;-------------------------------- ; 自分の$2079に汎用データ3を付加 ;-------------------------------- LC291DC: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2079,X ORA $59 ; 一時変数 汎用データ3 STA $2079,X RTS ;-------------------------------- ; 相手のモンスタータイプに汎用データ3のタイプを付加 ;-------------------------------- LC291E7: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2065,X ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) ORA $59 ; 一時変数 汎用データ3 STA $2065,X ; モンスタータイプ(01: アンデッド, 02: 不明1, 04: 魔獣, 08: エイビス, 10: ドラゴン, 20: ボス, 40: 砂漠, 80: 人間) RTS ;-------------------------------- ; 相手の状態変化1(永続的状態)耐性に汎用データ3を付加 ;-------------------------------- LC291F2: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2035,X ; 状態変化1(永続的状態)耐性 (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $59 ; 一時変数 汎用データ3 STA $2035,X ; 状態変化1(永続的状態)耐性 (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) RTS ;-------------------------------- ; 相手のパワーアップ属性に汎用データ3の属性を付加 ;-------------------------------- LC291FD: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2022,X ; パワーアップ属性? ORA $59 ; 一時変数 汎用データ3 STA $2022,X ; パワーアップ属性? RTS ;-------------------------------- ; 「ぬすむ」処理 ;-------------------------------- LC29208: LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCS $9211 JMP $92A2 LC29211: TDC TAX LDA #$FF ; #$FF = 255 JSR $007C ; X〜Aの範囲の乱数取得 STA $0E SEC LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) SBC #$04 ; #$04 = 4 ASL TAX REP #$20 ; A = 16bit LDA $4020,X ; モンスター番号 JSR $01B7 ; 4倍する TAX TDC SEP #$20 ; A = 8bit LDA $0E CMP #$0A ; #$0A = 10 BCC $9234 INX LC29234: LDA $D05000,X ; FILEPOS_MONITEM BEQ $92A2 STA $0E LDY #$00FF ; #$00FF = 255 LC2923F: LDA $2734,Y CMP $0E BEQ $9258 DEY BPL $923F TDC TAY LDA $2734,Y BEQ $9258 INY CPY #$00 ; #$00 = 0 ORA ($D0,X) SBC $80,X LSR LC29258: LDA $0E STA $2734,Y LDA $2620,Y ; 汎用領域?[0] PHA PHY LDA $0E JSR $03FA ; JSR $0369 ; PLY STA $2C34,Y PLA STA $2620,Y ; 汎用領域?[0] CLC LDA $2834,Y INC CMP #$64 ; #$64 = 100 BCC $927D LDA #$63 ; #$63 = 99 LC2927D: STA $2834,Y LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $2734,Y STA $206B,X ; アイテムを盗んだかどうかのフラグ(0: まだ盗んでいない) PHY JSR $9965 ; Yレジスタ = ($7B2C)×12, Xレジスタ = ($7B2C)×24 TYX PLY LDA $4746 CMP #$0B ; #$0B = 11 BEQ $9299 CMP #$33 ; #$33 = 51 BNE $929B LC29299: TDC TAX LC2929B: LDA $2734,Y STA $3CBF,X RTS LC292A2: INC $56 ; 一時変数 命中判定用? (0であれば命中) RTS ;-------------------------------- ; 汎用データ3を状態変化1とみなし、タイマーを設定する ;-------------------------------- LC292A5: LDA $59 ; 一時変数 汎用データ3 AND #$04 BEQ $92B3 LDA #$01 ; #$01 = 1 TAX LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JSR $24FD ; 各種タイマー発動 (Aレジスタ: タイマー適用キャラクタ, Xレジスタ: タイマーの種類) LC292B3: RTS ;-------------------------------- ; 汎用データ3を状態変化1とみなし、タイマーを停止する ;-------------------------------- LC292B4: LDA $59 ; 一時変数 汎用データ3 AND #$04 BEQ $92C2 LDA #$01 ; #$01 = 1 TAX LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JSR $24F0 ; 各種タイマー停止? (Aレジスタ: タイマー適用キャラクタ, Xレジスタ: タイマーの種類) LC292C2: RTS ;-------------------------------- ; 汎用データ3を状態変化2とみなし、効果解除タイマーを停止する ;-------------------------------- LC292C3: LDA $59 ; 一時変数 汎用データ3 AND #$80 BEQ $92D1 LDA #$06 ; #$06 = 6 TAX LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JSR $24F0 ; 各種タイマー停止? (Aレジスタ: タイマー適用キャラクタ, Xレジスタ: タイマーの種類) LC292D1: LDA $59 ; 一時変数 汎用データ3 AND #$20 BEQ $92DF LDA #$09 ; #$09 = 9 TAX LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JSR $24F0 ; 各種タイマー停止? (Aレジスタ: タイマー適用キャラクタ, Xレジスタ: タイマーの種類) LC292DF: LDA $59 ; 一時変数 汎用データ3 AND #$04 BEQ $92ED LDA #$04 ; #$04 = 4 TAX LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JSR $24F0 ; 各種タイマー停止? (Aレジスタ: タイマー適用キャラクタ, Xレジスタ: タイマーの種類) LC292ED: RTS ;-------------------------------- ; 汎用データ3を状態変化3とみなし、効果解除タイマーを停止する ;-------------------------------- LC292EE: LDA $59 ; 一時変数 汎用データ3 AND #$80 BEQ $92FC LDA #$02 ; #$02 = 2 TAX LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JSR $24F0 ; 各種タイマー停止? (Aレジスタ: タイマー適用キャラクタ, Xレジスタ: タイマーの種類) LC292FC: LDA $59 ; 一時変数 汎用データ3 AND #$10 BEQ $930A LDA #$00 ; #$00 = 0 TAX LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JSR $24F0 ; 各種タイマー停止? (Aレジスタ: タイマー適用キャラクタ, Xレジスタ: タイマーの種類) LC2930A: LDA $59 ; 一時変数 汎用データ3 AND #$01 BEQ $9318 LDA #$07 ; #$07 = 7 TAX LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JSR $24F0 ; 各種タイマー停止? (Aレジスタ: タイマー適用キャラクタ, Xレジスタ: タイマーの種類) LC29318: RTS ;-------------------------------- ; 汎用データ3を状態変化4とみなし、効果解除タイマーを停止する ;-------------------------------- LC29319: LDA $59 ; 一時変数 汎用データ3 AND #$08 BEQ $9327 LDA #$05 ; #$05 = 5 TAX LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JSR $24F0 ; 各種タイマー停止? (Aレジスタ: タイマー適用キャラクタ, Xレジスタ: タイマーの種類) LC29327: RTS ;-------------------------------- ; 汎用データ3を状態変化2とみなし、効果解除タイマーを設定する ;-------------------------------- LC29328: LDA $59 ; 一時変数 汎用データ3 AND #$80 BEQ $9333 LDA #$06 ; #$06 = 6 TAX BRA $9347 LC29333: LDA $59 ; 一時変数 汎用データ3 AND #$20 BEQ $933E LDA #$09 ; #$09 = 9 TAX BRA $9347 LC2933E: LDA $59 ; 一時変数 汎用データ3 AND #$04 BEQ $934C LDA #$04 ; #$04 = 4 TAX LC29347: LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JSR $24FD ; 各種タイマー発動 (Aレジスタ: タイマー適用キャラクタ, Xレジスタ: タイマーの種類) LC2934C: RTS ;-------------------------------- ; 汎用データ3を状態変化3とみなし、効果解除タイマーを設定する ;-------------------------------- LC2934D: LDA $59 ; 一時変数 汎用データ3 AND #$80 BEQ $9358 LDA #$02 ; #$02 = 2 TAX BRA $936C LC29358: LDA $59 ; 一時変数 汎用データ3 AND #$10 BEQ $9363 LDA #$00 ; #$00 = 0 TAX BRA $936C LC29363: LDA $59 ; 一時変数 汎用データ3 AND #$01 BEQ $9371 LDA #$07 ; #$07 = 7 TAX LC2936C: LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JSR $24FD ; 各種タイマー発動 (Aレジスタ: タイマー適用キャラクタ, Xレジスタ: タイマーの種類) LC29371: RTS ;-------------------------------- ; 汎用データ3を状態変化4とみなし、効果解除タイマーを設定する ;-------------------------------- LC29372: LDA $59 ; 一時変数 汎用データ3 AND #$08 BEQ $9380 LDA #$05 ; #$05 = 5 TAX LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JMP $24FD ; 各種タイマー発動 (Aレジスタ: タイマー適用キャラクタ, Xレジスタ: タイマーの種類) LC29380: LDA $59 ; 一時変数 汎用データ3 AND #$10 BEQ $938E LDA #$03 ; #$03 = 3 TAX LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JSR $24FD ; 各種タイマー発動 (Aレジスタ: タイマー適用キャラクタ, Xレジスタ: タイマーの種類) LC2938E: RTS ;-------------------------------- ; 分身を1つ減らす ;-------------------------------- LC2938F: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) PHA AND #$03 SEC SBC #$01 ; #$01 = 1 STA $0E PLA AND #$FC ORA $0E STA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) RTS ;-------------------------------- ; ;-------------------------------- LC293A5: SEC LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) SBC #$04 ; #$04 = 4 TAX STX $0E LDA $3EF3,X ; MONPARTY[4]: 1番目のモンスターの番号(下位8ビット) LDX $32 ; 一時変数 自分アドレスへのインデックス STA $2015,X ; 捕らえているモンスター LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) STA $24 LDA #$14 ; #$14 = 20 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) TDC TAY LDX $26 LC293C4: LDA $375C,X CMP #$1D ; #$1D = 29 BEQ $93D4 INX INY CPY #$0004 ; #$0004 = 4 BNE $93C4 BEQ $93E2 LC293D4: LDA #$1E ; #$1E = 30 STA $375C,X LDA #$08 ; #$08 = 8 STA $3768,X INX INY BRA $93C4 LC293E2: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA #$80 STA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) LDX $0E LDA $7C0A ; モンスターを倒したかどうかのフラグ (ON: 倒した, OFF: 倒していない) JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $7C0A ; モンスターを倒したかどうかのフラグ (ON: 倒した, OFF: 倒していない) RTS ;-------------------------------- ; ダメージポイントの算出 ((攻撃力 - 防御力)×倍率(下限: 1) = ダメージポイント(上限: 9999)) ;-------------------------------- LC293F8: REP #$20 ; A = 16bit SEC LDA $50 ; 一時変数 攻撃力(下位) SBC $54 ; 一時変数 防御力(下位) BEQ $9403 BCS $940A LC29403: TDC STA $7B69 ; 一時変数 ダメージポイント SEP #$20 ; A = 8bit RTS LC2940A: STA $2A LDA $52 ; 一時変数 倍率(下位) BNE $9411 INC LC29411: STA $2C TDC SEP #$20 ; A = 8bit JSR $00D2 ; 乗算(16bit) (($2A)×($2C) = ($2E)) LDX $2E CPX #$270F ; #$270F = 9999 BCC $9423 LDX #$270F ; #$270F = 9999 LC29423: STX $7B69 ; 一時変数 ダメージポイント RTS ;-------------------------------- ; ;-------------------------------- LC29427: LDX #$0006 ; #$0006 = 6 LC2942A: STZ $4746,X DEX BPL $942A LDX #$001F ; #$001F = 31 LC29433: STZ $3C3C,X DEX BPL $9433 LC29439: LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) JSR $01EC ; ($32: 自分アドレスへのインデックス) = Aレジスタ×128 LDA $7B2C TAX LDA $D0EE55,X ; 0, 12, 24, 36, ..., 348, 360 (12の倍数の数列(2バイト×24要素)) STA $39 LDA $7B2D,X BPL $9476 CMP #$FF ; #$FF = 255 BNE $9470 LDA $7B2C BNE $946D LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) STA $3BCD STZ $3BCC STZ $3BCE STZ $3BCF STZ $3BD0 STZ $3BD1 STZ $3BD2 LC2946D: JMP $94FE LC29470: INC $7B2C JMP $94FB LC29476: LDA $7ACC,X AND #$10 BEQ $9487 LDA $56 ; 一時変数 命中判定用? (0であれば命中) BEQ $9487 JSR $9980 ; JMP $9439 LC29487: LDA $7ACC,X AND #$EF BNE $94B2 LDA $7B2C ASL TAX LDA $7ADC,X ORA $7ADD,X BNE $94A4 LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) STA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) STA $7B45 BRA $94AD LC294A4: JSR $94FF ; DEC STA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) STA $7B45 LC294AD: JSR $9A08 ; MP消費(装備特殊効果によって消費1/2(端数切り上げ)) BRA $94C9 LC294B2: LDA $7ABC BNE $94BB LDA #$FF ; #$FF = 255 STA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) LC294BB: JSR $94FF ; CLC ADC $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) STA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) STA $7B45 JSR $9A08 ; MP消費(装備特殊効果によって消費1/2(端数切り上げ)) LC294C9: LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) REP #$20 ; A = 16bit JSR $01B2 ; 128倍する STA $49 ; 一時変数 相手アドレスへのインデックス TDC SEP #$20 ; A = 8bit STZ $5F ; 一時変数 攻撃エフェクトフラグ(1)? STZ $7B40 STZ $7B41 STZ $7B42 STZ $7B43 STZ $7B44 STZ $7B46 STZ $7C5D STZ $7C97 JSR $9561 ; JSR $951A ; JSR $6408 ; JSR $9761 ; LC294FB: JMP $9439 LC294FE: RTS ;-------------------------------- ; ;-------------------------------- LC294FF: LDA $7B2C ASL TAX TDC TAY INY LC29507: ASL $7ADD,X ROL $7ADC,X BCS $9518 INY CPY #$000C ; #$000C = 12 BNE $9507 LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) TAY LC29518: TYA RTS ;-------------------------------- ; ;-------------------------------- LC2951A: LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $7B2C BEQ $952C REP #$20 ; A = 16bit TXA CLC ADC #$0005 ; #$0005 = 5 TAX TDC SEP #$20 ; A = 8bit LC2952C: LDA $39 TAY LDA $474D STA $4746 LDA $2056,X ; (フラグ系?) AND #$20 BEQ $9544 LDA $205A,X ; 使用するアイテムの番号? STA $4747 BRA $9551 LC29544: LDA $2056,X ; (フラグ系?) AND #$40 BEQ $9551 LDA $205A,X ; 使用するアイテムの番号? STA $4748 LC29551: LDA $79FD,Y ; 実行する魔法・技・道具・武器のデータ 1バイト目 STA $474A LDA $2058,X ; 行動の対象(敵) (01: No.8, 02: No.7, 04: No.6, 08: No.5, 10: No.4, 20: No.3, 40: No.2, 80: No.1) ORA $2059,X ; 行動の対象(味方) (10: No.4, 20: No.3, 40: No.2, 80: No.1) STA $474B RTS ;-------------------------------- ; ;-------------------------------- LC29561: LDA $39 TAX LDA $79FD,X ; 実行する魔法・技・道具・武器のデータ 1バイト目 AND #$0F BNE $956D BRA $957E LC2956D: LDA $79FF,X ; 実行する魔法・技・道具・武器のデータ 3バイト目 BPL $9574 BRA $957E LC29574: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) ORA $2072,X ; 一時的状態変化3 (補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) BMI $9581 LC2957E: JMP $9614 LC29581: LDA $2000,X ; 隊列(bit7)・キャラクタ番号(下位4ビット) AND #$40 BNE $957E LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$C1 BNE $957E LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$10 BNE $957E INC $7B46 STZ $0E LDA #$03 ; #$03 = 3 STA $0F LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) STA $10 CMP #$04 ; #$04 = 4 BCS $95AF LDA #$04 ; #$04 = 4 STA $0E LDA #$0B ; #$0B = 11 STA $0F LC295AF: LDA $10 CMP #$04 ; #$04 = 4 BCC $95B8 SEC SBC #$04 ; #$04 = 4 LC295B8: TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $7B42 JSR $9728 ; LDA $11 BEQ $95CF TDC STA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) TAX STX $49 ; 一時変数 相手アドレスへのインデックス BRA $9614 LC295CF: LDA $0E TAX LDA $0F JSR $007C ; X〜Aの範囲の乱数取得 STA $10 TAY LDA $3EC2,Y BEQ $95CF LDA $10 REP #$20 ; A = 16bit JSR $01B2 ; 128倍する TAX STX $49 ; 一時変数 相手アドレスへのインデックス TDC SEP #$20 ; A = 8bit LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$C0 BNE $95CF LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$81 BNE $95CF LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$10 BNE $95CF LDA $10 STA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCC $960C SEC SBC #$04 ; #$04 = 4 LC2960C: TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $7B43 LC29614: LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCS $961B RTS LC2961B: LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCC $9622 RTS LC29622: LDA $7B2C TAX LDA $7B2D,X CMP #$01 ; #$01 = 1 BEQ $9632 CMP #$02 ; #$02 = 2 BEQ $9632 RTS LC29632: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$10 BNE $964C LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$02 BEQ $964C LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$10 BEQ $964D LC2964C: RTS LC2964D: LDA $7C1E ; ゴーレムで耐えられるダメージ?(下位) ORA $7C1F ; ゴーレムで耐えられるダメージ?(上位) BNE $964C TDC TAX STX $0E STX $10 LC2965B: LDY $0E LDA $3EC2,Y BEQ $969D LDA $2021,X ; アビリティフラグ? (01: 二刀流?, 10: 薬の知識, 20: 両手持ち, 40: 格闘?) BPL $969D LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,X ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$42 BNE $969D LDA $201B,X ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,X ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$78 BNE $969D LDA $201C,X ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$10 BNE $969D LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$81 BNE $969D LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$10 BNE $969D LDY $10 LDA $0E CMP $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) BEQ $969D STA $2620,Y ; 汎用領域?[0] INC $10 LC2969D: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INC $0E LDA $0E CMP #$04 ; #$04 = 4 BNE $965B LDA $10 BEQ $9727 LDX $32 ; 一時変数 自分アドレスへのインデックス PHX TDC TAX STX $0E STX $12 LC296B5: LDX $0E LDA $2620,X ; 汎用領域?[0] JSR $01EC ; ($32: 自分アドレスへのインデックス) = Aレジスタ×128 LDY $12 REP #$20 ; A = 16bit LDA $2006,X ; ヒットポイント(下位) STA $262A,Y TDC SEP #$20 ; A = 8bit INC $12 INC $12 INC $0E LDA $0E CMP $10 BNE $96B5 ASL $10 TDC TAX STX $0E STX $12 STX $14 LC296E0: REP #$20 ; A = 16bit LDX $0E LDA $262A,X CMP $12 BCC $96FB STA $12 TDC SEP #$20 ; A = 8bit LDA $0E LSR TAX LDA $2620,X ; 汎用領域?[0] STA $14 BRA $96FE LC296FB: TDC SEP #$20 ; A = 8bit LC296FE: INC $0E INC $0E LDA $0E CMP $10 BNE $96E0 LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) TAX TDC JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $7B44 LDA $14 STA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) STA $7B45 REP #$20 ; A = 16bit JSR $01B2 ; 128倍する TAX STX $49 ; 一時変数 相手アドレスへのインデックス TDC SEP #$20 ; A = 8bit PLX STX $32 ; 一時変数 自分アドレスへのインデックス LC29727: RTS ;-------------------------------- ; ;-------------------------------- LC29728: LDA $0F TAY INY STY $10 STZ $11 LDA $0E TAY REP #$20 ; A = 16bit JSR $01B2 ; 128倍する TAX TDC SEP #$20 ; A = 8bit LC2973C: LDA $3EC2,Y BEQ $9756 LDA $201A,X ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$C0 BNE $9756 LDA $201D,X ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$81 BNE $9756 LDA $201E,X ; フラグ (10: ジャンプ, 40: 守り, 80: 防御?) AND #$10 BEQ $9760 LC29756: JSR $01E0 ; Xレジスタ += 0x80 (次のキャラクタへ) INY CPY $10 BNE $973C INC $11 LC29760: RTS ;-------------------------------- ; ;-------------------------------- LC29761: JSR $9885 ; LDA $7B2C STA $24 LDA #$07 ; #$07 = 7 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) LDY $26 LDA $4747 CMP #$81 ; #$81 = 129 BNE $9781 LDA $3BCC,Y ORA #$01 STA $3BCC,Y LC29781: LDA $7BFB BEQ $978E LDA $3BCC,Y ORA #$20 STA $3BCC,Y LC2978E: LDA $7C5D BEQ $979B LDA $3BCC,Y ORA #$02 STA $3BCC,Y LC2979B: LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCC $97AE LDA $3BCC,Y ORA #$80 STA $3BCC,Y SEC LDA $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) SBC #$04 ; #$04 = 4 LC297AE: STA $3BCD,Y LDA $7B45 CMP #$04 ; #$04 = 4 BCC $97C6 LDA $3BCC,Y ORA #$40 STA $3BCC,Y SEC LDA $7B45 SBC #$04 ; #$04 = 4 LC297C6: TAX LDA $3BCE,Y JSR $01D6 ; Aレジスタの値の(7 - Xレジスタ)ビットをセットする STA $3BCE,Y LDA $5F ; 一時変数 攻撃エフェクトフラグ(1)? ORA $61 ; 一時変数 攻撃エフェクトフラグ(2)? BEQ $97DE LDA $3BCC,Y ORA #$10 STA $3BCC,Y LC297DE: LDA $7B40 BEQ $97EB LDA $3BCC,Y ORA #$08 STA $3BCC,Y LC297EB: LDA $7B46 BNE $97FB LDA $3BCF,Y ORA $7B41 STA $3BCF,Y BRA $9832 LC297FB: LDA $7B45 STA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) LDA $3BD0,Y ORA $7B42 STA $3BD0,Y LDA $7B41 BEQ $9832 LDA $7B2C JSR $01B6 ; 8倍する STA $0F LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) CMP #$04 ; #$04 = 4 BCC $981F SEC SBC #$04 ; #$04 = 4 LC2981F: CLC ADC $0F TAX LDA $7B43 STA $7B49,X LDA $3BD1,Y ORA $7B43 STA $3BD1,Y LC29832: LDA $7B44 STA $3BD2,Y LDA $7B2C TAX LDA $7B1C,X BEQ $9849 INC $7ABC CMP $7ABC BNE $9884 LC29849: LDA $3BCF,Y BNE $9878 JSR $9965 ; Yレジスタ = ($7B2C)×12, Xレジスタ = ($7B2C)×24 STZ $0E LDA $3C5F,X LSR ROR $0E LSR ROR $0E LSR ROR $0E TAX LDA $D0EEF6,X PHA LDA $0E JSR $01BD ; 32で割る TAX PLA JSR $01DB ; Aレジスタの値の(7 - Xレジスタ)ビットがセットされていない場合は0クリアする BNE $9878 JSR $9965 ; Yレジスタ = ($7B2C)×12, Xレジスタ = ($7B2C)×24 TDC STA $3C5F,X LC29878: INC $7B2C INC $79FB STZ $7ABC STZ $7C08 LC29884: RTS ;-------------------------------- ; ;-------------------------------- LC29885: LDX $49 ; 一時変数 相手アドレスへのインデックス LDA $7B2C BNE $98B8 LDA $4746 STA $2046,X LDA $4747 STA $2047,X LDA $4748 STA $2048,X LDA $4749 STA $2049,X LDA $474A STA $204A,X LDA $474B STA $204B,X LDA $474C STA $204C,X BRA $98E2 LC298B8: LDA $4746 STA $204D,X LDA $4747 STA $204E,X ; アビリティフラグ(すっぴんのみ)? (01: 二刀流, 10: 薬の知識, 20: 両手持ち, 40: 格闘?) LDA $4748 STA $204F,X LDA $4749 STA $207B,X LDA $474A STA $207C,X LDA $474B STA $207D,X LDA $474C STA $207E,X LC298E2: RTS ;-------------------------------- ; ;-------------------------------- LC298E3: JSR $98FA ; STZ $384C,X LDA #$FC ; #$FC = 252 STA $384D,X LDA #$06 ; #$06 = 6 STA $384E,X STZ $384F,X STZ $3850,X RTS ;-------------------------------- ; ;-------------------------------- LC298FA: LDA $7C03 BNE $9912 LDA $79F9 ASL TAX REP #$20 ; A = 16bit LDA $D0ED89,X ; 0, 5, 10, 15, ..., 500, 505 (5の倍数の数列) TAX TDC SEP #$20 ; A = 8bit INC $79F9 RTS LC29912: TDC TAX LC29914: LDA $384C,X CMP #$FF ; #$FF = 255 BEQ $9922 INX INX INX INX INX BRA $9914 LC29922: RTS ;-------------------------------- ; Aレジスタと($0C) = ($79FA)×12 ($79FAの範囲は0〜23を想定?) ;-------------------------------- LC29923: LDA $79FA TAX LDA $D0EE55,X ; 0, 12, 24, 36, ..., 348, 360 (12の倍数の数列(2バイト×24要素)) TAY STY $0C RTS ;-------------------------------- ; ;-------------------------------- LC2992F: JSR $98FA ; STZ $384C,X LDA #$FC ; #$FC = 252 STA $384D,X LDA #$04 ; #$04 = 4 STA $384E,X LDA $2620 ; 汎用領域?[0] STA $384F,X LDA $2621 ; 汎用領域?[1] STA $3850,X RTS ;-------------------------------- ; ;-------------------------------- LC2994C: JSR $98FA ; STZ $384C,X LDA #$FC ; #$FC = 252 STA $384D,X LDA #$05 ; #$05 = 5 STA $384E,X STZ $384F,X STZ $3850,X JMP $0356 ; ;-------------------------------- ; Yレジスタ = ($7B2C)×12, Xレジスタ = ($7B2C)×24 ;-------------------------------- LC29965: LDA $7B2C JSR $01B7 ; 4倍する STA $0E ASL CLC ADC $0E TAY LDA $7B2C JSR $01B6 ; 8倍する STA $0E ASL CLC ADC $0E TAX RTS ;-------------------------------- ; ;-------------------------------- LC29980: LDA $7B2C TAX LDA $D0EE55,X ; 0, 12, 24, 36, ..., 348, 360 (12の倍数の数列(2バイト×24要素)) TAY LDA $7B2C INC TAX LDA $D0EE55,X ; 0, 12, 24, 36, ..., 348, 360 (12の倍数の数列(2バイト×24要素)) TAX LC29993: LDA $79FC,X ; 実行する魔法・技・道具・武器のデータ 0バイト目 STA $79FC,Y ; 実行する魔法・技・道具・武器のデータ 0バイト目 INX INY CPX #$00C0 ; #$00C0 = 192 BNE $9993 LDA $7B2C TAY TYX INX LC299A6: LDA $7B2D,X STA $7B2D,Y LDA $7B1C,X STA $7B1C,Y LDA $7ACC,X STA $7ACC,Y INX INY CPX #$0010 ; #$0010 = 16 BNE $99A6 LDA $7B2C ASL TAY TYX INX INX LC299C7: LDA $7ADC,X STA $7ADC,Y LDA $7ADD,X STA $7ADD,Y INX INX INY INY CPX #$0020 ; #$0020 = 32 BNE $99C7 LDA $7B2C DEC BNE $99EA LDY #$000A ; #$000A = 10 LDX #$0014 ; #$0014 = 20 BRA $99FB LC299EA: DEC BNE $99F5 LDY #$0014 ; #$0014 = 20 LDX #$001E ; #$001E = 30 BRA $99FB LC299F5: LDY #$001E ; #$001E = 30 LDX #$0028 ; #$0028 = 40 LC299FB: LDA $384C,X STA $384C,Y INX INY CMP #$FF ; #$FF = 255 BNE $99FB RTS ;-------------------------------- ; MP消費(装備特殊効果によって消費1/2(端数切り上げ)) ;-------------------------------- LC29A08: LDA $39 TAX LDA $79FE,X ; 実行する魔法・技・道具・武器のデータ 2バイト目 AND #$07 BNE $9A5D LDA $79FF,X ; 実行する魔法・技・道具・武器のデータ 3バイト目 AND #$7F TAX STX $0E LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2039,X ; 装備特殊効果フラグ(01: HP1/2で捕獲, 02: 不死特性付加, 04: 剣の舞確率上昇, 08: 消費MP1/2, 10: 盗み成功率2倍, 20: 格闘効果付加, 40: エルフのマント, 80: イージスのたて) AND #$08 BEQ $9A29 LSR $0E BCC $9A29 INC $0E LC29A29: LDA $2056,X ; (フラグ系?) AND #$01 BEQ $9A5D LDA $7C08 BNE $9A5D INC $7C08 REP #$20 ; A = 16bit SEC LDA $200A,X ; マジックポイント(下位) SBC $0E BCC $9A49 STA $200A,X ; マジックポイント(下位) TDC SEP #$20 ; A = 8bit RTS LC29A49: TDC SEP #$20 ; A = 8bit LDA $7B2C TAX LDA #$7E ; #$7E = 126 STA $7B2D,X JSR $9965 ; Yレジスタ = ($7B2C)×12, Xレジスタ = ($7B2C)×24 LDA #$1E ; #$1E = 30 STA $3C5F,X LC29A5D: RTS ;-------------------------------- ; ;-------------------------------- LC29A5E: STZ $7B7B LC29A61: JSR $9A6F ; INC $7B7B LDA $7B7B CMP #$04 ; #$04 = 4 BNE $9A61 RTS ;-------------------------------- ; ;-------------------------------- LC29A6F: LDA $7B7B JSR $01EC ; ($32: 自分アドレスへのインデックス) = Aレジスタ×128 REP #$20 ; A = 16bit TXA CLC ADC #$200E ; #$200E = 8206 STA $0E TDC SEP #$20 ; A = 8bit LDA $7B7B TAX LDA $D0ED85,X ; 0, 84, 168, 252 (84の倍数の数列) TAX STX $10 STX $0A TDC TAY STY $14 LC29A92: LDY $14 LDA ($0E),Y REP #$20 ; A = 16bit JSR $01B7 ; 4倍する STA $16 ASL CLC ADC $16 TAX TDC SEP #$20 ; A = 8bit STZ $18 LDY $10 LC29AA9: LDA $D10000,X ; FILEPOS_ITEMDATA STA $4049,Y INX INY INC $18 LDA $18 CMP #$0C ; #$0C = 12 BNE $9AA9 REP #$20 ; A = 16bit CLC LDA $10 ADC #$000C ; #$000C = 12 STA $10 TDC SEP #$20 ; A = 8bit INC $14 LDA $14 CMP #$07 ; #$07 = 7 BNE $9A92 TDC TAX STX $2620 ; 汎用領域?[0] STX $2622 ; 汎用領域?[2] STX $2624 ; 汎用領域?[4] STX $2626 ; 汎用領域?[6] STX $2628 STX $12 TAY LDX $32 ; 一時変数 自分アドレスへのインデックス LC29AE5: LDA $2024,X ; 力(装備補正なし) REP #$20 ; A = 16bit CLC ADC #$03E8 ; #$03E8 = 1000 STA $2622,Y ; 汎用領域?[2] TDC SEP #$20 ; A = 8bit INX INY INY INC $12 LDA $12 CMP #$04 ; #$04 = 4 BNE $9AE5 LDY $0A LC29B01: LDA $404C,Y BMI $9B10 ORA $2620 ; 汎用領域?[0] STA $2620 ; 汎用領域?[0] REP #$20 ; A = 16bit BRA $9B45 LC29B10: PHA AND #$0A07 TAX LDA $D12880,X STA $14 LDA $D12881,X STA $16 PLA ASL STA $19 TDC TAX STZ $15 STZ $17 REP #$20 ; A = 16bit LC29B2D: ASL $18 BCS $9B35 LDA $14 BRA $9B37 LC29B35: LDA $16 LC29B37: CLC ADC $2622,X ; 汎用領域?[2] STA $2622,X ; 汎用領域?[2] INX INX CPX #$0008 ; #$0008 = 8 BNE $9B2D LC29B45: TYA CLC ADC #$000C ; #$000C = 12 TAY TDC SEP #$20 ; A = 8bit INC $13 LDA $13 CMP #$07 ; #$07 = 7 BNE $9B01 TDC TAX REP #$20 ; A = 16bit LC29B5A: SEC LDA $2622,X ; 汎用領域?[2] SBC #$03E8 ; #$03E8 = 1000 BCS $9B64 TDC LC29B64: STA $2622,X ; 汎用領域?[2] INX INX CPX #$0008 ; #$0008 = 8 BNE $9B5A TDC SEP #$20 ; A = 8bit LDY $0A LDX $32 ; 一時変数 自分アドレスへのインデックス LDA $2620 ; 汎用領域?[0] AND #$7F STA $2022,X ; パワーアップ属性? LDA $2622 ; 汎用領域?[2] STA $2028,X ; 力(装備補正あり) LDA $2624 ; 汎用領域?[4] STA $2029,X ; 素速さ(装備補正あり) LDA $2626 ; 汎用領域?[6] STA $202A,X ; 体力(装備補正あり) LDA $2628 STA $202B,X ; 魔力(装備補正あり) STZ $2050,X ; 魔法剣 付加属性(2倍) (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) STZ $2051,X ; 魔法剣 付加属性(3倍) (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) STZ $2052,X ; 魔法剣 付加属性(4倍/即死) (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) STZ $2053,X ; 魔法剣 付加状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) STZ $2054,X ; 魔法剣 付加状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) STZ $2055,X ; 魔法剣 特殊効果フラグ(20: MP吸収, 40: HP吸収, 80: フレア剣効果) STZ $207A,X ; 攻撃エフェクトの種類 LDA $4086,Y STA $206C,X LDA $4092,Y STA $206D,X LDA $408C,Y STA $2044,X ; 攻撃力 (「はなつ」時にモンスターの攻撃力で上書きされる) LDA $4098,Y STA $2045,X LDA $408A,Y ORA $4096,Y STA $2038,X ; 装備特殊効果フラグ?(20: まさむね, 40: さすけのかたな, 80: ディフェンダー) CLC LDA $4073,Y ADC $407F,Y CMP #$63 ; #$63 = 99 BCC $9BD8 LDA #$63 ; #$63 = 99 LC29BD8: STA $202C,X ; 物理回避率 CLC LDA $4050,Y ADC $405C,Y BCS $9BF3 ADC $4068,Y BCS $9BF3 ADC $4074,Y BCS $9BF3 ADC $4080,Y BCC $9BF5 LC29BF3: LDA #$FF ; #$FF = 255 LC29BF5: STA $202D,X ; 物理防御力 CLC LDA $4051,Y ADC $405D,Y ADC $4069,Y ADC $4075,Y ADC $4081,Y CMP #$63 ; #$63 = 99 BCC $9C0E LDA #$63 ; #$63 = 99 LC29C0E: STA $202E,X ; 魔法回避率 CLC LDA $4052,Y ADC $405E,Y BCS $9C29 ADC $406A,Y BCS $9C29 ADC $4076,Y BCS $9C29 ADC $4082,Y BCC $9C2B LC29C29: LDA #$FF ; #$FF = 255 LC29C2B: STA $202F,X ; 魔法防御力 LDA $404E,Y ORA $405A,Y ORA $4066,Y ORA $4072,Y ORA $407E,Y STA $2039,X ; 装備特殊効果フラグ(01: HP1/2で捕獲, 02: 不死特性付加, 04: 剣の舞確率上昇, 08: 消費MP1/2, 10: 盗み成功率2倍, 20: 格闘効果付加, 40: エルフのマント, 80: イージスのたて) TDC TAX STX $2620 ; 汎用領域?[0] STX $2622 ; 汎用領域?[2] STX $2624 ; 汎用領域?[4] STX $0E LDY $0A STY $10 LC29C51: LDY $10 LDA $4053,Y REP #$20 ; A = 16bit STA $12 JSR $01B7 ; 4倍する CLC ADC $12 TAX TDC SEP #$20 ; A = 8bit TAY LC29C65: LDA $D12580,X ; FILEPOS_ITEMELEM ORA $2620,Y ; 汎用領域?[0] STA $2620,Y ; 汎用領域?[0] INX INY CPY #$0005 ; #$0005 = 5 BNE $9C65 REP #$20 ; A = 16bit LDA $10 CLC ADC #$000C ; #$000C = 12 STA $10 TDC SEP #$20 ; A = 8bit INC $0E LDA $0E CMP #$05 ; #$05 = 5 BNE $9C51 TDC TAY LDX $32 ; 一時変数 自分アドレスへのインデックス LC29C8F: LDA $2620,Y ; 汎用領域?[0] STA $2030,X ; 吸収属性 (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) INX INY CPY #$0005 ; #$0005 = 5 BNE $9C8F STZ $2620 ; 汎用領域?[0] STZ $2621 ; 汎用領域?[1] STZ $2622 ; 汎用領域?[2] STZ $0E LDX $0A STX $10 LC29CAB: LDY $10 LDA $4054,Y STA $24 LDA #$07 ; #$07 = 7 STA $25 JSR $00F1 ; 乗算(8bit) (($24)×($25) = ($26)) TDC TAY LDX $26 LC29CBD: LDA $D126C4,X ORA $2620,Y ; 汎用領域?[0] STA $2620,Y ; 汎用領域?[0] INX INY CPY #$0003 ; #$0003 = 3 BNE $9CBD LDA $0E PHA JSR $9D01 ; PLA STA $0E REP #$20 ; A = 16bit LDA $10 CLC ADC #$000C ; #$000C = 12 STA $10 TDC SEP #$20 ; A = 8bit INC $0E LDA $0E CMP #$05 ; #$05 = 5 BNE $9CAB TDC TAY LDX $32 ; 一時変数 自分アドレスへのインデックス LC29CF0: LDA $2035,X ; 状態変化1(永続的状態)耐性 (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2620,Y ; 汎用領域?[0] STA $2035,X ; 状態変化1(永続的状態)耐性 (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) INX INY CPY #$0003 ; #$0003 = 3 BNE $9CF0 RTS ;-------------------------------- ; ;-------------------------------- LC29D01: STZ $13 LDY $32 ; 一時変数 自分アドレスへのインデックス LDX $26 LDA $D126C0,X ; FILEPOS_ITEMSTATE BEQ $9D49 STA $12 BMI $9D34 AND #$04 BEQ $9D3F LDA $12 AND #$FB STA $12 LDA $201A,Y ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,Y ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$04 BNE $9D3F LDA $201A,Y ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA #$04 STA $201A,Y ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) LDA #$01 ; #$01 = 1 JSR $9F2E ; BRA $9D3F LC29D34: INC $13 LDA $12 AND #$7F STA $2070,Y ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) BRA $9D49 LC29D3F: LDY $32 ; 一時変数 自分アドレスへのインデックス LDA $201A,Y ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $12 STA $201A,Y ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) LC29D49: LDY $32 ; 一時変数 自分アドレスへのインデックス LDX $26 LDA $D126C1,X STA $12 LDA $2001,Y ; ジョブ番号 CMP #$06 ; #$06 = 6 BEQ $9D66 LDA $201A,Y ; 状態変化1(永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) ORA $2070,Y ; 一時的状態変化1 (永続的状態) (01: 暗闇, 02: ゾンビー, 04: 猛毒, 08: レビテト, 10: ミニマム, 20: 蛙, 40: 石化, 80: 戦闘不能) AND #$02 BNE $9D70 BEQ $9D8B LC29D66: LDA $3EEF ; MONPARTY[0]: 視覚的効果 BMI $9D70 LDA #$08 ; #$08 = 8 STA $2071,Y ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) LC29D70: LDA $7B7B TAX LDA #$3C ; #$3C = 60 STA $7C04,X LDA $7B7B ASL TAX LDA $D0ED61,X ; 0, 11, 22, 33, 44, 55, 66, 77, 88, 99, 110, 121 (11の倍数の数列) TAX TDC STA $3CFB,X ; タイマー制御フラグ?(行動可能時間待ち(ATBゲージ)) (01: 増加する/しない?, 40: 表示に反映しない?, 80: 処理発動?) INC STA $3D7F,X ; タイマー現在値(行動可能時間待ち(ATBゲージ)) LC29D8B: LDA $12 BNE $9D92 JMP $9E26 LC29D92: STA $12 LDA $13 BNE $9E15 LDA $12 AND #$A4 BEQ $9E1C LDA $12 AND #$80 BEQ $9DC1 LDA $12 AND #$7F STA $12 LDA $201B,Y ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,Y ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$80 BNE $9DC1 LDA $201B,Y ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA #$80 STA $201B,Y ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) LDA #$06 ; #$06 = 6 JSR $9F2E ; LC29DC1: LDA $12 AND #$20 BEQ $9DEE LDA $12 STA $14 AND #$DF STA $12 LDY $32 ; 一時変数 自分アドレスへのインデックス LDA $201B,Y ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,Y ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$20 BNE $9DEE LDA $14 AND #$20 STA $14 LDA $201B,Y ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $14 STA $201B,Y ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) LDA #$09 ; #$09 = 9 JSR $9F2E ; LC29DEE: LDA $12 AND #$04 BEQ $9E13 LDA $12 AND #$FB STA $12 LDY $32 ; 一時変数 自分アドレスへのインデックス LDA $201B,Y ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $2071,Y ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) AND #$04 BNE $9E13 LDA $201B,Y ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA #$04 STA $201B,Y ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) LDA #$04 ; #$04 = 4 JSR $9F2E ; LC29E13: BRA $9E1C LC29E15: LDA $12 STA $2071,Y ; 一時的状態変化2 (一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) BRA $9E26 LC29E1C: LDY $32 ; 一時変数 自分アドレスへのインデックス LDA $201B,Y ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) ORA $12 STA $201B,Y ; 状態変化2(一時的状態) (01: 分身1, 02: 分身2, 04: 沈黙, 08: バーサク, 10: 混乱, 20: 麻痺, 40: 睡眠, 80: 徐々に老化) LC29E26: LDY $32 ; 一時変数 自分アドレスへのインデックス LDX $26 LDA $D126C2,X BNE $9E33 JMP $9EBC LC29E33: STA $12 LDA $13 BNE $9EAB LDA $12 AND #$91 BEQ $9EB2 LDA $12 AND #$80 BEQ $9E62 LDA $12 AND #$7F STA $12 LDA $201C,Y ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) ORA $2072,Y ; 一時的状態変化3 (補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$80 BNE $9E62 LDA $201C,Y ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) ORA #$80 STA $201C,Y ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) LDA #$02 ; #$02 = 2 JSR $9F2E ; LC29E62: LDA $12 AND #$10 BEQ $9E84 LDA $12 AND #$EF STA $12 LDY $32 ; 一時変数 自分アドレスへのインデックス LDA $201C,Y ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$10 BNE $9E84 LDA $201C,Y ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) ORA #$10 STA $201C,Y ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) LDA #$00 ; #$00 = 0 JSR $9F2E ; LC29E84: LDA $12 AND #$01 BEQ $9EA9 LDA $12 AND #$FE STA $12 LDY $32 ; 一時変数 自分アドレスへのインデックス LDA $201C,Y ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) ORA $2072,Y ; 一時的状態変化3 (補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) AND #$01 BNE $9EA9 LDA $201C,Y ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) ORA #$01 STA $201C,Y ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) LDA #$07 ; #$07 = 7 JSR $9F2E ; LC29EA9: BRA $9EB2 LC29EAB: LDA $12 STA $2072,Y ; 一時的状態変化3 (補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) BRA $9EBC LC29EB2: LDY $32 ; 一時変数 自分アドレスへのインデックス LDA $201C,Y ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) ORA $12 STA $201C,Y ; 状態変化3(補助魔法) (01: リジェネ, 02: 無敵状態, 04: スロウ, 08: ヘイスト, 10: ストップ, 20: シェル, 40: プロテス, 80: リフレク) LC29EBC: LDY $32 ; 一時変数 自分アドレスへのインデックス LDX $26 LDA $D126C3,X BEQ $9F2D STA $12 LDA $13 BNE $9F1C LDA $12 AND #$18 BEQ $9F23 LDA $12 AND #$10 BEQ $9EF5 LDA $12 AND #$EF STA $12 LDA $201D,Y ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) ORA $2073,Y ; 一時的状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$10 BNE $9EF5 LDA $201D,Y ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) ORA #$10 STA $201D,Y ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) LDA #$03 ; #$03 = 3 JSR $9F2E ; LC29EF5: LDA $12 AND #$08 BEQ $9F1A LDA $12 AND #$F7 STA $12 LDY $32 ; 一時変数 自分アドレスへのインデックス LDA $201D,Y ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) ORA $2073,Y ; 一時的状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) AND #$08 BNE $9EF5 LDA $201D,Y ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) ORA #$08 STA $201D,Y ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) LDA #$05 ; #$05 = 5 JSR $9F2E ; LC29F1A: BRA $9F23 LC29F1C: LDA $12 STA $2073,Y ; 一時的状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) BRA $9F2D LC29F23: LDY $32 ; 一時変数 自分アドレスへのインデックス LDA $201D,Y ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) ORA $12 STA $201D,Y ; 状態変化4 (01: 逃走, 02: 瀕死状態, 04: 歌っている, 08: スリップ, 10: 死の宣告, 20: 向き反転, 40: 無敵状態, 80: 離脱) LC29F2D: RTS ;-------------------------------- ; ;-------------------------------- LC29F2E: TAX LDA #$01 ; #$01 = 1 STA $3ED7 ; 2種類のタイマーサイクルのどちらを採用するか (0: 味方用, 1: 敵用) LDA $7B7B JMP $24FD ; 各種タイマー発動 (Aレジスタ: タイマー適用キャラクタ, Xレジスタ: タイマーの種類) ;-------------------------------- ; ;-------------------------------- LC29F3A: STZ $12 LDA $41CC JSR $01EC ; ($32: 自分アドレスへのインデックス) = Aレジスタ×128 LDA $41CC JSR $01B7 ; 4倍する STA $0E ASL CLC ADC $0E TAY LDA $37AC,Y STA $10 LDA $37AD,Y STA $11 CMP $10 BCS $9F67 PHA LDA $10 STA $11 PLA STA $10 INC $12 LC29F67: LDA $10 ORA $11 BNE $9F77 TAY STY $16 INC STA $14 STA $15 BRA $9FCF LC29F77: LDA $10 BNE $9F9B LDA $11 CMP #$80 ; #$80 = 128 BCS $9F8D STZ $14 LDA $11 STA $15 STZ $16 STZ $17 BRA $9FCF LC29F8D: TDC INC STA $14 STZ $15 STZ $16 LDA $11 STA $17 BRA $9FCF LC29F9B: LDA $10 CMP #$80 ; #$80 = 128 BCC $9FAF STZ $14 STZ $15 LDA $10 STA $16 LDA $11 STA $17 BRA $9FCF LC29FAF: LDA $11 CMP #$80 ; #$80 = 128 BCC $9FC3 LDA $10 STA $14 STZ $15 STZ $16 LDA $11 STA $17 BRA $9FCF LC29FC3: LDA $10 STA $14 LDA $11 STA $15 STZ $16 STZ $17 LC29FCF: JSR $9FE7 ; LDA $14 STA $2013,X ; 装備品 (左手) LDA $15 STA $2014,X ; 装備品 (右手) LDA $16 STA $2011,X ; フラグその1? (防御・回避率・魔法防御・装備の重さの表示に関係している?) LDA $17 STA $2012,X ; フラグその2? (防御・回避率・魔法防御・装備の重さの表示に関係している?) RTS ;-------------------------------- ; ;-------------------------------- LC29FE7: LDA $12 BEQ $9FFF LDA $14 PHA LDA $15 STA $14 PLA STA $15 LDA $16 PHA LDA $17 STA $16 PLA STA $17 LC29FFF: RTS ;-------------------------------- ; ;-------------------------------- LC2A000: BRA $A016 JSR $FF7D ; RTL ;-------------------------------- ; ;-------------------------------- LC2A006: BRA $A00A ;-------------------------------- ; ;-------------------------------- LC2A008: BRA $A00F LC2A00A: JSR $FF56 ; BRA $A012 LC2A00F: JSR $FF68 ; LC2A012: JSR $FE5B ; RTL LC2A016: JSR $A11B ; STZ $39 LDA $34 AND #$0007 ASL TAX LDA $C0E600,X STA $C7 SEP #$20 ; A = 8bit JMP ($01C7) LC2A02D: JSR $B2BD ; LC2A030: SEP #$20 ; A = 8bit RTL LDA $35 STA $44 LDA #$01 ; #$01 = 1 BRA $A06B LDA #$0A ; #$0A = 10 BRA $A06B LDA #$06 ; #$06 = 6 BRA $A06B JSR $A1F0 ; JSR $FF7D ; JSR $D447 ; JSR $F5A9 ; LDA #$0C ; #$0C = 12 BRA $A06B LDA #$80 ; #$80 = 128 TSB $45 STZ $49 ; 一時変数 相手アドレスへのインデックス STZ $4A JSR $A394 ; LDA #$01 ; #$01 = 1 BRA $A06B STZ $35 JSR $D958 ; BRA $A030 LDA #$0D ; #$0D = 13 LC2A06B: SEP #$20 ; A = 8bit STA $43 LDA #$7E ; #$7E = 126 PHA PLB REP #$20 ; A = 16bit JSR $C16A ; JSR $A16E ; LDA $43 AND #$00FF DEC ASL TAX LDA $C0E60E,X STA $C7 PER $C2A08E JMP ($01C7) REP #$20 ; A = 16bit LDA $43 AND #$00FF CMP #$000C ; #$000C = 12 BNE $A0A2 LDA $39 BNE $A0A2 JMP $A030 LC2A0A2: SEP #$20 ; A = 8bit LDA #$00 ; #$00 = 0 PHA PLB STZ $2121 REP #$20 ; A = 16bit STZ $2102 STZ $2116 LDX #$F5B2 ; #$F5B2 = 62898 JSR $A0F6 ; LDX #$F5B9 ; #$F5B9 = 62905 JSR $A0F6 ; LDX #$F58B ; #$F58B = 62859 JSR $A0F6 ; SEP #$20 ; A = 8bit LDA #$04 ; #$04 = 4 STA $CA LDA #$00 ; #$00 = 0 STA $7E7511 JSR $A106 ; LDA $7E750E STA $420C LDA $4210 LDA #$81 ; #$81 = 129 STA $4200 LDA #$00 ; #$00 = 0 STA $7E7522 STA $7E7525 LDA #$03 ; #$03 = 3 STA $7E7513 JMP $A2E9 ; ;-------------------------------- ; ;-------------------------------- LC2A0F6: LDY #$4300 ; #$4300 = 17152 LDA #$0006 ; #$0006 = 6 MVN $00,$C0 LDA #$0001 ; #$0001 = 1 STA $420B RTS ;-------------------------------- ; ;-------------------------------- LC2A106: PHP SEP #$20 ; A = 8bit LC2A109: LDA $004210 BMI $A109 LC2A10F: LDA $004210 BPL $A10F LDA $004210 PLP RTS ;-------------------------------- ; ;-------------------------------- LC2A11B: REP #$30 ; X,Y = 16bit A = 16bit LDA #$0100 ; #$0100 = 256 TCD LDX #$F533 ; #$F533 = 62771 LDY #$1F00 ; #$1F00 = 7936 LDA #$0007 ; #$0007 = 7 MVN $7E,$C0 STZ $8E SEP #$20 ; A = 8bit LDA #$80 ; #$80 = 128 STA $002100 STZ $44 STZ $45 STZ $46 STZ $47 ; 一時変数 自分の番号(0〜3: 味方, 4〜: 敵) STZ $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) JSR $A18A ; JSR $D230 ; JSR $D37B ; JSR $D3DB ; JSR $A247 ; JSR $A1CF ; JSR $FF7D ; JSR $D447 ; JSR $F5A9 ; JSR $A16E ; REP #$20 ; A = 16bit LDX #$F573 ; #$F573 = 62835 LDY #$750F ; #$750F = 29967 LDA #$0017 ; #$0017 = 23 MVN $7E,$C0 RTS ;-------------------------------- ; ;-------------------------------- LC2A16E: PHP REP #$20 ; A = 16bit LDX #$0220 ; #$0220 = 544 LC2A174: STZ $01FE,X DEX DEX BNE $A174 LDX #$0020 ; #$0020 = 32 LDA #$AAAA ; #$AAAA = 43690 LC2A181: STA $03FE,X DEX DEX BNE $A181 PLP RTS ;-------------------------------- ; ;-------------------------------- LC2A18A: PHB PHP SEP #$20 ; A = 8bit LDA #$00 ; #$00 = 0 PHA PLB LDA #$01 ; #$01 = 1 STA $4200 LDA #$01 ; #$01 = 1 STA $2101 LDA #$00 ; #$00 = 0 STA $2105 STA $2106 LDA #$80 ; #$80 = 128 STA $2115 LDX #$0008 ; #$0008 = 8 LC2A1AC: STZ $210C,X STZ $210C,X DEX BNE $A1AC REP #$20 ; A = 16bit LDX #$F53B ; #$F53B = 62779 LDY #$2107 ; #$2107 = 8455 LDA #$0005 ; #$0005 = 5 MVN $00,$C0 LDY #$212C ; #$212C = 8492 LDA #$0005 ; #$0005 = 5 MVN $00,$C0 PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2A1CF: PHB PHP REP #$20 ; A = 16bit LDA $8E STA $00420C LDX #$F547 ; #$F547 = 62791 LC2A1DC: LDA $C00000,X BEQ $A1ED TAY INX INX LDA #$0004 ; #$0004 = 4 MVN $00,$C0 BRA $A1DC LC2A1ED: PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2A1F0: PHB PHP REP #$20 ; A = 16bit LDX #$F342 ; #$F342 = 62274 LDY #$0970 ; #$0970 = 2416 LDA #$001F ; #$001F = 31 MVN $00,$C0 LDA #$0100 ; #$0100 = 256 STA $042D LDA #$0302 ; #$0302 = 770 STA $042F SEP #$20 ; A = 8bit STZ $59 ; 一時変数 汎用データ3 STZ $5D ; 一時変数 回避エフェクト (0: ミス, 1: ディフェンダー, 2: さすけのかたな, 3: エルフのマント, 4: ゴーレム, 5: 白刃取り, 6: 盾, 7: ミス) STZ $5F ; 一時変数 攻撃エフェクトフラグ(1)? STZ $61 ; 一時変数 攻撃エフェクトフラグ(2)? STZ $62 ; 一時変数 吸収フラグ? STZ $5E ; 一時変数? STZ $5C ; 一時変数? STZ $5B ; 一時変数? LDA #$02 ; #$02 = 2 STA $60 ; 一時変数 魔法剣フラグ LDA #$08 ; #$08 = 8 STA $5A ; 一時変数? STZ $63 ; 一時変数? STZ $64 ; 一時変数? STZ $65 STZ $66 LDA #$07 ; #$07 = 7 STA $67 STA $68 STA $69 STA $6A PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2A23B: STA ($E0),Y CLC ADC $E4 INY INY CPY $E2 BNE $A23B ; RTS ;-------------------------------- ; ;-------------------------------- LC2A247: PHP REP #$20 ; A = 16bit LDX #$D000 ; #$D000 = 53248 STX $E0 LDX #$0100 ; #$0100 = 256 STX $E2 LDX #$000C ; #$000C = 12 STX $E4 LDY $8E LDA #$0000 ; #$0000 = 0 JSR $A23B ; LDX #$01C0 ; #$01C0 = 448 STX $E2 LDA #$0600 ; #$0600 = 1536 JSR $A23B ; LDX #$0008 ; #$0008 = 8 STX $E4 LDX #$0200 ; #$0200 = 512 STX $E2 LDA #$0A80 ; #$0A80 = 2688 JSR $A23B ; LDX #$D200 ; #$D200 = 53760 STX $E0 LDX #$0009 ; #$0009 = 9 STX $E4 LDY $8E LDA #$1380 ; #$1380 = 4992 JSR $A23B ; LDX #$D400 ; #$D400 = 54272 STX $E0 LDX #$00AE ; #$00AE = 174 STX $E2 LDX #$0006 ; #$0006 = 6 STX $E4 LDY $8E LDA #$1C80 ; #$1C80 = 7296 JSR $A23B ; LDX #$0200 ; #$0200 = 512 STX $E2 LDX #$0009 ; #$0009 = 9 STX $E4 JSR $A23B ; LDX #$D600 ; #$D600 = 54784 STX $E0 LDX #$00A2 ; #$00A2 = 162 STX $E2 LDX #$0005 ; #$0005 = 5 STX $E4 LDY $8E LDA #$5800 ; #$5800 = 22528 JSR $A23B ; LDX #$0100 ; #$0100 = 256 STX $E2 LDX $8E STZ $E4 LDA $8E JSR $A23B ; LDX #$0142 ; #$0142 = 322 STX $E2 LDX #$0008 ; #$0008 = 8 STX $E4 LDA #$6200 ; #$6200 = 25088 JSR $A23B ; PLP RTS ;-------------------------------- ; ;-------------------------------- LC2A2E9: SEP #$20 ; A = 8bit REP #$10 ; X,Y = 16bit JSR $E66F ; JSR $FC2F ; PEA $7E7E PLB PLB BIT $45 BMI $A301 JSR $A33A ; BRA $A320 LC2A301: LDX $49 ; 一時変数 相手アドレスへのインデックス BMI $A30C DEX STX $49 ; 一時変数 相手アドレスへのインデックス LDA $8E BRA $A320 LC2A30C: LDA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) BNE $A314 LDA #$08 ; #$08 = 8 BRA $A320 LC2A314: LDA [$46] LDX $46 INX STX $46 LDX #$000F ; #$000F = 15 STX $49 ; 一時変数 相手アドレスへのインデックス LC2A320: STA $4B BIT #$10 BEQ $A328 LDA #$07 ; #$07 = 7 LC2A328: REP #$20 ; A = 16bit AND #$000F ASL TAX LDA $C0E628,X STA $C7 SEP #$20 ; A = 8bit JMP ($01C7) ;-------------------------------- ; ;-------------------------------- LC2A33A: PHP REP #$20 ; A = 16bit LDX $8E LC2A33F: LDA $0A AND $C0E7D2,X BNE $A34F INX INX INX CPX #$0012 ; #$0012 = 18 BNE $A33F LC2A34F: LDA $C0E7D4,X AND #$00FF PLP RTS LDA $4B REP #$20 ; A = 16bit AND #$000F ASL TAX LDA $C0F592,X STA $49 ; 一時変数 相手アドレスへのインデックス JMP $A4F0 JSR $E0B0 ; LDA $54 ; 一時変数 防御力(下位) REP #$20 ; A = 16bit AND #$007F ASL ASL BRA $A386 JSR $E0B8 ; LDA $54 ; 一時変数 防御力(下位) REP #$20 ; A = 16bit AND #$007F ASL ASL INC INC LC2A386: TAX LDA $C0E724,X STA $C7 LDA $8E SEP #$20 ; A = 8bit JMP ($01C7) ;-------------------------------- ; ;-------------------------------- LC2A394: PHP REP #$20 ; A = 16bit LDX #$0500 ; #$0500 = 1280 LDY #$2000 ; #$2000 = 8192 LDA #$05FF ; #$05FF = 1535 MVN $7E,$7E LDX #$0159 ; #$0159 = 345 LDY #$2600 ; #$2600 = 9728 LDA #$0011 ; #$0011 = 17 MVN $7E,$7E LDA $35 AND #$0007 ASL ASL TAX LDA $C0E841,X STA $46 LDA $C0E843,X SEP #$20 ; A = 8bit STA $48 ; 一時変数 相手の番号(0〜3: 味方, 4〜: 敵) XBA AND #$0F TSB $45 REP #$20 ; A = 16bit LDX #$E8DF ; #$E8DF = 59615 LDY #$08F7 ; #$08F7 = 2295 LDA #$0013 ; #$0013 = 19 MVN $7E,$C0 SEP #$20 ; A = 8bit LDA #$E0 ; #$E0 = 224 STA $0840 LDA #$64 ; #$64 = 100 STA $0841 LDA #$04 ; #$04 = 4 STA $0842 LDA #$05 ; #$05 = 5 TRB $0973 LDA #$06 ; #$06 = 6 STA $08F3 LDA #$40 ; #$40 = 64 TRB $0500 STZ $051A LDX $8E LC2A3FD: LDA $C0E8F8,X BEQ $A40F XBA LDA #$01 ; #$01 = 1 XBA PHX JSR $E2CE ; PLX INX BRA $A3FD LC2A40F: STZ $7E JSR $D4C5 ; JSR $DAA4 ; REP #$20 ; A = 16bit LDA $35 AND #$0007 TAX SEP #$20 ; A = 8bit LDA $C0E8F0,X STA $D8 JSR $E47D ; LDA $DA STA $053A ; ジョブレベル LDA $D8 STA $0501 LDX $DC STX $053B ; アビリティポイント JSR $EB82 ; JSR $E6D6 ; PLP RTS REP #$20 ; A = 16bit LDX #$2000 ; #$2000 = 8192 LDY #$0500 ; #$0500 = 1280 LDA #$05FF ; #$05FF = 1535 MVN $7E,$7E LDX #$2600 ; #$2600 = 9728 LDY #$0159 ; #$0159 = 345 LDA #$0011 ; #$0011 = 17 MVN $7E,$7E JMP $A02D JSR $E4DF ; LDA $7604,X BRA $A47C JSR $E4DF ; LDA $7605,X BRA $A47C JSR $E4DF ; LDA $7606,X BRA $A47C JSR $E4DF ; LDA $7607,X LC2A47C: PEA $7E7E PLB PLB JSR $E0A8 ; SEP #$20 ; A = 8bit STZ $4F ; 一時変数 回避率 STA $56 ; 一時変数 命中判定用? (0であれば命中) JSR $E4E1 ; LDA $7601,X STA $58 ; 一時変数 汎用データ2 LDA $7600,X STA $57 ; 一時変数 汎用データ1 BMI $A4BB CMP $54 ; 一時変数 防御力(下位) BEQ $A4A1 LDA #$40 ; #$40 = 64 TSB $4F ; 一時変数 回避率 LC2A4A1: LDA $53 ; 一時変数 倍率(上位) STA $50 ; 一時変数 攻撃力(下位) LDA $54 ; 一時変数 防御力(下位) STA $51 ; 一時変数 攻撃力(上位) LDA $55 ; 一時変数 防御力(上位) STA $52 ; 一時変数 倍率(下位) LDA $56 ; 一時変数 命中判定用? (0であれば命中) STA $53 ; 一時変数 倍率(上位) LDA $57 ; 一時変数 汎用データ1 STA $54 ; 一時変数 防御力(下位) LDA $58 ; 一時変数 汎用データ2 STA $55 ; 一時変数 防御力(上位) BRA $A4BF LC2A4BB: LDA #$80 ; #$80 = 128 TSB $4F ; 一時変数 回避率 LC2A4BF: BIT $4F ; 一時変数 回避率 BMI $A4C7 BVS $A4D1 BRA $A4E5 LC2A4C7: LDX #$E63A ; #$E63A = 58938 LDA $57 ; 一時変数 汎用データ1 JSR $A4F3 ; BRA $A4E5 LC2A4D1: LDX #$E6AF ; #$E6AF = 59055 LDA $51 ; 一時変数 攻撃力(上位) JSR $A4F3 ; BIT $4F ; 一時変数 回避率 BVC $A4E5 LDX #$E652 ; #$E652 = 58962 LDA $54 ; 一時変数 防御力(下位) JSR $A4F3 ; LC2A4E5: LDX #$E6E8 ; #$E6E8 = 59112 LDA $54 ; 一時変数 防御力(下位) JSR $A4F3 ; JSR $E6AB ; LC2A4F0: JMP $A2E9 ; ;-------------------------------- ; ;-------------------------------- LC2A4F3: SEP #$20 ; A = 8bit STA $E0 LDY $8E LC2A4F9: LDA $C00000,X BEQ $A516 CMP $E0 BEQ $A508 INX INX INX BRA $A4F9 LC2A508: REP #$20 ; A = 16bit LDA $C00001,X STA $C7 PER $C2A515 JMP ($01C7) LC2A516: SEP #$20 ; A = 8bit RTS JSR $A55F ; BCS $A549 LDY $8E LC2A520: LDA $29AC,Y CLC ADC $6B TAX LDA $7A00,X ; FILEPOS_MONMAP AND #$00FF LDX $29B0,Y JSR $D8E4 ; INY INY CPY #$0004 ; #$0004 = 4 BNE $A520 JSR $E367 ; JSR $FE05 ; JSR $E66F ; JSR $FC2F ; JSR $A54A ; LC2A549: RTS ;-------------------------------- ; ;-------------------------------- LC2A54A: SEP #$20 ; A = 8bit LDA $58 ; 一時変数 汎用データ2 CMP #$03 ; #$03 = 3 BMI $A55E LSR AND #$02 DEC CLC ADC $53 ; 一時変数 倍率(上位) STA $53 ; 一時変数 倍率(上位) JSR $E6AB ; LC2A55E: RTS ;-------------------------------- ; ;-------------------------------- LC2A55F: SEP #$20 ; A = 8bit LDA $7512 BNE $A5B3 REP #$20 ; A = 16bit LDA $58 ; 一時変数 汎用データ2 AND #$0007 DEC AND #$0001 ASL TAY LDX $298A,Y LDY #$29A0 ; #$29A0 = 10656 LDA #$0015 ; #$0015 = 21 MVN $7E,$C0 LDA $6B CLC ADC $29A0 BMI $A5B3 CMP $6D BEQ $A58D BCS $A5B3 LC2A58D: STA $6B SEP #$20 ; A = 8bit LDA #$01 ; #$01 = 1 STA $7512 STZ $7528 REP #$20 ; A = 16bit LDX $29A6 ; ブロック転送命令用(X) LDY $29A8 ; ブロック転送命令用(Y) LDA $29AA ; ブロック転送命令用(A) BPL $A5AE AND #$7FFF MVN $7E,$7E BRA $A5B1 LC2A5AE: MVP $7E,$7E LC2A5B1: CLC RTS LC2A5B3: SEC RTS SEP #$20 ; A = 8bit LDA $6F BNE $A5E1 LDA $53 ; 一時変数 倍率(上位) STA $50 ; 一時変数 攻撃力(下位) LDA $54 ; 一時変数 防御力(下位) STA $51 ; 一時変数 攻撃力(上位) LDA $55 ; 一時変数 防御力(上位) STA $52 ; 一時変数 倍率(下位) LDX $8E LC2A5C9: LDA $7A00,X ; FILEPOS_MONMAP BMI $A5D6 INX CPX #$0017 ; #$0017 = 23 BPL $A5DC BRA $A5C9 LC2A5D6: DEX TXA AND #$1F STA $53 ; 一時変数 倍率(上位) LC2A5DC: JSR $E6AB ; BRA $A5E5 LC2A5E1: LDA $53 ; 一時変数 倍率(上位) STA $50 ; 一時変数 攻撃力(下位) LC2A5E5: RTS LDA $70 AND #$00FF BNE $A600 JSR $A55F ; BCS $A600 JSR $A607 ; JSR $FE05 ; JSR $E66F ; JSR $FC2F ; BRA $A606 LC2A600: SEP #$20 ; A = 8bit LDA $53 ; 一時変数 倍率(上位) STA $50 ; 一時変数 攻撃力(下位) LC2A606: RTS ;-------------------------------- ; ;-------------------------------- LC2A607: LDA $29AC CLC ADC $6B TAX LDY $29B0 JSR $E3E3 ; JSR $E367 ; RTS LDA $2802 BPL $A61E RTS LC2A61E: LDA $2814 ; ルーチンアドレス×19 AND #$FF BRK $85 STA $A5 CLI AND #$0F BRK $3A TAX SEP #$20 ; A = 8bit LDA $C0F3C1,X CLC ADC $85 CMP $2813 BMI $A642 BEQ $A642 LDA $2813 BRA $A648 LC2A642: CMP #$01 ; #$01 = 1 BPL $A648 LDA #$01 ; #$01 = 1 LC2A648: STA $2814 JSR $F0E6 ; SEP #$20 ; A = 8bit LDX #$2821 ; #$2821 = 10273 LDY #$2819 ; #$2819 = 10265 JSR $EEC8 ; BCS $A65F LC2A65B: LDA $85 BRA $A648 LC2A65F: LDA $2804 BMI $A671 LDX #$2815 ; #$2815 = 10261 LDY #$2819 ; #$2819 = 10265 JSR $EEC8 ; BCC $A65B BRA $A671 LC2A671: REP #$20 ; A = 16bit JSR $A67A ; JSR $A693 ; RTS ;-------------------------------- ; ;-------------------------------- LC2A67A: LDX #$42A4 ; #$42A4 = 17060 LDY #$2819 ; #$2819 = 10265 LDA #$7E73 ; #$7E73 = 32371 JSR $E4ED ; LDX #$429A ; #$429A = 17050 LDY #$2814 ; #$2814 = 10260 LDA #$7E21 ; #$7E21 = 32289 JSR $E4ED ; RTS ;-------------------------------- ; ;-------------------------------- LC2A693: LDX #$F3F9 ; #$F3F9 = 62457 BRA $A6A0 ; ;-------------------------------- ; ;-------------------------------- LC2A698: LDX #$F402 ; #$F402 = 62466 BRA $A6A0 ; ;-------------------------------- ; ;-------------------------------- LC2A69D: LDX #$F40B ; #$F40B = 62475 ;-------------------------------- ; ;-------------------------------- LC2A6A0: REP #$20 ; A = 16bit LDY #$7514 ; #$7514 = 29972 LDA #$0008 ; #$0008 = 8 MVN $7E,$C0 SEP #$20 ; A = 8bit LDA #$01 ; #$01 = 1 STA $7511 JSR $E66F ; JSR $FC2F ; RTS JSR $A55F ; BCS $A6DD PHP SEP #$20 ; A = 8bit LDA $29A3 STA $7528 PLP JSR $A6DE ; JSR $FE05 ; JSR $E66F ; JSR $FC2F ; JSR $E66F ; JSR $FC2F ; JSR $A54A ; LC2A6DD: RTS ;-------------------------------- ; ;-------------------------------- LC2A6DE: LDA $29AC CLC ADC $6B TAX LDY $29B0 JSR $E3F3 ; LDA $29AE CLC ADC $6B TAX LDY $29B2 JSR $E3F3 ; JSR $E367 ; RTS LDA $2B66 TAY LC2A700: LDA $58 ; 一時変数 汎用データ2 DEC AND #$03 BRK $0A TAX LDA $C0F3AB,X STZ $2B6E SEP #$20 ; A = 8bit LDX $8E LC2A713: CLC ADC $2B66,X JSR $A780 ; STA $2B66,X XBA INX CPX #$0002 ; #$0002 = 2 BNE $A713 LDA $2B67 STA $004202 ; 乗算器(8bit×8bit) 被乗数 LDA $2B68 STA $004203 ; 乗算器(8bit×8bit) 乗数 NOP NOP NOP NOP LDA $004216 ; 乗算結果(下位) or 除算余剰結果 CLC ADC $2B66 REP #$20 ; A = 16bit AND #$00FF TAX LDA $7A00,X ; FILEPOS_MONMAP AND #$00FF CMP #$00FF ; #$00FF = 255 BEQ $A700 TXA INC SEP #$20 ; A = 8bit LDX $2B6A STA $7601,X LDA $2B66 AND #$0F TAX LDA $2B67 AND #$0F TAY SEP #$20 ; A = 8bit LDA $2B70,X LDX $2B6A STA $7602,X LDA $2B80,Y STA $7603,X JSR $E6AB ; BRA $A77F TYA STA $2B66 LC2A77F: RTS ;-------------------------------- ; ;-------------------------------- LC2A780: BPL $A794 BIT $2B6C,X BPL $A78E INC $2B6E,X LDA #$00 ; #$00 = 0 BRA $A79B LC2A78E: LDA $2B68,X DEC BRA $A79B LC2A794: CMP $2B68,X BMI $A79B LDA #$00 ; #$00 = 0 LC2A79B: RTS LDA $55 ; 一時変数 防御力(上位) AND #$FF BRK $3A TAX LDA $58 ; 一時変数 汎用データ2 AND #$FF BRK $3A DEC SEP #$20 ; A = 8bit CLC ADC $2C9C,X BMI $A7BD CMP $C0F076,X BMI $A7BF LDA $2C9C,X BRA $A7BF LC2A7BD: LDA #$00 ; #$00 = 0 LC2A7BF: STA $2C9C,X STX $2C94 CPX #$000A ; #$000A = 10 BMI $A7CF CPX #$000D ; #$000D = 13 BMI $A7DC LC2A7CF: JSR $F7A6 ; LDA $54 ; 一時変数 防御力(下位) CMP #$21 ; #$21 = 33 BEQ $A7F5 CMP #$22 ; #$22 = 34 BEQ $A7ED LC2A7DC: JSR $F810 ; JSR $F71C ; JSR $D447 ; JSR $A698 ; JSR $FAF0 ; BRA $A7FB LC2A7ED: REP #$20 ; A = 16bit LDA #$B77A ; #$B77A = 46970 JSR $C1B8 ; LC2A7F5: JSR $A693 ; JSR $F71C ; LC2A7FB: RTS SEP #$20 ; A = 8bit STZ $750F STZ $751E JSR $C0E2 ; LDA $59 ; 一時変数 汎用データ3 STA $53 ; 一時変数 倍率(上位) LDA #$02 ; #$02 = 2 TRB $7500 LDA #$08 ; #$08 = 8 TRB $7509 LDA #$04 ; #$04 = 4 TSB $CA JSR $E6AB ; RTS STZ $6F SEP #$20 ; A = 8bit LDA $50 ; 一時変数 攻撃力(下位) STA $59 ; 一時変数 汎用データ3 RTS STZ $6F SEP #$20 ; A = 8bit LDA #$02 ; #$02 = 2 TSB $7500 LDA #$08 ; #$08 = 8 TSB $7509 LDA #$04 ; #$04 = 4 TSB $CA JSR $E67C ; JSR $E6AB ; JSR $A85A ; LDX #$ADC7 ; #$ADC7 = 44487 JSR $A8F0 ; RTS ;-------------------------------- ; ;-------------------------------- LC2A848: PHP REP #$20 ; A = 16bit LDA $55 ; 一時変数 防御力(上位) AND #$000F DEC ASL TAX LDA $C0EA64,X TAX PLP RTS ;-------------------------------- ; ;-------------------------------- LC2A85A: JSR $A848 ; BIT $0500,X BVC $A877 LDA $55 ; 一時変数 防御力(上位) CMP #$D004 ; #$D004 = 53252 PHP DEC $53 ; 一時変数 倍率(上位) DEC $53 ; 一時変数 倍率(上位) DEC $53 ; 一時変数 倍率(上位) DEC $53 ; 一時変数 倍率(上位) INC $53 ; 一時変数 倍率(上位) JSR $E6AB ; BRA $A85A ; LC2A877: RTS ;-------------------------------- ; ;-------------------------------- LC2A878: LDA $53 ; 一時変数 倍率(上位) AND #$8503 CPX #$50A5 ; #$50A5 = 20645 AND #$1A03 AND #$C503 CPX #$04F0 ; #$04F0 = 1264 LDA #$80FF ; #$80FF = 33023 COP $A9 ORA ($85,X) SEP #$60 ; A = 8bit ;-------------------------------- ; ;-------------------------------- LC2A892: PHP SEP #$20 ; A = 8bit JSR $A878 ; LC2A898: JSR $A848 ; BIT $0500,X BVC $A8BF LDA $55 ; 一時変数 防御力(上位) CLC ADC $E2 BEQ $A8AF CMP #$05 ; #$05 = 5 BEQ $A8B3 LDA $E2 BRA $A8B5 LC2A8AF: LDA #$03 ; #$03 = 3 BRA $A8B5 LC2A8B3: LDA #$FD ; #$FD = 253 LC2A8B5: CLC ADC $53 ; 一時変数 倍率(上位) STA $53 ; 一時変数 倍率(上位) JSR $E6AB ; BRA $A898 LC2A8BF: PLP RTS SEP #$20 ; A = 8bit LDA $6F BNE $A8CA JSR $A892 ; LC2A8CA: RTS ;-------------------------------- ; ;-------------------------------- LC2A8CB: LDA $50 ; 一時変数 攻撃力(下位) STA $53 ; 一時変数 倍率(上位) JSR $E6AB ; RTS SEP #$20 ; A = 8bit LDA $6F BEQ $A8E2 JSR $A8CB ; LDA #$40 ; #$40 = 64 TRB $4F ; 一時変数 回避率 BRA $A8EF LC2A8E2: LDX #$ADD8 ; #$ADD8 = 44504 JSR $A8F0 ; STZ $7510 LDA $50 ; 一時変数 攻撃力(下位) STA $5A ; 一時変数? LC2A8EF: RTS ;-------------------------------- ; ;-------------------------------- LC2A8F0: REP #$20 ; A = 16bit TXA JSR $C1B8 ; JSR $A693 ; RTS LDA $59 ; 一時変数 汎用データ3 JSR $C0C0 ; SEP #$20 ; A = 8bit LDA #$01 ; #$01 = 1 STA $7510 JSR $E67C ; LDA $53 ; 一時変数 倍率(上位) AND #$03 ORA #$0C STA $53 ; 一時変数 倍率(上位) JSR $E6AB ; JSR $A85A ; RTS JSR $A892 ; RTS SEP #$20 ; A = 8bit LDA $50 ; 一時変数 攻撃力(下位) AND #$0B STA $5A ; 一時変数? RTS JSR $D717 ; JSR $A698 ; LDA #$02 ; #$02 = 2 TSB $7500 LDA #$04 ; #$04 = 4 TSB $CA RTS LDA $55 ; 一時変数 防御力(上位) AND #$00FF DEC TAX SEP #$20 ; A = 8bit LDA $2B5F,X BEQ $A947 LDA $50 ; 一時変数 攻撃力(下位) STA $53 ; 一時変数 倍率(上位) LC2A947: RTS SEP #$20 ; A = 8bit LDA $50 ; 一時変数 攻撃力(下位) STA $60 ; 一時変数 魔法剣フラグ LDA #$02 ; #$02 = 2 TRB $7500 LDA #$04 ; #$04 = 4 TSB $CA RTS LDA #$62 ; #$62 = 98 LDX $B820 CMP ($20,X) ADC [$E3] JSR $A698 ; RTS JSR $D760 ; JSR $A698 ; RTS STZ $6F RTS LDA $55 ; 一時変数 防御力(上位) AND #$00FF DEC TAX SEP #$20 ; A = 8bit LDA $6F BNE $A98E LDA $7A00,X ; FILEPOS_MONMAP BPL $A992 LDA $53 ; 一時変数 倍率(上位) SEC SBC $50 ; 一時変数 攻撃力(下位) CMP #$01 ; #$01 = 1 BNE $A98E STZ $53 ; 一時変数 倍率(上位) BRA $A992 LC2A98E: LDA $50 ; 一時変数 攻撃力(下位) STA $53 ; 一時変数 倍率(上位) LC2A992: JSR $E6AB ; REP #$20 ; A = 16bit LDA $52 ; 一時変数 倍率(下位) AND #$00FF DEC ASL ASL TAY ASL TAX SEP #$20 ; A = 8bit LDA $0293,X AND #$F1 ORA #$0C STA $0293,X STA $0297,X LDA $0363,Y AND #$F1 ORA #$0C STA $0363,Y STA $0363,Y JSR $CD57 ; LDA #$01 ; #$01 = 1 STA $7511 JSR $FAD4 ; JSR $FAF0 ; JSR $E66F ; JSR $A9D9 ; JSR $CD08 ; JSR $A69D ; RTS ;-------------------------------- ; ;-------------------------------- LC2A9D9: PHP REP #$20 ; A = 16bit LDA #$AF1A ; #$AF1A = 44826 JSR $C1B8 ; LDA $55 ; 一時変数 防御力(上位) AND #$00FF DEC TAX LDA $7A00,X ; FILEPOS_MONMAP AND #$001F ASL TAX LDA $D17140,X ; アドレス×133 STA $2CEB JSR $DA16 ; PLP RTS LDA #$B036 ; #$B036 = 45110 JSR $C1B8 ; LDA #$0002 ; #$0002 = 2 TSB $7500 LDA #$0004 ; #$0004 = 4 TSB $CA JSR $A693 ; RTS STZ $6F SEP #$20 ; A = 8bit LDA #$02 ; #$02 = 2 TSB $7500 LDA #$04 ; #$04 = 4 TSB $CA LDA $74 CMP #$04 ; #$04 = 4 BEQ $AA29 CMP #$03 ; #$03 = 3 BEQ $AA2E LC2AA29: LDX #$B065 ; #$B065 = 45157 BRA $AA31 LC2AA2E: LDX #$B07D ; #$B07D = 45181 LC2AA31: JSR $A8F0 ; RTS JSR $E367 ; JSR $A698 ; STZ $72 STZ $73 LDA #$08 ; #$08 = 8 TSB $7500 LDA #$0C ; #$0C = 12 TSB $7502 LDA #$04 ; #$04 = 4 TSB $CA RTS STZ $0208 STZ $020A LDA #$FA ; #$FA = 250 LDA $C1B820 JSR $A698 ; STZ $70 LDA #$08 ; #$08 = 8 TRB $7500 LDA #$0C ; #$0C = 12 TRB $7502 LDA #$04 ; #$04 = 4 TSB $CA RTS LDA $55 ; 一時変数 防御力(上位) AND #$00FF DEC CLC ADC $6B TAX SEP #$20 ; A = 8bit LDA $7A00,X ; FILEPOS_MONMAP BEQ $AA84 JSR $AA89 ; BRA $AA88 LC2AA84: LDA $50 ; 一時変数 攻撃力(下位) STA $53 ; 一時変数 倍率(上位) LC2AA88: RTS ;-------------------------------- ; ;-------------------------------- LC2AA89: STA $72 JSR $E0F7 ; LDA $90 BNE $AAAF JSR $E178 ; JSR $E211 ; LDA $73 JSR $E286 ; LDA $90 BNE $AAAF JSR $E1A6 ; JSR $E7B3 ; JSR $E7CC ; JSR $CBF8 ; BRA $AAB7 LC2AAAF: REP #$20 ; A = 16bit LDA #$B005 ; #$B005 = 45061 JSR $C1B8 ; LC2AAB7: JSR $A698 ; RTS LDA #$B26A ; #$B26A = 45674 JSR $C1B8 ; LDA #$0004 ; #$0004 = 4 JSR $EEE7 ; JSR $A16E ; JSR $FAD4 ; JSR $E66F ; RTS SEP #$20 ; A = 8bit LDA $2801 AND #$07 BNE $AAE8 LDA $53 ; 一時変数 倍率(上位) CMP #$01 ; #$01 = 1 BNE $AAE8 LDA $50 ; 一時変数 攻撃力(下位) AND #$03 EOR #$02 STA $53 ; 一時変数 倍率(上位) LC2AAE8: RTS LDA #$42 ; #$42 = 66 LDA ($20) CLV CMP ($E2,X) JSR $01AD PLP AND #$03 CMP #$03 ; #$03 = 3 BNE $AB01 STZ $2886 REP #$20 ; A = 16bit BRA $AB0F LC2AB01: REP #$20 ; A = 16bit JSR $EF89 ; JSR $EF16 ; LDA #$B25F ; #$B25F = 45663 JSR $C1B8 ; LC2AB0F: JSR $F10E ; LDA #$0000 ; #$0000 = 0 JSR $EEE7 ; RTS LDA #$B254 ; #$B254 = 45652 JSR $C1B8 ; RTS JSR $AB36 ; LDA $2801 AND #$C903 ORA $F0,S ORA #$8920 SBC $EF1620 JSR $FAD4 ; RTS ;-------------------------------- ; ;-------------------------------- LC2AB36: LDA $55 ; 一時変数 防御力(上位) AND #$000F DEC TAX SEP #$20 ; A = 8bit LDA $2826,X BNE $AB4B JSR $A8CB ; LDA #$01 ; #$01 = 1 TRB $CA LC2AB4B: RTS ;-------------------------------- ; ;-------------------------------- LC2AB4C: JSR $A67A ; LDX #$435A ; #$435A = 17242 LDY #$2811 ; #$2811 = 10257 JSR $E4ED ; LDX #$43DA ; #$43DA = 17370 LDY #$2812 ; #$2812 = 10258 JSR $E4ED ; LDA #$E0 ; #$E0 = 224 LDA ($20),Y CLV CMP ($AD,X) BPL $AB92 AND #$FF BRK $0A TAX LDA $D14000,X ; FILEPOS_ITEMMES_ADDR STA $2CEB JSR $DA16 ; SEP #$20 ; A = 8bit LDA $2809 LDY #$4286 ; #$4286 = 17030 JSR $E44E ; LDA #$02 ; #$02 = 2 TSB $7500 LDA #$04 ; #$04 = 4 TSB $CA JSR $A693 ; RTS JSR $AB4C ; LDA #$05 ; #$05 = 5 JSR $EEE7 ; LDA $2886 STA $750F RTS ;-------------------------------- ; ;-------------------------------- LC2ABA0: SEP #$20 ; A = 8bit LDA #$02 ; #$02 = 2 TRB $7500 LDA #$04 ; #$04 = 4 TSB $CA STZ $750F STZ $751E RTS JSR $ABA0 ; LDA $2807 CLC ADC #$03 ; #$03 = 3 STA $53 ; 一時変数 倍率(上位) JSR $E6AB ; RTS LDA #$75 ; #$75 = 117 LDA ($20) CLV CMP ($20,X) ASL $A9F1 BRK $00 JSR $EEE7 ; RTS LDA #$54 ; #$54 = 84 LDA ($20) CLV CMP ($20,X) TYA LDX $60 ; 一時変数 魔法剣フラグ JSR $AB36 ; RTS LDA #$A9 ; #$A9 = 169 LDA ($20,S),Y CLV CMP ($20,X) TYA LDX $A9 PHP TRB $7506 LDA #$04 ; #$04 = 4 TSB $CA RTS SEP #$20 ; A = 8bit LDA $2D15 BEQ $ABFD LDA $50 ; 一時変数 攻撃力(下位) STA $53 ; 一時変数 倍率(上位) LC2ABFD: JSR $A698 ; RTS JSR $AC0E ; LDA #$08 ; #$08 = 8 TSB $7506 LDA #$04 ; #$04 = 4 TSB $CA RTS ;-------------------------------- ; ;-------------------------------- LC2AC0E: LDA #$B4 ; #$B4 = 180 LDA ($20,S),Y CLV CMP ($20,X) LDA $20C7,X STA $20A6,X ADC [$E3] RTS JSR $AC90 ; SEP #$20 ; A = 8bit STZ $29A3 STZ $7528 JSR $AC5E ; JSR $A698 ; LDA $2889 BEQ $AC5D LDA $6F REP #$20 ; A = 16bit AND #$00FF SEC SBC $6B BMI $AC55 CMP #$0016 ; #$0016 = 22 BPL $AC55 CLC ADC #$0004 ; #$0004 = 4 JSR $C0C9 ; SEP #$20 ; A = 8bit LDA #$01 ; #$01 = 1 STA $7510 BRA $AC5D LC2AC55: JSR $C0E2 ; SEP #$20 ; A = 8bit STZ $7510 LC2AC5D: RTS ;-------------------------------- ; ;-------------------------------- LC2AC5E: PHP REP #$20 ; A = 16bit LDA #$B3A9 ; #$B3A9 = 45993 JSR $C1B8 ; LDA $55 ; 一時変数 防御力(上位) AND #$00FF DEC CLC ADC $6B TAX SEP #$20 ; A = 8bit LDA $7A00,X ; FILEPOS_MONMAP BEQ $AC8E LDA $288A,X BEQ $AC8E REP #$20 ; A = 16bit AND #$007F ASL TAX LDA $D14000,X ; FILEPOS_ITEMMES_ADDR STA $2CEB JSR $DA16 ; LC2AC8E: PLP RTS ;-------------------------------- ; ;-------------------------------- LC2AC90: LDA $08 AND #$1000 BEQ $ACC2 LDA $4B AND #$0007 CMP #$0003 ; #$0003 = 3 BEQ $ACAB CMP #$0004 ; #$0004 = 4 BNE $ACC2 LDA #$0016 ; #$0016 = 22 BRA $ACAE LC2ACAB: LDA #$FFEA ; #$FFEA = 65514 LC2ACAE: CLC ADC $6B BPL $ACB5 LDA $8E LC2ACB5: CMP $6D BMI $ACBD BEQ $ACBD LDA $6D LC2ACBD: STA $6B JSR $AC0E ; LC2ACC2: RTS LDA #$B434 ; #$B434 = 46132 JSR $C1B8 ; JSR $A693 ; JSR $A69D ; LDX $7E LDA $63,X STA $53 ; 一時変数 倍率(上位) RTS LDA #$B499 ; #$B499 = 46233 JSR $C1B8 ; LDA #$B4A4 ; #$B4A4 = 46244 JSR $C1B8 ; LDA $7E29E2 AND #$0007 ASL TAX LDA $C0F3B3,X JSR $C1B8 ; JSR $A693 ; JSR $A698 ; LDX $7E LDA $50 ; 一時変数 攻撃力(下位) STA $63,X RTS LDA #$B3FE ; #$B3FE = 46078 JSR $C1B8 ; JSR $DE3E ; JSR $DF4D ; JSR $A69D ; LDA $54 ; 一時変数 防御力(下位) CMP #$D013 ; #$D013 = 53267 AND $AD,S SEP #$29 ; A = 8bit CMP #$04 ; #$04 = 4 BEQ $AD37 LDX $7E LDA $0973 AND #$04 BNE $AD28 LC2AD24: LDA #$07 ; #$07 = 7 STA $67,X LC2AD28: LDA $67,X CMP #$07 ; #$07 = 7 BMI $AD24 CMP #$19 ; #$19 = 25 BPL $AD24 STA $53 ; 一時変数 倍率(上位) JSR $E6AB ; LC2AD37: JSR $C6BA ; JSR $A698 ; RTS LDA #$13 ; #$13 = 19 LDY $20,X CLV CMP ($20,X) STA $A5A6,X EOR ($C9),Y ORA ($D0,S),Y ORA $E2AD AND #$C9 TSB $F0 ASL $A6 ROR $50A5,X STA $67,X RTS LDA $29E2 AND #$FF BRK $C9 ASL $00 BEQ $ADAF LDA $55 ; 一時変数 防御力(上位) AND #$FF BRK $3A TAX LDA $7A00,X ; FILEPOS_MONMAP AND #$FF BRK $C9 SBC $31F000,X PHA LDA #$8E ; #$8E = 142 LDY $20,X CLV CMP ($68,X) CMP #$FE ; #$FE = 254 BRK $F0 ORA $FF2948,X BRK $A0 CMP ($60) JSR $E42C ; LDA #$09 ; #$09 = 9 LDY $20,X CLV CMP ($68,X) CLC ADC #$9D ; #$9D = 157 ROL TAY LDX #$60F4 ; #$60F4 = 24820 LDA #$31 ; #$31 = 49 ROR $ED20,X CPX $20 STA $80A6,X ASL $E2 JSR $50A5 ; STA $53 ; 一時変数 倍率(上位) LC2ADAF: RTS LDA #$1E ; #$1E = 30 LDY $20,X CLV CMP ($20,X) ROL $20DE,X EOR $A2DF CPX $A0B8 BRA $AE33 JSR $C1FD ; JSR $A69D ; STZ $2B66 RTS LDA #$29 ; #$29 = 41 LDY $20,X CLV CMP ($A2,X) INC $B8 LDY #$7180 ; #$7180 = 29056 JSR $C1FD ; JSR $A69D ; RTS LDA #$FE ; #$FE = 254 LDA ($20) CLV CMP ($20,X) LDA $20C7,X STA $A9A6,X PHP TSB $7500 LDA #$1C ; #$1C = 28 TSB $7502 LDA #$32 ; #$32 = 50 STA $7505 LDA #$04 ; #$04 = 4 TSB $750E LDA #$04 ; #$04 = 4 TSB $CA LDA $2806 STA $53 ; 一時変数 倍率(上位) JSR $E367 ; LDA #$07 ; #$07 = 7 JSR $EEE7 ; RTS LDA #$10 ; #$10 = 16 LDA ($20,S),Y CLV CMP ($E2,X) JSR $08A9 ; TRB $7500 STZ $7502 STZ $7505 LDA #$04 ; #$04 = 4 TRB $750E LDA #$04 ; #$04 = 4 TSB $CA JSR $A698 ; RTS LDA $55 ; 一時変数 防御力(上位) LC2AE33: AND #$0F BRK $C9 ORA #$00 BEQ $AE40 JSR $F3F6 ; BRA $AE43 LC2AE40: JSR $F450 ; LC2AE43: JSR $FAF0 ; RTS STZ $2B6E RTS SEP #$20 ; A = 8bit LDA $2B6F BEQ $AE5B LDA $2B65 AND #$01 EOR #$01 STA $53 ; 一時変数 倍率(上位) LC2AE5B: RTS JSR $AB4C ; LDA #$08 ; #$08 = 8 JSR $EEE7 ; LDA $2886 STA $750F RTS JSR $ABA0 ; RTS JSR $B2BD ; REP #$20 ; A = 16bit LDX #$0500 ; #$0500 = 1280 LDY #$2000 ; #$2000 = 8192 LDA #$05FF ; #$05FF = 1535 MVN $7E,$7E JSR $BF7D ; TAX LDY #$0500 ; #$0500 = 1280 LDA #$05FF ; #$05FF = 1535 PHB MVN $00,$30 PLB JSR $D230 ; JSR $D3DB ; JSR $D447 ; JSR $A16E ; LDX #$F394 ; #$F394 = 62356 JSR $D04C ; JSR $D4DB ; LDX #$66EE ; #$66EE = 26350 JSR $D658 ; LDX #$6630 ; #$6630 = 26160 LDY #$094A ; #$094A = 2378 JSR $D662 ; LDA #$B5B8 ; #$B5B8 = 46520 JSR $C1B8 ; LDA $43 AND #$00FF CMP #$000C ; #$000C = 12 BEQ $AEC8 LDA #$B5DF ; #$B5DF = 46559 BRA $AECB LC2AEC8: LDA #$B5CF ; #$B5CF = 46543 LC2AECB: JSR $C1B8 ; LDX #$2000 ; #$2000 = 8192 LDY #$0500 ; #$0500 = 1280 LDA #$05FF ; #$05FF = 1535 MVN $7E,$7E SEP #$20 ; A = 8bit JSR $A106 ; LDA $750E STA $00420C LDA $004210 LDA #$81 ; #$81 = 129 STA $004200 LDA #$00 ; #$00 = 0 STA $7522 STA $7525 LDA #$03 ; #$03 = 3 STA $7513 JSR $A698 ; JSR $FAD4 ; JSR $FAF0 ; LDA #$0C ; #$0C = 12 TSB $7500 TSB $7502 LDA #$02 ; #$02 = 2 TRB $7500 LDA #$04 ; #$04 = 4 TSB $CA JSR $A69D ; RTS ;-------------------------------- ; ;-------------------------------- LC2AF1B: PHB PHP LDX #$F384 ; #$F384 = 62340 JSR $D04C ; LDX $8E LC2AF25: LDA $0242,X ORA #$00 JSR $429D ; COP $BD JSL $06F002 ORA #$00 JSR $229D COP $E8 INX INX INX CPX #$0020 ; #$0020 = 32 BNE $AF25 LDA #$0D ; #$0D = 13 LDA $20,X CLV CMP ($A2,X) ROR SBC ($A9,S),Y ORA ($00),Y JSR $DA9D ; STZ $7E LDA $7E ASL TAX LDA $C0F362,X STA $2BBA JSR $DDD7 ; LDA $7E INC STA $7E CMP #$04 ; #$04 = 4 BRK $D0 INX JSR $A693 ; REP #$20 ; A = 16bit JSR $FAD4 ; JSR $FAF0 ; SEP #$20 ; A = 8bit LDA $53 ; 一時変数 倍率(上位) STA $50 ; 一時変数 攻撃力(下位) LDA $55 ; 一時変数 防御力(上位) STA $52 ; 一時変数 倍率(下位) LDA $54 ; 一時変数 防御力(下位) STA $51 ; 一時変数 攻撃力(上位) PLP PLB RTS LDA $71 AND #$0F BRK $85 ROR $C520,X PEI $A9 CLC LDA $20,X CLV CMP ($20,X) STA ($A6,S),Y STZ $7510 REP #$20 ; A = 16bit LDX $8E LC2AFA1: STZ $0200,X INX INX CPX #$0060 ; #$0060 = 96 BNE $AFA1 JSR $FAD4 ; JSR $E66F ; RTS STZ $29EA STZ $29EC STZ $0206 STZ $020A STZ $020E STZ $0212 LDA $55 ; 一時変数 防御力(上位) AND #$00FF CMP #$0005 ; #$0005 = 5 BEQ $AFF4 LC2AFCE: SEP #$20 ; A = 8bit LDA $52 ; 一時変数 倍率(下位) CMP #$05 ; #$05 = 5 BNE $AFDE LDA $29EE STA $53 ; 一時変数 倍率(上位) JSR $D210 ; LC2AFDE: JSR $A892 ; REP #$20 ; A = 16bit LDA $55 ; 一時変数 防御力(上位) AND #$000F DEC TAX SEP #$20 ; A = 8bit INC $29EA,X STZ $7510 BRA $B04E LC2AFF4: SEP #$20 ; A = 8bit LDA $29E6 AND #$20 BNE $B005 JSR $E0C0 ; JSR $A8CB ; BRA $AFCE LC2B005: LDY $8E REP #$20 ; A = 16bit TYA ASL TAX LDA $C0EA64,X TAX LDA $0500,X AND #$0040 BNE $B036 TYA ASL TAX LDA $C0F37C,X PHA TYA ASL ASL TAX PLA STA $0204,X LDA #$2E02 ; #$2E02 = 11778 STA $0206,X SEP #$20 ; A = 8bit LDA #$01 ; #$01 = 1 STA $29EA,Y LC2B036: INY CPY #$04 ; #$04 = 4 BRK $D0 WAI SEP #$20 ; A = 8bit LDA #$05 ; #$05 = 5 STA $7510 LDA $52 ; 一時変数 倍率(下位) CMP #$05 ; #$05 = 5 BEQ $B04E LDA $50 ; 一時変数 攻撃力(下位) STA $29EE LC2B04E: RTS JSR $AF1B ; SEP #$20 ; A = 8bit LDA #$08 ; #$08 = 8 TRB $7500 LDA #$02 ; #$02 = 2 TSB $7500 LDA #$04 ; #$04 = 4 TSB $CA RTS SEP #$20 ; A = 8bit LDA #$08 ; #$08 = 8 TSB $7500 LDA #$02 ; #$02 = 2 TRB $7500 LDA #$04 ; #$04 = 4 TSB $CA REP #$20 ; A = 16bit JSR $AF91 ; RTS LDA #$B7E9 ; #$B7E9 = 47081 JSR $C1B8 ; LDX #$EA04 ; #$EA04 = 59908 LDA #$0009 ; #$0009 = 9 JSR $DA9D ; JSR $F5C0 ; LDX #$B91D ; #$B91D = 47389 LDY #$7080 ; #$7080 = 28800 JSR $C1FD ; LDX #$EA1E ; #$EA1E = 59934 LDY #$0240 ; #$0240 = 576 LDA #$001F ; #$001F = 31 MVN $7E,$C0 STZ $7E LC2B0A2: JSR $D4C5 ; LDY $80 LDA $0500,Y AND #$0040 BEQ $B0C1 LDA $7E ASL ASL ASL TAX STZ $0240,X STZ $0242,X STZ $0244,X STZ $0246,X LC2B0C1: LDA $7E INC STA $7E CMP #$0004 ; #$0004 = 4 BNE $B0A2 STZ $6F STZ $71 LDA #$0020 ; #$0020 = 32 JSR $B154 ; RTS ;-------------------------------- ; ;-------------------------------- LC2B0D6: LDA #$B739 ; #$B739 = 46905 JSR $C1B8 ; JSR $A693 ; LDA #$1C02 ; #$1C02 = 7170 BRK $75 LDA #$1C04 ; #$1C04 = 7172 ORA #$A975 JSR $0E1C ; ADC $A9,X TSB $04 DEX JSR $A16E ; JSR $FAD4 ; JSR $E66F ; LDA #$8F00 ; #$8F00 = 36608 BPL $B121 BRK $8F BPL $B125 BRK $60 ; 一時変数 魔法剣フラグ LDA #$B710 ; #$B710 = 46864 JSR $C1B8 ; LDA #$0014 ; #$0014 = 20 STA $2C94 STZ $7E LC2B114: JSR $D4C5 ; LDY $80 LDA $7E ASL TAX LDA $C0EA8E,X LC2B121: TAX LDA $0500,Y LC2B125: AND #$0040 BNE $B133 TXY JSR $D533 ; JSR $F7A6 ; BRA $B13D LC2B133: TXY LDX #$EA96 ; #$EA96 = 60054 LDA #$0031 ; #$0031 = 49 MVN $7E,$C0 LC2B13D: INC $2C94 INC $7E LDA $7E CMP #$0004 ; #$0004 = 4 BMI $B114 LDA #$0000 ; #$0000 = 0 JSR $B154 ; LDA #$850E ; #$850E = 34062 BVC $B1B4 ;-------------------------------- ; ;-------------------------------- LC2B154: SEP #$20 ; A = 8bit TSB $750E JSR $A693 ; LDA #$02 ; #$02 = 2 TSB $7500 LDA #$04 ; #$04 = 4 TSB $7509 LDA #$04 ; #$04 = 4 TSB $CA JSR $E66F ; RTS SEP #$20 ; A = 8bit JSR $A878 ; LDA $55 ; 一時変数 防御力(上位) SEC SBC #$15 ; #$15 = 21 STA $7E LC2B17A: JSR $D4C5 ; LDX $80 BIT $0500,X BVC $B18F LDA $7E CLC ADC $E2 AND #$03 STA $7E BRA $B17A LC2B18F: LDA $7E CLC ADC #$0F ; #$0F = 15 STA $53 ; 一時変数 倍率(上位) JSR $E6AB ; RTS ;-------------------------------- ; ;-------------------------------- LC2B19A: LDA #$B740 ; #$B740 = 46912 JSR $C1B8 ; LDX #B935 LDY #$7080 ; #$7080 = 28800 JSR $C1FD ; LDA #$0028 ; #$0028 = 40 STA $2C94 LC2B1AF: JSR $F7A6 ; INC $2C94 LDA $2C94 CMP #$002F ; #$002F = 47 BMI $B1AF LDA #$B77A ; #$B77A = 46970 JSR $C1B8 ; LDA #$0020 ; #$0020 = 32 JSR $B154 ; RTS ;-------------------------------- ; ;-------------------------------- LC2B1CA: SEP #$20 ; A = 8bit LDA $71 AND #$0F BNE $B1D6 LDA $52 ; 一時変数 倍率(下位) STA $71 LC2B1D6: DEC STA $7E JSR $D4C5 ; LDX $80 BIT $0500,X BVC $B1EB JSR $E0C0 ; STZ $71 JSR $A8CB ; LC2B1EB: RTS ;-------------------------------- ; ;-------------------------------- LC2B1EC: LDA #$B3C2 ; #$B3C2 = 46018 JSR $C1B8 ; LDA $2D1B LDY #$4284 ; #$4284 = 17028 JSR $E44E ; JSR $CECC ; STZ $85 LC2B200: LDY $85 LDA $7A00,Y ; FILEPOS_MONMAP AND #$00FF CMP #$00FF ; #$00FF = 255 BEQ $B251 CMP #$0015 ; #$0015 = 21 BEQ $B251 ASL ASL TAX LDA $85 ASL TAY LDA $D15708,X ; FILEPOS_CHRJOBEQUIP AND $2D1D STA $2D21,Y LDA $D1570A,X ; FILEPOS_CHRJOBEQUIP[2] AND $2D1F ORA $2D21,Y PHA TYX LDA $C0E901,X STA $99 LDY $85 LDA $7A00,Y ; FILEPOS_MONMAP AND #$00FF LDY $99 JSR $E4C7 ; PLA BNE $B24D LDA #$0108 ; #$0108 = 264 LDX $99 JSR $D6DC ; LC2B24D: INC $85 BRA $B200 LC2B251: LDA $8E JSR $B154 ; RTS JSR $B0D6 ; RTS ;-------------------------------- ; ;-------------------------------- LC2B25B: JMP $A4F0 ;-------------------------------- ; ;-------------------------------- LC2B25E: LDA $53 ; 一時変数 倍率(上位) STA $59 ; 一時変数 汎用データ3 CMP #$00 ; #$00 = 0 BEQ $B29E CMP #$01 ; #$01 = 1 BEQ $B2B1 CMP #$03 ; #$03 = 3 BEQ $B28A CMP #$04 ; #$04 = 4 BEQ $B28A CMP #$05 ; #$05 = 5 BEQ $B28A CMP #$02 ; #$02 = 2 BEQ $B293 CMP #$07 ; #$07 = 7 BEQ $B28F CMP #$06 ; #$06 = 6 BEQ $B293 BRA $B287 LC2B284: JSR $E0C0 ; LC2B287: JMP $A4F0 LC2B28A: LDA #$0C ; #$0C = 12 JMP $A47C LC2B28F: LDA $44 BPL $B284 LC2B293: JSR $B2BD ; JSR $C0E2 ; LDA $55 ; 一時変数 防御力(上位) JMP $A06B LC2B29E: REP #$20 ; A = 16bit LDA $0840 BNE $B2AD LDA $0842 AND #$00F8 BEQ $B284 LC2B2AD: SEP #$20 ; A = 8bit BRA $B28A LC2B2B1: REP #$20 ; A = 16bit LDA $08F3 ORA $08F5 BNE $B2AD BRA $B284 ;-------------------------------- ; ;-------------------------------- LC2B2BD: SEP #$20 ; A = 8bit LDA #$00 ; #$00 = 0 STA $7E7510 STA $7E750F STA $7E751D STA $7E751E STZ $CA LDA #$04 ; #$04 = 4 STA $7E7513 LC2B2D9: JSR $E66F ; JSR $FC2F ; LDA $7E7513 BNE $B2D9 LDA #$01 ; #$01 = 1 STA $004200 JSR $A106 ; LDA #$00 ; #$00 = 0 STA $00420C LDA #$80 ; #$80 = 128 STA $002100 RTS ;-------------------------------- ; ;-------------------------------- LC2B2FB: LDA $53 ; 一時変数 倍率(上位) STA $59 ; 一時変数 汎用データ3 JMP $A02D ;-------------------------------- ; ;-------------------------------- LC2B302: LDA $6F BNE $B317 LDA $55 ; 一時変数 防御力(上位) STA $6F LDA $53 ; 一時変数 倍率(上位) JSR $C0C4 ; LDA #$01 ; #$01 = 1 STA $7510 JMP $A4F0 LC2B317: LDA $55 ; 一時変数 防御力(上位) STA $70 CMP $6F BNE $B345 DEC STA $7E JSR $D4C5 ; LDX $80 LDA $0500,X EOR #$80 STA $0500,X LDX #$F394 ; #$F394 = 62356 JSR $D04C ; JSR $E6AB ; JSR $C0E2 ; STZ $6F SEP #$20 ; A = 8bit STZ $7510 JMP $A4F0 LC2B345: DEC $6F DEC $70 STZ $7510 REP #$20 ; A = 16bit LDA $6F JSR $B3E9 ; LDA $70 JSR $B3E9 ; JSR $FAD4 ; JSR $E66F ; PHB SEP #$20 ; A = 8bit LDA #$C0 ; #$C0 = 192 PHA PLB REP #$20 ; A = 16bit LDA $6F AND #$0003 ASL TAX LDA $70 AND #$0003 ASL TAY LDA $EFFB,X STA $E0 LDA $EFFB,Y STA $E2 LDA #$F053 ; #$F053 = 61523 STA $E4 LC2B384: LDA ($E0) TAX LDA ($E2) TAY LDA ($E4) BEQ $B39F JSR $E610 ; INC $E0 INC $E0 INC $E2 INC $E2 INC $E4 INC $E4 BRA $B384 LC2B39F: PLB REP #$20 ; A = 16bit LDA $6F JSR $B3DB ; LDX #$F394 ; #$F394 = 62356 JSR $D04C ; JSR $C0E2 ; LDA $70 JSR $B3DB ; JSR $FAF0 ; JSR $E6AB ; JSR $E66F ; JSR $D4DB ; STZ $CA JSR $A698 ; LDA $6F STA $0000 LDA $70 STA $0001 JSL $C10009 STZ $6F STZ $70 JMP $A4F0 ;-------------------------------- ; ;-------------------------------- LC2B3DB: AND #$0003 ASL TAX LDA $C0F3CD,X TAX JSR $A6A0 ; RTS ;-------------------------------- ; ;-------------------------------- LC2B3E9: AND #$0003 ASL TAX LDA $C0EB08,X TAX STZ $0000,X STZ $0002,X STZ $0004,X STZ $0006,X TXA SEC SBC #$0020 ; #$0020 = 32 TAX STZ $0000,X STZ $0002,X RTS ;-------------------------------- ; ;-------------------------------- LC2B40C: JSR $C0E2 ; STZ $7510 JSR $FAD4 ; LDA $6F BNE $B422 LDA $53 ; 一時変数 倍率(上位) STA $5A ; 一時変数? LDA $59 ; 一時変数 汎用データ3 JMP $A47C LC2B422: STZ $6F STZ $70 JMP $A4F0 ;-------------------------------- ; ;-------------------------------- LC2B429: LDA $55 ; 一時変数 防御力(上位) DEC STA $71 REP #$20 ; A = 16bit AND #$000F ASL TAX LDA $C0EA64,X TAY SEP #$20 ; A = 8bit LDA $59 ; 一時変数 汎用データ3 JSR $E4E1 ; LDA $7601,X CMP #$05 ; #$05 = 5 BEQ $B463 CMP #$02 ; #$02 = 2 BNE $B45C LDA $55 ; 一時変数 防御力(上位) DEC REP #$20 ; A = 16bit AND #$000F TAX SEP #$20 ; A = 8bit LDA $08F3,X BEQ $B47A LC2B45C: LDA $051A,Y AND #$C2 BNE $B47A LC2B463: LDA $53 ; 一時変数 倍率(上位) AND #$0B STA $5A ; 一時変数? JSR $C0E2 ; JSR $B2BD ; LDA $59 ; 一時変数 汎用データ3 JSR $E4E1 ; LDA $7601,X JMP $A06B LC2B47A: JSR $E0C0 ; JMP $A4F0 ;-------------------------------- ; ;-------------------------------- LC2B480: STZ $7510 LDA $53 ; 一時変数 倍率(上位) SEC SBC #$04 ; #$04 = 4 STA $5A ; 一時変数? LDA $59 ; 一時変数 汎用データ3 JMP $A47C ;-------------------------------- ; ;-------------------------------- LC2B48F: LDA $55 ; 一時変数 防御力(上位) CMP #$04 ; #$04 = 4 BEQ $B4A8 ; LDA #$01 ; #$01 = 1 STA $7510 LDA $55 ; 一時変数 防御力(上位) STA $6F LDA $53 ; 一時変数 倍率(上位) JSR $C0C0 ; LDA #$04 ; #$04 = 4 JMP $A47C ;-------------------------------- ; ;-------------------------------- LC2B4A8: LDA $45 BPL $B4B0 AND #$02 BNE $B4D4 LC2B4B0: REP #$20 ; A = 16bit STZ $0200 STZ $0202 JSR $FAD4 ; SEP #$20 ; A = 8bit LDA $2D12 ORA $2D11 BEQ $B4CC JSR $B676 ; LDA #$04 ; #$04 = 4 BRA $B4D1 LC2B4CC: JSR $B2BD ; LDA #$01 ; #$01 = 1 LC2B4D1: JMP $A06B LC2B4D4: JMP $A4F0 ;-------------------------------- ; ;-------------------------------- LC2B4D7: REP #$20 ; A = 16bit LDA $55 ; 一時変数 防御力(上位) AND #$00FF DEC CLC ADC $6B TAX LDY $80 LDA $0501,Y AND #$00FF TAY LDA $6F AND #$00FF CPY #$0014 ; #$0014 = 20 BEQ $B4F7 DEC LC2B4F7: CLC ADC $80 TAY SEP #$20 ; A = 8bit LDA $7A00,X ; FILEPOS_MONMAP STA $0516,Y LDA #$01 ; #$01 = 1 STA $2D12 JSR $E973 ; JSR $CFA4 ; JSR $A698 ; ;-------------------------------- ; ;-------------------------------- LC2B511: JSR $C0E2 ; STZ $7510 LDA $6F DEC STZ $6F STZ $70 JMP $A47C ;-------------------------------- ; ;-------------------------------- LC2B521: LDA $6F BEQ $B528 JMP $B56D LC2B528: LDA $55 ; 一時変数 防御力(上位) STA $6F REP #$20 ; A = 16bit AND #$00FF DEC ASL ASL ASL TAX LDA $0292,X AND #$FE00 STA $0292,X STA $0296,X LDA $0290,X STA $0240 LDA $0294,X STA $0244 LDA #$0B8C ; #$0B8C = 2956 STA $0242 LDA #$0BAC ; #$0BAC = 2988 STA $0246 SEP #$20 ; A = 8bit JSR $FAF0 ; STZ $751E STZ $751D LDA #$01 ; #$01 = 1 STA $750F JMP $A4F0 LC2B56D: LDA $55 ; 一時変数 防御力(上位) STA $70 LDA #$01 ; #$01 = 1 STA $2D11 STZ $750F STZ $751E REP #$20 ; A = 16bit JSR $D503 ; JSR $E464 ; LDA $6F AND #$00FF DEC TAX LDA $7A00,X ; FILEPOS_MONMAP AND #$001F STA $D8 JSR $E47D ; LDY $80 LDA $DC STA $053B,Y ; アビリティポイント LC2B59D: SEP #$20 ; A = 8bit LDA $DA STA $053A,Y ; ジョブレベル LDA $D8 STA $0501,Y REP #$20 ; A = 16bit JSR $CDC6 ; JSR $D45F ; JSR $D298 ; REP #$20 ; A = 16bit STZ $6F STZ $0240 STZ $0242 STZ $0244 STZ $0246 LDA $7E JSR $B3DB ; JSR $CDE3 ; JSR $CD57 ; JSR $FAD4 ; JSR $FAF0 ; JSR $E66F ; STZ $CA JSR $A698 ; JSR $DAA4 ; PHX LDX $7E INC $0420,X PLX JSR $EB82 ; ;-------------------------------- ; ;-------------------------------- LC2B5EA: LDA $6F BNE $B637 LDA $45 BPL $B5F9 AND #$F001 ORA $4C,S BEQ $B59D LC2B5F9: LDA $2D11 BNE $B606 JSR $B2BD ; LDA #$4C01 ; #$4C01 = 19457 RTL LDY #$7EA6 ; #$7EA6 = 32422 LDA $08F3,X BEQ $B62F REP #$20 ; A = 16bit LDA #$AF2B ; #$AF2B = 44843 JSR $C1B8 ; JSR $A693 ; LDA #$02 ; #$02 = 2 TSB $7500 LDA #$04 ; #$04 = 4 TSB $CA LDX #$0028 ; #$0028 = 40 JSR $E65B ; JSR $B2BD ; LDA #$4C02 ; #$4C02 = 19458 RTL LDY #$7620 ; #$7620 = 30240 LDX $A9,Y TSB $4C RTL LDY #$0F9C ; #$0F9C = 3996 ADC $9C,X ASL $C275,X JSR $429C ; COP $9C LSR $02 LDA $6F AND #$00FF DEC TAY LDA $7A00,Y ; FILEPOS_MONMAP AND #$00FF TAX LDA $C0EE6A,X AND #$00FF ORA #$0B00 PHA TYA ASL ASL ASL TAY PLA STA $0292,Y CLC ADC #$0020 ; #$0020 = 32 STA $0296,Y JSR $FAD4 ; STZ $6F JMP $A4F0 ;-------------------------------- ; ;-------------------------------- LC2B676: PHP SEP #$20 ; A = 8bit LDA $0973 AND #$01 REP #$20 ; A = 16bit BNE $B687 LDA #$AEC8 ; #$AEC8 = 44744 BRA $B68A LC2B687: LDA #$AED9 ; #$AED9 = 44761 LC2B68A: JSR $C1B8 ; JSR $A693 ; LDA #$02 ; #$02 = 2 TSB $7500 LDA #$04 ; #$04 = 4 TSB $CA JSR $E658 ; JSR $B2BD ; JSR $DAA4 ; LDX $7E INC $0420,X JSR $E6D6 ; LDA $0973 AND #$D001 ASL $20 LDA $20FA ADC #$28F8 ; #$28F8 = 10488 RTS ;-------------------------------- ; ;-------------------------------- LC2B6B9: LDA $74 CMP #$F003 ; #$F003 = 61443 ORA [$C9] TSB $F0 BMI $B710 BEQ $B66A LDA $55 ; 一時変数 防御力(上位) STA $6F STZ $70 JSR $E178 ; JSR $E211 ; LDA $73 JSR $E286 ; LDA $90 BEQ $B6E0 JSR $E0C0 ; BRA $B6E8 LC2B6E0: LDA #$EB01 ; #$EB01 = 60161 LDA $73 JSR $E2CE ; LC2B6E8: JSR $E18F ; JSR $B7A0 ; STZ $6F JMP $A4F0 LDA $55 ; 一時変数 防御力(上位) STA $6F STZ $70 LDA $6F CMP #$1003 ; #$1003 = 4099 ORA $20 STA [$ED] BRA $B707 JSR $ED5E ; LC2B707: LDX $75 BEQ $B745 JSR $E66F ; JSR $EE94 ; REP #$20 ; A = 16bit LDA $75 SEC SBC #$0009 ; #$0009 = 9 BPL $B71E LDA #$0000 ; #$0000 = 0 LC2B71E: STA $6D STZ $6B JSR $CAA5 ; LDA $6F AND #$00FF DEC JSR $C0C0 ; LDA $0204 STA $0208 LDA $0206 STA $020A JSR $C0E2 ; JSR $A69D ; LDA #$4C0A ; #$4C0A = 19466 JMP ($20A4,X) CPY #$4CE0 ; #$4CE0 = 19680 BEQ $B6EF ;-------------------------------- ; ;-------------------------------- LC2B74B: STZ $6F LDA #$4C05 ; #$4C05 = 19461 JMP ($A5A4,X) EOR $85,X STZ $C9,X TSB $F0 ORA ($C9) ORA $F0,S ASL $02C9 BEQ $B771 CMP #$F001 ; #$F001 = 61441 ASL $C9,X ORA $F0 BIT $2580 ; FILEPOS_ITEMELEM LDA #$4C00 ; #$4C00 = 19456 JMP ($20A4,X) LDY $DA JSR $E66F ; JSR $B7A0 ; BRA $B791 JSR $DAA4 ; JSR $E66F ; JSR $FAAD ; JSR $E66F ; JSR $F869 ; JSR $E66F ; JSR $B7A0 ; LC2B791: LDA #$4C05 ; #$4C05 = 19461 JMP ($20A4,X) LDA $64B2,X STZ $A9,X ORA ($4C,X) RTL LDY #$6C20 ; #$6C20 = 27680 SBC [$20] INY DEX JSR $CC9E ; JSR $A698 ; RTS ;-------------------------------- ; ;-------------------------------- LC2B7AD: JSR $E0F7 ; LDA $90 BNE $B7F6 JSR $E286 ; LDA $90 BNE $B7F6 JSR $E178 ; JSR $E211 ; LDA #$EB01 ; #$EB01 = 60161 LDA $73 JSR $E2CE ; JSR $E1A6 ; LDA #$EB01 ; #$EB01 = 60161 LDA $72 JSR $E328 ; JSR $E18F ; REP #$20 ; A = 16bit LDA #$B005 ; #$B005 = 45061 JSR $C1B8 ; JSR $B7A0 ; STZ $2D11 STZ $2D12 STZ $70 STZ $73 STZ $72 LDA $6F DEC AND #$4C07 JMP ($20A4,X) CPY #$4CE0 ; #$4CE0 = 19680 BEQ $B7A0 ; ;-------------------------------- ; ;-------------------------------- LC2B7FC: REP #$20 ; A = 16bit LDA #$B005 ; #$B005 = 45061 JSR $C1B8 ; JSR $A698 ; STZ $70 LDA $6F DEC AND #$4C07 JMP ($A5A4,X) ADC ($1A),Y AND #$8503 ADC ($85),Y ROR $7F64,X JSR $D4C5 ; LDX $80 LDA $0500,X AND #$D040 SBC #$20C2 ; #$20C2 = 8386 LDA #$B095 ; #$B095 = 45205 JSR $C1B8 ; LDA #$B0D3 ; #$B0D3 = 45267 JSR $C1B8 ; JSR $C8A0 ; JSR $FAD4 ; JSR $A698 ; JSR $A69D ; JMP $A4F0 ;-------------------------------- ; ;-------------------------------- LC2B845: JSR $B2BD ; LDA #$4C01 ; #$4C01 = 19457 RTL LDY #$55A5 ; #$55A5 = 21925 CMP #$F001 ; #$F001 = 61441 PHD CMP #$F002 ; #$F002 = 61442 CLC CMP #$F003 ; #$F003 = 61443 ASL $F04C,X LDY $9C TSB $28 LDA $2802 BMI $B86A LDA #$8003 ; #$8003 = 32771 COP $A9 BPL $B8B9 JMP ($A9A4,X) BRA $B7FF TSB $28 LDA #$4C18 ; #$4C18 = 19480 JMP ($4CA4,X) AND $A5A0 EOR $3A,X STA $2807 STZ $2808 LDX $2807 LDA $2826,X STA $2809 LDA $287E,X STA $2810 REP #$20 ; A = 16bit TXA ASL TAX ASL TAY LDA $284E,X STA $280A LDA $282E,Y STA $280C LDA $2830,Y STA $280E RTS ;-------------------------------- ; ;-------------------------------- LC2B8AE: JSR $B87C ; JSR $F070 ; SEP #$20 ; A = 8bit LDA $2813 LC2B8B9: BEQ $B8D0 LDX #$2815 ; #$2815 = 10261 LDY #$2819 ; #$2819 = 10265 JSR $EEC8 ; BCC $B8DC BIT $2805 BMI $B8FD ;-------------------------------- ; ;-------------------------------- LC2B8CB: LDA #$0B ; #$0B = 11 JMP $A47C LC2B8D0: JSR $E0C0 ; LDA #$03 ; #$03 = 3 JSR $EEE7 ; LDA #$01 ; #$01 = 1 BRA $B8F2 LC2B8DC: JSR $E0C0 ; LDA #$02 ; #$02 = 2 JSR $EEE7 ; LDA $2801 CMP #$03 ; #$03 = 3 BNE $B8F0 JSR $E658 ; BRA $B8F5 LC2B8F0: LDA #$00 ; #$00 = 0 LC2B8F2: JSR $EEFD ; LC2B8F5: LDA #$00 ; #$00 = 0 JSR $EEE7 ; JMP $A4F0 LC2B8FD: LDA #$01 ; #$01 = 1 STA $39 JSR $B922 ; JSR $E0C0 ; REP #$20 ; A = 16bit LDA #$B349 ; #$B349 = 45897 JSR $C1B8 ; JSR $A698 ; LDA #$2000 ; #$2000 = 8192 SBC $20EE,X CLI INC $4C AND $A9A0 BRK $4C JMP ($ADA4,X) ORA $8D28,X ORA $28,X STA $0947 ; 所持金(下位) LDA $281E STA $2816 STA $0948 ; 所持金(中位) LDA $281F STA $2817 STA $0949 ; 所持金(上位) LDA $2814 ; ルーチンアドレス×19 XBA LDA $2809 JSR $E2CE ; RTS ;-------------------------------- ; ;-------------------------------- LC2B948: LDA #$0001 ; #$0001 = 1 JSR $EEE7 ; LDA #$0038 ; #$0038 = 56 JSR $E0D9 ; RTS ;-------------------------------- ; ;-------------------------------- LC2B955: LDX #$2815 ; #$2815 = 10261 LDY #$2819 ; #$2819 = 10265 JSR $EEC8 ; BCC $B97E JSR $B922 ; REP #$20 ; A = 16bit LDX #$51E8 ; #$51E8 = 20968 LDY #$2815 ; #$2815 = 10261 LDA #$7E73 ; #$7E73 = 32371 JSR $E4ED ; JSR $B948 ; JSR $E658 ; SEP #$20 ; A = 8bit LDA #$03 ; #$03 = 3 JMP $A47C LC2B97E: JSR $E0C0 ; LDA #$02 ; #$02 = 2 JSR $EEE7 ; LDA #$00 ; #$00 = 0 JSR $EEFD ; LDA #$00 ; #$00 = 0 JSR $EEE7 ; JMP $A4F0 ;-------------------------------- ; ;-------------------------------- LC2B993: LDA #$03 ; #$03 = 3 JMP $A47C ;-------------------------------- ; ;-------------------------------- LC2B998: JSR $B87C ; JSR $F03E ; SEP #$20 ; A = 8bit LDA $2811 BNE $B9E1 LDX #$2815 ; #$2815 = 10261 LDY #$2819 ; #$2819 = 10265 JSR $EEC8 ; BCC $B9EE LDA $281D STA $2815 STA $0947 ; 所持金(下位) LDA $281E STA $2816 STA $0948 ; 所持金(中位) LDA $281F STA $2817 LC2B9C8: STA $0949 ; 所持金(上位) JSR $EFE3 ; REP #$20 ; A = 16bit LDX #$51E8 ; #$51E8 = 20968 LDY #$2815 ; #$2815 = 10261 LDA #$7E73 ; #$7E73 = 32371 JSR $E4ED ; JSR $B948 ; BRA $B9F9 LC2B9E1: REP #$20 ; A = 16bit JSR $E0C0 ; LDA #$0006 ; #$0006 = 6 JSR $EEE7 ; BRA $B9F9 LC2B9EE: REP #$20 ; A = 16bit JSR $E0C0 ; LDA #$0002 ; #$0002 = 2 JSR $EEE7 ; LC2B9F9: JSR $E658 ; LDA #$0000 ; #$0000 = 0 JSR $EEE7 ; JMP $A4F0 ;-------------------------------- ; ;-------------------------------- LC2BA05: LDA #$4C00 ; #$4C00 = 19456 JMP ($64A4,X) ADC $A97064 BRK $8D BIT #$A528 EOR $C9,X ORA ($F0,X) PHD CMP #$F003 ; #$F003 = 61443 INC CMP #$F004 ; #$F004 = 61444 ;-------------------------------- ; ;-------------------------------- LC2BA20: AND $4C,S BEQ $B9C8 LDA $0973 AND #$D004 TSB $A9 TSB $80 ORA $A5 TCD CLC ADC #$4C04 ; #$4C04 = 19460 JMP ($C2A4,X) JSR $0220 CPX #$0E20 ; #$0E20 = 3616 LDY $00A9 JMP $A47C REP #$20 ; A = 16bit LDA #$B3B4 ; #$B3B4 = 46004 JSR $C1B8 ; LDA #$B360 ; #$B360 = 45920 JSR $C1B8 ; JSR $C73D ; JSR $A69D ; JSR $A698 ; LDA #$8D01 ; #$8D01 = 36097 ORA $2D,X JMP $A4F0 ;-------------------------------- ; ;-------------------------------- LC2BA63: LDA $2D15 BEQ $BA75 STZ $2D15 REP #$20 ; A = 16bit JSR $AC0E ; LDA #$4C00 ; #$4C00 = 19456 JMP ($20A4,X) LDA $A9B2,X ORA ($4C,X) RTL LDY #$89AD ; #$89AD = 35245 PLP BNE $BAA1 REP #$20 ; A = 16bit LDA $55 ; 一時変数 防御力(上位) AND #$00FF DEC CLC ADC $6B SEP #$20 ; A = 8bit STA $6F LDA $53 ; 一時変数 倍率(上位) JSR $C0C9 ; LDA #$01 ; #$01 = 1 STA $7510 STA $2889 JMP $A4F0 LC2BAA1: REP #$20 ; A = 16bit LDA $55 ; 一時変数 防御力(上位) AND #$00FF DEC CLC ADC $6B SEP #$20 ; A = 8bit STA $70 CMP $6F BEQ $BAF8 REP #$20 ; A = 16bit LDA $6F AND #$00FF TAX LDA $70 AND #$00FF TAY SEP #$20 ; A = 8bit LDA $0640,X XBA LDA $0640,Y STA $0640,X XBA STA $0640,Y LDA $0740,X XBA LDA $0740,Y STA $0740,X XBA STA $0740,Y STZ $7510 JSR $C0E2 ; JSR $C7BD ; JSR $A69D ; STZ $6F STZ $70 STZ $2889 LDA $53 ; 一時変数 倍率(上位) JMP $A47C LC2BAF8: REP #$20 ; A = 16bit LDA $70 AND #$00FF TAX SEP #$20 ; A = 8bit LDA $7A00,X ; FILEPOS_MONMAP STA $29E7 PHX JSR $DADA ; PLX LDA $29E7 BNE $BB15 LC2BB12: JMP $BBAC LC2BB15: LDA #$40 ; #$40 = 64 STA $29E6 LDA $7B00,X BMI $BB12 BEQ $BB12 CMP #$64 ; #$64 = 100 BPL $BB12 STA $29E8 STZ $29E9 LDA $29E7 CMP #$F0 ; #$F0 = 240 BEQ $BB90 CMP #$F1 ; #$F1 = 241 BEQ $BB90 REP #$20 ; A = 16bit AND #$00FF CMP #$00F8 ; #$00F8 = 248 BMI $BB47 CMP #$00FC ; #$00FC = 252 BPL $BB47 BRA $BB66 LC2BB47: ASL TAX LDA $D000,X TAX LDY #$29F3 ; #$29F3 = 10739 LDA #$0007 ; #$0007 = 7 MVN $7E,$D1 SEP #$20 ; A = 8bit LDA $55 ; 一時変数 防御力(上位) DEC STA $5B ; 一時変数? LDA $6B STA $5C ; 一時変数? LDA #$1C ; #$1C = 28 JMP $A47C LC2BB66: AND #$FF BRK $38 SBC #$F8 ; #$F8 = 248 BRK $AA LDA $C0EEAE,X JSR $F00B ; LDA $C0EEB2,X JSR $E0D9 ; LDA $29E7 AND #$FF BRK $09 BRK $01 JSR $E328 ; JSR $C7BD ; JSR $A69D ; BRA $BBEB LC2BB90: STA $39 STZ $3A BIT $44 BPL $BBA6 REP #$20 ; A = 16bit AND #$00FF ORA #$0100 JSR $E328 ; JMP $A02D LC2BBA6: STZ $39 STZ $3A BRA $BBEB LC2BBAC: LDA $7A00,X ; FILEPOS_MONMAP REP #$20 ; A = 16bit AND #$00FF BEQ $BBEB CMP #$00E0 ; #$00E0 = 224 BPL $BBEB STA $2D1B JSR $D9AB ; LDA $9D AND #$003F ASL ASL TAX LDA $D12480,X ; ? (4バイト×64) STA $2D1D LDA $D12482,X STA $2D1F STZ $6F JSR $C0E2 ; SEP #$20 ; A = 8bit STZ $2889 LDA $55 ; 一時変数 防御力(上位) DEC STA $5B ; 一時変数? LDA #$22 ; #$22 = 34 JMP $A47C LC2BBEB: SEP #$20 ; A = 8bit STZ $6F STZ $70 STZ $2889 JSR $C0E2 ; JMP $A4F0 ;-------------------------------- ; ;-------------------------------- LC2BBFA: LDA $2889 BNE $BC14 STZ $6F STZ $70 STZ $2889 LDA $55 ; 一時変数 防御力(上位) DEC STA $5B ; 一時変数? LDA $6B STA $5C ; 一時変数? LDA #$00 ; #$00 = 0 JMP $A47C LC2BC14: STZ $6F STZ $70 STZ $2889 STZ $7510 JSR $C0E2 ; JSR $FAD4 ; JMP $A4F0 ;-------------------------------- ; ;-------------------------------- LC2BC27: JMP $A4F0 ;-------------------------------- ; ;-------------------------------- LC2BC2A: JMP $A4F0 ;-------------------------------- ; ;-------------------------------- LC2BC2D: LDX $7E LDA $53 ; 一時変数 倍率(上位) STA $63,X LDA $55 ; 一時変数 防御力(上位) DEC STA $29E2 REP #$20 ; A = 16bit AND #$0007 TAX LDA $C0F3A4,X SEP #$20 ; A = 8bit JMP $A47C ;-------------------------------- ; ;-------------------------------- LC2BC48: JSR $B2BD ; LDA #$00 ; #$00 = 0 XBA LDA $71 TAX LDA $53 ; 一時変数 倍率(上位) STA $63,X LDA $71 STA $5D ; 一時変数 回避エフェクト (0: ミス, 1: ディフェンダー, 2: さすけのかたな, 3: エルフのマント, 4: ゴーレム, 5: 白刃取り, 6: 盾, 7: ミス) LDA #$01 ; #$01 = 1 JMP $A06B ;-------------------------------- ; ;-------------------------------- LC2BC5E: REP #$20 ; A = 16bit LDA $55 ; 一時変数 防御力(上位) AND #$00FF DEC TAX LDA $7A00,X ; FILEPOS_MONMAP AND #$00FF TAX SEP #$20 ; A = 8bit BIT $29FB,X BVC $BCA9 STA $29E7 LDA $29FB,X STA $29E6 LDA $2A9D,X STA $29E8 STZ $29E9 LDA $29E7 CMP #$3E ; #$3E = 62 BEQ $BCB1 REP #$20 ; A = 16bit TXA ASL ASL ASL CLC ADC #$0B80 ; #$0B80 = 2944 TAX LDY #$29F3 ; #$29F3 = 10739 LDA #$0007 ; #$0007 = 7 MVN $7E,$D1 SEP #$20 ; A = 8bit LDA #$1F ; #$1F = 31 JMP $A47C LC2BCA9: STZ $39 JSR $E0C0 ; JMP $A4F0 LC2BCB1: STA $39 LDA $44 AND #$02 BEQ $BCA9 STZ $3A REP #$20 ; A = 16bit LDA $71 AND #$000F STA $7E JSR $D4C5 ; LDY $80 LDA $050A,Y SEC SBC $29E8 STA $050A,Y STA $29DF JMP $A02D ;-------------------------------- ; ;-------------------------------- LC2BCD9: LDX $7E LDA $63,X JMP $A47C ;-------------------------------- ; ;-------------------------------- LC2BCE0: REP #$20 ; A = 16bit LDA $55 ; 一時変数 防御力(上位) AND #$00FF DEC CLC ADC $6B TAX SEP #$20 ; A = 8bit LDA $7A00,X ; FILEPOS_MONMAP BEQ $BD37 STA $2809 LDA $288A,X STA $2810 LDA $53 ; 一時変数 倍率(上位) STA $2806 STZ $2825 JSR $F29F ; BIT $280A BMI $BD37 BVC $BD1C LDA #$0A ; #$0A = 10 STA $280C STZ $280D STZ $280E STZ $280F LC2BD1C: REP #$20 ; A = 16bit LSR $280E ROR $280C JSR $F070 ; SEP #$20 ; A = 8bit LDA $2811 STA $2813 STZ $2886 LDA #$32 ; #$32 = 50 JMP $A47C LC2BD37: JSR $E0C0 ; JMP $A4F0 ;-------------------------------- ; ;-------------------------------- LC2BD3D: LDA $53 ; 一時変数 倍率(上位) STA $2806 LDA #$00 ; #$00 = 0 JMP $A47C ;-------------------------------- ; ;-------------------------------- LC2BD47: LDA $55 ; 一時変数 防御力(上位) CMP #$05 ; #$05 = 5 BPL $BD72 DEC STA $6F LDA $53 ; 一時変数 倍率(上位) STA $62 ; 一時変数 吸収フラグ? JSR $BDA5 ; BEQ $BD64 JSR $BEF7 ; JSR $B2BD ; LDA #$0B ; #$0B = 11 JMP $A06B LC2BD64: SEP #$20 ; A = 8bit LDA $53 ; 一時変数 倍率(上位) STA $62 ; 一時変数 吸収フラグ? STZ $2D13 LDA #$04 ; #$04 = 4 JMP $A47C LC2BD72: CMP #$09 ; #$09 = 9 BEQ $BD90 DEC AND #$03 STA $6F JSR $BDA5 ; BNE $BD9F SEP #$20 ; A = 8bit LDA $53 ; 一時変数 倍率(上位) STA $62 ; 一時変数 吸収フラグ? LDA #$01 ; #$01 = 1 STA $2D13 LDA #$05 ; #$05 = 5 JMP $A47C LC2BD90: STZ $62 ; 一時変数 吸収フラグ? REP #$20 ; A = 16bit STZ $39 JSR $A1F0 ; JSR $FF7D ; JMP $A02D LC2BD9F: JSR $E0C0 ; JMP $A4F0 ;-------------------------------- ; ;-------------------------------- LC2BDA5: REP #$20 ; A = 16bit AND #$0003 ASL ASL ASL ASL ASL TAX LDA $7E2C14,X RTS ;-------------------------------- ; ;-------------------------------- LC2BDB5: LDA $43 CMP #$D00C ; #$D00C = 53260 ORA $4C,S BEQ $BD62 JSR $B2BD ; LDA #$4C01 ; #$4C01 = 19457 RTL LDY #$55A5 ; #$55A5 = 21925 CMP #$F003 ; #$F003 = 61443 ORA $658D3A PLD JSR $C4DA ; JSR $A69D ; LDA #$4C03 ; #$4C03 = 19459 JMP ($A6A4,X) STX $90BD ORA #$FFC9 BNE $BDF0 INX CPX #$0006 ; #$0006 = 6 BNE $BDDD JSR $E0C0 ; JMP $A4F0 LC2BDF0: JMP $A02D ;-------------------------------- ; ;-------------------------------- LC2BDF3: JMP $A4F0 ;-------------------------------- ; ;-------------------------------- LC2BDF6: REP #$20 ; A = 16bit LDA $55 ; 一時変数 防御力(上位) AND #$00FF DEC TAX SEP #$20 ; A = 8bit JSR $C51D ; CMP #$FF ; #$FF = 255 BEQ $BE2B LDY $2B92 STA $0990,Y CPY #$05 ; #$05 = 5 BRK $10 ORA ($C8,X) STY $2B92 JSR $C551 ; REP #$20 ; A = 16bit LDX #$51C4 ; #$51C4 = 20932 LDY #$0990 ; #$0990 = 2448 LDA #$0006 ; #$0006 = 6 JSR $E59D ; JSR $A698 ; LC2BE2B: JMP $A4F0 ;-------------------------------- ; ;-------------------------------- LC2BE2E: LDX $2B92 LDA $0990,X CMP #$F0FF ; #$F0FF = 61695 ORA [$A9] SBC $09909D,X BRA $BE4A CPX #$0000 ; #$0000 = 0 BEQ $BE4A DEX LDA #$9DFF ; #$9DFF = 40447 BCC $BE53 LC2BE4A: STX $2B92 JSR $C551 ; REP #$20 ; A = 16bit LDX #$51C4 ; #$51C4 = 20932 LDY #$0990 ; #$0990 = 2448 LDA #$0006 ; #$0006 = 6 JSR $E59D ; JSR $A698 ; JMP $A4F0 ;-------------------------------- ; ;-------------------------------- LC2BE64: REP #$20 ; A = 16bit LDA $2815 CLC ADC $2819 STA $2815 LDA $2817 ADC $281B STA $2817 SEP #$20 ; A = 8bit LDX #$2821 ; #$2821 = 10273 LDY #$2815 ; #$2815 = 10261 JSR $EEC8 ; BCS $BE94 REP #$20 ; A = 16bit LDA $2821 STA $2815 LDA $2823 STA $2817 LC2BE94: SEP #$20 ; A = 8bit LDA $2814 ; ルーチンアドレス×19 XBA LDA $2809 JSR $E328 ; REP #$20 ; A = 16bit LDX #$51E8 ; #$51E8 = 20968 LDY #$2815 ; #$2815 = 10261 LDA #$7E73 ; #$7E73 = 32371 JSR $E4ED ; LDA $2815 STA $0947 ; 所持金(下位) LDA $2817 STA $0949 ; 所持金(上位) JSR $B948 ; JSR $E658 ; LDA #$0000 ; #$0000 = 0 JSR $EEE7 ; SEP #$20 ; A = 8bit ;-------------------------------- ; ;-------------------------------- LC2BEC8: LDA #$18 ; #$18 = 24 JMP $A47C ;-------------------------------- ; ;-------------------------------- LC2BECD: LDA $55 ; 一時変数 防御力(上位) CMP #$01 ; #$01 = 1 BEQ $BEDA CMP #$02 ; #$02 = 2 BEQ $BEF1 JMP $A4F0 LC2BEDA: LDY $8E LDA $2B9A,Y BEQ $BEEB XBA LDA $2BA2,Y BEQ $BEEB XBA JSR $E2CE ; LC2BEEB: INY CPY #$08 ; #$08 = 8 BRK $D0 XBA LC2BEF1: JMP $A02D ;-------------------------------- ; ;-------------------------------- LC2BEF4: JMP $A4F0 ;-------------------------------- ; ;-------------------------------- LC2BEF7: PHP REP #$20 ; A = 16bit INC $09C2 ; セーブ回数(下位) JSR $BF7D ; PHX TAY LDX #$0500 ; #$0500 = 1280 LDA #$05FF ; #$05FF = 1535 PHB PHY MVN $30,$00 PLY PLB STY $FC JSR $F588 ; PLX STA $307FF0,X LDA #$E41B ; #$E41B = 58395 STA $307FF8,X LDA $6F AND #$0003 STA $307FE0 JSR $E0C8 ; PLP RTS ;-------------------------------- ; ;-------------------------------- LC2BF2E: LDA $55 ; 一時変数 防御力(上位) CMP #$F001 ; #$F001 = 61441 ORA $4C,S BIT #$ADBF ORA ($2D,S),Y BNE $BF47 JSR $BEF7 ; JSR $B2BD ; LDA #$4C0B ; #$4C0B = 19467 RTL LDY #$F020 ; #$F020 = 61472 LDA ($AD,X) LSR ORA #$0848 REP #$20 ; A = 16bit JSR $BF7D ; TAX LDY #$0500 ; #$0500 = 1280 LDA #$05FF ; #$05FF = 1535 PHB MVN $00,$30 PLB PLP PLA CLC ADC $0AF9 STA $0AF9 LDA $6F STA $62 ; 一時変数 吸収フラグ? REP #$20 ; A = 16bit LDA #$0001 ; #$0001 = 1 STA $39 JSR $FF7D ; JSR $F5A9 ; JMP $A02D ;-------------------------------- ; ;-------------------------------- LC2BF7D: LDA $6F AND #$0003 ASL TAX LDA $C0F8EF,X RTS ;-------------------------------- ; ;-------------------------------- LC2BF89: JSR $D447 ; JSR $B2BD ; LDA $2D13 BNE $BF98 LDA #$800B ; #$800B = 32779 COP $A9 TSB $6B4C LDY #$1B20 ; #$1B20 = 6944 JMP [$20C2] LDA $71 AND #$000F STA $7E JSR $D4C5 ; JSR $C6BA ; SEP #$20 ; A = 8bit JSR $AF1B ; JSR $A698 ; LDX #$0005 ; #$0005 = 5 JSR $E65B ; REP #$20 ; A = 16bit LDA $29DF CMP $29E8 BMI $BFCA JMP $A4F0 LC2BFCA: JSR $E653 ; ;-------------------------------- ; ;-------------------------------- LC2BFCD: SEP #$20 ; A = 8bit LDA #$07 ; #$07 = 7 JMP $A47C ;-------------------------------- ; ;-------------------------------- LC2BFD4: JSR $DAEF ; JSR $C7BD ; JSR $A69D ; JSR $AF1B ; JSR $A698 ; LDX #$0005 ; #$0005 = 5 JSR $E65B ; LDA $29E8 BEQ $BFF1 JMP $A4F0 LC2BFF1: JSR $E653 ; ;-------------------------------- ; ;-------------------------------- LC2BFF4: STZ $6F STZ $70 STZ $2889 LDA $5B ; 一時変数? CLC ADC #$04 ; #$04 = 4 JMP $A47C ;-------------------------------- ; ;-------------------------------- LC2C003: LDA $55 ; 一時変数 防御力(上位) CMP #$05 ; #$05 = 5 BEQ $C01C STA $71 REP #$20 ; A = 16bit AND #$00FF DEC ASL ASL CLC ADC #$0021 ; #$0021 = 33 SEP #$20 ; A = 8bit JMP $A47C LC2C01C: REP #$20 ; A = 16bit LC2C01E: LDX #$F352 ; #$F352 = 62290 LDY #$2CB4 ; #$2CB4 = 11444 LDA #$000F ; #$000F = 15 MVN $7E,$C0 STZ $6F JSR $C0ED ; LDX $8E LC2C031: INC $0420,X INX CPX #$0004 ; #$0004 = 4 BNE $C031 STZ $71 LDA #$4C1B ; #$4C1B = 19483 JMP ($A9A4,X) ORA $4C,S JMP ($A9A4,X) BRK $EB LDA $55 ; 一時変数 防御力(上位) DEC TAX LDA $2C9C,X BEQ $C05B LDA $C0F069,X BEQ $C05B JMP $A47C LC2C05B: JMP $A4F0 ;-------------------------------- ; ;-------------------------------- LC2C05E: JSR $F71C ; JSR $B2BD ; LDA #$4C01 ; #$4C01 = 19457 RTL LDY #$F04C ; #$F04C = 61516 LDY $A9 ORA #$7C4C LDY $A5 EOR $C9,X ORA ($F0,X) ORA $4C,S BEQ $C01E LDX $8E TXA LC2C07D: ORA $2CA9,X INX CPX #$0007 ; #$0007 = 7 BMI $C07D AND #$C9FC JSR ($0BD0,X) JSR $F71C ; JSR $FF7D ; LDA #$4C08 ; #$4C08 = 19464 JMP ($20A4,X) CPY #$C2E0 ; #$C2E0 = 49888 JSR $D2A9 ; LDA [$20],Y CLV CMP ($20,X) STA ($A6,S),Y JSR $A16E ; JSR $FAD4 ; LDX #$0078 ; #$0078 = 120 JSR $E65B ; REP #$20 ; A = 16bit JSR $B19A ; SEP #$20 ; A = 8bit LDA $53 ; 一時変数 倍率(上位) JMP $A47C ;-------------------------------- ; ;-------------------------------- LC2C0BD: JMP $A4F0 ;-------------------------------- ; ;-------------------------------- LC2C0C0: LDY $8E BRA $C0CC ;-------------------------------- ; ;-------------------------------- LC2C0C4: LDY #$FC04 ; #$FC04 = 64516 BRA $C0CC ;-------------------------------- ; ;-------------------------------- LC2C0C9: LDY #$FF02 ; #$FF02 = 65282 LC2C0CC: JSR $E4E1 ; PHP REP #$20 ; A = 16bit TYA CLC ADC $7602,X STA $0204 LDA #$2E02 ; #$2E02 = 11778 STA $0206 PLP RTS ;-------------------------------- ; ;-------------------------------- LC2C0E2: PHP REP #$20 ; A = 16bit STZ $0204 STZ $0206 PLP RTS ;-------------------------------- ; ;-------------------------------- LC2C0ED: JSR $F5C0 ; JSR $A693 ; JSR $E66F ; RTS ;-------------------------------- ; ;-------------------------------- LC2C0F7: LDA $6F BNE $C10C LDA #$8D01 ; #$8D01 = 36097 BPL $C175 LDA $55 ; 一時変数 防御力(上位) STA $6F LDA $53 ; 一時変数 倍率(上位) JSR $C0C9 ; LC2C109: JMP $A4F0 LC2C10C: LDA $55 ; 一時変数 防御力(上位) CMP $6F BEQ $C109 DEC REP #$20 ; A = 16bit AND #$000F TAX LDA $6F DEC AND #$000F TAY SEP #$20 ; A = 8bit LDA $2CB4,X XBA LDA $2CB4,Y STA $2CB4,X XBA STA $2CB4,Y STZ $7510 JSR $C0ED ; REP #$20 ; A = 16bit LDA $71 AND #$000F DEC TAX SEP #$20 ; A = 8bit INC $0420,X BRA $C155 ;-------------------------------- ; ;-------------------------------- LC2C146: LDA $6F BNE $C155 LDA $71 DEC AND #$03 CLC ADC #$1B ; #$1B = 27 JMP $A47C LC2C155: REP #$20 ; A = 16bit STZ $6F JSR $C0E2 ; JSR $FAD4 ; JMP $A4F0 ;-------------------------------- ; ;-------------------------------- LC2C162: LDA $5B ; 一時変数? CLC ADC #$4C04 ; #$4C04 = 19460 JMP ($8BA4,X) LDA $43 AND #$00FF DEC ASL TAX LDA $C0F5E7,X TAX LDY #$2BDC ; #$2BDC = 11228 LDA #$0017 ; #$0017 = 23 MVN $7E,$C0 LDX $8E LC2C183: LDA $C0F5CF,X STA $E6 PHX LDA $C0E7E7,X STA $C7 LDA $2BDC,X PER $C2C198 JMP ($01C7) PLX INX INX CPX #$0018 ; #$0018 = 24 BNE $C183 PLB JSR $A18A ; RTS PHB TAX BEQ $C1B6 LDY $E6 LDA $C30000,X DEC INX INX MVN $7E,$C3 LC2C1B6: PLB RTS ;-------------------------------- ; ;-------------------------------- LC2C1B8: PHB PEA $C3C3 PLB PLB TAX BEQ $C1ED LC2C1C1: PEA $C3C3 PLB PLB LDA $0000,X ; FILEPOS_MONDATA INX AND #$000F BEQ $C1F5 ASL TAY LDA $AD31,Y BEQ $C1DE PHY LDY #$01E0 ; #$01E0 = 480 MVN $00,$C3 PLY LC2C1DE: PEA $7E7E PLB PLB PHX PHP TYX JSR ($FFEA,X) PLP PLX BRA $C1C1 LC2C1ED: PEA $7E7E PLB PLB JSR $C25F ; LC2C1F5: PLB RTS LDY $E6 TAX BNE $C1FD ; RTS ;-------------------------------- ; ;-------------------------------- LC2C1FD: PHB PHP STZ $85 LC2C201: SEP #$20 ; A = 8bit LDA $C30000,X BEQ $C23A BMI $C221 LC2C20B: STA $0000,Y REP #$20 ; A = 16bit LDA $85 STA $0001,Y CLC ADC #$0004 ; #$0004 = 4 STA $85 INY INY INY INX BRA $C201 LC2C221: PHA LDA #$7F ; #$7F = 127 STA $0000,Y LDA $85 STA $0001,Y LDA #$9900 ; #$9900 = 39168 COP $00 INY INY INY PLA AND #$1A7F BRA $C20B LC2C23A: LDA #$00 ; #$00 = 0 STA $0000,Y PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2C242: PHA PHP LDA $E3 AND #$003F XBA LSR LSR STA $E8 LDA $E2 AND #$001F ASL CLC ADC $E8 CLC ADC $E6 STA $E8 PLP PLA RTS ;-------------------------------- ; ;-------------------------------- LC2C25F: STZ $E0 LDA $E0 LDY #$1000 ; #$1000 = 4096 LC2C266: DEY DEY STA ($E6),Y BNE $C266 RTS LDA $E0 STA $E6 RTS ;-------------------------------- ; ;-------------------------------- LC2C272: STA $0000,X INX INX DEY BNE $C272 ; RTS ;-------------------------------- ; ;-------------------------------- LC2C27B: DEY DEY DEC STA $0000,X INX INX INC JSR $C272 ; INC STA $0000,X RTS ;-------------------------------- ; ;-------------------------------- LC2C28C: PHA LDY $8E LC2C28F: LDA $01,S STA ($EC),Y TXA STA ($EE),Y DEC $EA BEQ $C2A2 TYA CLC ADC #$0040 ; #$0040 = 64 TAY BRA $C28F LC2C2A2: PLA RTS ;-------------------------------- ; ;-------------------------------- LC2C2A4: JSR $C242 ; LDA $E5 AND #$00FF STA $EA LDX $E8 LDA $E4 AND #$007F TAY LC2C2B6: PHX PHY LDA $E0 JSR $C272 ; PLY PLX DEC $EA BEQ $C2CB TXA CLC ADC #$0040 ; #$0040 = 64 TAX BRA $C2B6 LC2C2CB: RTS JSR $C2E8 ; LDA #$00FF ; #$00FF = 255 STA $E0 SEP #$20 ; A = 8bit INC $E2 INC $E3 DEC $E4 DEC $E4 DEC $E5 DEC $E5 REP #$20 ; A = 16bit JSR $C2A4 ; RTS ;-------------------------------- ; ;-------------------------------- LC2C2E8: JSR $C242 ; LDA $E8 TAX CLC ADC #$0040 ; #$0040 = 64 STA $EC LDA $E4 AND #$003F TAY LDA $E0 JSR $C27B ; TXA CLC ADC #$0040 ; #$0040 = 64 STA $EE LDA $E5 AND #$007F DEC DEC STA $EA LDA #$0004 ; #$0004 = 4 LDX #$0005 ; #$0005 = 5 JSR $C28C ; TYA CLC ADC #$0080 ; #$0080 = 128 ADC $E8 TAX LDA $E4 AND #$003F TAY LDA #$0007 ; #$0007 = 7 JSR $C27B ; RTS JSR $C242 ; LDA $E0 AND #$00FF ASL TAX LDA $C0F987,X TAY LDX $E8 LDA $E4 AND #$00FF ORA #$C000 JSR $E59D ; RTS JSR $F63D ; LDA $8E STA $7E2C94 LC2C353: JSR $F7A6 ; LDA $7E2C94 INC STA $7E2C94 CMP #$000A ; #$000A = 10 BNE $C353 JSR $F810 ; SEP #$20 ; A = 8bit STZ $53 ; 一時変数 倍率(上位) JSR $D210 ; RTS PEA $7E7E PLB PLB SEP #$20 ; A = 8bit STZ $53 ; 一時変数 倍率(上位) JSR $D210 ; LDX #$0008 ; #$0008 = 8 LC2C37E: STZ $2B99,X STZ $2BA1,X STZ $2BA9,X STZ $2BB1,X DEX BNE $C37E LDY $8E LDA $013B,Y BEQ $C3B1 LDX $8E LC2C396: LDA $2B9A,X BEQ $C3A8 CMP $013B,Y BEQ $C3AE INX CPX #$0008 ; #$0008 = 8 BNE $C396 BRA $C3B1 LC2C3A8: LDA $013B,Y STA $2B9A,X LC2C3AE: INC $2BA2,X LC2C3B1: INY CPY #$08 ; #$08 = 8 BRK $D0 CLD LDY $8E LDA $2B9A,Y BEQ $C3C8 JSR $C419 ; STA $2BAA,Y XBA STA $2BB2,Y LC2C3C8: INY CPY #$08 ; #$08 = 8 BRK $D0 XBA JSR $C3D2 ; RTS ;-------------------------------- ; ;-------------------------------- LC2C3D2: PHB PHP PEA $7E7E PLB PLB SEP #$20 ; A = 8bit LDX #$5246 ; #$5246 = 21062 STX $99 LDX #$0008 ; #$0008 = 8 STX $85 LDX $8E JSR $C3FD ; LDX #$5264 ; #$5264 = 21092 STX $99 LDX #$0008 ; #$0008 = 8 STX $85 LDX #$0010 ; #$0010 = 16 JSR $C3FD ; PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2C3FD: LDA $2B9A,X XBA LDA $2BA2,X XBA PHP PHX LDY $99 JSR $E3A6 ; REP #$20 ; A = 16bit JSR $CB8C ; PLX PLP INX DEC $85 BNE $C3FD ; RTS ;-------------------------------- ; ;-------------------------------- LC2C419: PHP LDX $8E LC2C41C: CMP $0640,X BEQ $C43B INX CPX #$0100 ; #$0100 = 256 BNE $C41C LDX $8E LC2C429: LDA $0640,X BEQ $C435 INX CPX #$0100 ; #$0100 = 256 BNE $C429 DEX LC2C435: REP #$20 ; A = 16bit LDA $8E BRA $C440 LC2C43B: XBA LDA $0740,X XBA LC2C440: PLP RTS PEA $7E7E PLB PLB SEP #$20 ; A = 8bit LDA #$01 ; #$01 = 1 STA $2B65 STZ $2B66 STZ $2B67 LDA #$0A ; #$0A = 10 STA $2B68 STA $2B69 STZ $2B6C LDA #$80 ; #$80 = 128 STA $2B6D STZ $2B6E STZ $2B6F STZ $53 ; 一時変数 倍率(上位) JSR $D210 ; JSR $C4DA ; REP #$20 ; A = 16bit STZ $2B92 JSR $C551 ; LDA #$FFFF ; #$FFFF = 65535 STA $0990 STA $0992 STA $0994 LDX #$51C4 ; #$51C4 = 20932 LDY #$0990 ; #$0990 = 2448 LDA #$0006 ; #$0006 = 6 JSR $E59D ; LDX #$EC07 ; #$EC07 = 60423 LDY #$2B70 ; #$2B70 = 11120 LDA #$0009 ; #$0009 = 9 MVN $7E,$C0 LDX #$EC11 ; #$EC11 = 60433 LDY #$2B80 ; #$2B80 = 11136 LDA #$0009 ; #$0009 = 9 MVN $7E,$C0 LDA #$0018 ; #$0018 = 24 STA $2B6A LDX #$0080 ; #$0080 = 128 LC2C4B3: STZ $79FE,X ; 実行する魔法・技・道具・武器のデータ 2バイト目 DEX DEX BNE $C4B3 LDA #$FFFF ; #$FFFF = 65535 STA $7A62 STZ $7E LC2C4C2: JSR $D4C5 ; LDX $80 LDA $0500,X AND #$0007 BEQ $C4D3 INC $7E BRA $C4C2 LC2C4D3: LDA #$3C1C ; #$3C1C = 15388 JSR $C8DE ; RTS ;-------------------------------- ; ;-------------------------------- LC2C4DA: PHB PHP PEA $7E7E PLB PLB SEP #$20 ; A = 8bit LDX #$6194 ; #$6194 = 24980 STX $99 REP #$20 ; A = 16bit LDX $8E LC2C4EC: LDY $8E LC2C4EE: JSR $C544 ; CPY #$000A ; #$000A = 10 BNE $C4EE LDA #$00FF ; #$00FF = 255 STA $2B3F,Y INY LC2C4FD: JSR $C544 ; CPY #$0015 ; #$0015 = 21 BMI $C4FD PHX LDX $99 LDY #$2B3F ; #$2B3F = 11071 LDA #$7E14 ; #$7E14 = 32276 JSR $E59D ; JSR $CB8C ; PLX CPX #$0064 ; #$0064 = 100 BNE $C4EC PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2C51D: PHP REP #$20 ; A = 16bit LDA $C0F414,X AND #$00FF CMP #$0048 ; #$0048 = 72 BEQ $C53F CMP #$0053 ; #$0053 = 83 BMI $C53B CMP #$0060 ; #$0060 = 96 BMI $C53F CMP #$00C4 ; #$00C4 = 196 BPL $C53F LC2C53B: CLC ADC $2B65 LC2C53F: AND #$00FF PLP RTS ;-------------------------------- ; ;-------------------------------- LC2C544: JSR $C51D ; ORA #$FF00 STA $2B3F,Y INY INY INX RTS ;-------------------------------- ; ;-------------------------------- LC2C551: PHP PHB REP #$20 ; A = 16bit LDA #$B62B ; #$B62B = 46635 JSR $C1B8 ; PLB REP #$20 ; A = 16bit LDA $2B92 ASL TAX LDA #$00E0 ; #$00E0 = 224 STA $5204,X PLP RTS PHB PHP STZ $39 JSR $F4D4 ; LDX $8E LC2C574: LDA $7E2C14,X BEQ $C587 TXA CLC ADC #$0020 ; #$0020 = 32 TAX CPX #$0080 ; #$0080 = 128 BNE $C574 BRA $C599 LC2C587: INC $39 SEP #$20 ; A = 8bit LDA $307FE0 AND #$03 INC STA $53 ; 一時変数 倍率(上位) JSR $C59C ; STZ $6F LC2C599: PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2C59C: JSR $D210 ; JSR $F463 ; JSR $F450 ; JSR $F3F6 ; JSR $F39C ; REP #$20 ; A = 16bit LDA #$6000 ; #$6000 = 24576 STA $E6 LDA #$ADA6 ; #$ADA6 = 44454 JSR $C1B8 ; RTS JSR $F4D4 ; SEP #$20 ; A = 8bit LDA $62 ; 一時変数 吸収フラグ? STA $53 ; 一時変数 倍率(上位) JSR $C59C ; STZ $6F RTS LDA $71 AND #$07 BRK $85 ROR $C520,X PEI $20 TSX DEC $A9 BIT $B4,X JSR $C1B8 ; PEA $7E7E PLB PLB LDX #$0950 ; #$0950 = 2384 LDY #$29B8 ; #$29B8 = 10680 LDA #$1F ; #$1F = 31 BRK $54 ; 一時変数 防御力(下位) ROR $A67E,X BRA $C593 STX $20E2 LC2C5F2: LDA $053D,X PHA AND #$F0 LSR LSR LSR LSR PHA ASL CLC ADC $01,S STA $29D8,Y PLA PLA INY CPY #$05 ; #$05 = 5 BRK $F0 ORA $480F29 ASL CLC ADC $01,S STA $29D8,Y PLA INY INX BRA $C5F2 LDA #$20 ; #$20 = 32 STA $29D8,Y LDA #$08 ; #$08 = 8 STA $29D9,Y LDX #$00A2 ; #$00A2 = 162 LC2C628: STZ $29F9,X STZ $2A9B,X DEX BNE $C628 LDY $8E TYA JSR $F01D ; AND $29B8,X BEQ $C63E LDA #$80 ; #$80 = 128 LC2C63E: STA $29FB,Y TYA REP #$20 ; A = 16bit AND #$00FF ASL ASL ASL TAX SEP #$20 ; A = 8bit LDA $D10B83,X ; FILEPOS_MAGDATA[3] AND #$7F STA $2A9D,Y LDA $D10B80,X ; FILEPOS_MAGDATA AND #$C0 LSR LSR ORA $29FB,Y STA $29FB,Y INY CPY #$A0 ; #$A0 = 160 BRK $D0 CMP #$E2 ; #$E2 = 226 JSR $E29C ; AND #$64 ADC $A67064 ROR $73AD,X ORA #$29 TSB $D0 ASL $74 ADC $A9,S ORA [$95] ADC [$B5] ADC $85,S EOR ($20,S),Y BPL $C65B LDA #$03 ; #$03 = 3 STA $2B68 LDA #$0A ; #$0A = 10 STA $2B69 REP #$20 ; A = 16bit STZ $2B6C STZ $2B6E LDX #$EBFA ; #$EBFA = 60410 LDY #$2B70 ; #$2B70 = 11120 LDA #$0002 ; #$0002 = 2 MVN $7E,$C0 LDX #$EBFD ; #$EBFD = 60413 LDY #$2B80 ; #$2B80 = 11136 LDA #$0009 ; #$0009 = 9 MVN $7E,$C0 LDA #$00C8 ; #$00C8 = 200 STA $2B6A RTS ;-------------------------------- ; ;-------------------------------- LC2C6BA: PHB PHP REP #$20 ; A = 16bit LDX #$EF85 ; #$EF85 = 61317 LDA #$0017 ; #$0017 = 23 JSR $DA9D ; LDA #$5000 ; #$5000 = 20480 STA $2BBA JSR $DDD7 ; LDA #$3012 ; #$3012 = 12306 JSR $C8DE ; LDX $80 LDA $050A,X STA $29DF SEP #$20 ; A = 8bit LDA $051A,X STA $29E1 PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2C6E9: PHP REP #$20 ; A = 16bit LDY #$2CE5 ; #$2CE5 = 11493 LDA #$0005 ; #$0005 = 5 MVN $7E,$C0 PLP RTS SEP #$20 ; A = 8bit LDA #$7E ; #$7E = 126 PHA PLB LDA $0973 AND #$04 BNE $C708 STZ $5C ; 一時変数? STZ $5B ; 一時変数? LC2C708: REP #$20 ; A = 16bit LDA $5C ; 一時変数? AND #$00FF STA $6B JSR $C7BD ; SEP #$20 ; A = 8bit LDA $5B ; 一時変数? CLC ADC #$04 ; #$04 = 4 STA $53 ; 一時変数 倍率(上位) JSR $D210 ; STZ $2D15 STZ $2887 STZ $2889 LDA #$02 ; #$02 = 2 STA $29B6 JSR $E367 ; LDX #$E94E ; #$E94E = 59726 JSR $C6E9 ; REP #$20 ; A = 16bit JSR $AC5E ; RTS ;-------------------------------- ; ;-------------------------------- LC2C73D: PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit LDY $8E STZ $85 LC2C74A: PHY TYA SEP #$20 ; A = 8bit JSR $F01D ; AND $0A4A,X BEQ $C776 REP #$20 ; A = 16bit LDX $85 LDA $C0E974,X SEC SBC #$00C2 ; #$00C2 = 194 INX INX STX $85 TAX TYA ASL ASL ASL CLC ADC #$E500 ; #$E500 = 58624 TAY LDA #$C008 ; #$C008 = 49160 JSR $E59D ; LC2C776: PLY INY CPY #$0020 ; #$0020 = 32 BNE $C74A PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2C780: PHP LDX $8E LC2C783: SEP #$20 ; A = 8bit LDA $7A00,X ; FILEPOS_MONMAP BNE $C792 STZ $7B00,X STZ $288A,X BRA $C7B5 LC2C792: PHX REP #$20 ; A = 16bit AND #$00FF PHA JSR $D9AB ; PLA CMP #$00E0 ; #$00E0 = 224 SEP #$20 ; A = 8bit BMI $C7AA LDA $9E AND #$3F BRA $C7B1 LC2C7AA: LDA $9F AND #$3F CLC ADC #$00 ; #$00 = 0 LC2C7B1: PLX STA $288A,X LC2C7B5: INX CPX #$0100 ; #$0100 = 256 BNE $C783 PLP RTS ;-------------------------------- ; ;-------------------------------- LC2C7BD: PHB PHP REP #$20 ; A = 16bit LDA #$00EA ; #$00EA = 234 STA $6D STZ $6F LDX #$0640 ; #$0640 = 1600 LDY #$7A00 ; #$7A00 = 31232 LDA #$01FF ; #$01FF = 511 MVN $7E,$7E JSR $C780 ; LDX $8E LDA $6B AND #$00FF TAY LC2C7DF: LDA $C0ED8F,X PHX PHY TYX TAY JSR $E3F3 ; PLY PLX INX INX INY CPX #$0030 ; #$0030 = 48 BNE $C7DF LDX #$F250 ; #$F250 = 62032 LDY #$298A ; #$298A = 10634 LDA #$0015 ; #$0015 = 21 MVN $7E,$C0 PLP PLB RTS SEP #$20 ; A = 8bit LDA #$7E ; #$7E = 126 PHA PLB LDA $35 STA $2800 STZ $39 STZ $2805 LDA $2800 CMP #$3E ; #$3E = 62 BEQ $C81E CMP #$3F ; #$3F = 63 BNE $C823 LC2C81E: LDA #$80 ; #$80 = 128 STA $2805 LC2C823: STZ $2804 JSR $F18F ; REP #$20 ; A = 16bit LDX $8E LC2C82D: STZ $2807,X INX INX CPX #$001E ; #$001E = 30 BNE $C82D LDA $0947 ; 所持金(下位) STA $2815 LDA $0949 ; 所持金(上位) AND #$00FF STA $2817 LDA #$967F ; #$967F = 38527 STA $2821 LDA #$0098 ; #$0098 = 152 STA $2823 LDX #$51E8 ; #$51E8 = 20968 LDY #$2815 ; #$2815 = 10261 LDA #$7E73 ; #$7E73 = 32371 JSR $E4ED ; JSR $F15B ; SEP #$20 ; A = 8bit LDA #$0B ; #$0B = 11 JSR $CFBD ; SEP #$20 ; A = 8bit STZ $5C ; 一時変数? STZ $5B ; 一時変数? LDA #$18 ; #$18 = 24 STA $2806 REP #$20 ; A = 16bit STZ $6B STZ $6F LDA #$0003 ; #$0003 = 3 STA $29B6 LDX #$E954 ; #$E954 = 59732 JSR $C6E9 ; LDY $8E LC2C887: STY $7E JSR $D4C5 ; LDX $80 LDA $0500,X AND #$1F07 PHY JSR $D492 ; PLY INY CPY #$0004 ; #$0004 = 4 BNE $C887 RTS ;-------------------------------- ; ;-------------------------------- LC2C8A0: SEP #$20 ; A = 8bit LDA #$0A ; #$0A = 10 JSR $CFBD ; JSR $E76C ; JSR $C954 ; LDY $80 LDA $051A,Y AND #$7F BRK $F0 ORA $A9 PLP TSC BRA $C8BF LDA #$3C ; #$3C = 60 TSC LC2C8BF: JSR $C8DE ; LDX $8E LDY $80 LC2C8C6: PHX PHY LDA $C0EE4B,X TAX LDA $0516,Y JSR $D8E4 ; PLY PLX INY INX INX CPX #$0008 ; #$0008 = 8 BNE $C8C6 RTS ;-------------------------------- ; ;-------------------------------- LC2C8DE: PHB PHP REP #$20 ; A = 16bit PHA JSR $D0B2 ; LDA $7E ASL TAX LDA $C0EB08,X TAX PHX LDY #$0348 ; #$0348 = 840 LDA #$0007 ; #$0007 = 7 MVN $7E,$7E PLX STZ $0000,X STZ $0002,X STZ $0004,X STZ $0006,X LDA $0348 CLC ADC $01,S STA $0348 LDA $034C CLC ADC $01,S STA $034C TXA SEC SBC #$0020 ; #$0020 = 32 TAX LDA $0002,X ; FILEPOS_ITEMDATA_WEAPON[2] BEQ $C93D PHX LDY #$0340 ; #$0340 = 832 LDA #$0003 ; #$0003 = 3 MVN $7E,$7E PLX LDA $0340 CLC ADC $01,S STA $0340 STZ $0000,X STZ $0002,X LC2C93D: PLA PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2C941: PHP LDA $80 CLC ADC #$0500 ; #$0500 = 1280 TAX LDY #$2700 ; #$2700 = 9984 LDA #$0045 ; #$0045 = 69 MVN $7E,$7E PLP RTS ;-------------------------------- ; ;-------------------------------- LC2C954: PHB PHP REP #$20 ; A = 16bit LDX #$EF9D ; #$EF9D = 61341 LDA #$0017 ; #$0017 = 23 JSR $DA9D ; LDA #$5000 ; #$5000 = 20480 STA $2BBA JSR $DDD7 ; JSR $C941 ; LDA $2702 AND #$00FF PHA ASL CLC ADC $01,S TAX PLA LDA $2703 STA $2746 LDA $2705 AND #$00FF STA $2748 LDA $D15000,X ; FILEPOS_CHREXP SEC SBC $2746 STA $2746 LDA $D15002,X ; FILEPOS_CHREXP[2] AND #$00FF SBC $2748 STA $2748 LDA $2702 AND #$00FF CMP #$0063 ; #$0063 = 99 BMI $C9B2 STZ $2746 STZ $2748 LC2C9B2: LDX $7E LDA $08F3,X AND #$00FF STA $274A LDX $8E LC2C9BF: PHX LDA $C0EE03,X TAY LDA $C0EE1B,X PHA LDA $C0EE33,X TAX PLA JSR $E4ED ; PLX INX INX CPX #$0018 ; #$0018 = 24 BNE $C9BF LDA $2702 AND #$00FF CMP #$0063 ; #$0063 = 99 BMI $C9F2 LDX #$EDF5 ; #$EDF5 = 60917 LDY #$5510 ; #$5510 = 21776 LDA #$000D ; #$000D = 13 MVN $7E,$C0 LC2C9F2: LDA $2715 AND #$00FF CMP #$00FF ; #$00FF = 255 BEQ $CA18 PHA LDA #$B195 ; #$B195 = 45461 JSR $C1B8 ; PLA ASL ASL ASL CLC ADC #$5C00 ; #$5C00 = 23552 TAY LDX #$56C8 ; #$56C8 = 22216 LDA #$D008 ; #$D008 = 53256 JSR $E59D ; BRA $CA34 LC2CA18: LDA #$B185 ; #$B185 = 45445 JSR $C1B8 ; LDA $2740 STA $F9 LDA $2742 STA $FB LDY #$5686 ; #$5686 = 22150 JSR $D802 ; LDY #$56C6 ; #$56C6 = 22214 JSR $D7F6 ; LC2CA34: PLP PLB RTS LDA $71 STA $7E JSR $D4C5 ; STZ $6F STZ $72 SEP #$20 ; A = 8bit LDA $2D12 ORA $2D11 BEQ $CA57 LDA $0973 AND #$01 BNE $CA57 LDA #$06 ; #$06 = 6 BRA $CA59 LC2CA57: LDA #$05 ; #$05 = 5 LC2CA59: STA $53 ; 一時変数 倍率(上位) JSR $E6AB ; REP #$20 ; A = 16bit LDA #$B036 ; #$B036 = 45110 JSR $C1B8 ; LDA #$1E98 ; #$1E98 = 7832 JSR $C8DE ; LDY #$51AC ; #$51AC = 20908 JSR $D533 ; LDY #$522C ; #$522C = 21036 JSR $D554 ; JSR $E76C ; JSR $CAC8 ; JSR $CC9E ; LDY #$52AE ; #$52AE = 21166 JSR $D7CA ; REP #$20 ; A = 16bit STZ $6B LDA #$00F6 ; #$00F6 = 246 STA $6D REP #$20 ; A = 16bit LDX #$F2D4 ; #$F2D4 = 62164 LDY #$298A ; #$298A = 10634 LDA #$0015 ; #$0015 = 21 MVN $7E,$C0 LDA #$0001 ; #$0001 = 1 STA $29B6 RTS ;-------------------------------- ; ;-------------------------------- LC2CAA5: PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit LDX $8E LDA #$63C4 ; #$63C4 = 25540 STA $99 LC2CAB5: PHX LDY $99 JSR $CB8C ; JSR $E3E3 ; PLX INX CPX #$000A ; #$000A = 10 BNE $CAB5 PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2CAC8: PHB PHP REP #$20 ; A = 16bit STZ $2CDF STZ $2CE1 LDA #$0001 ; #$0001 = 1 STA $2CE3 LDX $80 SEP #$20 ; A = 8bit LDY $8E LDA #$20 ; #$20 = 32 AND $0521,X BEQ $CAEB LDA #$91 ; #$91 = 145 STA $2CDF,Y INY LC2CAEB: LDA #$01 ; #$01 = 1 AND $0521,X BEQ $CAF7 LDA #$92 ; #$92 = 146 STA $2CDF,Y LC2CAF7: LDX $80 LDA $0513,X BNE $CB04 LDA $0511,X JSR $CBF1 ; LC2CB04: STA $F0 LDA $0514,X BNE $CB11 LDA $0512,X JSR $CBF1 ; LC2CB11: STA $F1 LDA $050E,X JSR $CBF1 ; STA $F2 LDA $050F,X JSR $CBF1 ; STA $F3 LDA $0510,X JSR $CBF1 ; STA $F4 LDA $F0 BNE $CB35 LDA $F1 BEQ $CB6B BRA $CB39 LC2CB35: LDA $F1 BNE $CB6B LC2CB39: LDA $F0 ORA $F1 JSR $D9AB ; LDA $9F BIT #$80 BNE $CB53 BIT #$40 BEQ $CB6B LDX $80 LDA $0521,X AND #$20 BEQ $CB6B LC2CB53: LDA $F0 BEQ $CB61 LDA #$02 ; #$02 = 2 STA $2CE1 INC $2CE4 BRA $CB6B LC2CB61: LDA #$02 ; #$02 = 2 STA $2CE3 INC $2CE2 BRA $CB6B LC2CB6B: REP #$20 ; A = 16bit LDX $8E LDA #$5192 ; #$5192 = 20882 STA $99 LC2CB74: PHX LDY $99 JSR $CB8C ; LDA $F0,X JSR $E44E ; PLX INX CPX #$0005 ; #$0005 = 5 BNE $CB74 JSR $CB95 ; PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2CB8C: LDA $99 CLC ADC #$0080 ; #$0080 = 128 STA $99 RTS ;-------------------------------- ; ;-------------------------------- LC2CB95: REP #$20 ; A = 16bit LDA $2CDF AND #$00FF BEQ $CBA5 LDX #$5328 ; #$5328 = 21288 JSR $CBE1 ; LC2CBA5: LDA $2CE0 AND #$00FF BEQ $CBB3 LDX #$53A8 ; #$53A8 = 21416 JSR $CBE1 ; LC2CBB3: LDX $8E LC2CBB5: PHX LDA $C0EA44,X STA $E6 LDA $2CE1,X PHA AND #$000F ASL TAX LDA $C0EA3E,X JSR $C1B8 ; PLA AND #$FF00 ORA #$0004 LDX $E6 JSR $D6DC ; PLX INX INX CPX #$0004 ; #$0004 = 4 BNE $CBB5 RTS ;-------------------------------- ; ;-------------------------------- LC2CBE1: PHX ASL TAX LDA $7ED600,X TAY PLX LDA #$D108 ; #$D108 = 53512 JSR $E59D ; RTS ;-------------------------------- ; ;-------------------------------- LC2CBF1: CMP #$80 ; #$80 = 128 BNE $CBF7 LC2CBF7: RTS ;-------------------------------- ; ;-------------------------------- LC2CBF8: PHB PHP LDA $F1 STA $2723 ; コマンド関連汎用領域?[3] LDA $F2 STA $272C LDA $F3 STA $272D LDA $F5 STA $272F REP #$20 ; A = 16bit LDA $EB STA $2728 LDA $ED STA $272A LDA $F6 STA $2744 LDX $8E LC2CC21: PHX LDA $C0EE09,X STA $F6 TAY LDA $C0EDBF,X STA $FE LDA $C0EE21,X STA $F8 LSR LSR LSR LSR AND #$000F STA $FC LDA $C0EDE3,X STA $FA TAX LDA $F8 JSR $E4ED ; LDA $FE CLC ADC $80 TAX LDA $01,S TAY LDA $0000,X ; FILEPOS_MONDATA CPY #$0008 ; #$0008 = 8 BEQ $CC5E AND #$00FF LC2CC5E: AND #$01FF STA $FE LDY $F6 LDA $01,S TAX LDA $0000,Y ; FILEPOS_MONDATA CPX #$0008 ; #$0008 = 8 BEQ $CC73 AND #$00FF LC2CC73: AND #$01FF CMP $FE BEQ $CC93 BPL $CC81 LDA #$8100 ; #$8100 = 33024 BRA $CC84 LC2CC81: LDA #$8200 ; #$8200 = 33280 LC2CC84: CPX #$0010 ; #$0010 = 16 BNE $CC8C EOR #$0300 LC2CC8C: ORA $FC LDX $FA JSR $D6DC ; LC2CC93: PLX INX INX CPX #$0012 ; #$0012 = 18 BNE $CC21 PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2CC9E: PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit JSR $C941 ; LDX $8E LC2CCAC: PHX LDA $C0EE09,X TAY LDA $C0EE21,X PHA LDA $C0EDD1,X TAX PLA JSR $E4ED ; PLX INX INX CPX #$0012 ; #$0012 = 18 BNE $CCAC PLP PLB RTS PHB SEP #$20 ; A = 8bit LDA #$06 ; #$06 = 6 JSR $CFBD ; STZ $53 ; 一時変数 倍率(上位) JSR $D210 ; STZ $6F JSR $D503 ; JSR $E464 ; JSR $CDC6 ; JSR $D388 ; JSR $CECC ; JSR $CDE3 ; JSR $CD57 ; PHB LDX #$EE53 ; #$EE53 = 61011 JSR $D9FB ; PLB STZ $2D11 LDX #$E95A ; #$E95A = 59738 JSR $C6E9 ; JSR $A9D9 ; JSR $CD08 ; PLB RTS ;-------------------------------- ; ;-------------------------------- LC2CD08: PHP REP #$20 ; A = 16bit LDA $55 ; 一時変数 防御力(上位) AND #$00FF DEC TAX LDA $7A00,X ; FILEPOS_MONMAP AND #$001F SEP #$20 ; A = 8bit STA $D8 JSR $E47D ; REP #$20 ; A = 16bit LDY #$65C4 ; #$65C4 = 26052 LDA $D8 JSR $E4C7 ; LDY #$65D4 ; #$65D4 = 26068 JSR $D93F ; LDY #$65D6 ; #$65D6 = 26070 JSR $D588 ; LDY #$65DA ; #$65DA = 26074 JSR $D59D ; LDA $D8 AND #$001F ASL ASL TAX LDA $D15708,X ; FILEPOS_CHRJOBEQUIP STA $F9 LDA $D1570A,X ; FILEPOS_CHRJOBEQUIP[2] STA $FB LDY #$65F2 ; #$65F2 = 26098 JSR $D7D8 ; PLP RTS ;-------------------------------- ; ;-------------------------------- LC2CD57: PHP REP #$20 ; A = 16bit LDA $55 ; 一時変数 防御力(上位) AND #$00FF DEC TAY LDX $80 SEP #$20 ; A = 8bit LDA $7A00,Y ; FILEPOS_MONMAP STA $EB LDA $0500,X AND #$07 STA $EA REP #$20 ; A = 16bit LDA #$C180 ; #$C180 = 49536 STA $E4 JSR $D2DB ; LDA #$000C ; #$000C = 12 LDX #$ED31 ; #$ED31 = 60721 JSR $D304 ; LDX #$EE53 ; #$EE53 = 61011 LDY #$7514 ; #$7514 = 29972 LDA #$0008 ; #$0008 = 8 MVN $7E,$C0 REP #$20 ; A = 16bit LDA $EA AND #$1F07 LDY #$0005 ; #$0005 = 5 JSR $D492 ; LDA $55 ; 一時変数 防御力(上位) AND #$00FF DEC ASL ASL TAY ASL TAX SEP #$20 ; A = 8bit LDA $0293,X AND #$F1 ORA #$0A STA $0293,X STA $0297,X LDA $0363,Y AND #$F1 ORA #$08 STA $0363,Y STA $0363,Y PLP RTS ;-------------------------------- ; ;-------------------------------- LC2CDC6: PHP REP #$20 ; A = 16bit LDX #$EFC7 ; #$EFC7 = 61383 LDA #$0011 ; #$0011 = 17 JSR $DA9D ; LDA #$5000 ; #$5000 = 20480 STA $2BBA JSR $DDD7 ; LDA #$1016 ; #$1016 = 4118 JSR $C8DE ; PLP RTS ;-------------------------------- ; ;-------------------------------- LC2CDE3: PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit LDA $80 CLC ADC #$054A ; #$054A = 1354 TAY LDX #$E92B ; #$E92B = 59691 LDA #$0005 ; #$0005 = 5 MVN $7E,$C0 STZ $85 STZ $D8 LDX #$0090 ; #$0090 = 144 STX $EC LDY $8E LC2CE07: SEP #$20 ; A = 8bit LDA $7A00,Y ; FILEPOS_MONMAP BMI $CE5A REP #$20 ; A = 16bit AND #$00FF STA $D8 TAX LDA $C0EE6A,X AND #$00FF ORA #$0D00 STA $E2 CLC ADC #$0020 ; #$0020 = 32 STA $E6 TYA ASL TAX LDA $C0EE82,X STA $E0 CLC ADC #$1000 ; #$1000 = 4096 STA $E4 LDX $EC LDA $E0 STA $0200,X LDA $E2 STA $0202,X LDA $E4 STA $0204,X LDA $E6 STA $0206,X TXA CLC ADC #$0008 ; #$0008 = 8 STA $EC JSR $CE5D ; INY BRA $CE07 LC2CE5A: PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2CE5D: JSR $E47D ; LDX $D8 CPX #$0015 ; #$0015 = 21 BNE $CE70 LDA $85 CMP #$0015 ; #$0015 = 21 BEQ $CE7B BRA $CE9D LC2CE70: LDA $D152EA,X ; FILEPOS_CHRJOBLVMAX AND #$00FF CMP $DA BNE $CE9D LC2CE7B: LDA #$0C04 ; #$0C04 = 3076 STA $E2 LDA $E0 SEC SBC #$0900 ; #$0900 = 2304 STA $E0 TYA ASL ASL TAX LDA $E0 STA $0360,X LDA $E2 STA $0362,X INC $85 PHY JSR $CE9E ; PLY LC2CE9D: RTS ;-------------------------------- ; ;-------------------------------- LC2CE9E: LDA $D8 AND #$001F ASL ASL TAX LDY #$054A ; #$054A = 1354 SEP #$20 ; A = 8bit LC2CEAB: LDA $D156B0,X ; FILEPOS_CHRJOBDATA CMP ($80),Y BMI $CEB5 STA ($80),Y LC2CEB5: INX INY CPY #$054E ; #$054E = 1358 BNE $CEAB REP #$20 ; A = 16bit LDA $D8 JSR $E916 ; LDY $80 ORA $054E,Y STA $054E,Y RTS ;-------------------------------- ; ;-------------------------------- LC2CECC: PHB PHP SEP #$20 ; A = 8bit LDX #$0100 ; #$0100 = 256 LDA #$FF ; #$FF = 255 LC2CED5: STA $79FF,X ; 実行する魔法・技・道具・武器のデータ 3バイト目 DEX BNE $CED5 LDX $8E LDY #$0840 ; #$0840 = 2112 LDA #$00 ; #$00 = 0 STA $E3 LDA #$16 ; #$16 = 22 JSR $D8B1 ; PLP PLB RTS SEP #$20 ; A = 8bit LDA #$04 ; #$04 = 4 JSR $CFBD ; LDX #$EFB5 ; #$EFB5 = 61365 LDA #$0011 ; #$0011 = 17 JSR $DA9D ; LDA #$5000 ; #$5000 = 20480 STA $2BBA JSR $DDD7 ; JSR $CFA4 ; LDA #$16 ; #$16 = 22 BPL $CF2C DEC $A9C8,X SBC ($08,S),Y CLC ADC $7E TAY LDX #$51F6 ; #$51F6 = 20982 LDA #$0031 ; #$0031 = 49 JSR $E4ED ; LDA $7E ASL TAX LDA $C0F33A,X TAX LDY $80 SEP #$20 ; A = 8bit LDA $0501,Y CMP #$14 ; #$14 = 20 BNE $CF39 LDA #$48 ; #$48 = 72 ORA $0000,X BRA $CF3E LC2CF39: LDA #$B7 ; #$B7 = 183 AND $0000,X ; FILEPOS_MONDATA LC2CF3E: STA $0000,X REP #$20 ; A = 16bit STZ $6B LDA #$0040 ; #$0040 = 64 STA $6D JSR $D851 ; JSR $D837 ; LDX #$F292 ; #$F292 = 62098 LDY #$298A ; #$298A = 10634 LDA #$0015 ; #$0015 = 21 MVN $7E,$C0 STZ $29B6 JSR $E367 ; LDX $80 LDA $0501,X AND #$001F TAX LDA $C0ED61,X AND #$00FF ASL ASL TAX SEP #$20 ; A = 8bit LDA $C0ED77,X STA $53 ; 一時変数 倍率(上位) REP #$20 ; A = 16bit LDA $C0ED78,X AND #$000F STA $2B63 LDA $C0ED79,X TAX LDY #$2B5F ; #$2B5F = 11103 LDA #$0003 ; #$0003 = 3 MVN $7E,$C0 JSR $D210 ; JSR $D717 ; LDX #$E960 ; #$E960 = 59744 JSR $C6E9 ; RTS ;-------------------------------- ; ;-------------------------------- LC2CFA4: PHB PHP REP #$20 ; A = 16bit LDX #$EE5C ; #$EE5C = 61020 LDY #$51D2 ; #$51D2 = 20946 LDA #$000D ; #$000D = 13 MVN $7E,$C0 LDY #$51D2 ; #$51D2 = 20946 JSR $D7CA ; PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2CFBD: SEP #$20 ; A = 8bit STA $54 ; 一時変数 防御力(下位) JSR $E67C ; JSR $D210 ; REP #$20 ; A = 16bit LDA $8E STA $0204 STA $0206 LDA $71 AND #$00FF STA $7E JSR $D4C5 ; RTS JSR $D230 ; JSR $D3DB ; LDX #$F394 ; #$F394 = 62356 JSR $D04C ; JSR $D4DB ; LDX #$66EE ; #$66EE = 26350 JSR $D658 ; LDX #$6630 ; #$6630 = 26160 LDY #$094A ; #$094A = 2378 JSR $D662 ; LDA $44 AND #$0080 BNE $D00A LDX #$64F2 ; #$64F2 = 25842 LDA #$0103 ; #$0103 = 259 JSR $D6DC ; LC2D00A: PEA $7E7E PLB PLB LDA $0840 BNE $D025 LDA $0842 AND #$00F8 BNE $D025 LDX #$60F2 ; #$60F2 = 24818 LDA #$0103 ; #$0103 = 259 JSR $D6DC ; LC2D025: LDA $08F3 ORA $08F5 BNE $D036 LDX #$6172 ; #$6172 = 24946 LDA #$0105 ; #$0105 = 261 JSR $D6DC ; LC2D036: STZ $0204 STZ $0206 STZ $2D11 SEP #$20 ; A = 8bit LDA #$01 ; #$01 = 1 STA $54 ; 一時変数 防御力(下位) JSR $E67C ; JSR $D210 ; RTS ;-------------------------------- ; ;-------------------------------- LC2D04C: PHB PEA $7E7E PLB PLB SEP #$20 ; A = 8bit LDA #$C0 ; #$C0 = 192 STX $82 STA $84 REP #$20 ; A = 16bit STZ $7E LC2D05E: SEP #$20 ; A = 8bit JSR $D4C5 ; LDX $80 BIT $0500,X BVS $D0A5 JSR $D0B2 ; REP #$20 ; A = 16bit LDA $7E ASL ASL ASL TAY LSR LDX $80 SEP #$20 ; A = 8bit BIT $0500,X REP #$20 ; A = 16bit BPL $D083 INC INC LC2D083: TYX TAY LDA [$82],Y CLC ADC $0240,X STA $0240,X LDA [$82],Y CLC ADC $0244,X STA $0244,X LDA $0222,X BEQ $D0A5 LDA [$82],Y CLC ADC $0220,X STA $0220,X LC2D0A5: REP #$20 ; A = 16bit INC $7E LDA $7E CMP #$0004 ; #$0004 = 4 BNE $D05E PLB RTS ;-------------------------------- ; ;-------------------------------- LC2D0B2: PHB PHP JSR $D4C5 ; LDX $80 SEP #$20 ; A = 8bit LDA #$7E ; #$7E = 126 PHA PLB LDA $051A,X STA $E8 LDA $0500,X STA $EA LDA $0501,X STA $EB LDX $8E LDA $E8 BPL $D0D5 INX LC2D0D5: AND #$30 BEQ $D0DB INX INX LC2D0DB: REP #$20 ; A = 16bit TXA ASL ASL TAX LDA $C0EAC8,X STA $E0 LDA $C0EACA,X STA $E4 LDX $7E SEP #$20 ; A = 8bit LDA $E8 AND #$30 BEQ $D0FF LDX #$0004 ; #$0004 = 4 AND #$20 BEQ $D0FF INX LC2D0FF: REP #$20 ; A = 16bit TXA ASL ASL ASL TAX SEP #$20 ; A = 8bit LDA $E8 BEQ $D11A BMI $D114 AND #$45 BNE $D116 BRA $D11A LC2D114: INX INX LC2D116: INX INX INX INX LC2D11A: LDA $C0EAD8,X STA $E2 LDA $C0EAD9,X STA $E6 JSR $D45F ; LDA $7E ASL AND #$0E STA $E3 STA $E7 REP #$20 ; A = 16bit LDA $7E ASL TAX LDA $C0EB08,X TAY LDX #$01E0 ; #$01E0 = 480 LDA #$0007 ; #$0007 = 7 MVN $7E,$00 LDA $7E ASL TAX LDA $C0F23E,X TAY SEP #$20 ; A = 8bit LDA #$04 ; #$04 = 4 AND $E8 BEQ $D167 REP #$20 ; A = 16bit LDA #$7EDB ; #$7EDB = 32475 STA $0008,Y LDA #$4DD3 ; #$4DD3 = 19923 STA $0010,Y SEP #$20 ; A = 8bit LC2D167: LDA #$02 ; #$02 = 2 AND $E8 BEQ $D181 REP #$20 ; A = 16bit LDA #$3AF5 ; #$3AF5 = 15093 STA $0008,Y LDA #$3210 ; #$3210 = 12816 STA $0010,Y LDA #$7FFF ; #$7FFF = 32767 STA $0006,Y LC2D181: REP #$20 ; A = 16bit STZ $E2 SEP #$20 ; A = 8bit LDA $E8 BIT #$01 BEQ $D1F1 BIT #$A0 BNE $D1F1 BIT #$10 REP #$20 ; A = 16bit BEQ $D19E LDX #$000A ; #$000A = 10 LDA $8E BRA $D1AB LC2D19E: LDA $EA AND #$0007 ASL TAX LDA $EB AND #$00FF ASL LC2D1AB: CLC ADC $C0EB10,X TAX SEP #$20 ; A = 8bit LDA $C0EB1C,X CLC ADC $E0 STA $E0 LDA $C0EB1D,X CLC ADC $E1 STA $E1 LDA $EA AND #$07 BEQ $D1D9 CMP #$01 ; #$01 = 1 BNE $D1EA LDA $EB AND #$1F CMP #$0A ; #$0A = 10 BEQ $D1E5 BRA $D1EA LC2D1D9: LDA $EB AND #$1F CMP #$04 ; #$04 = 4 BEQ $D1E5 CMP #$0A ; #$0A = 10 BNE $D1EA LC2D1E5: LDX #$4E20 ; #$4E20 = 20000 BRA $D1ED LC2D1EA: LDX #$0E20 ; #$0E20 = 3616 LC2D1ED: STX $E2 BRA $D1F5 LC2D1F1: STZ $E0 STZ $E1 LC2D1F5: REP #$20 ; A = 16bit LDA $7E ASL TAX LDA $C0EB08,X SEC SBC #$0020 ; #$0020 = 32 TAY LDX #$01E0 ; #$01E0 = 480 LDA #$0003 ; #$0003 = 3 MVN $00,$00 PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2D210: PHP SEP #$20 ; A = 8bit JSR $E6AB ; LDA #$01 ; #$01 = 1 TRB $CA LDA $53 ; 一時変数 倍率(上位) STA $50 ; 一時変数 攻撃力(下位) LDA $55 ; 一時変数 防御力(上位) STA $52 ; 一時変数 倍率(下位) LDA $54 ; 一時変数 防御力(下位) STA $51 ; 一時変数 攻撃力(上位) STZ $4F ; 一時変数 回避率 STZ $56 ; 一時変数 命中判定用? (0であれば命中) STZ $57 ; 一時変数 汎用データ1 STZ $58 ; 一時変数 汎用データ2 PLP RTS ;-------------------------------- ; ;-------------------------------- LC2D230: PHB PHP REP #$20 ; A = 16bit LDX #$2000 ; #$2000 = 8192 LDA $8E LC2D239: DEX DEX STZ $9000,X BNE $D239 STZ $7E LC2D242: JSR $D298 ; LDA $7E INC STA $7E CMP #$0004 ; #$0004 = 4 BNE $D242 JSR $D25B ; LDX #$EFEB ; #$EFEB = 61419 JSR $D9FB ; PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2D25B: LDX $8E LC2D25D: PHX LDA $C0ECC3,X STA $E0 LDA $C0ECC5,X STA $E2 LDA $C0ECC7,X STA $E4 LDA $C0ECC9,X PHA LDA $C0ECCB,X PLX JSR $D304 ; PLA CLC ADC #$000A ; #$000A = 10 TAX CPX #$001E ; #$001E = 30 BNE $D25D JSR $D34C ; LDX #$B9A0 ; #$B9A0 = 47520 LDY #$9080 ; #$9080 = 36992 LDA #$003F ; #$003F = 63 MVN $7E,$C3 RTS ;-------------------------------- ; ;-------------------------------- LC2D298: PHB PHP LDA $7E ASL TAX LDA $C0EC1B,X STA $E4 JSR $D4C5 ; LDX $80 ;-------------------------------- ; ;-------------------------------- LC2D2A9: LDA $000500,X STA $EA JSR $D2DB ; LDA #$0018 ; #$0018 = 24 LDX #$EC37 ; #$EC37 = 60471 JSR $D304 ; LDA $EA AND #$0007 ASL ASL TAX LDA $C0EC97,X STA $E0 LDA $C0EC99,X STA $E2 LDA #$0006 ; #$0006 = 6 LDX #$ECAB ; #$ECAB = 60587 JSR $D304 ; PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2D2DB: PHP REP #$20 ; A = 16bit LDA $EB AND #$001F ASL PHA ASL ADC $01,S XBA STA $01,S LDA $EA AND #$0007 ASL ASL TAX PLA ADC $C0EC23,X STA $E0 LDA $8E ADC $C0EC25,X STA $E2 PLP RTS ;-------------------------------- ; ;-------------------------------- LC2D304: PHB PHP STA $E8 LC2D308: PHX LDA $E4 CLC ADC $C00002,X TAY LDA $E0 CLC ADC $C00000,X TAX LDA $E2 ADC $8E AND #$00FF CMP #$00D4 ; #$00D4 = 212 BEQ $D33A CMP #$00D3 ; #$00D3 = 211 BEQ $D332 LDA #$001F ; #$001F = 31 MVN $7E,$D2 BRA $D340 LC2D332: LDA #$001F ; #$001F = 31 MVN $7E,$D3 BRA $D340 LC2D33A: LDA #$001F ; #$001F = 31 MVN $7E,$D4 LC2D340: PLX INX INX INX INX DEC $E8 BNE $D308 PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2D34C: LDX $8E LC2D34E: PHX TXA CLC ADC #$0017 ; #$0017 = 23 TAX CLC ADC #$0007 ; #$0007 = 7 TAY LDA #$0008 ; #$0008 = 8 STA $85 LC2D35F: LDA $9000,X AND #$00FF STA $9000,Y DEX DEY DEY DEC $85 BNE $D35F PLA CLC ADC #$0020 ; #$0020 = 32 TAX CMP #$0800 ; #$0800 = 2048 BNE $D34E RTS ;-------------------------------- ; ;-------------------------------- LC2D37B: PHB PHP REP #$20 ; A = 16bit LDX #$EFE2 ; #$EFE2 = 61410 JSR $D9FB ; PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2D388: PHB PHP REP #$20 ; A = 16bit LDX #$1800 ; #$1800 = 6144 LC2D38F: STZ $AFFE,X DEX DEX BNE $D38F LDX $80 LDA $0500,X AND #$0007 STA $EA LDY #$0016 ; #$0016 = 22 LC2D3A3: REP #$20 ; A = 16bit LDA $EB AND #$0018 ASL ASL ORA $EB AND #$0067 ASL XBA LSR LSR LSR ADC #$B000 ; #$B000 = 45056 STA $E4 PHY JSR $D2DB ; LDA #$0006 ; #$0006 = 6 LDX #$ED31 ; #$ED31 = 60721 JSR $D304 ; PLY SEP #$20 ; A = 8bit INC $EB DEY BNE $D3A3 REP #$20 ; A = 16bit LDX #$EFD9 ; #$EFD9 = 61401 JSR $D9FB ; PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2D3DB: PHB PHP REP #$20 ; A = 16bit STZ $7E LC2D3E1: JSR $D45F ; LDA $7E INC STA $7E CMP #$0004 ; #$0004 = 4 BNE $D3E1 LDX #$B9E0 ; #$B9E0 = 47584 LDY #$7480 ; #$7480 = 29824 LDA #$001F ; #$001F = 31 MVN $7E,$C3 LDX #$F867 ; #$F867 = 63591 LDY #$74C0 ; #$74C0 = 29888 LDA #$001F ; #$001F = 31 MVN $7E,$C0 LDX #$B960 ; #$B960 = 47456 LDY #$74E0 ; #$74E0 = 29920 LDA #$001F ; #$001F = 31 MVN $7E,$C3 JSR $D42E ; LDX #$EFF4 ; #$EFF4 = 61428 LDY #$4300 ; #$4300 = 17152 LDA #$0006 ; #$0006 = 6 MVN $00,$C0 SEP #$20 ; A = 8bit STZ $2121 LDA #$01 ; #$01 = 1 STA $420B PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2D42E: LDA #$04 ; #$04 = 4 BRK $85 INX LDY #$7300 ; #$7300 = 29440 LC2D436: LDX #$F827 ; #$F827 = 63527 LDA #$003F ; #$003F = 63 MVN 7E,C0 DEC $E8 BNE $D436 JSR $D447 ; RTS ;-------------------------------- ; ;-------------------------------- LC2D447: PHP REP #$20 ; A = 16bit LDY $8E LC2D44C: LDA $0971 STA $7302,Y TYA CLC ADC #$0008 ; #$0008 = 8 TAY CMP #$0100 ; #$0100 = 256 BNE $D44C PLP RTS ;-------------------------------- ; ;-------------------------------- LC2D45F: PHB PHP SEP #$20 ; A = 8bit JSR $D4C5 ; LDX $80 LDA $0500,X AND #$07 XBA LDA $0501,X AND #$1F LDY $7E BIT $051A,X BVS $D484 BPL $D47E LDA #$15 ; #$15 = 21 LC2D47E: XBA JSR $D492 ; BRA $D48F LC2D484: LDX #$F807 ; #$F807 = 63495 REP #$20 ; A = 16bit JSR $D4B4 ; MVN $7E,$C0 LC2D48F: PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2D492: PHB PHP PHX REP #$20 ; A = 16bit PHA AND #$0007 ASL TAX PLA AND #$1F00 LSR LSR LSR CLC ADC $C0F246,X TAX JSR $D4B4 ; MVN $7E,$D4 PLX PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2D4B4: TYA AND #$0007 XBA LSR LSR LSR CLC ADC #$7400 ; #$7400 = 29696 TAY LDA #$001F ; #$001F = 31 RTS ;-------------------------------- ; ;-------------------------------- LC2D4C5: PHX PHP REP #$20 ; A = 16bit LDA $7E AND #$0003 STA $7E ASL TAX LDA $C0EA64,X STA $80 PLP PLX RTS ;-------------------------------- ; ;-------------------------------- LC2D4DB: PHB REP #$20 ; A = 16bit LDX #$EF6D ; #$EF6D = 61293 LDA #$0017 ; #$0017 = 23 JSR $DA9D ; STZ $7E LC2D4E9: LDA $7E ASL TAX LDA $C0EA5C,X STA $2BBA JSR $DDD7 ; LDA $7E INC STA $7E CMP #$0004 ; #$0004 = 4 BNE $D4E9 PLB RTS ;-------------------------------- ; ;-------------------------------- LC2D503: LDX $80 LDA $0501,X AND #$001F STA $D8 LDA $053A,X ; ジョブレベル AND #$000F STA $DA LDA $053B,X ; アビリティポイント AND #$0FFF STA $DC LDA $D8 ASL TAX LDA $DA ASL CLC ADC $DA ADC $D152C0,X ; FILEPOS_CHRJOBLVUP_ADDR TAX LDA $D10000,X ; FILEPOS_ITEMDATA STA $DE RTS ;-------------------------------- ; ;-------------------------------- LC2D533: LDX $80 LDA $0500,X AND #$0007 ASL TAX LDA $C0EA50,X TYX TAY LDA #$0006 ; #$0006 = 6 JSR $E59D ; RTS LDX $80 LDA $051A,X AND #$007F BNE $D55C ;-------------------------------- ; ;-------------------------------- LC2D554: LDX $80 LDA $0501,X JSR $E4C7 ; LC2D55C: RTS LDA $7E AND #$0003 ASL TAX LDA $C0EA48,X TYX TAY LDA #$0021 ; #$0021 = 33 JSR $E4ED ; RTS TYX LDA $D8 CMP #$0015 ; #$0015 = 21 BEQ $D57E LDY #$EA74 ; #$EA74 = 60020 BRA $D581 LC2D57E: LDY #$EA81 ; #$EA81 = 60033 LC2D581: LDA #$C08C ; #$C08C = 49292 JSR $E59D ; RTS ;-------------------------------- ; ;-------------------------------- LC2D588: LDA $D8 CMP #$0015 ; #$0015 = 21 BEQ $D59C TYX LDA $DA AND #$000F CLC ADC #$0053 ; #$0053 = 83 STA $0000,X LC2D59C: RTS ;-------------------------------- ; ;-------------------------------- LC2D59D: LDX $D8 CPX #$0015 ; #$0015 = 21 BEQ $D5D2 LDA $D152EA,X ; FILEPOS_CHRJOBLVMAX AND #$00FF CMP $DA BEQ $D5C8 TYX LDY #$01DC ; #$01DC = 476 LDA #$0032 ; #$0032 = 50 JSR $E4ED ; INX INX INX INX INX INX INX INX INY INY JSR $E4ED ; BRA $D5D2 LC2D5C8: TYX LDY #$EA6C ; #$EA6C = 60012 LDA #$C087 ; #$C087 = 49287 JSR $E59D ; LC2D5D2: RTS TYX LDA $80 CLC ADC #$0506 ; #$0506 = 1286 TAY ;-------------------------------- ; ;-------------------------------- LC2D5DB: LDA #$7E42 ; #$7E42 = 32322 JSR $E4ED ; PHA TXA CLC ADC #$000A ; #$000A = 10 TAX PLA INY INY JSR $E4ED ; RTS TYX LDA $80 CLC ADC #$050A ; #$050A = 1290 TAY LDA #$7E32 ; #$7E32 = 32306 JSR $E4ED ; PHA TXA CLC ADC #$000A ; #$000A = 10 TAX PLA INY INY JSR $E4ED ; RTS PHB PHP LDX $80 LDA $051A,X XBA ASL AND #$FE00 BEQ $D655 STA $E0 TYX LDA #$003A ; #$003A = 58 STA $E4 LDA #$0008 ; #$0008 = 8 STA $E2 TAY DEY LC2D628: ASL $E0 BCC $D63C LDA $E4 STA $0000,X LDA #$00FF ; #$00FF = 255 STA $7DFFC0,X INX INX DEC $E2 LC2D63C: INC $E4 DEY BNE $D628 LDY $E2 INY LDA #$00FF ; #$00FF = 255 LC2D647: DEY BEQ $D655 STA $0000,X STA $7DFFC0,X INX INX BRA $D647 LC2D655: PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2D658: LDY #$0947 ; #$0947 = 2375 LDA #$0073 ; #$0073 = 115 JSR $E4ED ; RTS ;-------------------------------- ; ;-------------------------------- LC2D662: PHP SEP #$20 ; A = 8bit LDA #$3C ; #$3C = 60 STA $8D CPY #$2D17 ; #$2D17 = 11543 BEQ $D674 JSR $D6A4 ; LDY #$0189 ; #$0189 = 393 LC2D674: JSR $D6A4 ; LDY #$0189 ; #$0189 = 393 JSR $D6A4 ; STA $8B REP #$20 ; A = 16bit LDA #$0032 ; #$0032 = 50 LDY $89 CPY #$03E8 ; #$03E8 = 1000 BMI $D68E ORA #$0080 LC2D68E: LDY #$0189 ; #$0189 = 393 JSR $E4ED ; INY INY TXA CLC ADC #$0008 ; #$0008 = 8 TAX LDA #$00A1 ; #$00A1 = 161 JSR $E4ED ; PLP RTS ;-------------------------------- ; ;-------------------------------- LC2D6A4: PHX INY INY INY LDA #$A200 ; #$A200 = 41472 TSB $00 LC2D6AD: STA $004205 ; 除算器(16bit÷8bit) 被除数(上位) LDA $0000,Y ; FILEPOS_MONDATA STA $004204 ; 除算器(16bit÷8bit) 被除数(下位) DEY LDA $8D STA $004206 NOP NOP NOP NOP NOP NOP NOP NOP LDA $004214 ; 除算器(16bit÷8bit) 除算結果(下位) STA $88,X LDA $004216 ; 乗算結果(下位) or 除算余剰結果 DEX BNE $D6AD PHA LDA #$853C ; #$853C = 34108 STA $FA68 RTS ;-------------------------------- ; ;-------------------------------- LC2D6DC: PHB PHP SEP #$20 ; A = 8bit STA $E0 LDA $E0 BEQ $D714 XBA PHA AND #$07 ASL ASL STA $E1 PLA AND #$80 STA $E2 INX LC2D6F4: LDA $0000,X ; FILEPOS_MONDATA AND #$E3 ORA $E1 STA $0000,X BIT $E2 BMI $D70E LDA $7DFFC0,X AND #$E3 ORA $E1 STA $7DFFC0,X LC2D70E: INX INX DEC $E0 BNE $D6F4 LC2D714: PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2D717: PHB PHP LDA $2B63 AND #$000F ASL ASL TAX LDA $C0F316,X PHX JSR $C1B8 ; PLX LDA $C0F318,X TAX LDY #$7100 ; #$7100 = 28928 JSR $C1FD ; LDA $2B63 AND #$000F ASL ASL ASL TAX LDA #$0004 ; #$0004 = 4 STA $85 LDY $80 LC2D747: LDA $C0F322,X BEQ $D756 PHX TAX LDA $0516,Y JSR $D8E4 ; PLX LC2D756: INX INX INY DEC $85 BNE $D747 PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2D760: LDA #$53 ; #$53 = 83 LDX $B820 CMP ($A5,X) EOR $29,X SBC $183A00,X ADC $6B TAX LDA $7A00,X ; FILEPOS_MONMAP AND #$00FF SEP #$20 ; A = 8bit BIT #$80 BEQ $D781 AND #$7F CLC ADC #$4E ; #$4E = 78 LC2D781: REP #$20 ; A = 16bit AND #$00FF PHA ASL TAX LDA $D1716C,X STA $7E2CEB JSR $DA16 ; PLA TAX SEP #$20 ; A = 8bit LDA $C0F739,X BEQ $D7C9 PHA AND #$1F STA $E0 PLA AND #$E0 LSR LSR LSR LSR LSR STA $E1 LDA $E0 LDY #$568C ; #$568C = 22156 JSR $E4C7 ; REP #$20 ; A = 16bit LDX #$56A4 ; #$56A4 = 22180 LDY #$01E1 ; #$01E1 = 481 LDA #$0011 ; #$0011 = 17 JSR $E4ED ; LDA #$AE37 ; #$AE37 = 44599 JSR $C1B8 ; LC2D7C9: RTS ;-------------------------------- ; ;-------------------------------- LC2D7CA: LDX $80 LDA $000540,X STA $F9 LDA $000542,X STA $FB ;-------------------------------- ; ;-------------------------------- LC2D7D8: LDA $F9 CMP #$FFFF ; #$FFFF = 65535 BNE $D7F2 LDA $FB CMP #$FFFF ; #$FFFF = 65535 BNE $D7F2 TYX LDY #$F7A8 ; #$F7A8 = 63400 LDA #$C004 ; #$C004 = 49156 JSR $E59D ; BRA $D7F5 LC2D7F2: JSR $D802 ; LC2D7F5: RTS ;-------------------------------- ; ;-------------------------------- LC2D7F6: LDA #$0005 ; #$0005 = 5 STA $85 LDX #$0041 ; #$0041 = 65 JSR $D80D ; RTS ;-------------------------------- ; ;-------------------------------- LC2D802: LDA #$000D ; #$000D = 13 STA $85 LDX $8E JSR $D80D ; RTS ;-------------------------------- ; ;-------------------------------- LC2D80D: LDA $F9 AND $C0F7AD,X STA $FD LDA $FB AND $C0F7AF,X ORA $FD BEQ $D82D LDA $C0F7B1,X AND #$00FF BEQ $D82D STA $0000,Y INY INY LC2D82D: INX INX INX INX INX DEC $85 BNE $D80D ; RTS ;-------------------------------- ; ;-------------------------------- LC2D837: LDY $6B LDX $8E LC2D83B: PHX LDA $C0F478,X TAX LDA $7A00,Y ; FILEPOS_MONMAP JSR $D8E4 ; PLX INY INX INX CPX #$0020 ; #$0020 = 32 BNE $D83B RTS ;-------------------------------- ; ;-------------------------------- LC2D851: PHP LDX #$0200 ; #$0200 = 512 LC2D855: DEX DEX STZ $7A00,X ; 実行する魔法・技・道具・武器のデータ 4バイト目 BNE $D855 LDA $7E ASL TAX LDA $C0F33A,X TAY SEP #$20 ; A = 8bit LDX $8E INX STZ $E0 LDA #$01 ; #$01 = 1 STA $E3 LDA #$2C ; #$2C = 44 JSR $D8B1 ; LDA #$80 ; #$80 = 128 STA $E0 INY LDA #$32 ; #$32 = 50 JSR $D8B1 ; INY LDA #$38 ; #$38 = 56 JSR $D8B1 ; INY LDA #$3E ; #$3E = 62 JSR $D8B1 ; INY LDA #$44 ; #$44 = 68 JSR $D8B1 ; INY LDA #$49 ; #$49 = 73 JSR $D8B1 ; INY LDA #$4C ; #$4C = 76 JSR $D8B1 ; STZ $E0 INY LDA #$4E ; #$4E = 78 JSR $D8B1 ; INY LDA #$80 ; #$80 = 128 STA $E3 LDA #$A1 ; #$A1 = 161 JSR $D8B1 ; PLP RTS ;-------------------------------- ; ;-------------------------------- LC2D8B1: STA $E4 LC2D8B3: LDA $0000,Y ; FILEPOS_MONDATA STA $E2 LDA #$08 ; #$08 = 8 STA $E5 LC2D8BC: ASL $E2 BCC $D8CA LDA $E3 STA $7A00,X ; 実行する魔法・技・道具・武器のデータ 4バイト目 BIT $E0 BMI $D8CA INX LC2D8CA: INC $E3 LDA $E3 CMP $E4 BPL $D8D9 DEC $E5 BNE $D8BC INY BRA $D8B3 LC2D8D9: BIT $E0 BPL $D8E3 LDA $7A00,X ; FILEPOS_MONMAP BEQ $D8E3 INX LC2D8E3: RTS ;-------------------------------- ; ;-------------------------------- LC2D8E4: PHB PHY PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit AND #$00FF PHA PHX ASL TAX LDA $7ED600,X TAY PLX PLA BIT #$0080 BEQ $D909 LDA #$D108 ; #$D108 = 53512 JSR $E59D ; BRA $D93B LC2D909: PHX PHY PHA LDX #$F4A3 ; #$F4A3 = 62627 LDY #$2B3F ; #$2B3F = 11071 LDA #$0007 ; #$0007 = 7 MVN $7E,$C0 PLA PLY PLX AND #$007F BEQ $D926 LDA #$00C9 ; #$00C9 = 201 STA $2B3F LC2D926: PHX TYX LDY #$2B40 ; #$2B40 = 11072 LDA #$0004 ; #$0004 = 4 MVN $7E,$D1 PLX LDY #$2B3F ; #$2B3F = 11071 LDA #$7E08 ; #$7E08 = 32264 JSR $E59D ; LC2D93B: PLP PLY PLB RTS ;-------------------------------- ; ;-------------------------------- LC2D93F: TYX REP #$20 ; A = 16bit LDA $D8 CMP #$0015 ; #$0015 = 21 BEQ $D94E LDY #$F498 ; #$F498 = 62616 BRA $D951 LC2D94E: LDY #$F4A3 ; #$F4A3 = 62627 LC2D951: LDA #$C08A ; #$C08A = 49290 JSR $E59D ; RTS ;-------------------------------- ; ;-------------------------------- LC2D958: PHP PHB STZ $7E JSR $D4C5 ; LDX $80 LDA $0500,X AND #$C907 TSB $F0 ASL INC $7E LDA $7E CMP #$F004 ; #$F004 = 61444 ROL $80,X INX REP #$20 ; A = 16bit JSR $D503 ; JSR $E464 ; JSR $DAA4 ; SEP #$20 ; A = 8bit LDX $7E INC $0420,X LDA #$15 ; #$15 = 21 STA $D8 JSR $E47D ; LDX $80 LDA $DA STA $053A,X ; ジョブレベル LDA $D8 STA $0501,X REP #$20 ; A = 16bit LDA $DC STA $053B,X ; アビリティポイント SEP #$20 ; A = 8bit JSR $EB82 ; JSR $E6D6 ; PLB PLP RTS ;-------------------------------- ; ;-------------------------------- LC2D9AB: PHP PHB PHY REP #$20 ; A = 16bit AND #$00FF PHA ASL TAX LDA $7ED000,X TAX PHX LDY #$019B ; #$019B = 411 LDA #$000B ; #$000B = 11 MVN $00,$D1 PLX PLA CMP #$0061 ; #$0061 = 97 BEQ $D9D3 CMP #$0063 ; #$0063 = 99 BEQ $D9EF BRA $D9F7 LC2D9D3: LDA $09B5 ; 逃走回数(下位) AND #$00FF PHA LDA $A2 AND #$00FF SEC SBC $01,S STA $01,S PLA BPL $D9E9 LDA $8E LC2D9E9: SEP #$20 ; A = 8bit STA $A2 BRA $D9F7 LC2D9EF: SEP #$20 ; A = 8bit LDA $09B5 ; 逃走回数(下位) LSR STA $A2 LC2D9F7: PLY PLB PLP RTS ;-------------------------------- ; ;-------------------------------- LC2D9FB: LDA $C00000,X STA $002116 INX INX LDY #$4300 ; #$4300 = 17152 LDA #$0006 ; #$0006 = 6 MVN 00,C0 SEP #$20 ; A = 8bit LDA #$01 ; #$01 = 1 STA $420B RTS ;-------------------------------- ; ;-------------------------------- LC2DA16: PHB PHP PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit LDA $2CE5 STA $2CED STZ $2CEF LC2DA28: LDX $2CEB LDY #$2CF1 ; #$2CF1 = 11505 LDA $2CE7 DEC MVN $7E,$D1 INC STA $0000,Y LDX $8E SEP #$20 ; A = 8bit LC2DA3D: LDA $2CF1,X CMP #$01 ; #$01 = 1 BEQ $DA4C INX CPX $2CE7 BNE $DA3D BRA $DA4F LC2DA4C: STZ $2CF1,X LC2DA4F: REP #$20 ; A = 16bit LDX $2CED LDY #$2CF1 ; #$2CF1 = 11505 LDA $2CE7 AND #$00FF ORA #$7E00 JSR $E59D ; TYA SEC SBC #$2CF1 ; #$2CF1 = 11505 CLC ADC $2CEB TAX LDA $D10000,X ; FILEPOS_ITEMDATA AND #$00FF BEQ $DA9A CMP #$0001 ; #$0001 = 1 BNE $DA7C INX LC2DA7C: STX $2CEB LDA $2CED CLC ADC #$0080 ; #$0080 = 128 STA $2CED LDA $2CE7 CLC ADC $2CEF STA $2CEF CMP $2CE9 BEQ $DA9A BRA $DA28 LC2DA9A: PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2DA9D: LDY #$2BBE ; #$2BBE = 11198 MVN $7E,$C0 RTS ;-------------------------------- ; ;-------------------------------- LC2DAA4: PHB PHP REP #$20 ; A = 16bit LDA $6F PHA SEP #$20 ; A = 8bit JSR $E178 ; LDA #$01 ; #$01 = 1 LC2DAB2: STA $6F JSR $E211 ; LDA $73 JSR $E286 ; LDA $90 BNE $DAC8 LDA #$01 ; #$01 = 1 XBA LDA $73 JSR $E2CE ; LC2DAC8: LDA $6F INC CMP #$06 ; #$06 = 6 BNE $DAB2 JSR $E18F ; REP #$20 ; A = 16bit PLA STA $6F PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2DADA: LDX $8E LC2DADC: LDA $C0EED2,X BEQ $DAEB CMP $29E7 BEQ $DAEE INX INX BRA $DADC LC2DAEB: STZ $29E7 LC2DAEE: RTS ;-------------------------------- ; ;-------------------------------- LC2DAEF: PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit STZ $29F1 SEP #$20 ; A = 8bit LDA $29F8 STA $004202 ; 乗算器(8bit×8bit) 被乗数 LDA $29F9 STA $004203 ; 乗算器(8bit×8bit) 乗数 NOP NOP NOP REP #$20 ; A = 16bit LDA $004216 ; 乗算結果(下位) or 除算余剰結果 STA $29EF SEP #$20 ; A = 8bit LDA $29E7 JSR $DADA ; LDA $29E7 BEQ $DB63 REP #$20 ; A = 16bit LDA $C0E82B,X STA $C7 SEP #$20 ; A = 8bit LDY $8E LDA $29EA,Y BNE $DB3D INY CPY #$04 ; #$04 = 4 BRK $D0 SBC $80,X ROL $84 ROR $C520,X PEI $A4 BRA $DBA7 COP $00 JMP ($01C7) LDA $29F1 BEQ $DB63 REP #$20 ; A = 16bit LDA $29E7 AND #$00FF ORA #$0100 JSR $E328 ; DEC $29E8 JSR $E0C8 ; LC2DB63: PLP PLB RTS PHP LDA $051A,Y BIT #$C2 REP #$20 ; A = 16bit BNE $DCFC LDA $050A,Y CMP $050C,Y BEQ $DB90 LDA $29EF CLC ADC $050A,Y STA $050A,Y LDA $050C,Y CMP $050A,Y BPL $DB8D STA $050A,Y LC2DB8D: INC $29F1 LC2DB90: PLP RTS PHP LDA $051A,Y BIT #$C2C2 JSR $1FD0 ; LDA $0508,Y CMP $0506,Y BNE $DBAC LDA $050C,Y LC2DBA7: CMP $050A,Y BEQ $DBBB LC2DBAC: LDA $0508,Y STA $0506,Y LDA $050C,Y STA $050A,Y INC $29F1 LC2DBBB: PLP RTS LDA $051A,Y BIT #$F020 ORA #$F82D AND #$1A99 ORA $EE SBC ($29),Y RTS PHP LDA $051A,Y BIT #$F002 BPL $DC00 SBC $1A99,X ORA $C2 JSR $01A9 BRK $99 ASL $05 INC $29F1 PLP RTS LDA $051A,Y BIT #$F001 ORA #$F82D AND #$1A99 ORA $EE SBC ($29),Y RTS LDA $051A,Y BIT #$F040 ORA #$F82D AND #$1A99 ORA $EE SBC ($29),Y RTS LDA $051A,Y BIT #$F010 ORA #$F82D AND #$1A99 ORA $EE SBC ($29),Y RTS PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit STZ $29F1 LDA $71 AND #$000F STA $7E JSR $D4C5 ; LDX $80 SEP #$20 ; A = 8bit LDA $0502,X ; (レベル) STA $004202 ; 乗算器(8bit×8bit) 被乗数 LDA $052B,X STA $004203 ; 乗算器(8bit×8bit) 乗数 NOP NOP NOP NOP LDA $004217 ; 乗算器(8bit×8bit) 乗算結果(上位) CLC ADC #$04 ; #$04 = 4 STA $004202 ; 乗算器(8bit×8bit) 被乗数 LDA $29F9 STA $004203 ; 乗算器(8bit×8bit) 乗数 NOP NOP NOP REP #$20 ; A = 16bit LDA $004216 ; 乗算結果(下位) or 除算余剰結果 TAY LDA $55 ; 一時変数 防御力(上位) AND #$000F CMP #$0005 ; #$0005 = 5 BNE $DC70 TYA LSR TAY LC2DC70: STY $29EF SEP #$20 ; A = 8bit LDX $8E LC2DC77: LDA $C0EEBA,X BEQ $DCCF CMP $29E7 BEQ $DC86 INX INX BRA $DC77 LC2DC86: REP #$20 ; A = 16bit LDA $C0E815,X STA $C7 SEP #$20 ; A = 8bit LDY $8E LDA $29EA,Y BEQ $DCA6 PHY STY $7E JSR $D4C5 ; LDY $80 PER $C2DCA4 JMP ($01C7) PLY LC2DCA6: INY CPY #$04 ; #$04 = 4 BRK $D0 INC $AD SBC ($29),Y BEQ $DCCF REP #$20 ; A = 16bit LDA $71 AND #$000F STA $7E JSR $D4C5 ; LDY $80 LDA $050A,Y SEC SBC $29E8 STA $050A,Y STA $29DF JSR $E0C8 ; LC2DCCF: PLP PLB RTS PHP LDA $051A,Y BIT #$C2 REP #$20 ; A = 16bit BNE $DCFC LDA $0506,Y CMP $0508,Y BEQ $DCFC LDA $29EF CLC ADC $0506,Y STA $0506,Y LDA $0508,Y CMP $0506,Y BPL $DCF9 STA $0506,Y LC2DCF9: INC $29F1 LC2DCFC: PLP RTS LDA $051A,Y BIT #$F004 ORA #$F82D AND #$1A99 ORA $EE SBC ($29),Y RTS LDA $051A,Y BIT #$D0C2 ORA #$FA4D AND #$1A99 ORA $EE SBC ($29),Y RTS PHP LDA $051A,Y BIT #$F080 BMI $DD52 ADC $051A99,X REP #$20 ; A = 16bit LDA $0508,Y SEP #$20 ; A = 8bit STA $00211B ; 乗算器(16bit×8bit) 被乗数 XBA STA $00211B ; 乗算器(16bit×8bit) 被乗数 LDA $29FA STA $00211C ; 乗算器(16bit×8bit) 乗数 STA $00211C ; 乗算器(16bit×8bit) 乗数 REP #$20 ; A = 16bit LDA $002134 ; 乗算器(16bit×8bit) 乗算結果(下位) LSR LSR LSR LSR LC2DD52: STA $0506,Y INC $29F1 PLP RTS LDA $051A,Y BIT #$F075 ORA #$F82D AND #$1A99 ORA $EE SBC ($29),Y RTS LDA $55 ; 一時変数 防御力(上位) CMP #$D005 ; #$D005 = 53253 ORA $4C,S CMP ($DC) LDA $051A,Y BIT #$D0C2 ORA ($08) REP #$20 ; A = 16bit LDA $0508,Y CMP $0506,Y BEQ $DD8C STA $0506,Y INC $29F1 LC2DD8C: PLP RTS PHP LDA $051A,Y BIT #$F080 BPL $DDC0 ADC $051A99,X REP #$20 ; A = 16bit LDA $0508,Y STA $0506,Y INC $29F1 PLP RTS LDA $051A,Y AND $29F8 STA $051A,Y INC $29F1 RTS LDA $051A,Y BIT #$D0C0 ORA #$FA4D AND #$1A99 ORA $EE SBC ($29),Y RTS LDA $051A,Y BIT #$D0C2 ORA #$FA0D AND #$1A99 ORA $EE SBC ($29),Y RTS ;-------------------------------- ; ;-------------------------------- LC2DDD7: PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit LDA $2BBA STA $E6 LDA $2BBE BEQ $DDED JSR $C1B8 ; LC2DDED: JSR $D4C5 ; JSR $D503 ; LDX $80 LDA $0500,X AND #$0040 BNE $DE3B LDA $2BBA STA $E6 LDA $2BC0 BEQ $DE0A JSR $C1B8 ; LC2DE0A: LDA $2BC2 STA $2BBC LDX $8E TXY LC2DE13: LSR $2BBC BCC $DE34 LDA $2BBA CLC ADC $2BC4,Y PHX PHY PHP TAY LDA $C0E7FF,X STA $C7 PER $C2DE2E JMP ($01C7) PLP PLY PLX INY INY LC2DE34: INX INX CPX #$0016 ; #$0016 = 22 BNE $DE13 LC2DE3B: PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2DE3E: PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit LDX #$0200 ; #$0200 = 512 LDA #$FFFF ; #$FFFF = 65535 LC2DE4D: STA $79FE,X ; 実行する魔法・技・道具・武器のデータ 2バイト目 DEX DEX BNE $DE4D LDA #$7A00 ; #$7A00 = 31232 STA $E0 LDA $29E2 AND #$00FF ASL ASL TAX LDA $C0EF1A,X AND #$00FF STA $E4 LDA $C0EF1B,X AND #$00FF STA $E6 LDA $C0EF19,X AND #$00FF TAX LC2DE7C: SEP #$20 ; A = 8bit LDY $E6 STY $85 LDY $8E LC2DE84: LDA $29FB,X BPL $DE94 TXA STA ($E0),Y INY PHX PHY JSR $DEC7 ; PLY PLX LC2DE94: SEP #$20 ; A = 8bit INX DEC $85 BNE $DE84 LDA $29E2 CMP #$06 ; #$06 = 6 BEQ $DEB8 LDA #$FE ; #$FE = 254 LC2DEA4: CPY $E6 BEQ $DEAD STA ($E0),Y INY BRA $DEA4 LC2DEAD: REP #$20 ; A = 16bit LDA $E0 CLC ADC $E6 STA $E0 BRA $DEC0 LC2DEB8: REP #$20 ; A = 16bit TYA CLC ADC $E0 STA $E0 LC2DEC0: DEC $E4 BNE $DE7C PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2DEC7: PHP REP #$20 ; A = 16bit AND #$00FF STA $29E4 CMP #$0048 ; #$0048 = 72 BPL $DF3E CMP #$0012 ; #$0012 = 18 BMI $DF3E SEP #$20 ; A = 8bit LDX $8E LC2DEDE: LDA $C0EEF4,X CMP #$FF ; #$FF = 255 BEQ $DF3E CMP $29E4 BEQ $DEF0 INX INX INX BRA $DEDE LC2DEF0: REP #$20 ; A = 16bit LDA $C0EEF5,X AND #$000F TAY LDA $C0EEF6,X SEP #$20 ; A = 8bit CMP $29D8,Y BEQ $DF07 BPL $DF3E LC2DF07: REP #$20 ; A = 16bit LDX $29E4 LDA $2A9D,X AND #$00FF CMP $29DF BEQ $DF1B BMI $DF1B BRA $DF3E LC2DF1B: SEP #$20 ; A = 8bit LDA $29E1 BIT #$C2 BNE $DF3E BIT #$20 BEQ $DF2F LDA $29E4 CMP #$29 ; #$29 = 41 BNE $DF3E LC2DF2F: SEP #$20 ; A = 8bit LDX $29E4 LDA $29FB,X ORA #$40 STA $29FB,X BRA $DF4B LC2DF3E: SEP #$20 ; A = 8bit LDX $29E4 LDA $29FB,X AND #$BF STA $29FB,X LC2DF4B: PLP RTS ;-------------------------------- ; ;-------------------------------- LC2DF4D: PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit LDA $29E2 AND #$00FF TAX LDA $29D8,X AND #$00FF STA $F0 TXA ASL TAX LDA $C0EF43,X STA $ED LDA $C0EF35,X STA $85 LDA $C0E966,X TAX LDY $8E STZ $F2 INC $F2 LC2DF7F: LDA $C00000,X STA $EB INX INX LDA $7A00,Y ; FILEPOS_MONMAP AND #$00FF CMP #$00FF ; #$00FF = 255 BEQ $DFF6 CMP #$00FE ; #$00FE = 254 BEQ $DFF6 PHX PHY TAX SEP #$20 ; A = 8bit LDA $29FB,X STA $E8 REP #$20 ; A = 16bit TXA ASL TAX LDA $D400,X STA $E9 LDX $EB LDA $29E2 AND #$00FF CMP #$0005 ; #$0005 = 5 BNE $DFBC DEX DEX STX $EB LC2DFBC: LDY $E9 LDA $ED JSR $E59D ; LDX $EB LDA $29E2 AND #$00FF BEQ $DFD2 CMP #$0004 ; #$0004 = 4 BMI $DFDA LC2DFD2: LDA $F0 CMP $F2 BPL $DFF4 BRA $DFE9 LC2DFDA: LDA $E8 AND #$0040 BNE $DFF4 LDA $F0 CMP $F2 BMI $DFE9 INX INX LC2DFE9: LDA $ED AND #$007F ORA #$0100 JSR $D6DC ; LC2DFF4: PLY PLX LC2DFF6: INY REP #$20 ; A = 16bit INC $F2 DEC $85 BNE $DF7F PLP PLB RTS PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit LDX $8E LC2E00D: STZ $7F00,X INX INX CPX #$0300 ; #$0300 = 768 BNE $E00D REP #$20 ; A = 16bit LDY $8E LDA #$00E0 ; #$00E0 = 224 LDX #$0100 ; #$0100 = 256 JSR $E050 ; LDA $8E LDX #$0080 ; #$0080 = 128 JSR $E050 ; LDA #$0080 ; #$0080 = 128 LDX #$00E0 ; #$00E0 = 224 JSR $E050 ; LDX #$8000 ; #$8000 = 32768 LDY #$0640 ; #$0640 = 1600 LDA #$01FF ; #$01FF = 511 MVN $7E,$7E LDX #$7F00 ; #$7F00 = 32512 LDY #$288A ; #$288A = 10378 LDA #$00FF ; #$00FF = 255 MVN $7E,$7E PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2E050: STA $93 STX $95 LDX $8E LC2E056: LDA $0640,X AND #$00FF BEQ $E09B CMP #$0001 ; #$0001 = 1 BEQ $E09B CMP #$0080 ; #$0080 = 128 BEQ $E09B STA $E0 LDA $0740,X AND #$00FF BEQ $E09B CMP #$0064 ; #$0064 = 100 BMI $E07A LDA #$0063 ; #$0063 = 99 LC2E07A: STA $E2 LDA $E0 CMP $93 BMI $E09B CMP $95 BPL $E09B SEP #$20 ; A = 8bit LDA $E0 STA $8000,Y LDA $E2 STA $8100,Y LDA $288A,X STA $7F00,Y INY REP #$20 ; A = 16bit LC2E09B: INX CPX #$0100 ; #$0100 = 256 BNE $E056 TYA INC AND #$FFFE TAY RTS ;-------------------------------- ; ;-------------------------------- LC2E0A8: PHA PHP SEP #$20 ; A = 8bit LDA #$11 ; #$11 = 17 BRA $E0CE ;-------------------------------- ; ;-------------------------------- LC2E0B0: PHA PHP SEP #$20 ; A = 8bit LDA #$10 ; #$10 = 16 BRA $E0CE ;-------------------------------- ; ;-------------------------------- LC2E0B8: PHA PHP SEP #$20 ; A = 8bit LDA #$11 ; #$11 = 17 BRA $E0CE ;-------------------------------- ; ;-------------------------------- LC2E0C0: PHA PHP SEP #$20 ; A = 8bit LDA #$12 ; #$12 = 18 BRA $E0CE ;-------------------------------- ; ;-------------------------------- LC2E0C8: PHA PHP SEP #$20 ; A = 8bit LDA #$13 ; #$13 = 19 LC2E0CE: STA $001D00 JSL $C40004 PLP PLA RTS ;-------------------------------- ; ;-------------------------------- LC2E0D9: PHB PHP REP #$20 ; A = 16bit PHA LDX #$EEB6 ; #$EEB6 = 61110 LDY #$1D00 ; #$1D00 = 7424 LDA #$0003 ; #$0003 = 3 MVN $7E,$C0 PLA SEP #$20 ; A = 8bit STA $1D01 JSL $C40004 PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2E0F7: PHB PHP SEP #$20 ; A = 8bit LDA #$7E ; #$7E = 126 PHA PLB STZ $90 LDA $6F CMP #$03 ; #$03 = 3 BPL $E167 DEC REP #$20 ; A = 16bit AND #$0001 ASL ASL TAX LDA $C0EF53,X CLC ADC $80 TAY LDA $72 STA $E0 SEP #$20 ; A = 8bit LDA $0500,Y BNE $E126 LDA $04FE,Y LC2E126: STA $E2 JSR $E16A ; STA $E3 LDA $E0 JSR $E16A ; STA $E1 LDY $80 LDA $E0 BMI $E155 LDA $E2 BMI $E14F BEQ $E167 CMP #$01 ; #$01 = 1 BEQ $E167 LDA $0521,Y AND #$01 BEQ $E165 LDA $E3 BMI $E165 LC2E14F: LDA $E1 BMI $E165 BRA $E167 LC2E155: LDA $E2 BMI $E165 BEQ $E167 CMP #$01 ; #$01 = 1 BEQ $E167 LDA $E3 BMI $E165 BRA $E167 LC2E165: INC $90 LC2E167: PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2E16A: BMI $E175 AND #$7F JSR $D9AB ; LDA $9F BRA $E177 LC2E175: LDA #$00 ; #$00 = 0 LC2E177: RTS ;-------------------------------- ; ;-------------------------------- LC2E178: PHB PHP REP #$20 ; A = 16bit LDA $80 CLC ADC #$050E ; #$050E = 1294 TAX LDY #$01E0 ; #$01E0 = 480 LDA #$0006 ; #$0006 = 6 MVN $7E,$7E PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2E18F: PHB PHP REP #$20 ; A = 16bit LDA $80 CLC ADC #$050E ; #$050E = 1294 TAY LDX #$01E0 ; #$01E0 = 480 LDA #$0006 ; #$0006 = 6 MVN $7E,$7E PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2E1A6: PHB PHP SEP #$20 ; A = 8bit LDA #$7E ; #$7E = 126 PHA PLB LDA $6F CMP #$01 ; #$01 = 1 BEQ $E1CA CMP #$02 ; #$02 = 2 BEQ $E1CA DEC DEC DEC REP #$20 ; A = 16bit AND #$0003 TAY SEP #$20 ; A = 8bit LDA $72 STA $01E0,Y BRA $E20E LC2E1CA: DEC REP #$20 ; A = 16bit AND #$0001 TAY SEP #$20 ; A = 8bit LDA $72 BMI $E1E1 STA $01E5,Y LDA #$00 ; #$00 = 0 STA $01E3,Y BRA $E1E9 LC2E1E1: STA $01E3,Y LDA #$00 ; #$00 = 0 STA $01E5,Y LC2E1E9: REP #$20 ; A = 16bit TYA INC AND #$0001 TAX SEP #$20 ; A = 8bit LDA $01E5,Y BEQ $E202 LDA $E5,X CMP #$01 ; #$01 = 1 BNE $E20E STZ $E5,X BRA $E20E LC2E202: LDA $E5,X ORA $E3,X BNE $E20E LDA #$01 ; #$01 = 1 STA $E5,X STZ $E3,X LC2E20E: PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2E211: PHB PHP SEP #$20 ; A = 8bit LDA #$7E ; #$7E = 126 PHA PLB STZ $73 LDA $6F CMP #$01 ; #$01 = 1 BEQ $E240 CMP #$02 ; #$02 = 2 BEQ $E240 DEC DEC DEC REP #$20 ; A = 16bit AND #$0003 TAX SEP #$20 ; A = 8bit LDA $E0,X BEQ $E283 CMP #$80 ; #$80 = 128 BEQ $E283 STA $73 LDA #$80 ; #$80 = 128 STA $E0,X BRA $E283 LC2E240: DEC REP #$20 ; A = 16bit AND #$0001 TAY SEP #$20 ; A = 8bit LDA $01E5,Y BNE $E253 LDA $01E3,Y BEQ $E262 LC2E253: CMP #$01 ; #$01 = 1 BEQ $E262 STA $73 LDA #$00 ; #$00 = 0 STA $01E3,Y INC STA $01E5,Y LC2E262: REP #$20 ; A = 16bit TYA INC AND #$0001 TAX SEP #$20 ; A = 8bit LDA $E5,X BEQ $E27B CMP #$01 ; #$01 = 1 BEQ $E283 LDA #$00 ; #$00 = 0 STA $01E5,Y BRA $E283 LC2E27B: LDA $E3,X BNE $E283 LDA #$01 ; #$01 = 1 STA $E5,X LC2E283: PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2E286: PHB PHX PHP PEA $7E7E PLB PLB SEP #$20 ; A = 8bit STZ $90 CMP #$00 ; #$00 = 0 BEQ $E2CA CMP #$01 ; #$01 = 1 BEQ $E2CA CMP #$80 ; #$80 = 128 ;-------------------------------- ; ;-------------------------------- LC2E29C: BEQ $E2CA LDX $8E LC2E2A0: CMP $0640,X BEQ $E2AD INX CPX #$0100 ; #$0100 = 256 BEQ $E2B9 BRA $E2A0 LC2E2AD: LDA $0740,X INC CMP #$64 ; #$64 = 100 BMI $E2CA INC $90 BRA $E2CA LC2E2B9: LDX $8E LC2E2BB: LDA $0640,X BEQ $E2CA INX CPX #$0100 ; #$0100 = 256 BNE $E2BB INC $90 INC $90 LC2E2CA: PLP PLX PLB RTS ;-------------------------------- ; ;-------------------------------- LC2E2CE: PHB PHX PHP PEA $7E7E PLB PLB SEP #$20 ; A = 8bit STZ $90 CMP #$00 ; #$00 = 0 BEQ $E324 CMP #$01 ; #$01 = 1 BEQ $E324 CMP #$80 ; #$80 = 128 BEQ $E324 LDX $8E LC2E2E8: CMP $0640,X BEQ $E2F5 INX CPX #$0100 ; #$0100 = 256 BEQ $E305 BRA $E2E8 LC2E2F5: XBA CLC ADC $0740,X CMP #$64 ; #$64 = 100 BMI $E300 LDA #$63 ; #$63 = 99 LC2E300: STA $0740,X BRA $E324 LC2E305: LDX $8E PHA LC2E308: LDA $0640,X BEQ $E315 INX CPX #$0100 ; #$0100 = 256 BEQ $E31F BRA $E308 LC2E315: PLA STA $0640,X XBA STA $0740,X BRA $E324 LC2E31F: PLA INC $90 INC $90 LC2E324: PLP PLX PLB RTS ;-------------------------------- ; ;-------------------------------- LC2E328: PHB PHX PHP PEA $7E7E PLB PLB SEP #$20 ; A = 8bit STZ $90 LDX $8E LC2E336: CMP $0640,X BEQ $E343 INX CPX #$0100 ; #$0100 = 256 BEQ $E361 BRA $E336 LC2E343: XBA PHA SEC LDA $0740,X SBC $01,S BPL $E350 PLA BRA $E361 LC2E350: STA $0740,X PLA LDA $0740,X BNE $E363 STZ $0640,X STZ $288A,X BRA $E363 LC2E361: INC $90 LC2E363: PLP PLX PLB RTS ;-------------------------------- ; ;-------------------------------- LC2E367: PHP REP #$20 ; A = 16bit LDA $6D BEQ $E394 LDY $8E LDA $6B BEQ $E37A CMP $6D BEQ $E379 INY LC2E379: INY LC2E37A: TYA ASL ASL TAY LDA $7E29B6 AND #$000F ASL ASL TAX PHX JSR $E396 ; INY INY PLX INX INX JSR $E396 ; LC2E394: PLP RTS ;-------------------------------- ; ;-------------------------------- LC2E396: LDA $C0E9C6,X PHA TYX LDA $C0E9D6,X PLX STA $7E0000,X RTS ;-------------------------------- ; ;-------------------------------- LC2E3A6: PHB PHP PEA $7E7E PLB PLB SEP #$20 ; A = 8bit STA $91 XBA STA $92 LDA $92 BEQ $E3D4 LDA $91 BEQ $E3D4 JSR $E44E ; REP #$20 ; A = 16bit LDA #$00CF ; #$00CF = 207 STA $0000,X INX INX LDY #$0192 ; #$0192 = 402 LDA #$0021 ; #$0021 = 33 JSR $E4ED ; BRA $E3E0 LC2E3D4: REP #$20 ; A = 16bit TYX LDY #$EF59 ; #$EF59 = 61273 LDA #$C00C ; #$C00C = 49164 JSR $E59D ; LC2E3E0: PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2E3E3: PHP SEP #$20 ; A = 8bit LDA $7A00,X ; FILEPOS_MONMAP XBA LDA $7B00,X XBA JSR $E3A6 ; PLP RTS ;-------------------------------- ; ;-------------------------------- LC2E3F3: PHY JSR $E3E3 ; PLY PHP REP #$20 ; A = 16bit LDA $54 ; 一時変数 防御力(下位) AND #$00FF CMP #$0016 ; #$0016 = 22 BEQ $E42A LDA $91 AND #$00FF CMP #$00E0 ; #$00E0 = 224 BMI $E421 SEP #$20 ; A = 8bit LDX $8E LC2E413: LDA $C0EED2,X BEQ $E421 CMP $91 BEQ $E42A INX INX BRA $E413 LC2E421: TYX REP #$20 ; A = 16bit LDA #$010C ; #$010C = 268 JSR $D6DC ; LC2E42A: PLP RTS ;-------------------------------- ; ;-------------------------------- LC2E42C: PHP REP #$20 ; A = 16bit AND #$00FF PHA ASL TAX LDA $7ED400,X TYX TAY PLA CMP #$0057 ; #$0057 = 87 BPL $E446 LDA #$D106 ; #$D106 = 53510 BRA $E449 LC2E446: LDA #$D108 ; #$D108 = 53512 LC2E449: JSR $E59D ; PLP RTS ;-------------------------------- ; ;-------------------------------- LC2E44E: PHP REP #$20 ; A = 16bit AND #$00FF ASL TAX LDA $7ED200,X TYX TAY LDA #$D109 ; #$D109 = 53513 JSR $E59D ; PLP RTS ;-------------------------------- ; ;-------------------------------- LC2E464: PHB PHP LDA $D8 JSR $E4B2 ; LDA $DA AND #$000F ASL ASL ASL ASL XBA ORA $DC STA $0843,X PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2E47D: PHB PHP REP #$20 ; A = 16bit LDA $D8 JSR $E4B2 ; LDA $0843,X PHA AND #$0FFF STA $DC PLA XBA LSR LSR LSR LSR AND #$000F STA $DA LDA $D8 ASL TAX LDA $DA ASL CLC ADC $DA ADC $D152C0,X ; FILEPOS_CHRJOBLVUP_ADDR TAX LDA $D10000,X ; FILEPOS_ITEMDATA STA $DE PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2E4B2: PHP REP #$20 ; A = 16bit AND #$00FF PHA LDA $7E ASL TAX PLA ASL CLC ADC $C0EF65,X TAX PLP RTS ;-------------------------------- ; ;-------------------------------- LC2E4C7: PHP REP #$20 ; A = 16bit AND #$001F ASL ASL ASL CLC ADC #$5600 ; #$5600 = 22016 TAX TYX TAY LDA #$D107 ; #$D107 = 53511 JSR $E59D ; PLP RTS ;-------------------------------- ; ;-------------------------------- LC2E4DF: LDA $53 ; 一時変数 倍率(上位) ;-------------------------------- ; ;-------------------------------- LC2E4E1: PHP REP #$20 ; A = 16bit AND #$00FF ASL ASL ASL TAX PLP RTS ;-------------------------------- ; ;-------------------------------- LC2E4ED: PHB PHA PHX PHY PHP REP #$30 ; X,Y = 16bit A = 16bit STZ $D2 STZ $D4 STX $D6 SEP #$20 ; A = 8bit XBA PHA PLB XBA TAX LSR LSR LSR LSR AND #$07 STA $CE TXA AND #$0F STA $CD TXA EOR #$80 STA $D1 LDX $8E LC2E515: LDA $0000,Y ; FILEPOS_MONDATA PHY REP #$20 ; A = 16bit AND #$00FF STA $CB LDY #$0008 ; #$0008 = 8 LC2E523: LSR $CB BCC $E53A SED CLC LDA $C0F887,X ADC $D2 STA $D2 LDA $C0F889,X ADC $D4 STA $D4 CLD LC2E53A: INX INX INX INX DEY BNE $E523 PLY SEP #$20 ; A = 8bit INY DEC $CD BNE $E515 JSR $E552 ; PLP PLY PLX PLA PLB RTS ;-------------------------------- ; ;-------------------------------- LC2E552: SEP #$20 ; A = 8bit LDA #$7E ; #$7E = 126 PHA PLB LDY $D6 LDA #$00 ; #$00 = 0 XBA LDA $CE DEC AND #$07 LSR TAX BCC $E56F LC2E566: LDA $D2,X LSR LSR LSR LSR JSR $E57F ; LC2E56F: CPX #$0000 ; #$0000 = 0 BNE $E576 STZ $D1 LC2E576: LDA $D2,X JSR $E57F ; DEX BPL $E566 RTS ;-------------------------------- ; ;-------------------------------- LC2E57F: AND #$0F BNE $E58B BIT $D1 BPL $E58B LDA #$FF ; #$FF = 255 BRA $E590 LC2E58B: STZ $D1 CLC ADC #$53 ; #$53 = 83 LC2E590: REP #$20 ; A = 16bit AND #$00FF STA $0000,Y INY INY SEP #$20 ; A = 8bit RTS ;-------------------------------- ; ;-------------------------------- LC2E59D: PHB PHP SEP #$20 ; A = 8bit XBA PHA PLB XBA PHA AND #$7F STA $7B STZ $7C PLA STZ $79 STZ $7A AND #$80 STA $7D BMI $E5B9 DEC $7A LC2E5B9: SEP #$20 ; A = 8bit LDA $0000,Y ; FILEPOS_MONDATA BEQ $E5EA INY BIT $7D BMI $E5DB JSR $E5ED ; PHA AND #$00FF STA $7E0000,X PLA XBA AND #$00FF STA $7DFFC0,X BRA $E5E4 LC2E5DB: REP #$20 ; A = 16bit AND #$00FF STA $7E0000,X LC2E5E4: INX INX DEC $7B BNE $E5B9 LC2E5EA: PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2E5ED: REP #$20 ; A = 16bit AND #$00FF CMP #$0053 ; #$0053 = 83 BPL $E60D CMP #$0049 ; #$0049 = 73 BPL $E607 CMP #$0020 ; #$0020 = 32 BMI $E60D CLC ADC #$5140 ; #$5140 = 20800 BRA $E60F LC2E607: CLC ADC #$5217 ; #$5217 = 21015 BRA $E60F LC2E60D: ORA $79 LC2E60F: RTS ;-------------------------------- ; ;-------------------------------- LC2E610: PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit STA $85 LDA $85 LC2E61D: BEQ $E650 CMP #$0001 ; #$0001 = 1 BEQ $E640 LDA $0000,X ; FILEPOS_MONDATA STA $87 LDA $0000,Y ; FILEPOS_MONDATA STA $0000,X LDA $87 STA $0000,Y INX INX INY INY LDA $85 DEC DEC STA $85 BRA $E61D LC2E640: SEP #$20 ; A = 8bit LDA $0000,X ; FILEPOS_MONDATA XBA LDA $0000,Y ; FILEPOS_MONDATA STA $0000,X XBA STA $0000,Y LC2E650: PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2E653: LDX #$0014 ; #$0014 = 20 BRA $E65B ; ;-------------------------------- ; ;-------------------------------- LC2E658: LDX #$0028 ; #$0028 = 40 ;-------------------------------- ; ;-------------------------------- LC2E65B: PHP REP #$20 ; A = 16bit PHA LC2E65F: JSR $E66F ; LDA $0A AND #$8080 BNE $E66C DEX BNE $E65F LC2E66C: PLA PLP RTS ;-------------------------------- ; ;-------------------------------- LC2E66F: PHP SEP #$20 ; A = 8bit LDA #$80 ; #$80 = 128 STA $C9 LC2E676: BIT $C9 BMI $E676 PLP RTS ;-------------------------------- ; ;-------------------------------- LC2E67C: PHP REP #$20 ; A = 16bit LDA $54 ; 一時変数 防御力(下位) ;-------------------------------- ; ;-------------------------------- LC2E681: AND #$00FF TAX SEP #$20 ; A = 8bit LDA $000973 AND #$04 BNE $E697 LC2E68F: LDA $C0E9E2,X STA $53 ; 一時変数 倍率(上位) BRA $E6A9 LC2E697: LDA $C0E9F3,X BEQ $E68F REP #$20 ; A = 16bit AND #$00FF TAX SEP #$20 ; A = 8bit LDA $00,X STA $53 ; 一時変数 倍率(上位) LC2E6A9: PLP RTS ;-------------------------------- ; ;-------------------------------- LC2E6AB: PHB PHP SEP #$20 ; A = 8bit LDA #$7E ; #$7E = 126 PHA PLB JSR $E4DF ; REP #$20 ; A = 16bit LDA $7602,X STA $0200 LDA #$2E02 ; #$2E02 = 11778 STA $0202 SEP #$20 ; A = 8bit LDA $7600,X STA $54 ; 一時変数 防御力(下位) LDA $7601,X STA $55 ; 一時変数 防御力(上位) JSR $FAD4 ; PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2E6D6: JSR $EBBD ; JSR $E76C ; JSR $E9CE ; RTS ;-------------------------------- ; ;-------------------------------- LC2E6E0: PHB PHP SEP #$20 ; A = 8bit LDA #$7E ; #$7E = 126 PHA PLB STZ $E0 STZ $E1 STZ $E2 STZ $E3 STZ $E4 STZ $E5 LDA #$04 ; #$04 = 4 STA $E6 LDY $80 LDX $8E LC2E6FC: LDA $0516,Y BMI $E746 CMP #$2C ; #$2C = 44 BMI $E746 CMP #$49 ; #$49 = 73 BPL $E72B SEC SBC #$2C ; #$2C = 44 REP #$20 ; A = 16bit AND #$00FF TAX LDA $C0E931,X AND #$000F PHA LDA $C0E931,X LSR LSR LSR LSR AND #$000F TAX PLA SEP #$20 ; A = 8bit BRA $E743 LC2E72B: CMP #$4C ; #$4C = 76 BEQ $E73F BPL $E746 SEC SBC #$48 ; #$48 = 72 LC2E734: LDX #$0001 ; #$0001 = 1 JSR $E765 ; LDX #$0002 ; #$0002 = 2 BRA $E743 LC2E73F: LDA #$03 ; #$03 = 3 BRA $E734 LC2E743: JSR $E765 ; LC2E746: INY DEC $E6 BNE $E6FC LDY $80 LDX $8E LC2E74F: LDA $E0,X ASL ASL ASL ASL ORA $E1,X STA $053D,Y INY INX INX CPX #$0006 ; #$0006 = 6 BNE $E74F PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2E765: CMP $E0,X BMI $E76B STA $E0,X LC2E76B: RTS ;-------------------------------- ; ;-------------------------------- LC2E76C: PHB PHP SEP #$20 ; A = 8bit LDA #$7E ; #$7E = 126 PHA PLB JSR $E973 ; JSR $E933 ; JSR $E879 ; JSR $D4C5 ; JSR $E178 ; JSR $E7B3 ; JSR $E7CC ; LDY $80 REP #$20 ; A = 16bit LDA $EB STA $0528,Y LDA $ED STA $052A,Y LDA $F2 STA $052C,Y LDA $F4 STA $052E,Y LDA $F6 STA $0544,Y SEP #$20 ; A = 8bit LDA $F1 STA $0523,Y JSR $E6E0 ; PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2E7B3: PHP LDX $80 REP #$20 ; A = 16bit LDA $000524,X STA $E7 LDA $000526,X STA $E9 LDA $000520,X STA $EF PLP RTS ;-------------------------------- ; ;-------------------------------- LC2E7CC: PHB PHP SEP #$20 ; A = 8bit STZ $F1 STZ $F2 STZ $F3 STZ $F4 STZ $F5 LDX $8E LC2E7DC: LDA $E0,X PHX JSR $D9AB ; TXY PLX LDA $9C CLC ADC $F1 STA $F1 LDA $A1 CLC ADC $F2 STA $F2 LDA $A2 CLC ADC $F3 STA $F3 LDA $A3 CLC ADC $F4 STA $F4 LDA $A4 CLC ADC $F5 STA $F5 INX CPX #$0005 ; #$0005 = 5 BNE $E7DC STZ $F8 LDA $F0 AND #$20 BEQ $E827 LDA $E3 ORA $E4 BNE $E827 LDA $E5 BEQ $E823 LDA $E6 BNE $E827 LC2E823: LDA #$80 ; #$80 = 128 STA $F8 LC2E827: STZ $F6 STZ $F7 LDX $8E LC2E82D: LDA $E5,X PHX JSR $D9AB ; TXY PLX LDA $A2 STA $F6,X BIT $9F BVC $E845 LDA $F8 BPL $E845 ORA #$01 STA $F8 LC2E845: INX CPX #$0002 ; #$0002 = 2 BNE $E82D SEP #$20 ; A = 8bit LDA $E5 CMP #$01 ; #$01 = 1 BNE $E85B LDA $E6 CMP #$01 ; #$01 = 1 BNE $E85B STZ $F7 LC2E85B: LDA $F6 CLC ADC $F7 STA $F6 LDA $8E ROL AND #$01 STA $F7 LDA $F8 CMP #$81 ; #$81 = 129 BNE $E873 ASL $F6 ROL $F7 LC2E873: JSR $EC76 ; PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2E879: PHB PHP SEP #$20 ; A = 8bit STZ $E0 STZ $E1 STZ $E2 STZ $E3 STZ $E4 STZ $E5 STZ $E6 STZ $E7 JSR $D4C5 ; LDA #$05 ; #$05 = 5 STA $85 LDX $80 LC2E896: PHX LDA $00050E,X JSR $D9AB ; LDA $9E BMI $E8A4 TSB $E0 LC2E8A4: LDA $A0 TSB $E2 LDA $A5 REP #$20 ; A = 16bit AND #$00FF PHA ASL ASL CLC ADC $01,S TAX PLA LDA $D12580,X ; FILEPOS_ITEMELEM TSB $E3 LDA $D12582,X TSB $E5 SEP #$20 ; A = 8bit LDA $D12584,X TSB $E7 PLX INX DEC $85 BNE $E896 LDX $80 LDA #$02 ; #$02 = 2 STA $85 LC2E8D7: LDA $000513,X PHX JSR $D9AB ; PLX LDA $9E BMI $E8E6 TSB $E0 LC2E8E6: LDA $A0 TSB $E1 INX DEC $85 BNE $E8D7 SEP #$20 ; A = 8bit LDA #$7E ; #$7E = 126 PHA PLB LDY $80 LDA $E0 STA $0522,Y PHY LDX $8E LC2E8FF: LDA $E3,X STA $0530,Y INX INY CPX #$0005 ; #$0005 = 5 BNE $E8FF PLY REP #$20 ; A = 16bit LDA $E1 STA $0538,Y PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2E916: PHY PHX AND #$001F CMP #$0014 ; #$0014 = 20 BMI $E92A LDY $80 LDA $054E,Y AND #$F7FF BRA $E930 LC2E92A: ASL TAX LDA $D157B8,X LC2E930: PLX PLY RTS ;-------------------------------- ; ;-------------------------------- LC2E933: PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit JSR $D4C5 ; LDY $80 LDA $0501,Y JSR $E916 ; STA $EF LDA #$0004 ; #$0004 = 4 STA $85 LC2E94E: SEP #$20 ; A = 8bit LDA $0516,Y REP #$20 ; A = 16bit BPL $E962 AND #$007F ASL TAX LDA $D1638C,X TSB $EF LC2E962: INY DEC $85 BNE $E94E LDY $80 REP #$20 ; A = 16bit LDA $EF STA $0520,Y PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2E973: PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit JSR $D4C5 ; LDY $80 LDA $0501,Y AND #$001F ASL ASL TAX LDA $D15708,X ; FILEPOS_CHRJOBEQUIP STA $E0 LDA $D1570A,X ; FILEPOS_CHRJOBEQUIP[2] STA $E2 LDA #$0004 ; #$0004 = 4 STA $85 LC2E99B: SEP #$20 ; A = 8bit LDA $0516,Y BPL $E9B8 REP #$20 ; A = 16bit AND #$007F ASL ASL TAX LDA $D163CE,X TSB $E0 LDA $D163D0,X TSB $E2 SEP #$20 ; A = 8bit LC2E9B8: INY DEC $85 BNE $E99B LDY $80 REP #$20 ; A = 16bit LDA $E0 STA $0540,Y LDA $E2 STA $0542,Y PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2E9CE: PHB PHP PEA $7E7E PLB PLB JSR $D4C5 ; REP #$20 ; A = 16bit LDY $80 LDA $0502,Y ; (レベル) AND #$00FF DEC ASL TAX LDA $D15129,X ; FILEPOS_CHRHP STA $E0 STZ $E2 SEP #$20 ; A = 8bit LDA $0526,Y ; (体力) STA $E9 JSR $EAAC ; LDA $E0 AND #$FF ADC $2710C9,X BMI $EA04 LDA #$0F ; #$0F = 15 AND [$99] PHP ORA $BF SBC $85D151 CPX #$E264 ; #$E264 = 57956 SEP #$20 ; A = 8bit LDA $0527,Y ; (魔力) STA $E9 JSR $EAAC ; LDA $E0 AND #$FF ADC $03E8C9,X BMI $EA26 LDA #$E7 ; #$E7 = 231 ORA $99,S TSB $A405 BRA $E9E7 SEP #$20 ; A = 8bit LDA #$04 ; #$04 = 4 STA $85 LC2EA32: LDA $0516,Y CMP #$8B ; #$8B = 139 BEQ $EA4B CMP #$8C ; #$8C = 140 BEQ $EA4B CMP #$8D ; #$8D = 141 BEQ $EA4B CMP #$8E ; #$8E = 142 BEQ $EA68 CMP #$8F ; #$8F = 143 BEQ $EA68 BRA $EA88 LC2EA4B: SEC SBC #$8A ; #$8A = 138 STA $E8 REP #$20 ; A = 16bit LDA $0508,X JSR $EAEE ; AND #$7FFF CMP #$2710 ; #$2710 = 10000 BMI $EA63 LDA #$270F ; #$270F = 9999 LC2EA63: STA $0508,X BRA $EA88 LC2EA68: SEC SBC #$C98D ; #$C98D = 51597 COP $D0 ORA ($1A,X) STA $E8 REP #$20 ; A = 16bit LDA $050C,X JSR $EAEE ; AND #$7FFF CMP #$03E8 ; #$03E8 = 1000 BMI $EA85 LDA #$03E7 ; #$03E7 = 999 LC2EA85: STA $050C,X LC2EA88: SEP #$20 ; A = 8bit INY DEC $85 BNE $EA32 REP #$20 ; A = 16bit LDX $80 LDA $0508,X CMP $0506,X BPL $EA9E STA $0506,X LC2EA9E: LDA $050C,X CMP $050A,X BPL $EAA9 STA $050A,X LC2EAA9: PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2EAAC: LDA $E0 STA $00211B ; 乗算器(16bit×8bit) 被乗数 LDA $E1 STA $00211B ; 乗算器(16bit×8bit) 被乗数 LDA $E9 CLC ADC #$8F20 ; #$8F20 = 36640 TRB $0021 STA $00211C ; 乗算器(16bit×8bit) 乗数 REP #$20 ; A = 16bit LDA $002134 ; 乗算器(16bit×8bit) 乗算結果(下位) STA $E0 LDA $002136 ; 乗算器(16bit×8bit) 乗算結果(上位) AND #$00FF STA $E2 ASL $E0 ROL $E2 ASL $E0 ROL $E2 ASL $E0 ROL $E2 LDA $E1 STA $E0 LDA $E3 AND #$00FF STA $E2 RTS ;-------------------------------- ; ;-------------------------------- LC2EAEE: PHP REP #$20 ; A = 16bit STA $E0 STZ $E2 SEP #$20 ; A = 8bit LDA $E8 ASL ASL ASL CLC ADC $E8 ADC $E8 STA $E8 STZ $E4 STZ $E5 STZ $E6 STZ $E7 LDA $E0 STA $00211B ; 乗算器(16bit×8bit) 被乗数 LDA $E1 STA $00211B ; 乗算器(16bit×8bit) 被乗数 LDA $E8 STA $00211C ; 乗算器(16bit×8bit) 乗数 STA $00211C ; 乗算器(16bit×8bit) 乗数 LDA $002135 ; 乗算器(16bit×8bit) 乗算結果(中位) STA $004204 ; 除算器(16bit÷8bit) 被除数(下位) LDA $002136 ; 乗算器(16bit×8bit) 乗算結果(上位) STA $004205 ; 除算器(16bit÷8bit) 被除数(上位) LDA #$64 ; #$64 = 100 STA $004206 NOP NOP NOP NOP NOP NOP NOP NOP LDA $004214 ; 除算器(16bit÷8bit) 除算結果(下位) STA $E5 LDA $004215 ; 除算器(16bit÷8bit) 除算結果(上位) STA $E6 LDA $002134 ; 乗算器(16bit×8bit) 乗算結果(下位) STA $004204 ; 除算器(16bit÷8bit) 被除数(下位) LDA $004216 ; 乗算結果(下位) or 除算余剰結果 STA $004205 ; 除算器(16bit÷8bit) 被除数(上位) LDA #$64 ; #$64 = 100 STA $004206 NOP NOP NOP NOP NOP NOP NOP NOP LDA $004214 ; 除算器(16bit÷8bit) 除算結果(下位) STA $E4 REP #$20 ; A = 16bit LDA $E0 CLC ADC $E4 STA $E0 LDA $E2 ADC $E6 STA $E2 LDA $E0 PLP RTS ;-------------------------------- ; ;-------------------------------- LC2EB82: PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit LDY $80 LDA $0501,Y AND #$001F PHA ASL ASL TAX PLA JSR $E916 ; STA $0520,Y LDA $D15760,X ; FILEPOS_CHRJOBCMD STA $0516,Y LDA $D15762,X STA $0518,Y LDA $D15708,X ; FILEPOS_CHRJOBEQUIP STA $0540,Y LDA $D1570A,X ; FILEPOS_CHRJOBEQUIP[2] STA $0542,Y PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2EBBD: PHB PHP SEP #$20 ; A = 8bit LDA #$7E ; #$7E = 126 PHA PLB JSR $D4C5 ; STZ $E7 STZ $E8 STZ $E9 STZ $EA LDA #$D1 ; #$D1 = 209 STA $84 LDA #$04 ; #$04 = 4 STA $85 LDX $80 LC2EBDA: LDA $0516,X PHA BMI $EBE5 LDY #$5E00 ; #$5E00 = 24064 BRA $EBE8 LC2EBE5: LDY #$6308 ; #$6308 = 25352 LC2EBE8: STY $82 PLA AND #$7F JSR $EC54 ; INX DEC $85 BNE $EBDA LDY #$56B0 ; #$56B0 = 22192 STY $82 LDA #$D1 ; #$D1 = 209 STA $84 LDX $80 LDA $0501,X AND #$1F CMP #$14 ; #$14 = 20 BMI $EC18 REP #$20 ; A = 16bit TXA CLC ADC #$054A ; #$054A = 1354 STA $82 SEP #$20 ; A = 8bit STZ $84 LDA #$00 ; #$00 = 0 LC2EC18: JSR $EC54 ; LDY #$551E ; #$551E = 21790 STY $82 LDA #$D1 ; #$D1 = 209 STA $84 REP #$20 ; A = 16bit LDA $0500,X AND #$0007 ASL ASL TAY SEP #$20 ; A = 8bit LDX $8E LC2EC33: LDA [$82],Y CLC ADC $E7,X STA $E7,X INY INX CPX #$0004 ; #$0004 = 4 BNE $EC33 LDX $8E LDY $80 LC2EC45: LDA $E7,X STA $0524,Y ; (力) INY INX CPX #$0004 ; #$0004 = 4 BNE $EC45 PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2EC54: PHX PHY PHP REP #$20 ; A = 16bit AND #$00FF ASL ASL TAY SEP #$20 ; A = 8bit LDX $8E LC2EC63: LDA [$82],Y CMP $E7,X BMI $EC6B STA $E7,X LC2EC6B: INY INX CPX #$0004 ; #$0004 = 4 BNE $EC63 PLP PLY PLX RTS ;-------------------------------- ; ;-------------------------------- LC2EC76: PHB PHP SEP #$20 ; A = 8bit STZ $EB STZ $EC STZ $ED STZ $EE LDX $8E LC2EC84: LDA $E0,X PHX JSR $D9AB ; PLX LDA $9E BPL $ECBD PHX PHA REP #$20 ; A = 16bit AND #$0007 ASL TAX LDA $D12880,X STA $F9 SEP #$20 ; A = 8bit PLA AND #$78 ASL LDX $8E LC2ECA6: ASL XBA BCC $ECAE LDA $FA BRA $ECB0 LC2ECAE: LDA $F9 LC2ECB0: CLC ADC $EB,X STA $EB,X XBA INX CPX #$0004 ; #$0004 = 4 BNE $ECA6 PLX LC2ECBD: INX CPX #$0007 ; #$0007 = 7 BNE $EC84 LDX $8E LC2ECC5: LDA $E7,X CLC ADC $EB,X BPL $ECCE LDA #$00 ; #$00 = 0 LC2ECCE: STA $EB,X INX CPX #$0004 ; #$0004 = 4 BNE $ECC5 PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2ECD9: PEA $7E7E PLB PLB REP #$20 ; A = 16bit STZ $75 LDY $80 LDA $0540,Y STA $E0 LDA $0542,Y STA $E2 STZ $E6 STZ $E8 RTS ;-------------------------------- ; ;-------------------------------- LC2ECF3: LDY $8E LC2ECF5: REP #$20 ; A = 16bit LDA $0740,Y AND #$00FF BEQ $ED47 STA $E8 LDA $0640,Y AND #$00FF STA $E6 CMP $93 BMI $ED47 CMP $95 BPL $ED47 JSR $D9AB ; LDA $E4 BMI $ED1E LDA $9B AND $E4 BEQ $ED47 LC2ED1E: LDA $9D AND #$003F ASL ASL TAX LDA $D12480,X ; ? (4バイト×64) AND $E0 BNE $ED36 LDA $D12482,X AND $E2 BEQ $ED47 LC2ED36: SEP #$20 ; A = 8bit LDX $75 LDA $E6 STA $7A00,X ; 実行する魔法・技・道具・武器のデータ 4バイト目 LDA $E8 STA $7B00,X INX STX $75 LC2ED47: INY CPY #$0100 ; #$0100 = 256 BNE $ECF5 SEP #$20 ; A = 8bit LDX $75 LC2ED51: STZ $7A00,X ; 実行する魔法・技・道具・武器のデータ 4バイト目 STZ $7B00,X INX CPX #$0100 ; #$0100 = 256 BNE $ED51 RTS ;-------------------------------- ; ;-------------------------------- LC2ED5E: PHB PHP JSR $ECD9 ; LDA #$0089 ; #$0089 = 137 STA $93 LDA #$00E0 ; #$00E0 = 224 STA $95 SEP #$20 ; A = 8bit LDA $6F DEC DEC DEC DEC REP #$20 ; A = 16bit AND #$0003 ASL TAX LDA $C0F5C9,X STA $E4 JSR $ECF3 ; PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2ED87: PHB PHP JSR $ECD9 ; LDA #$0002 ; #$0002 = 2 STA $93 LDA #$0080 ; #$0080 = 128 STA $95 LDA #$8000 ; #$8000 = 32768 STA $E4 JSR $ECF3 ; REP #$20 ; A = 16bit LDA #$0080 ; #$0080 = 128 STA $93 LDA #$00E0 ; #$00E0 = 224 STA $95 LDA #$0008 ; #$0008 = 8 STA $E4 JSR $ECF3 ; PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2EDB5: LDY $8E LC2EDB7: SEP #$20 ; A = 8bit LDA $7A00,Y ; FILEPOS_MONMAP BEQ $EDD2 JSR $D9AB ; LDA $A2 STA $7E00,Y CPY $75 BEQ $EDD2 CPY #$00FF ; #$00FF = 255 BEQ $EDD2 INY BRA $EDB7 LC2EDD2: RTS ;-------------------------------- ; ;-------------------------------- LC2EDD3: REP #$20 ; A = 16bit LDX #$0100 ; #$0100 = 256 LC2EDD8: DEX DEX STZ $7F00,X BNE $EDD8 SEP #$20 ; A = 8bit LDY $8E LC2EDE3: LDA $7A00,Y ; FILEPOS_MONMAP BEQ $EE02 LDA $7E00,Y REP #$20 ; A = 16bit AND #$00FF TAX SEP #$20 ; A = 8bit INC $7F00,X CPY $75 BEQ $EE02 CPY #$00FF ; #$00FF = 255 BEQ $EE02 INY BRA $EDE3 LC2EE02: RTS ;-------------------------------- ; ;-------------------------------- LC2EE03: SEP #$20 ; A = 8bit LDY #$00FE ; #$00FE = 254 LC2EE08: LDA $7F00,Y CLC ADC $7F01,Y STA $7F00,Y CPY #$0000 ; #$0000 = 0 BEQ $EE1A DEY BRA $EE08 LC2EE1A: RTS ;-------------------------------- ; ;-------------------------------- LC2EE1B: SEP #$20 ; A = 8bit LDY $8E LC2EE1F: LDA $7A00,Y ; FILEPOS_MONMAP BEQ $EE62 LDA $7E00,Y BEQ $EE56 CMP #$FF ; #$FF = 255 BNE $EE32 LDX #$0000 ; #$0000 = 0 BRA $EE40 LC2EE32: INC REP #$20 ; A = 16bit AND #$00FF TAX LDA $7F00,X AND #$00FF TAX LC2EE40: SEP #$20 ; A = 8bit LC2EE42: LDA $8000,X BEQ $EE4A INX BRA $EE42 LC2EE4A: LDA $7A00,Y ; FILEPOS_MONMAP STA $8000,X LDA $7B00,Y STA $8100,X LC2EE56: CPY $75 BEQ $EE62 CPY #$00FF ; #$00FF = 255 BEQ $EE62 INY BRA $EE1F LC2EE62: RTS ;-------------------------------- ; ;-------------------------------- LC2EE63: REP #$20 ; A = 16bit LDA $7F01 AND #$00FF TAX SEP #$20 ; A = 8bit LDY $8E LC2EE70: LDA $7A00,Y ; FILEPOS_MONMAP BEQ $EE93 LDA $7E00,Y BNE $EE87 LDA $7A00,Y ; FILEPOS_MONMAP STA $8000,X LDA $7B00,Y STA $8100,X INX LC2EE87: CPY $75 BEQ $EE93 CPY #$00FF ; #$00FF = 255 BEQ $EE93 INY BRA $EE70 LC2EE93: RTS ;-------------------------------- ; ;-------------------------------- LC2EE94: PHB PHP SEP #$20 ; A = 8bit LDA #$7E ; #$7E = 126 PHA PLB REP #$20 ; A = 16bit LDX #$0400 ; #$0400 = 1024 LC2EEA1: DEX DEX STZ $7E00,X BNE $EEA1 JSR $EDB5 ; JSR $EDD3 ; JSR $EE03 ; JSR $EE1B ; JSR $EE63 ; REP #$20 ; A = 16bit LDX #$8000 ; #$8000 = 32768 LDY #$7A00 ; #$7A00 = 31232 LDA #$01FF ; #$01FF = 511 MVN $7E,$7E PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2EEC8: PHB PEA $7E7E PLB PLB STX $F2 STY $F4 LDA #$8504 ; #$8504 = 34052 INC $A4,X STX $B138 SBC ($F1) PEA $1D99 PLP INY DEC $F6 BNE $EED9 PLB RTS ;-------------------------------- ; ;-------------------------------- LC2EEE7: PHB PHP REP #$20 ; A = 16bit AND #$000F ASL TAX LDA $C0F208,X JSR $C1B8 ; JSR $A698 ; PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2EEFD: JSR $EFC5 ; JSR $EF16 ; JSR $FAD4 ; JSR $E658 ; JSR $EF89 ; JSR $EF16 ; JSR $FAD4 ; JSR $E66F ; RTS ;-------------------------------- ; ;-------------------------------- LC2EF16: PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit STZ $F1 STZ $7E LC2EF23: JSR $D4C5 ; LDX $80 LDA $0500,X AND #$0040 BNE $EF75 LDA $0540,X STA $EB LDA $0542,X STA $ED LDA $55 ; 一時変数 防御力(上位) DEC AND #$000F ASL ASL TAY LDA $EB AND $285E,Y BNE $EF53 LDA $ED AND $2860,Y BNE $EF53 BRA $EF75 LC2EF53: LDA $7E ASL ASL ASL TAY LDA $0240,Y SEC SBC #$000C ; #$000C = 12 STA $0240,Y LDA $0244,Y SEC SBC #$000C ; #$000C = 12 STA $0244,Y LDX $7E LDA $C0F204,X TSB $F1 LC2EF75: LDA $7E INC STA $7E CMP #$0004 ; #$0004 = 4 BNE $EF23 SEP #$20 ; A = 8bit LDA $F1 STA $2886 PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2EF89: PHB PHP REP #$20 ; A = 16bit LDX #$F4B4 ; #$F4B4 = 62644 LDY #$0240 ; #$0240 = 576 LDA #$001F ; #$001F = 31 MVN $7E,$C0 JSR $EF9F ; PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2EF9F: STZ $7E LC2EFA1: JSR $D4C5 ; LDY $80 LDA $7E ASL ASL ASL TAX LDA $0500,Y AND #$0040 BEQ $EFBA STZ $0242,X STZ $0246,X LC2EFBA: LDA $7E INC STA $7E CMP #$0004 ; #$0004 = 4 BNE $EFA1 RTS ;-------------------------------- ; ;-------------------------------- LC2EFC5: PHB PHP REP #$20 ; A = 16bit AND #$0001 INC ASL TAX LDA $C0F4AE,X TAX LDY #$0240 ; #$0240 = 576 LDA #$001F ; #$001F = 31 MVN $7E,$C0 JSR $EF9F ; PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2EFE3: PHB PHP PEA $7E7E PLB PLB LDA $2809 JSR $F00B ; LDX $8E LC2EFF2: LDA $D12890,X BEQ $F008 CMP $2809 BEQ $F001 INX INX BRA $EFF2 LC2F001: LDA $D12891,X JSR $F00B ; LC2F008: PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2F00B: PHX PHP SEP #$20 ; A = 8bit JSR $F01D ; ORA $000950,X STA $000950,X PLP PLX RTS ;-------------------------------- ; ;-------------------------------- LC2F01D: PHP PHY REP #$20 ; A = 16bit AND #$00FF PHA LSR LSR LSR TAX PLA AND #$0007 TAY SEP #$20 ; A = 8bit LDA #$80 ; #$80 = 128 LC2F032: CPY #$00 ; #$00 = 0 BRK $F0 TSB $88 LSR BRA $F032 PLY PLP RTS ;-------------------------------- ; ;-------------------------------- LC2F03E: PHB PHP PEA $7E7E PLB PLB SEP #$20 ; A = 8bit STZ $2811 STZ $2812 STZ $2813 LDA $2809 REP #$20 ; A = 16bit AND #$00FF JSR $F01D ; SEP #$20 ; A = 8bit AND $0950,X BEQ $F065 INC $2811 LC2F065: LDA #$01 ; #$01 = 1 STA $2814 JSR $F0E6 ; PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2F070: PHB PHP PEA $7E7E PLB PLB SEP #$20 ; A = 8bit LDA $2809 LDX $8E LC2F07E: CMP $0640,X BEQ $F08B INX CPX #$0100 ; #$0100 = 256 BEQ $F093 BRA $F07E LC2F08B: LDA $0740,X STA $2811 BRA $F096 LC2F093: STZ $2811 LC2F096: STZ $2812 LDY $8E STY $7E JSR $D4C5 ; LDX $80 BIT $0500,X BVS $F0BB PHY LDY #$0007 ; #$0007 = 7 LC2F0AB: LDA $050E,X CMP $2809 BNE $F0B6 INC $2812 LC2F0B6: INX DEY BNE $F0AB PLY LC2F0BB: INY CPY #$04 ; #$04 = 4 BRK $D0 PHX LDA #$63 ; #$63 = 99 SEC SBC $2811 SBC $2812 BPL $F0CE LDA #$00 ; #$00 = 0 LC2F0CE: STA $2813 LDA $2805 BPL $F0DB LDA #$01 ; #$01 = 1 STA $2813 LC2F0DB: LDA #$01 ; #$01 = 1 STA $2814 JSR $F0E6 ; PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2F0E6: PHP SEP #$20 ; A = 8bit LDA $7E2814 STA $E0 REP #$20 ; A = 16bit LDA $7E280C STA $E1 LDA $7E280E STA $E3 JSR $F2FB ; LDA $E5 STA $7E2819 LDA $E7 STA $7E281B PLP RTS ;-------------------------------- ; ;-------------------------------- LC2F10E: PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit LDY $8E LC2F119: TYA ASL TAX LDA $C0F1F4,X TAX LDA $2826,Y AND #$00FF BEQ $F158 PHY PHX TXY BIT $2802 BMI $F136 JSR $E44E ; BRA $F139 LC2F136: JSR $E42C ; LC2F139: PLA CLC ADC #$0014 ; #$0014 = 20 TAX LDA $01,S AND #$000F ASL ASL CLC ADC #$282E ; #$282E = 10286 TAY LDA #$7E73 ; #$7E73 = 32371 JSR $E4ED ; PLY INY CPY #$0008 ; #$0008 = 8 BNE $F119 LC2F158: PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2F15B: PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit LDA $2801 AND #$0007 ASL ASL ASL CLC ADC #$2D00 ; #$2D00 = 11520 TAY LDX #$50C4 ; #$50C4 = 20676 LDA #$D105 ; #$D105 = 53509 JSR $E59D ; BIT $2802 BMI $F18C LDX #$51CE ; #$51CE = 20942 LDY #$F514 ; #$F514 = 62740 LDA #$C002 ; #$C002 = 49154 JSR $E59D ; LC2F18C: PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2F18F: PHB PHP SEP #$20 ; A = 8bit LDA #$7E ; #$7E = 126 PHA PLB LDA $2800 REP #$20 ; A = 16bit AND #$00FF PHA ASL ASL ASL CLC ADC $01,S TAX PLA SEP #$20 ; A = 8bit LDA $D12D40,X STA $2801 INX TXY AND #$07 XBA LDA #$00 ; #$00 = 0 XBA TAX LDA $C0F1EC,X PHA XBA PLA REP #$20 ; A = 16bit STA $2802 TYA CLC ADC #$2D40 ; #$2D40 = 11584 TAX LDY #$2826 ; #$2826 = 10278 LDA #$0007 ; #$0007 = 7 MVN $7E,$D1 SEP #$20 ; A = 8bit LDA $2802 STA $2825 LDX $8E LC2F1DF: SEP #$20 ; A = 8bit LDA $2826,X STA $2809 JSR $F29F ; REP #$20 ; A = 16bit TXA ASL TAY LDA $280A STA $284E,Y LDA $2801 AND #$0080 BEQ $F212 SEP #$20 ; A = 8bit BIT $2805 REP #$20 ; A = 16bit BPL $F20C LSR $280E ROR $280C LC2F20C: LSR $280E ROR $280C LC2F212: TXA ASL ASL TAY LDA $280C STA $282E,Y LDA $280E STA $2830,Y INX CPX #$0008 ; #$0008 = 8 BNE $F1DF LDX $8E LC2F22A: STZ $285E,X STZ $2860,X INX INX INX INX CPX #$0020 ; #$0020 = 32 BNE $F22A LDA $2801 AND #$0007 BEQ $F29C LDY $8E REP #$20 ; A = 16bit LDA $2826,Y JSR $D9AB ; LDA $2826,Y AND #$00FF BEQ $F290 CMP #$00E0 ; #$00E0 = 224 SEP #$20 ; A = 8bit BPL $F283 LDA $9D REP #$20 ; A = 16bit AND #$003F ASL ASL TAX PHY TYA ASL ASL TAY LDA $D12480,X ; ? (4バイト×64) STA $285E,Y LDA $D12482,X STA $2860,Y PLY SEP #$20 ; A = 8bit LDA $9F AND #$3F CLC ADC #$00 ; #$00 = 0 BRA $F287 LC2F283: LDA $9E AND #$3F LC2F287: STA $287E,Y INY CPY #$08 ; #$08 = 8 BRK $D0 LDA ($BB,S),Y LC2F291: CPX #$0008 ; #$0008 = 8 BEQ $F29C STZ $287E,X INX BRA $F291 LC2F29C: PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2F29F: PHB PHX PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit LDA $2809 AND #$00FF ASL TAX LDA $2825 AND #$0080 BNE $F2BF LDA $D12A00,X ; FILEPOS_ITEMPRICE BRA $F2C3 LC2F2BF: LDA $D12C00,X LC2F2C3: STA $280A JSR $F2CD ; PLP PLX PLB RTS ;-------------------------------- ; ;-------------------------------- LC2F2CD: PHP SEP #$20 ; A = 8bit LDA $280B STA $E0 LDA $280A REP #$20 ; A = 16bit AND #$001F ASL ASL TAX LDA $C0F517,X STA $E1 LDA $C0F519,X STA $E3 JSR $F2FB ; LDA $E5 STA $280C LDA $E7 STA $280E PLP RTS ;-------------------------------- ; ;-------------------------------- LC2F2FB: PHP REP #$20 ; A = 16bit STZ $E5 STZ $E7 SEP #$20 ; A = 8bit LDA $E0 STA $004202 ; 乗算器(8bit×8bit) 被乗数 LDX $8E LC2F30C: SEP #$20 ; A = 8bit LDA $E1,X STA $004203 ; 乗算器(8bit×8bit) 乗数 NOP NOP NOP REP #$20 ; A = 16bit LDA $004216 ; 乗算結果(下位) or 除算余剰結果 CLC ADC $E5,X STA $E5,X INX CPX #$0003 ; #$0003 = 3 BNE $F30C PLP RTS ;-------------------------------- ; ;-------------------------------- LC2F32A: PHB PHP LDA $2BF4 BNE $F393 LDA #$B59E ; #$B59E = 46494 JSR $C1B8 ; LDX $E6 LDY #$2C04 ; #$2C04 = 11268 LDA #$7E06 ; #$7E06 = 32262 JSR $E59D ; LDA $E6 CLC ADC #$0034 ; #$0034 = 52 TAX LDY #$2BF6 ; #$2BF6 = 11254 LDA #$7E21 ; #$7E21 = 32289 JSR $E4ED ; LDA $E6 CLC ADC #$00A6 ; #$00A6 = 166 TAX LDY #$2BF8 ; #$2BF8 = 11256 JSR $D5DB ; LDA $E6 CLC ADC #$0080 ; #$0080 = 128 TAX LDY #$2C0C ; #$2C0C = 11276 JSR $D662 ; LDA $2C0A ASL ASL ASL TAX LDA $2C12 STA $7362,X LDA $E6 SEC SBC #$0082 ; #$0082 = 130 TAX LDA $2C0A INC INC INC INC XBA AND #$0700 ORA #$80C0 JSR $D6DC ; BRA $F399 LC2F393: LDA #$B5B1 ; #$B5B1 = 46513 JSR $C1B8 ; LC2F399: PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2F39C: PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit LDX $8E LDY #$2C14 ; #$2C14 = 11284 LC2F3AA: PHX PHY LDA $C0F3C5,X STA $E6 TYX LDY #$2BF4 ; #$2BF4 = 11252 LDA #$001F ; #$001F = 31 MVN $7E,$7E JSR $F32A ; PLY PLX INX INX TYA CLC ADC #$0020 ; #$0020 = 32 TAY CPX #$0008 ; #$0008 = 8 BNE $F3AA PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2F3D1: AND #$000F DEC AND #$0003 XBA LSR LSR LSR RTS ;-------------------------------- ; ;-------------------------------- LC2F3DD: ASL PHA LDA $0293,X AND #$03F1 ORA ($9D,X) STA ($02,S),Y STA $0297,X PLA INX INX INX INX INX INX INX INX RTS ;-------------------------------- ; ;-------------------------------- LC2F3F6: PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit LDA $52 ; 一時変数 倍率(下位) AND #$00FF CMP #$0009 ; #$0009 = 9 BEQ $F41A JSR $F3D1 ; TAX SEP #$20 ; A = 8bit LDY #$0004 ; #$0004 = 4 LC2F412: LDA #$06 ; #$06 = 6 JSR $F3DD ; DEY BNE $F412 LC2F41A: REP #$20 ; A = 16bit LDA $55 ; 一時変数 防御力(上位) JSR $F3D1 ; TAY PHA STZ $85 LC2F425: LDA $2C1C,Y AND #$1F07 PHY LDY $85 JSR $D492 ; PLY INY INY LDA $85 INC STA $85 CMP #$0004 ; #$0004 = 4 BNE $F425 PLX SEP #$20 ; A = 8bit LDY $8E TYA JSR $F3DD ; INY CPY #$04 ; #$04 = 4 BRK $D0 INC $28,X PLB RTS ;-------------------------------- ; ;-------------------------------- LC2F450: PHB PHP REP #$20 ; A = 16bit LDX #$F907 ; #$F907 = 63751 LDY #$0290 ; #$0290 = 656 LDA #$007F ; #$007F = 127 MVN $7E,$C0 PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2F463: PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit LDX #$1800 ; #$1800 = 6144 LDA $8E LC2F471: STA $AFFE,X DEX DEX BNE $F471 STZ $F6 LC2F47A: LDA $F6 ASL ASL ASL ASL ASL TAY LDA $2C14,Y BNE $F4C1 LDA $F6 ASL TAX LDA $C0F8FF,X STA $E4 LDA #$0004 ; #$0004 = 4 STA $85 LC2F496: LDA $2C1C,Y BIT #$0040 BNE $F4B3 AND #$1F07 STA $EA PHY PHB JSR $D2DB ; LDA #$0006 ; #$0006 = 6 LDX #$ED31 ; #$ED31 = 60721 JSR $D304 ; PLB PLY LC2F4B3: INY INY LDA $E4 CLC ADC #$0040 ; #$0040 = 64 STA $E4 DEC $85 BNE $F496 LC2F4C1: LDA $F6 INC STA $F6 CMP #$0004 ; #$0004 = 4 BNE $F47A LDX #$EFD9 ; #$EFD9 = 61401 JSR $D9FB ; PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2F4D4: PHB PHP PEA $3030 PLB PLB REP #$20 ; A = 16bit STZ $F6 LC2F4DF: JSR $F4EF ; LDA $F6 INC STA $F6 CMP #$0004 ; #$0004 = 4 BNE $F4DF PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2F4EF: LDA $F6 ASL TAX LDA $C0F8E7,X CLC ADC #$6000 ; #$6000 = 24576 STA $FC TAX LDA $044A,X STA $F8 LDA $044C,X STA $FA LDA $0490,X STA $F0 LDA $0492,X STA $F2 LDA $0494,X STA $F4 LDA $0471,X STA $FE JSR $F561 ; LDY $FC LDX $8E LC2F523: LDA $0000,Y ; FILEPOS_MONDATA STA $E8,X AND #$0007 BNE $F53C LDA $0002,Y ; FILEPOS_ITEMDATA_WEAPON[2] STA $E2 LDA $0006,Y ; FILEPOS_ITEMDATA_WEAPON[6] STA $E4 LDA $0008,Y ; FILEPOS_ITEMDATA_WEAPON[8] STA $E6 LC2F53C: TYA CLC ADC #$0050 ; #$0050 = 80 TAY INX INX CPX #$0008 ; #$0008 = 8 BNE $F523 LDA $F6 AND #$0003 ASL TAX LDA $C0F8F7,X TAY LDX #$01E0 ; #$01E0 = 480 LDA #$001F ; #$001F = 31 PHB MVN $7E,$00 PLB RTS ;-------------------------------- ; ;-------------------------------- LC2F561: LDA $F6 AND #$0003 ASL TAX LDA $7FF8,X CMP #$E41B ; #$E41B = 58395 BNE $F57D JSR $F588 ; CMP $7FF0,X BNE $F582 LDA #$0000 ; #$0000 = 0 BRA $F585 LC2F57D: LDA #$8000 ; #$8000 = 32768 BRA $F585 LC2F582: LDA #$4000 ; #$4000 = 16384 LC2F585: STA $E0 RTS ;-------------------------------- ; ;-------------------------------- LC2F588: PHB PHX PHY PHP PEA $3030 PLB PLB REP #$20 ; A = 16bit LDX $FC LDY #$0600 ; #$0600 = 1536 LDA $8E CLC LC2F59B: ADC $0000,X ; FILEPOS_MONDATA INX INX DEY DEY BNE $F59B PLP PLY PLX PLB RTS ;-------------------------------- ; ;-------------------------------- LC2F5A9: PHP SEP #$20 ; A = 8bit LDA $000973 AND #$02 LSR CLC ADC #$F3 ; #$F3 = 243 STA $001D00 JSL $C40004 PLP RTS ;-------------------------------- ; ;-------------------------------- LC2F5C0: PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit STZ $85 STZ $7E LC2F5CD: LDA $7E ASL TAX LDA $C0EA0E,X STA $2BBA JSR $D4C5 ; JSR $DDD7 ; LDX $80 LDA $0500,X AND #$0040 BEQ $F5F2 LDA $85 CLC ADC #$0004 ; #$0004 = 4 STA $85 BRA $F631 LC2F5F2: TXA CLC ADC #$0516 ; #$0516 = 1302 STA $82 LDX $8E LC2F5FB: PHX LDA $C0EA16,X CLC ADC $2BBA PHA LDX $85 LDA $2CB4,X INX STX $85 AND #$0003 TAY LDA ($82),Y AND #$00FF PLX PHX PHA JSR $D8E4 ; PLA PLX CMP #$0080 ; #$0080 = 128 BMI $F629 LDA #$0108 ; #$0108 = 264 JSR $D6DC ; LC2F629: PLX INX INX CPX #$0008 ; #$0008 = 8 BNE $F5FB LC2F631: INC $7E LDA $85 CMP #$0010 ; #$0010 = 16 BNE $F5CD PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2F63D: PHB PHP PEA $7E7E PLB PLB SEP #$20 ; A = 8bit LDX #$002F ; #$002F = 47 LC2F649: STZ $2C9B,X DEX BNE $F649 REP #$20 ; A = 16bit LDA $8E SEP #$20 ; A = 8bit LDX $8E LC2F657: PHX LDA $C0F0A5,X TAY LDA $C0F0A7,X PHA LDA $C0F0A6,X TAX PLA AND $0970,Y BEQ $F670 INC $2C9C,X LC2F670: PLX INX INX INX CPX #$0018 ; #$0018 = 24 BNE $F657 SEP #$20 ; A = 8bit LDA $0970 PHA AND #$07 STA $2C9D PLA LSR LSR LSR LSR AND #$07 STA $2C9E REP #$20 ; A = 16bit LDA $0971 LDX $8E LC2F695: JSR $F709 ; CPX #$0003 ; #$0003 = 3 BNE $F695 LDX #$0975 ; #$0975 = 2421 LDY #$2CA9 ; #$2CA9 = 11433 LDA #$001A ; #$001A = 26 MVN $7E,$7E JSR $F6AF ; PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2F6AF: PHB PHP PEA $7E7E PLB PLB SEP #$20 ; A = 8bit LDX $8E LC2F6BA: LDY $8E LDA $2CA9,X ASL BCS $F6C9 INY CPY #$06 ; #$06 = 6 BRK $30 SBC [$88],Y LC2F6C9: TYA STA $2CC4,X INX CPX #$0007 ; #$0007 = 7 BMI $F6BA PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2F6D6: PHB PHP PEA $7E7E PLB PLB SEP #$20 ; A = 8bit LDX $8E LC2F6E1: LDY $8E LDA $2CC4,X XBA LDA #$80 ; #$80 = 128 XBA CMP #$00 ; #$00 = 0 BEQ $F6FC DEC XBA LSR XBA INY CPY #$06 ; #$06 = 6 BRK $30 SBC ($EB) LDA #$04 ; #$04 = 4 XBA LC2F6FC: XBA STA $2CA9,X INX CPX #$0007 ; #$0007 = 7 BMI $F6E1 PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2F709: PHA PHP AND #$1F BRK $E2 JSR $A69D ; BIT $6828 LSR LSR LSR LSR LSR INX RTS ;-------------------------------- ; ;-------------------------------- LC2F71C: PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit LDX $8E LC2F727: STZ $0970,X INX INX CPX #$0020 ; #$0020 = 32 BNE $F727 LDX $8E TXA SEP #$20 ; A = 8bit LC2F736: PHX LDA $C0F0A5,X TAY LDA $C0F0A6,X TAX LDA $2C9C,X BEQ $F753 PLX LDA $C0F0A7,X ORA $0970,Y STA $0970,Y BRA $F754 LC2F753: PLX LC2F754: INX INX INX CPX #$0018 ; #$0018 = 24 BNE $F736 SEP #$20 ; A = 8bit LDA $2C9E ASL ASL ASL ASL ORA $2C9D AND #$77 ORA $0970 STA $0970 JSR $F5A9 ; REP #$20 ; A = 16bit LDX #$0002 ; #$0002 = 2 LDY $8E LC2F77A: LDA $0971 ASL ASL ASL ASL ASL STA $0971 LDA $2CA6,X AND #$001F ORA $0971 STA $0971 DEX BPL $F77A JSR $F6D6 ; LDX #$2CA9 ; #$2CA9 = 11433 LDY #$0975 ; #$0975 = 2421 LDA #$001A ; #$001A = 26 MVN $7E,$7E PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2F7A6: PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit LDX $2C94 LDA $C0F1BD,X TAY LDA $C0F18E,X STA $2C9A LDA $C0F0C3,X AND #$00FF STA $2C96 ASL TAX LDA $C0F0F2,X TAX TYA AND #$00FF ORA #$0100 JSR $F7FC ; LDY $2C9A LDX $2C94 LDA $2C9C,X AND #$00FF CLC ADC $2C96 ASL TAX LDA $C0F0F2,X TAX LDA $2C9A AND #$00FF JSR $F7FC ; PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2F7FC: LDY $2C94 CPY #$0001 ; #$0001 = 1 BEQ $F809 CPY #$0002 ; #$0002 = 2 BNE $F80C LC2F809: ORA #$8000 LC2F80C: JSR $D6DC ; RTS ;-------------------------------- ; ;-------------------------------- LC2F810: PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit LDY $8E LC2F81B: TYA ASL TAX LDA $C0F0BD,X TAX PHY LDA $2CA6,Y PHA AND #$001C LSR LSR TAY BEQ $F83D PHY LDA #$00FE ; #$00FE = 254 LC2F834: STA $0000,X INX INX DEY BNE $F834 PLY LC2F83D: PLA AND #$0003 BEQ $F84F DEC ASL CLC ADC #$00F8 ; #$00F8 = 248 STA $0000,X INX INX INY LC2F84F: LDA #$000C ; #$000C = 12 LC2F852: CPY #$0008 ; #$0008 = 8 BEQ $F85F STA $0000,X INX INX INY BRA $F852 LC2F85F: PLY INY CPY #$0003 ; #$0003 = 3 BNE $F81B PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2F869: PHB PHP PEA $7E7E PLB PLB REP #$20 ; A = 16bit STZ $2CD1 STZ $2CD3 STZ $2CD5 STZ $2CD7 SEP #$20 ; A = 8bit LDA #$01 ; #$01 = 1 STA $6F JSR $ED87 ; LDX $75 BEQ $F8AE JSR $EE94 ; LDX $8E LDY $80 LDA $0521,Y BIT #$21 BEQ $F8A4 INX BIT #$01 BEQ $F8A4 INX BIT #$20 BEQ $F8A4 INX LC2F8A4: REP #$20 ; A = 16bit TXA ASL TAX SEP #$20 ; A = 8bit JSR ($FFF8,X) LC2F8AE: PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2F8B1: PHP SEP #$20 ; A = 8bit STX $2CCD AND #$03 DEC STA $2CCF STZ $2CD0 STZ $2CCB STZ $2CCC LDY $8E LC2F8C8: LDA $7B00,Y BEQ $F8F5 LDA $7A00,Y ; FILEPOS_MONMAP BMI $F8F5 AND #$7F JSR $D9AB ; LDA $9F AND $2CCD EOR $2CCE BEQ $F8F5 LDA $A2 STA $2CCC LDA $7A00,Y ; FILEPOS_MONMAP STA $2CCB LDA $7B00,Y DEC STA $7B00,Y BRA $F8FA LC2F8F5: INY CPY $75 BMI $F8C8 LC2F8FA: LDX $2CCF LDA $2CCB STA $2CD1,X LDA $2CCC STA $2CD5,X PLP RTS ;-------------------------------- ; ;-------------------------------- LC2F90B: PHP SEP #$20 ; A = 8bit AND #$03 DEC STA $2CCF STZ $2CD0 LDX $2CCF LDY $8E LC2F91C: LDA $7B00,Y BEQ $F92B LDA $7A00,Y ; FILEPOS_MONMAP BPL $F92B STA $2CD1,X BRA $F930 LC2F92B: INY CPY $75 BMI $F91C LC2F930: PLP RTS LDY $75 DEY LC2F935: LDA $7A00,Y ; FILEPOS_MONMAP BMI $F93F STA $2CD1 BRA $F942 LC2F93F: STA $2CD2 LC2F942: DEY BPL $F935 JSR $FA75 ; RTS LDX #$0040 ; #$0040 = 64 LDA #$01 ; #$01 = 1 JSR $F8B1 ; LDX #$C0C0 ; #$C0C0 = 49344 LDA #$02 ; #$02 = 2 JSR $F8B1 ; LDA #$03 ; #$03 = 3 JSR $F90B ; REP #$20 ; A = 16bit LDA $2CD6 AND #$00FF PHA LDA $2CD5 AND #$00FF ASL CMP $01,S BEQ $F979 BMI $F979 STZ $2CD2 BRA $F97F LC2F979: LDA $2CD2 STA $2CD1 LC2F97F: PLX JSR $FA75 ; RTS LDX #$0080 ; #$0080 = 128 LDA #$2001 ; #$2001 = 8193 LDA ($F8),Y LDX #$8080 ; #$8080 = 32896 LDA #$2002 ; #$2002 = 8194 LDA ($F8),Y LDX #$8080 ; #$8080 = 32896 LDA #$2003 ; #$2003 = 8195 LDA ($F8),Y LDA $2CD3 BNE $F9A6 LDA #$2003 ; #$2003 = 8195 PHD SBC $20C2,Y LDA $2CD6 AND #$00FF PHA LDA $2CD7 AND #$00FF CLC ADC $01,S STA $01,S LDA $2CD5 AND #$00FF CMP $01,S BEQ $F9CB BMI $F9CB STZ $2CD2 BRA $F9D1 LC2F9CB: LDA $2CD2 STA $2CD1 LC2F9D1: PLX JSR $FA75 ; RTS LDX #$0040 ; #$0040 = 64 LDA #$2001 ; #$2001 = 8193 LDA ($F8),Y LDX #$0080 ; #$0080 = 128 LDA #$2002 ; #$2002 = 8194 LDA ($F8),Y LDX #$8080 ; #$8080 = 32896 LDA #$2003 ; #$2003 = 8195 LDA ($F8),Y LDA $2CD1 BNE $FA14 LDA $2CD3 STA $2CD1 LDA $2CD7 STA $2CD3 LDX #$8080 ; #$8080 = 32896 LDA #$2003 ; #$2003 = 8195 LDA ($F8),Y REP #$20 ; A = 16bit LDA $2CD5 AND #$00FF STA $2CD9 BRA $FA20 LC2FA14: REP #$20 ; A = 16bit LDA $2CD5 AND #$00FF ASL STA $2CD9 LC2FA20: LDA $2CD6 AND #$00FF STA $2CDB LDA $2CD5 AND #$00FF STA $2CDD LDA $2CD7 AND #$00FF CLC ADC $2CDD STA $2CDD CMP $2CDB BEQ $FA4D BMI $FA4D CMP $2CD9 BMI $FA6C BRA $FA62 LC2FA4D: LDA $2CDB CMP $2CD9 BMI $FA6C SEP #$20 ; A = 8bit LDA $2CD2 STA $2CD1 STZ $2CD2 BRA $FA71 LC2FA62: SEP #$20 ; A = 8bit LDA $2CD3 STA $2CD2 BRA $FA71 LC2FA6C: SEP #$20 ; A = 8bit STZ $2CD2 LC2FA71: JSR $FA75 ; RTS ;-------------------------------- ; ;-------------------------------- LC2FA75: SEP #$20 ; A = 8bit LDA #$01 ; #$01 = 1 STA $6F LDA $2CD1 BEQ $FA85 STA $72 JSR $FA92 ; LC2FA85: LDA $2CD2 BEQ $FA91 STA $72 INC $6F JSR $FA92 ; LC2FA91: RTS ;-------------------------------- ; ;-------------------------------- LC2FA92: PHP JSR $E0F7 ; LDA $90 BNE $FAAB JSR $E178 ; JSR $E1A6 ; JSR $E18F ; LDA #$01 ; #$01 = 1 XBA LDA $72 JSR $E328 ; LC2FAAB: PLP RTS ;-------------------------------- ; ;-------------------------------- LC2FAAD: PHB PHP SEP #$20 ; A = 8bit LDA #$03 ; #$03 = 3 STA $6F LC2FAB5: JSR $ED5E ; LDX $75 BEQ $FAC8 JSR $EE94 ; LDA $7E7A00 ; 実行する魔法・技・道具・武器のデータ 4バイト目 STA $72 JSR $FA92 ; LC2FAC8: LDA $6F INC STA $6F CMP #$06 ; #$06 = 6 BNE $FAB5 PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2FAD4: PHB PHP REP #$20 ; A = 16bit LDX #$F5B2 ; #$F5B2 = 62898 LDY #$4300 ; #$4300 = 17152 LDA #$0006 ; #$0006 = 6 MVN $00,$C0 STZ $2102 SEP #$20 ; A = 8bit LDA #$01 ; #$01 = 1 TSB $CA PLP PLB RTS ;-------------------------------- ; ;-------------------------------- LC2FAF0: PHB PHP REP #$20 ; A = 16bit LDX #$F5B9 ; #$F5B9 = 62905 LDY #$4310 ; #$4310 = 17168 LDA #$0006 ; #$0006 = 6 MVN $00,$C0 SEP #$20 ; A = 8bit STZ $2121 LDA #$02 ; #$02 = 2 TSB $CA PLP PLB RTS PHB PHD PHP REP #$20 ; A = 16bit PHA PHP PHX PHY SEP #$20 ; A = 8bit LDA #$00 ; #$00 = 0 PHA PLB LDA $4210 LDA #$01 ; #$01 = 1 STA $4200 STZ $420C LDA #$80 ; #$80 = 128 STA $2100 PEA $0100 PLD LDA $C9 BNE $FB36 JMP $FBE7 LC2FB36: STZ $C9 LDA $CA AND #$03 BEQ $FB43 TRB $CA STA $420B LC2FB43: LDA #$04 ; #$04 = 4 BIT $CA BEQ $FB90 TRB $CA PHD PEA $2100 PLD LDX #$7500 ; #$7500 = 29952 STX $81 STZ $83 LDA $80 STA $2C LDA $80 STA $2D LDA $80 STA $2E LDA $80 STA $2F LDA $80 STA $23 LDA $80 STA $24 LDA $80 STA $25 LDA $80 STA $2A LDA $80 STA $2B LDA $80 STA $31 LDA $80 STA $30 LDA $80 STA $32 ; 一時変数 自分アドレスへのインデックス LDA $80 STA $32 ; 一時変数 自分アドレスへのインデックス LDA $80 STA $32 ; 一時変数 自分アドレスへのインデックス PLD LC2FB90: STZ $0C STZ $0D JSR $FE5B ; SEP #$20 ; A = 8bit LDA #$7E ; #$7E = 126 PHA PLB LDA #$FF ; #$FF = 255 BIT $750F BEQ $FBA7 DEC $751D LC2FBA7: BIT $7510 BEQ $FBAF DEC $751F LC2FBAF: LDA $7511 BEQ $FBE7 REP #$20 ; A = 16bit LDA $7514 STA $002116 LDA $7516 STA $004300 LDA $7518 STA $004302 LDA $751A STA $004304 LDA $751B STA $004305 SEP #$20 ; A = 8bit LDA $7511 AND #$01 STA $00420B STZ $7511 LC2FBE7: REP #$20 ; A = 16bit LDA #$0001 ; #$0001 = 1 CLC ADC $094A STA $094A LDA $8E ADC $094C STA $094C LDA $0AFB AND #$00FF CMP #$0002 ; #$0002 = 2 BNE $FC0F LDA $0AFC BEQ $FC0F DEC STA $0AFC LC2FC0F: SEP #$20 ; A = 8bit LDA $7E750E STA $00420C LDA #$81 ; #$81 = 129 STA $004200 LDA $7E7525 STA $002100 PLY PLX PLP PLA PLP PLD PLB RTI ;-------------------------------- ; ;-------------------------------- LC2FC2F: PHB SEP #$20 ; A = 8bit LDA #$7E ; #$7E = 126 PHA PLB LDA $7512 BEQ $FC3E JSR $FD75 ; LC2FC3E: LDA $750F BEQ $FC53 LDA $751D BPL $FC53 LDA #$10 ; #$10 = 16 STA $751D JSR $FCB1 ; JSR $FAD4 ; LC2FC53: LDA $7510 BEQ $FC68 LDA $751F BPL $FC68 LDA #$01 ; #$01 = 1 STA $751F JSR $FD09 ; JSR $FAD4 ; LC2FC68: LDA $7513 BEQ $FC70 JSR $FD2E ; LC2FC70: LDA $43 CMP #$01 ; #$01 = 1 BNE $FCAF LDA $0AFB CMP #$02 ; #$02 = 2 BEQ $FC82 LDY #$094A ; #$094A = 2378 BRA $FC92 LC2FC82: REP #$20 ; A = 16bit LDA $0AFC STA $2D17 STZ $2D19 LDY #$2D17 ; #$2D17 = 11543 SEP #$20 ; A = 8bit LC2FC92: PHP LDX #$6630 ; #$6630 = 26160 JSR $D662 ; REP #$20 ; A = 16bit LDX #$F5C0 ; #$F5C0 = 62912 LDY #$7514 ; #$7514 = 29972 LDA #$0008 ; #$0008 = 8 MVN $7E,$C0 SEP #$20 ; A = 8bit LDA #$01 ; #$01 = 1 STA $7511 PLP LC2FCAF: PLB RTS ;-------------------------------- ; ;-------------------------------- LC2FCB1: LDA $751E REP #$20 ; A = 16bit AND #$0001 ASL TAX LDY $8E SEP #$20 ; A = 8bit LDA $750F LC2FCC2: LSR BCC $FCF3 PHA LDA $0241,Y CLC ADC $C0F21A,X STA $0241,Y LDA $0242,Y CLC ADC $C0F21B,X STA $0242,Y LDA $0245,Y CLC ADC $C0F21A,X STA $0245,Y LDA $0246,Y CLC ADC $C0F21B,X STA $0246,Y PLA LC2FCF3: INY INY INY INY INY INY INY INY CPY #$0020 ; #$0020 = 32 BNE $FCC2 LDA $751E EOR #$01 STA $751E RTS ;-------------------------------- ; ;-------------------------------- LC2FD09: SEP #$20 ; A = 8bit LDA $7510 REP #$20 ; A = 16bit AND #$0007 ASL ASL STA $7520 SEP #$20 ; A = 8bit LDX $8E LC2FD1C: LDA $0206,X EOR #$02 STA $0206,X INX INX INX INX CPX $7520 BNE $FD1C RTS ;-------------------------------- ; ;-------------------------------- LC2FD2E: SEP #$20 ; A = 8bit LDA $7522 BNE $FD54 LDA $7513 REP #$20 ; A = 16bit AND #$0007 DEC ASL ASL TAX LDA $C0F21E,X STA $7523 LDA $C0F220,X STA $7525 SEP #$20 ; A = 8bit INC $7522 LC2FD54: LDA $7523 BEQ $FD68 DEC $7523 LDA $7524 CLC ADC $7525 STA $7525 BRA $FD74 LC2FD68: LDA $7526 STA $7525 STZ $7522 STZ $7513 LC2FD74: RTS ;-------------------------------- ; ;-------------------------------- LC2FD75: SEP #$20 ; A = 8bit LDA $7527 CMP #$04 ; #$04 = 4 BEQ $FD8C CMP #$03 ; #$03 = 3 BEQ $FD90 CMP #$02 ; #$02 = 2 BEQ $FD94 CMP #$01 ; #$01 = 1 BEQ $FD90 BRA $FD9C LC2FD8C: LDA #$00 ; #$00 = 0 BRA $FD99 LC2FD90: LDA #$02 ; #$02 = 2 BRA $FD99 LC2FD94: JSR $FE41 ; LDA #$02 ; #$02 = 2 LC2FD99: JSR $FDCA ; LC2FD9C: SEP #$20 ; A = 8bit LDA $7528 BEQ $FDBD LDX $8E LC2FDA5: LDA $0205,X BEQ $FDB1 CLC ADC $7528 STA $0205,X LC2FDB1: INX INX INX INX CPX #$0020 ; #$0020 = 32 BNE $FDA5 JSR $FAD4 ; LC2FDBD: LDA $7527 DEC STA $7527 BNE $FDC9 STZ $7512 LC2FDC9: RTS ;-------------------------------- ; ;-------------------------------- LC2FDCA: PHP REP #$20 ; A = 16bit CLC ADC $29A2 AND #$000F ASL ASL TAX LDY $29B4 SEP #$20 ; A = 8bit LDA $0000,Y ; FILEPOS_MONDATA CLC ADC $C0F22E,X STA $0000,Y INY INY INY LC2FDEA: SEP #$20 ; A = 8bit LDA $0000,Y ; FILEPOS_MONDATA BEQ $FE03 INY REP #$20 ; A = 16bit LDA $0000,Y ; FILEPOS_MONDATA CLC ADC $C0F230,X STA $0000,Y INY INY BRA $FDEA LC2FE03: PLP RTS ;-------------------------------- ; ;-------------------------------- LC2FE05: PHP REP #$20 ; A = 16bit LDX #$298E ; #$298E = 10638 LDY #$7514 ; #$7514 = 29972 LDA #$0008 ; #$0008 = 8 MVN $7E,$7E SEP #$20 ; A = 8bit LDA $7528 BEQ $FE35 LDX $8E LC2FE1D: LDA $0205,X BEQ $FE29 CLC ADC $7528 STA $0205,X LC2FE29: INX INX INX INX CPX #$0020 ; #$0020 = 32 BNE $FE1D JSR $FAD4 ; LC2FE35: LDA #$01 ; #$01 = 1 STA $7511 LDA #$04 ; #$04 = 4 STA $7527 PLP RTS ;-------------------------------- ; ;-------------------------------- LC2FE41: PHP REP #$20 ; A = 16bit LDX #$2997 ; #$2997 = 10647 LDY #$7514 ; #$7514 = 29972 LDA #$0008 ; #$0008 = 8 MVN $7E,$7E SEP #$20 ; A = 8bit LDA #$01 ; #$01 = 1 STA $7511 STZ $CA PLP RTS ;-------------------------------- ; ;-------------------------------- LC2FE5B: PHP REP #$20 ; A = 16bit PHA PHP PHX PHY PHB PHD SEP #$20 ; A = 8bit REP #$10 ; X,Y = 16bit LDA #$00 ; #$00 = 0 PHA PLB PEA $0100 PLD LDA #$01 ; #$01 = 1 LC2FE72: BIT $4212 BNE $FE72 LDY #$0000 ; #$0000 = 0 LDA $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) BEQ $FE97 LDA $0974 AND #$80 BEQ $FE97 LDA $010D REP #$20 ; A = 16bit AND #$0003 TAX LDA $097C,X AND #$00FF BEQ $FE97 INY LC2FE97: REP #$20 ; A = 16bit STY $12 TYA ASL TAX LDA $4218,X STA $06 AND #$000F BEQ $FEAA STZ $06 LC2FEAA: LDA $14,X STA $0E JSR $FED0 ; LDA $12 ASL TAX LDA $0E STA $14,X PLD LDA $010A STA $00 LDA $0108 STA $02 LDA $0106 STA $04 PLB PLY PLX PLP PLA PLP RTS ;-------------------------------- ; ;-------------------------------- LC2FED0: LDA $0974 AND #$0040 BNE $FEDE LDA $06 STA $08 BRA $FEFB LC2FEDE: LDA $06 AND #$1F0F STA $08 LDX #$0000 ; #$0000 = 0 LC2FEE8: LDA $06 AND $C0E7B8,X BEQ $FEF4 LDA $26,X TSB $08 LC2FEF4: INX INX CPX #$000E ; #$000E = 14 BNE $FEE8 LC2FEFB: LDA $0E EOR #$FFFF AND $08 STA $0A LDA $08 AND $0E SEP #$20 ; A = 8bit BIT $010C REP #$20 ; A = 16bit BMI $FF14 AND #$7F7F LC2FF14: STA $10 LDA $08 STA $0E LDX #$0000 ; #$0000 = 0 LDY $12 LC2FF1F: REP #$20 ; A = 16bit LDA $C0E7C6,X BIT $0A BNE $FF43 AND $10 BEQ $FF45 SEP #$20 ; A = 8bit LDA $011A,Y DEC BEQ $FF37 BPL $FF45 LC2FF37: REP #$20 ; A = 16bit LDA $C0E7C6,X TSB $0A LDA $19 BRA $FF45 LC2FF43: LDA $18 LC2FF45: SEP #$20 ; A = 8bit STA $011A,Y INY INY INX INX CPX #$000C ; #$000C = 12 BNE $FF1F REP #$20 ; A = 16bit RTS ;-------------------------------- ; ;-------------------------------- LC2FF56: PHP REP #$20 ; A = 16bit PHA LDA #$0310 ; #$0310 = 784 STA $000118 STA $00014D PLA PLP RTS ;-------------------------------- ; ;-------------------------------- LC2FF68: PHP REP #$20 ; A = 16bit PHA LDA #$0416 ; #$0416 = 1046 STA $000118 LDA #$0000 ; #$0000 = 0 STA $00014D PLA PLP RTS ;-------------------------------- ; ;-------------------------------- LC2FF7D: PHB PHD PHA PHX PHY PHP PEA $0000 ; FILEPOS_MONDATA PLB PLB REP #$30 ; X,Y = 16bit A = 16bit PEA $0100 PLD LDA #$0416 ; #$0416 = 1046 STA $18 STZ $4D ; 一時変数 攻撃属性? (01: 炎, 02: 氷, 04: 雷, 08: 毒, 10: 聖, 20: 地, 40: 風, 80: 水) LDY #$0000 ; #$0000 = 0 TYX LC2FF99: LDA $0975,Y JSR $FFC2 ; STA $26,X INY INX INX CPY #$0007 ; #$0007 = 7 BNE $FF99 STZ $0E STZ $14 STZ $16 LDA #$0101 ; #$0101 = 257 LDX #$000C ; #$000C = 12 LC2FFB5: DEX DEX STA $1A,X BNE $FFB5 PLP PLY PLX PLA PLD PLB RTS ;-------------------------------- ; ;-------------------------------- LC2FFC2: PHX AND #$00FC XBA LDX #$0000 ; #$0000 = 0 LC2FFCA: ASL BCS $FFD7 INX INX CPX #$000C ; #$000C = 12 BNE $FFCA LDX #$0000 ; #$0000 = 0 LC2FFD7: LDA $C0E7B8,X PLX RTS BRK $00 BRK $00 BRK $00 BRK $00 BRK $00 BRK $00 BRK $5F ; 一時変数 攻撃エフェクトフラグ(1)? REP #$61 ; A = 16bit REP #$A4 ; A = 16bit REP #$E8 ; A = 16bit REP #$2D ; A = 16bit CMP $6D,S REP #$CC REP #$32 ; X,Y = 16bit A = 16bit SBC $F949,Y STY $F9 DEC $F9,X