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

by ffv, 30-03-2010

  1. 戰利品
  2. 偷寶物程序
  3. 雙倍攻擊力

1)戰利品
C25EFD A0 0A       LDY #$0A                
C25EFF B9 EC 3E    LDA $3EEC,y   
C25F02 89 C2       BIT #$C2                
C25F04 F0 30       BEQ $30         
C25F06 20 42 4B    JSR $4B42   //取亂數值
C25F09 C9 20       CMP #$20    //如小於32,便有戰利品。              
C25F0B C2 30       REP #$30                


2)偷寶物程序
C2398E A3 05       LDA $05,s     
C23990 AA          TAX                     
C23991 A9 01       LDA #$01                
C23993 8D 01 34    STA $3401     
C23996 E0 08       CPX #$08                
C23998 B0 5F       BCS $5F         //如怪獸有偷取能力,去 C239F9。

C2399A C2 20       REP #$20                
C2399C B9 08 33    LDA $3308,y     //怪獸寶物編號
C2399F 1A          INC A           //加1,不過 FFFF+1=0。        
C239A0 E2 21       SEP #$21                
C239A2 F0 4D       BEQ $4D         //如等於零,表示沒有寶物或已偷了,去 C239F1 偷不到寶物處理。

C239A4 EE 01 34    INC $3401     
C239A7 BD 18 3B    LDA $3B18,x     //讀入玩家等級
C239AA 69 32       ADC #$32        //加 50         
C239AC B0 1A       BCS $1A         //如大過 256,去 C239C8 偷寶物程序處理。

C239AE F9 18 3B    SBC $3B18,y     //減去怪獸等級
C239B1 90 3E       BCC $3E         //如小於零,去 C239F1 偷不到寶物處理。

C239B3 30 13       BMI $13         //如大過128,去 C239C8 偷寶物程序處理。

C239B5 85 EE       STA $EE         //儲存能偷值

C239B7 BD 45 3C    LDA $3C45,x     //讀取盜賊裝備物品
C239BA 4A          LSR A                   
C239BB 90 02       BCC $02         //如沒裝備「とうぞくのうでわ」(盜賊手環),去 C239BF。
C239BD 06 EE       ASL $EE         //如裝備了盜賊手環,能偷值加倍。

C239BF A9 64       LDA #$64                
C239C1 20 4D 4B    JSR $4B4D       //取0~99之間的亂數值
C239C4 C5 EE       CMP $EE         //和能偷值比較
C239C6 B0 29       BCS $29         //亂數值 > 能偷值,去 C239F1 偷不到寶物處理。

//偷寶物程序處理:

C239C8 5A          PHY                     
C239C9 20 42 4B    JSR $4B42       //取0~255之間的亂數值
C239CC C9 20       CMP #$20        //罕有寶物率 
C239CE 90 01       BCC $01         //如亂數值 < 32,去 C239D1,得到罕有寶物。 

C239D0 C8          INY             //y:罕有寶物編號值位址,y+1:普通寶物編號值位址。

C239D1 B9 08 33    LDA $3308,y     //載入寶物編號值位址
C239D4 7A          PLY                     
C239D5 C9 FF       CMP #$FF                
C239D7 F0 18       BEQ $18         //如等於255, 去 C239F1 偷不到寶物處理。

C239D9 8D 35 2F    STA $2F35     
C239DC 9D F4 32    STA $32F4,x   
C239DF BD 18 30    LDA $3018,x   
C239E2 0C 8C 3A    TSB $3A8C     
C239E5 A9 FF       LDA #$FF         //偷取後,把怪獸寶物編號值設定為 FFFF。
C239E7 99 08 33    STA $3308,y   
C239EA 99 09 33    STA $3309,y   
C239ED EE 01 34    INC $3401     
C239F0 60          RTS                     

//偷不到寶物處理:

C239F1 E2 20       SEP #$20                
C239F3 A9 00       LDA #$00                
C239F5 99 48 3D    STA $3D48,y   
C239F8 60          RTS  

3)雙倍攻擊力
C233FB 20 42 4B    JSR $4B42       //取亂數值  
C233FE C9 08       CMP #$08        //臨界攻擊值
C23400 B0 0D       BCS $0D         //亂數值 >8,去 C2340F 普通攻擊。

//攻擊力加倍程序:

C23402 AD C9 3E    LDA $3EC9  
C23405 F0 08       BEQ $08    
C23407 E6 BC       INC $BC    
C23409 E6 BC       INC $BC    
C2340B A9 20       LDA #$20   
C2340D 04 A0       TSB $A0    

//普通攻擊程序:
C2340F 20 A8 35    JSR $35A8  

參考網址:
http://s-endo.skr.jp/ff_analyzer.html
http://www.defence-force.org/computing/oric/coding/annexe_2/