diff options
-rwxr-xr-x | asm/use_pokeblock.s | 108 | ||||
-rwxr-xr-x | src/use_pokeblock.c | 79 |
2 files changed, 131 insertions, 56 deletions
diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index 64157f558..af050f3d5 100755 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -5,60 +5,60 @@ .syntax unified .text - - thumb_func_start sub_8136D00 -sub_8136D00: @ 8136D00 - push {r4,r5,lr} - ldr r4, _08136D30 @ =gUnknown_02039304 - adds r3, r4, 0 - movs r5, 0x5 -_08136D08: - ldr r0, [r3] - adds r0, 0x53 - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - ldr r2, [r3] - adds r1, r2, 0 - adds r1, 0x53 - ldrb r0, [r1] - cmp r0, 0x4 - bhi _08136D34 - adds r0, r2, 0 - adds r0, 0x61 - ldrb r1, [r1] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08136D3A - b _08136D08 - .align 2, 0 -_08136D30: .4byte gUnknown_02039304 -_08136D34: - strb r5, [r1] - movs r0, 0 - b _08136D5A -_08136D3A: - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0x10 - adds r1, r2, 0 - adds r1, 0x53 - ldrb r1, [r1] - adds r2, 0x61 - adds r2, r1 - ldrb r2, [r2] - bl sub_8136DC0 - ldr r0, [r4] - adds r0, 0x10 - bl sub_8136DA0 - movs r0, 0x1 -_08136D5A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8136D00 - +@ +@ thumb_func_start sub_8136D00 +@ sub_8136D00: @ 8136D00 +@ push {r4,r5,lr} +@ ldr r4, _08136D30 @ =gUnknown_02039304 +@ adds r3, r4, 0 +@ movs r5, 0x5 +@ _08136D08: +@ ldr r0, [r3] +@ adds r0, 0x53 +@ ldrb r1, [r0] +@ adds r1, 0x1 +@ strb r1, [r0] +@ ldr r2, [r3] +@ adds r1, r2, 0 +@ adds r1, 0x53 +@ ldrb r0, [r1] +@ cmp r0, 0x4 +@ bhi _08136D34 +@ adds r0, r2, 0 +@ adds r0, 0x61 +@ ldrb r1, [r1] +@ adds r0, r1 +@ ldrb r0, [r0] +@ cmp r0, 0 +@ bne _08136D3A +@ b _08136D08 +@ .align 2, 0 +@ _08136D30: .4byte gUnknown_02039304 +@ _08136D34: +@ strb r5, [r1] +@ movs r0, 0 +@ b _08136D5A +@ _08136D3A: +@ ldr r2, [r4] +@ adds r0, r2, 0 +@ adds r0, 0x10 +@ adds r1, r2, 0 +@ adds r1, 0x53 +@ ldrb r1, [r1] +@ adds r2, 0x61 +@ adds r2, r1 +@ ldrb r2, [r2] +@ bl sub_8136DC0 +@ ldr r0, [r4] +@ adds r0, 0x10 +@ bl sub_8136DA0 +@ movs r0, 0x1 +@ _08136D5A: +@ pop {r4,r5} +@ pop {r1} +@ bx r1 +@ thumb_func_end sub_8136D00 +@ thumb_func_start sub_8136D60 sub_8136D60: @ 8136D60 push {lr} diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 0c2ba8642..7590b19ff 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -21,11 +21,11 @@ asm(".text\n" ".include \"constants/gba_constants.inc\""); +extern struct UnkPokenavStruct_Sub1 *gUnknown_02039304; extern MainCallback gUnknown_02039308; extern struct Pokeblock *gUnknown_0203930C; -u8 gUnknown_02039310; +extern u8 gUnknown_02039310; -extern struct UnkPokenavStruct_Sub1 *gUnknown_02039304; extern u16 gKeyRepeatStartDelay; extern u16 gScriptItemId; // remove after merge of #349 Pokeblock @@ -563,3 +563,78 @@ void sub_8136C6C(void) } sub_8136DA0(gUnknown_02039304->stringBuffer); } + +#ifdef NONMATCHING +bool8 sub_8136D00(void) +{ + while (1) + { + if (++gUnknown_02039304->unk53 >= 5) + { + break; + } + if (gUnknown_02039304->unk61[gUnknown_02039304->unk53] != 0) + { + sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]); + sub_8136DA0(gUnknown_02039304->stringBuffer); + return TRUE; + } + } + gUnknown_02039304->unk53 = 5; + return FALSE; +} +#else +__attribute__((naked)) +bool8 sub_8136D00(void) +{ + asm_unified("\tpush {r4,r5,lr}\n" + "\tldr r4, _08136D30 @ =gUnknown_02039304\n" + "\tadds r3, r4, 0\n" + "\tmovs r5, 0x5\n" + "_08136D08:\n" + "\tldr r0, [r3]\n" + "\tadds r0, 0x53\n" + "\tldrb r1, [r0]\n" + "\tadds r1, 0x1\n" + "\tstrb r1, [r0]\n" + "\tldr r2, [r3]\n" + "\tadds r1, r2, 0\n" + "\tadds r1, 0x53\n" + "\tldrb r0, [r1]\n" + "\tcmp r0, 0x4\n" + "\tbhi _08136D34\n" + "\tadds r0, r2, 0\n" + "\tadds r0, 0x61\n" + "\tldrb r1, [r1]\n" + "\tadds r0, r1\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbne _08136D3A\n" + "\tb _08136D08\n" + "\t.align 2, 0\n" + "_08136D30: .4byte gUnknown_02039304\n" + "_08136D34:\n" + "\tstrb r5, [r1]\n" + "\tmovs r0, 0\n" + "\tb _08136D5A\n" + "_08136D3A:\n" + "\tldr r2, [r4]\n" + "\tadds r0, r2, 0\n" + "\tadds r0, 0x10\n" + "\tadds r1, r2, 0\n" + "\tadds r1, 0x53\n" + "\tldrb r1, [r1]\n" + "\tadds r2, 0x61\n" + "\tadds r2, r1\n" + "\tldrb r2, [r2]\n" + "\tbl sub_8136DC0\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0x10\n" + "\tbl sub_8136DA0\n" + "\tmovs r0, 0x1\n" + "_08136D5A:\n" + "\tpop {r4,r5}\n" + "\tpop {r1}\n" + "\tbx r1"); +} +#endif |