|
本帖最后由 jiangzhengwenjz 于 2015-3-16 07:32 编辑
转自:http://wahackforo.com/t-24962/fr-asm-vs-bars-antes-batalla
Credits: Jambo51(thumb源码),Zinc,Sayer(颜色控制)之前看到这篇还蛮有意思的,测试脚本之余花了点时间测试了下这个,效果还不错。即便是之前没接触过改版的人相信也能做到。转载请转西班牙原帖,不要转这篇,可能会有错误。
工具:
XSE,APE,THUMB编译器(可选),16进制编辑器,FSF(或者目测也成),AM,VBA
先要编译并写入这三段ASM码:- .text
- .align 2
- .thumb
- .thumb_func
- .global mugshothackone
- main:
- cmp r0, #0x87
- beq there
- cmp r0, #0x88
- beq there
- ldr r4, ramoffset
- ldrh r4, [r4, #0x0]
- lsl r5, r4, #0x2
- add r5, r4, r5
- lsl r4, r5, #0x3
- ldr r5, place
- ldr r5, [r5, #0x0]
- add r0, r4, r5
- ldrb r0, [r0, #0x3]
- there: add r4, r0, #0x0
- add r5, r1, #0x0
- add r6, r2, #0x0
- mov r9, r3
- ldr r7, [sp, #0x34]
- ldr r0, return
- bx r0
- .align
- place: .word 0x08044028
- ramoffset: .word 0x020386AE
- return: .word 0x0808386D
复制代码- .text
- .align 2
- .thumb
- .thumb_func
- .global mugshothacktwo
- main:
- ldrb r5, [r4, #0x3]
- lsl r5, r5, #0x18
- lsr r5, r5, #0x18
- cmp r5, #0x0
- beq normalchecks
- mov r1, #0x5A
- ldr r5, returnone
- bx r5
- normalchecks: cmp r1, #0x57
- bne later
- add r1, r2, #0x0
- mov r0, #0xCD
- ldr r5, returntwo
- bx r5
- later: ldr r5, returnone
- bx r5
- .align
- returntwo: .word 0x0807FFA5
- returnone: .word 0x08080009
复制代码- .text
- .align 2
- .thumb
- .thumb_func
- .global mugshotpallethack
- main:
- ldr r1, ramoffset
- ldrh r1, [r1, #0x0]
- lsl r0, r1, #0x2
- add r0, r0, r1
- lsl r1, r0, #0x3
- ldr r0, trainertable
- ldr r0, [r0, #0x0]
- add r1, r0, r1
- ldrb r1, [r1, #0x1]
- cmp r1, #0x5A
- beq oldway
- cmp r1, #0x57
- beq oldway
- ldr r1, ramoffset
- ldrb r1, [r1, #0x3]
- sub r1, #0x1
- lsl r1, r1, #0x2
- ldr r0, table2
- add r1, r1, r0
- ldr r0, [r1, #0x0]
- b back
- oldway: ldr r1, table
- mov r2, r8
- mov r3, #0x26
- ldrh r0, [r2, r3]
- lsl r0, r0, #0x2
- add r0, r0, r1
- ldr r0, [r0, #0x0]
- back: ldr r1, return
- bx r1
- .align
- ramoffset: .word 0x020386AE
- trainertable: .word 0x08044028
- table: .word 0x083FA740
- table2: .word 0x08FFFFFF
- return: .word 0x080D28D5
复制代码 或者用编译好的直接复制到ROM中去:(废话)- 87 28 0A D0 88 28 08 D0 08 4C 24 88 A5 00 65 19 EC 00 05 4D 2D 68 60 19 C0 78 04 1C 0D 1C 16 1C 99 46 0D 9F 02 48 00 47 28 40 04 08 AE 86 03 02 6D 38 08 08
复制代码- E5 78 2D 06 2D 0E 00 2D 02 D0 5A 21 05 4D 28 47 57 29 03 D1 11 1C CD 20 01 4D 28 47 01 4D 28 47 A5 FF 07 08 09 00 08 08
复制代码- 0E 49 09 88 88 00 40 18 C1 00 0D 48 00 68 41 18 49 78 5A 29 09 D0 57 29 07 D0 08 49 C9 78 01 39 89 00 09 48 09 18 08 68 06 E0 06 49 42 46 26 23 D0 5A 80 00 40 18 00 68 04 49 08 47 AE 86 03 02 28 40 04 08 40 A7 3F 08 FF FF FF 08 D5 28 0D 08
复制代码 记下三段代码的偏移量。
然后转到这三个地址分别十六进制修改:
1、0x83862
01 4C 20 47 00 00 XX XX XX 08,其中XX XX XX是你的第一段ASM代码的地址+1再反写,比如750000变成01 00 75。
2、0x7FF90
00 4A 10 47 XX XX XX 08,其中XX XX XX是你的第二段ASM代码的地址+1再反写。
3、0xD28C6
01 49 08 47 00 00 XX XX XX 08,其中XX XX XX是你的第三段ASM代码的地址+1再反写。
然后打开AM,为了省事随便找个训练师读取其脚本
大家应该很清楚trainerbattle的第三个参数应该是reserved,我们把它改成0x200.
然后16进制编辑器转到0x801F5,把那里的88改成78.
测试。可以看到VS Bar了,但是颜色奇怪。
为了控制颜色,我们先需要导入几个做好的色板(下载的可以用,当然最好自己做)
这是我之前随便弄的
链接: http://pan.baidu.com/s/1jGIcSAE 密码: pfwl
貌似可以加到7个(西班牙文看不懂),我这里测试了3个没问题。
当然记下三个色板的地址。
然后把这三个地址都反写,分别添上一个08后排列好写入ROM,记下地址
把该地址反写,替换掉第三段ASM代码中的FF FF FF。
然后依然XSE修改reserved参数,0x100,0x200,0x300分别对应了这三个色板。
成品:(第三张是新增训练师ID)
注:关于指针08还是09的问题我不解释了。
若是对其再进行小修改,增加2新的数据表格,可以用mugshot
若是不放弃放大的效果
修改背景Tilemap的部分待补(好吧可能最近没什么空补了
把背景弄掉的话
|
评分
-
查看全部评分
|