diff options
author | Marcus Huderle <huderlem@gmail.com> | 2018-10-13 11:21:14 -0500 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2018-10-13 11:21:14 -0500 |
commit | 21417a00146a7b88afdf8406186580d96e3024b9 (patch) | |
tree | bd18c9d8784b6c27338c0786de6442db80bfdb2f | |
parent | 75c0dbc467b916cbc6ac9be20ca9727abb371e39 (diff) |
Add unknown lib
-rwxr-xr-x | asm/rom.s | 2 | ||||
-rwxr-xr-x | asm/unknown_lib.s | 231 | ||||
-rwxr-xr-x | ld_script.ld | 1 |
3 files changed, 233 insertions, 1 deletions
@@ -1,3 +1,3 @@ .text -.incbin "baserom.gba", 0x554F0, 0x666AE0 +.incbin "baserom.gba", 0x55694, 0x66693C diff --git a/asm/unknown_lib.s b/asm/unknown_lib.s new file mode 100755 index 0000000..1919c77 --- /dev/null +++ b/asm/unknown_lib.s @@ -0,0 +1,231 @@ + .include "asm/macros.inc" + .include "constants/gba_constants.inc" + + @ extern + .set _call_via_r3, 0x080556A0 + + .syntax unified + + .text + + thumb_func_start sub_554F0 +sub_554F0: @ 0x080554F0 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r3, r2, #0 + ldr r2, _08055528 @ =0x04000204 + ldrh r0, [r2] + ldr r1, _0805552C @ =0x0000FFFC + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strh r0, [r2] + subs r3, #1 + movs r0, #1 + rsbs r0, r0, #0 + cmp r3, r0 + beq _08055520 + adds r1, r0, #0 +_08055512: + ldrb r0, [r5] + strb r0, [r4] + adds r5, #1 + adds r4, #1 + subs r3, #1 + cmp r3, r1 + bne _08055512 +_08055520: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08055528: .4byte 0x04000204 +_0805552C: .4byte 0x0000FFFC + + thumb_func_start sub_55530 +sub_55530: @ 0x08055530 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r3, r2, #0 + ldr r2, _08055568 @ =0x04000204 + ldrh r0, [r2] + ldr r1, _0805556C @ =0x0000FFFC + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strh r0, [r2] + subs r3, #1 + movs r0, #1 + rsbs r0, r0, #0 + cmp r3, r0 + beq _08055560 + adds r1, r0, #0 +_08055552: + ldrb r0, [r5] + strb r0, [r4] + adds r5, #1 + adds r4, #1 + subs r3, #1 + cmp r3, r1 + bne _08055552 +_08055560: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08055568: .4byte 0x04000204 +_0805556C: .4byte 0x0000FFFC + + thumb_func_start sub_55570 +sub_55570: @ 0x08055570 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r3, r2, #0 + ldr r2, _080555A4 @ =0x04000204 + ldrh r0, [r2] + ldr r1, _080555A8 @ =0x0000FFFC + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strh r0, [r2] + subs r3, #1 + movs r0, #1 + rsbs r0, r0, #0 + cmp r3, r0 + beq _080555B2 + adds r2, r0, #0 +_08055592: + ldrb r1, [r4] + ldrb r0, [r5] + adds r5, #1 + adds r4, #1 + cmp r1, r0 + beq _080555AC + subs r0, r4, #1 + b _080555B4 + .align 2, 0 +_080555A4: .4byte 0x04000204 +_080555A8: .4byte 0x0000FFFC +_080555AC: + subs r3, #1 + cmp r3, r2 + bne _08055592 +_080555B2: + movs r0, #0 +_080555B4: + pop {r4, r5} + pop {r1} + bx r1 + + thumb_func_start sub_555BC +sub_555BC: @ 0x080555BC + ldr r2, _080555D0 @ =0x080554F1 + movs r0, #1 + eors r2, r0 + ldr r3, _080555D4 @ =0x02002FD8 + ldr r0, _080555D8 @ =0x08055531 + ldr r1, _080555D0 @ =0x080554F1 + subs r0, r0, r1 + lsls r0, r0, #0xf + b _080555E8 + .align 2, 0 +_080555D0: .4byte 0x080554F1 +_080555D4: .4byte 0x02002FD8 +_080555D8: .4byte 0x08055531 +_080555DC: + ldrh r0, [r2] + strh r0, [r3] + adds r2, #2 + adds r3, #2 + subs r0, r1, #1 + lsls r0, r0, #0x10 +_080555E8: + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _080555DC + ldr r1, _08055608 @ =0x02032FF0 + ldr r0, _0805560C @ =0x02002FD9 + str r0, [r1] + ldr r2, _08055610 @ =0x08055571 + movs r0, #1 + eors r2, r0 + ldr r3, _08055614 @ =0x02002F38 + ldr r0, _08055618 @ =0x080555BD + ldr r1, _08055610 @ =0x08055571 + subs r0, r0, r1 + lsls r0, r0, #0xf + b _08055628 + .align 2, 0 +_08055608: .4byte 0x02032FF0 +_0805560C: .4byte 0x02002FD9 +_08055610: .4byte 0x08055571 +_08055614: .4byte 0x02002F38 +_08055618: .4byte 0x080555BD +_0805561C: + ldrh r0, [r2] + strh r0, [r3] + adds r2, #2 + adds r3, #2 + subs r0, r1, #1 + lsls r0, r0, #0x10 +_08055628: + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _0805561C + ldr r1, _08055644 @ =0x02032FF4 + ldr r0, _08055648 @ =0x02002F39 + str r0, [r1] + ldr r2, _0805564C @ =0x04000204 + ldrh r0, [r2] + ldr r1, _08055650 @ =0x0000FFFC + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strh r0, [r2] + bx lr + .align 2, 0 +_08055644: .4byte 0x02032FF4 +_08055648: .4byte 0x02002F39 +_0805564C: .4byte 0x04000204 +_08055650: .4byte 0x0000FFFC + + thumb_func_start sub_55654 +sub_55654: @ 0x08055654 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r5, r1, #0 + adds r4, r2, #0 + movs r7, #0 + b _08055666 +_08055660: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 +_08055666: + cmp r7, #2 + bhi _08055688 + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_55530 + ldr r0, _08055690 @ =0x02032FF4 + ldr r3, [r0] + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r4, #0 + bl _call_via_r3 + adds r3, r0, #0 + cmp r3, #0 + bne _08055660 +_08055688: + adds r0, r3, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08055690: .4byte 0x02032FF4 + + .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.ld b/ld_script.ld index 147590e..ac87ddb 100755 --- a/ld_script.ld +++ b/ld_script.ld @@ -30,6 +30,7 @@ SECTIONS asm/m4a_3.o(.text); src/m4a_4.o(.text); asm/libagbsyscall.o(.text); + asm/unknown_lib.o(.text); asm/rom.o(.text); }=0xFF } |