Arcaea自制研究筆記
此文用來(lái)給我這兩天遇到的各種bug寫(xiě)個(gè)記錄,免得自己將來(lái)再遇到相同問(wèn)題的時(shí)候忘了還有這個(gè)文檔了
另外本貼僅供參考,不提供任何資源的下載,也不能給出具體的函數(shù)地址,僅記錄邏輯思路與我窮舉式的debug過(guò)程(……)。網(wǎng)上能找到的相關(guān)教程實(shí)在不多,有些問(wèn)題的解決方案如果能幫到其他苦于研究Arcaea程序的人那就再好不過(guò),雖然記錄的大多都是些很愚蠢的錯(cuò)誤……
V1.0
加入destr0yer:
1.????? IDA打開(kāi)Arc-mobile文件,搜索_exit,查看其xref,NOP掉第二個(gè)函數(shù)所有的調(diào)用(一共五個(gè),B.NE與CBNZ調(diào)用都NOP掉)
2.? ? ? 在songlist中加入所需語(yǔ)句,操作成功
?
V1.1
加入apollo和Omega4:
1.????? 光速閃退……
原譜師提供的songlist黏貼,發(fā)現(xiàn)閃退……
若0,1譜面文件不滿足past、present制譜規(guī)則時(shí)不影響載入,可以正常使用……
songlist中的版本號(hào)可以任意修改,不是造成閃退的原因……
將destr0yer的songlist部分黏貼過(guò)去并只改id和idx,實(shí)測(cè)有效可以正常載入……
更改songlist曲師曲名與難度信息并不影響,目測(cè)是之前復(fù)制的原譜師所給songlist有沖突
2.????? 驗(yàn)證idx號(hào)并無(wú)上限問(wèn)題,且新加曲目無(wú)需標(biāo)注idx號(hào)
3.????? 驗(yàn)證設(shè)定在初始包里的曲子使用來(lái)自其他曲包的背景圖不會(huì)導(dǎo)致閃退
4.????? 驗(yàn)證設(shè)定難度13與難度0不會(huì)導(dǎo)致閃退
?
V1.2
加入Wolve Standing Toward Enemies與Cthugha:
1.????? 驗(yàn)證缺失0,1難度的aff譜面文件可正常游玩,只會(huì)在進(jìn)入相應(yīng)缺失譜面時(shí)閃退
2.????? 刪除其余所有song文件夾下內(nèi)容,并同步更改songlist與unlocklist,正常進(jìn)入主菜單,但點(diǎn)開(kāi)始游戲后閃退,原因待查明
3.? ? ? 可隨意更改char文件夾內(nèi)搭檔圖片,但光貓?zhí)鎿Q初始光存在錯(cuò)位現(xiàn)象,PS可解決。在程序里找到了搭檔立繪坐標(biāo)調(diào)整相關(guān)函數(shù),但修改方式有待研究
4.? ? ? 驗(yàn)證可以聯(lián)網(wǎng)打開(kāi)而無(wú)其他影響,但不要登錄賬號(hào)
?
V1.3
加入The Angel’s Message,Collapse:
1.????? 可在img/bg背景文件夾下加入自定義背景圖并調(diào)用
2.????? Angel’s Message的songlist中有beyond相關(guān)注釋,不知道作用但能正常載入
?
V1.4
加入80%速度的Testify和Pragmatism-RESURRECTION-,給The Angel’s Message加入6k:
1.? ? ? 通過(guò)程序批量修改所有時(shí)刻值,aff一鍵減速程序有待進(jìn)行bug驗(yàn)證
2.? ? ? 經(jīng)程序減速修改后,在arcade中正常運(yùn)作的譜面放進(jìn)arcaea里閃退……
嘗試背景圖不調(diào)取曲子專用背景,譜面閃退……
嘗試去除songlist所有byd相關(guān)語(yǔ)句,譜面閃退……
嘗試復(fù)制原版譜面文件,譜面正常進(jìn)入???
嘗試刪除所有timinggroup部分,譜面正常進(jìn)入……
?
目測(cè)問(wèn)題:使用程序批量更改的timinggroup語(yǔ)句有錯(cuò)誤,C++寫(xiě)入字符格式的問(wèn)題?
?
嘗試使用未變更時(shí)刻值的原aff文件timinggroup語(yǔ)句,譜面正常打開(kāi)……
嘗試復(fù)制原版timinggroup語(yǔ)句后手動(dòng)更改時(shí)刻值,譜面正常打開(kāi)???
?
嘗試批量更改后統(tǒng)一刪掉timinggroup語(yǔ)句中前面的兩個(gè)進(jìn)位空格,譜面正常打開(kāi)
結(jié)論:arcade都能認(rèn)出來(lái)ascii=32的空格,放616編譯器就不認(rèn)空格只認(rèn)null了
解決辦法:輸出txt的時(shí)候把語(yǔ)句前面?zhèn)z空格給刪了……
4.????? 發(fā)現(xiàn)諸多譜面閃退原因:
設(shè)置兩個(gè)同時(shí)判定的glass_wave特殊天鍵時(shí)發(fā)生閃退(后面發(fā)現(xiàn)一個(gè)也閃退,可能需要final曲包支持?)
加入scenecontrol(150000,trackhide);與scenecontrol(166000,trackshow);后閃退(后發(fā)現(xiàn)不可在相同時(shí)間段出現(xiàn)兩條trackhide語(yǔ)句,原因待查明)
目測(cè)4.0版本可能不支持trackhide與trackdisplay,怎么寫(xiě)都不變黑……
嘗試給譜子加入6k,記錄6k時(shí)note左極限-0.63,右極限1.63,上極限1.61
有時(shí)arcade保存的aff放進(jìn)去閃退,但刪掉timinggroup中語(yǔ)句的數(shù)字重寫(xiě)一遍就行了???原因未知(字符編碼不同?)
V1.5
關(guān)于scenecontrol部分判斷失誤,4.0改動(dòng)了條件機(jī)制,原繞過(guò)MD5碼驗(yàn)證機(jī)制似乎不再可行(且驗(yàn)證MD5碼的函數(shù)沒(méi)有xref,迷惑?),或者可能需要對(duì)流程進(jìn)行更改。
此外,scenecontrol控制語(yǔ)句分開(kāi)識(shí)別,以下語(yǔ)句被分在一個(gè)讀取函數(shù)中:
‘trackdisplay’:返回0
‘redline’:返回1
‘a(chǎn)rcahvdistort’:返回2
‘a(chǎn)rcahvdebris’:返回3
‘hidegroup’:返回4
‘enwidencamera’:返回5
‘enwidenlanes’:返回6
無(wú)匹配結(jié)果:返回7
查看該函數(shù)的xref共有四處調(diào)取,其中三處分別判定了函數(shù)返回值是否為4、5、6,另外一處為BL強(qiáng)制跳轉(zhuǎn)且無(wú)后續(xù)判斷,尚不明確意圖,有待研究……
另外,發(fā)現(xiàn)enwidencamera與enwidenlanes語(yǔ)句無(wú)需對(duì)相關(guān)部分進(jìn)行任何更改即可從譜面中正常調(diào)取,即對(duì)應(yīng)上述函數(shù)的四處調(diào)取??赡?16將sc語(yǔ)句分類成了不同的使用條件,亦有可能對(duì)某些sc語(yǔ)句單獨(dú)編寫(xiě)了條件函數(shù)。
包含trackhide,trackshow等其他效果在內(nèi)的scenecontrol語(yǔ)句的識(shí)別在另一函數(shù)中,此函數(shù)待研究……
V1.6
加入testify和白魔王byd的62.5%減速版:
1.? ? ? 經(jīng)驗(yàn)證程序輸出的減速后aff文件可直接導(dǎo)入并讀取,不會(huì)閃退!
2.????? 可直接在對(duì)應(yīng)難度里加"audioOverride": true語(yǔ)句,并在曲子文件夾中加入對(duì)應(yīng)難度的1.ogg文件,這也會(huì)導(dǎo)致預(yù)覽音頻被同步替換。
3.????? 1_Preview.ogg沒(méi)用,依舊按完整音頻的時(shí)間軸節(jié)選片段預(yù)覽,白魔王byd音頻獨(dú)立預(yù)覽的原理未知。
4.????? 可在對(duì)應(yīng)難度里加入"title_localized"語(yǔ)句改變不同難度的顯示名稱。
V1.7(本專欄的第三次修改,即最后一更)
更換collapse譜面,嘗試加入自己制作封面與描述的曲包并去除鎖標(biāo):
1.????? 可更改packlist來(lái)加入自定義曲包,但會(huì)被上鎖(僅影響圖標(biāo)不影響使用)
2.????? 搜索PackSelectCell字串,找到并進(jìn)入其xref(兩處取其一),函數(shù)反編譯后發(fā)現(xiàn)關(guān)鍵字串“l(fā)ock_icon”,其所在語(yǔ)句下方有條件判斷(v52 & 1) != 0,對(duì)其中的變量v52溯源找到檢測(cè)曲包ID的函數(shù),其中有對(duì)single、base等字符串的判斷比較。觀察函數(shù)后可以發(fā)現(xiàn)未上鎖曲包返回值為1,故將其返回值固定設(shè)為1即可去除所有曲包的鎖標(biāo)圖案。
3.? ? ? ?曲包圖片位于songs/pack文件夾中,自制曲包應(yīng)該需要加入諸如《"img": "select_judgement.png",》這樣的語(yǔ)句行來(lái)調(diào)取圖片。