fanco238 发表于 2014-7-22 20:31:21

請教自行修改遊戲檔一些疑問

本帖最后由 fanco238 于 2015-1-31 17:10 编辑

在此先感謝 管理員 疾風之狼 以下帖子的分享
http://www.emu618.org/thread-21186-1-1.html

我按著 指示 也成功自行 修改到 FC赤影戰士的 不減飛鏢了
成功一刻, 真是興奮莫名

http://www.emu618.org/data/attachment/album/201407/22/202622rlmpbgh4hp6gclng.jpg
http://www.emu618.org/data/attachment/album/201407/22/202631d9wm99c2an9a9m94.png http://www.emu618.org/data/attachment/album/201407/22/202646h91vae6nsxax41us.png

不過也只是 完全 跟著指示, 過程中還是有很多疑問,
如不解開, 那麼修改 也只是 局限於 此遊戲

===============================

圖6 後 的一段文字還是看不懂

[ 一 ] : 那段文字第一行((查指令表得知 B84 這個地址 DEC$0662,X指令作用是將0662+(X)=真正暗器地址的數值減1))
問題一 # 指令表 就是說圖6 吧 ?

問題二 # 為什麼說 指令作用是將0662+(X)=...數值減1, 我看著圖6 右下角是-- =0x13
                0x13 不是應解作 數值 減13 嗎 ?
                從何知道 0662+(X)=...數值減1      

-----------------------------------------------------------------------------------
[ 二 ] : 那段文字第二行 ((既然這樣, 只要把這條 DEC$0662,X 指令 改為 LDA$0662,X 就可以讓暗器數量不減了))
問題一 # 為什麼 DEC 改為 LDA ?   LDA 這3個英文字母 是從哪裡知道就是代表了 可讓暗器數量不減 ?
               
問題二 # 我在圖6 中間位置 也看到很多 英文字組..例如 BEQ, AND, BNE, 為什麼 就是要 改成 LDA


-----------------------------------------------------------------------------------
[ 三 ] : 那段文字中間 (( 查指令機器得知 DE是DEC-absolute,X   BD是LDA-absolute,X, 注意尋區方式要一樣...))
問題一 # 指令機器 是說一軟件工具嗎 ?在哪裡可以下載 ?

問題二 # 尋區方式 即是什麼 ?


其實還有其他問題的, 不過一次不問太多了
在此 懇請各位懂得的 大大 及 高人 能夠指點, 偶是有心慢慢學習的
就算不全部解答, 懂多少就答多少, 對偶可能也是一大幫助

紫龙666 发表于 2014-7-23 15:22:08

你要看6502大奥秘,就知道指令是什么了,论坛有资料去下载。

fanco238 发表于 2014-7-23 18:51:31

本帖最后由 fanco238 于 2015-1-31 17:10 编辑

紫龙666 发表于 2014-7-23 15:22
你要看6502大奥秘,就知道指令是什么了,论坛有资料去下载。

先感謝 紫龍666 的回覆{:4_118:}

我已於 管理員 疾風之狼 以下帖子 找到 6052汇编大奥秘
http://www.emu618.org/thread-20393-1-1.html

下載解壓後 得到一個檔
http://www.emu618.org/data/attachment/album/201407/23/184609rfo3lejb5n8f2l72.jpg

但我卻開不到這個檔, 顯示(無法開啟檔案)
愚昧請問一下   6052汇编大奥秘 是否 一個文字檔
此檔有很多文章在內 嗎 ?

疾风之狼 发表于 2014-7-23 19:44:38

[ 一 ] : 那段文字第一行((查指令表得知 B84 這個地址 DEC$0662,X指令作用是將0662+(X)=真正暗器地址的數值減1))

問題一 # 指令表 就是說圖6 吧 ?

問題二 # 為什麼說 指令作用是將0662+(X)=...數值減1, 我看著圖6 右下角是-- =0x13

0x13 不是應解作 數值 減13 嗎 ?

從何知道 0662+(X)=...數值減1

是地址,0x13是该地址的数值

DEC是自减指令,DEC $addr,X指令是以寄存器X的值作为偏移量,把$addr+X的地址数据减1,结果存于$addr+X

[ 二 ] : 那段文字第二行 ((既然這樣, 只要把這條 DEC$0662,X 指令 改為 LDA$0662,X 就可以讓暗器數量不減了))

問題一 # 為什麼 DEC 改為 LDA ?   LDA 這3個英文字母 是從哪裡知道就是代表了 可讓暗器數量不減 ?

問題二 # 我在圖6 中間位置 也看到很多 英文字組..例如 BEQ, AND, BNE, 為什麼 就是要 改成 LDA

LDA是读,STA是写

DEC修改为LDA,把$0662地址的数值读入寄存器A,0662地址的数值维持不变,不就不减了

BEQ和BNE是条件跳转指令,BEQ是等于时跳转,BNE是不等于时跳转

AND是逻辑运算指令

请看《6502汇编大奥秘》

[ 三 ] : 那段文字中間 (( 查指令機器得知 DE是DEC-absolute,X   BD是LDA-absolute,X, 注意尋區方式要一樣...))

問題一 # 指令機器 是說一軟件工具嗎 ?在哪裡可以下載 ?

問題二 # 尋區方式 即是什麼 ?

我是说查指令机器码表,没有这指令机器码表,你能知道每条指令作用么?

寻区方式请看《6502汇编大奥秘》

fanco238 发表于 2014-7-24 00:52:40

本帖最后由 fanco238 于 2015-1-31 17:13 编辑

疾风之狼 发表于 2014-7-23 19:44
是地址,0x13是该地址的数值

DEC是自减指令,DEC $addr,X指令是以寄存器X的值作为偏移量,把$ ...

先感謝 管理員 疾風之狼 的回覆 {:4_118:}

好像有些明, 又好像有些不明
於圖6 下面的 - - =0x13
大大說是地址,0x13是该地址的数值

我先愚昧簡單的想:
(( 是地址 )) 想像是一個 掌管了 飛鏢數量 的 地方名稱 飛鏢倉庫
(( 0x13是该地址的数值 )) 數值當然是 飛鏢倉庫內 有多少飛鏢
                                        13 其實是一個 16進制的數,   如果化成 十進制是 19, 因剛才是用了一發飛鏢按暫停的

遊戲拿到飛鏢寶物始初是 20發, 用去一發 就是 19

------------------------------------------------------------------------------------------------

跟著我們看到 圖6下面的 DEC $0662.X,   重點 是DEC
DEC 是 自减指令,即就是 這指令 控制了 飛鏢 是減數量, 只是把它改了 就可以
LDA是 读入指令,即就是 要改到 把 地址 讀入至 寄存器A

雖然 讀入至 寄存器A 這方面 還想不通,
總之 就是改掉 DEC 不讓它有自減的指令,就能達成 我們不減飛鏢數的 目的了


# #最後 看來一切都是要 先 熟讀 6502汇编大奥秘, 否則就不知道 那些英文指令的作用

=================================================

說回 6502汇编大奥秘CHM檔,偶也開到了, 方法如下 :

一 : 檔案名稱 及 所在的路徑 要更改成不能帶有中文字,
二 : 跟著 右按 選 以簡體模式開啟
      可能我的電腦繁體字版, 此CHM檔 是以簡體字去寫, 所以就需這步驟

http://www.emu618.org/data/attachment/album/201407/24/004759qu5k0jkkhuqi54mh.jpg

http://www.emu618.org/data/attachment/album/201407/24/004753zt6ptw6ul4pb6la5.jpg


# # 這CHM檔 可說是一本教科書, 從現在開始 才是真正 考驗一個初學者了
       如果沒有 耐性 及 恆心, 或者沒有前人 的指導, 相信都很難學會呢

fanco238 发表于 2014-7-24 15:34:22

疾风之狼 发表于 2014-7-23 19:44
是地址,0x13是该地址的数值

DEC是自减指令,DEC $addr,X指令是以寄存器X的值作为偏移量,把$ ...

今天又領悟到多一件事 {:4_98:}

於1樓始初的鏈結之圖6 下方一段文字 中間寫的 起初看不明白
現在又想通明了少少
---------------------------------------------------------------------------------------------

中間寫著 :
舉個例子 假設 X寄存器 數值是6... .... ,1234+(X=6)=123A
起初真不明, 還以為大大 是 一時手誤 打錯字嗎 ? 1234+6不是 等於 1240 嗎 ?
或者 那個+ 不是 加的意思, 只是 單純一個符號嗎 ?

原來又是 16進制 的因由

在 16進制中 16個碼 是 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
即是說 9 之後 不是 10, 是 A

所以 1234+6 不是=1240
個位數原在 十進制 進位變成 10 , 但在 16進制 不超過16是不用進前一個位
所以 1234+6個位 4+6 不是等於10,只是 等於 A,就是 123A

==========================================

其實我也知道 管理員大大每天也很忙碌, 其實不用回帖給我了
除非 以上 是我 理解錯誤, 才請作出修正, 也在此再次感謝

其實研究如何修改遊戲, 真的是非常困難, 且非常耗時
我是現在暑假才比較空閒, 就看看我 這今年夏天 能領悟多少吧{:4_108:}

银河漫步 发表于 2014-7-24 19:04:00

搜索->修改

说白了
修改游戏就是这么的简单

fanco238 发表于 2014-8-31 20:58:20

本帖最后由 fanco238 于 2015-1-31 17:13 编辑

疾风之狼 发表于 2014-7-23 19:44
是地址,0x13是该地址的数值

DEC是自减指令,DEC $addr,X指令是以寄存器X的值作为偏移量,把$ ...

終於成功修改了 赤影戰士 受攻擊不減血
http://www.emu618.org/data/attachment/album/201408/31/205342xszmd9a5aspa6sdi.png
http://www.emu618.org/data/attachment/album/201408/31/205346s74yj7jj7m4g372c.jpg

今天是暑假最後一天了, 整個暑假結果也領悟不到什麼...看來是資質有限了
我曾試把此方法 套入其他遊戲去修改
但可能我心中想改的遊戲 不是受攻擊不減血的類型遊戲, 是受攻擊就馬上死去的類型
所以都不成功呢
最後雖學習失敗, 但也非常感謝疾風之狼大大的教導{:4_118:}
页: [1]
查看完整版本: 請教自行修改遊戲檔一些疑問