- 帖子
- 85
- 精华
- 0
- 积分
- 278
- 威望
- 0
- 金钱
- 205
- 阅读权限
- 70
- 注册时间
- 2011-3-5
|
【原创】REVIVE苏生压缩反编译源码(dc)
- ROM:8C03021C ; sub_8C010228+150p ...
- ROM:8C03021C mov.l r14, @-r15
- ROM:8C03021E mov.l r13, @-r15
- ROM:8C030220 mov.l r12, @-r15
- ROM:8C030222 mov.l r11, @-r15
- ROM:8C030224 mov.l r10, @-r15
- ROM:8C030226 mov.l r9, @-r15
- ROM:8C030228 mov.l r8, @-r15
- ROM:8C03022A add #-4, r15
- ROM:8C03022C mov.w @(h'DE,pc), r8 ; [8C03030E] = h'80
- ROM:8C03022E mov r4, r11
- ROM:8C030230 mov #4, r10
- ROM:8C030232 mov.l r5, @r15
- ROM:8C030234 mov #2, r9
- ROM:8C030236 add r6, r11 ; r11为压缩数据大小
- ROM:8C030238 bra loc_8C0302F2
- ROM:8C03023A mov #8, r14
- ROM:8C03023C ; ---------------------------------------------------------------------------
- ROM:8C03023C
- ROM:8C03023C loc_8C03023C: ; CODE XREF: sub_8C03021C+D8j
- ROM:8C03023C mov.b @r4+, r12 ; 压缩数据读一个字节
- ROM:8C03023E extu.b r12, r12
- ROM:8C030240 bra loc_8C0302EA
- ROM:8C030242 mov #0, r13
- ROM:8C030244 ; ---------------------------------------------------------------------------
- ROM:8C030244
- ROM:8C030244 loc_8C030244: ; CODE XREF: sub_8C03021C+D4j
- ROM:8C030244 mov r12, r3
- ROM:8C030246 mov.b @r4+, r7
- ROM:8C030248 tst r8, r3 ; 判断r12的第0x7位是否为0,为0直接输出r7到解压地址
- ROM:8C03024A bt/s loc_8C0302E2
- ROM:8C03024C extu.b r7, r7
- ROM:8C03024E mov r7, r6
- ROM:8C030250 mov.w @(h'BC,pc), r3 ; [8C030310] = h'FFFFFF00
- ROM:8C030252 mov.b @r4+, r2 ; 从压缩地址在读一个字节r2
- ROM:8C030254 shll2 r6
- ROM:8C030256 shll2 r6
- ROM:8C030258 mov.w @(h'B6,pc), r1 ; [8C030312] = h'FFFFF000
- ROM:8C03025A extu.b r2, r2 ; r6最终==字节r7的高4位左移4位+读入的第2个字节r2
- ROM:8C03025C and r3, r6 ; r6=(r7<<4)&0xff00
- ROM:8C03025E or r2, r6 ; r6=r6|第2个字节
- ROM:8C030260 or r1, r6 ; 最后算出回退量r6=r6|f000
- ROM:8C030262 add r5, r6 ; 解压地址回退r6个字节
- ROM:8C030264 mov.b @r6+, r0
- ROM:8C030266 mov #1, r2 ; 先从回退后的地址读一个字节写入到解压地址,循环2次
- ROM:8C030268 tst r7, r2 ; 接下来的循环为读入的第1个字节的r7的低4位,为循环写入字节的次数
- ROM:8C03026A mov.b r0, @r5
- ROM:8C03026C add #1, r5
- ROM:8C03026E mov.b @r6+, r0 ; r7最低位为1.,写入一次
- ROM:8C030270 mov.b r0, @r5
- ROM:8C030272 bt/s loc_8C03027C
- ROM:8C030274 add #1, r5
- ROM:8C030276 mov.b @r6+, r3
- ROM:8C030278 mov.b r3, @r5
- ROM:8C03027A add #1, r5
- ROM:8C03027C
- ROM:8C03027C loc_8C03027C: ; CODE XREF: sub_8C03021C+56j
- ROM:8C03027C mov r7, r2
- ROM:8C03027E tst r9, r2
- ROM:8C030280 bt/s loc_8C030290
- ROM:8C030282 mov r7, r2 ; r7第0x1位为1.,写入2次
- ROM:8C030284 mov.b @r6+, r3
- ROM:8C030286 mov.b r3, @r5
- ROM:8C030288 add #1, r5
- ROM:8C03028A mov.b @r6+, r3
- ROM:8C03028C mov.b r3, @r5
- ROM:8C03028E add #1, r5
- ROM:8C030290
- ROM:8C030290 loc_8C030290: ; CODE XREF: sub_8C03021C+64j
- ROM:8C030290 tst r10, r2
- ROM:8C030292 bt loc_8C0302AC
- ROM:8C030294 mov.b @r6+, r3 ; r7第0x2位为1.,写入4次
- ROM:8C030296 mov.b r3, @r5
- ROM:8C030298 add #1, r5
- ROM:8C03029A mov.b @r6+, r3
- ROM:8C03029C mov.b r3, @r5
- ROM:8C03029E add #1, r5
- ROM:8C0302A0 mov.b @r6+, r3
- ROM:8C0302A2 mov.b r3, @r5
- ROM:8C0302A4 add #1, r5
- ROM:8C0302A6 mov.b @r6+, r3
- ROM:8C0302A8 mov.b r3, @r5
- ROM:8C0302AA add #1, r5
- ROM:8C0302AC
- ROM:8C0302AC loc_8C0302AC: ; CODE XREF: sub_8C03021C+76j
- ROM:8C0302AC tst r14, r7
- ROM:8C0302AE bt loc_8C0302E6
- ROM:8C0302B0 mov.b @r6+, r2 ; r7第0x3位为.,写入8次
- ROM:8C0302B2 mov.b r2, @r5
- ROM:8C0302B4 add #1, r5
- ROM:8C0302B6 mov.b @r6+, r2
- ROM:8C0302B8 mov.b r2, @r5
- ROM:8C0302BA add #1, r5
- ROM:8C0302BC mov.b @r6+, r2
- ROM:8C0302BE mov.b r2, @r5
- ROM:8C0302C0 add #1, r5
- ROM:8C0302C2 mov.b @r6+, r2
- ROM:8C0302C4 mov.b r2, @r5
- ROM:8C0302C6 add #1, r5
- ROM:8C0302C8 mov.b @r6+, r2
- ROM:8C0302CA mov.b r2, @r5
- ROM:8C0302CC add #1, r5
- ROM:8C0302CE mov.b @r6+, r2
- ROM:8C0302D0 mov.b r2, @r5
- ROM:8C0302D2 add #1, r5
- ROM:8C0302D4 mov.b @r6+, r2
- ROM:8C0302D6 mov.b r2, @r5
- ROM:8C0302D8 add #1, r5
- ROM:8C0302DA mov.b @r6, r2
- ROM:8C0302DC mov.b r2, @r5
- ROM:8C0302DE bra loc_8C0302E6
- ROM:8C0302E0 add #1, r5
- ROM:8C0302E2 ; ---------------------------------------------------------------------------
- ROM:8C0302E2
- ROM:8C0302E2 loc_8C0302E2: ; CODE XREF: sub_8C03021C+2Ej
- ROM:8C0302E2 mov.b r7, @r5
- ROM:8C0302E4 add #1, r5
- ROM:8C0302E6
- ROM:8C0302E6 loc_8C0302E6: ; CODE XREF: sub_8C03021C+92j
- ROM:8C0302E6 ; sub_8C03021C+C2j
- ROM:8C0302E6 add #1, r13
- ROM:8C0302E8 shll r12
- ROM:8C0302EA
- ROM:8C0302EA loc_8C0302EA: ; CODE XREF: sub_8C03021C+24j
- ROM:8C0302EA cmp/hs r14, r13
- ROM:8C0302EC bt loc_8C0302F2
- ROM:8C0302EE cmp/hs r11, r4
- ROM:8C0302F0 bf loc_8C030244
- ROM:8C0302F2
- ROM:8C0302F2 loc_8C0302F2: ; CODE XREF: sub_8C03021C+1Cj
- ROM:8C0302F2 ; sub_8C03021C+D0j
- ROM:8C0302F2 cmp/hs r11, r4
- ROM:8C0302F4 bf loc_8C03023C
- ROM:8C0302F6 mov.l @r15, r3
- ROM:8C0302F8 mov r5, r0
- ROM:8C0302FA sub r3, r0
- ROM:8C0302FC add #4, r15
- ROM:8C0302FE mov.l @r15+, r8
- ROM:8C030300 mov.l @r15+, r9
- ROM:8C030302 mov.l @r15+, r10
- ROM:8C030304 mov.l @r15+, r11
- ROM:8C030306 mov.l @r15+, r12
- ROM:8C030308 mov.l @r15+, r13
- ROM:8C03030A rts
- ROM:8C03030C mov.l @r15+, r14
复制代码 |
|