diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-04-28 21:13:24 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-04-28 21:13:24 -0400 |
commit | da9b567dfd4ec56b50710ee6617e06e629c80bb3 (patch) | |
tree | 55bc1d3fb46bc16da71f16ceaa270ea240c17058 | |
parent | 4f66d1b7f2630aa1b805ac8e848ebae38faaacd3 (diff) |
nonmatching sub_811A1C8
-rw-r--r-- | asm/pokedex_cry_screen.s | 167 | ||||
-rw-r--r-- | src/pokedex_cry_screen.c | 210 |
2 files changed, 208 insertions, 169 deletions
diff --git a/asm/pokedex_cry_screen.s b/asm/pokedex_cry_screen.s index 67b8dc5b1..ffb75502e 100644 --- a/asm/pokedex_cry_screen.s +++ b/asm/pokedex_cry_screen.s @@ -5,173 +5,6 @@ .text - thumb_func_start sub_811A1C8 -sub_811A1C8: @ 811A1C8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r5, r0, 24 - lsrs r4, r5, 24 - lsls r1, 24 - movs r0, 0xFE - lsls r0, 23 - adds r1, r0 - lsrs r1, 16 - adds r0, r1, 0 - bl __floatsidf - ldr r3, _0811A280 @ =0x00000000 - ldr r2, _0811A27C @ =0x40920000 - bl __divdf3 - bl __fixunsdfsi - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x37 - bls _0811A1FE - movs r6, 0x37 -_0811A1FE: - str r6, [sp] - movs r7, 0x1 - ands r7, r4 - ldr r0, _0811A284 @ =gSharedMem + 0x1C000 - mov r10, r0 - lsrs r5, 27 - mov r8, r5 - ldr r0, _0811A288 @ =gUnknown_083FB738 - mov r1, r10 - ldrb r1, [r1, 0x12] - cmp r6, r1 - bls _0811A298 - adds r0, r7, r0 - ldrb r0, [r0] - mov r9, r0 - movs r2, 0x7 - ands r2, r4 -_0811A220: - lsls r1, r6, 1 - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 4 - adds r1, r0 - ldr r3, _0811A28C @ =gUnknown_083FB274 - adds r1, r3 - mov r3, r8 - lsls r0, r3, 5 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0811A290 @ =gSharedMem - adds r5, r0, r1 - ldrb r4, [r5] - mov r3, r9 - ands r4, r3 - strb r4, [r5] - adds r0, r6, 0 - movs r1, 0x3 - str r2, [sp, 0x8] - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - movs r1, 0xF - ands r0, r1 - lsls r1, r7, 4 - adds r0, r1 - ldr r1, _0811A294 @ =gUnknown_083FB73A - adds r0, r1 - ldrb r0, [r0] - orrs r4, r0 - strb r4, [r5] - subs r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r2, [sp, 0x8] - ldr r3, _0811A284 @ =gSharedMem + 0x1C000 - ldrb r3, [r3, 0x12] - cmp r6, r3 - bhi _0811A220 - b _0811A2FA - .align 2, 0 -_0811A27C: .4byte 0x40920000 -_0811A280: .4byte 0x00000000 -_0811A284: .4byte gSharedMem + 0x1C000 -_0811A288: .4byte gUnknown_083FB738 -_0811A28C: .4byte gUnknown_083FB274 -_0811A290: .4byte gSharedMem -_0811A294: .4byte gUnknown_083FB73A -_0811A298: - lsls r1, r7, 4 - str r1, [sp, 0x4] - adds r0, r7, r0 - ldrb r0, [r0] - mov r9, r0 - movs r7, 0x7 - ands r7, r4 -_0811A2A6: - lsls r1, r6, 1 - lsls r0, r7, 3 - adds r0, r7 - lsls r0, 4 - adds r1, r0 - ldr r2, _0811A314 @ =gUnknown_083FB274 - adds r1, r2 - mov r3, r8 - lsls r0, r3, 5 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0811A318 @ =gSharedMem - adds r5, r0, r1 - ldrb r4, [r5] - mov r2, r9 - ands r4, r2 - strb r4, [r5] - adds r0, r6, 0 - movs r1, 0x3 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - movs r1, 0xF - ands r0, r1 - ldr r3, [sp, 0x4] - adds r0, r3 - ldr r1, _0811A31C @ =gUnknown_083FB73A - adds r0, r1 - ldrb r0, [r0] - orrs r4, r0 - strb r4, [r5] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r2, _0811A320 @ =gSharedMem + 0x1C000 - ldrb r2, [r2, 0x12] - cmp r6, r2 - bcc _0811A2A6 -_0811A2FA: - mov r3, sp - ldrb r0, [r3] - mov r3, r10 - strb r0, [r3, 0x12] - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0811A314: .4byte gUnknown_083FB274 -_0811A318: .4byte gSharedMem -_0811A31C: .4byte gUnknown_083FB73A -_0811A320: .4byte gSharedMem + 0x1C000 - thumb_func_end sub_811A1C8 - thumb_func_start sub_811A324 sub_811A324: @ 811A324 ldr r2, _0811A344 @ =0x040000d4 diff --git a/src/pokedex_cry_screen.c b/src/pokedex_cry_screen.c index b6abd436d..ef5a5c2fc 100644 --- a/src/pokedex_cry_screen.c +++ b/src/pokedex_cry_screen.c @@ -12,7 +12,7 @@ extern struct SoundInfo gSoundInfo; extern struct MusicPlayerInfo gMPlay_BGM; struct Unk2000000 { - u16 unk0000[7 * 32][16]; + u8 unk0000[7 * 32 * 32]; }; struct Unk201C800 { @@ -443,10 +443,216 @@ void sub_811A15C(u8 a0) r3 = (ePokedexCryScreen.unk0011 / 8 + ePokedexCryScreen.unk0016 + 1) % 32; for (i = 0; i < 7; i++) { - DmaCopy16(3, gUnknown_083FB718, ePokedexCryScreenGfx.unk0000[32 * i + r3], 32); + DmaCopy16(3, gUnknown_083FB718, &ePokedexCryScreenGfx.unk0000[32 * (32 * i + r3)], 32); } } +extern const u16 gUnknown_083FB274[8][72]; +extern const u8 gUnknown_083FB738[2]; +extern const u8 gUnknown_083FB73A[2][16]; + +#ifdef NONMATCHING +void sub_811A1C8(u8 a0, u8 a1) +{ + u8 sp0; + u8 r7; + u8 r8; + u16 r1 = (a1 + 127) << 8; + u8 i = r1 / 1152.0; + if (i > 71 - 16) + i = 71 - 16; + sp0 = i; + r7 = a0 % 2; + r8 = a0 / 8; + if (i > ePokedexCryScreen.unk0012) + { + do + { + ePokedexCryScreenGfx.unk0000[(u16)(r8 * 32 + gUnknown_083FB274[a0 % 8][i])] &= gUnknown_083FB738[r7]; + ePokedexCryScreenGfx.unk0000[(u16)(r8 * 32 + gUnknown_083FB274[a0 % 8][i])] |= gUnknown_083FB73A[r7][((i / 3) - 1) & 0x0F]; + i--; + } while (i > ePokedexCryScreen.unk0012); + } + else + { + do + { + ePokedexCryScreenGfx.unk0000[(u16)(r8 * 32 + gUnknown_083FB274[a0 % 8][i])] &= gUnknown_083FB738[r7]; + ePokedexCryScreenGfx.unk0000[(u16)(r8 * 32 + gUnknown_083FB274[a0 % 8][i])] |= gUnknown_083FB73A[r7][((i / 3) - 1) & 0x0F]; + i++; + } while (i < ePokedexCryScreen.unk0012); + } + ePokedexCryScreen.unk0012 = sp0; +} +#else +NAKED void sub_811A1C8(u8 a0, u8 a1) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0xC\n" + "\tlsls r5, r0, 24\n" + "\tlsrs r4, r5, 24\n" + "\tlsls r1, 24\n" + "\tmovs r0, 0xFE\n" + "\tlsls r0, 23\n" + "\tadds r1, r0\n" + "\tlsrs r1, 16\n" + "\tadds r0, r1, 0\n" + "\tbl __floatsidf\n" + "\tldr r3, _0811A280 @ =0x00000000\n" + "\tldr r2, _0811A27C @ =0x40920000\n" + "\tbl __divdf3\n" + "\tbl __fixunsdfsi\n" + "\tlsls r0, 24\n" + "\tlsrs r6, r0, 24\n" + "\tcmp r6, 0x37\n" + "\tbls _0811A1FE\n" + "\tmovs r6, 0x37\n" + "_0811A1FE:\n" + "\tstr r6, [sp]\n" + "\tmovs r7, 0x1\n" + "\tands r7, r4\n" + "\tldr r0, _0811A284 @ =gSharedMem + 0x1C000\n" + "\tmov r10, r0\n" + "\tlsrs r5, 27\n" + "\tmov r8, r5\n" + "\tldr r0, _0811A288 @ =gUnknown_083FB738\n" + "\tmov r1, r10\n" + "\tldrb r1, [r1, 0x12]\n" + "\tcmp r6, r1\n" + "\tbls _0811A298\n" + "\tadds r0, r7, r0\n" + "\tldrb r0, [r0]\n" + "\tmov r9, r0\n" + "\tmovs r2, 0x7\n" + "\tands r2, r4\n" + "_0811A220:\n" + "\tlsls r1, r6, 1\n" + "\tlsls r0, r2, 3\n" + "\tadds r0, r2\n" + "\tlsls r0, 4\n" + "\tadds r1, r0\n" + "\tldr r3, _0811A28C @ =gUnknown_083FB274\n" + "\tadds r1, r3\n" + "\tmov r3, r8\n" + "\tlsls r0, r3, 5\n" + "\tldrh r1, [r1]\n" + "\tadds r0, r1\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tldr r1, _0811A290 @ =gSharedMem\n" + "\tadds r5, r0, r1\n" + "\tldrb r4, [r5]\n" + "\tmov r3, r9\n" + "\tands r4, r3\n" + "\tstrb r4, [r5]\n" + "\tadds r0, r6, 0\n" + "\tmovs r1, 0x3\n" + "\tstr r2, [sp, 0x8]\n" + "\tbl __udivsi3\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tsubs r0, 0x1\n" + "\tmovs r1, 0xF\n" + "\tands r0, r1\n" + "\tlsls r1, r7, 4\n" + "\tadds r0, r1\n" + "\tldr r1, _0811A294 @ =gUnknown_083FB73A\n" + "\tadds r0, r1\n" + "\tldrb r0, [r0]\n" + "\torrs r4, r0\n" + "\tstrb r4, [r5]\n" + "\tsubs r0, r6, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r6, r0, 24\n" + "\tldr r2, [sp, 0x8]\n" + "\tldr r3, _0811A284 @ =gSharedMem + 0x1C000\n" + "\tldrb r3, [r3, 0x12]\n" + "\tcmp r6, r3\n" + "\tbhi _0811A220\n" + "\tb _0811A2FA\n" + "\t.align 2, 0\n" + "_0811A27C: .4byte 0x40920000\n" + "_0811A280: .4byte 0x00000000\n" + "_0811A284: .4byte gSharedMem + 0x1C000\n" + "_0811A288: .4byte gUnknown_083FB738\n" + "_0811A28C: .4byte gUnknown_083FB274\n" + "_0811A290: .4byte gSharedMem\n" + "_0811A294: .4byte gUnknown_083FB73A\n" + "_0811A298:\n" + "\tlsls r1, r7, 4\n" + "\tstr r1, [sp, 0x4]\n" + "\tadds r0, r7, r0\n" + "\tldrb r0, [r0]\n" + "\tmov r9, r0\n" + "\tmovs r7, 0x7\n" + "\tands r7, r4\n" + "_0811A2A6:\n" + "\tlsls r1, r6, 1\n" + "\tlsls r0, r7, 3\n" + "\tadds r0, r7\n" + "\tlsls r0, 4\n" + "\tadds r1, r0\n" + "\tldr r2, _0811A314 @ =gUnknown_083FB274\n" + "\tadds r1, r2\n" + "\tmov r3, r8\n" + "\tlsls r0, r3, 5\n" + "\tldrh r1, [r1]\n" + "\tadds r0, r1\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tldr r1, _0811A318 @ =gSharedMem\n" + "\tadds r5, r0, r1\n" + "\tldrb r4, [r5]\n" + "\tmov r2, r9\n" + "\tands r4, r2\n" + "\tstrb r4, [r5]\n" + "\tadds r0, r6, 0\n" + "\tmovs r1, 0x3\n" + "\tbl __udivsi3\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tsubs r0, 0x1\n" + "\tmovs r1, 0xF\n" + "\tands r0, r1\n" + "\tldr r3, [sp, 0x4]\n" + "\tadds r0, r3\n" + "\tldr r1, _0811A31C @ =gUnknown_083FB73A\n" + "\tadds r0, r1\n" + "\tldrb r0, [r0]\n" + "\torrs r4, r0\n" + "\tstrb r4, [r5]\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r6, r0, 24\n" + "\tldr r2, _0811A320 @ =gSharedMem + 0x1C000\n" + "\tldrb r2, [r2, 0x12]\n" + "\tcmp r6, r2\n" + "\tbcc _0811A2A6\n" + "_0811A2FA:\n" + "\tmov r3, sp\n" + "\tldrb r0, [r3]\n" + "\tmov r3, r10\n" + "\tstrb r0, [r3, 0x12]\n" + "\tadd sp, 0xC\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0811A314: .4byte gUnknown_083FB274\n" + "_0811A318: .4byte gSharedMem\n" + "_0811A31C: .4byte gUnknown_083FB73A\n" + "_0811A320: .4byte gSharedMem + 0x1C000"); +} +#endif // NONMATCHING + asm(".section .text.ShowPokedexCryScreen"); u8 ShowPokedexCryScreen(struct CryRelatedStruct *cry, u8 arg1) { |