From f4880f0b8fb8e1e4423534a899817993a843f768 Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Sat, 25 Nov 2023 00:02:51 -0600 Subject: [PATCH] Split arm9 ASM JP --- asm/main_0200C4CC.s | 3669 ++++++++++++++++- asm/main_02054C24.s | 424 +- lib/DSE/include/dc_lfo.h | 4 +- lib/syscall/asm/_secure_C2SJ.s | 278 ++ lib/syscall/asm/include/_secure_C2SJ.inc | 2 + .../sync_from_pmdsky_debug.py | 2 + 6 files changed, 4064 insertions(+), 315 deletions(-) create mode 100644 lib/syscall/asm/_secure_C2SJ.s create mode 100644 lib/syscall/asm/include/_secure_C2SJ.inc diff --git a/asm/main_0200C4CC.s b/asm/main_0200C4CC.s index fbedc583..b144a2aa 100644 --- a/asm/main_0200C4CC.s +++ b/asm/main_0200C4CC.s @@ -191,7 +191,11 @@ _0200C6BC: add r3, sp, #0x54 bl DrawTextInWindow ldrsh r1, [r5, #0x68] +#ifdef JAPAN + ldr r0, _0200CA28 ; =0x000023BB +#else mov r0, #0x9d0 +#endif str r1, [sp, #0x28] bl StringFromId add r1, sp, #4 @@ -206,6 +210,17 @@ _0200C6BC: mov r2, #0x3e add r3, sp, #0x54 bl DrawTextInWindow +#ifdef JAPAN + ldrb r1, [r5, #0x6a] + str r1, [sp, #0x28] + ldrb r0, [r5, #0x6c] + str r0, [sp, #0x2c] + ldrb r0, [r5, #0xa9] + cmp r0, #0 + beq _0200C7EC + add r1, r1, r0 + mov r0, #0x23c0 +#else ldrb r2, [r5, #0x6a] str r2, [sp, #0x28] ldrb r0, [r5, #0x6c] @@ -215,6 +230,7 @@ _0200C6BC: beq _0200C7EC ldr r0, _0200CA28 ; =0x000009D5 add r1, r2, r1 +#endif str r1, [sp, #0x28] bl StringFromId mov r2, r0 @@ -375,21 +391,30 @@ _0200C9F8: add sp, sp, #0x400 ldmia sp!, {r3, r4, r5, r6, pc} .align 2, 0 -_0200CA18: .word 0x000009CC -_0200CA1C: .word 0x000009CD -_0200CA20: .word 0x000009CE -_0200CA24: .word 0x000009CF +#ifdef JAPAN +#define SUB_0200C5DC_OFFSET 0x19EB +#else +#define SUB_0200C5DC_OFFSET 0 +#endif +_0200CA18: .word 0x000009CC + SUB_0200C5DC_OFFSET +_0200CA1C: .word 0x000009CD + SUB_0200C5DC_OFFSET +_0200CA20: .word 0x000009CE + SUB_0200C5DC_OFFSET +_0200CA24: .word 0x000009CF + SUB_0200C5DC_OFFSET +#ifdef JAPAN +_0200CA28: .word 0x000023BB +#else _0200CA28: .word 0x000009D5 -_0200CA2C: .word 0x000009D1 -_0200CA30: .word 0x000009D6 -_0200CA34: .word 0x000009D2 -_0200CA38: .word 0x000009D7 -_0200CA3C: .word 0x000009D3 -_0200CA40: .word 0x000009D8 -_0200CA44: .word 0x000009D4 +#endif +_0200CA2C: .word 0x000009D1 + SUB_0200C5DC_OFFSET +_0200CA30: .word 0x000009D6 + SUB_0200C5DC_OFFSET +_0200CA34: .word 0x000009D2 + SUB_0200C5DC_OFFSET +_0200CA38: .word 0x000009D7 + SUB_0200C5DC_OFFSET +_0200CA3C: .word 0x000009D3 + SUB_0200C5DC_OFFSET +_0200CA40: .word 0x000009D8 + SUB_0200C5DC_OFFSET +_0200CA44: .word 0x000009D4 + SUB_0200C5DC_OFFSET _0200CA48: .word _02094C0C -_0200CA4C: .word 0x000009DA -_0200CA50: .word 0x000009D9 +_0200CA4C: .word 0x000009DA + SUB_0200C5DC_OFFSET +_0200CA50: .word 0x000009D9 + SUB_0200C5DC_OFFSET arm_func_end sub_0200C5DC arm_func_start GetDamageSource @@ -1470,6 +1495,68 @@ _0200D768: .word _02097FE4 arm_func_start sub_0200D76C sub_0200D76C: ; 0x0200D76C +#ifdef JAPAN + stmdb sp!, {r4, r5, r6, lr} + ldr r3, _0200D814 ; =BAG_ITEMS_PTR_MIRROR + mov lr, #0 + ldr r4, [r3, #4] + mov ip, lr + mov r3, lr +_0200D784: + ldr r5, _0200D818 ; =_02094D0C + mov r6, #0 + ldr r5, [r5, r3, lsl #2] + b _0200D79C +_0200D794: + sub r0, r0, r5 + add r6, r6, #1 +_0200D79C: + cmp r0, r5 + bge _0200D794 + cmp r6, #9 + movgt r6, #9 + cmp r6, #0 + beq _0200D7D8 + ldrb r5, [r4, r6, lsl #1] + add r6, r4, r6, lsl #1 + add ip, ip, #1 + strb r5, [r1] + ldrb r5, [r6, #1] + mov lr, #1 + strb r5, [r1, #1] + add r1, r1, #2 + b _0200D80C +_0200D7D8: + cmp lr, #0 + beq _0200D800 + ldrb r5, [r4, r6, lsl #1] + add r6, r4, r6, lsl #1 + add ip, ip, #1 + strb r5, [r1] + ldrb r5, [r6, #1] + strb r5, [r1, #1] + add r1, r1, #2 + b _0200D80C +_0200D800: + cmp r2, #0 + movne r5, #0x7f + strneb r5, [r1], #1 +_0200D80C: + add r3, r3, #1 + cmp r3, #5 + blt _0200D784 + ldr r2, _0200D814 ; =BAG_ITEMS_PTR_MIRROR + mov r3, #0 + ldr r2, [r2, #4] + ldrb r4, [r2, r0, lsl #1] + add r2, r2, r0, lsl #1 + add r0, ip, #1 + strb r4, [r1] + ldrb r2, [r2, #1] + strb r2, [r1, #1] + strb r3, [r1, #2] + ldmia sp!, {r4, r5, r6, pc} +#else stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} ldr r3, _0200D814 ; =BAG_ITEMS_PTR_MIRROR mov ip, #0 @@ -1516,6 +1603,7 @@ _0200D7F0: strb ip, [r1] strb r2, [r1, #1] ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +#endif .align 2, 0 _0200D814: .word BAG_ITEMS_PTR_MIRROR _0200D818: .word _02094D0C @@ -2796,9 +2884,12 @@ _0200E860: .word 0x00000578 GetItemName: ; 0x0200E864 stmdb sp!, {r3, lr} bl EnsureValidItem -#ifdef EUROPE +#if defined(EUROPE) add r0, r0, #0x278 add r0, r0, #0x1800 +#elif defined(JAPAN) + add r0, r0, #0x93 + add r0, r0, #0xd00 #else add r0, r0, #0x76 add r0, r0, #0x1a00 @@ -2823,9 +2914,12 @@ GetItemNameFormatted: ; 0x0200E884 mov r6, r2 mov r5, r3 bl EnsureValidItem -#ifdef EUROPE +#if defined(EUROPE) add r0, r0, #0x278 add r0, r0, #0x1800 +#elif defined(JAPAN) + add r0, r0, #0x93 + add r0, r0, #0xd00 #else add r0, r0, #0x76 add r0, r0, #0x1a00 @@ -3479,6 +3573,7 @@ _0200EF58: _0200EF68: .word BAG_ITEMS_PTR_MIRROR arm_func_end IsItemWithFlagsInBag +#ifndef JAPAN arm_func_start IsItemInTreasureBoxes IsItemInTreasureBoxes: ; 0x0200EF6C stmdb sp!, {r4, r5, r6, lr} @@ -3510,6 +3605,7 @@ _0200EFB8: .align 2, 0 _0200EFC8: .word BAG_ITEMS_PTR_MIRROR arm_func_end IsItemInTreasureBoxes +#endif arm_func_start IsHeldItemInBag IsHeldItemInBag: ; 0x0200EFCC @@ -8989,9 +9085,12 @@ _02013450: .word _020AF700 GetMoveName: ; 0x02013454 mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 -#ifdef EUROPE +#if defined(EUROPE) add r0, r0, #0xff0 add r0, r0, #0x1000 +#elif defined(JAPAN) + add r0, r0, #0xb + add r0, r0, #0x1300 #else add r0, r0, #0xee add r0, r0, #0x1f00 @@ -9061,9 +9160,12 @@ _0201351C: ; jump table b _020136F4 ; case 5 _02013534: ldrh r0, [r6, #4] -#ifdef EUROPE +#if defined(EUROPE) add r0, r0, #0xff0 add r0, r0, #0x1000 +#elif defined(JAPAN) + add r0, r0, #0xb + add r0, r0, #0x1300 #else add r0, r0, #0xee add r0, r0, #0x1f00 @@ -9079,9 +9181,12 @@ _02013534: b _02013730 _02013564: ldrh r0, [r6, #4] -#ifdef EUROPE +#if defined(EUROPE) add r0, r0, #0xff0 add r0, r0, #0x1000 +#elif defined(JAPAN) + add r0, r0, #0xb + add r0, r0, #0x1300 #else add r0, r0, #0xee add r0, r0, #0x1f00 @@ -9110,9 +9215,12 @@ _02013564: b _02013730 _020135C8: ldrh r0, [r6, #4] -#ifdef EUROPE +#if defined(EUROPE) add r0, r0, #0xff0 add r0, r0, #0x1000 +#elif defined(JAPAN) + add r0, r0, #0xb + add r0, r0, #0x1300 #else add r0, r0, #0xee add r0, r0, #0x1f00 @@ -9141,9 +9249,12 @@ _020135C8: b _02013730 _0201362C: ldrh r0, [r6, #4] -#ifdef EUROPE +#if defined(EUROPE) add r0, r0, #0xff0 add r0, r0, #0x1000 +#elif defined(JAPAN) + add r0, r0, #0xb + add r0, r0, #0x1300 #else add r0, r0, #0xee add r0, r0, #0x1f00 @@ -9172,9 +9283,12 @@ _0201362C: b _02013730 _02013690: ldrh r0, [r6, #4] -#ifdef EUROPE +#if defined(EUROPE) add r0, r0, #0xff0 add r0, r0, #0x1000 +#elif defined(JAPAN) + add r0, r0, #0xb + add r0, r0, #0x1300 #else add r0, r0, #0xee add r0, r0, #0x1f00 @@ -9203,9 +9317,12 @@ _02013690: b _02013730 _020136F4: ldrh r0, [r6, #4] -#ifdef EUROPE +#if defined(EUROPE) add r0, r0, #0xff0 add r0, r0, #0x1000 +#elif defined(JAPAN) + add r0, r0, #0xb + add r0, r0, #0x1300 #else add r0, r0, #0xee add r0, r0, #0x1f00 @@ -9687,8 +9804,13 @@ GetMoveMessageFromId: ; 0x02013C30 ldr ip, _02013C60 ; =StringFromId mla r1, r0, r1, r2 ldrh r0, [r1, #0x18] +#ifdef JAPAN + add r0, r0, #0x13c + add r0, r0, #0x1400 +#else add r0, r0, #0x314 add r0, r0, #0xc00 +#endif mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 bx ip @@ -12214,7 +12336,11 @@ _020158E0: addeq r5, r5, #8 beq _02015CD8 cmp r8, #0x20 +#ifdef JAPAN + addeq r5, r5, #0xc +#else addeq r5, r5, #6 +#endif beq _02015CD8 cmp r8, #0x5b bne _02015A2C @@ -12298,6 +12424,19 @@ _020159F0: add r5, r5, r0, asr #16 b _02015CD8 _02015A2C: +#ifdef JAPAN + tst r8, #0x80 + beq _02015A24 + ldrb r0, [r6] + cmp r0, #0 + orrne r8, r0, r8, lsl #8 + ldr r0, _02015D10_JP ; =0x00008140 + addne r6, r6, #1 + cmp r8, r0 + addeq r5, r5, #0xc + beq _02015CD8 +_02015A24: +#endif mov r0, r8 bl sub_02025480 bl sub_0201628C @@ -12503,6 +12642,9 @@ _02015DEC: .word _02099404_EU _02015D0C: .word _02098FC0 _02015D10: .word _020AF710 _02015D14: .word _02098EE0 +#ifdef JAPAN +_02015D10_JP: .word 0x00008140 +#endif arm_func_end sub_0201578C arm_func_start sub_02015D18 @@ -12879,6 +13021,67 @@ _0201619C: sub_020161CC: ; 0x020161CC stmdb sp!, {r4, r5, lr} sub sp, sp, #0x14 +#ifdef JAPAN + mov r5, r0 + mov r4, #0 + b _02016294 +_020161DC: + ldrb r0, [r5], #1 + cmp r0, #0x23 + addeq r4, r4, #8 + beq _02016294 + cmp r0, #0x20 + addeq r4, r4, #0xc + beq _02016294 + cmp r0, #0x5b + bne _02016258 + str r5, [sp] + mov r2, #1 + add r0, sp, #0 +_0201620C: + ldrb r1, [r5], #1 + cmp r1, #0x5d + beq _02016228 + cmp r1, #0x3a + streq r5, [r0, r2, lsl #2] + addeq r2, r2, #1 + b _0201620C +_02016228: + ldr r0, [sp] + ldr r1, _02016288 ; =0x02098FC0 + bl StrcmpTag + cmp r0, #0 + beq _02016294 + ldr r0, [sp, #4] + bl AtoiTag + ldr r0, [sp, #8] + bl AtoiTag + mov r0, r0, lsl #0x10 + add r4, r4, r0, asr #16 + b _02016294 +_02016258: + tst r0, #0x80 + beq _02016280 + ldrb r1, [r5] + cmp r1, #0 + orrne r0, r1, r0, lsl #8 + ldr r1, _020162B0_JP ; =0x00008140 + addne r5, r5, #1 + cmp r0, r1 + addeq r4, r4, #0xc + beq _02016294 +_02016280: + bl sub_02025480 + bl sub_0201628C + cmp r0, #0 + ldrneb r0, [r0, #6] + addne r4, r4, r0 +_02016294: + ldrb r0, [r5] + cmp r0, #0 + bne _020161DC + mov r0, r4 +#else mov r4, r0 mov r5, #0 b _02016270 @@ -12927,10 +13130,14 @@ _02016270: cmp r0, #0 bne _020161E0 mov r0, r5 +#endif add sp, sp, #0x14 ldmia sp!, {r4, r5, pc} .align 2, 0 _02016288: .word _02098FC0 +#ifdef JAPAN +_020162B0_JP: .word 0x00008140 +#endif arm_func_end sub_020161CC arm_func_start sub_0201628C @@ -14332,6 +14539,77 @@ _020175F4: .word WAN_TABLE sub_020175F8: ; 0x020175F8 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} sub sp, sp, #0x80 +#ifdef JAPAN + mov r8, r0 + cmp r2, #0 + movne r7, #0x3a + mov sb, r1 + mvn r0, #0 + moveq r7, #0x38 + cmp sb, r0 + beq _02017708 + mov r0, sb + mov r1, #0x64 + add r4, sp, #0 + bl _u32_div_f + and r6, r0, #0xff + mov r0, sb + mov r1, #0xa + bl _u32_div_f + and r5, r0, #0xff + mov r0, sb + mov r1, #0xa + bl _u32_div_f + cmp r6, #0 + and r2, r1, #0xff + addne r0, r6, #0x4f + movne r1, #0x82 + strneb r1, [r4] + strneb r0, [r4, #1] + addne r4, r4, #2 + cmp r5, #0 + beq _020176B4 + mov r0, #0x82 + strb r0, [r4] + add r0, r5, #0x4f + strb r0, [r4, #1] + add r4, r4, #2 + b _020176CC_JP +_020176B4: + cmp r6, #0 + movne r0, #0x82 + strneb r0, [r4] + addne r0, r5, #0x4f + strneb r0, [r4, #1] + addne r4, r4, #2 +_020176CC_JP: + mov r0, #0x82 + strb r0, [r4] + add r2, r2, #0x4f + strb r2, [r4, #1] + mov r2, #0 + add r0, sp, #0x40 + mov r1, r7 + strb r2, [r4, #2] + bl GetStringFromFileVeneer + ldr r1, _020176DC ; =_02099138 + add r2, sp, #0x40 + add r3, sp, #0 + mov r0, r8 + bl SprintfStatic__020176E4 + b _020176CC_JP +_02017708: + add r0, sp, #0 + mov r1, #0x39 + bl GetStringFromFileVeneer + add r0, sp, #0x40 + mov r1, r7 + bl GetStringFromFileVeneer + ldr r1, _020176DC ; =_02099138 + add r2, sp, #0x40 + add r3, sp, #0 + mov r0, r8 +#else cmp r2, #0 ldrne r5, _020176D4 ; =0x00000171 mov r6, r0 @@ -14384,15 +14662,20 @@ _020176B0: ldr r1, _020176E0 ; =_02099140 add r2, sp, #0x40 mov r0, r6 +#endif bl SprintfStatic__020176E4 _020176CC: add sp, sp, #0x80 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 +#ifdef JAPAN +_020176DC: .word _02099138 +#else _020176D4: .word 0x00000171 _020176D8: .word 0x0000016F _020176DC: .word _02099138 _020176E0: .word _02099140 +#endif arm_func_end sub_020175F8 arm_func_start SprintfStatic__020176E4 @@ -14718,15 +15001,20 @@ _02017A1C: .word 0x000044BD sub_02017A20: ; 0x02017A20 stmdb sp!, {r3, lr} bl sub_02015570 +#ifdef JAPAN + mov r0, #0x3e + add r1, r0, #0x730 +#else ldr r1, _02017A3C ; =0x000044BE mov r0, #0x3e +#endif bl sub_02015E44 bl sub_02015E6C ldmia sp!, {r3, pc} .align 2, 0 -#ifdef EUROPE +#if defined(EUROPE) _02017A3C: .word 0x000044C0 -#else +#elif !defined(JAPAN) _02017A3C: .word 0x000044BE #endif arm_func_end sub_02017A20 @@ -25555,7 +25843,9 @@ sub_020205F8: ; 0x020205F8 stmdb sp!, {r3, lr} bl sub_0200B768 bl LoadStringFile +#ifndef JAPAN bl sub_0202088C +#endif ldmia sp!, {r3, pc} arm_func_end sub_020205F8 @@ -25757,6 +26047,7 @@ sub_02020880: ; 0x02020880 _02020888: .word strstr arm_func_end sub_02020880 +#ifndef JAPAN arm_func_start sub_0202088C sub_0202088C: ; 0x0202088C #ifdef EUROPE @@ -25779,6 +26070,7 @@ _020209E4: .word _020B05AC_EU bx lr #endif arm_func_end sub_0202088C +#endif arm_func_start sub_02020890 sub_02020890: ; 0x02020890 @@ -30557,12 +30849,16 @@ sub_020244F4: ; 0x020244F4 beq _02024564 b _02024580 _0202451C: -#ifdef EUROPE +#if defined(EUROPE) add r0, r1, #0xc3 + add r0, r0, #0x3400 +#elif defined(JAPAN) + add r0, r1, #0x46 + add r0, r0, #0x4700 #else add r0, r1, #0xc1 -#endif add r0, r0, #0x3400 +#endif mov r1, r0, lsl #0x10 add r0, sp, #0 mov r1, r1, lsr #0x10 @@ -31079,8 +31375,13 @@ sub_02024A68: ; 0x02024A68 tst r1, #0xf0000 mov r1, r2, lsr #0x10 bne _02024A9C +#ifdef JAPAN + add r1, r1, #0xc9 + add r1, r1, #0x200 +#else add r1, r1, #0x79 add r1, r1, #0xa00 +#endif mov r1, r1, lsl #0x10 mov r1, r1, lsr #0x10 bl GetStringFromFileVeneer @@ -31101,8 +31402,13 @@ sub_02024AA8: ; 0x02024AA8 tst r1, #0xf0000 mov r0, r2, lsr #0x10 bne _02024AE8 +#ifdef JAPAN + add r0, r0, #0xf5 + add r0, r0, #0x3e00 +#else add r0, r0, #0x4d add r0, r0, #0xa00 +#endif mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 bl StringFromId @@ -31126,8 +31432,13 @@ sub_02024AF4: ; 0x02024AF4 tst r1, #0xf0000 mov r0, r2, lsr #0x10 bne _02024B38 +#ifdef JAPAN + add r0, r0, #0x7f + add r0, r0, #0x300 +#else add r0, r0, #0x77 add r0, r0, #0x100 +#endif mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 bl StringFromId @@ -31153,12 +31464,16 @@ sub_02024B48: ; 0x02024B48 tst r1, #0xf0000 mov r0, r2, lsr #0x10 bne _02024B88 -#ifdef EUROPE +#if defined(EUROPE) add r0, r0, #0x71 + add r0, r0, #0x2700 +#elif defined(JAPAN) + add r0, r0, #0x79 + add r0, r0, #0x4900 #else add r0, r0, #0x6f -#endif add r0, r0, #0x2700 +#endif mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 bl StringFromId @@ -31445,7 +31760,11 @@ _02024E94: mov r5, #0 _02024E98: mov r0, sl +#ifdef JAPAN + mov r1, #0x3b8 +#else mov r1, #0x1b0 +#endif bl GetStringFromFileVeneer ldr r1, _02024FA4 ; =_02099E18 mov r0, sl @@ -31513,11 +31832,19 @@ _02024F78: add sp, sp, #0x400 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +_02024F94: .word 0x000003B9 +_02024F98: .word 0x000003BA +#else _02024F94: .word 0x000001B1 _02024F98: .word 0x000001B2 -#ifdef EUROPE +#endif +#if defined(EUROPE) _02024F9C: .word 0x000029D3 _02024FA0: .word 0x00002F4B +#elif defined(JAPAN) +_02024F9C: .word 0x000041CE +_02024FA0: .word 0x00004746 #else _02024F9C: .word 0x000029D1 _02024FA0: .word 0x00002F49 @@ -31635,7 +31962,11 @@ _020250E0: .word _022A5970 arm_func_start SetQuestionMarks SetQuestionMarks: ; 0x020250E4 +#ifdef JAPAN + mov r1, #0xf +#else mov r1, #0x3f +#endif strb r1, [r0] strb r1, [r0, #1] strb r1, [r0, #2] @@ -31731,11 +32062,50 @@ _020251D4: arm_func_start sub_020251F0 sub_020251F0: ; 0x020251F0 +#ifdef JAPAN + ldr r1, _02025264 ; =0x020B112C + ldr r1, [r1, #4] + add r2, r1, r0, lsl #1 + ldrb r1, [r1, r0, lsl #1] + ldrb r0, [r2, #1] + add r0, r0, r1, lsl #8 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 bx lr + .align 2, 0 +_02025264: .word 0x020B112C +#else + bx lr +#endif arm_func_end sub_020251F0 arm_func_start StrncpySimpleNoPadSafe StrncpySimpleNoPadSafe: ; 0x020251F4 +#ifdef JAPAN + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + b _02025294 +_0202527C: + ldrb r0, [r5], #1 + bl sub_020251F0 + mov r1, r0, asr #8 + strb r1, [r6] + strb r0, [r6, #1] + add r6, r6, #2 +_02025294: + cmp r4, #0 + sub r4, r4, #1 + ble _020252AC + ldrb r0, [r5] + cmp r0, #0 + bne _0202527C +_020252AC: + mov r0, #0 + strb r0, [r6] + ldmia sp!, {r4, r5, r6, pc} +#else mov ip, #0x20 b _0202520C _020251FC: @@ -31754,10 +32124,36 @@ _02025224: mov r1, #0 strb r1, [r0] bx lr +#endif arm_func_end StrncpySimpleNoPadSafe arm_func_start StrcpyName StrcpyName: ; 0x02025230 +#ifdef JAPAN + stmdb sp!, {r3, lr} + ldr r3, _02025300 ; =0x020B112C + b _020252D8 +_020252C4: + ldrb ip, [r1], #1 + ldr lr, [r3] + mov ip, ip, lsl #1 + ldrh ip, [lr, ip] + strh ip, [r0], #2 +_020252D8: + cmp r2, #0 + sub r2, r2, #1 + ble _020252F0 + ldrb ip, [r1] + cmp ip, #0 + bne _020252C4 +_020252F0: + cmp r2, #0 + movgt r1, #0 + strgth r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02025300: .word 0x020B112C +#else stmdb sp!, {r4, lr} mov ip, #0 mov r3, ip @@ -31826,10 +32222,45 @@ _020252FC: mov r1, #0 strb r1, [r0] ldmia sp!, {r4, pc} +#endif arm_func_end StrcpyName arm_func_start StrncpyName StrncpyName: ; 0x02025314 +#ifdef JAPAN + stmdb sp!, {r4, r5, r6, lr} + mov ip, #0 + ldr r3, _02025444 ; =0x020B112C + b _02025434 +_020253F0: + ldrh r5, [r1] + cmp r5, #0 + moveq r1, #0 + streqb r1, [r0] + ldmeqia sp!, {r4, r5, r6, pc} + mov r4, ip + ldr lr, [r3] + b _02025420 +_02025410: + cmp r6, r5 + beq _0202542C + add lr, lr, #2 + add r4, r4, #1 +_02025420: + ldrh r6, [lr] + cmp r6, #0 + bne _02025410 +_0202542C: + strb r4, [r0], #1 + add r1, r1, #2 +_02025434: + cmp r2, #0 + sub r2, r2, #1 + bgt _020253F0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02025444: .word 0x020B112C +#else stmdb sp!, {r3, r4, r5, lr} mov lr, #0 mov ip, lr @@ -31901,8 +32332,10 @@ _020253F4: sub r2, r2, #1 bgt _02025324 ldmia sp!, {r3, r4, r5, pc} +#endif arm_func_end StrncpyName +#ifndef JAPAN arm_func_start sub_02025404 sub_02025404: ; 0x02025404 stmdb sp!, {r4, r5, r6, lr} @@ -31944,15 +32377,26 @@ sub_0202544C: ; 0x0202544C add sp, sp, #0x40 ldmia sp!, {r3, r4, r5, pc} arm_func_end sub_0202544C +#endif arm_func_start sub_02025480 sub_02025480: ; 0x02025480 stmdb sp!, {r3, lr} +#ifdef JAPAN + tst r0, #0xff00 + moveq r0, r0, lsl #0x10 + moveq r0, r0, lsr #0x10 + ldmeqia sp!, {r3, pc} +#endif cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r3, pc} mov ip, #0 +#ifdef JAPAN + mov lr, #0x110 +#else mov lr, #0xdb +#endif ldr r2, _020254F0 ; =_0209A044 b _020254C8 _020254A0: @@ -31985,6 +32429,38 @@ _020254F4: .word _0209A046 arm_func_start sub_020254F8 sub_020254F8: ; 0x020254F8 +#ifdef JAPAN + stmdb sp!, {r3, lr} + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + cmp r0, #0xa + ldreq r0, _02025530 ; =0x000081A5 + ldmeqia sp!, {r3, pc} + tst r0, #0xff00 + ldmeqia sp!, {r3, pc} + mov lr, #0 + ldr r3, _02025534 ; =0x0209A740 + ldr r1, _02025538 ; =0x00000111 + b _02025520 +_02025504: + add r2, r3, lr, lsl #2 + ldrh r2, [r2, #2] + mov ip, lr, lsl #2 + cmp r0, r2 + ldreqh r0, [r3, ip] + ldmeqia sp!, {r3, pc} + add lr, lr, #1 +_02025520: + cmp lr, r1 + blt _02025504 + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02025530: .word 0x000081A5 +_02025534: .word 0x0209A740 +_02025538: .word 0x00000111 +#else cmp r0, #0 moveq r0, #0 bxeq lr @@ -32009,6 +32485,7 @@ _02025538: bx lr .align 2, 0 _02025548: .word _0209A044 +#endif arm_func_end sub_020254F8 arm_func_start sub_0202554C @@ -32018,7 +32495,11 @@ sub_0202554C: ; 0x0202554C moveq r0, #0 ldmeqia sp!, {r3, pc} cmp r0, #0xa +#ifdef JAPAN + ldreq r0, _020255BC ; =0x000081A5 +#else moveq r0, #0xa +#endif ldmeqia sp!, {r3, pc} mov lr, #0 ldr ip, _020255CC ; =0x000001BE @@ -32046,12 +32527,24 @@ _020255AC: cmp r0, r1 ldreq r0, _020255D4 ; =_0209A3B6 ldreqh r0, [r0, r2] +#ifdef JAPAN + ldrne r0, _020255CC ; =0x00008148 +#else movne r0, #0x3f +#endif ldmia sp!, {r3, pc} .align 2, 0 +#ifdef JAPAN +_020255BC: .word 0x000081A5 +_020255C0: .word 0x000001BF +#else _020255CC: .word 0x000001BE +#endif _020255D0: .word _0209A3B4 _020255D4: .word _0209A3B6 +#ifdef JAPAN +_020255CC: .word 0x00008148 +#endif arm_func_end sub_0202554C arm_func_start sub_020255D8 @@ -32115,6 +32608,33 @@ _02025680: arm_func_start sub_0202568C sub_0202568C: ; 0x0202568C +#ifdef JAPAN + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, #0 + b _020256C0 +_0202569C: + bl sub_020254F8 + ands r1, r0, #0xff00 + movne r1, r1, asr #8 + strneb r1, [r7] + strneb r0, [r7, #1] + addne r7, r7, #2 + streqb r0, [r7], #1 + add r6, r6, #2 + add r4, r4, #1 +_020256C0: + ldrh r0, [r6] + cmp r0, #0 + beq _020256D4 + cmp r4, r5 + blt _0202569C +_020256D4: + mov r0, r7 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +#else stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r4, r0 mov r8, r1 @@ -32147,6 +32667,7 @@ _020256E0: _020256F4: mov r0, r4 ldmia sp!, {r4, r5, r6, r7, r8, pc} +#endif arm_func_end sub_0202568C arm_func_start sub_020256FC @@ -32164,7 +32685,11 @@ _02025720: bl sub_0202554C mov r6, r0 bl sub_02025C7C +#ifdef JAPAN + ldrh r0, [r0, #4] +#else ldrh r0, [r0] +#endif cmp r0, fp streqb r5, [sl] streqb r4, [sl, #1] @@ -32375,6 +32900,12 @@ GetTalkLine: ; 0x0202598C sub sp, sp, #0x6c ldr r3, _02025AC4 ; =0x000004B8 mov r6, r0 +#ifdef JAPAN + mov r4, r2 + cmp r6, r3 + cmpeq r4, #2 + mov r5, r1 +#else cmp r6, r3 addne r0, r3, #0x1b mov r5, r1 @@ -32382,6 +32913,7 @@ GetTalkLine: ; 0x0202598C cmpne r6, r0 bne _020259BC cmp r4, #2 +#endif moveq r4, #0 _020259BC: bl FileRom_InitDataTransfer @@ -32459,8 +32991,10 @@ _02025ABC: _02025AC4: .word 0x000004B8 _02025AC8: .word _022A7A08 _02025ACC: .word _022A7A0C -#ifdef EUROPE +#if defined(EUROPE) _02025AD0: .word 0x00003EFF +#elif defined(JAPAN) +_02025AD0: .word 0x00002FF6 #else _02025AD0: .word 0x00003EFD #endif @@ -32475,6 +33009,32 @@ sub_02025AD8: ; 0x02025AD8 add r0, sp, #0 mov r2, #1 bl LoadFileFromRom +#ifdef JAPAN + ldr r1, [sp] + ldr r0, _02025B34 ; =0x022A92C0 + bl HandleSir0Translation + ldr r1, _02025B38 ; =_0209AC04 + add r0, sp, #0 + mov r2, #1 + bl LoadFileFromRom + ldr r1, [sp] + ldr r0, _02025B3C ; =0x022A92C4 + bl HandleSir0Translation + ldr r1, _02025B40 ; =_0209AC18 + add r0, sp, #0 + mov r2, #1 + bl LoadFileFromRom + ldr r2, [sp] + ldr r0, _02025B44 ; =_020AFD04 + mov r1, #0 + str r2, [r0] + str r1, [r0, #4] + ldr r0, _02025B48 ; =0x022A92B4 + mov r1, #0xb + str r1, [r0, #4] + str r1, [r0, #8] + mov r1, #1 +#else ldr r0, [sp] ldr r2, _02025B70 ; =_022A7A54 add r3, r0, #4 @@ -32507,35 +33067,44 @@ sub_02025AD8: ; 0x02025AD8 #ifdef EUROPE str r0, [r1, #8] str r2, [r1, #4] -#else - str r0, [r1, #0xc] - str r2, [r1, #8] -#endif ldr r0, _02025B70 ; =_022A7A54 mov r2, #0xb -#ifdef EUROPE str r2, [r0, #0x10] str r2, [r0, #0x14] #else + str r0, [r1, #0xc] + str r2, [r1, #8] + ldr r0, _02025B70 ; =_022A7A54 + mov r2, #0xb str r2, [r0, #8] str r2, [r0, #0xc] #endif mov r0, #1 +#endif strb r0, [r1] add sp, sp, #8 ldmia sp!, {r3, pc} .align 2, 0 _02025B6C: .word _0209ABF0 +#ifdef JAPAN +_02025B34: .word 0x022A92C0 +_02025B38: .word _0209AC04 +_02025B3C: .word 0x022A92C4 +_02025B40: .word _0209AC18 +_02025B44: .word _020AFD04 +_02025B48: .word 0x022A92B4 +#else _02025B70: .word _022A7A54 _02025B74: .word _0209AC04 _02025B78: .word _0209AC18 _02025B7C: .word _020AFD04 +#endif arm_func_end sub_02025AD8 arm_func_start sub_02025B80 sub_02025B80: ; 0x02025B80 ldr r1, _02025B8C ; =_020AFD04 -#ifdef EUROPE +#if defined(EUROPE) || defined(JAPAN) str r0, [r1, #4] #else str r0, [r1, #8] @@ -32558,10 +33127,14 @@ sub_02025B90: ; 0x02025B90 add r0, sp, #0 bl sub_02027274 ldr r0, _02025C08 ; =_020AFD04 -#ifdef EUROPE +#if defined(EUROPE) ldr r1, [r0, #0x8] cmp r1, #0 strne r1, [r0, #0xc] +#elif defined(JAPAN) + ldr r1, [r0] + cmp r1, #0 + strne r1, [r0, #8] #else ldr r1, [r0, #0xc] cmp r1, #0 @@ -32577,10 +33150,14 @@ sub_02025B90: ; 0x02025B90 mov r2, #1 bl LoadFileFromRom ldr r0, _02025C08 ; =_020AFD04 +#if defined(EUROPE) ldr r1, [r0, #0x10] -#ifdef EUROPE str r1, [r0, #8] +#elif defined(JAPAN) + ldr r1, [r0, #0xc] + str r1, [r0] #else + ldr r1, [r0, #0x10] str r1, [r0, #0xc] #endif add sp, sp, #0x40 @@ -32597,7 +33174,11 @@ _02025C10: .word _020AFD14 sub_02025C14: ; 0x02025C14 stmdb sp!, {r3, lr} ldr r0, _02025C70 ; =_020AFD04 +#ifdef JAPAN + ldr r0, [r0, #0xc] +#else ldr r0, [r0, #0x10] +#endif cmp r0, #0 beq _02025C30 ldr r0, _02025C74 ; =_020AFD14 @@ -32605,25 +33186,37 @@ sub_02025C14: ; 0x02025C14 _02025C30: ldr r1, _02025C70 ; =_020AFD04 mov r2, #0 +#ifdef JAPAN + str r2, [r1, #0xc] + ldr r0, _02025C78 ; =_0209AC38 + str r2, [r1, #0x10] +#else str r2, [r1, #0x10] ldr r0, _02025C78 ; =_0209AC38 str r2, [r1, #0x14] +#endif bl sub_02027274 ldr r0, _02025C70 ; =_020AFD04 -#ifdef EUROPE +#if defined(EUROPE) ldr r1, [r0, #0xc] cmp r1, #0 strne r1, [r0, #8] + ldr r0, _02025C70 ; =_020AFD04 + mov r1, #0 + str r1, [r0, #0xc] +#elif defined(JAPAN) + ldr r1, [r0, #8] + cmp r1, #0 + strne r1, [r0] + ldr r0, _02025C70 ; =_020AFD04 + mov r1, #0 + str r1, [r0, #8] #else ldr r1, [r0, #4] cmp r1, #0 strne r1, [r0, #0xc] -#endif ldr r0, _02025C70 ; =_020AFD04 mov r1, #0 -#ifdef EUROPE - str r1, [r0, #0xc] -#else str r1, [r0, #4] #endif bl sub_02027170 @@ -32651,9 +33244,16 @@ sub_02025C7C: ; 0x02025C7C #else ldr r1, _02025D3C ; =_020AFD04 ldr r2, _02025D40 ; =_022A7A54 +#ifdef JAPAN + ldr r1, [r1, #4] + cmp r0, #0xf800 + ldr r3, [r2, r1, lsl #2] + ldr r1, [r3, #4] +#else ldr r4, [r1, #8] cmp r0, #0xf800 ldr r1, [r2, r4, lsl #2] +#endif #endif blo _02025CCC ldr r2, _02025D44 ; =0x0000FFFF @@ -32666,6 +33266,40 @@ sub_02025C7C: ; 0x02025C7C sub r2, r0, #0xf8 mov r0, #0xe0 mla r3, r2, r0, r3 +#ifdef JAPAN + mov r0, #0xc + mla r2, r3, r0, r1 + b _02025CF8 +_02025CCC: + ldr r2, [r3] + mov r4, #0 + sub lr, r2, #1 + mov r3, #0xc + b _02025CDC +_02025CB0: + add r2, r4, lr + add r2, r2, r2, lsr #31 + mov ip, r2, asr #1 + mla r2, ip, r3, r1 + ldrh r2, [r2, #4] + cmp r0, r2 + moveq r4, ip + beq _02025CE4 + cmp r2, r0 + addlo r4, ip, #1 + movhs lr, ip +_02025CDC: + cmp r4, lr + blt _02025CB0 +_02025CE4: + mov r2, #0xc + mla r2, r4, r2, r1 + ldrh r1, [r2, #4] + cmp r1, r0 + ldrne r2, _02025D4C ; =_0209AB60 +_02025CF8: + mov r0, r2 +#else mov r0, #0x1c mla r1, r3, r0, r1 b _02025D34 @@ -32701,6 +33335,7 @@ _02025D1C: ldrne r1, _02025D4C ; =_0209AB60 _02025D34: mov r0, r1 +#endif ldmia sp!, {r4, pc} .align 2, 0 _02025D3C: .word _020AFD04 @@ -32712,7 +33347,9 @@ _02025D40: .word _022A7A54 _02026024: .word _0209B09C_EU #endif _02025D44: .word 0x0000FFFF +#ifndef JAPAN _02025D48: .word _022A7A64 +#endif _02025D4C: .word _0209AB60 arm_func_end sub_02025C7C @@ -32739,6 +33376,147 @@ sub_02025D50: ; 0x02025D50 arm_func_start sub_02025D90 sub_02025D90: ; 0x02025D90 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} +#ifdef JAPAN + sub sp, sp, #0x28 + mov fp, r1 + mov r4, fp, lsr #0x1f + rsb r1, r4, fp, lsl #29 + add r5, r4, r1, ror #29 + ldr r6, _02025F58 ; =0x0209B488 + mov r4, #0x18 + mla r8, r5, r4, r6 + mov r1, fp, asr #2 + str r0, [sp] + add r0, fp, r1, lsr #29 + ldr r4, [sp, #0x50] + mov sb, r2 + str r0, [sp, #0x24] + add r0, sb, r4 + str r0, [sp, #8] + ldr r0, [sp, #0x54] + str r3, [sp, #4] + str r0, [sp, #0xc] + b _02025F44 +_02025DA4: + ldr r0, [sp] + ldr r4, [sp, #4] + bl sub_02028324 + cmp fp, #0 + mov r6, r0 + cmpge sb, #0 + blt _02025F40 + mov r0, sb, asr #2 + add r5, sb, r0, lsr #29 + ldr r0, [sp] + mov r7, r5, asr #3 + bl GetWindow + ldrb r2, [r0, #6] + mov r1, sb, lsr #0x1f + rsb r0, r1, sb, lsl #29 + add r1, r1, r0, ror #29 + mul r2, r7, r2 + ldr r0, [sp, #0x24] + add r0, r2, r0, asr #3 + add r2, r6, r0, lsl #6 + ldr r0, [sp] + add r7, r2, r1, lsl #3 + bl GetWindow + ldrb r0, [r0, #7] + cmp r0, r5, asr #3 + ldrgt r0, [sp, #4] + cmpgt r0, #0 + ble _02025F40 + mov sl, #0 + b _02025F38 +_02025E1C: + mov r6, #0 + mov r2, r4 + cmp r4, #8 + movge r2, #8 + mov r5, r6 + mov r3, r6 + b _02025E50 +_02025E38: + mov r1, r5, lsl #8 + ldr r0, [sp, #0xc] + orr r1, r1, r6, lsr #24 + orr r5, r1, r0, asr #31 + orr r6, r0, r6, lsl #8 + add r3, r3, #1 +_02025E50: + cmp r3, r2 + blt _02025E38 + mov r0, #0 + cmp r5, r0 + cmpeq r6, sl + beq _02025F30 + ldr r0, [r7] + str r0, [sp, #0x14] + ldr r0, [r7, #4] + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + bl sub_01FF9128 + ldr r2, [r8, #4] + ldr r3, [r8] + and ip, r5, r2 + ldr r2, [r8, #0x10] + and r3, r6, r3 + mov ip, ip, lsl r2 + rsb lr, r2, #0x20 + orr ip, ip, r3, lsr lr + sub lr, r2, #0x20 + and r2, r0, r3, lsl r2 + ldr r0, [sp, #0x14] + orr ip, ip, r3, lsl lr + orr r0, r0, r2 + str r0, [r7] + ldr r0, [sp, #0x18] + and r1, r1, ip + orr r0, r0, r1 + str r0, [r7, #4] + ldr r0, [r7, #0x40] + str r0, [sp, #0x1c] + ldr r0, [r7, #0x44] + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x20] + bl sub_01FF9128 + ldr r3, [r8, #8] + ldr r2, [r8, #0xc] + and r6, r6, r3 + and r3, r5, r2 + ldr r2, [r8, #0x14] + mov r5, r6, lsr r2 + and r6, r1, r3, lsr r2 + ldr r1, [sp, #0x20] + orr r1, r1, r6 + rsb r6, r2, #0x20 + orr r5, r5, r3, lsl r6 + sub r2, r2, #0x20 + orr r5, r5, r3, lsr r2 + and r2, r0, r5 + ldr r0, [sp, #0x1c] + orr r0, r0, r2 + str r0, [r7, #0x40] + str r1, [r7, #0x44] +_02025F30: + add r7, r7, #0x40 + sub r4, r4, #8 +_02025F38: + cmp r4, #0 + bgt _02025E1C +_02025F40: + add sb, sb, #1 +_02025F44: + ldr r0, [sp, #8] + cmp sb, r0 + blt _02025DA4 + add sp, sp, #0x28 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02025F58: .word 0x0209B488 +#else ldr r4, [sp, #0x28] mov sl, r1 mov sb, r2 @@ -32806,6 +33584,7 @@ _02025E78: cmp sb, r7 blt _02025DB4 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +#endif arm_func_end sub_02025D90 arm_func_start sub_02025E84 @@ -32963,7 +33742,7 @@ sub_02026020: ; 0x02026020 arm_func_start sub_02026038 sub_02026038: ; 0x02026038 ldr r1, _02026044 ; =_020AFD04 -#ifdef EUROPE +#if defined(EUROPE) || defined(JAPAN) str r0, [r1, #4] #else str r0, [r1, #8] @@ -33400,11 +34179,19 @@ sub_020264F8: ; 0x020264F8 mov r6, r1 mov r5, r2 bl sub_02025C7C +#ifdef JAPAN + ldrsh r0, [r0, #6] + cmp r0, #0xc + rsblt r0, r0, #0xc + addlt r0, r0, r0, lsr #31 + addlt r6, r6, r0, asr #1 +#else ldrb r0, [r0, #2] cmp r0, #0xc rsblo r0, r0, #0xc addlo r0, r0, r0, lsr #31 addlo r6, r6, r0, asr #1 +#endif ldrb r0, [sp, #0x18] bl sub_020265C4 str r0, [sp] @@ -33421,7 +34208,7 @@ sub_0202654C: ; 0x0202654C stmdb sp!, {r3, lr} ldr r1, _02026590 ; =_020AFD04 mov r3, r0 -#ifdef EUROPE +#if defined(EUROPE) || defined(JAPAN) ldr r1, [r1, #4] #else ldr r1, [r1, #8] @@ -33437,7 +34224,11 @@ sub_0202654C: ; 0x0202654C _0202657C: bl sub_02025C7C cmp r0, #0 +#ifdef JAPAN + ldrnesh r0, [r0, #6] +#else ldrneb r0, [r0, #2] +#endif moveq r0, #0 ldmia sp!, {r3, pc} .align 2, 0 @@ -33447,8 +34238,10 @@ _02026590: .word _020AFD04 arm_func_start sub_02026594 sub_02026594: ; 0x02026594 ldr r1, _020265A4 ; =_020AFD04 -#ifdef EUROPE +#if defined(EUROPE) ldr r1, [r1, #8] +#elif defined(JAPAN) + ldr r1, [r1] #else ldr r1, [r1, #0xc] #endif @@ -33610,6 +34403,460 @@ _02026764: arm_func_start sub_0202676C sub_0202676C: ; 0x0202676C stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} +#ifdef JAPAN + sub sp, sp, #0x34 + mov fp, r1 + ldr r1, [sp, #0x58] + str r0, [sp, #4] + mov sl, r2 + mov r5, r3 + str r1, [sp, #0x58] + bl GetWindow + ldr r1, _02026EA0 ; =0x020B114C + mov r4, r0 + ldr r0, [r1, #4] + cmp r0, #2 + blt _0202689C + ldr r0, [sp, #4] + mov r4, #1 + mov r1, fp + mov r2, sl + mov r3, r5 + str r4, [sp] + bl sub_02026C68 + b _02026E98 +_0202689C: + mov r0, r5 + bl sub_02025C7C + ldr r1, _02026EA4 ; =0x022A92B4 + str r0, [sp, #0x1c] + ldrb r1, [r1] + ldr sb, [r0] + cmp r1, #0 + beq _020268D8 + ldrb r0, [r0, #0xa] + tst r0, #2 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + str r0, [sp, #8] + b _020268E0 +_020268D8: + mov r0, #0 + str r0, [sp, #8] +_020268E0: + ldr r0, [sp, #0x1c] + ldrb r0, [r0, #0xa] + tst r0, #1 + beq _02026B70 + ldr r0, [sp, #4] + bl sub_0202760C + ldr r1, _02026EA0 ; =0x020B114C + mov r0, r0, lsl #1 + ldr r2, _02026EA8 ; =0x022A92B8 + ldr r1, [r1, #4] + str r0, [sp, #0x14] + ldr r5, [r2, r1, lsl #2] + b _02026920 +_02026914: + add sb, sb, #6 + add sl, sl, #1 + sub r5, r5, #1 +_02026920: + cmp sl, #0 + blt _02026914 + ldrb r1, [r4, #7] + add r0, sl, r5 + cmp r0, r1, lsl #3 + mov r0, fp, asr #2 + add r7, fp, r0, lsr #29 + ldr r0, [sp, #4] + rsbge r5, sl, r1, lsl #3 + mov r6, r7, asr #3 + bl sub_02027624 + mov r1, sl, asr #2 + add r1, sl, r1, lsr #29 + ldrb r3, [r4, #6] + mov r1, r1, asr #3 + mov r2, sl, lsr #0x1f + mul r3, r1, r3 + rsb r1, r2, sl, lsl #29 + add r8, r3, r7, asr #3 + mov r7, fp, lsr #0x1f + add r2, r2, r1, ror #29 + mov r1, r8, lsl #4 + add r8, r1, r2, lsl #1 + rsb r3, r7, fp, lsl #29 + add r1, r7, r3, ror #29 + add r3, r0, r8, lsl #2 + ldr r2, _02026EAC ; =0x0209B408 + mov r0, #0 + add r8, r2, r1, lsl #4 + str r0, [sp, #0x30] + b _02026B60 +_0202699C: + ldrh r1, [sb, #2] + ldrh r0, [sb] + orrs ip, r0, r1, lsl #16 + beq _02026A68 + ldrb r0, [r4, #6] + cmp r6, r0 + bge _02026A0C + ldr r1, [r8] + ldr r0, [r8, #8] + mov fp, r3 + str r0, [sp, #0x20] + and r2, ip, r1 + mov r7, #7 +_020269D0: + mov r0, r7, lsl #2 + rsb lr, r0, #0x1c + ldr r0, _02026EB0_JP ; =0x0209B32C + ldr r1, [r0, r7, lsl #2] + ldr r0, [sp, #0x20] + and r0, r1, r2, lsl r0 + mov r0, r0, lsr lr + ands r0, r0, #0xff + ldrneb r1, [fp] + orrne r0, r0, #0x20 + orrne r0, r1, r0 + strneb r0, [fp] + add fp, fp, #1 + subs r7, r7, #1 + bpl _020269D0 +_02026A0C: + ldrb r0, [r4, #6] + sub r0, r0, #1 + cmp r6, r0 + bge _02026A68 + ldr r1, [r8, #4] + ldr r0, [r8, #0xc] + and r1, ip, r1 + add r2, r3, #0x40 + mov r7, #7 +_02026A30: + mov fp, r7, lsl #2 + rsb ip, fp, #0x1c + ldr fp, _02026EB0_JP ; =0x0209B32C + ldr fp, [fp, r7, lsl #2] + and fp, fp, r1, lsr r0 + mov fp, fp, lsr ip + ands fp, fp, #0xff + ldrneb ip, [r2] + orrne fp, fp, #0x20 + orrne fp, ip, fp + strneb fp, [r2] + add r2, r2, #1 + subs r7, r7, #1 + bpl _02026A30 +_02026A68: + ldrh r7, [sb, #4] + cmp r7, #0 + beq _02026B34 + ldrb r0, [r4, #6] + sub r0, r0, #1 + cmp r6, r0 + bge _02026AD8 + ldr r1, [r8] + ldr r0, [r8, #8] + and r2, r7, r1 + str r0, [sp, #0x24] + add fp, r3, #0x40 + mov ip, #7 +_02026A9C: + mov r0, ip, lsl #2 + rsb lr, r0, #0x1c + ldr r0, _02026EB0_JP ; =0x0209B32C + ldr r1, [r0, ip, lsl #2] + ldr r0, [sp, #0x24] + and r0, r1, r2, lsl r0 + mov r0, r0, lsr lr + ands r0, r0, #0xff + ldrneb r1, [fp] + orrne r0, r0, #0x20 + orrne r0, r1, r0 + strneb r0, [fp] + add fp, fp, #1 + subs ip, ip, #1 + bpl _02026A9C +_02026AD8: + ldrb r0, [r4, #6] + sub r0, r0, #2 + cmp r6, r0 + bge _02026B34 + ldr r1, [r8, #4] + ldr r0, [r8, #0xc] + and r1, r7, r1 + add r2, r3, #0x80 + mov r7, #7 +_02026AFC: + mov fp, r7, lsl #2 + rsb ip, fp, #0x1c + ldr fp, _02026EB0_JP ; =0x0209B32C + ldr fp, [fp, r7, lsl #2] + and fp, fp, r1, lsr r0 + mov fp, fp, lsr ip + ands fp, fp, #0xff + ldrneb ip, [r2] + orrne fp, fp, #0x20 + orrne fp, ip, fp + strneb fp, [r2] + add r2, r2, #1 + subs r7, r7, #1 + bpl _02026AFC +_02026B34: + add sl, sl, #1 + mov r1, sl, lsr #0x1f + rsb r0, r1, sl, lsl #29 + adds r0, r1, r0, ror #29 + ldreq r0, [sp, #0x14] + add r3, r3, #8 + addeq r3, r3, r0, lsl #2 + ldr r0, [sp, #0x30] + add sb, sb, #6 + add r0, r0, #1 + str r0, [sp, #0x30] +_02026B60: + ldr r0, [sp, #0x30] + cmp r0, r5 + blt _0202699C + b _02026E90 +_02026B70: + ldr r0, [sp, #4] + bl sub_0202760C + ldr r1, _02026EA0 ; =0x020B114C + ldr r2, _02026EA8 ; =0x022A92B8 + ldr r1, [r1, #4] + str r0, [sp, #0x28] + cmp sl, #0 + ldr r5, [r2, r1, lsl #2] + mov r6, #0 + bge _02026BB4 + mov r6, #1 + b _02026BAC +_02026BA0: + add sb, sb, #6 + add sl, sl, #1 + sub r5, r5, #1 +_02026BAC: + cmp sl, #0 + blt _02026BA0 +_02026BB4: + ldr r0, [sp, #8] + cmp r0, #0 + beq _02026BD4 + cmp r6, #0 + subne r0, sb, #6 + strne r0, [sp, #0xc] + streq sb, [sp, #0xc] + b _02026BDC +_02026BD4: + str sb, [sp, #0xc] + mov r6, #0 +_02026BDC: + ldrb r1, [r4, #7] + add r0, sl, r5 + cmp r0, r1, lsl #3 + rsbge r5, sl, r1, lsl #3 + and r1, fp, #7 + str r1, [sp, #0x18] + rsb r1, r1, #7 + ldr r0, [sp, #4] + str r1, [sp, #0x10] + bl sub_02027624 + mov r2, sl, lsr #0x1f + rsb r1, r2, sl, lsl #29 + add r1, r2, r1, ror #29 + mov r2, fp, asr #2 + add r2, fp, r2, lsr #29 + mov r3, sl, asr #2 + add r3, sl, r3, lsr #29 + mov ip, r3, asr #3 + ldrb fp, [r4, #6] + mov r3, #0 + mul fp, ip, fp + add r2, fp, r2, asr #3 + mov r2, r2, lsl #4 + add r1, r2, r1, lsl #1 + add r1, r0, r1, lsl #2 + ldr r0, [sp, #0x18] + add fp, r1, r0 + b _02026E0C +_02026C4C: + cmp r6, #0 + mov r2, fp + ldr r0, [sp, #0x10] + beq _02026D0C + ldr ip, [sp, #0x58] + mov r1, #0 + and ip, ip, #0xff + mov lr, r1 + str ip, [sp, #0x2c] +_02026C70: + tst lr, #3 + ldreq ip, [sp, #0xc] + ldreqh r7, [sb], #2 + ldreqh r8, [ip], #2 + streq ip, [sp, #0xc] + movne r7, r7, lsl #0xc + movne r8, r8, lsl #0xc + movne r7, r7, lsr #0x10 + movne r8, r8, lsr #0x10 + tst r7, #0xf + ldrne r1, [sp, #0x2c] + strneb r1, [r2], #1 + movne r1, #1 + bne _02026CD8 + cmp r1, #0 + bne _02026CB8 + tst r8, #0xf + beq _02026CD4 +_02026CB8: + ldrb ip, [r2] + mov r1, #0 + cmp ip, #0 + moveq ip, #0x13 + streqb ip, [r2], #1 + addne r2, r2, #1 + b _02026CD8 +_02026CD4: + add r2, r2, #1 +_02026CD8: + subs r0, r0, #1 + add lr, lr, #1 + addmi r2, r2, #0x38 + movmi r0, #7 + cmp lr, #0xc + blt _02026C70 + cmp r1, #0 + beq _02026DEC + ldrb r0, [r2] + cmp r0, #0 + moveq r0, #0x13 + streqb r0, [r2] + b _02026DEC +_02026D0C: + ldr r1, [sp, #8] + cmp r1, #0 + beq _02026DA8 + ldr ip, [sp, #0x58] + mov r1, #0 + mov r6, r1 + and lr, ip, #0xff +_02026D28_JP: + tst r6, #3 + ldreqh r7, [sb], #2 + movne r7, r7, lsl #0xc + movne r7, r7, lsr #0x10 + tst r7, #0xf + strneb lr, [r2], #1 + movne r1, #1 + bne _02026D70 + cmp r1, #0 + beq _02026D6C + ldrb ip, [r2] + mov r1, #0 + cmp ip, #0 + moveq ip, #0x13 + streqb ip, [r2], #1 + addne r2, r2, #1 + b _02026D70 +_02026D6C: + add r2, r2, #1 +_02026D70: + subs r0, r0, #1 + add r6, r6, #1 + addmi r2, r2, #0x38 + movmi r0, #7 + cmp r6, #0xc + blt _02026D28_JP + cmp r1, #0 + beq _02026DA0 + ldrb r0, [r2] + cmp r0, #0 + moveq r0, #0x13 + streqb r0, [r2] +_02026DA0: + mov r6, #1 + b _02026DEC +_02026DA8: + ldr r1, [sp, #0x58] + mov ip, #0 + and r1, r1, #0xff + mov lr, #7 +_02026DB8: + tst ip, #3 + ldreqh r7, [sb], #2 + add ip, ip, #1 + movne r7, r7, lsl #0xc + movne r7, r7, lsr #0x10 + tst r7, #0xf + strneb r1, [r2], #1 + addeq r2, r2, #1 + subs r0, r0, #1 + addmi r2, r2, #0x38 + movmi r0, lr + cmp ip, #0xc + blt _02026DB8 +_02026DEC: + add sl, sl, #1 + mov r1, sl, lsr #0x1f + rsb r0, r1, sl, lsl #29 + adds r0, r1, r0, ror #29 + ldreq r0, [sp, #0x28] + add fp, fp, #8 + addeq fp, fp, r0, lsl #3 + add r3, r3, #1 +_02026E0C: + cmp r3, r5 + blt _02026C4C + cmp r6, #0 + beq _02026E90 + ldrb r0, [r4, #7] + add r1, sl, r5 + cmp r1, r0, lsl #3 + bge _02026E90 + mov r3, #0 + mov r2, #0x13 + mov r1, #7 +_02026E38_JP: + tst r3, #3 + ldreq r0, [sp, #0xc] + ldreqh r8, [r0], #2 + streq r0, [sp, #0xc] + movne r0, r8, lsl #0xc + movne r8, r0, lsr #0x10 + tst r8, #0xf + beq _02026E6C + ldrb r0, [fp] + cmp r0, #0 + streqb r2, [fp], #1 + addne fp, fp, #1 + b _02026E70 +_02026E6C: + add fp, fp, #1 +_02026E70: + ldr r0, [sp, #0x10] + add r3, r3, #1 + subs r0, r0, #1 + str r0, [sp, #0x10] + strmi r1, [sp, #0x10] + addmi fp, fp, #0x38 + cmp r3, #0xc + blt _02026E38_JP +_02026E90: + ldr r0, [sp, #0x1c] + ldrsh r0, [r0, #6] +_02026E98: + add sp, sp, #0x34 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02026EA0: .word 0x020B114C +_02026EA4: .word 0x022A92B4 +_02026EA8: .word 0x022A92B8 +_02026EAC: .word 0x0209B408 +_02026EB0_JP: .word 0x0209B32C +#else sub sp, sp, #0x2c str r0, [sp, #4] mov sl, r1 @@ -33881,10 +35128,92 @@ _02026B0C: .align 2, 0 _02026B14: .word _020AFD04 _02026B18: .word _022A7A5C +#endif arm_func_end sub_0202676C arm_func_start sub_02026B1C sub_02026B1C: ; 0x02026B1C +#ifdef JAPAN + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + mov sl, r0 + mov sb, r1 + mov r8, r2 + mov r7, r3 + bl sub_0202760C + mov fp, r0 + mov r0, sl + bl GetWindow + ldr r1, _02026C64 ; =_020AFD04 + ldrb r3, [r0, #6] + ldr r2, [r1] + add r1, r2, r7, lsl #2 + ldrsh r0, [r1, #2] + mov r4, r3, lsl #6 + ldrb r5, [r2, r7, lsl #2] + cmp r0, #0 + ldrb r6, [r1, #1] + movlt r0, #0 + blt _02026FCC + add r1, sp, #0 + mov r0, sl + bl sub_020282C8 + ldr r0, _02026C64 ; =_020AFD04 + mov r3, sb + ldr r1, [r0] + mov sl, r8 + cmp sb, #0 + add r0, r1, r7, lsl #2 + ldrsh r0, [r0, #2] + movlt r3, #0 + cmp r8, #0 + add r7, r1, r0 + movlt sl, #0 + add sb, sb, r5 + add r6, r8, r6 + b _02026FC0 +_02026F4C: + ldr r0, [sp, #4] + cmp sl, r0 + bge _02026FC8 + mov r1, sl, lsr #0x1f + rsb r0, r1, sl, lsl #29 + add r1, r1, r0, ror #29 + mov r2, sl, asr #2 + add r0, sl, r2, lsr #29 + add r1, fp, r1, lsl #3 + mov r0, r0, asr #3 + mla r8, r0, r4, r1 + mov r2, r3 + b _02026FB4 +_02026F80: + ldr r0, [sp] + cmp r2, r0 + bge _02026FBC + mov r1, r2, lsr #0x1f + rsb r0, r1, r2, lsl #29 + mov ip, r2, asr #2 + add ip, r2, ip, lsr #29 + add r0, r1, r0, ror #29 + ldrsb r1, [r7], #1 + mov ip, ip, asr #3 + add r0, r8, r0 + strb r1, [r0, ip, lsl #6] + add r2, r2, #1 +_02026FB4: + cmp r2, sb + blt _02026F80 +_02026FBC: + add sl, sl, #1 +_02026FC0: + cmp sl, r6 + blt _02026F4C +_02026FC8: + mov r0, r5 +_02026FCC: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +#else stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} sub sp, sp, #8 ldr r5, _02026C64 ; =_020AFD04 @@ -33982,6 +35311,7 @@ _02026C50: _02026C5C: add sp, sp, #8 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +#endif .align 2, 0 _02026C64: .word _020AFD04 arm_func_end sub_02026B1C @@ -33995,7 +35325,7 @@ sub_02026C68: ; 0x02026C68 bhi _02026CA4 ldr ip, _02026E38 ; =_020AFD04 sub r3, r3, #0x40 -#ifdef EUROPE +#if defined(EUROPE) || defined(JAPAN) ldr ip, [ip, #4] #else ldr ip, [ip, #8] @@ -34009,7 +35339,7 @@ sub_02026C68: ; 0x02026C68 b _02026E18 _02026CA4: ldr ip, _02026E38 ; =_020AFD04 -#ifdef EUROPE +#if defined(EUROPE) || defined(JAPAN) ldr ip, [ip, #4] #else ldr ip, [ip, #8] @@ -34180,8 +35510,10 @@ _02026E18: ldrb ip, [sp, #8] cmp ip, #0 ldreq r0, _02026E38 ; =_020AFD04 -#ifdef EUROPE +#if defined(EUROPE) ldreq r0, [r0, #8] +#elif defined(JAPAN) + ldreq r0, [r0] #else ldreq r0, [r0, #0xc] #endif @@ -34214,6 +35546,22 @@ sub_02026E3C: ; 0x02026E3C arm_func_start sub_02026E78 sub_02026E78: ; 0x02026E78 +#ifdef JAPAN + stmdb sp!, {r3, lr} + ldr r3, _02026FEC ; =_020AFD4C + mov ip, #1 + ldr r0, _02026FF0 ; =_022A88DC + mov r1, #0 + mov r2, #0x1180 + strb ip, [r3, #4] + bl memset + ldr r0, _02026FF4 ; =_022A7A6C + mov r1, #0 + mov r2, #0x370 + bl memset + mov r1, #0 + ldr r0, _02026FFC ; =_022A7AC8 +#else stmdb sp!, {r3, r4, r5, r6, r7, lr} ldr r3, _02026FEC ; =_020AFD4C mov r4, #1 @@ -34239,12 +35587,31 @@ _02026EB0: blt _02026EB0 ldr r0, _02026FFC ; =_022A7AC8 mov r1, #0 +#endif ldr r2, _02027000 ; =0x04000014 ldr r3, _02027004 ; =0x0600D800 str r1, [sp] bl sub_0200B2C4 mov r1, #0 ldr r0, _02027008 ; =_022A7B00 +#ifdef JAPAN + str r1, [sp] + ldr r2, _0202700C ; =0x04001010 + ldr r3, _02027010 ; =0x0620D000 + bl sub_0200B2C4 + mov r1, #0 + str r1, [sp] + ldr r0, _02027014 ; =_022A7AE4 + ldr r2, _02027018 ; =0x04001014 + ldr r3, _0202701C ; =0x0620D800 + bl sub_0200B2C4 + mov r0, #0 + str r0, [sp] + ldr r0, _02027020 ; =_022A7AA0 + mov r1, #1 + mov r2, #0x200 + ldr r3, _02027024 ; =0x06882000 +#else ldr r2, _0202700C ; =0x04001010 ldr r3, _02027010 ; =0x0620D000 str r1, [sp] @@ -34261,6 +35628,7 @@ _02026EB0: ldr r3, _02027024 ; =0x06882000 mov r1, #1 mov r2, #0x200 +#endif bl sub_0200A124 mov r0, #0 str r0, [sp] @@ -34279,13 +35647,23 @@ _02026EB0: mov r2, #0 ldr r1, _02026FF4 ; =_022A7A6C ldr r0, _02027038 ; =_022A7EDC +#ifdef JAPAN + strb r2, [r1] + strb r2, [r1, #4] + strb r2, [r1, #2] +#else strb r2, [r1, #4] strb r2, [r1] strb r2, [r1, #1] +#endif mov r1, #0xa00 bl MemZero mov r2, #0 +#ifdef JAPAN + ldr r1, _0202737C ; =0x022A92C8 +#else ldr r1, _02026FF4 ; =_022A7A6C +#endif ldr r0, _0202703C ; =_022A7AB4 strh r2, [r1, #6] mov r1, #0x14 @@ -34297,22 +35675,38 @@ _02026EB0: sub r1, r2, #3 strh r2, [r0, #8] strh r2, [r0, #0xa] +#ifdef JAPAN + strb r1, [r0, #1] +#else strb r1, [r0, #3] +#endif bl LoadCursors bl LoadAlert bl sub_0202A124 +#ifdef JAPAN + ldr r1, _02026FF4 ; =_022A7A6C + mov r2, #0 + ldr r0, _02026FEC ; =_020AFD4C +#else mov r2, #0 ldr r1, _02026FF4 ; =_022A7A6C ldr r0, _02026FEC ; =_020AFD4C +#endif strh r2, [r1, #6] str r2, [r0, #8] bl sub_0202903C +#ifdef JAPAN + ldmia sp!, {r3, pc} +#else ldmia sp!, {r3, r4, r5, r6, r7, pc} +#endif .align 2, 0 _02026FEC: .word _020AFD4C _02026FF0: .word _022A88DC _02026FF4: .word _022A7A6C +#ifndef JAPAN _02026FF8: .word _022A7B1C +#endif _02026FFC: .word _022A7AC8 _02027000: .word 0x04000014 _02027004: .word 0x0600D800 @@ -34328,6 +35722,9 @@ _02027028: .word _022A7A8C _0202702C: .word 0x06898000 _02027030: .word _022A7A78 _02027034: .word 0x0689A000 +#ifdef JAPAN +_0202737C: .word 0x022A92C8 +#endif _02027038: .word _022A7EDC _0202703C: .word _022A7AB4 arm_func_end sub_02026E78 @@ -34394,9 +35791,15 @@ _020270D4: mov r1, #1 cmp r0, #0 ldreq r0, _02027144 ; =_022A7A6C +#ifdef JAPAN + streqb r1, [r0] + ldrne r0, _02027144 ; =_022A7A6C + strneb r1, [r0, #4] +#else streqb r1, [r0, #4] ldrne r0, _02027144 ; =_022A7A6C strneb r1, [r0] +#endif add sp, sp, #0xc ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} .align 2, 0 @@ -34430,7 +35833,11 @@ _0202716C: .word _020AFD4C arm_func_start sub_02027170 sub_02027170: ; 0x02027170 ldr r0, _0202717C ; =_022A7A6C +#ifdef JAPAN + ldrb r0, [r0, #3] +#else ldrb r0, [r0, #2] +#endif bx lr .align 2, 0 _0202717C: .word _022A7A6C @@ -34475,7 +35882,11 @@ _020271C4: mov r0, r4 bl sub_02027390 ldr r0, _02027220 ; =_022A7A6C +#ifdef JAPAN + strb r4, [r0, #3] +#else strb r4, [r0, #2] +#endif add sp, sp, #8 ldmia sp!, {r4, pc} .align 2, 0 @@ -34572,8 +35983,13 @@ _02027300: bl UnloadFile ldr r0, _02027378 ; =_022A7A6C mov r1, #1 +#ifdef JAPAN + strb r1, [r0] + strb r1, [r0, #4] +#else strb r1, [r0, #4] strb r1, [r0] +#endif add sp, sp, #0x14 ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} .align 2, 0 @@ -34730,9 +36146,15 @@ _02027530: bl UnloadFile ldr r0, _020275BC ; =_022A7A6C mov r1, #1 +#ifdef JAPAN + strb r1, [r0] + strb r1, [r0, #4] + strb r1, [r0, #2] +#else strb r1, [r0, #4] strb r1, [r0] strb r1, [r0, #1] +#endif add sp, sp, #0x1c ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} .align 2, 0 @@ -34792,6 +36214,19 @@ sub_0202760C: ; 0x0202760C _02027620: .word _022A88F0 arm_func_end sub_0202760C +#ifdef JAPAN + arm_func_start sub_0202796C_JP +sub_0202796C_JP: ; 0x0202796C + mov r1, #0xe0 + mul r1, r0, r1 + ldr r0, _02027980 ; =0x022AA0FC + ldr r0, [r0, r1] + bx lr + .align 2, 0 +_02027980: .word 0x022AA0FC + arm_func_end sub_0202796C_JP +#endif + arm_func_start sub_02027624 sub_02027624: ; 0x02027624 ldr r2, _02027644 ; =_022A88DC @@ -34860,7 +36295,11 @@ _020276DC: mov r0, r0, lsl #0x18 mov r4, r0, asr #0x18 add r5, r5, #0xe0 +#ifdef JAPAN + add r6, r6, #0x2c +#else add r6, r6, #0x30 +#endif _020276FC: cmp r4, #0x14 blt _020276DC @@ -34992,13 +36431,21 @@ sub_020278C4: ; 0x020278C4 mul r2, r0, r1 ldr ip, _02027964 ; =_022A7A6C ldr r4, _02027968 ; =_022A8990 +#ifdef JAPAN + ldrsb r3, [ip, #1] +#else ldrsb r3, [ip, #3] +#endif mvn r1, #1 ldrsb r8, [r4, r2] cmp r3, r1 ldreq r1, _0202796C ; =_022A8991 mov r7, r3 +#ifdef JAPAN + streqb r0, [ip, #1] +#else streqb r0, [ip, #3] +#endif streqb r3, [r1, r2] ldmeqia sp!, {r4, r5, r6, r7, r8, pc} mov ip, r1 @@ -35021,7 +36468,11 @@ _0202792C: ldreq ip, _0202796C ; =_022A8991 ldreq r1, _02027964 ; =_022A7A6C streqb r3, [ip, r2] +#ifdef JAPAN + streqb r0, [r1, #1] +#else streqb r0, [r1, #3] +#endif ldmeqia sp!, {r4, r5, r6, r7, r8, pc} mov r3, #0xe0 mul r3, r1, r3 @@ -35042,7 +36493,11 @@ sub_02027974: ; 0x02027974 stmdb sp!, {r3, r4, r5, lr} ldr r1, _020279FC ; =_022A7A6C mvn r5, #1 +#ifdef JAPAN + ldrsb r4, [r1, #1] +#else ldrsb r4, [r1, #3] +#endif mov r1, r5 ldr ip, _02027A00 ; =_022A88DC mov r2, #0xe0 @@ -35066,7 +36521,11 @@ _020279B4: ldr r3, _02027A04 ; =_022A8991 ldr r0, _020279FC ; =_022A7A6C ldrsb r1, [r3, r2] +#ifdef JAPAN + strb r1, [r0, #1] +#else strb r1, [r0, #3] +#endif b _020279F4 _020279DC: mov r0, #0xe0 @@ -35141,12 +36600,20 @@ sub_02027AA0: ; 0x02027AA0 cmp r0, #1 ldreq r0, _02027AE4 ; =_020AFD4C moveq r1, #1 +#ifdef JAPAN + streqb r1, [r0, #3] +#else streqb r1, [r0] +#endif bxeq lr cmp r0, #2 ldreq r0, _02027AE4 ; =_020AFD4C moveq r1, #1 +#ifdef JAPAN + streqb r1, [r0] +#else streqb r1, [r0, #3] +#endif bxeq lr ldr r0, _02027AE8 ; =_020AFD9C ldr r1, _02027AEC ; =_020AFD94 @@ -35219,7 +36686,11 @@ sub_02027B88: ; 0x02027B88 stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} sub sp, sp, #8 ldr r0, _02027E14 ; =_022A7A6C +#ifdef JAPAN + ldrsb r2, [r0, #1] +#else ldrsb r2, [r0, #3] +#endif b _02027E00 _02027B9C: ldr r1, _02027E18 ; =_022A88DC @@ -35382,7 +36853,11 @@ _02027DC0: _02027DF0: ldr r0, _02027E2C ; =_020AFD4C mov r1, #1 +#ifdef JAPAN + strb r1, [r0] +#else strb r1, [r0, #3] +#endif _02027DFC: ldrsb r2, [r4, #0xb5] _02027E00: @@ -35471,7 +36946,11 @@ _02027F20: bl sub_02027B88 ldr r0, _0202807C ; =_020AFD4C mov r1, #1 +#ifdef JAPAN + strb r1, [r0] +#else strb r1, [r0, #3] +#endif b _02028064 _02027F34: cmp r1, #0 @@ -36176,7 +37655,11 @@ sub_020287E0: ; 0x020287E0 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} ldr r1, _02028840 ; =_022A7A6C mov r6, r0 +#ifdef JAPAN + ldrsb r0, [r1, #1] +#else ldrsb r0, [r1, #3] +#endif mov r1, #0 mov sb, #1 ldr r4, _02028844 ; =_022A88DC @@ -36210,7 +37693,11 @@ sub_02028848: ; 0x02028848 stmdb sp!, {r3, r4, r5, r6, r7, lr} ldr r0, _020288D0 ; =_022A7A6C ldr r6, _020288D4 ; =_022A88DC +#ifdef JAPAN + ldrsb r0, [r0, #1] +#else ldrsb r0, [r0, #3] +#endif mov r5, #0xe0 mvn r4, #1 b _02028888 @@ -36385,13 +37872,21 @@ sub_02028A64: ; 0x02028A64 stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} ldr r1, _02028DE8 ; =_020AFD4C movs r4, r0 +#ifdef JAPAN + strb r4, [r1, #2] +#else strb r4, [r1, #4] +#endif mov r5, #8 beq _02028D58 ldr r0, _02028DEC ; =_022A7A6C mov r1, #0 +#ifdef JAPAN + ldrsb r3, [r0, #1] +#else ldrsb r3, [r0, #3] strb r3, [r0, #5] +#endif strh r1, [r0, #6] b _02028BF4 _02028A94: @@ -36400,11 +37895,20 @@ _02028A94: mla r6, r3, r0, r1 ldrsb r1, [r6, #0xb6] ldr r2, _02028DF4 ; =_022A7B1C +#ifdef JAPAN + mov r0, #0x2c +#else mov r0, #0x30 +#endif mla r7, r3, r0, r2 cmp r1, #0 +#ifdef JAPAN + mov r0, #0 + beq _02028BDC +#else beq _02028BDC mov r0, #0 +#endif strb r0, [r6, #0xb7] ldrb r0, [r6, #8] mov r1, #1 @@ -36481,24 +37985,38 @@ _02028BC4: bl sub_02029B0C b _02028BEC _02028BDC: +#ifdef JAPAN + strb r1, [r7] +#else mov r1, #0 add r0, r7, #4 strb r1, [r7] bl sub_02029A50 +#endif _02028BEC: ldrsb r3, [r6, #0xb5] +#ifndef JAPAN strb r3, [r7, #0x2c] +#endif _02028BF4: mvn r0, #1 cmp r3, r0 bne _02028A94 ldr r1, _02028DEC ; =_022A7A6C +#ifdef JAPAN + ldrb r0, [r1] +#else ldrb r0, [r1, #4] +#endif cmp r0, #0 beq _02028C20 ldr r0, _02028E0C ; =_022A7AA0 mov r2, #0 +#ifdef JAPAN + strb r2, [r1] +#else strb r2, [r1, #4] +#endif bl sub_0200A174 _02028C20: ldr r1, _02028DEC ; =_022A7A6C @@ -36507,16 +38025,28 @@ _02028C20: beq _02028C40 ldr r0, _02028E10 ; =_022A7A8C mov r2, #0 +#ifdef JAPAN + strb r2, [r1, #4] +#else strb r2, [r1] +#endif bl sub_0200A174 _02028C40: ldr r1, _02028DEC ; =_022A7A6C +#ifdef JAPAN + ldrb r0, [r1, #2] +#else ldrb r0, [r1, #1] +#endif cmp r0, #0 beq _02028C60 ldr r0, _02028E14 ; =_022A7A78 mov r2, #0 +#ifdef JAPAN + strb r2, [r1, #2] +#else strb r2, [r1, #1] +#endif bl sub_0200A174 _02028C60: mov r8, #0 @@ -36566,27 +38096,65 @@ _02028CB8: _02028D08: bl sub_02028FC8 ldr r0, _02028DE8 ; =_020AFD4C +#ifdef JAPAN + ldrb r0, [r0, #3] +#else ldrb r0, [r0] +#endif cmp r0, #0 beq _02028D30 ldr r0, _02028E24 ; =_022A7B00 bl sub_0200B330 ldr r0, _02028DE8 ; =_020AFD4C mov r1, #0 +#ifdef JAPAN + strb r1, [r0, #3] +#else strb r1, [r0] +#endif _02028D30: ldr r0, _02028DE8 ; =_020AFD4C +#ifdef JAPAN + ldrb r0, [r0] +#else ldrb r0, [r0, #3] +#endif cmp r0, #0 beq _02028DD4 ldr r0, _02028E28 ; =_022A7AE4 bl sub_0200B330 ldr r0, _02028DE8 ; =_020AFD4C mov r1, #0 +#ifdef JAPAN + strb r1, [r0] +#else strb r1, [r0, #3] +#endif b _02028DD4 _02028D58: ldr r0, _02028DEC ; =_022A7A6C +#ifdef JAPAN + ldr r6, _02028DF0 ; =_022A88DC + ldrsb r2, [r0, #1] + ldr r5, _02028DF4 ; =_022A7B1C + mov sb, #0xe0 + mov sl, #0x2c + mvn r8, #1 + b _02028D90 +_02028D70: + mul r1, r2, sl + ldrb r0, [r5, r1] + mla r7, r2, sb, r6 + cmp r0, #0 + add r0, r5, r1 + beq _02028D8C + add r0, r0, #4 + bl sub_02029B0C +_02028D8C: + ldrsb r2, [r7, #0xb5] +_02028D90: + cmp r2, r8 +#else ldr r7, _02028DF4 ; =_022A7B1C ldrsb r0, [r0, #5] mov r6, #0x30 @@ -36604,6 +38172,7 @@ _02028D8C: ldrsb r0, [r8, #0x2c] _02028D90: cmp r0, r5 +#endif bne _02028D70 ldr r0, _02028E18 ; =_020AFD9C ldr r1, _02028E1C ; =_020AFD94 @@ -42688,8 +44257,13 @@ _0202DE54: mov r2, #0 str r2, [r7, #0x1a0] strb r2, [r7, #0x1a4] +#ifdef JAPAN + add r0, r7, #0x1ac + mov r1, #0x3bc +#else ldr r1, _0202DEF0 ; =0x00003C65 add r0, r7, #0x1ac +#endif strb r2, [r7, #0x1a5] bl GetStringFromFileVeneer ldr r1, _0202DEF4 ; =0x00003C66 @@ -42722,9 +44296,11 @@ _0202DE54: .align 2, 0 _0202DEE8: .word UpdateDebugMenu _0202DEEC: .word DEBUG_MENU_DEFAULT_WINDOW_PARAMS -#ifdef EUROPE +#if defined(EUROPE) _0202DEF0: .word 0x00003C67 _0202DEF4: .word 0x00003C68 +#elif defined(JAPAN) +_0202DEF4: .word 0x000003BD #else _0202DEF0: .word 0x00003C65 _0202DEF4: .word 0x00003C66 @@ -43739,6 +45315,38 @@ _0202ECC4: mov r0, r4 bl sub_0202EE88 _0202ECD4: +#ifdef JAPAN + ldr r0, [r6, #8] + cmp r0, #0 + blt _0202EDC8 + tst sb, #1 + beq _0202EDC8 + add r1, r5, #0x108 + add r2, r1, #0x1400 + mov r1, #0x18 + mla r7, r0, r1, r2 + ldr sb, [r5, #0x430] + mov r8, #0 + ldr r1, _0202EE7C ; =0x0000040C + b _0202F078 +_0202F05C: + mla r2, r8, r1, r5 + add r2, r2, #0x400 + ldrh r3, [r7, #2] + ldrh r2, [r2, #0x34] + cmp r3, r2 + beq _0202F080 + add r8, r8, #1 +_0202F078: + cmp r8, sb + blt _0202F05C +_0202F080: + cmp sb, #3 + bge _0202EDBC + ldrh r1, [r7, #2] + cmp r1, #0 + addne r0, r5, r0 +#else add r0, r5, #0x1000 ldr r0, [r0, #0x464] cmp r0, #5 @@ -43775,6 +45383,7 @@ _0202ED44: ldrh r0, [r8, #2] cmp r0, #0 addne r0, r5, r1 +#endif addne r0, r0, #0x1000 ldrneb r0, [r0, #0x568] cmpne r0, #0 @@ -43787,10 +45396,17 @@ _0202ED44: add r0, r0, #1 str r0, [r5, #0x430] mov r3, #0 +#ifdef JAPAN + ldrh r8, [r7, #2] + add r0, r6, #0x400 + mov r1, r7 + strh r8, [r0, #0xc] +#else ldrh sb, [r8, #2] add r0, r6, #0x400 mov r1, r8 strh sb, [r0, #0xc] +#endif str r3, [r6, #0x410] sub r3, r3, #1 add r0, r2, #0x400 @@ -43805,7 +45421,13 @@ _0202EDBC: mov r1, #2 bl PlayWindowInputSound _0202EDC8: +#ifdef JAPAN + add r0, r5, #0x1000 + ldr r0, [r0, #0x464] + cmp r0, #5 +#else cmp r7, #0 +#endif bne _0202EE28 ldr r0, [sp, #0x14] tst r0, #2 @@ -43857,7 +45479,11 @@ _0202EE74: ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _0202EE7C: .word 0x0000040C +#ifdef JAPAN +_0202EE80: .word 0x000003B7 +#else _0202EE80: .word 0x000001AF +#endif _0202EE84: .word 0x00000408 arm_func_end UpdateScrollBox @@ -44017,6 +45643,164 @@ _0202F0A8: .word 0x0000C406 _0202F0AC: .word 0x0000C506 arm_func_end sub_0202EE88 +#ifdef JAPAN + arm_func_start sub_0202F1CC_JP +sub_0202F1CC_JP: ; 0x0202F1CC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x124 + mov sl, r0 + ldr r5, [sl, #0xc] + ldrsb r0, [sl, #0x10] + add r1, r5, #0x34 + ldr r4, [r5, #0x430] + ldr r2, _0202F3E8 ; =0x0000040C + add r1, r1, #0x400 + add r3, r5, #0x1000 + mla r6, r4, r2, r1 + ldr r4, [r3, #0x4c0] + bl sub_02027B1C + ldrsb r1, [sl, #0x10] + add r0, sp, #8 + bl sub_02025E84 + add r0, r5, #4 + mov r1, #0 + bl sub_020328D8 + mov r2, r0 + add r0, sp, #8 + mov r1, #4 + bl sub_0202614C + add r0, r5, r4, lsl #2 + add r0, r0, #0x1000 + ldr r2, [r0, #0x4e4] + ldr r1, _0202F3EC ; =0x0000C406 + add r0, sp, #8 + bl sub_02026194 + add r0, sp, #8 + bl sub_02026204 + add r1, r5, #0x108 + add r0, sp, #8 + add r1, r1, #0x1400 + bl sub_020261F4 + add r1, r5, #0x1000 + str r0, [r1, #0x504] + ldr r0, [r5, #0x430] + cmp r0, #3 + bge _0202F2E4 + mov r8, #0 + mov r0, #1 + mov lr, r8 + ldr sb, _0202F3E8 ; =0x0000040C + mov ip, #0x18 + b _0202F2D4 +_0202F284: + mla r2, r8, ip, r5 + add r3, r2, #0x1500 + mov r4, r0 + mov r2, lr + ldrh r3, [r3, #0xa] + ldr r7, [r5, #0x430] + b _0202F2BC +_0202F2A0: + mla fp, r2, sb, r5 + add fp, fp, #0x400 + ldrh fp, [fp, #0x34] + cmp r3, fp + moveq r4, #0 + beq _0202F2C4 + add r2, r2, #1 +_0202F2BC: + cmp r2, r7 + blt _0202F2A0 +_0202F2C4: + add r2, r5, r8 + add r2, r2, #0x1000 + strb r4, [r2, #0x568] + add r8, r8, #1 +_0202F2D4: + ldr r3, [r1, #0x504] + cmp r8, r3 + blt _0202F284 + b _0202F30C +_0202F2E4: + mov r4, #0 + mov r2, r4 + b _0202F300 +_0202F2F0: + add r0, r5, r4 + add r0, r0, #0x1000 + strb r2, [r0, #0x568] + add r4, r4, #1 +_0202F300: + ldr r3, [r1, #0x504] + cmp r4, r3 + blt _0202F2F0 +_0202F30C: + add r0, r5, #0x108 + cmp r3, #0 + add r7, r0, #0x1400 + mov r8, #0 + ble _0202F3CC + add r4, r5, #0x1000 + mov fp, #0x2e + b _0202F3C0_JP +_0202F32C: + add r0, r5, r8 + add r0, r0, #0x1000 + ldrb r0, [r0, #0x568] + ldrsb r1, [sl, #0x10] + cmp r0, #0 + movne sb, #0x4c + add r0, sp, #8 + moveq sb, #0x57 + bl sub_02025E84 + add r0, sp, #8 + ldmib r7, {r1, r2} + bl sub_0202614C + ldr r1, _0202F3F0 ; =0x0000C506 + ldr r2, [r7, #0x14] + add r0, sp, #8 + bl sub_02026194 + mov r1, sb + add r0, sp, #8 + bl sub_02026174 + add r0, sp, #8 + bl sub_020261F4 + ldr r0, [r6, #8] + cmp r0, r8 + bne _0202F3B8 + ldr r0, [r7, #0xc] + ldr r1, [r7, #4] + cmp r1, r0 + bge _0202F3B8 + sub r3, r0, r1 + ldr r2, [r7, #8] + ldr r0, [r7, #0x10] + sub r0, r0, r2 + stmia sp, {r0, fp} + ldrsb r0, [sl, #0x10] + bl sub_02025D90 +_0202F3B8: + add r8, r8, #1 + add r7, r7, #0x18 +_0202F3C0_JP: + ldr r0, [r4, #0x504] + cmp r8, r0 + blt _0202F32C +_0202F3CC: + ldrsb r1, [sl, #0x10] + add r0, r5, #4 + bl sub_0202A03C + ldrsb r0, [sl, #0x10] + bl sub_02027AF0 + add sp, sp, #0x124 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0202F3E8: .word 0x0000040C +_0202F3EC: .word 0x0000C406 +_0202F3F0: .word 0x0000C506 + arm_func_end sub_0202F1CC_JP +#endif + arm_func_start CreateDialogueBox CreateDialogueBox: ; 0x0202F0B0 stmdb sp!, {r4, r5, r6, lr} @@ -45896,6 +47680,26 @@ IsAdvancedTextBoxActive: ; 0x020308C4 ldmia sp!, {r3, pc} arm_func_end IsAdvancedTextBoxActive +#ifdef JAPAN + arm_func_start sub_02030940 +sub_02030940: ; 0x02030940 + stmdb sp!, {r3, lr} + bl GetWindowContents + ldrb r1, [r0, #0x1c0] + cmp r1, #0 + beq _02030970 + ldrb r1, [r0, #0x1c1] + cmp r1, #0 + mvnne r0, #0 + ldmneia sp!, {r3, pc} + add r0, r0, #4 + bl sub_02032578 + ldmia sp!, {r3, pc} +_02030970: + mvn r0, #0 + ldmia sp!, {r3, pc} + arm_func_end sub_02030940 +#else arm_func_start sub_020308E4 sub_020308E4: ; 0x020308E4 stmdb sp!, {r3, lr} @@ -45908,6 +47712,7 @@ sub_020308E4: ; 0x020308E4 moveq r0, #0 ldmia sp!, {r3, pc} arm_func_end sub_020308E4 +#endif arm_func_start sub_02030908 sub_02030908: ; 0x02030908 @@ -45928,6 +47733,7 @@ _02030938: ldmia sp!, {r3, pc} arm_func_end sub_02030908 +#ifndef JAPAN arm_func_start sub_02030940 sub_02030940: ; 0x02030940 stmdb sp!, {r3, lr} @@ -45946,6 +47752,7 @@ _02030970: mvn r0, #0 ldmia sp!, {r3, pc} arm_func_end sub_02030940 +#endif arm_func_start sub_02030978 sub_02030978: ; 0x02030978 @@ -51983,7 +53790,11 @@ _020358A8: mov r0, #0 str r0, [r3, #0xc] ldr r0, [r2, #4] +#ifdef JAPAN + mov r1, #0x38c +#else mov r1, #0x184 +#endif strh r1, [r0, #0x14] ldr r0, [r2, #4] mov r1, #0x10 @@ -52076,7 +53887,11 @@ _020359FC: ldr r3, _02035CCC ; =_020AFDD0 ldr r1, _02035CD8 ; =0x00000408 ldr r4, [r3, #4] +#ifdef JAPAN + sub r2, r1, #0x5b +#else ldr r2, _02035CDC ; =0x000001A5 +#endif strb r0, [r4, #1] ldr r0, [r3, #4] mov r3, #0 @@ -52266,7 +54081,9 @@ _02035CCC: .word _020AFDD0 _02035CD0: .word _0209B0EC _02035CD4: .word _0209B134 _02035CD8: .word 0x00000408 +#ifndef JAPAN _02035CDC: .word 0x000001A5 +#endif _02035CE0: .word _0209B11C arm_func_end sub_020357F0 @@ -52425,7 +54242,11 @@ _02035EEC: mov r0, #0 str r0, [r3, #0xc] ldr r0, [r2, #4] +#ifdef JAPAN + mov r1, #0x3b0 +#else mov r1, #0x1a8 +#endif strh r1, [r0, #0x14] ldr r0, [r2, #4] mov r1, #0x10 @@ -52537,7 +54358,11 @@ _0203608C: ldr r3, _0203630C ; =_020AFDD8 ldr r1, _02036318 ; =0x00000408 ldr r4, [r3, #4] +#ifdef JAPAN + sub r2, r1, #0x5b +#else ldr r2, _0203631C ; =0x000001A5 +#endif strb r0, [r4, #1] ldr r0, [r3, #4] mov r3, #0 @@ -52708,7 +54533,9 @@ _0203630C: .word _020AFDD8 _02036310: .word _0209B1C8 _02036314: .word _0209B1F0 _02036318: .word 0x00000408 +#ifndef JAPAN _0203631C: .word 0x000001A5 +#endif _02036320: .word _0209B1D8 arm_func_end sub_02035E38 @@ -53116,9 +54943,15 @@ ShowKeyboard: ; 0x020367F0 bl StrcpySimple _02036850: ldr r0, _02036CB0 ; =_020AFDF0 +#ifdef JAPAN + cmp r4, #0 + ldr r1, [r0] + mov r2, #0 +#else mov r2, #0 ldr r1, [r0] cmp r4, #0 +#endif strb r2, [r1, #0x11] ldr r1, [r0] and r3, r6, #0xff @@ -53127,16 +54960,22 @@ _02036850: movne r2, #1 strneb r2, [r1, #0x11] ldrne r0, [r0] +#ifdef JAPAN + mov r4, #0 +#endif strneb r2, [r0, #0x12] ldr r0, _02036CB0 ; =_020AFDF0 mov r2, #0 ldr r1, [r0] str r3, [r1, #0xc] ldr r1, [r0] +#ifdef JAPAN + ldr r3, _02036CB0 ; =_020AFDF0 +#endif strb r2, [r1, #0x1d] ldr r1, [r0] strb r2, [r1, #0x1e] -#ifdef EUROPE +#if defined(EUROPE) ldr r2, [r0] ldr r1, [r2, #0xc] cmp r1, #0xa @@ -53239,6 +55078,105 @@ _02036D04: mov r1, #4 strb r1, [r3, #0x16] ldr r0, [r0] + mov r1, #0x11c +#elif defined(JAPAN) + ldr r1, [r0] + ldr r0, [r1, #0xc] + cmp r0, #0xa + moveq r0, #1 + streq r0, [r1, #0xc] + ldr r2, [r3] + mov r0, #1 + ldr r1, [r2, #0xc] + add r2, r2, #0x100 + add r1, r1, #0xca + add r1, r1, #0x3100 + strh r1, [r2, #0xa6] + ldr r1, [r3] + strb r0, [r1, #0x16] + ldr r1, [r3] + strb r4, [r1, #0x15] + ldr r1, [r3] + strh r4, [r1, #8] + ldr r1, [r3] + strb r4, [r1, #0x10] + ldr r1, [r3] + ldr r2, [r1, #0xc] + cmp r2, #9 + addls pc, pc, r2, lsl #2 + b _02036A40 +_02036C28: ; jump table + b _02036A40 ; case 0 + b _02036D04 ; case 1 + b _02036A40 ; case 2 + b _02036A40 ; case 3 + b _02036A20 ; case 4 + b _02036C50 ; case 5 + b _02036CB8_JP ; case 6 + b _02036CE4 ; case 7 + b _02036C7C ; case 8 + b _02036D1C ; case 9 +_02036C50: + mov r2, #9 + strb r2, [r1, #0x18] + ldr r1, [r3] + mov r2, #0x36 + strb r0, [r1, #0x10] + ldr r0, [r3] + mov r1, #3 + strb r2, [r0, #0x1b] + ldr r0, [r3] + strb r1, [r0, #0x16] + b _02036A58 +_02036C7C: + mov r2, #6 + strb r2, [r1, #0x18] + ldr r1, [r3] + mov r2, #4 + strb r2, [r1, #0x16] + ldr r1, [r3] + mov r2, #0x36 + strb r0, [r1, #0x10] + ldr r0, [r3] + ldr r1, _02036FC8 ; =0x000031D1 + strb r2, [r0, #0x1b] + ldr r0, [r3] + add r0, r0, #0x100 + strh r1, [r0, #0xa6] + b _02036A58 +_02036CB8_JP: + mov r2, #9 + strb r2, [r1, #0x18] + ldr r1, [r3] + mov r2, #0x22 + strb r0, [r1, #0x10] + ldr r0, [r3] + mov r1, #3 + strb r2, [r0, #0x1b] + ldr r0, [r3] + strb r1, [r0, #0x16] + b _02036A58 +_02036CE4: + strb r4, [r1, #0x16] + ldr r0, [r3] + mov r1, #6 + strb r1, [r0, #0x18] + ldr r0, [r3] + mov r1, #0x36 + strb r1, [r0, #0x1b] + b _02036A58 +_02036D04: + mov r0, #6 + strb r0, [r1, #0x18] + ldr r0, [r3] + mov r1, #5 + strb r1, [r0, #0x1b] + b _02036A58 +_02036D1C: + mov r0, #5 + strb r0, [r1, #0x16] + ldr r0, [r3] + ldr r1, _02036FCC ; =0x000031CE #else ldr r1, [r0] mov r2, #0 @@ -53339,8 +55277,8 @@ _02036A08: mov r0, #4 strb r0, [r3, #0x16] ldr r0, [r1] -#endif mov r1, #0x11c +#endif add r0, r0, #0x100 strh r1, [r0, #0xa6] _02036A20: @@ -53353,11 +55291,19 @@ _02036A20: strb r1, [r0, #0x1b] b _02036A58 _02036A40: +#ifdef JAPAN + mov r2, #6 + ldr r0, _02036CB0 ; =_020AFDF0 + strb r2, [r1, #0x18] + ldr r0, [r0] + mov r1, #5 +#else mov r1, #6 ldr r0, _02036CB0 ; =_020AFDF0 strb r1, [r3, #0x18] ldr r0, [r0] mov r1, #0xa +#endif strb r1, [r0, #0x1b] _02036A58: ldr r0, _02036CB0 ; =_020AFDF0 @@ -53695,7 +55641,11 @@ _02036EE0: ldr r0, _02037444 ; =_020AFDF0 mov r2, #0xa ldr r5, [r0] +#ifdef JAPAN + ldr r3, [r0, #4] +#else ldr r3, [r0, #8] +#endif ldrb r1, [r5, #0x16] ldrb r4, [r5, #0x18] ldrsb r0, [r5] @@ -53728,8 +55678,12 @@ _02036F88: _02036F94: ldr r0, _02037444 ; =_020AFDF0 mov r2, #0xa +#ifdef JAPAN + ldmia r0, {r1, r4} +#else ldr r1, [r0] ldr r4, [r0, #8] +#endif ldrb r0, [r1, #0x18] ldrb r3, [r1, #0x16] smulbb r2, r0, r2 @@ -53739,8 +55693,12 @@ _02036F94: _02036FBC: ldr r0, _02037444 ; =_020AFDF0 mov r2, #0xa +#ifdef JAPAN + ldmia r0, {r1, r4} +#else ldr r1, [r0] ldr r4, [r0, #8] +#endif ldrb r3, [r1, #0x16] ldrb r0, [r1, #0x18] ldr r3, [r4, r3, lsl #2] @@ -53750,8 +55708,12 @@ _02036FBC: _02036FE4: ldr r0, _02037444 ; =_020AFDF0 mov r2, #0xa +#ifdef JAPAN + ldmia r0, {r1, r4} +#else ldr r1, [r0] ldr r4, [r0, #8] +#endif ldrb r3, [r1, #0x16] ldrb r0, [r1, #0x18] ldr r3, [r4, r3, lsl #2] @@ -53761,8 +55723,12 @@ _02036FE4: _0203700C: ldr r0, _02037444 ; =_020AFDF0 mov r2, #0xa +#ifdef JAPAN + ldmia r0, {r1, r4} +#else ldr r1, [r0] ldr r4, [r0, #8] +#endif ldrb r3, [r1, #0x16] ldrb r0, [r1, #0x18] ldr r3, [r4, r3, lsl #2] @@ -53788,7 +55754,11 @@ _02037068: ldr r0, _02037444 ; =_020AFDF0 mov r2, #0xa ldr r5, [r0] +#ifdef JAPAN + ldr r3, [r0, #4] +#else ldr r3, [r0, #8] +#endif ldrb r1, [r5, #0x16] ldrb r4, [r5, #0x18] ldrsb r0, [r5] @@ -53839,7 +55809,11 @@ _02037110: ldr ip, [r3] mul r5, r4, r1 ldrb r1, [ip, #0x16] +#ifdef JAPAN + ldr ip, [r3, #4] +#else ldr ip, [r3, #8] +#endif ldr r3, _02037460 ; =_0209B28C ldr ip, [ip, r1, lsl #2] mov r1, #0x40 @@ -53865,7 +55839,11 @@ _02037110: bl sub_0202A2A4 ldr r0, _02037444 ; =_020AFDF0 ldr r2, [r0] +#ifdef JAPAN + ldr r1, [r0, #4] +#else ldr r1, [r0, #8] +#endif ldrb r0, [r2, #0x16] ldr r0, [r1, r0, lsl #2] add r0, r0, r5 @@ -53999,7 +55977,13 @@ _0203736C: _02037374: ldrh r0, [sp, #0x10] cmp r0, #8 +#ifdef JAPAN + bgt _020376BC + cmp r0, #0 + addge pc, pc, r0, lsl #2 +#else addls pc, pc, r0, lsl #2 +#endif b _02037438 _02037384: ; jump table b _02037438 ; case 0 @@ -54011,6 +55995,12 @@ _02037384: ; jump table b _02037438 ; case 6 b _02037438 ; case 7 b _020373C4 ; case 8 +#ifdef JAPAN +_020376BC: + cmp r0, #0x400 + beq _02037760 + b _02037438 +#endif _020373A8: bl sub_020384B0 b _0203743C @@ -54035,15 +56025,28 @@ _020373E0: cmp r1, #0 bne _02037438 ldrb r1, [r2, #0x16] +#ifdef JAPAN + cmp r1, #3 +#else cmp r1, #2 +#endif bhi _02037438 add r1, r1, #1 strb r1, [r2, #0x16] +#ifdef JAPAN + ldr r4, [r0] + mov r1, #3 + ldrb r0, [r4, #0x16] + bl _s32_div_f + mov r0, #4 + strb r1, [r4, #0x16] +#else ldr r2, [r0] mov r0, #4 ldrb r1, [r2, #0x16] and r1, r1, #1 strb r1, [r2, #0x16] +#endif bl PlaySeVolumeWrapper ldr r0, _02037444 ; =_020AFDF0 ldr r0, [r0] @@ -54051,6 +56054,16 @@ _020373E0: bl sub_02037CD8 mov r0, #1 bl sub_020383FC +#ifdef JAPAN + b _02037438 +_02037760: + mov r0, #2 + bl sub_020383FC + ldr r0, _02037444 ; =_020AFDF0 + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_02037F58 +#endif _02037438: mov r0, #0 _0203743C: @@ -54058,6 +56071,10 @@ _0203743C: ldmia sp!, {r4, r5, pc} .align 2, 0 _02037444: .word _020AFDF0 +#ifdef JAPAN +_02036FC8: .word 0x000031D1 +_02036FCC: .word 0x000031CE +#endif _02037448: .word _0209B3B4 _0203744C: .word _0209B3B6 _02037450: .word _0209B32C @@ -54308,7 +56325,11 @@ sub_02037778: ; 0x02037778 sub sp, sp, #0x40 ldr r0, _02037C28 ; =_020AFDF0 ldr r3, [r0] +#ifdef JAPAN + ldr r1, [r0, #8] +#else ldr r1, [r0, #4] +#endif ldr r2, [r3, #4] cmp r2, r1 beq _020377B0 @@ -54317,7 +56338,11 @@ sub_02037778: ; 0x02037778 ldr r0, _02037C28 ; =_020AFDF0 ldr r3, [r0] ldr r1, [r3, #4] +#ifdef JAPAN + str r1, [r0, #8] +#else str r1, [r0, #4] +#endif _020377B0: ldr r0, [r3, #4] cmp r0, #9 @@ -54705,6 +56730,11 @@ _02037CD4: .word 0x00000123 sub_02037CD8: ; 0x02037CD8 stmdb sp!, {r4, r5, r6, r7, r8, lr} sub sp, sp, #0x40 +#ifdef JAPAN + mov r7, r0 + bl sub_02027B1C + mov r4, #0 +#else ldr r1, _02037F10 ; =_020AFDF0 mov r7, r0 ldr r0, [r1] @@ -54722,13 +56752,18 @@ _02037D14: mov r0, r7 bl sub_02027B1C b _02037EF8 +#endif _02037D20: ldr r2, _02037F10 ; =_020AFDF0 mov r0, #0xa ldr r1, [r2] mul r6, r4, r0 ldrb r0, [r1, #0x16] +#ifdef JAPAN + ldr r2, [r2, #4] +#else ldr r2, [r2, #8] +#endif ldr r3, _02037F14 ; =0x00000111 ldr r2, [r2, r0, lsl #2] add r2, r2, r6 @@ -54742,11 +56777,22 @@ _02037D20: mov r2, r2, lsr #0x10 cmp r2, #7 bhi _02037E0C +#ifdef JAPAN + cmp r0, #2 +#else cmp r0, #0 +#endif moveq ip, #0x104 beq _02037D84 cmp r0, #1 +#ifdef JAPAN + subeq ip, r3, #0xe + beq _02037D84 + cmp r0, #0 + subeq ip, r3, #0xf +#else subeq ip, r3, #0xc +#endif movne ip, #0 _02037D84: cmp r5, #0x100 @@ -54764,10 +56810,17 @@ _02037DA8: ldr r0, _02037F18 ; =0x00000109 cmp r5, r0 bne _02037DD0 +#ifdef JAPAN + ldrb r0, [r1, #0x15] + cmp r0, #0 + ldrne r1, _020381EC ; =0x000031D8 + ldreq r1, _020381F0 ; =0x000031D9 +#else ldrb r1, [r1, #0x15] cmp r1, #0 addne r1, r0, #0x1d addeq r1, r0, #0x1e +#endif b _02037DDC _02037DD0: cmp ip, r5 @@ -54792,13 +56845,31 @@ _02037E0C: ldr r1, [r1, #0xc] cmp r1, #8 beq _02037E38 +#ifdef JAPAN + cmp r0, #3 +#else cmp r0, #2 +#endif bne _02037E38 cmp r4, #5 ble _02037E38 and r0, r5, #0xff bl sub_0204DA1C cmp r0, #0xff +#ifdef JAPAN + bne _02037E38 + ldr r1, _020381F4 ; =0x020B12A0 + add r0, sp, #0 + ldr r2, [r1, r5, lsl #2] + ldr r1, _020381F8 ; =0x0209BDF8 + bl SprintfStatic__02037F30 + b _02038178 +_02037E38: + ldr r1, _020381F4 ; =0x020B12A0 + add r0, sp, #0 + ldr r1, [r1, r5, lsl #2] + bl strcpy +#else beq _02037E5C _02037E38: ldr r0, _02037F10 ; =_020AFDF0 @@ -54833,6 +56904,7 @@ _02037E9C: ldr r1, _02037F2C ; =_0209B4C0 mov r2, r5 bl SprintfStatic__02037F30 +#endif _02037EA8: add r0, sp, #0 bl sub_020265A8 @@ -54843,8 +56915,12 @@ _02037EA8: movle r1, r0, asr #1 ldr r0, _02037F10 ; =_020AFDF0 add r3, sp, #0 +#ifdef JAPAN + ldmia r0, {r2, r5} +#else ldr r2, [r0] ldr r5, [r0, #8] +#endif ldrb r2, [r2, #0x16] mov r0, r7 ldr r2, [r5, r2, lsl #2] @@ -54857,7 +56933,11 @@ _02037EF4: add r4, r4, #1 _02037EF8: cmp r4, #0x54 +#ifdef JAPAN + blt _02037D20 +#else bne _02037D20 +#endif mov r0, r7 bl UpdateWindow add sp, sp, #0x40 @@ -54867,10 +56947,17 @@ _02037F10: .word _020AFDF0 _02037F14: .word 0x00000111 _02037F18: .word 0x00000109 _02037F1C: .word KEYBOARD_STRING_IDS +#ifdef JAPAN +_020381EC: .word 0x000031D8 +_020381F0: .word 0x000031D9 +_020381F4: .word 0x020B12A0 +_020381F8: .word 0x0209BDF8 +#else _02037F20: .word _0209B4A4 _02037F24: .word _0209B4AC _02037F28: .word _0209B4B8 _02037F2C: .word _0209B4C0 +#endif arm_func_end sub_02037CD8 arm_func_start SprintfStatic__02037F30 @@ -54889,15 +56976,25 @@ SprintfStatic__02037F30: ; 0x02037F30 arm_func_start sub_02037F58 sub_02037F58: ; 0x02037F58 +#ifdef JAPAN + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x108 +#else stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x114 +#endif ldr r1, _020383DC ; =_0209B288 mov sb, r0 ldrb r2, [r1] ldrb r0, [r1, #1] +#ifdef JAPAN + strb r2, [sp, #4] + strb r0, [sp, #5] +#else mov sl, #0 strb r2, [sp, #0x10] strb r0, [sp, #0x11] +#endif bl sub_02038ADC mov r0, sb bl sub_02027B1C @@ -54906,7 +57003,11 @@ sub_02037F58: ; 0x02037F58 ldr r0, [r1, #0xc] cmp r0, #7 addeq r0, r1, #0x100 +#ifdef JAPAN + moveq r1, #0 +#else moveq r1, sl +#endif streqh r1, [r0, #0xa6] ldr r0, _020383E0 ; =_020AFDF0 ldr r0, [r0] @@ -54914,16 +57015,28 @@ sub_02037F58: ; 0x02037F58 ldrh r1, [r0, #0xa6] cmp r1, #0 beq _02037FF8 +#ifdef JAPAN + add r0, sp, #6 +#else add r0, sp, #0x12 +#endif bl GetStringFromFileVeneer mov r0, sb bl GetWindow mov r4, r0 +#ifdef JAPAN + add r0, sp, #6 +#else add r0, sp, #0x12 +#endif bl sub_020265A8 ldrb r1, [r4, #6] mov r2, #0 +#ifdef JAPAN + add r3, sp, #6 +#else add r3, sp, #0x12 +#endif rsb r0, r0, r1, lsl #3 add r0, r0, r0, lsr #31 mov r1, r0, asr #1 @@ -54950,6 +57063,9 @@ _02037FF8: mov r0, r4 mov r1, r5 bl sub_02038A8C +#ifdef JAPAN +_02038054: +#else cmp r0, #0x3c movgt r0, #1 bgt _02038058 @@ -54958,6 +57074,7 @@ _02038054: _02038058: cmp r0, #0 movne sl, #1 +#endif mov r6, #0 ldr r4, _020383E4 ; =_0209B3B4 ldr fp, _020383E0 ; =_020AFDF0 @@ -54985,19 +57102,40 @@ _020380A8: cmp r1, #5 ble _020380D0 cmp r1, #0xc +#ifdef JAPAN + movlt sl, #0x43 +#else movlt r0, #0x43 strlt r0, [sp, #8] +#endif movlt r7, #1 blt _020380DC _020380D0: +#ifdef JAPAN + mov sl, #0x44 +#else mov r0, #0x44 str r0, [sp, #8] +#endif mov r7, #0 _020380DC: cmp r5, #0 beq _02038114 mov r0, r5 bl sub_020251F0 +#ifdef JAPAN + and r1, sl, #0xff + str r1, [sp] + mov r3, r0 + mov r0, sb + mov r1, r6, lsl #2 + ldrsh r1, [r4, r1] + add r2, r4, r6, lsl #2 + ldrsh r2, [r2, #2] + bl sub_020264F8 +_02038114: + add r0, sp, #4 +#else ldr r1, [sp, #8] add r2, r4, r6, lsl #2 and r1, r1, #0xff @@ -55010,6 +57148,7 @@ _020380DC: bl sub_020264F8 _02038114: add r0, sp, #0x10 +#endif ldrsb r2, [r0, r7] mov r1, r6, lsl #2 mov r0, sb @@ -55024,26 +57163,53 @@ _02038114: b _02038390 _02038148: mov r0, r6 +#ifdef JAPAN + cmp r5, #2 +#else cmp r5, #0x20 +#endif mov r1, #0x11 moveq r5, #0 bl _s32_div_f cmp r1, #5 blt _02038178 cmp r1, #0xc +#ifdef JAPAN + movlt sl, #0x43 +#else movlt r0, #0x43 strlt r0, [sp, #4] +#endif movlt r7, #1 blt _02038184 _02038178: +#ifdef JAPAN + mov sl, #0x44 +#else mov r0, #0x44 str r0, [sp, #4] +#endif mov r7, #0 _02038184: cmp r5, #0 beq _020381C4 mov r0, r5 bl sub_020251F0 +#ifdef JAPAN + and r1, sl, #0xff + str r1, [sp] + ldr r1, _020383E8 ; =_0209B32C + mov r2, r6, lsl #2 + ldrsh r1, [r1, r2] + ldr r2, _020383E8 ; =_0209B32C + mov r3, r0 + add r2, r2, r6, lsl #2 + ldrsh r2, [r2, #2] + mov r0, sb + bl sub_020264F8 +_020381C4: + add r0, sp, #4 +#else ldr r1, [sp, #4] mov r2, r6, lsl #2 and r1, r1, #0xff @@ -55058,6 +57224,7 @@ _02038184: bl sub_020264F8 _020381C4: add r0, sp, #0x10 +#endif ldrsb r1, [r0, r7] mov r2, r6, lsl #2 mov r0, sb @@ -55073,8 +57240,13 @@ _020381C4: b _02038390 _020381FC: cmp r5, #0 +#ifdef JAPAN + moveq r5, #0xa + cmp r5, #2 +#else moveq r5, #0x2a cmp r5, #0x20 +#endif moveq r5, #0 cmp r5, #0 beq _02038390 @@ -55097,12 +57269,23 @@ _020381FC: bl sub_020264F8 b _02038390 _0203825C: +#ifdef JAPAN + cmp r5, #2 +#else cmp r5, #0x20 +#endif moveq r5, #0 cmp r5, #0 beq _020382AC ldr r1, _020383EC ; =_0209B2C4 ldr r2, [fp] +#ifdef JAPAN + mov r0, r5 + ldrb sl, [r1, r7] + ldrsh r5, [r2, #0x20] + bl sub_020251F0 + ldr r2, _020383F0 ; =_0209B2D0 +#else ldrb r1, [r1, r7] mov r0, r5 ldrsh r5, [r2, #0x20] @@ -55110,14 +57293,64 @@ _0203825C: bl sub_020251F0 ldr r2, _020383F0 ; =_0209B2D0 ldr r1, [sp, #0xc] +#endif mov r3, #0x44 str r3, [sp] mov r3, r0 ldrb r2, [r2, r7] +#ifdef JAPAN + add r1, sl, r5 +#else add r1, r1, r5 +#endif mov r0, sb bl sub_020264F8 _020382AC: +#ifdef JAPAN + ldr r5, [fp] + mov r2, #0x17 + ldr r1, [r5, #0xc] + mov r0, sb + str r2, [sp] + ldr r2, _020383F0 ; =_0209B2D0 + ldrsh r5, [r5, #0x20] + ldrb r7, [r2, r1] + ldr r2, _020383EC ; =_0209B2C4 + mov r3, #0xc + ldrb r2, [r2, r1] + add r1, r7, r5 + add r2, r2, #0xc + bl sub_02025D50 + b _02038390 +_020382E8: + ldr r1, [fp] + ldr r0, _0203864C_JP ; =_020B12A0 + cmp r5, #2 + moveq r5, #0 + ldr r3, [r0, r5, lsl #2] + add r1, r1, r6, lsl #1 + ldrsh r5, [r1, #0x20] + ldr r1, _020383EC ; =_0209B2C4 + mov r0, sb + ldrb sl, [r1, r7] + ldr r1, _020383F0 ; =_0209B2D0 + ldrb r2, [r1, r7] + add r1, sl, r5 + bl DrawTextInWindow + ldr r5, [fp] + mov r2, #0x17 + ldr r1, [r5, #0xc] + mov r0, sb + str r2, [sp] + ldr r2, _020383EC ; =_0209B2C4 + ldrsh r5, [r5, #0x20] + ldrb r7, [r2, r1] + ldr r2, _020383F0 ; =_0209B2D0 + mov r3, #0x32 + ldrb r2, [r2, r1] + add r1, r7, r5 + add r2, r2, #0xc +#else ldr r2, [fp] mov r1, #0x17 ldr r5, [r2, #0xc] @@ -55177,6 +57410,7 @@ _02038328: mov r3, #0x3c add r1, r2, r1 add r2, r5, #0xc +#endif bl sub_02025D50 _02038390: add r6, r6, #1 @@ -55188,7 +57422,11 @@ _02038394: ldr r0, [r0, #0xc] cmp r0, #7 bne _020383CC +#ifdef JAPAN + ldrsb r4, [sp, #4] +#else ldrsb r4, [sp, #0x10] +#endif mov r0, sb mov r1, #3 mov r2, #0x1d @@ -55198,8 +57436,13 @@ _02038394: _020383CC: mov r0, sb bl UpdateWindow +#ifdef JAPAN + add sp, sp, #0x108 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +#else add sp, sp, #0x114 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +#endif .align 2, 0 _020383DC: .word _0209B288 _020383E0: .word _020AFDF0 @@ -55207,8 +57450,12 @@ _020383E4: .word _0209B3B4 _020383E8: .word _0209B32C _020383EC: .word _0209B2C4 _020383F0: .word _0209B2D0 +#ifdef JAPAN +_0203864C_JP: .word 0x020B12A0 +#else _020383F4: .word _0209B4C4 _020383F8: .word _0209B4C0 +#endif arm_func_end sub_02037F58 arm_func_start sub_020383FC @@ -55226,10 +57473,19 @@ sub_020383FC: ; 0x020383FC cmp r0, #0 beq _0203843C cmp r0, #1 +#ifdef JAPAN + beq _020386A0 + cmp r0, #2 +#endif moveq r0, #2 streqb r0, [r2, #0x18] b _02038444 _0203843C: +#ifdef JAPAN + strb r4, [r2, #0x18] + b _02038444 +_020386A0: +#endif mov r0, #1 strb r0, [r2, #0x18] _02038444: @@ -55253,7 +57509,11 @@ _02038480: add r4, r4, #1 _02038484: ldr r2, [r7] +#ifdef JAPAN + ldr r1, [r7, #4] +#else ldr r1, [r7, #8] +#endif ldrb r0, [r2, #0x16] ldr r0, [r1, r0, lsl #2] mla r0, r4, r5, r0 @@ -55271,24 +57531,62 @@ sub_020384B0: ; 0x020384B0 stmdb sp!, {r3, r4, r5, lr} ldr r2, _02038900 ; =_020AFDF0 mov r0, #0xa +#ifdef JAPAN + ldmia r2, {r1, r3} +#else ldr r1, [r2] ldr r3, [r2, #8] +#endif ldrb ip, [r1, #0x16] ldrb r2, [r1, #0x18] ldr r3, [r3, ip, lsl #2] mla r0, r2, r0, r3 ldrh r4, [r0, #8] +#ifdef JAPAN + sub r0, r4, #0x100 + cmp r0, #9 +#else sub r0, r4, #0x104 cmp r0, #5 +#endif addls pc, pc, r0, lsl #2 b _020387B4 _020384E8: ; jump table +#ifdef JAPAN + b _02038770 ; case 0 + b _0203878C ; case 1 + b _02038500 ; case 2 + b _02038544 ; case 3 + b _02038830 ; case 4 + b _020387B4 ; case 5 + b _020387B4 ; case 6 + b _020385C0 ; case 7 + b _020385F0 ; case 8 + b _02038588 ; case 9 +_02038770: + mov r0, #0 + bl sub_0203935C + ldr r0, _02038900 ; =_020AFDF0 + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_02037F58 + b _020388F8 +_0203878C: + mov r0, #1 + bl sub_0203935C + ldr r0, _02038900 ; =_020AFDF0 + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_02037F58 + b _020388F8 +#else b _02038500 ; case 0 b _02038544 ; case 1 b _020387B4 ; case 2 b _020385C0 ; case 3 b _020385F0 ; case 4 b _02038588 ; case 5 +#endif _02038500: cmp ip, #0 bne _02038514 @@ -55327,6 +57625,27 @@ _02038558: mov r0, #1 bl sub_020383FC b _020388F8 +#ifdef JAPAN +_02038830: + cmp ip, #2 + bne _02038844 + mov r0, #2 + bl PlaySeVolumeWrapper + b _020388F8 +_02038844: + mov r0, #0 + bl PlaySeVolumeWrapper + ldr r0, _02038900 ; =_020AFDF0 + mov r2, #2 + ldr r1, [r0] + strb r2, [r1, #0x16] + ldr r0, [r0] + ldrsb r0, [r0, #1] + bl sub_02037CD8 + mov r0, #1 + bl sub_020383FC + b _020388F8 +#endif _02038588: ldrb r0, [r1, #0x15] cmp r0, #0 @@ -55368,7 +57687,11 @@ _020385F0: beq _02038680 cmp r4, #0x12 bge _02038680 +#ifdef JAPAN + mov r0, #0x20 +#else mov r0, #2 +#endif bl PlaySeVolumeWrapper mov r1, #0x20 ldr r0, _02038900 ; =_020AFDF0 @@ -55492,6 +57815,7 @@ _020387B4: bl PlaySeVolumeWrapper b _020388F8 _020387E4: +#ifndef JAPAN ldr r0, [r1, #0xc] cmp r0, #9 bne _02038810 @@ -55504,6 +57828,7 @@ _02038804: mov r0, #2 bl PlaySeVolumeWrapper b _020388F8 +#endif _02038810: ldr r0, _02038900 ; =_020AFDF0 ldr r2, [r0] @@ -55622,7 +57947,11 @@ _02038978: bhi _020389EC cmp r0, #0x11 movge r0, #0x11 +#ifdef JAPAN + movge ip, #2 +#else movge ip, #0x20 +#endif ldr r1, _02038A50 ; =_020AFDF0 b _020389D0 _020389B8: @@ -55711,7 +58040,11 @@ _02038AA4: mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 bl sub_02025C7C +#ifdef JAPAN + ldrsh r0, [r0, #6] +#else ldrb r0, [r0, #2] +#endif add r5, r5, #1 add r4, r4, r0 _02038ACC: @@ -55745,11 +58078,19 @@ _02038AF0: mov r0, r0, lsr #0x10 bl sub_02025C7C ldr r1, [r6] +#ifdef JAPAN + ldrb r2, [r0, #6] +#else ldrb r2, [r0, #2] +#endif add r1, r1, r5, lsl #1 add r5, r5, #1 strh r2, [r1, #0x8c] +#ifdef JAPAN + ldrb r0, [r0, #6] +#else ldrb r0, [r0, #2] +#endif add r4, r4, r0 _02038B44: ldr r1, [r6] @@ -56095,7 +58436,11 @@ _02038FB8: ldr r2, _02039068 ; =_020AFDF0 mla r0, r1, r0, r4 ldrb r3, [r7, #0x16] +#ifdef JAPAN + ldr r2, [r2, #4] +#else ldr r2, [r2, #8] +#endif mov r1, #0xa ldr r2, [r2, r3, lsl #2] mla r2, r0, r1, r2 @@ -56125,6 +58470,98 @@ _02039094: .word _0209B32E _02039098: .word _0209B32C arm_func_end sub_02038B80 +#ifdef JAPAN + arm_func_start sub_0203935C +sub_0203935C: ; 0x0203935C + stmdb sp!, {r3, lr} + ldr r1, _0203942C_JP ; =0x020B1234 + ldr r2, [r1] + ldrb r1, [r2, #0x10] + cmp r1, #0 + beq _02039380 + mov r0, #2 + bl PlaySeVolumeWrapper + ldmia sp!, {r3, pc} +_02039380: + ldrb r3, [r2, #0x1c] + ldr r2, [r2, #0xf8] + ldrb r1, [r2, r3] + cmp r1, #0 + bne _020393F0 + cmp r3, #0 + bne _020393A8 + mov r0, #2 + bl PlaySeVolumeWrapper + ldmia sp!, {r3, pc} +_020393A8: + add r1, r2, r3 + ldrb r1, [r1, #-1] + bl sub_02039430 + ldr r1, _0203942C_JP ; =0x020B1234 + ldr r2, [r1] + ldr r1, [r2, #0xf8] + ldrb r2, [r2, #0x1c] + sub r3, r1, #1 + ldrb r1, [r3, r2] + cmp r0, r1 + beq _020393E4 + strb r0, [r3, r2] + mov r0, #0 + bl PlaySeVolumeWrapper + ldmia sp!, {r3, pc} +_020393E4: + mov r0, #2 + bl PlaySeVolumeWrapper + ldmia sp!, {r3, pc} +_020393F0: + bl sub_02039430 + ldr r1, _0203942C_JP ; =0x020B1234 + ldr r1, [r1] + ldrb r2, [r1, #0x1c] + ldr r3, [r1, #0xf8] + ldrb r1, [r3, r2] + cmp r0, r1 + beq _02039420 + strb r0, [r3, r2] + mov r0, #0 + bl PlaySeVolumeWrapper + ldmia sp!, {r3, pc} +_02039420: + mov r0, #2 + bl PlaySeVolumeWrapper + ldmia sp!, {r3, pc} + .align 2, 0 +_0203942C_JP: .word 0x020B1234 + arm_func_end sub_0203935C + + arm_func_start sub_02039430 +sub_02039430: ; 0x02039430 + cmp r0, #0 + beq _02039454 + cmp r0, #1 + beq _02039464 + cmp r0, #2 + ldreq r0, _02039474 ; =0x0209C29E + addeq r1, r1, r1, lsl #1 + ldreqb r0, [r0, r1] + bx lr +_02039454: + ldr r0, _02039478 ; =0x0209C29C + add r1, r1, r1, lsl #1 + ldrb r0, [r0, r1] + bx lr +_02039464: + ldr r0, _0203947C ; =0x0209C29D + add r1, r1, r1, lsl #1 + ldrb r0, [r0, r1] + bx lr + .align 2, 0 +_02039474: .word 0x0209C29E +_02039478: .word 0x0209C29C +_0203947C: .word 0x0209C29D + arm_func_end sub_02039430 +#endif + arm_func_start sub_0203909C sub_0203909C: ; 0x0203909C stmdb sp!, {r3, r4, r5, r6, lr} @@ -56135,6 +58572,41 @@ sub_0203909C: ; 0x0203909C mov r1, #8 mov r5, r4 bl MemAlloc +#ifdef JAPAN + ldr r2, _02039208 ; =_020AFE40 + mov r1, r4 + str r0, [r2] + str r1, [r0, #8] + ldr r0, [r2] + sub r3, r1, #2 + strb r1, [r0, #0xc] + ldr r0, [r2] + strb r3, [r0] + ldr r0, [r2] + strb r3, [r0, #1] + ldr r0, [r2] + strb r3, [r0, #2] + ldr r0, [r2] + str r1, [r0, #0x10] + ldr r0, _02039608 ; =0x00008140 + b _02039118 +_020394E4: + add r2, r6, r1 + ldrb r3, [r6, r1] + ldrb r2, [r2, #1] + cmp r3, #0 + orr r2, r2, r3, lsl #8 + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + beq _02039120 + cmp r2, r0 + addeq r4, r4, #1 + add r5, r5, #1 + add r1, r1, #2 +_02039118: + cmp r1, #0x36 + bne _020394E4 +#else ldr r1, _02039208 ; =_020AFE40 mov r3, r4 str r0, [r1] @@ -56162,6 +58634,7 @@ _020390FC: _02039118: cmp r3, #0x36 blt _020390FC +#endif _02039120: cmp r5, r4 ldreq r0, _02039208 ; =_020AFE40 @@ -56208,9 +58681,15 @@ _020391C0: mov r0, #0 bl CreateDialogueBox ldr r3, _02039208 ; =_020AFE40 +#ifdef JAPAN + ldr r2, _02039618 ; =0x000031D7 + ldr r4, [r3] + mov r1, #0x218 +#else mov r1, #0x218 ldr r4, [r3] sub r2, r1, #0xf3 +#endif strb r0, [r4, #2] ldr r0, [r3] mov r3, #0 @@ -56226,9 +58705,15 @@ _020391FC: ldmia sp!, {r3, r4, r5, r6, pc} .align 2, 0 _02039208: .word _020AFE40 +#ifdef JAPAN +_02039608: .word 0x00008140 +#endif _0203920C: .word _0209B4D4 _02039210: .word sub_0203939C _02039214: .word _0209B4E4 +#ifdef JAPAN +_02039618: .word 0x000031D7 +#endif arm_func_end sub_0203909C arm_func_start sub_02039218 @@ -56377,10 +58862,15 @@ _020393E0: add r0, sp, #0x54 str r0, [sp, #0x3c] add ip, sp, #4 +#ifdef JAPAN + ldr r2, _02039838 ; =0x000031D6 +#endif ldr r3, _02039434 ; =0x0000C402 add r0, sp, #0x154 mov r1, #0x400 +#ifndef JAPAN mov r2, #0x124 +#endif str ip, [sp] bl PreprocessStringFromId add r3, sp, #0x154 @@ -56396,6 +58886,9 @@ _020393E0: _02039428: .word _020AFE40 _0203942C: .word _0209B4FC _02039430: .word _0209B50C +#ifdef JAPAN +_02039838: .word 0x000031D6 +#endif _02039434: .word 0x0000C402 arm_func_end sub_0203939C @@ -56931,7 +59424,11 @@ _02039B50: _02039B58: mov r7, #0 add r6, sp, #4 +#ifdef JAPAN + mov r5, #0xa +#else mov r5, #0x2a +#endif mov r4, #0x44 mov sb, #0xc b _02039BB0 @@ -56939,7 +59436,11 @@ _02039B70: ldr r0, [r6, r7, lsl #2] cmp r0, #0xff moveq r0, r5 +#ifdef JAPAN + addne r0, r0, #0x1e +#else addne r0, r0, #0x30 +#endif andne r0, r0, #0xff bl sub_020251F0 add r1, r7, #1 @@ -57479,7 +59980,11 @@ _0203A2F4: b _0203A344 _0203A308: ldr r0, [r1, #0x10] +#ifdef JAPAN + ldr r1, _0203A8F4 ; =0x00002FD8 +#else mov r1, #0x2b8 +#endif add r0, r0, #0x400 strh r1, [r0, #0x74] b _0203A344 @@ -57608,9 +60113,16 @@ _0203A4D8: .word _0209C764 _0203A4DC: .word 0x0000022B _0203A4E0: .word TEAM_MEMBER_TABLE_PTR _0203A4E4: .word _0209C604 +#ifdef JAPAN +_0203A4E8: .word 0x00002FD7 +_0203A8F4: .word 0x00002FD8 +_0203A4EC: .word 0x000023AA +_0203A4F0: .word 0x000023AB +#else _0203A4E8: .word 0x000002B7 _0203A4EC: .word 0x00000302 _0203A4F0: .word 0x00000303 +#endif _0203A4F4: .word _0209C668 _0203A4F8: .word 0x00401E33 _0203A4FC: .word TeamSelectionMenuGetItem @@ -57890,15 +60402,22 @@ _0203A85C: _0203A884: ldr r0, _0203A960 ; =_020AFE5C ldr r0, [r0, #4] +#ifdef JAPAN + sub r0, r0, #5 + cmp r0, #7 +#else cmp r0, #0xc +#endif addls pc, pc, r0, lsl #2 b _0203A8D0 _0203A898: ; jump table +#ifndef JAPAN b _0203A8D0 ; case 0 b _0203A8D0 ; case 1 b _0203A8D0 ; case 2 b _0203A8CC ; case 3 b _0203A8CC ; case 4 +#endif b _0203A8CC ; case 5 b _0203A8CC ; case 6 b _0203A8CC ; case 7 @@ -58385,6 +60904,7 @@ _0203AF04: .word TEAM_MEMBER_TABLE_PTR _0203AF08: .word 0x0000022B arm_func_end sub_0203AD68 +#ifndef JAPAN arm_func_start sub_0203AF0C sub_0203AF0C: ; 0x0203AF0C ldr r0, _0203AF24 ; =_020AFE5C @@ -58396,6 +60916,7 @@ sub_0203AF0C: ; 0x0203AF0C .align 2, 0 _0203AF24: .word _020AFE5C arm_func_end sub_0203AF0C +#endif arm_func_start sub_0203AF28 sub_0203AF28: ; 0x0203AF28 @@ -59542,12 +62063,21 @@ sub_0203BE18: ; 0x0203BE18 ldrsb r0, [r1, #7] cmp r0, r2 bne _0203BE94 +#ifdef JAPAN + ldr r0, _0203C2B0 ; =0x000023B0 + mov r2, #0x10 + strh r0, [r1, #0x18] + ldr r1, [r3, #0x10] + mov r0, #0x11 + str r2, [r1, #0x51c] +#else mov r0, #0x308 strh r0, [r1, #0x18] ldr r0, [r3, #0x10] mov r1, #0x10 str r1, [r0, #0x51c] mov r0, #0x11 +#endif str r0, [sp] mov r0, #8 str r0, [sp, #4] @@ -59582,6 +62112,9 @@ _0203BEC4: ldmia sp!, {r3, pc} .align 2, 0 _0203BECC: .word _020AFE5C +#ifdef JAPAN +_0203C2B0: .word 0x000023B0 +#endif _0203BED0: .word _0209C618 _0203BED4: .word 0x00001833 _0203BED8: .word sub_0203BAC0 @@ -59710,7 +62243,11 @@ sub_0203C030: ; 0x0203C030 _0203C078: .word _0209C648 _0203C07C: .word _020AFE5C _0203C080: .word 0x00000418 +#ifdef JAPAN +_0203C084: .word 0x000023B3 +#else _0203C084: .word 0x0000030B +#endif arm_func_end sub_0203C030 arm_func_start sub_0203C088 @@ -59767,12 +62304,21 @@ sub_0203C124: ; 0x0203C124 stmdb sp!, {r3, lr} sub sp, sp, #8 ldr r1, _0203C1E8 ; =_020AFE5C +#ifdef JAPAN + mov r3, #0x1ec + ldr r0, [r1, #0x10] + mov lr, #1 + str lr, [r0, #0x5ac] + ldr r0, [r1, #0x10] + mov r2, #3 +#else mov lr, #1 ldr r0, [r1, #0x10] mov r2, #3 str lr, [r0, #0x5ac] ldr r0, [r1, #0x10] mov r3, #0x1ec +#endif str r2, [r0, #0x5b8] ldr r0, [r1, #0x10] mov ip, #0x50 @@ -59781,7 +62327,11 @@ sub_0203C124: ; 0x0203C124 mov r2, #0x16 str r3, [r0, #0x5b4] ldr r0, [r1, #0x10] +#ifdef JAPAN + add r3, r3, #0x21c0 +#else mov r3, #0x304 +#endif str ip, [r0, #0x5c8] ldr r0, [r1, #0x10] mov ip, #0x10 @@ -60278,10 +62828,15 @@ sub_0203C784: ; 0x0203C784 bl StringFromId str r0, [sp, #0x3c] add ip, sp, #4 +#ifdef JAPAN + ldr r3, _0203CBC8 ; =0x000023B4 +#endif mov r0, r4 mov r1, #0xa mov r2, #2 +#ifndef JAPAN mov r3, #0x30c +#endif str ip, [sp] bl sub_020262E0 mov r0, r4 @@ -60291,6 +62846,9 @@ sub_0203C784: ; 0x0203C784 .align 2, 0 _0203C7DC: .word _020AFE5C _0203C7E0: .word _0209C60C +#ifdef JAPAN +_0203CBC8: .word 0x000023B4 +#endif arm_func_end sub_0203C784 arm_func_start sub_0203C7E4 @@ -61066,9 +63624,15 @@ _0203D098: ldr r0, _0203D41C ; =0x0000097F str r2, [sp, #0xa0] cmp r1, #0 +#ifdef JAPAN + addne r1, r2, r1 + strne r1, [sp, #0xa0] + addne r0, r0, #1 +#else addne r0, r2, r1 strne r0, [sp, #0xa0] movne r0, #0x980 +#endif bl StringFromId mov r2, r0 add ip, sp, #0x7c @@ -61206,20 +63770,25 @@ _0203D3F4: add sp, sp, #0x400 ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} .align 2, 0 +#ifdef JAPAN +#define SUB_0203CFCC_OFFSET 0x19D0 +#else +#define SUB_0203CFCC_OFFSET 0 +#endif _0203D400: .word _020AFE70 _0203D404: .word TEAM_MEMBER_TABLE_PTR -_0203D408: .word 0x00000976 -_0203D40C: .word 0x00000977 -_0203D410: .word 0x00000978 -_0203D414: .word 0x00000979 -_0203D418: .word 0x0000097B -_0203D41C: .word 0x0000097F -_0203D420: .word 0x0000097A -_0203D424: .word 0x0000097D -_0203D428: .word 0x00000981 -_0203D42C: .word 0x00000983 -_0203D430: .word 0x00000986 -_0203D434: .word 0x00000985 +_0203D408: .word 0x00000976 + SUB_0203CFCC_OFFSET +_0203D40C: .word 0x00000977 + SUB_0203CFCC_OFFSET +_0203D410: .word 0x00000978 + SUB_0203CFCC_OFFSET +_0203D414: .word 0x00000979 + SUB_0203CFCC_OFFSET +_0203D418: .word 0x0000097B + SUB_0203CFCC_OFFSET +_0203D41C: .word 0x0000097F + SUB_0203CFCC_OFFSET +_0203D420: .word 0x0000097A + SUB_0203CFCC_OFFSET +_0203D424: .word 0x0000097D + SUB_0203CFCC_OFFSET +_0203D428: .word 0x00000981 + SUB_0203CFCC_OFFSET +_0203D42C: .word 0x00000983 + SUB_0203CFCC_OFFSET +_0203D430: .word 0x00000986 + SUB_0203CFCC_OFFSET +_0203D434: .word 0x00000985 + SUB_0203CFCC_OFFSET arm_func_end sub_0203CFCC arm_func_start sub_0203D438 @@ -61295,8 +63864,15 @@ _0203D534: .word _020AFE74 arm_func_start sub_0203D538 sub_0203D538: ; 0x0203D538 +#ifdef JAPAN +#define SUB_0203D538_STACK_OFFSET -6 +#define SUB_0203D538_STACK_OFFSET_2 -8 +#else +#define SUB_0203D538_STACK_OFFSET 0 +#define SUB_0203D538_STACK_OFFSET_2 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x11c + sub sp, sp, #0x11c + SUB_0203D538_STACK_OFFSET_2 ldr r1, _0203E4B0 ; =_020AFE74 ldr r4, [r1] ldr r0, [r4] @@ -61479,6 +64055,31 @@ _0203D7D4: strle r0, [r4] ble _0203EF9C str r0, [r4, #0xb0] +#ifdef JAPAN + ldr r3, [r1] + mov r0, #0xa + ldr r2, [r3, #0x1c] + mul r0, r2, r0 + str r0, [r3, #0xb4] + ldr r1, [r1] + ldr r0, [r1, #8] + cmp r0, #0 + beq _0203D890 + cmp r0, #2 + bne _0203DC0C + ldr r4, _0203E4B4 ; =0x0000245D + bl sub_0203F00C + b _0203D864 +_0203DC0C: + cmp r0, #3 + bne _0203DC20 + ldr r4, _0203E89C ; =0x0000245E + bl sub_0203F00C + b _0203D864 +_0203DC20: + cmp r0, #4 + ldrne r4, _0203E8A0 ; =0x0000245C +#else ldr r4, [r1] mov r0, #0xa ldr r2, [r4, #0x1c] @@ -61502,12 +64103,18 @@ _0203D824: _0203D838: cmp r1, #4 movne r4, #0x288 +#endif bne _0203D864 mov r0, #0 mov r1, #0x69 bl LoadScriptVariableValue +#ifdef JAPAN + add r0, r0, #0x5f + add r0, r0, #0x2400 +#else add r0, r0, #0x8b add r0, r0, #0x200 +#endif mov r0, r0, lsl #0x10 mov r4, r0, lsr #0x10 bl sub_0203F00C @@ -61525,7 +64132,11 @@ _0203D864: b _0203EF9C _0203D890: mov r0, #4 +#ifdef JAPAN + str r0, [r1] +#else str r0, [r2] +#endif b _0203EF9C _0203D89C: bl sub_02046C78 @@ -61563,7 +64174,11 @@ _0203D8EC: ldreq r1, _0203E4BC ; =0x0000026F beq _0203D934 cmp r0, #3 +#ifdef JAPAN + ldreq r1, _0203E8AC ; =0x00002444 +#else moveq r1, #0x270 +#endif beq _0203D934 cmp r0, #4 ldreq r1, _0203E4C0 ; =0x00000271 @@ -61632,8 +64247,13 @@ _0203DA00: mov r0, #0 mov r1, #0x69 bl LoadScriptVariableValue +#ifdef JAPAN + add r0, r0, #0x6f + add r0, r0, #0x2400 +#else add r0, r0, #0x9b add r0, r0, #0x200 +#endif mov r0, r0, lsl #0x10 mov r4, r0, lsr #0x10 bl sub_0203F00C @@ -61705,7 +64325,7 @@ _0203DAEC: b _0203EF9C _0203DB20: ldr r3, _0203E4D8 ; =_0209C846 - add r2, sp, #0x22 + add r2, sp, #0x22 + SUB_0203D538_STACK_OFFSET mov r1, #4 _0203DB2C: ldrh r0, [r3], #2 @@ -61713,12 +64333,12 @@ _0203DB2C: strh r0, [r2], #2 bne _0203DB2C ldrsh r1, [r4, #0x38] - add r0, sp, #0x22 + add r0, sp, #0x22 + SUB_0203D538_STACK_OFFSET mov r2, #1 mov r3, #0 bl sub_02053A0C ldr r0, _0203E4B0 ; =_020AFE74 - add r1, sp, #0x22 + add r1, sp, #0x22 + SUB_0203D538_STACK_OFFSET ldr r0, [r0] ldr r3, _0203E4DC ; =_0209C844 str r1, [sp] @@ -61777,8 +64397,13 @@ _0203DC18: mov r0, #0 mov r1, #0x69 bl LoadScriptVariableValue +#ifdef JAPAN + add r0, r0, #0x4f + add r0, r0, #0x2400 +#else add r0, r0, #0x7b add r0, r0, #0x200 +#endif mov r1, r0, lsl #0x10 ldr r0, _0203E4B8 ; =0x0000101C mov r1, r1, lsr #0x10 @@ -61829,7 +64454,9 @@ _0203DCB8: add r2, r2, #0x8c bl sub_02046BE8 ldr r0, _0203E4B0 ; =_020AFE74 +#ifndef JAPAN mov r2, #0xa +#endif ldr r0, [r0] ldr r1, [r0, #0x3b8] add r0, r0, #0xa1 @@ -62157,7 +64784,11 @@ _0203E198: ldr r2, _0203E4B0 ; =_020AFE74 ldr r0, _0203E4B8 ; =0x0000101C ldr r4, [r2] +#ifdef JAPAN + ldr r1, _0203E8F0 ; =0x00002458 +#else mov r1, #0x284 +#endif add r3, r4, #0xe8 str r3, [r4, #0xc4] ldr r2, [r2] @@ -62242,16 +64873,16 @@ _0203E2C4: mla r0, r1, r0, r4 ldrsh r0, [r0, #0x28] mov r1, #0 - strh r0, [sp, #0x20] - strb r1, [sp, #0x1c] + strh r0, [sp, #0x20 + SUB_0203D538_STACK_OFFSET] + strb r1, [sp, #0x1c + SUB_0203D538_STACK_OFFSET] bl IsStorableItem cmp r0, #0 beq _0203E44C - ldrsh r0, [sp, #0x20] + ldrsh r0, [sp, #0x20 + SUB_0203D538_STACK_OFFSET] bl IsThrownItem cmp r0, #0 bne _0203E328 - ldrsh r1, [sp, #0x20] + ldrsh r1, [sp, #0x20 + SUB_0203D538_STACK_OFFSET] cmp r1, #0x16c blt _0203E348 ldr r0, _0203E504 ; =0x0000018F @@ -62264,29 +64895,29 @@ _0203E328: ldr r1, [r2, #0x10] mla r0, r1, r0, r2 ldrh r0, [r0, #0x26] - strh r0, [sp, #0x1e] + strh r0, [sp, #0x1e + SUB_0203D538_STACK_OFFSET] b _0203E350 _0203E348: mov r0, #0 - strh r0, [sp, #0x1e] + strh r0, [sp, #0x1e + SUB_0203D538_STACK_OFFSET] _0203E350: ldr r3, _0203E4B0 ; =_020AFE74 mov r0, #1 ldr r6, [r3] - strb r0, [sp, #0x1c] + strb r0, [sp, #0x1c + SUB_0203D538_STACK_OFFSET] ldr r1, [r6, #0x10] mov r0, #6 mla r5, r1, r0, r6 - ldrh r0, [sp, #0x1c] + ldrh r0, [sp, #0x1c + SUB_0203D538_STACK_OFFSET] mov r4, #0 ldr r2, _0203E508 ; =_0209C850 strh r0, [r5, #0x24] - ldrh r0, [sp, #0x1e] - add r1, sp, #0x1c + ldrh r0, [sp, #0x1e + SUB_0203D538_STACK_OFFSET] + add r1, sp, #0x1c + SUB_0203D538_STACK_OFFSET strh r0, [r5, #0x26] - ldrh r0, [sp, #0x20] + ldrh r0, [sp, #0x20 + SUB_0203D538_STACK_OFFSET] strh r0, [r5, #0x28] - ldrsh r0, [sp, #0x20] + ldrsh r0, [sp, #0x20 + SUB_0203D538_STACK_OFFSET] str r0, [r6, #0x9c] ldr r0, [r3] str r4, [r0, #0xb0] @@ -62319,7 +64950,11 @@ _0203E400: cmp r0, #4 ldrne r4, _0203E514 ; =0x00000295 bne _0203E414 +#ifdef JAPAN + ldr r4, _0203E90C ; =0x0000246C +#else mov r4, #0x298 +#endif bl sub_0203F00C _0203E414: ldr r1, _0203E4B0 ; =_020AFE74 @@ -62366,32 +65001,50 @@ _0203E490: strle r1, [r0] b _0203EF9C .align 2, 0 +#ifdef JAPAN +#define SUB_0203D538_DATA_OFFSET 0x21D4 +#else +#define SUB_0203D538_DATA_OFFSET 0 +#endif _0203E4B0: .word _020AFE74 -_0203E4B4: .word 0x00000289 +_0203E4B4: .word 0x00000289 + SUB_0203D538_DATA_OFFSET +#ifdef JAPAN +_0203E89C: .word 0x0000245E +_0203E8A0: .word 0x0000245C +#endif _0203E4B8: .word 0x0000101C -_0203E4BC: .word 0x0000026F -_0203E4C0: .word 0x00000271 -_0203E4C4: .word 0x0000026E -_0203E4C8: .word 0x0000029A -_0203E4CC: .word 0x00000299 +_0203E4BC: .word 0x0000026F + SUB_0203D538_DATA_OFFSET +#ifdef JAPAN +_0203E8AC: .word 0x00002444 +#endif +_0203E4C0: .word 0x00000271 + SUB_0203D538_DATA_OFFSET +_0203E4C4: .word 0x0000026E + SUB_0203D538_DATA_OFFSET +_0203E4C8: .word 0x0000029A + SUB_0203D538_DATA_OFFSET +_0203E4CC: .word 0x00000299 + SUB_0203D538_DATA_OFFSET _0203E4D0: .word 0x00003008 _0203E4D4: .word _0209C884 _0203E4D8: .word _0209C846 _0203E4DC: .word _0209C844 -_0203E4E0: .word 0x0000027A +_0203E4E0: .word 0x0000027A + SUB_0203D538_DATA_OFFSET _0203E4E4: .word 0x0000100C -_0203E4E8: .word 0x000002A6 +_0203E4E8: .word 0x000002A6 + SUB_0203D538_DATA_OFFSET _0203E4EC: .word _0209C85C _0203E4F0: .word 0x00300011 _0203E4F4: .word _0209C86C -_0203E4F8: .word 0x00000283 -_0203E4FC: .word 0x00000281 -_0203E500: .word 0x00000285 +_0203E4F8: .word 0x00000283 + SUB_0203D538_DATA_OFFSET +_0203E4FC: .word 0x00000281 + SUB_0203D538_DATA_OFFSET +#ifdef JAPAN +_0203E8F0: .word 0x00002458 +#endif +_0203E500: .word 0x00000285 + SUB_0203D538_DATA_OFFSET _0203E504: .word 0x0000018F _0203E508: .word _0209C850 -_0203E50C: .word 0x00000296 -_0203E510: .word 0x00000297 -_0203E514: .word 0x00000295 +_0203E50C: .word 0x00000296 + SUB_0203D538_DATA_OFFSET +_0203E510: .word 0x00000297 + SUB_0203D538_DATA_OFFSET +_0203E514: .word 0x00000295 + SUB_0203D538_DATA_OFFSET +#ifdef JAPAN +_0203E90C: .word 0x0000246C +#endif _0203E518: ldr r1, [r4, #0x10] add r2, r4, #0x24 @@ -62441,12 +65094,12 @@ _0203E5B4: mla r1, r2, r0, r4 ldrsh r2, [r1, #0x28] mov r1, #0 - strh r2, [sp, #0x1a] + strh r2, [sp, #0x1a + SUB_0203D538_STACK_OFFSET] ldr r2, [r4, #0x10] mla r0, r2, r0, r4 ldrh r0, [r0, #0x26] - strh r0, [sp, #0x18] - strb r1, [sp, #0x16] + strh r0, [sp, #0x18 + SUB_0203D538_STACK_OFFSET] + strb r1, [sp, #0x16 + SUB_0203D538_STACK_OFFSET] bl sub_02046D20 ldr r0, _0203E4B0 ; =_020AFE74 ldr r0, [r0] @@ -62454,7 +65107,7 @@ _0203E5B4: tst r0, #1 moveq r1, #1 movne r1, #0 - add r0, sp, #0x16 + add r0, sp, #0x16 + SUB_0203D538_STACK_OFFSET and r1, r1, #0xff bl sub_020453F8 ldr r0, _0203E4B0 ; =_020AFE74 @@ -62549,17 +65202,17 @@ _0203E710: ldrsh r3, [r5, #0xe2] add r4, r5, #0x24 add r0, r5, #0xe8 - strh r3, [sp, #0x14] + strh r3, [sp, #0x14 + SUB_0203D538_STACK_OFFSET] ldrh r3, [r5, #0xe0] - strb r6, [sp, #0x10] - strh r3, [sp, #0x12] + strb r6, [sp, #0x10 + SUB_0203D538_STACK_OFFSET] + strh r3, [sp, #0x12 + SUB_0203D538_STACK_OFFSET] ldr r3, [r5, #0x10] mla r1, r3, r1, r4 bl sub_0200D670 ldr r0, _0203E4B0 ; =_020AFE74 ldr r2, _0203E508 ; =_0209C850 ldr r0, [r0] - add r1, sp, #0x10 + add r1, sp, #0x10 + SUB_0203D538_STACK_OFFSET add r0, r0, #0x138 bl sub_0200D670 ldr r2, _0203E4B0 ; =_020AFE74 @@ -62696,8 +65349,13 @@ _0203E964: b _0203EF9C _0203E984: ldr r0, _0203E4B8 ; =0x0000101C +#ifdef JAPAN + ldr r1, _0203F34C_JP ; =0x00002FEC + add r2, r4, #0x8c +#else add r2, r4, #0x8c mov r1, #0x2cc +#endif bl sub_02046BE8 ldr r0, _0203E4B0 ; =_020AFE74 mov r1, #0x31 @@ -62762,7 +65420,11 @@ _0203EA6C: cmp r0, #4 ldrne r4, _0203EFC0 ; =0x00000291 bne _0203EA80 +#ifdef JAPAN + ldr r4, _0203F35C_JP ; =0x00002468 +#else mov r4, #0x294 +#endif bl sub_0203F00C _0203EA80: ldr r1, _0203E4B0 ; =_020AFE74 @@ -62854,7 +65516,7 @@ _0203EBB4: moveq r0, #0x4c streq r0, [r4] beq _0203EF9C - add r0, sp, #0xcc + add r0, sp, #0xcc + SUB_0203D538_STACK_OFFSET_2 bl InitPreprocessorArgs bl GetRank ldr r1, _0203E4B0 ; =_020AFE74 @@ -62870,8 +65532,8 @@ _0203EBB4: ldr r2, [r1] ldr r1, _0203EFC8 ; =0x000002A1 ldr r3, [r2, #0x3c] - add r2, sp, #0xcc - str r3, [sp, #0xf0] + add r2, sp, #0xcc + SUB_0203D538_STACK_OFFSET_2 + str r3, [sp, #0xf0 + SUB_0203D538_STACK_OFFSET_2] bl sub_02046BE8 ldr r0, _0203E4B0 ; =_020AFE74 mov r1, #0x41 @@ -62895,17 +65557,17 @@ _0203EC28: _0203EC5C: mov r0, #2 bl sub_02017C50 - add r0, sp, #0x7c + add r0, sp, #0x7c + SUB_0203D538_STACK_OFFSET_2 bl InitPreprocessorArgs ldr r0, _0203E4B0 ; =_020AFE74 ldr r0, [r0] ldrb r0, [r0, #0xc] - str r0, [sp, #0x94] + str r0, [sp, #0x94 + SUB_0203D538_STACK_OFFSET_2] bl GetRank - str r0, [sp, #0x98] + str r0, [sp, #0x98 + SUB_0203D538_STACK_OFFSET_2] ldr r0, _0203E4B8 ; =0x0000101C ldr r1, _0203EFCC ; =0x000002A2 - add r2, sp, #0x7c + add r2, sp, #0x7c + SUB_0203D538_STACK_OFFSET_2 bl sub_02046BE8 ldr r0, _0203E4B0 ; =_020AFE74 mov r1, #0x43 @@ -62921,19 +65583,19 @@ _0203ECA8: strne r1, [r0] b _0203EF9C _0203ECC4: - add r0, sp, #0x2c + add r0, sp, #0x2c + SUB_0203D538_STACK_OFFSET_2 bl InitPreprocessorArgs ldr r0, _0203E4B0 ; =_020AFE74 ldr r0, [r0] ldrb r0, [r0, #0xc] bl GetRankUpEntry ldr r0, [r0, #8] - str r0, [sp, #0x50] + str r0, [sp, #0x50 + SUB_0203D538_STACK_OFFSET_2] bl GetRank bl GetRankUpEntry ldr r1, [r0, #8] - ldr r0, [sp, #0x50] - str r1, [sp, #0x54] + ldr r0, [sp, #0x50 + SUB_0203D538_STACK_OFFSET_2] + str r1, [sp, #0x54 + SUB_0203D538_STACK_OFFSET_2] cmp r0, r1 ldreq r0, _0203E4B0 ; =_020AFE74 moveq r1, #0x46 @@ -62942,7 +65604,7 @@ _0203ECC4: beq _0203EF9C ldr r0, _0203E4B8 ; =0x0000101C ldr r1, _0203EFD0 ; =0x000002A3 - add r2, sp, #0x2c + add r2, sp, #0x2c + SUB_0203D538_STACK_OFFSET_2 bl sub_02046BE8 ldr r0, _0203E4B0 ; =_020AFE74 mov r1, #0x45 @@ -62994,7 +65656,11 @@ _0203ED80: ldr r1, _0203E4B0 ; =_020AFE74 ldr r0, _0203E4B8 ; =0x0000101C ldr r2, [r1] +#ifdef JAPAN + ldr r1, _0203F370 ; =0x00002478 +#else mov r1, #0x2a4 +#endif add r2, r2, #0x8c bl sub_02046BE8 ldr r0, _0203E4B0 ; =_020AFE74 @@ -63035,10 +65701,10 @@ _0203EE30: _0203EE68: ldrsh r1, [r4, #0x88] mov r0, #0 - strh r1, [sp, #0xe] + strh r1, [sp, #0xe + SUB_0203D538_STACK_OFFSET] ldrh r1, [r4, #0x86] - strh r1, [sp, #0xc] - strb r0, [sp, #0xa] + strh r1, [sp, #0xc + SUB_0203D538_STACK_OFFSET] + strb r0, [sp, #0xa + SUB_0203D538_STACK_OFFSET] bl sub_02046D20 ldr r0, _0203E4B0 ; =_020AFE74 ldr r0, [r0] @@ -63046,7 +65712,7 @@ _0203EE68: tst r0, #1 moveq r1, #1 movne r1, #0 - add r0, sp, #0xa + add r0, sp, #0xa + SUB_0203D538_STACK_OFFSET and r1, r1, #0xff bl sub_020453F8 ldr r0, _0203E4B0 ; =_020AFE74 @@ -63056,6 +65722,17 @@ _0203EE68: b _0203EF9C _0203EEBC: bl sub_02046028 +#ifdef JAPAN + cmp r0, #2 + cmpne r0, #3 + beq _0203EF64 + cmp r0, #4 + bne _0203EF9C + ldr r1, _0203E4B0 ; =_020AFE74 + ldr r0, _0203E4B8 ; =0x0000101C + ldr r2, [r1] + ldr r1, _0203F348 ; =0x0000245A +#else mov r4, r0 cmp r4, #1 beq _0203EF9C @@ -63091,6 +65768,7 @@ _0203EF00: add r3, r4, #0xe8 str r3, [r4, #0xc4] ldr r2, [r2] +#endif add r2, r2, #0x8c bl sub_02046BE8 ldr r0, _0203E4B0 ; =_020AFE74 @@ -63118,20 +65796,29 @@ _0203EF94: _0203EF9C: mov r0, #0 _0203EFA0: - add sp, sp, #0x11c + add sp, sp, #0x11c + SUB_0203D538_STACK_OFFSET_2 ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} .align 2, 0 -_0203EFA8: .word 0x00000273 -_0203EFAC: .word 0x00000275 -_0203EFB0: .word 0x00000277 -_0203EFB4: .word 0x00000286 -_0203EFB8: .word 0x00000292 -_0203EFBC: .word 0x00000293 -_0203EFC0: .word 0x00000291 -_0203EFC4: .word 0x00000272 -_0203EFC8: .word 0x000002A1 -_0203EFCC: .word 0x000002A2 -_0203EFD0: .word 0x000002A3 +_0203EFA8: .word 0x00000273 + SUB_0203D538_DATA_OFFSET +_0203EFAC: .word 0x00000275 + SUB_0203D538_DATA_OFFSET +_0203EFB0: .word 0x00000277 + SUB_0203D538_DATA_OFFSET +_0203EFB4: .word 0x00000286 + SUB_0203D538_DATA_OFFSET +#ifdef JAPAN +_0203F34C_JP: .word 0x00002FEC +#endif +_0203EFB8: .word 0x00000292 + SUB_0203D538_DATA_OFFSET +_0203EFBC: .word 0x00000293 + SUB_0203D538_DATA_OFFSET +_0203EFC0: .word 0x00000291 + SUB_0203D538_DATA_OFFSET +#ifdef JAPAN +_0203F35C_JP: .word 0x00002468 +#endif +_0203EFC4: .word 0x00000272 + SUB_0203D538_DATA_OFFSET +_0203EFC8: .word 0x000002A1 + SUB_0203D538_DATA_OFFSET +_0203EFCC: .word 0x000002A2 + SUB_0203D538_DATA_OFFSET +_0203EFD0: .word 0x000002A3 + SUB_0203D538_DATA_OFFSET +#ifdef JAPAN +_0203F370: .word 0x00002478 +#endif arm_func_end sub_0203D538 arm_func_start sub_0203EFD4 @@ -63389,7 +66076,11 @@ _0203F324: .align 2, 0 _0203F340: .word _020AFE78 _0203F344: .word _0209C8C8 +#ifdef JAPAN +_0203F348: .word 0x00002345 +#else _0203F348: .word 0x00000975 +#endif _0203F34C: .word _0209C89C _0203F350: .word 0x60481C3B _0203F354: .word _0209C8A8 @@ -63452,6 +66143,14 @@ _0203F404: mov r1, #0 bl SetUnkAdvancedTextBoxFn ldr r0, _0203F8D4 ; =_020AFE78 +#ifdef JAPAN + ldr r1, [r0] + ldrb r0, [r1, #0x2c] + cmp r0, #0 + beq _0203F464 + ldrsb r0, [r1] + ldrsh r1, [r1, #0x12] +#else ldr r2, [r0] ldrb r0, [r2, #0x2c] cmp r0, #0 @@ -63463,6 +66162,7 @@ _0203F404: ldreqsh r1, [r2, #0x12] ldrsb r0, [r2] movne r1, #0 +#endif bl sub_02030A50 ldr r0, _0203F8D4 ; =_020AFE78 ldr r0, [r0] @@ -63881,7 +66581,11 @@ sub_0203F9CC: ; 0x0203F9CC mov r1, r4 bl GetMonsterName ldr r0, _0203FA58 ; =_022AAE2A +#ifdef JAPAN + add r1, r4, #0x120 +#else add r1, r4, #0x124 +#endif mov r2, #0x22 bl memcpy ldrb r2, [r4, #7] @@ -64132,7 +66836,11 @@ sub_0203FD44: ; 0x0203FD44 stmdb sp!, {r4, lr} ldr r4, [r0, #0xb4] ldr r1, _0203FD74 ; =_022AAE2A +#ifdef JAPAN + add r0, r4, #0x120 +#else add r0, r4, #0x124 +#endif mov r2, #0x22 bl memcpy ldr r1, _0203FD78 ; =_022AADFC @@ -64417,7 +67125,11 @@ _020400FC: ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 _02040154: .word _020AFE7C +#ifdef JAPAN +_02040158: .word 0x00000879 +#else _02040158: .word 0x00000A3E +#endif _0204015C: .word _022AAE00 _02040160: .word _0209C93C _02040164: .word 0x00401803 @@ -65272,17 +67984,33 @@ _02040D0C: mov r0, #7 b _02040F88 _02040D28: +#ifndef JAPAN ldrsb r0, [r5] bl sub_020308E4 cmp r0, #0 bne _02040F84 ldrh r0, [sp, #0xa] +#endif tst r0, #0x400 bne _02040D50 tst r0, #1 cmpeq r4, #0 beq _02040F84 _02040D50: +#ifdef JAPAN + ldrb r0, [r5, #0x3f8] + cmp r0, #0 + beq _020410EC + ldr r0, _02040F94 ; =_020AFE7C + ldrsh r0, [r0, #2] + add r0, r5, r0 + ldrb r0, [r0, #0x3e0] + tst r0, #1 + bne _02040F70 +_020410EC: + cmp r4, #0 + addne r0, r5, #0x300 +#else ldr r0, _02040F94 ; =_020AFE7C mov r2, #0 ldr r3, [r0, #8] @@ -65299,6 +68027,7 @@ _02040D7C: bne _02040F70 cmp r4, #0 addne r0, r3, #0x300 +#endif movne r1, #6 strneh r1, [r0, #0xe6] cmp r6, #0 @@ -66235,16 +68964,20 @@ _020418C0: add r1, r1, #0x200 strh r6, [r1, #0xac] ldr r2, [r5] -#ifdef EUROPE +#if defined(EUROPE) add r1, r0, #0x3a4 +#elif defined(JAPAN) + add r1, r0, #0x9f #else add r1, r0, #0xa2 #endif add r2, r2, r8 str r0, [r2, #0x3c] ldr r2, [r5] -#ifdef EUROPE +#if defined(EUROPE) add r3, r1, #0x2400 +#elif defined(JAPAN) + add r3, r1, #0x3f00 #else add r3, r1, #0x2700 #endif @@ -66315,7 +69048,11 @@ _020419D4: add sp, sp, #0x10 ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 +#ifdef JAPAN +_020419F0: .word 0x00001D2C +#else _020419F0: .word 0x000008D4 +#endif _020419F4: .word _020AFE8C _020419F8: .word _0209C97C _020419FC: .word 0x00001013 @@ -66359,7 +69096,11 @@ PrintIqSkillsMenu: ; 0x02041A40 mov r4, r3 bl MemZero mov r1, #0xd +#ifdef JAPAN + ldr r0, _02041ED4 ; =0x00001586 +#else rsb r0, r1, #0xa80 +#endif str r1, [sp, #0xc] mov r1, #0 str r1, [sp, #8] @@ -66425,6 +69166,9 @@ PrintIqSkillsMenu: ; 0x02041A40 add sp, sp, #0xa0 ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 +#ifdef JAPAN +_02041ED4: .word 0x00001586 +#endif _02041B6C: .word _020AFE90 _02041B70: .word 0x80401C33 _02041B74: .word _0209C98C @@ -66707,9 +69451,12 @@ _02041F30: str lr, [sp, #0xb8] str ip, [sp] ldr ip, [sp, #0xb8] -#ifdef EUROPE +#if defined(EUROPE) add ip, ip, #0x32c add ip, ip, #0x2400 +#elif defined(JAPAN) + add ip, ip, #0x358 + add ip, ip, #0x3c00 #else add ip, ip, #0x2a add ip, ip, #0x2700 @@ -66762,7 +69509,11 @@ _02041FE8: ldr r3, [r1, #4] str r0, [sp, #0x14] ldr r2, [r3, #0x838] +#ifdef JAPAN + ldr r1, _02042454 ; =0x00001586 +#else rsb r1, r0, #0xa80 +#endif mov r0, #0x10 str r0, [sp, #0x1c] str r2, [sp, #0x10] @@ -66812,7 +69563,12 @@ _020420D4: .word 0x00003F03 _020420D8: .word 0x00003F07 _020420DC: .word _020AFE98 _020420E0: .word 0x00001013 +#ifdef JAPAN +_020420E4: .word 0x0000158A +_02042454: .word 0x00001586 +#else _020420E4: .word 0x00000A77 +#endif _020420E8: .word 0x80401C33 _020420EC: .word _0209C98C _020420F0: .word sub_0204213C @@ -67034,7 +69790,11 @@ _020423A0: .align 2, 0 _020423B4: .word _020AFEA8 _020423B8: .word sub_020423D8 +#ifdef JAPAN +_020423BC: .word 0x000031F4 +#else _020423BC: .word 0x0000032F +#endif _020423C0: .word sub_0204261C _020423C4: .word _0209C9E4 _020423C8: .word 0x00443C33 @@ -67939,7 +70699,11 @@ _02042F70: ldmia sp!, {r4, r5, pc} .align 2, 0 _02042F88: .word _020AFEB4 +#ifdef JAPAN +_02042F8C: .word 0x0000239B +#else _02042F8C: .word 0x000002F3 +#endif _02042F90: .word sub_0204357C _02042F94: .word sub_020441BC _02042F98: .word sub_02042FB8 @@ -68618,7 +71382,11 @@ sub_0204376C: ; 0x0204376C _020437B4: .word _0209CA88 _020437B8: .word _020AFEB4 _020437BC: .word 0x00000418 +#ifdef JAPAN +_020437C0: .word 0x000023A7 +#else _020437C0: .word 0x000002FF +#endif arm_func_end sub_0204376C arm_func_start sub_020437C4 @@ -68775,7 +71543,11 @@ sub_02043944: ; 0x02043944 ldmia sp!, {r3, pc} .align 2, 0 _020439E8: .word _020AFEB4 +#ifdef JAPAN +_020439EC: .word 0x000023A6 +#else _020439EC: .word 0x000002FE +#endif _020439F0: .word _0209CA78 _020439F4: .word 0x00481813 _020439F8: .word sub_02043BAC @@ -69392,10 +72164,15 @@ sub_02044210: ; 0x02044210 sub sp, sp, #0x54 mov r4, r0 bl sub_02027B1C +#ifdef JAPAN + ldr r3, _020445D8 ; =0x000023A8 +#endif mov r0, r4 mov r1, #0xa mov r2, #2 +#ifndef JAPAN mov r3, #0x300 +#endif bl sub_02026268 bl sub_020434FC str r0, [sp, #0x28] @@ -69411,7 +72188,12 @@ sub_02044210: ; 0x02044210 add sp, sp, #0x54 ldmia sp!, {r3, r4, pc} .align 2, 0 +#ifdef JAPAN +_020445D8: .word 0x000023A8 +_02044268: .word 0x000023A9 +#else _02044268: .word 0x00000301 +#endif arm_func_end sub_02044210 arm_func_start sub_0204426C @@ -69505,11 +72287,20 @@ sub_02044338: ; 0x02044338 bl GetCurrentBagCapacity mov r2, #2 str r0, [sp, #0x2c] +#ifdef JAPAN + add r2, sp, #4 + str r2, [sp] + ldr r3, _0204477C ; =0x000031F7 + mov r0, r5 + mov r1, #0 + mov r2, #2 +#else add r1, sp, #4 str r1, [sp] mov r0, r5 add r3, r2, #0x330 mov r1, #0 +#endif bl sub_020262E0 add r4, r4, #0x10 _020443B0: @@ -69538,7 +72329,12 @@ _020443FC: ldmia sp!, {r4, r5, pc} .align 2, 0 _02044404: .word _020AFEC8 +#ifdef JAPAN +_0204477C: .word 0x000031F7 +_02044408: .word 0x000031F8 +#else _02044408: .word 0x00000333 +#endif arm_func_end sub_02044338 arm_func_start sub_0204440C @@ -69633,12 +72429,16 @@ sub_020444F0: ; 0x020444F0 ldrsh r0, [r0, #8] cmp r0, #0 beq _02044558 -#ifdef EUROPE +#if defined(EUROPE) add r0, r0, #0x4b + add r0, r0, #0x2f00 +#elif defined(JAPAN) + add r0, r0, #0x41 + add r0, r0, #0x1d00 #else add r0, r0, #0x49 -#endif add r0, r0, #0x2f00 +#endif mov r3, r0, lsl #0x10 mov r1, #2 mov r0, r4 @@ -69715,10 +72515,15 @@ sub_02044604: ; 0x02044604 mov r1, #0 strb r1, [r2, #4] bl sub_02027B1C +#ifdef JAPAN + ldr r3, _020449FC ; =0x000031F9 +#endif mov r0, r4 mov r1, #4 mov r2, #0 +#ifndef JAPAN mov r3, #0x334 +#endif bl sub_02026268 bl GetMoneyCarried mov r1, #0x18 @@ -69738,7 +72543,12 @@ _02044678: ldmia sp!, {r3, r4, pc} .align 2, 0 _02044680: .word _020AFED0 +#ifdef JAPAN +_020449FC: .word 0x000031F9 +_02044684: .word 0x000031FA +#else _02044684: .word 0x00000335 +#endif arm_func_end sub_02044604 arm_func_start sub_02044688 @@ -69837,7 +72647,11 @@ _020447A8: _020447E8: .word 0x00000944 _020447EC: .word _0209CB78 _020447F0: .word sub_02044964 +#ifdef JAPAN +_020447F4: .word 0x00000871 +#else _020447F4: .word 0x00000A36 +#endif _020447F8: .word _0209CB88 _020447FC: .word sub_02044990 arm_func_end sub_02044688 @@ -69993,6 +72807,9 @@ sub_020449AC: ; 0x020449AC mov r4, #0 bl sub_02045298 cmp r0, #0 +#ifdef JAPAN + beq _02044A30 +#else bne _020449E8 mov r0, r5 bl sub_02045330 @@ -70002,13 +72819,18 @@ sub_020449AC: ; 0x020449AC bl sub_020584FC b _02044A30 _020449E8: +#endif ldr r1, _02044ADC ; =DUNGEON_PTR add r0, r6, #0x2e ldr r1, [r1] add r0, r0, #0x700 add r1, r1, r5, lsl #2 add r1, r1, #0x12000 +#ifdef JAPAN + ldr r1, [r1, #0xa84] +#else ldr r1, [r1, #0xb28] +#endif mov r2, r4 ldr r7, [r1, #0xb4] bl ov29_022E2A78 @@ -70044,7 +72866,11 @@ _02044A70: ldr r0, [r0] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r0, [r0, #0xa84] +#else ldr r0, [r0, #0xb28] +#endif ldr r0, [r0, #0xb4] add r1, r0, #0x62 _02044A8C: @@ -70072,8 +72898,13 @@ _02044ACC: ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 _02044ADC: .word DUNGEON_PTR +#ifdef JAPAN +_02044AE0: .word 0x00000873 +_02044AE4: .word 0x00000872 +#else _02044AE0: .word 0x00000A3D _02044AE4: .word 0x00000A37 +#endif _02044AE8: .word _0209CB6C arm_func_end sub_020449AC @@ -70112,7 +72943,11 @@ _02044B5C: ldr r0, [r0] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r6, [r0, #0xa84] +#else ldr r6, [r0, #0xb28] +#endif cmp r6, #0 moveq r0, #0 beq _02044B90 @@ -70155,6 +72990,11 @@ _02044BF4: .word DUNGEON_PTR arm_func_start sub_02044BF8 sub_02044BF8: ; 0x02044BF8 +#ifdef JAPAN +#define SUB_02044BF8_LOAD_OFFSET #0xa84 +#else +#define SUB_02044BF8_LOAD_OFFSET #0xb28 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0xbc mov fp, r1 @@ -70222,7 +73062,7 @@ _02044CDC: ldr r0, [r0] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 - ldr r6, [r0, #0xb28] + ldr r6, [r0, SUB_02044BF8_LOAD_OFFSET] mov r0, r6 bl sub_0204533C cmp r0, #0 @@ -70232,12 +73072,20 @@ _02044CDC: mov r0, r6 ldr r8, [r6, #0xb4] bl ov29_02347100 +#ifdef JAPAN + strb r0, [r8, #0x15d] +#else strb r0, [r8, #0x161] +#endif _02044D18: add r0, r7, r4, lsl #2 str r5, [r0, #8] ldr r0, [r6, #0xb4] +#ifdef JAPAN + ldrb r0, [r0, #0x15d] +#else ldrb r0, [r0, #0x161] +#endif cmp r0, #0 movne r1, #0 add r0, r7, r4 @@ -70342,7 +73190,7 @@ _02044E8C: add r1, r1, #0x12000 cmp r0, #0 movne r0, #0x57 - ldr r1, [r1, #0xb28] + ldr r1, [r1, SUB_02044BF8_LOAD_OFFSET] moveq r0, #0x44 and r2, r0, #0xff ldr r0, [sp, #0x14] @@ -70363,7 +73211,7 @@ _02044EE8: ldr r0, [r0] add r0, r0, fp, lsl #2 add r0, r0, #0x12000 - ldr r0, [r0, #0xb28] + ldr r0, [r0, SUB_02044BF8_LOAD_OFFSET] bl sub_0204533C cmp r0, #0 beq _020450F4 @@ -70373,7 +73221,7 @@ _02044EE8: ldr r1, [r0] add r0, r2, fp, lsl #2 add r0, r0, #0x12000 - ldr r2, [r0, #0xb28] + ldr r2, [r0, SUB_02044BF8_LOAD_OFFSET] add r0, r1, #0x9000 ldr r8, [r2, #0xb4] ldr r2, [r0, #0x84c] @@ -70558,7 +73406,11 @@ _020451C0: .word _0209CBD0 _020451C4: .word _0209CBD8 _020451C8: .word _0209CBE0 _020451CC: .word _0209CBE8 +#ifdef JAPAN +_020451D0: .word 0x00000875 +#else _020451D0: .word 0x00000A3A +#endif _020451D4: .word _0209CB98 arm_func_end sub_02044BF8 @@ -70727,7 +73579,11 @@ _020453C8: ldr r0, [r0] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r0, [r0, #0xa84] +#else ldr r0, [r0, #0xb28] +#endif bl sub_0204533C cmp r0, #0 mvneq r0, #0 @@ -70963,7 +73819,11 @@ _02045688: ldr r0, _02045A1C ; =_020AFED4 mov r4, #0x11 ldr r3, [r0] +#ifdef JAPAN + ldr r2, _02045D9C ; =0x00002FC5 +#else mov r1, #8 +#endif str r4, [r3, #8] ldr r3, [r0] add r2, r4, #0x2c0 @@ -71019,12 +73879,16 @@ _02045798: add r4, r4, #0x300 str ip, [sp] ldrsh r4, [r4, #0x88] -#ifdef EUROPE +#if defined(EUROPE) add r4, r4, #0xd3 + add r4, r4, #0x2900 +#elif defined(JAPAN) + add r4, r4, #0xce + add r4, r4, #0x4100 #else add r4, r4, #0xd1 -#endif add r4, r4, #0x2900 +#endif mov r4, r4, lsl #0x10 mov r4, r4, lsr #0x10 stmib sp, {r4, ip} @@ -71151,9 +74015,15 @@ _020459E0: str r1, [r0, #4] bl sub_02046624 ldr r0, _02045A1C ; =_020AFED4 +#ifdef JAPAN + ldr r2, _02045DC0 ; =0x00002FC4 + ldr r3, [r0] + mov r1, #0x18 +#else mov r1, #0x18 ldr r3, [r0] mov r2, #0x2d0 +#endif ldrsb r0, [r3, #0x14] add r3, r3, #0x1c bl ShowStringIdInDialogueBox @@ -71161,22 +74031,33 @@ _02045A14: add sp, sp, #0x194 ldmia sp!, {r4, r5, pc} .align 2, 0 +#ifdef JAPAN +#define SUB_020454E0_OFFSET 0x2CF4 +#else +#define SUB_020454E0_OFFSET 0 +#endif _02045A1C: .word _020AFED4 -_02045A20: .word 0x000002CD -_02045A24: .word 0x000002D5 -_02045A28: .word 0x000002CE +_02045A20: .word 0x000002CD + SUB_020454E0_OFFSET +_02045A24: .word 0x000002D5 + SUB_020454E0_OFFSET +_02045A28: .word 0x000002CE + SUB_020454E0_OFFSET _02045A2C: .word _0209CC0C -_02045A30: .word 0x000002CF +_02045A30: .word 0x000002CF + SUB_020454E0_OFFSET _02045A34: .word _0209CC38 _02045A38: .word 0x00300011 +#ifdef JAPAN +_02045D9C: .word 0x00002FC5 +#endif _02045A3C: .word 0x00300033 _02045A40: .word _0209CC48 _02045A44: .word 0x00001013 -_02045A48: .word 0x000008E4 +_02045A48: .word 0x000008E4 + SUB_020454E0_OFFSET _02045A4C: .word _0209CC28 -_02045A50: .word 0x000002D6 +_02045A50: .word 0x000002D6 + SUB_020454E0_OFFSET _02045A54: .word _0209CC18 _02045A58: .word _0209CC60 +#ifdef JAPAN +_02045DC0: .word 0x00002FC4 +#endif arm_func_end sub_020454E0 arm_func_start sub_02045A5C @@ -71337,10 +74218,17 @@ _02045BFC: ldr r0, _02045F90 ; =_020AFED4 mov r4, #0x11 ldr r3, [r0] +#ifdef JAPAN + ldr r2, _02046318 ; =0x00002FC5 + str r4, [r3, #8] + ldr r3, [r0] + mov r1, #8 +#else mov r1, #8 str r4, [r3, #8] ldr r3, [r0] add r2, r4, #0x2c0 +#endif ldrsb r0, [r3, #0x14] add r3, r3, #0x1c bl ShowStringIdInDialogueBox @@ -71393,12 +74281,16 @@ _02045D0C: add r4, r4, #0x300 str ip, [sp] ldrsh r4, [r4, #0x88] -#ifdef EUROPE +#if defined(EUROPE) add r4, r4, #0xd3 + add r4, r4, #0x2900 +#elif defined(JAPAN) + add r4, r4, #0xce + add r4, r4, #0x4100 #else add r4, r4, #0xd1 -#endif add r4, r4, #0x2900 +#endif mov r4, r4, lsl #0x10 mov r4, r4, lsr #0x10 stmib sp, {r4, ip} @@ -71525,9 +74417,15 @@ _02045F54: str r1, [r0, #4] bl sub_02046624 ldr r0, _02045F90 ; =_020AFED4 +#ifdef JAPAN + ldr r2, _0204633C ; =0x00002FC4 + ldr r3, [r0] + mov r1, #0x18 +#else mov r1, #0x18 ldr r3, [r0] mov r2, #0x2d0 +#endif ldrsb r0, [r3, #0x14] add r3, r3, #0x1c bl ShowStringIdInDialogueBox @@ -71535,22 +74433,33 @@ _02045F88: add sp, sp, #0x194 ldmia sp!, {r4, r5, pc} .align 2, 0 +#ifdef JAPAN +#define SUB_02045A5C_OFFSET 0x2CF4 +#else +#define SUB_02045A5C_OFFSET 0 +#endif _02045F90: .word _020AFED4 -_02045F94: .word 0x000002CD -_02045F98: .word 0x000002D5 -_02045F9C: .word 0x000002CE +_02045F94: .word 0x000002CD + SUB_02045A5C_OFFSET +_02045F98: .word 0x000002D5 + SUB_02045A5C_OFFSET +_02045F9C: .word 0x000002CE + SUB_02045A5C_OFFSET _02045FA0: .word _0209CC0C -_02045FA4: .word 0x000002CF +_02045FA4: .word 0x000002CF + SUB_02045A5C_OFFSET _02045FA8: .word _0209CC38 _02045FAC: .word 0x00300011 +#ifdef JAPAN +_02046318: .word 0x00002FC5 +#endif _02045FB0: .word 0x00300033 _02045FB4: .word _0209CC48 _02045FB8: .word 0x00001013 -_02045FBC: .word 0x000008E4 +_02045FBC: .word 0x000008E4 + SUB_02045A5C_OFFSET _02045FC0: .word _0209CC28 -_02045FC4: .word 0x000002D6 +_02045FC4: .word 0x000002D6 + SUB_02045A5C_OFFSET _02045FC8: .word _0209CC18 _02045FCC: .word _0209CC60 +#ifdef JAPAN +_0204633C: .word 0x00002FC4 +#endif arm_func_end sub_02045A5C arm_func_start sub_02045FD0 @@ -72091,7 +75000,11 @@ _020466D0: ldmia sp!, {r4, pc} .align 2, 0 _0204672C: .word _020AFED8 +#ifdef JAPAN +_02046730: .word 0x00000B8A +#else _02046730: .word 0x00000A43 +#endif _02046734: .word _0209CC80 _02046738: .word 0x00001815 _0204673C: .word sub_02046798 @@ -73448,10 +76361,17 @@ sub_02047760: ; 0x02047760 str r4, [sp, #0x14] strb ip, [sp, #0x10] add r0, r4, #0x1000 +#ifdef JAPAN + mov r1, #0x10 + str r1, [r0, #0xf90] + add r0, r4, #0x1f00 + mov r1, #0x1540 +#else mov r3, #0x10 str r3, [r0, #0xf90] ldr r1, _0204792C ; =0x00000A44 add r0, r4, #0x1f00 +#endif strh r1, [r0, #0x8c] str ip, [sp] ldr r1, _02047930 ; =0x0040180A @@ -73540,7 +76460,9 @@ _02047918: _02047920: .word _020AFEEC _02047924: .word 0x00002020 _02047928: .word _0209CCC0 +#ifndef JAPAN _0204792C: .word 0x00000A44 +#endif _02047930: .word 0x0040180A _02047934: .word sub_02047AB4 _02047938: .word _0209CCD0 @@ -74871,9 +77793,15 @@ _020489EC: ldmia sp!, {r3, r4, pc} .align 2, 0 _020489F4: .word NOTIFY_NOTE +#ifdef JAPAN +_020489F8: .word 0x000004C3 +_020489FC: .word _020AFF00 +_02048A00: .word 0x000004C4 +#else _020489F8: .word 0x00000232 _020489FC: .word _020AFF00 _02048A00: .word 0x00000233 +#endif _02048A04: .word _020AFF14 _02048A08: .word PARTNER_TALK_KIND_TABLE arm_func_end InitMainTeamAfterQuiz @@ -75428,7 +78356,11 @@ _0204900C: add r1, r5, #0x1c str r0, [r4, #0x45c] add r0, r1, #0xb000 +#ifdef JAPAN + mov r1, #0x18c +#else mov r1, #0x1dc +#endif bl sub_0204A3E4 str r0, [r4, #0x460] bl GetTime @@ -75512,7 +78444,11 @@ _020491C4: mov r0, r8 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 +#ifdef JAPAN +_02049218: .word 0x0000B60C +#else _02049218: .word 0x0000B65C +#endif _0204921C: .word _0209CD6C _02049220: .word 0x09011416 _02049224: .word 0x00007F6B @@ -75607,7 +78543,11 @@ _02049310: ldr r0, [r0, #4] ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_0204932C: .word 0x0000B60C +#else _0204932C: .word 0x0000B65C +#endif _02049330: .word _020AFF40 _02049334: .word 0x09011416 arm_func_end ReadSaveHeader @@ -75795,7 +78735,11 @@ _020494B8: cmp r0, r1 add r0, r6, #0x1c add r0, r0, #0xb000 +#ifdef JAPAN + mov r1, #0x18c +#else mov r1, #0x1dc +#endif movne r5, #3 bl sub_0204A1DC ldr r1, [r4, #0x460] @@ -75815,7 +78759,11 @@ _020495E8: add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_020495FC: .word 0x0000B60C +#else _020495FC: .word 0x0000B65C +#endif _02049600: .word _0209CDA4 _02049604: .word _020AFF40 _02049608: .word 0x09011416 @@ -76033,9 +78981,15 @@ _020498C8: ldr r0, [r3, #0xc] cmp r0, #1 bne _02049908 +#ifdef JAPAN + ldr r1, _02049A30 ; =0x0000040C + ldrsb r0, [r3] + add r2, r1, #0xbd +#else ldrsb r0, [r3] ldr r1, _02049A30 ; =0x0000040C mov r2, #0x238 +#endif mov r3, #0 bl ShowStringIdInDialogueBox ldr r0, _02049A18 ; =_020AFF4C @@ -76129,7 +79083,11 @@ _02049A2C: .word 0x000F1207 _02049A30: .word 0x0000040C _02049A34: .word _0209CDF8 _02049A38: .word 0x0000061C +#ifdef JAPAN +_02049A3C: .word 0x000004CA +#else _02049A3C: .word 0x00000239 +#endif arm_func_end sub_02049730 arm_func_start sub_02049A40 @@ -76220,7 +79178,11 @@ _02049B28: ; jump table _02049B4C: ldrsb r0, [r2] ldr r1, _02049D38 ; =0x00000408 +#ifdef JAPAN + mov r2, #0x4e0 +#else ldr r2, _02049D3C ; =0x0000024F +#endif mov r3, #0 bl ShowStringIdInDialogueBox ldr r0, _02049D34 ; =_020AFF54 @@ -76265,6 +79227,15 @@ _02049BEC: bl sub_02029FBC ldr r0, _02049D34 ; =_020AFF54 mov r3, #0 +#ifdef JAPAN + ldr r2, [r0] + ldr r0, [r2, #8] + cmp r0, #1 + bne _02049C2C + ldr r1, _02049D40 ; =0x0000040C + ldrsb r0, [r2] + add r2, r1, #0xbd +#else ldr r1, [r0] ldr r0, [r1, #8] cmp r0, #1 @@ -76272,6 +79243,7 @@ _02049BEC: ldrsb r0, [r1] ldr r1, _02049D40 ; =0x0000040C mov r2, #0x238 +#endif bl ShowStringIdInDialogueBox ldr r0, _02049D34 ; =_020AFF54 mov r1, #8 @@ -76280,10 +79252,17 @@ _02049BEC: b _02049D2C _02049C2C: cmp r0, #0 +#ifdef JAPAN + ldrsb r0, [r2] + ldr r1, _02049D44 ; =0x0000061C + bne _02049C58 + ldr r2, _0204A0B0 ; =0x000004E1 +#else ldrsb r0, [r1] ldr r1, _02049D44 ; =0x0000061C bne _02049C58 mov r2, #0x250 +#endif bl ShowStringIdInDialogueBox ldr r0, _02049D34 ; =_020AFF54 mov r1, #5 @@ -76355,10 +79334,17 @@ _02049D2C: .align 2, 0 _02049D34: .word _020AFF54 _02049D38: .word 0x00000408 +#ifdef JAPAN +_02049D40: .word 0x0000040C +_02049D44: .word 0x0000061C +_0204A0B0: .word 0x000004E1 +_02049D48: .word 0x000004CB +#else _02049D3C: .word 0x0000024F _02049D40: .word 0x0000040C _02049D44: .word 0x0000061C _02049D48: .word 0x0000023A +#endif arm_func_end sub_02049B0C arm_func_start sub_02049D4C @@ -76597,7 +79583,11 @@ sub_0204A02C: ; 0x0204A02C ldr r3, _0204A078 ; =_020AFF64 ldr r1, _0204A07C ; =0x00000408 ldr ip, [r3] +#ifdef JAPAN + add r2, r1, #0xc1 +#else mov r2, #0x238 +#endif strb r0, [ip] ldr r0, [r3] mov r3, #0 @@ -76670,7 +79660,11 @@ sub_0204A0FC: ; 0x0204A0FC ldr r3, _0204A148 ; =_020AFF68 ldr r1, _0204A14C ; =0x00000408 ldr ip, [r3] +#ifdef JAPAN + add r2, r1, #0xd0 +#else ldr r2, _0204A150 ; =0x00000247 +#endif strb r0, [ip] ldr r0, [r3] mov r3, #0 @@ -76681,7 +79675,9 @@ sub_0204A0FC: ; 0x0204A0FC .align 2, 0 _0204A148: .word _020AFF68 _0204A14C: .word 0x00000408 +#ifndef JAPAN _0204A150: .word 0x00000247 +#endif arm_func_end sub_0204A0FC arm_func_start sub_0204A154 @@ -76722,7 +79718,11 @@ _0204A1A0: .word sub_0207B9EC sub_0204A1A4: ; 0x0204A1A4 stmdb sp!, {r3, lr} ldr r0, _0204A1C4 ; =_022AAEAC +#ifdef JAPAN + mov r1, #0x1a0 +#else mov r1, #0x1f0 +#endif bl MemZero ldr r1, _0204A1C4 ; =_022AAEAC ldr r0, _0204A1C8 ; =_020AFF6C @@ -76744,6 +79744,11 @@ _0204A1D8: .word _020AFF6C arm_func_start sub_0204A1DC sub_0204A1DC: ; 0x0204A1DC +#ifdef JAPAN +#define SUB_0204A1DC_OFFSET -0x50 +#else +#define SUB_0204A1DC_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} sub sp, sp, #0x14 mov r3, r0 @@ -76756,6 +79761,22 @@ sub_0204A1DC: ; 0x0204A1DC ldr r1, [r1] mov r2, #0x200 bl CopyBitsFrom +#ifdef JAPAN + ldr r4, _0204A3E0 ; =_020AFF6C + mov r7, #0 + add r6, sp, #4 + mov r5, #0x28 +_0204A220: + ldr r0, [r4] + add r1, r7, r7, lsl #2 + add r3, r0, #0x40 + mov r0, r6 + mov r2, r5 + add r1, r3, r1 + bl CopyBitsFrom + add r7, r7, #1 + cmp r7, #0x10 +#else ldr r5, _0204A3E0 ; =_020AFF6C mov r8, #0 add r7, sp, #4 @@ -76770,6 +79791,7 @@ _0204A220: bl CopyBitsFrom add r8, r8, #1 cmp r8, #0x10 +#endif blt _0204A220 ldr r5, _0204A3E0 ; =_020AFF6C mov r8, #0 @@ -76779,7 +79801,7 @@ _0204A220: _0204A258: ldr r1, [r5] mov r0, r7 - add r1, r1, #0xe0 + add r1, r1, #0xe0 + SUB_0204A1DC_OFFSET mla r1, r8, r4, r1 mov r2, r6 bl CopyBitsFrom @@ -76805,27 +79827,27 @@ _0204A298: add r0, r0, sb moveq r1, r4 add sb, sb, #1 - strb r1, [r0, #0x1a0] + strb r1, [r0, #0x1a0 + SUB_0204A1DC_OFFSET] cmp sb, #0x10 blt _0204A298 ldr r1, _0204A3E0 ; =_020AFF6C add r0, sp, #4 ldr r1, [r1] mov r2, #0x1b0 - add r1, r1, #0x1b0 + add r1, r1, #0x1b0 + SUB_0204A1DC_OFFSET bl CopyBitsFrom ldr r1, _0204A3E0 ; =_020AFF6C add r0, sp, #4 ldr r1, [r1] mov r2, #0xe - add r1, r1, #0xe6 + add r1, r1, #0xe6 + SUB_0204A1DC_OFFSET add r1, r1, #0x100 bl CopyBitsFrom ldr r1, _0204A3E0 ; =_020AFF6C add r0, sp, #4 ldr r1, [r1] mov r2, #0xe - add r1, r1, #0x1e8 + add r1, r1, #0x1e8 + SUB_0204A1DC_OFFSET bl CopyBitsFrom add r0, sp, #4 add r1, sp, #0 @@ -76837,7 +79859,7 @@ _0204A298: movne r3, #1 ldr r2, [r1] moveq r3, #0 - strb r3, [r2, #0x1ea] + strb r3, [r2, #0x1ea + SUB_0204A1DC_OFFSET] add r0, sp, #4 add r1, sp, #0 mov r2, #1 @@ -76848,7 +79870,7 @@ _0204A298: movne r3, #1 ldr r2, [r1] moveq r3, #0 - strb r3, [r2, #0x1eb] + strb r3, [r2, #0x1eb + SUB_0204A1DC_OFFSET] add r0, sp, #4 add r1, sp, #0 mov r2, #1 @@ -76859,7 +79881,7 @@ _0204A298: movne r3, #1 ldr r2, [r1] moveq r3, #0 - strb r3, [r2, #0x1ec] + strb r3, [r2, #0x1ec + SUB_0204A1DC_OFFSET] add r0, sp, #4 add r1, sp, #0 mov r2, #1 @@ -76871,7 +79893,7 @@ _0204A298: ldr r1, [r1] moveq r2, #0 add r0, sp, #4 - strb r2, [r1, #0x1ed] + strb r2, [r1, #0x1ed + SUB_0204A1DC_OFFSET] bl sub_020509BC ldr r0, [sp, #0xc] add sp, sp, #0x14 @@ -76882,6 +79904,11 @@ _0204A3E0: .word _020AFF6C arm_func_start sub_0204A3E4 sub_0204A3E4: ; 0x0204A3E4 +#ifdef JAPAN +#define SUB_0204A3E4_OFFSET -0x50 +#else +#define SUB_0204A3E4_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} sub sp, sp, #0x14 mov r5, r0 @@ -76898,6 +79925,22 @@ sub_0204A3E4: ; 0x0204A3E4 ldr r1, [r1] mov r2, #0x200 bl CopyBitsTo +#ifdef JAPAN + ldr r4, _0204A5CC ; =_020AFF6C + mov r7, #0 + add r6, sp, #4 + mov r5, #0x28 +_0204A438: + ldr r0, [r4] + add r1, r7, r7, lsl #2 + add r3, r0, #0x40 + mov r0, r6 + mov r2, r5 + add r1, r3, r1 + bl CopyBitsTo + add r7, r7, #1 + cmp r7, #0x10 +#else ldr r5, _0204A5CC ; =_020AFF6C mov r8, #0 add r7, sp, #4 @@ -76912,6 +79955,7 @@ _0204A438: bl CopyBitsTo add r8, r8, #1 cmp r8, #0x10 +#endif blt _0204A438 ldr r5, _0204A5CC ; =_020AFF6C mov r8, #0 @@ -76921,7 +79965,7 @@ _0204A438: _0204A470: ldr r1, [r5] mov r0, r7 - add r1, r1, #0xe0 + add r1, r1, #0xe0 + SUB_0204A3E4_OFFSET mla r1, r8, r4, r1 mov r2, r6 bl CopyBitsTo @@ -76938,7 +79982,7 @@ _0204A4AC: ldr r0, [r5] mov r2, r6 add r0, r0, r4 - ldrb r0, [r0, #0x1a0] + ldrb r0, [r0, #0x1a0 + SUB_0204A3E4_OFFSET] cmp r0, #0 movne r1, sb moveq r1, r8 @@ -76951,25 +79995,25 @@ _0204A4AC: add r0, sp, #4 ldr r1, [r1] mov r2, #0x1b0 - add r1, r1, #0x1b0 + add r1, r1, #0x1b0 + SUB_0204A3E4_OFFSET bl CopyBitsTo ldr r1, _0204A5CC ; =_020AFF6C add r0, sp, #4 ldr r1, [r1] mov r2, #0xe - add r1, r1, #0xe6 + add r1, r1, #0xe6 + SUB_0204A3E4_OFFSET add r1, r1, #0x100 bl CopyBitsTo ldr r1, _0204A5CC ; =_020AFF6C add r0, sp, #4 ldr r1, [r1] mov r2, #0xe - add r1, r1, #0x1e8 + add r1, r1, #0x1e8 + SUB_0204A3E4_OFFSET bl CopyBitsTo ldr r0, _0204A5CC ; =_020AFF6C mov r2, #1 ldr r0, [r0] - ldrb r0, [r0, #0x1ea] + ldrb r0, [r0, #0x1ea + SUB_0204A3E4_OFFSET] cmp r0, #0 addne r1, sp, #1 addeq r1, sp, #0 @@ -76978,7 +80022,7 @@ _0204A4AC: ldr r0, _0204A5CC ; =_020AFF6C mov r2, #1 ldr r0, [r0] - ldrb r0, [r0, #0x1eb] + ldrb r0, [r0, #0x1eb + SUB_0204A3E4_OFFSET] cmp r0, #0 addne r1, sp, #1 addeq r1, sp, #0 @@ -76987,7 +80031,7 @@ _0204A4AC: ldr r0, _0204A5CC ; =_020AFF6C mov r2, #1 ldr r0, [r0] - ldrb r0, [r0, #0x1ec] + ldrb r0, [r0, #0x1ec + SUB_0204A3E4_OFFSET] cmp r0, #0 addne r1, sp, #1 addeq r1, sp, #0 @@ -76996,7 +80040,7 @@ _0204A4AC: ldr r0, _0204A5CC ; =_020AFF6C mov r2, #1 ldr r0, [r0] - ldrb r0, [r0, #0x1ed] + ldrb r0, [r0, #0x1ed + SUB_0204A3E4_OFFSET] cmp r0, #0 addne r1, sp, #1 addeq r1, sp, #0 @@ -77913,6 +80957,15 @@ _0204B0C4: bl ZinitScriptVariable bl InitEventFlagScriptVars mov sl, #0 +#ifdef JAPAN + mov sb, sl + mov r8, #0x21 + mov r7, #0x13c + mov r6, sl + mov r5, #0x22 + mov fp, sl + mvn r4, #0 +#else ldr r7, _0204B300 ; =0x00000137 mov sb, sl #ifdef EUROPE @@ -77924,6 +80977,7 @@ _0204B0C4: mov r6, sl mov r5, #0x22 mov fp, sl +#endif _0204B118: mov r2, sl, lsl #0x10 mov r0, sb @@ -77941,7 +80995,11 @@ _0204B118: mov r0, fp mov r1, #0x23 mov r2, r2, lsr #0x10 +#ifdef JAPAN + mov r3, #0x13c +#else mov r3, r7 +#endif bl SaveScriptVariableValueAtIndex mov r2, sl, lsl #0x10 mov r0, #0 @@ -78048,9 +81106,9 @@ _0204B118: .align 2, 0 _0204B2F8: .word _022AB0AC _0204B2FC: .word SCRIPT_VARS -#ifdef EUROPE +#if defined(EUROPE) _0204B300: .word 0x00000143 -#else +#elif !defined(JAPAN) _0204B300: .word 0x00000137 #endif arm_func_end InitScriptVariableValues @@ -78058,17 +81116,29 @@ _0204B300: .word 0x00000137 arm_func_start InitEventFlagScriptVars InitEventFlagScriptVars: ; 0x0204B304 stmdb sp!, {r3, lr} +#ifdef JAPAN + mov r0, #0 + mov r1, #0x1c + mov r2, #0x13c +#else ldr r2, _0204B3CC ; =0x00000137 mov r0, #0 mov r1, #0x1c +#endif bl SaveScriptVariableValue mov r0, #0 mov r2, r0 mov r1, #0x1d bl SaveScriptVariableValue +#ifdef JAPAN + mov r0, #0 + mov r1, #0x1e + mov r2, #0x13c +#else ldr r2, _0204B3CC ; =0x00000137 mov r0, #0 mov r1, #0x1e +#endif bl SaveScriptVariableValue mov r1, #0x1f sub r2, r1, #0x20 @@ -78108,9 +81178,9 @@ InitEventFlagScriptVars: ; 0x0204B304 bl SaveScriptVariableValue ldmia sp!, {r3, pc} .align 2, 0 -#ifdef EUROPE +#if defined(EUROPE) _0204B3CC: .word 0x00000143 -#else +#elif !defined(JAPAN) _0204B3CC: .word 0x00000137 #endif arm_func_end InitEventFlagScriptVars @@ -81689,20 +84759,32 @@ sub_0204E114: ; 0x0204E114 mov r4, r0 bl GetDungeonModeSpecial cmp r0, #3 +#ifdef JAPAN + moveq r0, #0x37c +#else ldreq r0, _0204E14C ; =0x00000B2C +#endif beq _0204E144 cmp r4, #0xd4 ldreq r0, _0204E150 ; =0x00000B2D +#ifdef JAPAN + addne r0, r4, #0x2c8 +#else addne r0, r4, #0x278 addne r0, r0, #0x800 +#endif movne r0, r0, lsl #0x10 movne r0, r0, lsr #0x10 _0204E144: bl StringFromId ldmia sp!, {r4, pc} .align 2, 0 +#ifdef JAPAN +_0204E150: .word 0x0000037D +#else _0204E14C: .word 0x00000B2C _0204E150: .word 0x00000B2D +#endif arm_func_end sub_0204E114 arm_func_start sub_0204E154 @@ -83435,15 +86517,23 @@ _0204F728: b _0204F770 _0204F734: bl GetGroundNameId +#ifdef JAPAN + add r0, r0, #3 + add r0, r0, #0x100 +#else ldr r1, _0204F778 ; =0xFFFFFEFD add r0, r0, r1 +#endif mov r0, r0, lsl #0x10 mov r4, r0, lsr #0x10 b _0204F770 _0204F74C: -#ifdef EUROPE +#if defined(EUROPE) add r0, r0, #0xbe add r0, r0, #0x4300 +#elif defined(JAPAN) + add r0, r0, #0x26c + add r0, r0, #0x400 #else add r0, r0, #0x3bc add r0, r0, #0x4000 @@ -83452,19 +86542,25 @@ _0204F74C: mov r4, r0, lsr #0x10 b _0204F770 _0204F760: -#ifdef EUROPE +#if defined(EUROPE) add r0, r0, #0xbd + add r0, r0, #0x4200 +#elif defined(JAPAN) + add r0, r0, #0x6f + add r0, r0, #0x700 #else add r0, r0, #0xbb -#endif add r0, r0, #0x4200 +#endif mov r0, r0, lsl #0x10 mov r4, r0, lsr #0x10 _0204F770: mov r0, r4 ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifndef JAPAN _0204F778: .word 0xFFFFFEFD +#endif arm_func_end sub_0204F6F8 arm_func_start sub_0204F77C @@ -83641,12 +86737,18 @@ _0204F980: mov r0, #0x1c bl GetPerformanceFlagWithChecks cmp r0, #0 +#ifdef JAPAN + moveq r0, #0x1c4 +#else ldreq r0, _0204F9B4 ; =0x000042BA +#endif ldmeqia sp!, {r4, pc} _0204F99C: -#ifdef EUROPE +#if defined(EUROPE) add r0, r4, #0xba add r0, r0, #0x4100 +#elif defined(JAPAN) + add r0, r4, #0xc2 #else add r0, r4, #0x1b8 add r0, r0, #0x4000 @@ -83655,9 +86757,11 @@ _0204F99C: mov r0, r0, lsr #0x10 ldmia sp!, {r4, pc} .align 2, 0 -#ifdef EUROPE +#if defined(EUROPE) _0204F9B0: .word 0x000042BB _0204F9B4: .word 0x000042BC +#elif defined(JAPAN) +_0204F9B0: .word 0x000001C3 #else _0204F9B0: .word 0x000042B9 _0204F9B4: .word 0x000042BA @@ -83666,31 +86770,31 @@ _0204F9B4: .word 0x000042BA arm_func_start sub_0204F9B8 sub_0204F9B8: ; 0x0204F9B8 - ldr ip, _0204F9C4 ; =ResetPlayTimer + ldr ip, _0204F9C4 ; =sub_02050E08 ldr r0, _0204F9C8 ; =_022AB694 bx ip .align 2, 0 -_0204F9C4: .word ResetPlayTimer +_0204F9C4: .word sub_02050E08 _0204F9C8: .word _022AB694 arm_func_end sub_0204F9B8 arm_func_start sub_0204F9CC sub_0204F9CC: ; 0x0204F9CC - ldr ip, _0204F9D8 ; =PlayTimerTick + ldr ip, _0204F9D8 ; =sub_02050E18 ldr r0, _0204F9DC ; =_022AB694 bx ip .align 2, 0 -_0204F9D8: .word PlayTimerTick +_0204F9D8: .word sub_02050E18 _0204F9DC: .word _022AB694 arm_func_end sub_0204F9CC arm_func_start sub_0204F9E0 sub_0204F9E0: ; 0x0204F9E0 - ldr ip, _0204F9EC ; =GetPlayTimeSeconds + ldr ip, _0204F9EC ; =sub_02050E54 ldr r0, _0204F9F0 ; =_022AB694 bx ip .align 2, 0 -_0204F9EC: .word GetPlayTimeSeconds +_0204F9EC: .word sub_02050E54 _0204F9F0: .word _022AB694 arm_func_end sub_0204F9E0 @@ -84919,9 +88023,12 @@ _02050918: .word ADVENTURE_LOG_PTR arm_func_start GetAbilityString GetAbilityString: ; 0x0205091C -#ifdef EUROPE +#if defined(EUROPE) add r1, r1, #0x5e0 add r1, r1, #0x3000 +#elif defined(JAPAN) + add r1, r1, #0x81 + add r1, r1, #0x4800 #else add r1, r1, #0xde add r1, r1, #0x3500 @@ -84937,9 +88044,12 @@ _02050938: .word CopyNStringFromId arm_func_start GetAbilityDescStringId GetAbilityDescStringId: ; 0x0205093C -#ifdef EUROPE +#if defined(EUROPE) add r0, r0, #0x25c add r0, r0, #0x3400 +#elif defined(JAPAN) + add r0, r0, #0xfd + add r0, r0, #0x4800 #else add r0, r0, #0x5a add r0, r0, #0x3600 @@ -84951,12 +88061,16 @@ GetAbilityDescStringId: ; 0x0205093C arm_func_start GetTypeStringId GetTypeStringId: ; 0x02050950 -#ifdef EUROPE +#if defined(EUROPE) add r0, r0, #0xcd + add r0, r0, #0x3500 +#elif defined(JAPAN) + add r0, r0, #0x6e + add r0, r0, #0x4800 #else add r0, r0, #0xcb -#endif add r0, r0, #0x3500 +#endif mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 bx lr @@ -85086,20 +88200,37 @@ _02050AC0: StoreDefaultTeamData: ; 0x02050ACC stmdb sp!, {lr} sub sp, sp, #0x14 +#ifdef JAPAN + ldr r1, _02050E54 ; =0x000004C5 + add r0, sp, #0 +#else add r0, sp, #0 mov r1, #0x234 +#endif bl GetStringFromFileVeneer ldr r0, _02050B08 ; =_022AB918 add r1, sp, #0 +#ifdef JAPAN + mov r2, #5 +#else mov r2, #0xa +#endif bl StrncpyName ldr r0, _02050B0C ; =_022AB918 mov r1, #0 +#ifdef JAPAN + str r1, [r0, #8] + strb r1, [r0, #0xc] +#else str r1, [r0, #0xc] strb r1, [r0, #0x10] +#endif add sp, sp, #0x14 ldmia sp!, {pc} .align 2, 0 +#ifdef JAPAN +_02050E54: .word 0x000004C5 +#endif _02050B08: .word _022AB918 _02050B0C: .word _022AB918 arm_func_end StoreDefaultTeamData @@ -85118,7 +88249,11 @@ GetMainTeamNameWithCheck: ; 0x02050B10 beq _02050B4C ldr r1, _02050B74 ; =_022AB918 mov r0, r4 +#ifdef JAPAN + mov r2, #5 +#else mov r2, #0xa +#endif bl StrncpySimpleNoPad b _02050B68 _02050B4C: @@ -85127,7 +88262,11 @@ _02050B4C: bl GetStringFromFileVeneer add r1, sp, #0 mov r0, r4 +#ifdef JAPAN + mov r2, #5 +#else mov r2, #0xa +#endif bl StrncpyName _02050B68: add sp, sp, #0x40 @@ -85135,14 +88274,22 @@ _02050B68: .align 2, 0 _02050B70: .word _022AB918 _02050B74: .word _022AB918 +#ifdef JAPAN +_02050B78: .word 0x000004C8 +#else _02050B78: .word 0x00000237 +#endif arm_func_end GetMainTeamNameWithCheck arm_func_start GetMainTeamName GetMainTeamName: ; 0x02050B7C ldr ip, _02050B8C ; =StrncpySimpleNoPadSafe ldr r1, _02050B90 ; =_022AB918 +#ifdef JAPAN + mov r2, #5 +#else mov r2, #0xa +#endif bx ip .align 2, 0 _02050B8C: .word StrncpySimpleNoPadSafe @@ -85157,7 +88304,11 @@ _02050B9C: ldrb r2, [r0], #1 strb r2, [r1, r3] add r3, r3, #1 +#ifdef JAPAN + cmp r3, #5 +#else cmp r3, #0xa +#endif blt _02050B9C bx lr .align 2, 0 @@ -85186,7 +88337,11 @@ _02050BF0: bl GetRankUpEntry ldr r1, _02050C0C ; =_022AB918 ldr r2, [r0, #4] +#ifdef JAPAN + ldr r0, [r1, #8] +#else ldr r0, [r1, #0xc] +#endif sub r0, r2, r0 ldmia sp!, {r4, pc} .align 2, 0 @@ -85195,29 +88350,34 @@ _02050C0C: .word _022AB918 arm_func_start sub_02050C10 sub_02050C10: ; 0x02050C10 +#ifdef JAPAN +#define SUB_02050C10_OFFSET #8 +#else +#define SUB_02050C10_OFFSET #0xc +#endif stmdb sp!, {r3, lr} ldr r1, _02050C6C ; =_022AB918 - ldr r2, [r1, #0xc] + ldr r2, [r1, SUB_02050C10_OFFSET] add r2, r2, r0 mov r0, #0x16 - str r2, [r1, #0xc] + str r2, [r1, SUB_02050C10_OFFSET] bl GetPerformanceFlagWithChecks cmp r0, #0 beq _02050C4C ldr r0, _02050C6C ; =_022AB918 ldr r1, _02050C70 ; =0x05F5E0FF - ldr r2, [r0, #0xc] + ldr r2, [r0, SUB_02050C10_OFFSET] cmp r2, r1 - strgt r1, [r0, #0xc] + strgt r1, [r0, SUB_02050C10_OFFSET] ldmia sp!, {r3, pc} _02050C4C: mov r0, #7 bl GetRankUpEntry ldr r1, _02050C6C ; =_022AB918 ldr r2, [r0, #4] - ldr r0, [r1, #0xc] + ldr r0, [r1, SUB_02050C10_OFFSET] cmp r0, r2 - strgt r2, [r1, #0xc] + strgt r2, [r1, SUB_02050C10_OFFSET] ldmia sp!, {r3, pc} .align 2, 0 _02050C6C: .word _022AB918 @@ -85233,7 +88393,11 @@ GetRank: ; 0x02050C74 _02050C84: mov r0, r5 bl GetRankUpEntry +#ifdef JAPAN + ldr r1, [r4, #8] +#else ldr r1, [r4, #0xc] +#endif ldr r0, [r0, #4] cmp r1, r0 blt _02050CAC @@ -85285,7 +88449,11 @@ sub_02050CF8: ; 0x02050CF8 bl sub_02050990 ldr r1, _02050D70 ; =_022AB918 add r0, sp, #0 +#ifdef JAPAN + mov r2, #0x28 +#else mov r2, #0x50 +#endif bl CopyBitsTo ldr r1, _02050D74 ; =_022AB924 add r0, sp, #0 @@ -85295,7 +88463,11 @@ sub_02050CF8: ; 0x02050CF8 bl GetPerformanceFlagWithChecks ldr r1, _02050D78 ; =_022AB918 tst r0, #0xff +#ifdef JAPAN + strb r0, [r1, #0xc] +#else strb r0, [r1, #0x10] +#endif ldrne r1, _02050D7C ; =ARM9_UNKNOWN_DATA__NA_209E6BC add r0, sp, #0 ldreq r1, _02050D80 ; =_0209E6BD @@ -85325,7 +88497,11 @@ sub_02050D84: ; 0x02050D84 bl sub_02050974 ldr r1, _02050DFC ; =_022AB918 add r0, sp, #4 +#ifdef JAPAN + mov r2, #0x28 +#else mov r2, #0x50 +#endif bl CopyBitsFrom ldr r1, _02050E00 ; =_022AB924 add r0, sp, #4 @@ -85341,7 +88517,11 @@ sub_02050D84: ; 0x02050D84 movne r2, #1 moveq r2, #0 add r0, sp, #4 +#ifdef JAPAN + strb r2, [r1, #0xc] +#else strb r2, [r1, #0x10] +#endif bl sub_020509BC ldr r0, [sp, #0xc] add sp, sp, #0x14 @@ -85352,16 +88532,16 @@ _02050E00: .word _022AB924 _02050E04: .word _022AB918 arm_func_end sub_02050D84 - arm_func_start ResetPlayTimer -ResetPlayTimer: ; 0x02050E08 + arm_func_start sub_02050E08 +sub_02050E08: ; 0x02050E08 mov r1, #0 strb r1, [r0, #4] str r1, [r0] bx lr - arm_func_end ResetPlayTimer + arm_func_end sub_02050E08 - arm_func_start PlayTimerTick -PlayTimerTick: ; 0x02050E18 + arm_func_start sub_02050E18 +sub_02050E18: ; 0x02050E18 ldrb r1, [r0, #4] add r2, r1, #1 and r1, r2, #0xff @@ -85378,13 +88558,13 @@ PlayTimerTick: ; 0x02050E18 bx lr .align 2, 0 _02050E50: .word 0x022550FF - arm_func_end PlayTimerTick + arm_func_end sub_02050E18 - arm_func_start GetPlayTimeSeconds -GetPlayTimeSeconds: ; 0x02050E54 + arm_func_start sub_02050E54 +sub_02050E54: ; 0x02050E54 ldr r0, [r0] bx lr - arm_func_end GetPlayTimeSeconds + arm_func_end sub_02050E54 arm_func_start sub_02050E5C sub_02050E5C: ; 0x02050E5C @@ -87125,12 +90305,16 @@ GetNameRaw: ; 0x02052394 mov r0, r1 mov r1, #0x258 bl _s32_div_f -#ifdef EUROPE +#if defined(EUROPE) add r0, r1, #0x21 + add r0, r0, #0x2200 +#elif defined(JAPAN) + add r0, r1, #0x590 + add r0, r0, #0x1000 #else add r0, r1, #0x1f -#endif add r0, r0, #0x2200 +#endif mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 bl StringFromId @@ -87149,12 +90333,16 @@ GetName: ; 0x020523D0 mov r1, #0x258 mov r4, r2 bl _s32_div_f -#ifdef EUROPE +#if defined(EUROPE) add r0, r1, #0x21 + add r0, r0, #0x2200 +#elif defined(JAPAN) + add r0, r1, #0x590 + add r0, r0, #0x1000 #else add r0, r1, #0x1f -#endif add r0, r0, #0x2200 +#endif mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 bl StringFromId @@ -87184,20 +90372,28 @@ SprintfStatic__02052418: ; 0x02052418 arm_func_start GetNameWithGender GetNameWithGender: ; 0x02052440 +#ifdef JAPAN + stmdb sp!, {r4, r5, r6, lr} +#else stmdb sp!, {r3, r4, r5, r6, lr} sub sp, sp, #4 +#endif mov r5, r1 mov r6, r0 mov r0, r5 mov r1, #0x258 mov r4, r2 bl _s32_div_f -#ifdef EUROPE +#if defined(EUROPE) add r0, r1, #0x21 + add r0, r0, #0x2200 +#elif defined(JAPAN) + add r0, r1, #0x590 + add r0, r0, #0x1000 #else add r0, r1, #0x1f -#endif add r0, r0, #0x2200 +#endif mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 bl StringFromId @@ -87215,11 +90411,27 @@ GetNameWithGender: ; 0x02052440 mov r0, r6 mov r2, r4 bl SprintfStatic__02052418 +#ifdef JAPAN + ldmia sp!, {r4, r5, r6, pc} +#else b _020524EC +#endif _020524B0: cmp r0, #2 bne _020524D4 ldr r1, _020524FC ; =_020A31E4 +#ifdef JAPAN + mov r0, r6 + mov r2, r4 + bl SprintfStatic__02052418 + ldmia sp!, {r4, r5, r6, pc} +_020524D4: + ldr r1, _02052838 ; =0x020A45C8 + mov r0, r6 + mov r2, r4 + bl SprintfStatic__02052418 + ldmia sp!, {r4, r5, r6, pc} +#else mov r5, #0xbe mov r0, r6 mov r2, r4 @@ -87236,10 +90448,14 @@ _020524D4: _020524EC: add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, pc} +#endif .align 2, 0 _020524F4: .word _020B09B4 _020524F8: .word _020A31D4 _020524FC: .word _020A31E4 +#ifdef JAPAN +_02052838_JP: .word 0x020A45C8 +#endif arm_func_end GetNameWithGender arm_func_start GetSpeciesString @@ -87346,12 +90562,16 @@ _02052684: mov r0, r4 mov r1, #0x258 bl _s32_div_f -#ifdef EUROPE +#if defined(EUROPE) add r0, r1, #0x21 + add r0, r0, #0x2200 +#elif defined(JAPAN) + add r0, r1, #0x590 + add r0, r0, #0x1000 #else add r0, r1, #0x1f -#endif add r0, r0, #0x2200 +#endif mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 bl StringFromId @@ -87361,8 +90581,10 @@ _02052684: bl SprintfStatic__02052418 ldmia sp!, {r3, r4, r5, pc} .align 2, 0 -#ifdef EUROPE +#if defined(EUROPE) _020526B8: .word 0x000022EA +#elif defined(JAPAN) +_020526B8: .word 0x00001659 #else _020526B8: .word 0x000022E8 #endif @@ -87376,12 +90598,16 @@ GetNameString: ; 0x020526C8 stmdb sp!, {r3, lr} mov r1, #0x258 bl _s32_div_f -#ifdef EUROPE +#if defined(EUROPE) add r0, r1, #0x21 + add r0, r0, #0x2200 +#elif defined(JAPAN) + add r0, r1, #0x590 + add r0, r0, #0x1000 #else add r0, r1, #0x1f -#endif add r0, r0, #0x2200 +#endif mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 bl StringFromId @@ -87445,12 +90671,15 @@ GetCategoryString: ; 0x0205275C mov r0, r5 mov r1, #0x258 bl _s32_div_f -#ifdef EUROPE +#if defined(EUROPE) add r0, r1, #0x79 + add r0, r0, #0x2400 +#elif defined(JAPAN) + add r0, r1, #0x1a40 #else add r0, r1, #0x77 -#endif add r0, r0, #0x2400 +#endif mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 bl StringFromId diff --git a/asm/main_02054C24.s b/asm/main_02054C24.s index aed9a9de..43e9b87c 100644 --- a/asm/main_02054C24.s +++ b/asm/main_02054C24.s @@ -424,12 +424,19 @@ IsMonsterOnTeam: ; 0x02055148 mov sb, r1 bl GetGameMode cmp r0, #3 +#ifdef JAPAN + mov r6, #1 + bne _020554FC +#else bne _020551C0 +#endif ldr r0, _02055230 ; =TEAM_MEMBER_TABLE_PTR mov r8, #0 ldr r7, [r0] mov r5, r8 +#ifndef JAPAN mov r6, #1 +#endif ldr r4, _02055234 ; =_020B0A4C b _020551B8 _0205517C: @@ -452,6 +459,37 @@ _020551B0: _020551B8: cmp r8, #2 blt _0205517C +#ifdef JAPAN + b _020551C0 +_020554FC: + ldr r0, _02055230 ; =_020B0A48 + mov r8, #2 + ldr r0, [r0] + mov r5, #0 + add r7, r0, #0x88 + ldr r4, _02055234 ; =_020B0A4C + b _02055554 +_02055518: + ldrb r0, [r7] + tst r0, #1 + movne r0, r6 + moveq r0, r5 + tst r0, #0xff + beq _0205554C + ldrsh r0, [r7, #4] + ldr r2, [r4, sb, lsl #2] + mov r1, sl + blx r2 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0205554C: + add r8, r8, #1 + add r7, r7, #0x44 +_02055554: + cmp r8, #5 + blt _02055518 +#endif _020551C0: ldr r0, _02055230 ; =TEAM_MEMBER_TABLE_PTR mov r8, #5 @@ -2420,6 +2458,15 @@ SetTeamSetupHeroAndPartnerOnly: ; 0x020569CC bl GetMainCharacter2MemberIdx mov r6, r0 bl GetMainCharacter3MemberIdx +#ifdef JAPAN + mov sl, #0 + ldr r1, _02056AAC ; =TEAM_MEMBER_TABLE_PTR + mov r7, r0 + ldr r0, [r1] + mov fp, sl + add r0, r0, #0x9000 + ldr sb, [r0, #0x84c] +#else mov r8, #0 ldr r1, _02056AAC ; =TEAM_MEMBER_TABLE_PTR mov r7, r0 @@ -2428,6 +2475,7 @@ SetTeamSetupHeroAndPartnerOnly: ; 0x020569CC add r0, r1, #0x9000 ldr sb, [r0, #0x84c] mov fp, r8 +#endif mov r4, #1 _02056A08: ldrb r0, [sb] @@ -2485,6 +2533,14 @@ SetTeamSetupHeroOnly: ; 0x02056AB0 bl sub_020568A4 ldr r1, _02056B54 ; =TEAM_MEMBER_TABLE_PTR mov r7, r0 +#ifdef JAPAN + ldr r0, [r1] + mov sl, #0 + add r0, r0, #0x9000 + mov r6, #1 + ldr sb, [r0, #0x84c] + mov r5, sl +#else mov r8, #0 ldr r1, [r1] mov r6, #1 @@ -2492,6 +2548,7 @@ SetTeamSetupHeroOnly: ; 0x02056AB0 ldr sb, [r0, #0x84c] mov sl, r8 mov r5, r8 +#endif mov r4, r6 _02056AE0: ldrb r0, [sb] @@ -3921,6 +3978,7 @@ _02057DE4: _02057DF8: .word TEAM_MEMBER_TABLE_PTR arm_func_end RefillTeam +#ifndef JAPAN arm_func_start sub_02057DFC sub_02057DFC: ; 0x02057DFC stmdb sp!, {r3, r4, r5, r6, r7, lr} @@ -3965,6 +4023,7 @@ _02057E78: .align 2, 0 _02057E8C: .word TEAM_MEMBER_TABLE_PTR arm_func_end sub_02057DFC +#endif arm_func_start sub_02057E90 sub_02057E90: ; 0x02057E90 @@ -4698,7 +4757,9 @@ sub_020587C8: ; 0x020587C8 sub_020587E0: ; 0x020587E0 stmdb sp!, {r4, lr} mov r4, r0 +#ifndef JAPAN bl sub_02057DFC +#endif bl sub_02057E90 mvn r0, #0 bl sub_02058644 @@ -4994,12 +5055,16 @@ _02058C18: .word _020AFC4C arm_func_start GetIqSkillStringId GetIqSkillStringId: ; 0x02058C1C -#ifdef EUROPE +#if defined(EUROPE) add r0, r0, #0xe7 + add r0, r0, #0x2600 +#elif defined(JAPAN) + add r0, r0, #0x13 + add r0, r0, #0x3f00 #else add r0, r0, #0xe5 -#endif add r0, r0, #0x2600 +#endif mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 bx lr @@ -5384,7 +5449,11 @@ GetExplorerMazeTeamName: ; 0x02059060 bne _020590A8 mov r0, r5 add r1, r4, #2 +#ifdef JAPAN + mov r2, #5 +#else mov r2, #0xa +#endif bl StrncpySimpleNoPadSafe ldmia sp!, {r3, r4, r5, pc} _020590A8: @@ -5394,7 +5463,11 @@ _020590A8: ldmia sp!, {r3, r4, r5, pc} .align 2, 0 _020590B8: .word TEAM_MEMBER_TABLE_PTR +#ifdef JAPAN +_020590BC: .word 0x000004C6 +#else _020590BC: .word 0x00000235 +#endif arm_func_end GetExplorerMazeTeamName arm_func_start sub_020590C0 @@ -7058,11 +7131,16 @@ _0205A7D0: add r1, r6, #0x1c mov r7, r0 bl sub_0200D670 +#ifdef JAPAN + ldr r2, _0205B0D0 ; =0x00002330 +#endif add r5, sp, #0x6c str r7, [sp, #0xa4] add r0, sp, #0xbc mov r1, #0xc8 +#ifndef JAPAN mov r2, #0x960 +#endif mov r3, #0 str r5, [sp] bl PreprocessStringFromId @@ -7429,55 +7507,76 @@ _0205AC5C: add r3, sp, #0xbc mov r0, r4 mov r1, #4 +#ifdef JAPAN + mov r2, #0x49 +#else mov r2, #0x58 +#endif bl DrawTextInWindow ldrb r2, [r6, #0x44] mov r0, r4 mov r1, #4 +#ifdef JAPAN + add r2, r2, #0x33c + add r2, r2, #0x2000 +#else add r2, r2, #0x16c add r2, r2, #0x800 +#endif mov r2, r2, lsl #0x10 mov r3, r2, lsr #0x10 +#ifdef JAPAN + mov r2, #0x58 +#else mov r2, #0x67 +#endif bl sub_02026268 _0205AD98: add sp, sp, #0x184 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 -_0205ADA0: .word 0x00000951 -_0205ADA4: .word 0x00000952 -_0205ADA8: .word 0x00000953 -_0205ADAC: .word 0x00000954 -_0205ADB0: .word 0x00000955 -_0205ADB4: .word 0x00000957 -_0205ADB8: .word 0x0000095C -_0205ADBC: .word 0x0000095B -_0205ADC0: .word 0x00000956 -_0205ADC4: .word 0x00000959 -_0205ADC8: .word 0x0000095E -_0205ADCC: .word 0x0000095D +#ifdef JAPAN +#define SUB_0205A4B4_OFFSET 0x19D0 +#else +#define SUB_0205A4B4_OFFSET 0 +#endif +_0205ADA0: .word 0x00000951 + SUB_0205A4B4_OFFSET +_0205ADA4: .word 0x00000952 + SUB_0205A4B4_OFFSET +_0205ADA8: .word 0x00000953 + SUB_0205A4B4_OFFSET +_0205ADAC: .word 0x00000954 + SUB_0205A4B4_OFFSET +_0205ADB0: .word 0x00000955 + SUB_0205A4B4_OFFSET +_0205ADB4: .word 0x00000957 + SUB_0205A4B4_OFFSET +_0205ADB8: .word 0x0000095C + SUB_0205A4B4_OFFSET +_0205ADBC: .word 0x0000095B + SUB_0205A4B4_OFFSET +_0205ADC0: .word 0x00000956 + SUB_0205A4B4_OFFSET +_0205ADC4: .word 0x00000959 + SUB_0205A4B4_OFFSET +_0205ADC8: .word 0x0000095E + SUB_0205A4B4_OFFSET +_0205ADCC: .word 0x0000095D + SUB_0205A4B4_OFFSET _0205ADD0: .word _020A34B8 -_0205ADD4: .word 0x0000095F +#ifdef JAPAN +_0205B0D0: .word 0x00002330 +#endif +_0205ADD4: .word 0x0000095F + SUB_0205A4B4_OFFSET _0205ADD8: .word _020A34D2 -_0205ADDC: .word 0x00000961 -_0205ADE0: .word 0x00000962 -_0205ADE4: .word 0x00000972 -_0205ADE8: .word 0x00000973 +_0205ADDC: .word 0x00000961 + SUB_0205A4B4_OFFSET +_0205ADE0: .word 0x00000962 + SUB_0205A4B4_OFFSET +_0205ADE4: .word 0x00000972 + SUB_0205A4B4_OFFSET +_0205ADE8: .word 0x00000973 + SUB_0205A4B4_OFFSET _0205ADEC: .word STATUS_NAME_STRING_IDS _0205ADF0: .word _020A34FC -_0205ADF4: .word 0x00000968 +_0205ADF4: .word 0x00000968 + SUB_0205A4B4_OFFSET _0205ADF8: .word _020A3514 _0205ADFC: .word _020A351C _0205AE00: .word _020A3524 -_0205AE04: .word 0x00000969 -_0205AE08: .word 0x00000963 -_0205AE0C: .word 0x00000964 -_0205AE10: .word 0x00000965 -_0205AE14: .word 0x00000967 -_0205AE18: .word 0x0000096B -_0205AE1C: .word 0x00000966 +_0205AE04: .word 0x00000969 + SUB_0205A4B4_OFFSET +_0205AE08: .word 0x00000963 + SUB_0205A4B4_OFFSET +_0205AE0C: .word 0x00000964 + SUB_0205A4B4_OFFSET +_0205AE10: .word 0x00000965 + SUB_0205A4B4_OFFSET +_0205AE14: .word 0x00000967 + SUB_0205A4B4_OFFSET +_0205AE18: .word 0x0000096B + SUB_0205A4B4_OFFSET +_0205AE1C: .word 0x00000966 + SUB_0205A4B4_OFFSET _0205AE20: .word _020A34C4 -_0205AE24: .word 0x0000096A +_0205AE24: .word 0x0000096A + SUB_0205A4B4_OFFSET arm_func_end sub_0205A4B4 arm_func_start CreateMonsterSummaryFromTeamMember @@ -8110,8 +8209,10 @@ _0205B680: ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} .align 2, 0 _0205B688: .word _020A3678 -#ifdef EUROPE +#if defined(EUROPE) _0205B68C: .word 0x000038CB +#elif defined(JAPAN) +_0205B68C: .word 0x00003507 #else _0205B68C: .word 0x000038C9 #endif @@ -12676,12 +12777,17 @@ _0205F260: _0205F27C: ldrb r0, [r5] cmp r0, #8 +#ifdef JAPAN + moveq r0, #1 + streqb r0, [r6] +#else bne _0205F29C ldrsh r0, [r5, #0x14] bl IsItemInTreasureBoxes cmp r0, #0 movne r0, #1 strneb r0, [r6] +#endif _0205F29C: cmp r4, #0xff ldrneb r0, [r5, #4] @@ -14604,7 +14710,11 @@ _02060BAC: bl MemZero ldr r1, [r5, #0xc] add r0, sp, #4 +#ifdef JAPAN + mov r2, #5 +#else mov r2, #0xa +#endif bl StrncpySimpleNoPadSafe _02060BC4: add r0, sp, #4 @@ -14693,7 +14803,9 @@ _02060CE4: ldr r1, [r5, #0x54] mov r0, r4 mov r2, #0x12 +#ifndef JAPAN mov r3, #0 +#endif bl sub_0202568C mov r1, #0 strb r1, [r0] @@ -14764,27 +14876,23 @@ _02060DE4: add sp, sp, #0x80 ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 +#if defined(EUROPE) +#define SUB_02060AFC_OFFSET 2 +#elif defined(JAPAN) +#define SUB_02060AFC_OFFSET -0x3C2 +#else +#define SUB_02060AFC_OFFSET 0 +#endif _02060DF4: .word _020A4654 _02060DF8: .word _020A4664 _02060DFC: .word REMOTE_STRING_PTR_TABLE -#ifdef EUROPE -_02060E00: .word 0x000038CB -_02060E04: .word 0x000038CD -_02060E08: .word 0x000038CE -_02060E0C: .word 0x000038CC -#else -_02060E00: .word 0x000038C9 -_02060E04: .word 0x000038CB -_02060E08: .word 0x000038CC -_02060E0C: .word 0x000038CA -#endif +_02060E00: .word 0x000038C9 + SUB_02060AFC_OFFSET +_02060E04: .word 0x000038CB + SUB_02060AFC_OFFSET +_02060E08: .word 0x000038CC + SUB_02060AFC_OFFSET +_02060E0C: .word 0x000038CA + SUB_02060AFC_OFFSET _02060E10: .word _020A4644 _02060E14: .word _020A4674 -#ifdef EUROPE -_02060E18: .word 0x00003C2C -#else -_02060E18: .word 0x00003C2A -#endif +_02060E18: .word 0x00003C2A + SUB_02060AFC_OFFSET _02060E1C: .word _020A4678 _02060E20: .word RANK_STRING_PTR_TABLE arm_func_end sub_02060AFC @@ -14827,8 +14935,10 @@ _02060EA0: .word _020A4654 _02060EA4: .word _020A4664 _02060EA8: .word REMOTE_STRING_PTR_TABLE _02060EAC: .word _020A4644 -#ifdef EUROPE +#if defined(EUROPE) _02060EB0: .word 0x00003C4F +#elif defined(JAPAN) +_02060EB0: .word 0x0000388B #else _02060EB0: .word 0x00003C4D #endif @@ -14917,6 +15027,11 @@ _02060FD4: .word MISSION_STRING_IDS arm_func_start sub_02060FD8 sub_02060FD8: ; 0x02060FD8 +#ifdef JAPAN +#define SUB_02060FD8_ARG #0x3e +#else +#define SUB_02060FD8_ARG #0x42 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} sub sp, sp, #0x14c mov sb, r0 @@ -14952,7 +15067,11 @@ _02061050: bl MemZero ldr r1, [sb, #0xc] add r0, sp, #0x32 +#ifdef JAPAN + mov r2, #5 +#else mov r2, #0xa +#endif bl StrncpySimpleNoPadSafe _02061068: add r0, sp, #0x32 @@ -14993,7 +15112,9 @@ _020610B8: bl DrawTextInWindow b _02061124 _020610E8: +#ifndef JAPAN mov r3, r7 +#endif mov r2, #0x12 bl sub_0202568C mov r2, r7 @@ -15176,7 +15297,9 @@ _02061370: ldr r1, [sb, #0x58] mov r0, r5 mov r2, #0x12 +#ifndef JAPAN mov r3, #0 +#endif bl sub_0202568C mov r1, #0 strb r1, [r0] @@ -15189,7 +15312,9 @@ _02061370: mov r0, r5 add r1, r1, #0x24 mov r2, #0x12 +#ifndef JAPAN mov r3, #0 +#endif bl sub_0202568C mov r1, #0 strb r1, [r0] @@ -15203,33 +15328,57 @@ _020613D4: cmp r1, #0xf beq _02061518 ldr r0, [sb, #0x64] +#ifdef JAPAN + mov r6, #0x3e +#endif cmp r0, #0 beq _02061418 ldrb r0, [r0] cmp r0, #7 cmpne r0, #5 bne _02061418 +#ifdef JAPAN + mov sl, #0x2d + ldr r3, _02061BF0 ; =0x00003C21 + mov r0, r8 + mov r2, sl +#else mov r6, #0x2d ldr r3, _02061BF0 ; =0x00003C21 mov r0, r8 mov r2, r6 +#endif mov r1, #4 bl sub_02026268 b _0206144C _02061418: cmp r1, #0xe +#ifdef JAPAN + mov sl, #0x2d +#else mov r6, #0x2d +#endif mov r1, #4 bne _0206143C ldr r3, _02061BF4 ; =0x00003C20 mov r0, r8 +#ifdef JAPAN + mov r2, sl + bl sub_02026268 + add r6, r6, #0x10 +#else mov r2, r6 bl sub_02026268 +#endif b _0206144C _0206143C: ldr r3, _02061BF8 ; =0x00003C1F mov r0, r8 +#ifdef JAPAN + mov r2, sl +#else mov r2, r6 +#endif bl sub_02026268 _0206144C: ldrb r0, [sb, #0x46] @@ -15249,7 +15398,11 @@ _0206147C: bl MemZero ldr r1, [sb, #0xc] add r0, sp, #8 +#ifdef JAPAN + mov r2, #5 +#else mov r2, #0xa +#endif bl StrncpySimpleNoPadSafe _02061494: ldr r1, _02061BFC ; =_020A4688 @@ -15257,9 +15410,15 @@ _02061494: mov r0, r4 bl SprintfStatic__020609E8 mov r0, r8 +#ifdef JAPAN + mov r1, r6 + mov r2, sl + mov r3, r4 +#else mov r2, r6 mov r3, r4 mov r1, #0x42 +#endif bl DrawTextInWindow b _02061518 _020614BC: @@ -15271,8 +15430,13 @@ _020614BC: bne _020614EC ldr r3, _02061C00 ; =0x00003C37 mov r0, r8 +#ifdef JAPAN + mov r1, r6 + mov r2, sl +#else mov r2, r6 mov r1, #0x42 +#endif bl sub_02026268 b _02061518 _020614EC: @@ -15282,9 +15446,15 @@ _020614EC: ldr r1, _02061C04 ; =_020A4698 mov r0, r4 bl SprintfStatic__020609E8 +#ifdef JAPAN + mov r1, r6 + mov r2, sl + mov r0, r8 +#else mov r2, r6 mov r0, r8 mov r1, #0x42 +#endif mov r3, r4 bl DrawTextInWindow _02061518: @@ -15300,7 +15470,11 @@ _02061518: add r0, r0, #0xfc and r0, r0, #0xff cmp r0, #2 +#ifdef JAPAN + movls r1, #0x56 +#else movls r1, #0x43 +#endif movhi r1, #0x40 mov r0, r8 add r1, r1, #0x6c @@ -15326,7 +15500,7 @@ _02061518: bl sub_02061DC8 mov r0, r8 mov r3, r4 - mov r1, #0x42 + mov r1, SUB_02060FD8_ARG mov r2, #0x3a bl DrawTextInWindow add r7, r7, #0x47 @@ -15340,7 +15514,7 @@ _02061518: mov r2, #0x100 bl sub_02061FDC mov r0, r8 - mov r1, #0x42 + mov r1, SUB_02060FD8_ARG mov r2, r7 mov r3, r4 bl DrawTextInWindow @@ -15398,7 +15572,7 @@ _020616B4: mov r0, r8 mov r2, r7 mov r3, r4 - mov r1, #0x42 + mov r1, SUB_02060FD8_ARG bl DrawTextInWindow _020616C8: ldr r1, [sb, #0x5c] @@ -15416,7 +15590,7 @@ _020616C8: ldr r3, _02061C2C ; =0x00003C2A mov r0, r8 mov r2, r7 - mov r1, #0x42 + mov r1, SUB_02060FD8_ARG bl sub_02026268 b _020617D4 _02061710: @@ -15454,7 +15628,7 @@ _02061764: mov r0, r8 ldr r3, [r1, sl, lsl #2] mov r2, r7 - mov r1, #0x42 + mov r1, SUB_02060FD8_ARG bl DrawTextInWindow add r0, sp, #0xfc bl InitPreprocessorArgs @@ -15467,7 +15641,11 @@ _02061764: mov r3, #0 bl PreprocessStringFromId mov r0, r8 +#ifdef JAPAN + mov r1, #0x52 +#else mov r1, #0x56 +#endif mov r2, r7 mov r3, r4 bl DrawTextInWindow @@ -15523,7 +15701,7 @@ _02061850: bl PreprocessString mov r2, r6 mov r0, r8 - mov r1, #0x42 + mov r1, SUB_02060FD8_ARG mov r3, r4 bl DrawTextInWindow b _02061BA4 @@ -15544,7 +15722,7 @@ _020618A0: bl PreprocessString mov r2, r6 mov r0, r8 - mov r1, #0x42 + mov r1, SUB_02060FD8_ARG mov r3, r4 bl DrawTextInWindow b _02061BA4 @@ -15565,7 +15743,7 @@ _020618F0: bl PreprocessString mov r2, r6 mov r0, r8 - mov r1, #0x42 + mov r1, SUB_02060FD8_ARG mov r3, r4 bl DrawTextInWindow b _02061BA4 @@ -15586,7 +15764,7 @@ _02061940: bl PreprocessString mov r2, r6 mov r0, r8 - mov r1, #0x42 + mov r1, SUB_02060FD8_ARG mov r3, r4 bl DrawTextInWindow b _02061BA4 @@ -15607,7 +15785,7 @@ _02061990: bl PreprocessString mov r2, r6 mov r0, r8 - mov r1, #0x42 + mov r1, SUB_02060FD8_ARG mov r3, r4 bl DrawTextInWindow b _02061BA4 @@ -15640,7 +15818,7 @@ _02061A0C: bl PreprocessString mov r2, r6 mov r0, r8 - mov r1, #0x42 + mov r1, SUB_02060FD8_ARG mov r3, r4 bl DrawTextInWindow b _02061BA4 @@ -15653,7 +15831,7 @@ _02061A5C: mov r0, r8 mov r2, r6 mov r3, r5 - mov r1, #0x42 + mov r1, SUB_02060FD8_ARG bl DrawTextInWindow b _02061BA4 _02061A88: @@ -15663,7 +15841,7 @@ _02061A88: mov r0, r8 mov r2, r6 mov r3, r5 - mov r1, #0x42 + mov r1, SUB_02060FD8_ARG bl DrawTextInWindow b _02061BA4 _02061AAC: @@ -15701,7 +15879,7 @@ _02061AAC: mov r3, #4 bl PreprocessString mov r0, r8 - mov r1, #0x42 + mov r1, SUB_02060FD8_ARG add r2, r7, #0xd mov r3, r4 bl DrawTextInWindow @@ -15726,7 +15904,7 @@ _02061B48: mov r3, #4 bl PreprocessString mov r0, r8 - mov r1, #0x42 + mov r1, SUB_02060FD8_ARG add r2, r7, #0xd mov r3, r4 bl DrawTextInWindow @@ -15743,8 +15921,10 @@ _02061BA4: add sp, sp, #0x14c ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} .align 2, 0 -#ifdef EUROPE +#if defined(EUROPE) #define SUB_02060FD8_OFFSET 2 +#elif defined(JAPAN) +#define SUB_02060FD8_OFFSET -0x3C2 #else #define SUB_02060FD8_OFFSET 0 #endif @@ -15812,15 +15992,16 @@ sub_02061C60: ; 0x02061C60 bl sub_02061CC8 ldmia sp!, {r3, r4, r5, pc} .align 2, 0 -#ifdef EUROPE -_02061CBC: .word 0x00003C20 -_02061CC0: .word _020A46A8 -_02061CC4: .word 0x00003C50 +#if defined(EUROPE) +#define SUB_02061C60_OFFSET 2 +#elif defined(JAPAN) +#define SUB_02061C60_OFFSET -0x3C2 #else -_02061CBC: .word 0x00003C1E -_02061CC0: .word _020A46A8 -_02061CC4: .word 0x00003C4E +#define SUB_02061C60_OFFSET 0 #endif +_02061CBC: .word 0x00003C1E + SUB_02061C60_OFFSET +_02061CC0: .word _020A46A8 +_02061CC4: .word 0x00003C4E + SUB_02061C60_OFFSET arm_func_end sub_02061C60 arm_func_start sub_02061CC8 @@ -15893,8 +16074,10 @@ _02061DB8: add sp, sp, #0x28 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 -#ifdef EUROPE +#if defined(EUROPE) _02061DC4: .word 0x00003C33 +#elif defined(JAPAN) +_02061DC4: .word 0x0000386F #else _02061DC4: .word 0x00003C31 #endif @@ -15966,7 +16149,7 @@ _02061E74: b _02061EE8 _02061E80: str r6, [sp, #4] -#ifdef EUROPE +#if defined(EUROPE) || defined(JAPAN) ldr r2, _02062298 ; =0x00003C42 #else mov r2, #0x3c40 @@ -15978,7 +16161,11 @@ _02061E8C: b _02061EE8 _02061E98: str r6, [sp, #4] +#ifdef JAPAN + mov r2, #0x3880 +#else ldr r2, _02061F24 ; =0x00003C42 +#endif b _02061EE8 _02061EA4: ldr r2, _02061F28 ; =0x00003C43 @@ -16022,11 +16209,15 @@ _02061F14: .word 0x00003C3B + SUB_02061DC8_WORD_OFFSET _02061F18: .word 0x00003C3E #endif _02061F1C: .word 0x00003C3F + SUB_02061DC8_WORD_OFFSET -#ifdef EUROPE +#if defined(EUROPE) _02062298: .word 0x00003C42 +#elif defined(JAPAN) +_02062298: .word 0x0000387E #endif _02061F20: .word 0x00003C3D + SUB_02061DC8_WORD_OFFSET +#ifndef JAPAN _02061F24: .word 0x00003C42 + SUB_02061DC8_WORD_OFFSET +#endif _02061F28: .word 0x00003C43 + SUB_02061DC8_WORD_OFFSET _02061F2C: .word 0x00003C3C + SUB_02061DC8_WORD_OFFSET _02061F30: .word 0x00003C41 + SUB_02061DC8_WORD_OFFSET @@ -16228,17 +16419,17 @@ _020621F4: add sp, sp, #0x54 ldmia sp!, {r4, r5, r6, r7, pc} .align 2, 0 -#ifdef EUROPE -_020621FC: .word 0x00003C37 -_02062200: .word 0x00003C36 -_02062204: .word 0x00003C38 -_02062208: .word 0x00003C34 +#if defined(EUROPE) +#define SUB_02061FDC_OFFSET 2 +#elif defined(JAPAN) +#define SUB_02061FDC_OFFSET -0x3C2 #else -_020621FC: .word 0x00003C35 -_02062200: .word 0x00003C34 -_02062204: .word 0x00003C36 -_02062208: .word 0x00003C32 +#define SUB_02061FDC_OFFSET 0 #endif +_020621FC: .word 0x00003C35 + SUB_02061FDC_OFFSET +_02062200: .word 0x00003C34 + SUB_02061FDC_OFFSET +_02062204: .word 0x00003C36 + SUB_02061FDC_OFFSET +_02062208: .word 0x00003C32 + SUB_02061FDC_OFFSET arm_func_end sub_02061FDC arm_func_start sub_0206220C @@ -22688,8 +22879,10 @@ _020674AC: .word sub_02069750 _020674B0: .word _020A937C _020674B4: .word _020B0B39 _020674B8: .word JOB_MENU_ITEMS_11 -#ifdef EUROPE +#if defined(EUROPE) _020674BC: .word 0x0000387A +#elif defined(JAPAN) +_020674BC: .word 0x000034B6 #else _020674BC: .word 0x00003878 #endif @@ -22883,8 +23076,10 @@ _02067704: .word _020B0B2C arm_func_start sub_02067708 sub_02067708: ; 0x02067708 -#ifdef EUROPE +#if defined(EUROPE) #define SUB_02067708_WORD_OFFSET 2 +#elif defined(JAPAN) +#define SUB_02067708_WORD_OFFSET -0x3C2 #else #define SUB_02067708_WORD_OFFSET 0 #endif @@ -23171,7 +23366,7 @@ _02067AF8: ldr r5, _02067C68 ; =JOB_MENU_ITEMS_6 str r1, [r4, #0xe48] str r0, [r4, #0xef4] -#ifdef EUROPE +#if defined(EUROPE) || defined(JAPAN) ldr r6, _02067FF0 ; =0x0000380F #else rsb r6, r8, #0x3a40 @@ -23222,7 +23417,7 @@ _02067BA0: ldr r1, [r1, r2, lsl #3] ldr r5, _02067C88 ; =JOB_MENU_ITEMS_8 str r1, [r4, #0xe48] -#ifdef EUROPE +#if defined(EUROPE) || defined(JAPAN) ldr r6, _02068014 ; =0x000037B5 #else add r6, r8, #0x3580 @@ -23273,8 +23468,10 @@ _02067C5C: .word _020A9278 _02067C60: .word _020A9304 _02067C64: .word _020B0B38 _02067C68: .word JOB_MENU_ITEMS_6 -#ifdef EUROPE +#if defined(EUROPE) _02067FF0: .word 0x0000380F +#elif defined(JAPAN) +_02067FF0: .word 0x0000344B #endif _02067C6C: .word JOB_MENU_ITEMS_9 _02067C70: .word 0x000038BF + SUB_02067708_WORD_OFFSET @@ -23286,13 +23483,17 @@ _02067C84: .word _020B0B33 _02067C88: .word JOB_MENU_ITEMS_8 #ifdef EUROPE _02068014: .word 0x000037B5 +#elif defined(JAPAN) +_02068014: .word 0x00003435 #endif arm_func_end sub_02067708 arm_func_start sub_02067C8C sub_02067C8C: ; 0x02067C8C -#ifdef EUROPE +#if defined(EUROPE) #define SUB_02067C8C_WORD_OFFSET 2 +#elif defined(JAPAN) +#define SUB_02067C8C_WORD_OFFSET -0x3C2 #else #define SUB_02067C8C_WORD_OFFSET 0 #endif @@ -23444,7 +23645,7 @@ _02067E70: add r0, r0, #0x2e4 add r0, r0, #0xc00 bl sub_02047150 -#ifdef EUROPE +#if defined(EUROPE) || defined(JAPAN) ldr r1, _02068678 ; =0x00003826 mov r0, #0x1c #else @@ -23680,8 +23881,13 @@ _020681BC: add r0, r0, #0x2e4 add r0, r0, #0xc00 bl sub_02047150 +#ifdef JAPAN + mov r0, #0x1c + rsb r1, r0, #0x3480 +#else ldr r1, _020682FC ; =0x00003826 mov r0, #0x1c +#endif mov r2, #0 bl sub_02046BE8 ldr r0, _020682E0 ; =_020B0B2C @@ -23756,8 +23962,10 @@ _020682D8: _020682E0: .word _020B0B2C _020682E4: .word 0x0000381F + SUB_02067C8C_WORD_OFFSET _020682E8: .word 0x00003820 + SUB_02067C8C_WORD_OFFSET -#ifdef EUROPE +#if defined(EUROPE) _02068678: .word 0x00003826 +#elif defined(JAPAN) +_02068678: .word 0x00003462 #endif _020682EC: .word 0x00003825 + SUB_02067C8C_WORD_OFFSET _020682F0: .word 0x00003821 + SUB_02067C8C_WORD_OFFSET @@ -23765,7 +23973,9 @@ _020682F0: .word 0x00003821 + SUB_02067C8C_WORD_OFFSET _020682F4: .word 0x00003822 #endif _020682F8: .word 0x00003823 + SUB_02067C8C_WORD_OFFSET +#ifndef JAPAN _020682FC: .word 0x00003826 + SUB_02067C8C_WORD_OFFSET +#endif _02068300: .word 0x00003827 + SUB_02067C8C_WORD_OFFSET _02068304: .word 0x00003828 + SUB_02067C8C_WORD_OFFSET arm_func_end sub_02067C8C @@ -24067,8 +24277,10 @@ _020686F0: .word _020B0A54 arm_func_start sub_020686F4 sub_020686F4: ; 0x020686F4 -#ifdef EUROPE +#if defined(EUROPE) #define SUB_020686F4_WORD_OFFSET 2 +#elif defined(JAPAN) +#define SUB_020686F4_WORD_OFFSET -0x3C2 #else #define SUB_020686F4_WORD_OFFSET 0 #endif @@ -25295,8 +25507,10 @@ sub_020696E8: ; 0x020696E8 add sp, sp, #0x154 ldmia sp!, {r3, r4, pc} .align 2, 0 -#ifdef EUROPE +#if defined(EUROPE) _0206974C: .word 0x00003815 +#elif defined(JAPAN) +_0206974C: .word 0x00003451 #else _0206974C: .word 0x00003813 #endif @@ -25320,8 +25534,10 @@ sub_02069750: ; 0x02069750 add sp, sp, #0x100 ldmia sp!, {r4, pc} .align 2, 0 -#ifdef EUROPE +#if defined(EUROPE) _0206978C: .word 0x00003816 +#elif defined(JAPAN) +_0206978C: .word 0x00003452 #else _0206978C: .word 0x00003814 #endif @@ -26322,7 +26538,11 @@ _0206A4F8: bl ov03_0233CDC8 b _0206A544 _0206A53C: +#ifdef JAPAN + ldr r1, _0206A90C ; =0x000004CD +#else mov r1, #0x23c +#endif bl ov03_0233CDC8 _0206A544: ldr r0, _0206A5E0 ; =_020B0B48 @@ -26371,8 +26591,10 @@ _0206A5D8: add sp, sp, #0x20c ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 -#ifdef EUROPE +#if defined(EUROPE) #define SUB_02069DC0_OFFSET 2 +#elif defined(JAPAN) +#define SUB_02069DC0_OFFSET -0x3C2 #else #define SUB_02069DC0_OFFSET 0 #endif @@ -26391,6 +26613,9 @@ _0206A60C: .word 0x0000023B _0206A610: .word 0x00004002 _0206A614: .word 0x00004001 _0206A618: .word 0x0000379E + SUB_02069DC0_OFFSET +#ifdef JAPAN +_0206A90C: .word 0x000004CD +#endif _0206A61C: .word 0x00004003 _0206A620: .word 0x00000239 _0206A624: .word 0x000037A0 + SUB_02069DC0_OFFSET @@ -26642,10 +26867,17 @@ sub_0206A90C: ; 0x0206A90C bl sub_0206A7CC mvn r1, #0 cmp r0, r1 +#ifdef JAPAN + moveq r0, #0x47 + ldmeqia sp!, {r3, pc} + cmp r0, #0 + moveq r0, #0x40 +#else ldreq r0, _0206A964 ; =0x0000403A ldmeqia sp!, {r3, pc} cmp r0, #0 ldreq r0, _0206A968 ; =0x00004033 +#endif ldmeqia sp!, {r3, pc} cmp r0, #1 blt _0206A950 @@ -26656,14 +26888,20 @@ sub_0206A90C: ; 0x0206A90C bl sub_02024934 ldmia sp!, {r3, pc} _0206A950: +#ifdef JAPAN + sub r0, r0, #0x74 +#else add r0, r0, #0x7f + SUB_0206A90C_WORD_OFFSET add r0, r0, #0x3f00 +#endif mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 ldmia sp!, {r3, pc} .align 2, 0 +#ifndef JAPAN _0206A964: .word 0x0000403A + SUB_0206A90C_WORD_OFFSET _0206A968: .word 0x00004033 + SUB_0206A90C_WORD_OFFSET +#endif arm_func_end sub_0206A90C arm_func_start sub_0206A96C diff --git a/lib/DSE/include/dc_lfo.h b/lib/DSE/include/dc_lfo.h index 28bd2812..9887313b 100644 --- a/lib/DSE/include/dc_lfo.h +++ b/lib/DSE/include/dc_lfo.h @@ -7,7 +7,7 @@ struct dse_lfo; -typedef s32 (*SoundLfoWaveformCallback)(struct dse_lfo *lfo); +typedef s32 (*sound_lfo_waveform_callback)(struct dse_lfo *lfo); struct dse_lfo { @@ -31,7 +31,7 @@ struct dse_lfo s32 envelope_level; s32 envelope_delta; s16 *output_ptr; - SoundLfoWaveformCallback waveform_callback; + sound_lfo_waveform_callback waveform_callback; //+0x30 struct dse_lfo *next; diff --git a/lib/syscall/asm/_secure_C2SJ.s b/lib/syscall/asm/_secure_C2SJ.s new file mode 100644 index 00000000..399882d5 --- /dev/null +++ b/lib/syscall/asm/_secure_C2SJ.s @@ -0,0 +1,278 @@ + .include "asm/macros.inc" + .text + + .global _secure +_secure: ; 0x02000000 + .byte 0xFF, 0xDE, 0xFF, 0xE7, 0xFF, 0xDE, 0xFF, 0xE7, 0xFF, 0xDE, 0xFF, 0xE7, 0xFF, 0xDE, 0xB5, 0x87 + .byte 0x4F, 0x8D, 0x6B, 0x7E, 0xAD, 0xA2, 0x37, 0xEB, 0x89, 0x54, 0x8E, 0xED, 0x24, 0x54, 0x6D, 0xC6 + .byte 0xEE, 0x3D, 0x48, 0x2B, 0x50, 0xB1, 0x22, 0x0B, 0xE6, 0x6C + + .global _0200002B +_0200002B: + .byte 0x4E, 0x30, 0xFE, 0xED, 0x78, 0xDE + .byte 0xB0, 0x21, 0x76, 0xA7, 0xD3, 0x2F, 0x11, 0x86, 0xAA, 0x94, 0xE5, 0xD7, 0x5B, 0x31, 0x2C, 0xE5 + .byte 0x25, 0x69, 0xFC, 0xBC, 0x26, 0x56, 0x7C, 0xB0, 0x28, 0x46, 0xA6, 0x38, 0xE9, 0x37, 0x25, 0x24 + .byte 0x79, 0x7D, 0x09, 0x90, 0x00, 0x98, 0x1C, 0x6A, 0x7F, 0x9C, 0x67, 0x97, 0x74, 0x7D, 0xA5, 0xA1 + .byte 0x64, 0x01, 0x3E, 0x8E, 0x56, 0xEE, 0x44, 0xFF, 0xDB, 0x4E, 0xE8, 0xBA, 0x55, 0x2F, 0xCF, 0xAA + .byte 0xA1, 0xBF, 0xD1, 0xD6, 0xD8, 0x04, 0xB7, 0x66 + + thumb_func_start sub_02000078 +sub_02000078: ; 0x02000078 + swi 0xc + bx lr + thumb_func_end sub_02000078 +_0200007C: + .byte 0x62, 0x11, 0xCA, 0x31 + .byte 0xFC, 0x2F, 0xB3, 0x14, 0x10, 0xCE, 0xDD, 0x8A, 0x27, 0x95, 0xA7, 0x20, 0xDB, 0x33, 0xCA, 0x4F + .byte 0x44, 0x16, 0xC5, 0x5D, 0xF8, 0xE9, 0xAE, 0xCE, 0x33, 0xB3, 0x77, 0xB8, 0x73, 0xA9, 0x3B, 0x45 + .byte 0x90, 0x28, 0xC5, 0x9A, 0xA0, 0xE8, 0xE0, 0xE0, 0xFF, 0x31, 0xCF, 0x0A, 0x76, 0xA6, 0x25, 0x94 + .byte 0x74, 0x61, 0xA0, 0x37, 0x24, 0x78, 0xC1, 0x91, 0x0A, 0x96, 0x09, 0xE5, 0xCA, 0x86, 0x95, 0xEA + .byte 0x30, 0x9C, 0x92, 0x90, 0x4C, 0xBD, 0xB9, 0x6A, 0xCD, 0x1B, 0x6F, 0x07, 0x5B, 0x35, 0x27, 0x47 + .byte 0x31, 0xB9, 0x5E, 0x56, 0xED, 0x8B, 0x46, 0x1A, 0xB9, 0x18, 0x15, 0xDC, 0x26, 0x3E, 0x8A, 0xE0 + .byte 0x76, 0x41, 0xBC, 0xE6, 0x09, 0xCE + + non_word_aligned_thumb_func_start sub_020000E6 +sub_020000E6: ; 0x020000E6 + swi 0x11 + bx lr + thumb_func_end sub_020000E6 +_020000EA: + .byte 0x7A, 0xA8, 0xD7, 0x12, 0x42, 0x79 + .byte 0xB5, 0x5A, 0x7B, 0x06, 0x15, 0x3A, 0x06, 0x2E, 0x33, 0xAF, 0x6B, 0xD0, 0x11, 0x24, 0x14, 0x34 + .byte 0xCE, 0x44, 0x20, 0xD9, 0xF3, 0x4D, 0x4B, 0xAA, 0xD7, 0xFC, 0xB0, 0x3B, 0xC3, 0x5C, 0xE2, 0x15 + .byte 0x95, 0xA3, 0xFB, 0x99, 0xC8, 0x2D, 0x49, 0x7E, 0x57, 0x30, 0x09, 0x46, 0x1A, 0xB4, 0xF2, 0x8C + .byte 0x42, 0x4F, 0xE6, 0x58, 0x30, 0x21, 0xB3, 0xC7, 0x18, 0x60, 0x87, 0xD3, 0xC5, 0xFE, 0xCB, 0x6D + .byte 0x8B, 0x74, 0x4F, 0xBB, 0xF1, 0x61, 0x08, 0x4D, 0x48, 0x12, 0x32, 0x32, 0x04, 0x74, 0x26, 0xEC + .byte 0xB7, 0x15, 0x90, 0x0B, 0xA1, 0x3D, 0x2F, 0xB7, 0x6F, 0x86, 0xF6, 0x7B, 0xE5, 0xA2, 0x5A, 0xA3 + .byte 0x4D, 0x36, 0xBB, 0x3E + + thumb_func_start SVC_SoftReset +SVC_SoftReset: ; 0x02000154 + swi 0 + bx lr + thumb_func_end SVC_SoftReset +_02000158: + .byte 0x9A, 0x50, 0x5B, 0x45, 0x04, 0xBE, 0x1A, 0xCA + .byte 0x35, 0x3A, 0x00, 0x2B, 0x12, 0x17, 0x7D, 0x9C, 0x0E, 0xBA, 0x47, 0x24, 0x97, 0xA1, 0x1E, 0x42 + .byte 0x36, 0xCC, 0xC9, 0xE6, 0x9F, 0xD4, 0xE4, 0xC9, 0xB9, 0xFA, 0xDD, 0x4A, 0x81, 0x08, 0xA6, 0xF5 + .byte 0xEB, 0x66, 0x8C, 0xDA, 0x47, 0xB1, 0x50, 0x9D, 0x55, 0xC0, 0xA0, 0x17, 0xE1, 0x4D, 0x77, 0xCC + .byte 0x31, 0x86, 0x19, 0xC4, 0xA4, 0xE4, 0x56, 0x9E, 0x3F, 0xB0, 0x07, 0xB5, 0xE3, 0x2B, 0x3F, 0x1E + .byte 0x65, 0xA5, 0x6E, 0xEE, 0x03, 0x9B, 0x77, 0x19, 0x26, 0x8D, 0x0A, 0xB5, 0x8F, 0xBC, 0x16, 0xBC + .byte 0xCF, 0x11, 0xC2, 0x4B, 0xF7, 0x39, 0xCF, 0x8A, 0xF8, 0xC8, 0xBD, 0x9D, 0x00, 0x22 + + non_word_aligned_thumb_func_start sub_020001BE +sub_020001BE: ; 0x020001BE + swi 4 + bx lr + thumb_func_end sub_020001BE +_020001C2: + .byte 0xEE, 0x08, 0xC1, 0x4F, 0xB2, 0xCE, 0xF8, 0xB3, 0xC5, 0xD2, 0x67, 0xE9, 0x01, 0x18 + .byte 0x12, 0x57, 0xED, 0x82, 0x4F, 0xD1, 0x08, 0x4B, 0x0D, 0x41, 0xCA, 0x12, 0xB8, 0x4A, 0x5E, 0xFD + .byte 0xD2, 0xF7, 0x9F, 0x65, 0xDC, 0xD1, 0xDC, 0x08, 0x35, 0x49, 0x75, 0xDE, 0x26, 0xD8, 0xEC, 0x8D + .byte 0x65, 0x70, 0x7F, 0xB8, 0xA7, 0x82, 0x66, 0xD7, 0xF3, 0x25, 0x0C, 0xF8, 0xCB, 0x13, 0x12, 0x64 + .byte 0xB5, 0x7B, 0xD2, 0x86, 0x01, 0xC1, 0x8A, 0x9D, 0x30, 0x69, 0x04, 0xAD, 0x3E, 0x42, 0x20, 0xCA + .byte 0x78, 0x0D, 0xAE, 0xCD, 0xF2, 0x54, 0x54, 0xCF, 0xFF, 0x08, 0x9F, 0x09, 0xEC, 0xA3, 0x7D, 0x9B + .byte 0x17, 0xB3, 0xC2, 0x2D, 0xB7, 0xC6 + + non_word_aligned_thumb_func_start SVC_CpuSet +SVC_CpuSet: ; 0x02000226 + swi 0xb + bx lr + thumb_func_end SVC_CpuSet +_0200022A: + .byte 0xFB, 0x7A, 0xBA, 0xF0, 0xDC, 0x32 + .byte 0x48, 0x85, 0x63, 0x65, 0xBA, 0x5D, 0xBB, 0xD2, 0x24, 0x10, 0xDF, 0xBF, 0x72, 0xD7, 0xA2, 0xB5 + .byte 0xAA, 0x99, 0xE8, 0xB9, 0xAA, 0x7D, 0x89, 0x1F, 0x88, 0xBE, 0xE2, 0xCA, 0xC5, 0x87, 0xD0, 0xED + .byte 0x20, 0x4F, 0x1C, 0x57, 0xCF, 0xE7, 0xEF, 0xDC, 0xFB, 0xDC, 0x6A, 0xDF, 0x07, 0x22, 0x31, 0xFA + .byte 0x45, 0xD9, 0x20, 0xD5, 0xD3, 0x85, 0x5A, 0xD3, 0x1E, 0xA1, 0x97, 0x61, 0xC6, 0xAD, 0x49, 0xE2 + .byte 0x71, 0xD8, 0x91, 0xEB, 0x6D, 0x19, 0xF4, 0x14, 0x7C, 0x3A, 0x96, 0x0D, 0x7B, 0xA8, 0xC9, 0xC4 + .byte 0x95, 0xE1, 0x4A, 0x56, 0x60, 0x5B, 0x83, 0x50, 0xBC, 0xCB, 0x64, 0x7D, 0x94, 0x11, 0x0D, 0x86 + .byte 0x09, 0xDF + + non_word_aligned_thumb_func_start sub_02000292 +sub_02000292: ; 0x02000292 + add r0, r1, #0 + bx lr + thumb_func_end sub_02000292 +_02000296: + .byte 0x49, 0x8B, 0xBB, 0x05, 0x18, 0xA4, 0xB2, 0x54, 0x0B, 0x37 + .byte 0xF7, 0x4B, 0x10, 0x75, 0x8D, 0xD4, 0x05, 0x32, 0x55, 0x73, 0x3E, 0x5A, 0xAB, 0xF4, 0x1C, 0x1D + .byte 0x2A, 0x1A, 0xF8, 0x8B, 0x54, 0x15, 0x75, 0x61, 0xC6, 0x76, 0x8D, 0xC5, 0x22, 0x58, 0xF4, 0x3C + .byte 0xD3, 0x2B, 0x23, 0xF7, 0xEF, 0x94, 0xD3, 0x61, 0x70, 0xA8, 0x58, 0xA3, 0x8D, 0x3F, 0x3E, 0xDF + .byte 0x97, 0x02, 0xE0, 0x69, 0xC0, 0x51, 0x54, 0xFF, 0xE8, 0x1D, 0x81, 0x97, 0x92, 0x05, 0xA6, 0xB7 + .byte 0xAE, 0xA4, 0x81, 0xA0, 0x60, 0xA7, 0xA5, 0xFF, 0x9E, 0xD9, 0x7D, 0x27, 0x88, 0x1F, 0xB5, 0x52 + .byte 0x19, 0x18, 0xD5, 0x74, 0x2A, 0x85, 0x76, 0xEE, 0x4A, 0xF8, 0xD6, 0x51, 0x0E, 0x14, 0xDB, 0xD8 + .byte 0xF6, 0x3F, 0x4C, 0xFE, 0xD7, 0xAA, 0x3F, 0x1E, 0xAC, 0xAC, 0xC0, 0x98 + + thumb_func_start sub_0200030C +sub_0200030C: ; 0x0200030C + swi 0x14 + bx lr + thumb_func_end sub_0200030C +_02000310: + .byte 0xD6, 0x4B, 0x9C, 0x7C, 0x54, 0x0F, 0xE4, 0xC2, 0x67, 0xCC, 0x4F, 0x99, 0xE1, 0x18, 0x00, 0x7D + .byte 0xAE, 0x29, 0x19, 0xDC, 0x8E, 0x19, 0xF7, 0x4A, 0x2C, 0xA7, 0xA4, 0xB2, 0xD9, 0xA8, 0xC1, 0xE9 + .byte 0xDB, 0x94, 0x9C, 0x71, 0x15, 0xD3, 0x0F, 0x08, 0x13, 0xBE, 0x76, 0x3B, 0xAD, 0xFB, 0x83, 0x54 + .byte 0x91, 0x30, 0x8B, 0x4C, 0x1C, 0x03, 0x94, 0x78, 0x4A, 0xD0, 0x8E, 0xE3, 0xAD, 0x25, 0x18, 0x6A + .byte 0xD5, 0xB5, 0x5D, 0x19, 0x75, 0xC7, 0x25, 0x21, 0x42, 0x81, 0xF7, 0xD1, 0x0E, 0x85, 0x68, 0x17 + .byte 0x1D, 0x16, 0xAC, 0x1D, 0xCB, 0x87, 0xA1, 0x67, 0x06, 0xF9, 0xFB, 0x79, 0x34, 0x2F, 0xE3, 0xB6 + .byte 0x76, 0x9A, 0x36, 0xDB, 0x3C, 0xBE, 0xD2, 0x76 + + thumb_func_start sub_02000378 +sub_02000378: ; 0x02000378 + swi 0x10 + bx lr + thumb_func_end sub_02000378 +_0200037C: + .byte 0x4E, 0x1C, 0xEA, 0xFF + .byte 0xD4, 0xA8, 0x68, 0x8E, 0x6C, 0xE7, 0x8E, 0x88, 0xC7, 0x1B, 0x6A, 0x83, 0x79, 0xBE, 0x0E, 0x39 + .byte 0xB1, 0xE4, 0xEE, 0xC9, 0xBA, 0x8A, 0x65, 0x1B, 0x14, 0x01, 0x4A, 0x3F, 0x8A, 0x15, 0xCD, 0x0F + .byte 0x99, 0xBC, 0xD3, 0x1A, 0x80, 0xFA, 0xDB, 0x81, 0x61, 0x47, 0xEE, 0x90, 0x3E, 0x5D, 0x70, 0xF7 + .byte 0xCC, 0x7A, 0x63, 0xE3, 0xBE, 0xC3, 0x8B, 0x53, 0x24, 0x50, 0xE5, 0xBF, 0xA9, 0x0D, 0x06, 0xD5 + .byte 0xF8, 0xA5, 0x98, 0x6D, 0x30, 0x8F, 0x49, 0x27, 0xFD, 0xCF, 0xE3, 0xE7, 0xED, 0x70, 0x9E, 0x18 + .byte 0xA7, 0x77, 0xC4, 0x3C, 0xBB, 0x6A, 0xBE, 0x8D, 0x2D, 0x96, 0x42, 0xD9, 0x1A, 0x79, 0x51, 0x43 + .byte 0x8A, 0x15, 0x4E, 0x9B, 0xE3, 0x2C, 0xC9, 0xD0, 0xA3, 0x80, 0xCF, 0xB7, 0x02, 0x4F, 0x02, 0x06 + .byte 0xCA, 0xEC, 0x21, 0x1C, 0xD0, 0x0C + + non_word_aligned_thumb_func_start sub_020003F6 +sub_020003F6: ; 0x020003F6 + swi 0x13 + bx lr + thumb_func_end sub_020003F6 +_020003FA: + .byte 0x1D, 0xBC, 0xBB, 0x22, 0x52, 0xD3 + .byte 0x5D, 0xEB, 0xD0, 0x34, 0x62, 0x2A, 0xC6, 0x51, 0xEA, 0x34, 0xB6, 0x7D, 0xC5, 0x80, 0x44, 0x1B + .byte 0xCB, 0xE7, 0xE8, 0x5F, 0x18, 0xF2, 0xE5, 0x1A, 0xB2, 0x26, 0x8C, 0x75, 0x07, 0x31, 0x35, 0x13 + .byte 0xAB, 0x3B, 0x41, 0xE0, 0x8B, 0x55, 0x7D, 0x99, 0xB1, 0xC7, 0x1C, 0x3E, 0x4D, 0x3B, 0x28, 0x6A + .byte 0x46, 0xBF, 0x4B, 0x68, 0x6E, 0x31, 0x95, 0x1D, 0xF3, 0x78, 0xD8, 0x01, 0x45, 0xEC, 0x8B, 0xE0 + .byte 0xD1, 0xE0, 0x92, 0x18, 0x42, 0x4D, 0x8D, 0x0A, 0x47, 0xAA, 0xDD, 0x6F, 0xE4, 0xD8, 0x57, 0xCC + .byte 0x26, 0x26, 0xC4, 0xFA, 0x47, 0x8B, 0xB0, 0xFB, 0x38, 0x17, 0x46, 0xE3, 0xF0, 0xF3, 0x17, 0xD3 + .byte 0x8B, 0x95 + + non_word_aligned_thumb_func_start sub_02000462 +sub_02000462: ; 0x02000462 + swi 9 + bx lr + thumb_func_end sub_02000462 +_02000466: + .byte 0x1B, 0x07, 0xA5, 0xF1, 0x01, 0xBC, 0x28, 0xD1, 0xEB, 0xF9 + .byte 0x08, 0x77, 0xD3, 0x01, 0x1E, 0x50, 0xE9, 0xD4, 0xE9, 0xD3, 0x27, 0xE0, 0x41, 0xEE, 0x34, 0x00 + .byte 0xA7, 0x8C, 0xC7, 0xEC, 0xDF, 0xD9, 0xCE, 0xC4, 0x47, 0xF9, 0x81, 0xD8, 0x77, 0x09, 0x39, 0xC3 + .byte 0x80, 0x20, 0x64, 0x09, 0xCB, 0x5F, 0x7A, 0xB4, 0x7B, 0x79, 0x68, 0x32, 0xE7, 0x53, 0x71, 0xD7 + .byte 0x97, 0x03, 0x68, 0xBD, 0x9D, 0x6A, 0x7B, 0x52, 0xDC, 0x19, 0xFA, 0x5D, 0x63, 0x61, 0x09, 0x10 + .byte 0x19, 0x1A, 0x11, 0xFE, 0xAD, 0xA5, 0x27, 0xD5, 0xD7, 0x58, 0xCD, 0x29, 0xBC, 0x4F, 0xE9, 0xA2 + .byte 0x55, 0x1E, 0x1A, 0x2F, 0xD4, 0x18, 0x3F, 0xDA, 0xDE, 0x54 + + non_word_aligned_thumb_func_start sub_020004CA +sub_020004CA: ; 0x020004CA + swi 0xe + bx lr + thumb_func_end sub_020004CA +_020004CE: + .byte 0x7B, 0xD4 + .byte 0xE7, 0x2B, 0x21, 0x15, 0x1A, 0x4D, 0x4E, 0x63, 0x1D, 0x82, 0x05, 0x56, 0x15, 0x76, 0xDB, 0xB4 + .byte 0x38, 0xF8, 0xB6, 0x7A, 0xCC, 0x05, 0x43, 0xE5, 0x28, 0x55, 0x8B, 0xFC, 0xDF, 0xA5, 0xB9, 0x68 + .byte 0xAB, 0xB0, 0x48, 0x8C, 0x29, 0x5A, 0x5F, 0xD5, 0xE7, 0xC7, 0x4C, 0x0C, 0x8E, 0xB7, 0xC4, 0xF3 + .byte 0x30, 0xB7, 0x0C, 0x25, 0xE4, 0x12, 0x6D, 0xE5, 0xB4, 0x2E, 0xEF, 0x9B, 0x09, 0xAB, 0x38, 0x12 + .byte 0x33, 0x64, 0xEC, 0x48, 0x3F, 0xBF, 0x48, 0x9E, 0x5A, 0xA2, 0xEF, 0x79, 0x27, 0xA1, 0x54, 0xA8 + .byte 0x75, 0x66, 0x7F, 0x26, 0xE4, 0x7A, 0xD2, 0x07, 0xEE, 0x31, 0x5F, 0x14, 0xF9, 0x4A, 0x29, 0xD1 + .byte 0x55, 0x5A, 0x55, 0xF6 + + thumb_func_start sub_02000534 +sub_02000534: ; 0x02000534 + swi 0x15 + bx lr + thumb_func_end sub_02000534 +_02000538: + .byte 0xC9, 0xD7, 0x48, 0xAC, 0x4B, 0xF8, 0x70, 0x8F + .byte 0x36, 0x90, 0x8F, 0x04, 0x66, 0x06, 0x44, 0x3B, 0x42, 0xC6, 0x9E, 0x2C, 0x1E, 0xD2, 0x42, 0xD1 + .byte 0x21, 0x02, 0xAD, 0x60, 0x1F, 0xB9, 0xA7, 0xF6, 0xAE, 0xE3, 0x56, 0x8A, 0x48, 0x46, 0xD8, 0x8A + .byte 0x26, 0x7A, 0xC0, 0x52, 0x7A, 0xEF, 0x0A, 0x98, 0xC3, 0x4A, 0x8F, 0x15, 0x13, 0x4D, 0x52, 0x29 + .byte 0x5A, 0xB6, 0x72, 0x5E, 0xBD, 0xD7, 0xE4, 0xC6, 0xDB, 0x33, 0xC6, 0x6E, 0xBF, 0xBB, 0x0E, 0x5E + .byte 0x2A, 0xF9, 0xCA, 0x88, 0x76, 0x3C, 0x1F, 0x69, 0x5B, 0x75, 0xE3, 0x8D, 0xAD, 0x9B, 0xAF, 0xD0 + .byte 0x56, 0x47, 0x00, 0x22 + + thumb_func_start sub_02000594 +sub_02000594: ; 0x02000594 + swi 5 + bx lr + thumb_func_end sub_02000594 +_02000598: + .byte 0x2F, 0x92, 0xFE, 0xF2, 0x23, 0x88, 0x34, 0x86 + .byte 0xEC, 0xFA, 0xD9, 0x9C, 0x10, 0x2B, 0x9D, 0xA2, 0x7D, 0xD2, 0x3F, 0xE2, 0x8F, 0xC5, 0x7D, 0x7D + .byte 0xB6, 0xD4, 0xF5, 0x4C, 0x31, 0x8D, 0x24, 0xD7, 0xAC, 0x59, 0x83, 0xDD, 0xA0, 0x84, 0x15, 0xB9 + .byte 0xC3, 0x30, 0xFD, 0x3F, 0xA7, 0x62, 0xBA, 0x67, 0x92, 0xE7, 0x24, 0x4C, 0x30, 0xE3, 0x98, 0x3E + .byte 0xE3, 0x44, 0x24, 0x35, 0x19, 0x31, 0xEB, 0xA0, 0xC9, 0xFA, 0x25, 0x3F, 0x9F, 0xA9, 0xED, 0xDD + .byte 0xEE, 0x4C, 0xF8, 0x04, 0x5C, 0x25, 0x6C, 0x29, 0x02, 0x52, 0xA2, 0x98, 0x49, 0xE2, 0xF7, 0x51 + .byte 0x2A, 0x42, 0x75, 0x01, 0x40, 0x05, 0xBE, 0x7B, 0x25, 0x1E, 0xC6, 0xCC, 0x43, 0x0F, 0x1D, 0x32 + .byte 0x2C, 0xAA, 0x23, 0x26, 0x14, 0xB7, 0x0D, 0xB4, 0x11, 0x37, 0x39, 0x3F, 0x07, 0x70, 0xBC, 0xB2 + .byte 0x0E, 0x9D + + non_word_aligned_thumb_func_start sub_02000612 +sub_02000612: ; 0x02000612 + swi 0xd + bx lr + thumb_func_end sub_02000612 +_02000616: + .byte 0x5A, 0x12, 0x56, 0xE2, 0xDC, 0x36, 0x0A, 0xFD, 0xAA, 0xE2 + .byte 0xEB, 0x54, 0x08, 0xFB, 0x0C, 0x17, 0x3A, 0x73, 0x5F, 0xE4, 0x2B, 0x35, 0x06, 0xB3, 0xF2, 0xE5 + .byte 0xE5, 0x3C, 0x20, 0x35, 0xF8, 0xD9, 0x56, 0x36, 0xF3, 0x7F, 0xE6, 0x12, 0x46, 0x66, 0x14, 0xEC + .byte 0xBA, 0x3E, 0x27, 0xA7, 0x47, 0xA2, 0xB0, 0x3B, 0x35, 0x5E, 0x9F, 0x15, 0xF8, 0x77, 0xF3, 0x4A + .byte 0x8C, 0x25, 0xBD, 0x4F, 0x95, 0xA5, 0x0D, 0x69, 0xA0, 0xFC, 0x58, 0xAA, 0xCE, 0x8B, 0x30, 0xD9 + .byte 0x5D, 0xED, 0xBA, 0xB0, 0x6F, 0x4C, 0xDD, 0xE3, 0x39, 0xBC, 0x5B, 0x0A, 0xEF, 0xAE, 0xEB, 0x5B + + thumb_func_start sub_02000670 +sub_02000670: ; 0x02000670 + swi 0xf + bx lr + thumb_func_end sub_02000670 +_02000674: + .byte 0x59, 0xF0, 0xE4, 0x34, 0xEC, 0xE8, 0x0E, 0x3C, 0x5B, 0x89, 0x08, 0xD7 + .byte 0x66, 0xF0, 0x06, 0x22, 0xC0, 0x31, 0x98, 0x2C, 0x0B, 0x1C, 0x5A, 0xF5, 0x31, 0x13, 0x87, 0xB4 + .byte 0x3B, 0xD0, 0xAF, 0x9A, 0x24, 0x88, 0xC5, 0x35, 0xD8, 0x31, 0x4A, 0x7D, 0xAE, 0xEB, 0xB4, 0xC8 + .byte 0x3A, 0x74, 0x24, 0x77, 0x04, 0xEF, 0xCC, 0xE1, 0xB6, 0xE2, 0x90, 0x03, 0x8C, 0x27, 0xD3, 0xBC + .byte 0xA9, 0x89, 0x34, 0xD6, 0x39, 0xC7, 0xB7, 0x85, 0x2E, 0x31, 0xA0, 0x00, 0xD4, 0x97, 0x17, 0xF2 + .byte 0x4E, 0x93, 0x6C, 0x75, 0xD4, 0xE9, 0x35, 0x76, 0xAA, 0x96, 0xFC, 0x42, 0x30, 0xAA, 0xE7, 0x5E + .byte 0xD0, 0x24, 0x07, 0x61, 0x1A, 0xFE + + non_word_aligned_thumb_func_start sub_020006D6 +sub_020006D6: ; 0x020006D6 + swi 0x12 + bx lr + thumb_func_end sub_020006D6 +_020006DA: + .byte 0x80, 0xB3, 0x53, 0x0B, 0x0A, 0x8E + .byte 0xF4, 0x83, 0x4A, 0x66, 0x3F, 0x33, 0x00, 0x0B, 0x5E, 0x77, 0x2F, 0x0E, 0x85, 0xD9, 0xC7, 0xB5 + .byte 0x73, 0x4F, 0x75, 0xE0, 0x65, 0x33, 0xEC, 0x04, 0xD2, 0xE3, 0x4B, 0xBB, 0x40, 0x57, 0xE8, 0xC9 + .byte 0x13, 0x35, 0xF8, 0x3B, 0x7F, 0xF3, 0x15, 0x98, 0x32, 0xA1, 0x18, 0xA1, 0x37, 0x8C, 0xA6, 0xD1 + .byte 0x68, 0xD5, 0x4C, 0xE3, 0x6E, 0x72, 0x09, 0x74, 0xF0, 0x17, 0x9C, 0xD5, 0xD6, 0xEB, 0x4D, 0xB8 + .byte 0x60, 0x0B, 0xB0, 0x77, 0xCF, 0x84, 0xCC, 0x06, 0xF8, 0xCB, 0xB4, 0xFC, 0x54, 0x80, 0x0C, 0x46 + .byte 0xE8, 0xDA, 0x13, 0x9A, 0x2A, 0x6F, 0xC5, 0x92, 0xC4, 0x71 + + non_word_aligned_thumb_func_start SVC_WaitByLoop +SVC_WaitByLoop: ; 0x0200073A + swi 3 + bx lr + thumb_func_end SVC_WaitByLoop +_0200073E: + .byte 0xBB, 0x31 + .byte 0x83, 0x0A, 0x8F, 0xCF, 0xB9, 0x52, 0x78, 0x64, 0xF0, 0x96, 0xA1, 0x44, 0x03, 0xDF, 0x65, 0xF3 + .byte 0x14, 0xB1, 0x9E, 0x94, 0x5D, 0x53, 0x5D, 0x08, 0x7A, 0x04, 0x40, 0x37, 0x66, 0x2C, 0x12, 0xB3 + .byte 0x85, 0xFD, 0xE7, 0x1E, 0x7B, 0x29, 0x4E, 0x16, 0xC1, 0x6F, 0x98, 0xA8, 0xB7, 0xB6, 0x46, 0xBC + .byte 0x72, 0x3B, 0x81, 0x23, 0xDB, 0x75, 0xF9, 0x86, 0xB8, 0xA1, 0xB2, 0xBF, 0x90, 0xAA, 0x17, 0x7D + .byte 0xE9, 0x09, 0x33, 0xEF, 0x5A, 0xB2, 0x7F, 0x70, 0x14, 0x06, 0x76, 0x47, 0xA5, 0xCF, 0x55, 0xB7 + .byte 0x89, 0x0E, 0x00, 0xB6, 0x67, 0x4A + + non_word_aligned_thumb_func_start sub_02000796 +sub_02000796: ; 0x02000796 + swi 6 + bx lr + thumb_func_end sub_02000796 +_0200079A: + .byte 0x5C, 0x62, 0x7B, 0x1D, 0x2B, 0x24 + .byte 0x39, 0x46, 0xF6, 0x04, 0x9A, 0x55, 0x5C, 0xD9, 0xCC, 0x13, 0x3C, 0x97, 0xF2, 0x88, 0xD4, 0x6D + .byte 0xD6, 0xD4, 0x65, 0x59, 0x58, 0xF3, 0xD3, 0x5D, 0x72, 0x78, 0x49, 0x1F, 0x71, 0x79, 0xBF, 0x4E + .byte 0xD5, 0x93, 0x84, 0xD4, 0xEE, 0x45, 0x94, 0xE4, 0xD3, 0xCC, 0x4F, 0x54, 0x56, 0x70, 0xFA, 0xA2 + .byte 0xE9, 0x7F, 0x41, 0x29, 0x06, 0x0B, 0xA6, 0x5C, 0xBC, 0x56, 0x5B, 0x83, 0xE7, 0x86, 0xEF, 0x52 + .byte 0xD2, 0xF1, 0x0C, 0x1D, 0x59, 0xDC, 0x19, 0x2B, 0xDB, 0xE6, 0x5C, 0x2C, 0x05, 0xB5, 0x7D, 0x83 + .byte 0x9A, 0x4B, 0x47, 0x3B, 0x50, 0x0F, 0x41, 0x57, 0x6A, 0x93, 0x00, 0x32, 0x9A, 0x95, 0x00, 0x00 diff --git a/lib/syscall/asm/include/_secure_C2SJ.inc b/lib/syscall/asm/include/_secure_C2SJ.inc new file mode 100644 index 00000000..752d922c --- /dev/null +++ b/lib/syscall/asm/include/_secure_C2SJ.inc @@ -0,0 +1,2 @@ +#include +#pragma once diff --git a/tools/sync_pmdsky_debug/sync_from_pmdsky_debug.py b/tools/sync_pmdsky_debug/sync_from_pmdsky_debug.py index 808aba59..3ba2d27a 100644 --- a/tools/sync_pmdsky_debug/sync_from_pmdsky_debug.py +++ b/tools/sync_pmdsky_debug/sync_from_pmdsky_debug.py @@ -42,6 +42,8 @@ src_files.extend(add_files_with_extensions('lib', ['.c', '.h'])) replaced_symbols = set() for language, pmdsky_debug_language_symbols in pmdsky_debug_symbols.items(): + if language not in xmap_symbols: + continue xmap_language_symbols = xmap_symbols[language] for section_name, pmdsky_debug_section in pmdsky_debug_language_symbols.items(): if section_name == 'ram':