最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

曉月圓舞曲的flag的額外用途

2023-07-20 13:27 作者:一個(gè)_B站_用戶  | 我要投稿

本文所述的一些改動用dsvania編輯器可以方便的完成,所以基本上改動是在這個(gè)編輯器里進(jìn)行的,你也可以對照rom map用16進(jìn)制編輯器修改,不過這樣很麻煩。

flag就是一些標(biāo)記,以美版曉月為例,這是他們的地址和用途。(從dsvania編輯器文檔翻譯而來)

0200033C - Event flags.事件的標(biāo)記,記錄發(fā)生過的事情,已發(fā)生過就不再發(fā)生。

02000344 - Bitfield of miscellaneous flags.雜項(xiàng),是特殊物體相關(guān)的,如可被攻擊破壞墻是否已經(jīng)破裂,可被道具破壞的墻是否已經(jīng)破裂,機(jī)關(guān)門,鐵球是否達(dá)到過足夠的擺幅,按鈕是否按過之類的。

02000360-02000373 - Bitfield of pickup flags.可拾取物品,記錄地圖上已經(jīng)撿過的東西,所以地圖上撿過就不會再次生成了。但如果物品的設(shè)置的var A是0,則不會設(shè)置flag。

02000378,4 - Bitfield of what warp rooms you've unlocked.記錄了你開過的傳送的點(diǎn),與查看地圖界面上是否有黃色標(biāo)記的房間無關(guān)。此外,一旦進(jìn)入任何一個(gè)傳送點(diǎn),荒城回廊的傳送點(diǎn)就會自動開啟。

0200037C,2 - Bitfield of which area names you've seen.記錄你見過的區(qū)域名,就是進(jìn)新區(qū)域會彈出的那行地名。下次進(jìn)入就不會顯示名字了。

0200037E,2 - Boss death flags. boss死亡標(biāo)記,記錄已經(jīng)打敗的boss,這樣已打敗的boss就不會再出現(xiàn)了。

? 00 0001 Graham????????????格拉罕

? 01 0002 Death????????????????死神

? 02 0004 Julius????????????????尤利烏斯

? 03 0008 (Unused)??????????未使用

? 04 0010 Headhunter??????收集者

? 05 0020 Legion????????????? ? 死人軍團(tuán)

? 06 0040 Balore????????????????巴洛爾

? 07 0080 Chaos????????????????混沌(混沌擊敗時(shí)會設(shè)置這個(gè)flag,但是讀檔后又會變回沒打過混沌的狀態(tài),這樣讀檔后就能再打混沌了。)

? 08 0100 (Unused)????????????未使用

? 09 0200 (Unused)? ? ????????未使用

? 0A 0400 Manticore????????????曼提科亞(蝎尾獅)

? 0B 0800 Creaking Skull????大骷髏

? 0C 1000 Big Golem????????????巨人

? 0D 2000 (Unused)????????????未使用,經(jīng)測試似乎是食人蟲

? 0E 4000 (Unused)? ? ????????未使用

? 0F 8000 Great Armor????????大裝甲(此怪物的flag可以自己設(shè)置,是放置怪物時(shí)的var A,dsv編輯器內(nèi)可改)

大骷髏和大裝甲的換皮怪大骸骨、終極衛(wèi)兵、影子騎士作為boss和他們的本體flag是一樣的。大骸骨是0B,大裝甲flag是自己設(shè)置。

上面就是所謂的flag了,可以看出這是用來記錄各種事項(xiàng)的。所以如果有東西共用flag就能相互影響。比如原版的按鈕和機(jī)關(guān)門,按鈕按下,改變了flag,機(jī)關(guān)門檢測到flag已經(jīng)設(shè)置為1,就打開了。而兩個(gè)物品共用flag,就會在拾取一個(gè)物品以后設(shè)置flag,之后兩個(gè)物品都不會再生成了。

而設(shè)置flag是把這位標(biāo)記從0變成1,但是具體是哪一位?這需要看地址。這里用gba模擬器VisualBoyAdvance自帶的內(nèi)存查看器看看這些值。先看記錄拾取物品的區(qū)域。

荒城回廊的短劍,flag是0x0011(四位有符號16進(jìn)制數(shù)),十進(jìn)制的17


撿起這把武器??纯磧?nèi)存的變化。從02000360開始是撿到的物品的標(biāo)記。

拾取后的狀態(tài),拾取前是第一行全為0,就不放上來了,右下角那個(gè)1代表進(jìn)入過荒城回廊

我們可以看見第三個(gè)數(shù)字變成了02,這里是小端模式,16進(jìn)制,低位地址更低。那么為什么是02?換成2進(jìn)制就明確了。00 00 02,換成二進(jìn)制看。從左到右,00 00 02四組數(shù)在不同的地址,右邊的地址更大,所以位數(shù)更高。實(shí)際上是02 00 00,而每組數(shù)都是兩位16進(jìn)制數(shù)8位2進(jìn)制數(shù),即一個(gè)地址存一個(gè)字節(jié)。

??十六進(jìn)制? ? ? ? ? 00????????????????????????????????00? ? ? ? ? ? ? ? ? ? ?????????????02???????????????????????????...

??二進(jìn)制? ? ? ?0000 0000????????????????????0000 0000????????????????????0000 0010???????????????????...

???位數(shù)? ? ??????7654 3210????????????????????7654 3210????????????????????7654 3210? ? ????????????? ?...??????

???????????????7,6,5,4 3,2,1,0? ? ???15,14,13,12,11,10,9,8?? ?23,22,21,20,19,18,17,16????????...

這就一目了然了,17對應(yīng)的位置被設(shè)置成了1.所以那里看起來就是02了。所以flag就是以文章開頭的地址為最低位的一個(gè)很長的數(shù)的每一位。但這個(gè)地址是有范圍的,所以這個(gè)數(shù)的位數(shù)是有范圍的,編輯超出位數(shù)的flag就是編輯不屬于自己類型的flag了。我們可以很容易地讓一個(gè)能自由編輯flag位置的東西設(shè)置或者檢測的flag因?yàn)樽銐虼蠖膭觿e的區(qū)。這就是重點(diǎn)了。

能自由控制設(shè)置flag的位置的,有按鈕,鐵球,可破壞墻,可拾取物品等。能修改要檢測的flag的位置的,有可被道具破壞墻,機(jī)關(guān)墻,商店物品池(僅限bossflag)等。bossflag等則是不可修改的。

以打完boss地板碎裂為例。需要boss和可被機(jī)關(guān)破壞墻。拿食人蟲當(dāng)被打的對象,因?yàn)樗恍枰驹诘匕迳?。效果如下?/p>

打完就掉下去

bossflag的地址是0200037E。地板是雜項(xiàng),起始地址是02000344。兩者起始地址不同,所以flag值不同。食人蟲varA設(shè)為1,讓他作為boss登場。地板形狀要合適,varA取000B。食人蟲bossflag是0D,即?20 00,小端模式下是00 20,是擊敗后在第13位上設(shè)置flag。

問題在于,地板檢測的的flag,即地板的var B要如何設(shè)置?

每個(gè)地址下有一個(gè)字節(jié),8位二進(jìn)制數(shù),就是8個(gè)flag(0200037E-02000344)*8=1D0,這就是bossflag的地址和miscellaneous flags的地址之間的這些數(shù)據(jù)的位數(shù)對應(yīng)的flag的偏移值,bossflag的第0位對于miscellaneous flags來說就是1D0。而bossflag值是相對bossflag的第0位,格拉罕的死亡標(biāo)記在miscellaneous flags的值中是0x01D0,死神是0x01D1,而食人蟲是0x01DD。所以地板值varB設(shè)為1DD,就能檢測到食人蟲的bossflag,在食人蟲被擊敗時(shí)自動碎掉了。

我比較懶所以不寫太多,微機(jī)原理也學(xué)的不算好,有些概念講的不清楚,但也不再多說了,原理大致如此。flag是四位有符號16進(jìn)制數(shù),所以負(fù)數(shù)flag能影響到地址在前面的flag。計(jì)算方法也給出來了,剩下的自行摸索吧。日版和美版可能存在地址上的差異,沒有查看過日版(或者漢化rom),所以無法下定論。

曉月圓舞曲的flag的額外用途的評論 (共 條)

分享到微博請遵守國家法律
阿图什市| 修水县| 马鞍山市| 澄迈县| 建水县| 陕西省| 榕江县| 娄底市| 栖霞市| 丹阳市| 桃园市| 宜良县| 唐河县| 和龙市| 渑池县| 达拉特旗| 白银市| 城固县| 衡阳县| 涟水县| 文水县| 南部县| 兴城市| 仁寿县| 永寿县| 宁阳县| 保亭| 周宁县| 丁青县| 营口市| 灵川县| 景宁| 桦川县| 清新县| 峨山| 淮南市| 永兴县| 旬邑县| 溆浦县| 太和县| 聊城市|