segasmp: partially deblob sys_init.o
This commit is contained in:
parent
6973e0413c
commit
c0e46834c3
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,5 +1,6 @@
|
||||
*.o
|
||||
!/segasmp/lib/*
|
||||
segasmp/lib/sys_init.o
|
||||
*.iso
|
||||
*.elf
|
||||
*.bin
|
||||
|
Binary file not shown.
110
segasmp/lib/sys_init.s
Normal file
110
segasmp/lib/sys_init.s
Normal file
@ -0,0 +1,110 @@
|
||||
/*
|
||||
This is a partial decompilation of sys_init.o from SBL6.
|
||||
|
||||
This appears to have two independent purposes:
|
||||
|
||||
- *((uint32_t*)(0x0)) = *((uint32_t*)(0x060002dc)) (not sure why that's useful)
|
||||
- copy 88 bytes starting at PATCHPG and ending at ENDOFPG to *(0x06000260)
|
||||
|
||||
Execution continues at the code/section that immediately
|
||||
follows this one. This is by convention whatever is in
|
||||
`smpsys.c`.
|
||||
|
||||
When assembled, this is byte-identical to sys_init.o from
|
||||
SBL6.
|
||||
*/
|
||||
|
||||
.section .text.init
|
||||
|
||||
START:
|
||||
mov.l A_INSTAL,r7 /* 0x06000260 */
|
||||
mov.l A_SFTRES,r5 /* 0x060002dc */
|
||||
mov.l @r7,r7
|
||||
mov.l @r5,r3
|
||||
mova PATSFTRS,r0 /* 0x00000000 */
|
||||
mov.l r3,@r0
|
||||
|
||||
/* "INSTALL" is roughly an inlined 'memcpy', which copies PATCHPG to A_INSTAL */
|
||||
INSTALL:
|
||||
mova PATCHPG,r0
|
||||
mov r7,r1
|
||||
mov #22,r2 /* PATCHPG is 88 bytes long, and is copied 4 bytes at a time */
|
||||
|
||||
INSTAL1:
|
||||
mov.l @r0+,r4
|
||||
dt r2
|
||||
mov.l r4,@r1
|
||||
bf.s INSTAL1
|
||||
add #4,r1
|
||||
|
||||
SETHOOK:
|
||||
bra ENDOFPG
|
||||
mov.l r7,@r5
|
||||
|
||||
A_SFTRES:
|
||||
.word 0x0600
|
||||
.word 0x02dc
|
||||
|
||||
A_INSTAL:
|
||||
.word 0x0600
|
||||
.word 0x0260
|
||||
|
||||
PATCHPG:
|
||||
mov.w A_CCR,r3 /* 0xfe92 */
|
||||
mov #0,r0
|
||||
mov.b r0,@r3
|
||||
mov #16,r0
|
||||
mov.b r0,@r3
|
||||
mov.l @r15+,r0
|
||||
mov.l A_DEFSTK,r15 /* 0x06002000 */
|
||||
mov.l r0,@-r15
|
||||
mov.l PATSFTRS,r1 /* 0x00000000 */
|
||||
mov #1,r0
|
||||
mov #3,r4
|
||||
sts.l pr,@-r15
|
||||
jsr @r1
|
||||
mov.b r0,@r3
|
||||
|
||||
_CDPAT_InitSctLen:
|
||||
mov.l CDB_HIRQ,r5 /* 0x25890008 */
|
||||
mov #-2,r3
|
||||
mov.w r3,@r5
|
||||
mov.w CONST_6000,r0 /* 0x6000 */
|
||||
mov.w r0,@(16,r5)
|
||||
mov #0,r0
|
||||
mov.w r0,@(20,r5)
|
||||
mov.w r0,@(24,r5)
|
||||
mov.w r0,@(28,r5)
|
||||
mov.w CONST_0900,r7 /* 0x0900 */
|
||||
LOOP:
|
||||
mov.w @r5,r0
|
||||
tst #1,r0
|
||||
bf BREAK_LOOP
|
||||
dt r7
|
||||
bf LOOP
|
||||
BREAK_LOOP:
|
||||
mov.w @(16,r5),r0
|
||||
mov.w @(20,r5),r0
|
||||
lds.l @r15+,pr
|
||||
mov.w @(24,r5),r0
|
||||
rts
|
||||
mov.w @(28,r5),r0
|
||||
|
||||
CONST_6000:
|
||||
.word 0x6000
|
||||
CONST_0900:
|
||||
.word 0x0900
|
||||
A_CCR:
|
||||
.word 0xfe92
|
||||
CDB_HIRQ:
|
||||
.word 0x2589
|
||||
.word 0x0008
|
||||
|
||||
A_DEFSTK:
|
||||
.word 0x0600
|
||||
.word 0x2000
|
||||
|
||||
PATSFTRS:
|
||||
.word 0x0000
|
||||
.word 0x0000
|
||||
ENDOFPG:
|
Loading…
x
Reference in New Issue
Block a user