Final Fantasy V 超任模擬器用金手指解析

by ffv, 14-02-2010

以下是我參考多個網站資料編輯而成,如有錯漏,請諒。
我只是想更了解這遊戲和增加遊玩樂趣,並加上一些從沒有的改造碼,
尤其是戰利品和偷寶物,遠勝升等級和金錢,因為真是再沒可能花幾星期來偷一兩把飛龍之槍!
升ABP值、經驗值、金錢的改造碼俯拾皆是,不多說了,當玩過以Lv4爆機後,就知何事了。
我最終目的是金錢龜徽章,希望有一天能再想回那攻略法。
所有分析以超任日文版為準。用另一個角度再一次進入這個最終幻想世界,謝謝。

  1. 戰利品
  2. 能偷值
  3. 寶物編號值
  4. 疾走模式

1)戰利品
前文為取亂數值程序,省略。
C256D4 A5 0E       LDA $0E    //載入亂數值
C256D6 C9 10       CMP #$10                
C256D8 B0 11       BCS $11    //如亂數值 >= 16就去 C256EB 離開;小於16可得戰利品。 

***如每次戰鬥後變成能強制處理戰利品的話***

//處理所得戰利品程序:

C256DA BF 02 50 D0 LDA $D05002,x //載入戰利品位址
C256DE F0 0B       BEQ $0B    //去 C256EB      

C256E0 C9 80       CMP #$80                
C256E2 F0 07       BEQ $07    //去 C256EB     

C256E4 C9 FF       CMP #$FF                
C256E6 F0 03       BEQ $03    //去 C256EB      

C256E8 99 66 7C    STA $7C66,y   

C256EB 60          RTS    

注意:
偷中率=能偷值x寶物編號值x寶物存在值。不是真的乘數,只是關係表示。
能偷值:當0時代表可以進行偷取,大過0就不能。
寶物編號值:在怪獸內兩款寶物編號值中取其一,但有些怪獸只有一款寶物。
加上亂數值和概率的多重處理,以致得到罕有寶物編號值的機會很低,
所以很難偷取,理論上是少於4%。但對於賊來說,只有偷到與否這問題。
2)能偷值
C27150 9C 9A 7C    STZ $7C9A      //設定已被盜取值為0
C27153 A6 49       LDX $49       
C27155 BD 6B 20    LDA $206B,x    //載入怪獸寶物存在值

***如果想無限偷的話***

C27158 F0 05       BEQ $05        //怪獸寶物存在值=0,即表示有寶物,去 C2715F 。
C2715A EE 9A 7C    INC $7C9A      //已被盜取值加1
C2715D 80 37       BRA $37        //去 C27196,當偷不到寶物處理。 

//讀取怪獸資料:
C2715F 38          SEC                     
C27160 A5 48       LDA $48       
C27162 E9 04       SBC #$04        //>= 4:敵方         
C27164 0A          ASL A                   
C27165 AA          TAX                     
C27166 C2 20       REP #$20                
C27168 BD 20 40    LDA $4020,x     //讀取怪獸編號
C2716B 20 B7 01    JSR $01B7       //去 C201B7
C2716E AA          TAX                     
C2716F 7B          TDC                     
C27170 E2 20       SEP #$20                

C27172 BF 00 50 D0 LDA $D05000,x   //怪獸寶物編號值1
C27176 1F 01 50 D0 ORA $D05001,x   //怪獸寶物編號值2
C2717A D0 05       BNE $05         //如有寶物,去 C27181
C2717C EE 9A 7C    INC $7C9A       //已被盜取值加1
C2717F 80 15       BRA $15         //去 C27196,當偷不到寶物處理。 

C27181 20 85 7C    JSR $7C85       //去 C27C85, 讀取命中值、迴避值和特殊道具效果值。省略。
C27184 20 12 7E    JSR $7E12       //去 C27E12, 跳去能偷值處理程序

***每次戰鬥前,能偷值已預設是0,那麼只要不再處理能偷值,便一定可以偷寶物。***
-------------------------------------------------------------------
//能偷值處理程序:

C27E12 20 A2 02    JSR $02A2       //取亂數值
C27E15 C5 4E       CMP $4E         //比較命中值
C27E17 B0 07       BCS $07         //亂數值 >= 命中值,失手!去 C27E20

C27E19 20 A2 02    JSR $02A2       //取亂數值
C27E1C C5 4F       CMP $4F         //比較迴避值
C27E1E B0 02       BCS $02         //亂數值 >= 迴避值,可偷!去 C27E22

C27E20 E6 56       INC $56         //能偷值加1,失手被擒!

***命中值 > 亂數值 >= 迴避值,能偷值=0。***

C27E22 60          RTS               
---------------------------------------------------------------------

C27187 A5 56       LDA $56       //載入能偷值
C27189 D0 0B       BNE $0B       //如能偷值不等於0,去 C27196,當偷不到寶物處理。 
C2718B 20 08 92    JSR $9208     //去 C29208, 跳去偷寶物程序

C2718E A5 56       LDA $56       //載入能偷值
C27190 D0 04       BNE $04       //如能偷值不等於0,去 C27196,當偷不到寶物處理。
C27192 A9 21       LDA #$21      //文句:"%s をぬすんだ"(譯:偷到寶物%s了,%s代表寶物名稱。)
C27194 80 0D       BRA $0D       //去 C271A3     

//偷不到寶物處理程序:

C27196 E6 56       INC $56       //能偷值加1
C27198 AD 9A 7C    LDA $7C9A     //載入已被盜取值
C2719B F0 04       BEQ $04       //如已被盜取值 =0,表示未偷到,去 C271A1  
    
C2719D A9 4B       LDA #$4B      //文句:"何も持っていない!"(譯:甚麼也沒有)
C2719F 80 02       BRA $02       //去 C271A3      

C271A1 A9 22       LDA #$22      //文句:"ぬすみそこなった" (譯:偷不到)

C271A3 48          PHA                     
C271A4 20 65 99    JSR $9965     //去 C29965

C271A7 AD 46 47    LDA $4746     
C271AA C9 0B       CMP #$0B                
C271AC F0 04       BEQ $04       //去 C271B2      

C271AE C9 33       CMP #$33   
C271B0 D0 02       BNE $02       //去 C271B4

C271B2 7B          TDC                     
C271B3 AA          TAX                    
 
C271B4 68          PLA                     
C271B5 9D 5F 3C    STA $3C5F,x
C271B8 60          RTS                     

3)寶物編號值
//偷寶物程序:
C29208 A5 48       LDA $48       //角色編號 (0~3: 己方,4~: 敵方 )
C2920A C9 04       CMP #$04                
C2920C B0 03       BCS $03       //>= 4便處理,去 C29211 
C2920E 4C A2 92    JMP $92A2     //去 C292A2 離開

C29211 7B          TDC                      
C29212 AA          TAX                     
C29213 A9 FF       LDA #$FF                  
C29215 20 7C 00    JSR $007C     //取0~255之間的亂數值
C29218 85 0E       STA $0E       //儲存亂數值

//讀取怪獸資料:
C2921A 38          SEC                   
C2921B A5 48       LDA $48       //角色編號 (0~3: 己方,4~: 敵方 )
C2921D E9 04       SBC #$04      //>= 4:敵方       
C2921F 0A          ASL A                    
C29220 AA          TAX         
C29221 C2 20       REP #$20                 
C29223 BD 20 40    LDA $4020,x   //讀取怪獸編號
C29226 20 B7 01    JSR $01B7     //去 C201B7
C29229 AA          TAX                     
C2922A 7B          TDC                       
C2922B E2 20       SEP #$20      

//兩款寶物編號值選其一程序:

***如能控制亂數值或比較值,便可控制寶物的出現概率。***
*** 0 < 亂數值 <10:罕有寶物;亂數值 >= 10:普通寶物。***

C2922D A5 0E       LDA $0E        //載入亂数值
C2922F C9 0A       CMP #$0A                
C29231 90 01       BCC $01        //如亂數值 < 10,去 C29234,得到罕有寶物。

C29233 E8          INX            //x:罕有寶物編號值位址,x+1:普通寶物編號值位址。
    
C29234 BF 00 50 D0 LDA $D05000,x  //載入寶物編號值位址
C29238 F0 68       BEQ $68        //如寶物編號值是0即表示沒有寶物,去 C292A2 離開     
C2923A 85 0E       STA $0E        //儲存所偷得寶物編號值

//檢查所偷得寶物與已擁有寶物是否相同程序:

C2923C A0 FF 00    LDY #$00FF     //共256個寶物欄       
C2923F B9 34 27    LDA $2734,y    //載入已擁有寶物位址
C29242 C5 0E       CMP $0E        //與所偷得寶物比對
C29244 F0 12       BEQ $12        //如相同,去 C29258 
C29246 88          DEY                     
C29247 10 F6       BPL $F6        //找下一個相同寶物,去 C2923F
C29249 7B          TDC                     
C2924A A8          TAY                 

//找寶物欄空欄程序:
    
C2924B B9 34 27    LDA $2734,y    //載入已擁有寶物位址
C2924E F0 08       BEQ $08        //如有空欄,去 C29258
C29250 C8          INY                     
C29251 C0 00 01    CPY #$0100     //與256比較   
C29254 D0 F5       BNE $F5        //不是256,繼續找空欄,去 C2924B
C29256 80 4A       BRA $4A        //如沒有空欄,去 C292A2 離開

//處理所偷得寶物程序:

C29258 A5 0E       LDA $0E         //載入所偷得寶物編號值
C2925A 99 34 27    STA $2734,y     //儲存已擁有寶物位址
C2925D B9 20 26    LDA $2620,y   
C29260 48          PHA                    
C29261 5A          PHY                     
C29262 A5 0E       LDA $0E       
C29264 20 FA 03    JSR $03FA   
C29267 20 69 03    JSR $0369   
C2926A 7A          PLY                     
C2926B 99 34 2C    STA $2C34,y     //儲存已擁有寶物是否戰鬥時可用工具

C2926E 68          PLA                     
C2926F 99 20 26    STA $2620,y
C29272 18          CLC                     
C29273 B9 34 28    LDA $2834,y     //載入已擁有所偷得寶物數量
C29276 1A          INC A           //數量加1
C29277 C9 64       CMP #$64                
C29279 90 02       BCC $02         //數量<100件,去 C2927D,否則把數量設定為99件。

***就是這一句令那經典秘技「偷取99件」,為何是99件了。***
***最初是0,掉兩次,減2變成254,加1,變成255,由於大過100,所以是99。***
***至於偷取255件,最初是0,減1變成255,加1變成0,當在戰鬥中用了一件,***
***因為0-1變成255。但如果再加1,又會變回0,令物品消失,所以最好都是偷99件。***

C2927B A9 63       LDA #$63        //設定為99件

C2927D 99 34 28    STA $2834,y     //儲存所擁有寶物的新數量
C29280 A6 49       LDX $49       
C29282 B9 34 27    LDA $2734,y     //載入已擁有寶物位址
C29285 9D 6B 20    STA $206B,x   
C29288 5A          PHY                     
C29289 20 65 99    JSR $9965     
C2928C BB          TYX                     
C2928D 7A          PLY                

//表示所偷得寶物名稱處理: 
    
C2928E AD 46 47    LDA $4746        //載入指令形態
C29291 C9 0B       CMP #$0B         
C29293 F0 04       BEQ $04          //去 C29299     

C29295 C9 33       CMP #$33         
C29297 D0 02       BNE $02          //去 C2929B 

C29299 7B          TDC                     
C2929A AA          TAX                     

C2929B B9 34 27    LDA $2734,y      //載入已擁有寶物位址
C2929E 9D BF 3C    STA $3CBF,x      //信息用引數,用來顯示寶物名稱。
C292A1 60          RTS                    

//偷不到
C292A2 E6 56       INC $56          //能偷值加1
C292A4 60          RTS        

4)疾走模式
由於每行一步,都會檢查7E0AFA這個值,如入住旅館後,便會設定為0。 大過0便是快速,連飛龍都飛快很多。
我想步速是這遊戲最垢病的地方,不論是1992年或今天。

參考網址:
http://s-endo.skr.jp/ff_analyzer.html
http://x11.s11.xrea.com/ff5_algorithms
http://www9.atwiki.jp/ffbin/
http://erick.guillen.com.mx/
http://homepage3.nifty.com/game-sfccode/index.html
http://www.defence-force.org/computing/oric/coding/annexe_2/