From 9450eca1c32f4779c7083d3c75e6ae86af1891ea Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Thu, 4 Jan 2024 00:46:51 -0600 Subject: [PATCH] Fixed some ARM9 JP mismatches --- asm/include/main_0200C4CC.inc | 2 + asm/include/overlay_29_023082A0.inc | 1 + asm/include/overlay_29_02308FE0.inc | 1 + asm/main_0200C4CC.s | 180 ++++--- asm/main_02075600.s | 23 +- asm/overlay_11.s | 4 +- asm/overlay_29_022DC2B8.s | 137 +++-- asm/overlay_29_022E0378.s | 246 +++++++-- asm/overlay_29_022E1A40.s | 196 +++++++- asm/overlay_29_022E330C.s | 58 ++- asm/overlay_29_022E37DC.s | 310 ++++++++++-- asm/overlay_29_022E9618.s | 76 ++- asm/overlay_29_022EAB50.s | 127 ++++- asm/overlay_29_022EC62C.s | 75 ++- asm/overlay_29_022ECDE4.s | 140 +++++- asm/overlay_29_022EE36C.s | 333 +++++++++++- asm/overlay_29_022EF7C4.s | 43 +- asm/overlay_29_022F05B4.s | 287 +++++++++-- asm/overlay_29_022F52B0.s | 173 ++++++- asm/overlay_29_022F62CC.s | 117 ++++- asm/overlay_29_022F7388.s | 752 +++++++++++++++++++++++++--- asm/overlay_29_022FC9C0.s | 296 +++++++---- asm/overlay_29_022FE4BC.s | 76 ++- asm/overlay_29_022FEDBC.s | 273 ++++++++-- asm/overlay_29_02300108.s | 524 ++++++++++++++++++- asm/overlay_29_02302A5C.s | 219 ++++++-- asm/overlay_29_023047DC.s | 153 +++--- asm/overlay_29_023055B0.s | 53 +- asm/overlay_29_02305C28.s | 254 +++++++--- asm/overlay_29_02307F1C.s | 7 + asm/overlay_29_023082A0.s | 302 ++++++++++- asm/overlay_29_02308FE0.s | 467 ++++++++++++----- asm/overlay_29_0230E914.s | 10 + asm/overlay_29_0230F02C.s | 208 +++++--- asm/overlay_29_02311034.s | 54 +- asm/overlay_29_023118D8.s | 521 ++++++++++++++----- asm/overlay_29_0231513C.s | 595 +++++++++++++++++----- asm/overlay_29_02318D58.s | 11 + asm/overlay_29_02318E70.s | 95 +++- asm/overlay_29_02319FB0.s | 105 +++- asm/overlay_29_0231B1B8.s | 42 +- asm/overlay_29_0231CBEC.s | 223 ++++++++- asm/overlay_29_0231EDFC.s | 17 +- asm/overlay_29_0231F594.s | 53 +- asm/overlay_29_0231FC20.s | 27 +- asm/overlay_29_023201A0.s | 9 + asm/overlay_29_02320788.s | 79 ++- asm/overlay_29_0232145C.s | 480 +++++++++++++----- asm/overlay_29_02325644.s | 168 ++++++- asm/overlay_29_02328030.s | 198 +++++++- asm/overlay_29_0232A3FC.s | 283 ++++++++++- asm/overlay_29_0232C524.s | 206 +++++++- asm/overlay_29_0232E274.s | 19 +- asm/overlay_29_0232E864.s | 247 ++++++--- asm/overlay_29_02333FD0.s | 78 ++- asm/overlay_29_023350FC.s | 381 +++++++++++--- asm/overlay_29_02337CCC.s | 657 +++++++++++++++++++----- 57 files changed, 8878 insertions(+), 1793 deletions(-) diff --git a/asm/include/main_0200C4CC.inc b/asm/include/main_0200C4CC.inc index efd2506a..202f2114 100644 --- a/asm/include/main_0200C4CC.inc +++ b/asm/include/main_0200C4CC.inc @@ -342,6 +342,7 @@ .public _0209B4E4 .public _0209B4FC .public _0209B50C +.public _0209B548_JP .public _0209C29C_JP .public _0209C29D_JP .public _0209C29E_JP @@ -702,6 +703,7 @@ .public _022A88E4 .public _022A88F0 .public _022A88F8 +.public _022A88FC .public _022A8908 .public _022A8990 .public _022A8991 diff --git a/asm/include/overlay_29_023082A0.inc b/asm/include/overlay_29_023082A0.inc index e40217c8..85df8cdd 100644 --- a/asm/include/overlay_29_023082A0.inc +++ b/asm/include/overlay_29_023082A0.inc @@ -5,6 +5,7 @@ .public ApplyDamageAndEffectsWrapper .public ATK_STAT_IDX .public BoostOffensiveStat +.public CanSeeTarget .public CanTargetEntity .public CategoryIsNotPhysical .public ChooseAiMove diff --git a/asm/include/overlay_29_02308FE0.inc b/asm/include/overlay_29_02308FE0.inc index 803626ad..2c28bb8e 100644 --- a/asm/include/overlay_29_02308FE0.inc +++ b/asm/include/overlay_29_02308FE0.inc @@ -188,6 +188,7 @@ .public ov29_02305F60 .public ov29_02307BDC .public ov29_02307C48 +.public ov29_02307DC0 .public ov29_023159D4 .public ov29_02337EC0 .public ov29_0233847C diff --git a/asm/main_0200C4CC.s b/asm/main_0200C4CC.s index 2d241d54..b8f57da9 100644 --- a/asm/main_0200C4CC.s +++ b/asm/main_0200C4CC.s @@ -13053,13 +13053,13 @@ _0201620C: _02016228: ldr r0, [sp] ldr r1, _02016288 ; =_02098FC0_JP - bl StrcmpTag + bl StrcmpTagVeneer cmp r0, #0 beq _02016294 ldr r0, [sp, #4] - bl AtoiTag + bl AtoiTagVeneer ldr r0, [sp, #8] - bl AtoiTag + bl AtoiTagVeneer mov r0, r0, lsl #0x10 add r4, r4, r0, asr #16 b _02016294 @@ -14504,7 +14504,7 @@ _02017580: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _02017588: .word _020AF760 - arm_func_end sub_02017314 + arm_func_end sub_02017A00 arm_func_start sub_0201758C sub_0201758C: ; 0x0201758C @@ -14601,7 +14601,7 @@ _020176CC_JP: add r3, sp, #0 mov r0, r8 bl SprintfStatic__020176E4 - b _020176CC_JP + b _020176CC _02017708: add r0, sp, #0 mov r1, #0x39 @@ -14994,8 +14994,10 @@ sub_02017A00: ; 0x02017A00 bl sub_02015E6C ldmia sp!, {r3, pc} .align 2, 0 -#ifdef EUROPE +#if defined(EUROPE) _02017A1C: .word 0x000044BF +#elif defined(JAPAN) +_02017A1C: .word 0x0000076D #else _02017A1C: .word 0x000044BD #endif @@ -30701,8 +30703,10 @@ _0202435C: .word _02099D50 arm_func_start SetStringAccuracy SetStringAccuracy: ; 0x02024360 -#ifdef EUROPE +#if defined(EUROPE) #define SET_STRING_ACCURACY_OFFSET 2 +#elif defined(JAPAN) +#define SET_STRING_ACCURACY_OFFSET 0x17FD #else #define SET_STRING_ACCURACY_OFFSET 0 #endif @@ -30769,6 +30773,13 @@ _02024424: .word _02099D50 arm_func_start SetStringPower SetStringPower: ; 0x02024428 +#if defined(EUROPE) +#define SET_STRING_POWER_OFFSET 2 +#elif defined(JAPAN) +#define SET_STRING_POWER_OFFSET 0x17FD +#else +#define SET_STRING_POWER_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, lr} ldr r2, _020244DC ; =0x000027A2 mov r4, r0 @@ -30823,19 +30834,10 @@ _020244D4: ldr r0, _020244F0 ; =_02099D50 ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 -#ifdef EUROPE -_020244DC: .word 0x000027A4 -_020244E0: .word 0x000029C3 -#else -_020244DC: .word 0x000027A2 -_020244E0: .word 0x000029C1 -#endif +_020244DC: .word 0x000027A2 + SET_STRING_POWER_OFFSET +_020244E0: .word 0x000029C1 + SET_STRING_POWER_OFFSET _020244E4: .word MOVE_POWER_STARS_TABLE -#ifdef EUROPE -_020244E8: .word 0x000027A3 -#else -_020244E8: .word 0x000027A1 -#endif +_020244E8: .word 0x000027A1 + SET_STRING_POWER_OFFSET _020244EC: .word _02099D84 _020244F0: .word _02099D50 arm_func_end SetStringPower @@ -31628,9 +31630,15 @@ _02024D30: ldmia sp!, {r3, r4, r5, pc} .align 2, 0 _02024D38: .word _02099E08 +#ifdef JAPAN +_02024D3C: .word 0x000004C8 +_02024D40: .word _02099D50 +_02024D44: .word 0x000004C7 +#else _02024D3C: .word 0x00000237 _02024D40: .word _02099D50 _02024D44: .word 0x00000236 +#endif arm_func_end GetCurrentTeamNameString arm_func_start sub_02024D48 @@ -31730,8 +31738,13 @@ GetBagNameString: ; 0x02024DFC mov r0, r4 ldmia sp!, {r4, pc} .align 2, 0 +#ifdef JAPAN +_02024E2C: .word 0x00001D39 +_02024E30: .word 0x00001D3A +#else _02024E2C: .word 0x000008E1 _02024E30: .word 0x000008E2 +#endif arm_func_end GetBagNameString arm_func_start sub_02024E34 @@ -32609,7 +32622,7 @@ _020255AC: ldreq r0, _020255D4 ; =_0209A3B6 ldreqh r0, [r0, r2] #ifdef JAPAN - ldrne r0, _020255CC ; =0x00008148 + ldrne r0, _020255CC_JP ; =0x00008148 #else movne r0, #0x3f #endif @@ -32617,14 +32630,14 @@ _020255AC: .align 2, 0 #ifdef JAPAN _020255BC: .word 0x000081A5 -_020255C0: .word 0x000001BF +_020255CC: .word 0x000001BF #else _020255CC: .word 0x000001BE #endif _020255D0: .word _0209A3B4 _020255D4: .word _0209A3B6 #ifdef JAPAN -_020255CC: .word 0x00008148 +_020255CC_JP: .word 0x00008148 #endif arm_func_end sub_0202554C @@ -33115,6 +33128,7 @@ sub_02025AD8: ; 0x02025AD8 str r1, [r0, #4] str r1, [r0, #8] mov r1, #1 + strb r1, [r0] #else ldr r0, [sp] ldr r2, _02025B70 ; =_022A7A54 @@ -33161,13 +33175,13 @@ sub_02025AD8: ; 0x02025AD8 str r2, [r0, #0xc] #endif mov r0, #1 -#endif strb r0, [r1] +#endif add sp, sp, #8 ldmia sp!, {r3, pc} .align 2, 0 -_02025B6C: .word _0209ABF0 #ifdef JAPAN +_02025B6C: .word _0209B548_JP _02025B34: .word _022A7A54 _02025B38: .word _0209AC04 _02025B3C: .word _022A92C4_JP @@ -33175,6 +33189,7 @@ _02025B40: .word _0209AC18 _02025B44: .word _020AFD04 _02025B48: .word _022A92B4_JP #else +_02025B6C: .word _0209ABF0 _02025B70: .word _022A7A54 _02025B74: .word _0209AC04 _02025B78: .word _0209AC18 @@ -33481,7 +33496,11 @@ sub_02025D90: ; 0x02025D90 _02025DA4: ldr r0, [sp] ldr r4, [sp, #4] +#ifdef JAPAN + bl sub_0202796C_JP +#else bl sub_02028324 +#endif cmp fp, #0 mov r6, r0 cmpge sb, #0 @@ -34554,7 +34573,11 @@ _02026920: ldr r0, [sp, #4] rsbge r5, sl, r1, lsl #3 mov r6, r7, asr #3 +#ifdef JAPAN + bl sub_0202796C_JP +#else bl sub_02027624 +#endif mov r1, sl, asr #2 add r1, sl, r1, lsr #29 ldrb r3, [r4, #6] @@ -34744,7 +34767,11 @@ _02026BDC: rsb r1, r1, #7 ldr r0, [sp, #4] str r1, [sp, #0x10] +#ifdef JAPAN + bl sub_0202796C_JP +#else bl sub_02027624 +#endif mov r2, sl, lsr #0x1f rsb r1, r2, sl, lsl #29 add r1, r2, r1, ror #29 @@ -35221,7 +35248,7 @@ sub_02026B1C: ; 0x02026B1C mov sb, r1 mov r8, r2 mov r7, r3 - bl sub_0202760C + bl sub_0202796C_JP mov fp, r0 mov r0, sl bl GetWindow @@ -35612,7 +35639,11 @@ sub_02026E3C: ; 0x02026E3C mov r7, r0 mov r6, r1 mov r5, r2 +#ifdef JAPAN + bl sub_0202796C_JP +#else bl sub_0202760C +#endif mov r4, r0 mov r0, r7 bl sub_02027624 @@ -35636,7 +35667,7 @@ sub_02026E78: ; 0x02026E78 mov r2, #0x1180 strb ip, [r3, #4] bl memset - ldr r0, _02026FF4 ; =_022A7A6C + ldr r0, _02026FF8 ; =_022A7B1C mov r1, #0 mov r2, #0x370 bl memset @@ -35740,11 +35771,7 @@ _02026EB0: mov r1, #0xa00 bl MemZero mov r2, #0 -#ifdef JAPAN - ldr r1, _0202737C ; =_022A92C8_JP -#else ldr r1, _02026FF4 ; =_022A7A6C -#endif ldr r0, _0202703C ; =_022A7AB4 strh r2, [r1, #6] mov r1, #0x14 @@ -35784,10 +35811,10 @@ _02026EB0: .align 2, 0 _02026FEC: .word _020AFD4C _02026FF0: .word _022A88DC -_02026FF4: .word _022A7A6C #ifndef JAPAN -_02026FF8: .word _022A7B1C +_02026FF4: .word _022A7A6C #endif +_02026FF8: .word _022A7B1C _02026FFC: .word _022A7AC8 _02027000: .word 0x04000014 _02027004: .word 0x0600D800 @@ -35804,7 +35831,7 @@ _0202702C: .word 0x06898000 _02027030: .word _022A7A78 _02027034: .word 0x0689A000 #ifdef JAPAN -_0202737C: .word _022A7A6C +_02026FF4: .word _022A7A6C #endif _02027038: .word _022A7EDC _0202703C: .word _022A7AB4 @@ -36292,7 +36319,11 @@ sub_0202760C: ; 0x0202760C ldr r0, [r0, r1] bx lr .align 2, 0 +#ifdef JAPAN +_02027620: .word _022A88FC +#else _02027620: .word _022A88F0 +#endif arm_func_end sub_0202760C #ifdef JAPAN @@ -38067,7 +38098,7 @@ _02028BC4: b _02028BEC _02028BDC: #ifdef JAPAN - strb r1, [r7] + strb r0, [r7] #else mov r1, #0 add r0, r7, #4 @@ -38101,7 +38132,11 @@ _02028BF4: bl sub_0200A174 _02028C20: ldr r1, _02028DEC ; =_022A7A6C +#ifdef JAPAN + ldrb r0, [r1, #4] +#else ldrb r0, [r1] +#endif cmp r0, #0 beq _02028C40 ldr r0, _02028E10 ; =_022A7A8C @@ -47603,26 +47638,7 @@ 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 +#ifndef JAPAN arm_func_start sub_020308E4 sub_020308E4: ; 0x020308E4 stmdb sp!, {r3, lr} @@ -47656,7 +47672,6 @@ _02030938: ldmia sp!, {r3, pc} arm_func_end sub_02030908 -#ifndef JAPAN arm_func_start sub_02030940 sub_02030940: ; 0x02030940 stmdb sp!, {r3, lr} @@ -47675,7 +47690,6 @@ _02030970: mvn r0, #0 ldmia sp!, {r3, pc} arm_func_end sub_02030940 -#endif arm_func_start sub_02030978 sub_02030978: ; 0x02030978 @@ -51239,7 +51253,11 @@ _020336E8: add sp, sp, #0x154 ldmia sp!, {r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_020336F0: .word 0x00001D3B +#else _020336F0: .word 0x000008E3 +#endif _020336F4: .word 0x0000C402 _020336F8: .word _0209AFC4 arm_func_end sub_020335A8 @@ -54538,8 +54556,10 @@ _0203638C: ldmia sp!, {r3, r4, r5, pc} .align 2, 0 _0203642C: .word _020AFDE0 -#ifdef EUROPE +#if defined(EUROPE) _02036430: .word 0x00003C66 +#elif defined(JAPAN) +_02036430: .word 0x000003BB #else _02036430: .word 0x00003C64 #endif @@ -54716,8 +54736,10 @@ _020365D4: ldmia sp!, {r3, r4, r5, pc} .align 2, 0 _02036674: .word _020AFDE8 -#ifdef EUROPE +#if defined(EUROPE) _02036678: .word 0x00003C75 +#elif defined(JAPAN) +_02036678: .word 0x000003CA #else _02036678: .word 0x00003C73 #endif @@ -55394,6 +55416,10 @@ _02036C84: ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 _02036CB0: .word _020AFDF0 +#ifdef JAPAN +_02036FC8: .word 0x000031D1 +_02036FCC: .word 0x000031CE +#endif _02036CB4: .word _0209B2FC _02036CB8: .word sub_02037F58 _02036CBC: .word _0209B31C @@ -55981,7 +56007,7 @@ _020373E0: b _02037438 _02037760: mov r0, #2 - bl sub_020383FC + bl sub_0203935C ldr r0, _02037444 ; =_020AFDF0 ldr r0, [r0] ldrsb r0, [r0] @@ -55994,10 +56020,6 @@ _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 @@ -56629,7 +56651,11 @@ sub_02037C78: ; 0x02037C78 bl UpdateWindow ldmia sp!, {r4, pc} .align 2, 0 +#ifdef JAPAN +_02037CA4: .word 0x000031D4 +#else _02037CA4: .word 0x00000122 +#endif arm_func_end sub_02037C78 arm_func_start sub_02037CA8 @@ -56646,7 +56672,11 @@ sub_02037CA8: ; 0x02037CA8 bl UpdateWindow ldmia sp!, {r4, pc} .align 2, 0 +#ifdef JAPAN +_02037CD4: .word 0x000031D5 +#else _02037CD4: .word 0x00000123 +#endif arm_func_end sub_02037CA8 arm_func_start sub_02037CD8 @@ -56786,7 +56816,7 @@ _02037E0C: ldr r2, [r1, r5, lsl #2] ldr r1, _020381F8 ; =_0209B4A4 bl SprintfStatic__02037F30 - b _02038178 + b _02037EA8 _02037E38: ldr r1, _020381F4 ; =_020B12A0_JP add r0, sp, #0 @@ -57235,10 +57265,10 @@ _020382AC: ldr r1, [r5, #0xc] mov r0, sb str r2, [sp] - ldr r2, _020383F0 ; =_0209B2D0 + ldr r2, _020383EC ; =_0209B2C4 ldrsh r5, [r5, #0x20] ldrb r7, [r2, r1] - ldr r2, _020383EC ; =_0209B2C4 + ldr r2, _020383F0 ; =_0209B2D0 mov r3, #0xc ldrb r2, [r2, r1] add r1, r7, r5 @@ -57610,13 +57640,13 @@ _020385F0: beq _02038680 cmp r4, #0x12 bge _02038680 -#ifdef JAPAN - mov r0, #0x20 -#else mov r0, #2 -#endif bl PlaySeVolumeWrapper +#ifdef JAPAN + mov r1, #2 +#else mov r1, #0x20 +#endif ldr r0, _02038900 ; =_020AFDF0 b _0203864C _02038634: @@ -58002,7 +58032,7 @@ _02038AF0: bl sub_02025C7C ldr r1, [r6] #ifdef JAPAN - ldrb r2, [r0, #6] + ldrsh r2, [r0, #6] #else ldrb r2, [r0, #2] #endif @@ -58010,7 +58040,7 @@ _02038AF0: add r5, r5, #1 strh r2, [r1, #0x8c] #ifdef JAPAN - ldrb r0, [r0, #6] + ldrsh r0, [r0, #6] #else ldrb r0, [r0, #2] #endif @@ -64385,7 +64415,11 @@ _0203DCB8: add r0, r0, #0xa1 add r0, r0, #0x100 add r1, r1, #0x3a +#ifdef JAPAN + bl StrcpySimple +#else bl StrncpySimple +#endif ldr r0, _0203E4B0 ; =_020AFE74 mov r2, #0xa ldr r0, [r0] @@ -65654,7 +65688,7 @@ _0203EEBC: ldr r1, _0203E4B0 ; =_020AFE74 ldr r0, _0203E4B8 ; =0x0000101C ldr r2, [r1] - ldr r1, _0203F348 ; =0x0000245A + ldr r1, _0203EFB4 ; =0x0000245A #else mov r4, r0 cmp r4, #1 diff --git a/asm/main_02075600.s b/asm/main_02075600.s index b5e28927..157bcc00 100644 --- a/asm/main_02075600.s +++ b/asm/main_02075600.s @@ -38569,7 +38569,10 @@ _0209B488: .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x28, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x30, 0x00, 0x00, 0x00 .byte 0x10, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x38, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2F, 0x46, 0x4F, 0x4E + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x38, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 + .global _0209B548_JP +_0209B548_JP: + .byte 0x2F, 0x46, 0x4F, 0x4E .byte 0x54, 0x2F, 0x6B, 0x61, 0x6E, 0x6A, 0x69, 0x2E, 0x64, 0x61, 0x74, 0x00 .global _0209AC04 _0209AC04: @@ -56418,11 +56421,19 @@ _020AFD60: .word _0209ACC0 .word _0209AD28 .word _0209AD3C +#ifdef JAPAN + .global _020AFD98 +_020AFD98: + .byte 0x00, 0x00, 0x00, 0x00 + .global _020AFD94 +_020AFD94: +#else .global _020AFD94 _020AFD94: .byte 0x00, 0x00, 0x00, 0x00 .global _020AFD98 _020AFD98: +#endif .byte 0x00, 0x00, 0x00, 0x00 .global _020AFD9C _020AFD9C: @@ -56465,6 +56476,7 @@ _020AFDF0: .byte 0x00, 0x00, 0x00, 0x00 #ifdef JAPAN .word _020AFE44 + .byte 0x00, 0x00, 0x00, 0x00 #else .byte 0x00, 0x00, 0x00, 0x00 .word _020AFE44 @@ -56472,7 +56484,7 @@ _020AFDF0: .global KEYBOARD_STRING_IDS KEYBOARD_STRING_IDS: #ifdef JAPAN - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xDA, 0x31, 0xDA, 0x31, 0x01, 0x01, 0xDC, 0x31, 0xDC, 0x31 + .byte 0x00, 0x01, 0xDA, 0x31, 0xDA, 0x31, 0x01, 0x01, 0xDC, 0x31, 0xDC, 0x31 .byte 0x02, 0x01, 0xDE, 0x31, 0xDF, 0x31, 0x03, 0x01, 0xE0, 0x31, 0xE1, 0x31, 0x04, 0x01, 0xE2, 0x31 .byte 0xE3, 0x31, 0x05, 0x01, 0xE4, 0x31, 0xE5, 0x31, 0x06, 0x01, 0xE6, 0x31, 0xE7, 0x31, 0x07, 0x01 .byte 0xE8, 0x31, 0xE8, 0x31, 0x08, 0x01, 0xE9, 0x31, 0xE9, 0x31, 0x09, 0x01, 0xD8, 0x31, 0xD8, 0x31 @@ -58796,15 +58808,22 @@ _022A7AB4: .global _022A7AB6 _022A7AB6: .space 0x12 +#ifdef JAPAN + .global _022A7B00 +_022A7B00: + .space 0x1C +#endif .global _022A7AC8 _022A7AC8: .space 0x1C .global _022A7AE4 _022A7AE4: .space 0x1C +#ifndef JAPAN .global _022A7B00 _022A7B00: .space 0x1C +#endif .global _022A7B1C _022A7B1C: #ifdef JAPAN diff --git a/asm/overlay_11.s b/asm/overlay_11.s index 40c68c5e..bd631772 100644 --- a/asm/overlay_11.s +++ b/asm/overlay_11.s @@ -39837,7 +39837,9 @@ _022FD540: ldr r1, [sl, #0x1c] add r1, r2, r1 str r1, [sp, #0x10] +#ifndef JAPAN ldrsh r1, [r0, #0xe6] +#endif ldr r6, [sl, #0x144] ldr r5, [sl, #0x148] #ifdef JAPAN @@ -65485,8 +65487,8 @@ ov11_02312264: ; 0x02312264 ldr r0, [r0, #4] mov r2, #0 add r0, r0, #0xf4 -#endif bl SetAnimDataFields2 +#endif bl ov11_02312398 mov r0, #1 ldmia sp!, {r3, pc} diff --git a/asm/overlay_29_022DC2B8.s b/asm/overlay_29_022DC2B8.s index 59b2ae66..17d8ea3a 100644 --- a/asm/overlay_29_022DC2B8.s +++ b/asm/overlay_29_022DC2B8.s @@ -2490,7 +2490,11 @@ ov29_022DE300: ; 0x022DE300 ldmia sp!, {r3, pc} .align 2, 0 _022DE410: .word ov29_02353530 +#ifdef JAPAN +_022DE414: .word 0x000003FE +#else _022DE414: .word 0x0000040A +#endif arm_func_end ov29_022DE300 arm_func_start ov29_022DE418 @@ -2684,7 +2688,11 @@ ov29_022DE638: ; 0x022DE638 ldr r0, [r1] mov r4, #0 add r0, r0, #0x4000 +#ifdef JAPAN + ldrsh r0, [r0, #0x30] +#else ldrsh r0, [r0, #0xd4] +#endif bl IsBackgroundTileset cmp r0, #0 mov r1, r4 @@ -3019,7 +3027,11 @@ DungeonAlloc: ; 0x022DEA5C str r0, [r1, #4] ldmia sp!, {r3, pc} .align 2, 0 +#ifdef JAPAN +_022DEA78: .word 0x0002CA70 +#else _022DEA78: .word 0x0002CB14 +#endif _022DEA7C: .word DUNGEON_PTR arm_func_end DungeonAlloc @@ -3042,7 +3054,11 @@ DungeonZInit: ; 0x022DEA90 .align 2, 0 _022DEAA4: .word DUNGEON_PTR _022DEAA8: .word MemZero +#ifdef JAPAN +_022DEAAC: .word 0x0002CA70 +#else _022DEAAC: .word 0x0002CB14 +#endif arm_func_end DungeonZInit arm_func_start DungeonFree @@ -3137,6 +3153,11 @@ _022DEBB8: .word ov29_022DEB40 arm_func_start ov29_022DEBBC ov29_022DEBBC: ; 0x022DEBBC +#ifdef JAPAN +#define OV29_022DEBBC_OFFSET -0xA4 +#else +#define OV29_022DEBBC_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, lr} mov r5, r0 bl GetDungeonGenInfoUnk0C @@ -3196,7 +3217,7 @@ ov29_022DEBBC: ; 0x022DEBBC strb r0, [r3, #0x13] ldr r0, [r1] add r0, r0, #0x2c000 - strb r2, [r0, #0xb10] + strb r2, [r0, #0xb10 + OV29_022DEBBC_OFFSET] ldr r0, [r1] strb r2, [r0, #8] ldr r0, [r1] @@ -3254,22 +3275,22 @@ ov29_022DEBBC: ; 0x022DEBBC strh r1, [r2, #0x86] ldr r2, [r0] add r2, r2, #0xc000 - strb r1, [r2, #0xd38] + strb r1, [r2, #0xd38 + OV29_022DEBBC_OFFSET] ldr r3, [r0] add r1, r3, #0x28000 - ldrb r2, [r1, #0x6b4] + ldrb r2, [r1, #0x6b4 + OV29_022DEBBC_OFFSET] add r1, r3, #0x4000 - strh r2, [r1, #0xd4] + strh r2, [r1, #0xd4 + OV29_022DEBBC_OFFSET] ldr r3, [r0] add r1, r3, #0x28000 - ldrb r2, [r1, #0x6b5] + ldrb r2, [r1, #0x6b5 + OV29_022DEBBC_OFFSET] add r1, r3, #0x4000 - strh r2, [r1, #0xd6] + strh r2, [r1, #0xd6 + OV29_022DEBBC_OFFSET] ldr r3, [r0] add r1, r3, #0x28000 - ldrb r2, [r1, #0x6c4] + ldrb r2, [r1, #0x6c4 + OV29_022DEBBC_OFFSET] add r1, r3, #0x4000 - strb r2, [r1, #0xda] + strb r2, [r1, #0xda + OV29_022DEBBC_OFFSET] ldr r1, [r0] ldrb r0, [r1, #0x798] cmp r0, #1 @@ -3283,19 +3304,19 @@ ov29_022DEBBC: ; 0x022DEBBC ldr r0, _022DEF2C ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 - ldrb r2, [r0, #0xda] + ldrb r2, [r0, #0xda + OV29_022DEBBC_OFFSET] cmp r2, #0 ldrne r1, _022DEF34 ; =FIXED_ROOM_REVISIT_OVERRIDES ldrneb r1, [r1, r2] cmpne r1, #0 - strneb r1, [r0, #0xda] + strneb r1, [r0, #0xda + OV29_022DEBBC_OFFSET] ldr r0, _022DEF2C ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 - ldrsh r1, [r0, #0xd4] + ldrsh r1, [r0, #0xd4 + OV29_022DEBBC_OFFSET] cmp r1, #0xb3 moveq r1, #0xb7 - streqh r1, [r0, #0xd4] + streqh r1, [r0, #0xd4 + OV29_022DEBBC_OFFSET] _022DEE38: ldr r0, _022DEF2C ; =DUNGEON_PTR ldr r0, [r0] @@ -3311,7 +3332,7 @@ _022DEE38: mov r1, #0x2a ldr r0, [r0] add r0, r0, #0x4000 - strb r1, [r0, #0xda] + strb r1, [r0, #0xda + OV29_022DEBBC_OFFSET] b _022DEEA4 _022DEE78: cmp r0, #0x87 @@ -3324,7 +3345,7 @@ _022DEE78: movne r1, #0x2b ldrne r0, [r0] addne r0, r0, #0x4000 - strneb r1, [r0, #0xda] + strneb r1, [r0, #0xda + OV29_022DEBBC_OFFSET] _022DEEA4: bl ov29_023484A0 cmp r4, #1 @@ -3333,7 +3354,7 @@ _022DEEA4: mov r2, #0x70 ldr r0, [r1] add r0, r0, #0x4000 - strb r2, [r0, #0xda] + strb r2, [r0, #0xda + OV29_022DEBBC_OFFSET] ldr r0, [r1] ldrb r0, [r0, #0x748] bl DungeonGoesUp @@ -3343,14 +3364,14 @@ _022DEEA4: mov r1, #0xc4 ldr r0, [r0] add r0, r0, #0x4000 - strh r1, [r0, #0xd4] + strh r1, [r0, #0xd4 + OV29_022DEBBC_OFFSET] b _022DEF20 _022DEEF0: ldr r0, _022DEF2C ; =DUNGEON_PTR mov r1, #0xc5 ldr r0, [r0] add r0, r0, #0x4000 - strh r1, [r0, #0xd4] + strh r1, [r0, #0xd4 + OV29_022DEBBC_OFFSET] b _022DEF20 _022DEF08: cmp r4, #2 @@ -3358,7 +3379,7 @@ _022DEF08: moveq r1, #0x71 ldreq r0, [r0] addeq r0, r0, #0x4000 - streqb r1, [r0, #0xda] + streqb r1, [r0, #0xda + OV29_022DEBBC_OFFSET] _022DEF20: mov r0, #0 bl ov29_02338898 @@ -3371,6 +3392,11 @@ _022DEF34: .word FIXED_ROOM_REVISIT_OVERRIDES arm_func_start RunDungeon RunDungeon: ; 0x022DEF38 +#ifdef JAPAN +#define RUN_DUNGEON_OFFSET -0xA4 +#else +#define RUN_DUNGEON_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0xd0 mov sl, r0 @@ -3563,7 +3589,9 @@ _022DF214: bl ov29_0234CB34 bl ov29_0234CB54 bl ov29_023365E8 +#ifndef JAPAN bl ov29_02348850 +#endif _022DF22C: cmp r6, #0 beq _022DF238 @@ -3573,9 +3601,9 @@ _022DF238: bne _022DF2D0 add r0, sb, #0x1a000 mov r2, #1 - strb r2, [r0, #0x23f] + strb r2, [r0, #0x23f + RUN_DUNGEON_OFFSET] ldr r1, _022DFF40 ; =DUNGEON_PTR - strb r2, [r0, #0x240] + strb r2, [r0, #0x240 + RUN_DUNGEON_OFFSET] ldr r0, [r1] add r0, r0, #0x7d0 bl ov29_0231B39C @@ -3735,7 +3763,7 @@ _022DF460: strb r2, [r0, #4] ldr r0, [r1] add r0, r0, #0x3000 - strb r2, [r0, #0xe28] + strb r2, [r0, #0xe28 + RUN_DUNGEON_OFFSET] bne _022DF4E4 ldr r0, [r1] mov r1, #0xa @@ -3763,19 +3791,23 @@ _022DF4E4: ldr r1, [r0] mov r0, #4 add r1, r1, #0x3000 - strb r2, [r1, #0xe38] + strb r2, [r1, #0xe38 + RUN_DUNGEON_OFFSET] bl DungeonRandInt ldr r1, _022DFF40 ; =DUNGEON_PTR ldr r2, _022DFF58 ; =ov29_023510C0 mov r3, r0, lsl #1 ldr r0, [r1] ldrsh r3, [r2, r3] +#ifdef JAPAN + add r0, r0, #0x3d00 +#else add r0, r0, #0x3e00 +#endif mov r2, #0 - strh r3, [r0, #0x3a] + strh r3, [r0, #0x3a + RUN_DUNGEON_OFFSET] ldr r0, [r1] add r0, r0, #0x3000 - strb r2, [r0, #0xe39] + strb r2, [r0, #0xe39 + RUN_DUNGEON_OFFSET] ldr r0, [r1] strb r2, [r0, #0x78a] _022DF53C: @@ -3797,12 +3829,12 @@ _022DF574: ldr r0, _022DFF40 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 - ldrsh r0, [r0, #0xd4] + ldrsh r0, [r0, #0xd4 + RUN_DUNGEON_OFFSET] bl ov29_023389C4 ldr r0, _022DFF40 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0xc000 - ldrb r0, [r0, #0xd38] + ldrb r0, [r0, #0xd38 + RUN_DUNGEON_OFFSET] bl ov29_02338A4C bl ov29_022E8708 bl ov29_022DD5B4 @@ -3839,18 +3871,18 @@ _022DF5E4: ldr r0, _022DFF40 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] + ldrb r0, [r0, #0xda + RUN_DUNGEON_OFFSET] bl IsRoomIlluminated cmp r0, #0 addne r0, sb, #0x1a000 movne r1, #1 - strneb r1, [r0, #0x23f] - strneb r1, [r0, #0x240] + strneb r1, [r0, #0x23f + RUN_DUNGEON_OFFSET] + strneb r1, [r0, #0x240 + RUN_DUNGEON_OFFSET] bl IsSecretBazaarVeneer ldr r0, _022DFF40 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] + ldrb r0, [r0, #0xda + RUN_DUNGEON_OFFSET] bl IsBossFight cmp r0, #0 bne _022DF660 @@ -3886,7 +3918,7 @@ _022DF6C0: ldr r0, _022DFF40 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x1a000 - ldrb r0, [r0, #0x245] + ldrb r0, [r0, #0x245 + RUN_DUNGEON_OFFSET] cmp r0, #0 beq _022DF6F4 bl GetLeader @@ -3895,17 +3927,17 @@ _022DF6C0: movne r1, #1 ldrne r0, [r0] addne r0, r0, #0x2c000 - strneb r1, [r0, #0xb10] + strneb r1, [r0, #0xb10 + RUN_DUNGEON_OFFSET] _022DF6F4: bl ov29_022FCD04 _022DF6F8: bl ov29_0231AFB4 add r0, sb, #0x19000 mov r1, #0 - str r1, [r0, #0x904] - str r1, [r0, #0x90c] - str r1, [r0, #0x908] - str r1, [r0, #0x910] + str r1, [r0, #0x904 + RUN_DUNGEON_OFFSET] + str r1, [r0, #0x90c + RUN_DUNGEON_OFFSET] + str r1, [r0, #0x908 + RUN_DUNGEON_OFFSET] + str r1, [r0, #0x910 + RUN_DUNGEON_OFFSET] cmp r5, #0 bne _022DF74C bl ov29_022ED888 @@ -4157,13 +4189,17 @@ _022DFAA4: bl ov29_022E5F20 bl GetLeader add r1, sb, #0x4000 - ldrb r1, [r1, #0xc4] + ldrb r1, [r1, #0xc4 + RUN_DUNGEON_OFFSET] bl ov29_02305814 mov r0, #1 mov r1, r7 bl TryActivateWeather _022DFAD4: +#ifdef JAPAN + mov r0, #0x14000 +#else mov r0, #0x10c00 +#endif bl ov10_022BFE6C bl sub_02001808 ldr r0, _022DFF40 ; =DUNGEON_PTR @@ -4176,7 +4212,7 @@ _022DFAD4: mov r0, r4 strb r2, [sb, #0x758] add r1, sb, #0x1a000 - strb r2, [r1, #0x24d] + strb r2, [r1, #0x24d + RUN_DUNGEON_OFFSET] bl SetMinimapDataE447 mov r6, #0 _022DFB14: @@ -4250,7 +4286,7 @@ _022DFBE4: ldr r1, [r0] mov r0, #4 add r1, r1, #0x1a000 - strb r2, [r1, #0x24d] + strb r2, [r1, #0x24d + RUN_DUNGEON_OFFSET] mov r1, #0x4f bl ov29_022EA370 bl ov29_022E9FC0 @@ -4306,7 +4342,11 @@ _022DFC60: mov r0, #0 bl ov29_0234C738 mov r0, #0 +#ifdef JAPAN + mov r1, #0x880 +#else ldr r1, _022DFF6C ; =0x00000B6F +#endif mov r2, #1 bl DisplayMessage mov r0, #2 @@ -4466,19 +4506,26 @@ _022DFF14: mov r1, #1 b _022DFF8C .align 2, 0 +#ifdef JAPAN +#define RUN_DUNGEON_DATA_OFFSET -0x2EF +#else +#define RUN_DUNGEON_DATA_OFFSET 0 +#endif _022DFF3C: .word ov29_023510C8 _022DFF40: .word DUNGEON_PTR -_022DFF44: .word 0x00000B6B -_022DFF48: .word 0x00000B6C -_022DFF4C: .word 0x00000B6D -_022DFF50: .word 0x00000B6E +_022DFF44: .word 0x00000B6B + RUN_DUNGEON_DATA_OFFSET +_022DFF48: .word 0x00000B6C + RUN_DUNGEON_DATA_OFFSET +_022DFF4C: .word 0x00000B6D + RUN_DUNGEON_DATA_OFFSET +_022DFF50: .word 0x00000B6E + RUN_DUNGEON_DATA_OFFSET _022DFF54: .word LEADER_PTR _022DFF58: .word ov29_023510C0 _022DFF5C: .word ov29_022DEBBC _022DFF60: .word ov29_02353563 -_022DFF64: .word 0x00000B73 +_022DFF64: .word 0x00000B73 + RUN_DUNGEON_DATA_OFFSET _022DFF68: .word DIRECTIONS_XY +#ifndef JAPAN _022DFF6C: .word 0x00000B6F +#endif _022DFF70: .word 0x00000266 _022DFF74: .word 0x00000261 _022DFF78: .word 0x00000279 @@ -4560,7 +4607,7 @@ _022E008C: ldr r1, [r0] add r0, r1, #0x2c000 ldrb r1, [r1, #0x749] - ldrb r0, [r0, #0xaf4] + ldrb r0, [r0, #0xaf4 + RUN_DUNGEON_OFFSET] add r1, r1, #1 cmp r1, r0 blt _022E00C8 diff --git a/asm/overlay_29_022E0378.s b/asm/overlay_29_022E0378.s index 174d5831..3b5fdb56 100644 --- a/asm/overlay_29_022E0378.s +++ b/asm/overlay_29_022E0378.s @@ -36,7 +36,11 @@ GetFloorType: ; 0x022E03B0 moveq r0, #2 ldmeqia sp!, {r3, pc} add r0, r2, #0x4000 +#ifdef JAPAN + ldrb r0, [r0, #0x36] +#else ldrb r0, [r0, #0xda] +#endif cmp r0, #0 beq _022E03F8 cmp r0, #0x6e @@ -76,7 +80,11 @@ _022E044C: ldr r0, [r4] add r0, r0, r7, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r8, [r0, #0xa94] +#else ldr r8, [r0, #0xb38] +#endif mov r0, r8 bl EntityIsValid__022E0354 cmp r0, #0 @@ -103,6 +111,67 @@ _022E04B4: add r7, r7, #1 cmp r7, #0x10 blt _022E044C +#ifdef JAPAN + mov r6, #0 +_022E04C4: + ldr r0, _022E0618 ; =DUNGEON_PTR + ldr r0, [r0] + add r0, r0, r6, lsl #2 + add r0, r0, #0x12000 + ldr r4, [r0, #0xa84] + mov r0, r4 + bl EntityIsValid__022E0354 + cmp r0, #0 + beq _022E1C2C + mov r0, #0 + mov r3, #1 + strb r0, [r4, #0x22] + strb r3, [r4, #0x20] + ldr r5, [r4, #0xb4] + rsb r0, r3, #0x3e8 + ldrsh r2, [r5, #0x12] + ldrsh r1, [r5, #0x16] + ldr r3, _022E0618 ; =DUNGEON_PTR + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + strh r1, [r5, #0x10] + add r2, r5, #0x100 + ldrh r0, [r2, #0x46] + mov r1, #0 + strh r0, [r2, #0x42] + ldrh r4, [r2, #0x48] + mov r0, r5 + strh r4, [r2, #0x44] + ldr r2, [r3] + strb r1, [r2, #0x78d] + bl SubInitMonster + ldrsh r0, [r5, #2] + mov r4, #0 + add r8, r5, #0x120 + strh r0, [r5, #4] + strb r4, [r5, #0x105] + mov r5, r4 + mov r7, #1 +_022E1BF8: + ldrb r0, [r8, r4, lsl #3] + add sb, r8, r4, lsl #3 + tst r0, #1 + movne r0, r7 + moveq r0, r5 + tst r0, #0xff + beq _022E1C20 + mov r0, sb + bl GetMaxPpWrapper + strb r0, [sb, #6] +_022E1C20: + add r4, r4, #1 + cmp r4, #4 + blt _022E1BF8 +_022E1C2C: + add r6, r6, #1 + cmp r6, #4 +#else mov r8, #0 _022E04C4: ldr r0, _022E0618 ; =DUNGEON_PTR @@ -165,6 +234,7 @@ _022E058C: _022E05A0: add r8, r8, #1 cmp r8, #4 +#endif blt _022E04C4 mov r8, #0 mov r4, #5 @@ -230,8 +300,13 @@ _022E0648: add r1, r1, #0x248 add r1, r1, #0x400 bl ov29_0234B0B4 +#ifdef JAPAN + ldr r1, _022E1E90 ; =0x00000881 + mov r0, #0 +#else mov r0, #0 mov r1, #0xb70 +#endif mov r2, #1 bl DisplayMessage2 _022E0698: @@ -336,10 +411,16 @@ _022E07F8: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _022E0800: .word DUNGEON_PTR +#ifdef JAPAN +#define TRY_FORCED_LOSS_OFFSET -0x2EF +_022E1E90: .word 0x00000881 +#else +#define TRY_FORCED_LOSS_OFFSET 0 +#endif _022E0804: .word 0x0000025E -_022E0808: .word 0x00000B71 +_022E0808: .word 0x00000B71 + TRY_FORCED_LOSS_OFFSET _022E080C: .word 0x00000261 -_022E0810: .word 0x00000B72 +_022E0810: .word 0x00000B72 + TRY_FORCED_LOSS_OFFSET _022E0814: .word 0x00000266 _022E0818: .word 0x00000265 arm_func_end TryForcedLoss @@ -386,7 +467,11 @@ IsCurrentFixedRoomBossFight: ; 0x022E0880 ldr ip, _022E089C ; =IsBossFight ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrb r0, [r0, #0x36] +#else ldrb r0, [r0, #0xda] +#endif bx ip .align 2, 0 _022E0898: .word DUNGEON_PTR @@ -415,7 +500,11 @@ FixedRoomIsSubstituteRoom: ; 0x022E08CC ldr r0, _022E08F0 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrb r0, [r0, #0x36] +#else ldrb r0, [r0, #0xda] +#endif cmp r0, #0x6e moveq r0, #1 movne r0, #0 @@ -502,7 +591,11 @@ FadeToBlack: ; 0x022E0968 ldr r0, _022E09E4 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x1a000 +#ifdef JAPAN + strb r1, [r0, #0x1a9] +#else strb r1, [r0, #0x24d] +#endif ldmia sp!, {r3, pc} .align 2, 0 _022E09E4: .word DUNGEON_PTR @@ -545,7 +638,11 @@ ov29_022E0A18: ; 0x022E0A18 mov r1, #1 ldr r0, [r0] add r0, r0, #0x1a000 +#ifdef JAPAN + strb r1, [r0, #0x1a9] +#else strb r1, [r0, #0x24d] +#endif bl FadeToBlack mov r0, #0 bl ov29_022E9FD0 @@ -1110,7 +1207,11 @@ _022E1038: bl HandleSir0Translation add r0, sp, #0x20 mov r1, #4 +#ifdef JAPAN + mov r2, #0x3f4 +#else mov r2, #0x400 +#endif mov r3, #0 bl LoadWteFromFileDirectory mov r6, #0 @@ -1220,7 +1321,11 @@ _022E1298: add sp, sp, #0xc ldmia sp!, {r3, r4, pc} .align 2, 0 +#ifdef JAPAN +_022E12EC: .word 0x000003FD +#else _022E12EC: .word 0x00000409 +#endif _022E12F0: .word ov29_0237C6D4 _022E12F4: .word 0x00005E20 arm_func_end ov29_022E11F8 @@ -1321,6 +1426,50 @@ _022E142C: blt _022E142C ldr r3, _022E1504 ; =0x0000F2F0 ldr r1, _022E14F8 ; =DUNGEON_PTR +#ifdef JAPAN + mov r7, #0x2f0 + mov r3, #0 +_022E2AE4: + ldr r0, [r1] + add r0, r0, r3, lsl #1 + add r0, r0, #0x12000 + add r3, r3, #1 + strh r2, [r0, #0x88] + cmp r3, #9 + blt _022E2AE4 + ldr r2, _022E14F4 ; =ov10_022C4D54 + ldr lr, _022E14F8 ; =DUNGEON_PTR + add r7, r7, #1 + mov r8, #1 + mov r4, #0x1a + mov r5, #0x19 + mov r3, #0 + mov ip, #0x12 +_022E1490: + cmp r8, #1 + moveq sl, r5 + beq _022E2B34 + cmp r8, #2 + moveq sl, r4 +_022E2B34: + mul r6, r8, ip + mov r0, sl, lsl #1 + ldrsh r1, [r2, r0] + mov sb, r3 +_022E2B44: + ldr fp, [lr] + orr r0, r7, r1, lsl #12 + add fp, r6, fp + add fp, fp, sb, lsl #1 + add fp, fp, #0x12000 + strh r0, [fp, #0x88] + add sb, sb, #1 + cmp sb, #9 + add r7, r7, #1 + blt _022E2B44 + add r8, r8, #1 + cmp r8, #3 +#else ldr r0, _022E1508 ; =0x0001212C mov r6, #0x2f0 mov r4, #0 @@ -1362,18 +1511,29 @@ _022E14B4: blt _022E14B4 add r7, r7, #1 cmp r7, #3 +#endif blt _022E1490 add sp, sp, #0x24 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +_022E14EC: .word 0x000003F2 +#else _022E14EC: .word 0x000003FE +#endif _022E14F0: .word _020AFC4C _022E14F4: .word ov10_022C4D54 _022E14F8: .word DUNGEON_PTR +#ifdef JAPAN +_022E14FC: .word 0x00011E24 +_022E1500: .word 0x000129EE +_022E1504: .word 0x0000F2F0 +#else _022E14FC: .word 0x00011EC8 _022E1500: .word 0x00012A92 _022E1504: .word 0x0000F2F0 _022E1508: .word 0x0001212C +#endif arm_func_end ov29_022E1304 arm_func_start ov29_022E150C @@ -1401,6 +1561,11 @@ _022E154C: .word DUNGEON_PTR arm_func_start ov29_022E1550 ov29_022E1550: ; 0x022E1550 +#ifdef JAPAN +#define OV29_022E1550_OFFSET -0xA4 +#else +#define OV29_022E1550_OFFSET 0 +#endif stmdb sp!, {r3, lr} bl GetFloorType cmp r0, #0 @@ -1415,7 +1580,7 @@ ov29_022E1550: ; 0x022E1550 ldr r0, [r0] moveq r1, #0x1b add r0, r0, #0x4000 - strh r1, [r0, #0xd8] + strh r1, [r0, #0xd8 + OV29_022E1550_OFFSET] ldmia sp!, {r3, pc} _022E1590: cmp r0, #1 @@ -1423,13 +1588,13 @@ _022E1590: movne r1, #0x1d ldrne r0, [r0] addne r0, r0, #0x4000 - strneh r1, [r0, #0xd8] + strneh r1, [r0, #0xd8 + OV29_022E1550_OFFSET] ldmneia sp!, {r3, pc} ldr r0, _022E15C4 ; =DUNGEON_PTR mov r1, #6 ldr r0, [r0] add r0, r0, #0x4000 - strh r1, [r0, #0xd8] + strh r1, [r0, #0xd8 + OV29_022E1550_OFFSET] ldmia sp!, {r3, pc} .align 2, 0 _022E15C4: .word DUNGEON_PTR @@ -1498,6 +1663,11 @@ _022E163C: .word GetTileSafe arm_func_start ov29_022E1640 ov29_022E1640: ; 0x022E1640 +#ifdef JAPAN +#define OV29_022E1640_OFFSET -0xA4 +#else +#define OV29_022E1640_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r6, #0 ldr r4, _022E1848 ; =DUNGEON_PTR @@ -1506,27 +1676,27 @@ ov29_022E1640: ; 0x022E1640 mov r7, #0xb8 _022E1658: ldr r2, [r4] - add r0, r2, #0x1cc + add r0, r2, #0x1cc + OV29_022E1640_OFFSET add r0, r0, #0x12c00 mla r1, r6, r7, r0 add r0, r2, r6, lsl #2 add r0, r0, #0x12000 - str r1, [r0, #0xb28] + str r1, [r0, #0xb28 + OV29_022E1640_OFFSET] ldr r0, [r4] add r0, r0, r6, lsl #2 add r0, r0, #0x12000 - ldr r0, [r0, #0xb28] + ldr r0, [r0, #0xb28 + OV29_022E1640_OFFSET] str r5, [r0] ldr r0, [r4] add r0, r0, r6, lsl #2 add r0, r0, #0x12000 - ldr r0, [r0, #0xb28] + ldr r0, [r0, #0xb28 + OV29_022E1640_OFFSET] add r0, r0, #0x2c bl InitAnimationControlWithSet__0201C0CC ldr r0, [r4] add r0, r0, r6, lsl #2 add r0, r0, #0x12000 - ldr r0, [r0, #0xb28] + ldr r0, [r0, #0xb28 + OV29_022E1640_OFFSET] add r6, r6, #1 strh r8, [r0, #0xa8] cmp r6, #4 @@ -1544,27 +1714,27 @@ _022E16C8: mov r8, #0xb8 _022E16E8: ldr r2, [r4] - add r0, r2, #0xac + add r0, r2, #0xac + OV29_022E1640_OFFSET add r0, r0, #0x13000 mla r1, r7, r8, r0 add r0, r2, r7, lsl #2 add r0, r0, #0x12000 - str r1, [r0, #0xb38] + str r1, [r0, #0xb38 + OV29_022E1640_OFFSET] ldr r0, [r4] add r0, r0, r7, lsl #2 add r0, r0, #0x12000 - ldr r0, [r0, #0xb38] + ldr r0, [r0, #0xb38 + OV29_022E1640_OFFSET] str r5, [r0] ldr r0, [r4] add r0, r0, r7, lsl #2 add r0, r0, #0x12000 - ldr r0, [r0, #0xb38] + ldr r0, [r0, #0xb38 + OV29_022E1640_OFFSET] add r0, r0, #0x2c bl InitAnimationControlWithSet__0201C0CC ldr r0, [r4] add r0, r0, r7, lsl #2 add r0, r0, #0x12000 - ldr r0, [r0, #0xb38] + ldr r0, [r0, #0xb38 + OV29_022E1640_OFFSET] add r7, r7, #1 strh r6, [r0, #0xa8] cmp r7, #0x10 @@ -1583,7 +1753,7 @@ _022E1770: add r1, r1, r3, lsl #2 add r1, r1, #0x12000 add r3, r3, #1 - str r0, [r1, #0xb78] + str r0, [r1, #0xb78 + OV29_022E1640_OFFSET] cmp r3, #0x14 blt _022E1770 ldr r4, _022E1848 ; =DUNGEON_PTR @@ -1596,11 +1766,11 @@ _022E1798: mla r5, r0, r3, r2 add r2, r6, r0, lsl #2 add r2, r2, #0x12000 - str r5, [r2, #0xbc8] + str r5, [r2, #0xbc8 + OV29_022E1640_OFFSET] ldr r2, [r4] add r2, r2, r0, lsl #2 add r2, r2, #0x12000 - ldr r2, [r2, #0xbc8] + ldr r2, [r2, #0xbc8 + OV29_022E1640_OFFSET] add r0, r0, #1 str r1, [r2] cmp r0, #0x40 @@ -1610,29 +1780,34 @@ _022E1798: mov r3, #0xb8 _022E17E0: ldr r6, [r4] - add r2, r6, #0x22c + add r2, r6, #0x22c + OV29_022E1640_OFFSET add r2, r2, #0x16800 mla r5, r1, r3, r2 add r2, r6, r1, lsl #2 add r2, r2, #0x12000 - str r5, [r2, #0xcc8] + str r5, [r2, #0xcc8 + OV29_022E1640_OFFSET] ldr r2, [r4] add r2, r2, r1, lsl #2 add r2, r2, #0x12000 - ldr r2, [r2, #0xcc8] + ldr r2, [r2, #0xcc8 + OV29_022E1640_OFFSET] add r1, r1, #1 str r0, [r2] cmp r1, #0x40 blt _022E17E0 ldr r2, _022E1848 ; =DUNGEON_PTR ldr r4, [r2] +#ifdef JAPAN + add r1, r4, #0x388 + add r3, r1, #0x19400 +#else add r1, r4, #0x2c add r3, r1, #0x19800 +#endif add r1, r4, #0x12000 - str r3, [r1, #0xdc8] + str r3, [r1, #0xdc8 + OV29_022E1640_OFFSET] ldr r1, [r2] add r1, r1, #0x12000 - ldr r1, [r1, #0xdc8] + ldr r1, [r1, #0xdc8 + OV29_022E1640_OFFSET] str r0, [r1] ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 @@ -1643,13 +1818,18 @@ _022E1850: .word ov29_0237C79C arm_func_start ov29_022E1854 ov29_022E1854: ; 0x022E1854 +#ifdef JAPAN +#define OV29_022E1854_OFFSET -0xA4 +#else +#define OV29_022E1854_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} sub sp, sp, #0xc ldr r4, _022E1A18 ; =DUNGEON_PTR ldr r0, [r4] add r0, r0, #0x1a000 - ldrb r1, [r0, #0x23e] - ldrb r8, [r0, #0x245] + ldrb r1, [r0, #0x23e + OV29_022E1854_OFFSET] + ldrb r8, [r0, #0x245 + OV29_022E1854_OFFSET] cmp r1, #0 beq _022E1900 mov r6, #0 @@ -1659,14 +1839,14 @@ _022E1884: ldr r0, [r4] add r0, r0, r6, lsl #2 add r0, r0, #0x12000 - ldr r5, [r0, #0xb78] + ldr r5, [r0, #0xb78 + OV29_022E1854_OFFSET] mov r0, r5 bl EntityIsValid__022E1A1C cmp r0, #0 beq _022E18F0 ldr r0, [r4] add r0, r0, #0x1a000 - ldr r0, [r0, #0x22c] + ldr r0, [r0, #0x22c + OV29_022E1854_OFFSET] cmp r5, r0 mov r0, r5 bne _022E18C4 @@ -1696,7 +1876,7 @@ _022E1908: ldr r0, [r4] add r0, r0, r6, lsl #2 add r0, r0, #0x12000 - ldr r7, [r0, #0xb28] + ldr r7, [r0, #0xb28 + OV29_022E1854_OFFSET] mov r0, r7 bl EntityIsValid__022E1A1C cmp r0, #0 @@ -1707,7 +1887,11 @@ _022E1908: mov r0, r7 bl ov29_02303F18 ldr r0, [r7, #0xb4] +#ifdef JAPAN + ldrb r0, [r0, #0x161] +#else ldrb r0, [r0, #0x165] +#endif cmp r0, #0 bne _022E196C mov r2, r6, lsl #0x10 @@ -1728,7 +1912,7 @@ _022E1980: ldr r0, [r4] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 - ldr r6, [r0, #0xb38] + ldr r6, [r0, #0xb38 + OV29_022E1854_OFFSET] mov r0, r6 bl EntityIsValid__022E1A1C cmp r0, #0 @@ -1749,7 +1933,7 @@ _022E19CC: add r0, r1, sb, lsl #2 str r7, [sp] add r0, r0, #0x12000 - ldr r0, [r0, #0xbc8] + ldr r0, [r0, #0xbc8 + OV29_022E1854_OFFSET] mov r1, r8 mov r2, r6 mov r3, r5 @@ -1758,7 +1942,7 @@ _022E19CC: _022E19F0: ldr r1, [r4] add r0, r1, #0x3f00 - ldrsh r0, [r0, #0xc0] + ldrsh r0, [r0, #0xc0 + OV29_022E1854_OFFSET] cmp sb, r0 blt _022E19CC cmp r8, #0 diff --git a/asm/overlay_29_022E1A40.s b/asm/overlay_29_022E1A40.s index 7b671a58..9b6fa66f 100644 --- a/asm/overlay_29_022E1A40.s +++ b/asm/overlay_29_022E1A40.s @@ -64,7 +64,11 @@ ov29_022E1AD4: ; 0x022E1AD4 bl EntityIsValid__022E1A1C cmp r0, #0 ldrne r0, [r4, #0xb4] +#ifdef JAPAN + ldrneb r0, [r0, #0x177] +#else ldrneb r0, [r0, #0x17b] +#endif moveq r0, #0 ldmia sp!, {r4, pc} arm_func_end ov29_022E1AD4 @@ -100,7 +104,11 @@ _022E1B38: ldr r0, [r0] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r7, [r0, #0xa84] +#else ldr r7, [r0, #0xb28] +#endif mov r0, r7 bl EntityIsValid__022E1A1C cmp r0, #0 @@ -116,10 +124,17 @@ _022E1B38: strh r0, [r7, #0xac] ldr r0, [r7, #0xb4] movne r6, r6, lsl #1 +#ifdef JAPAN + strb r4, [r0, #0x176] + ldr r0, [r7, #0xb4] + mov r2, #0 + strb r6, [r0, #0x177] +#else strb r4, [r0, #0x17a] ldr r0, [r7, #0xb4] mov r2, #0 strb r6, [r0, #0x17b] +#endif mov r1, #1 ldr r0, _022E1C08 ; =ov29_0237C754 b _022E1BB4 @@ -179,14 +194,22 @@ _022E1C48: mov r2, r3 b _022E1C6C _022E1C54: +#ifdef JAPAN + ldrb r1, [r4, #0x176] +#else ldrb r1, [r4, #0x17a] +#endif add r0, r3, #1 mov r0, r0, lsl #0x10 add r1, r5, r1 strb r2, [r3, r1] mov r3, r0, asr #0x10 _022E1C6C: +#ifdef JAPAN + ldrb r0, [r4, #0x177] +#else ldrb r0, [r4, #0x17b] +#endif cmp r3, r0 blt _022E1C54 ldmia sp!, {r3, r4, r5, r6, r7, pc} @@ -279,7 +302,11 @@ _022E1D90: ldr r0, [sb] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r7, [r0, #0xa84] +#else ldr r7, [r0, #0xb28] +#endif mov r0, r7 bl EntityIsValid__022E1A1C cmp r0, #0 @@ -289,10 +316,17 @@ _022E1D90: ldr r0, _022E1EC0 ; =DUNGEON_PTR strb r5, [r7, #0x24] ldr r0, [r0] +#ifdef JAPAN + mov r1, #0x23c + add r0, r0, #0x3f4 + add r0, r0, #0x400 + mla r0, r5, r1, r0 +#else add r1, r5, r5, lsl #3 add r0, r0, #0x3f4 add r0, r0, #0x400 add r0, r0, r1, lsl #6 +#endif str r0, [r7, #0xb4] strh r8, [r0, #2] mov r1, r8 @@ -326,10 +360,17 @@ _022E1D90: bl ov29_022E2978 ldr r1, [sp, #8] ldr r0, [r7, #0xb4] +#ifdef JAPAN + strb r1, [r0, #0x176] + ldr r1, [sp, #4] + ldr r0, [r7, #0xb4] + strb r1, [r0, #0x177] +#else strb r1, [r0, #0x17a] ldr r1, [sp, #4] ldr r0, [r7, #0xb4] strb r1, [r0, #0x17b] +#endif ldr r0, [sp, #8] ldr r1, [sp, #4] mov r0, r0, lsl #0x10 @@ -411,7 +452,11 @@ _022E1F44: ldr r0, [r0] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r7, [r0, #0xa94] +#else ldr r7, [r0, #0xb38] +#endif mov r0, r7 bl EntityIsValid__022E1A1C cmp r0, #0 @@ -427,10 +472,17 @@ _022E1F44: strh r0, [r7, #0xac] ldr r0, [r7, #0xb4] movne r6, r6, lsl #1 +#ifdef JAPAN + strb r5, [r0, #0x176] + ldr r0, [r7, #0xb4] + mov r2, #0 + strb r6, [r0, #0x177] +#else strb r5, [r0, #0x17a] ldr r0, [r7, #0xb4] mov r2, #0 strb r6, [r0, #0x17b] +#endif mov r1, #1 ldr r0, _022E2014 ; =ov29_0237C79C b _022E1FC0 @@ -550,7 +602,11 @@ _022E211C: ldr r0, [sb] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r7, [r0, #0xa94] +#else ldr r7, [r0, #0xb38] +#endif mov r0, r7 bl EntityIsValid__022E1A1C cmp r0, #0 @@ -562,10 +618,17 @@ _022E211C: ldr r1, _022E225C ; =DUNGEON_PTR strb r0, [r7, #0x22] ldr r1, [r1] +#ifdef JAPAN + mov r2, #0x23c + add r1, r1, #0xe4 + add r1, r1, #0x1000 + mla r2, r5, r2, r1 +#else add r2, r5, r5, lsl #3 add r1, r1, #0xf4 add r1, r1, #0x1000 add r2, r1, r2, lsl #6 +#endif str r2, [r7, #0xb4] mov r1, r8 strh r8, [r2, #2] @@ -600,10 +663,17 @@ _022E211C: str r1, [r7, #0x1c] ldr r1, [sp, #8] ldr r0, [r7, #0xb4] +#ifdef JAPAN + strb r1, [r0, #0x176] + ldr r1, [sp, #4] + ldr r0, [r7, #0xb4] + strb r1, [r0, #0x177] +#else strb r1, [r0, #0x17a] ldr r1, [sp, #4] ldr r0, [r7, #0xb4] strb r1, [r0, #0x17b] +#endif ldr r0, [sp, #8] ldr r1, [sp, #4] mov r0, r0, lsl #0x10 @@ -648,7 +718,11 @@ _022E2280: ldr r0, [r4] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r6, [r0, #0xc24] +#else ldr r6, [r0, #0xcc8] +#endif mov r0, r6 bl EntityIsValid__022E1A1C cmp r0, #0 @@ -658,8 +732,13 @@ _022E2280: str r1, [r6] ldr r0, [r0] mov r2, #0 +#ifdef JAPAN + add r0, r0, #0xf20 + add r0, r0, #0x3000 +#else add r0, r0, #0x3c4 add r0, r0, #0x3c00 +#endif add r0, r0, r5, lsl #2 str r0, [r6, #0xb4] strb sl, [r0] @@ -695,7 +774,11 @@ SpawnItemEntity: ; 0x022E2314 ldr r1, [r1] mov r6, r0 add r0, r1, #0x4000 +#ifdef JAPAN + ldrsh r0, [r0, #0x30] +#else ldrsh r0, [r0, #0xd4] +#endif ldrb r0, [r2, r0] cmp r0, #1 bne _022E235C @@ -715,11 +798,26 @@ _022E2368: ldr r0, [r7] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r5, [r0, #0xb24] +#else ldr r5, [r0, #0xbc8] +#endif mov r0, r5 bl EntityIsValid__022E1A1C cmp r0, #0 bne _022E23FC +#ifdef JAPAN + mov r1, #3 + str r1, [r5] + ldr r0, _022E2410 ; =DUNGEON_PTR + mov r1, #6 + ldr r0, [r0] + mov r2, #0 + add r0, r0, #0x19c + add r0, r0, #0x3c00 + mla r0, r4, r1, r0 +#else ldr r0, _022E2410 ; =DUNGEON_PTR mov r1, #3 str r1, [r5] @@ -727,10 +825,13 @@ _022E2368: mov r0, #6 add r1, r1, #0x3e40 mla r0, r4, r0, r1 +#endif str r0, [r5, #0xb4] ldrh r0, [r6] mov r1, #0x18 +#ifndef JAPAN mov r2, #0 +#endif strh r0, [r5, #4] ldrh r3, [r6, #2] mov r0, r5 @@ -774,7 +875,11 @@ ov29_022E2418: ; 0x022E2418 ldr r0, [r0] mov r2, #0 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r0, [r0, #0xd24] +#else ldr r0, [r0, #0xdc8] +#endif str r1, [r0] str r2, [r0, #0x1c] strb r2, [r0, #0x22] @@ -823,7 +928,11 @@ _022E24C0: ldr r2, [r5, #0xb4] ldr r0, [r0] ldrb r1, [r2, #6] +#ifdef JAPAN + add r0, r0, #0x178 +#else add r0, r0, #0x21c +#endif add r4, r0, #0x1a000 ldr r0, [r4, #0x10] cmp r1, #0 @@ -868,6 +977,11 @@ _022E2570: .word DUNGEON_PTR arm_func_start ShouldDisplayEntity ShouldDisplayEntity: ; 0x022E2574 +#ifdef JAPAN +#define SHOULD_DISPLAY_ENTITY -0xA4 +#else +#define SHOULD_DISPLAY_ENTITY 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, lr} ldrb r5, [r0, #0x20] cmp r5, #0 @@ -914,7 +1028,7 @@ _022E2600: addle r2, r6, #0xc0 cmple r7, r2 bgt _022E271C - add r2, r4, #0x21c + add r2, r4, #0x21c + SHOULD_DISPLAY_ENTITY cmp lr, #6 add r6, r2, #0x1a000 addls pc, pc, lr, lsl #2 @@ -945,7 +1059,7 @@ _022E267C: moveq r0, #1 ldmeqia sp!, {r4, r5, r6, r7, r8, pc} add r2, r4, #0x1a000 - ldrb r2, [r2, #0x244] + ldrb r2, [r2, #0x244 + SHOULD_DISPLAY_ENTITY] cmp r2, #0 ldreqb r2, [r3, #0xef] cmpeq r2, #1 @@ -971,7 +1085,7 @@ _022E26DC: ldmia sp!, {r4, r5, r6, r7, r8, pc} _022E26F0: add r0, r4, #0x1a000 - ldrb r0, [r0, #0x244] + ldrb r0, [r0, #0x244 + SHOULD_DISPLAY_ENTITY] cmp r0, #0 cmpeq r5, #0 bne _022E2714 @@ -1174,6 +1288,11 @@ CanTargetPosition: ; 0x022E2954 arm_func_start ov29_022E2978 ov29_022E2978: ; 0x022E2978 +#ifdef JAPAN +#define OV29_022E2978_OFFSET -0xA4 +#else +#define OV29_022E2978_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r5, #0 ldr r6, _022E2A34 ; =DUNGEON_PTR @@ -1182,7 +1301,7 @@ _022E2988: ldr r0, [r6] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 - ldr r7, [r0, #0xb28] + ldr r7, [r0, #0xb28 + OV29_022E2978_OFFSET] mov r0, r7 bl EntityIsValid__022E1A1C cmp r0, #0 @@ -1190,7 +1309,7 @@ _022E2988: add r4, r4, #1 addne r0, r0, r5, lsl #2 addne r0, r0, #0x12000 - strne r7, [r0, #0xb78] + strne r7, [r0, #0xb78 + OV29_022E2978_OFFSET] addne r5, r5, #1 cmp r4, #4 blt _022E2988 @@ -1200,7 +1319,7 @@ _022E29CC: ldr r0, [r6] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 - ldr r7, [r0, #0xb38] + ldr r7, [r0, #0xb38 + OV29_022E2978_OFFSET] mov r0, r7 bl EntityIsValid__022E1A1C cmp r0, #0 @@ -1208,7 +1327,7 @@ _022E29CC: add r4, r4, #1 addne r0, r0, r5, lsl #2 addne r0, r0, #0x12000 - strne r7, [r0, #0xb78] + strne r7, [r0, #0xb78 + OV29_022E2978_OFFSET] addne r5, r5, #1 cmp r4, #0x10 blt _022E29CC @@ -1219,7 +1338,7 @@ _022E2A14: ldr r0, [r1] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 - str r2, [r0, #0xb78] + str r2, [r0, #0xb78 + OV29_022E2978_OFFSET] add r5, r5, #1 _022E2A28: cmp r5, #0x14 @@ -1238,7 +1357,11 @@ GetTeamMemberIndex: ; 0x022E2A38 _022E2A48: add r1, r3, r2, lsl #2 add r1, r1, #0x12000 +#ifdef JAPAN + ldr r1, [r1, #0xa84] +#else ldr r1, [r1, #0xb28] +#endif cmp r0, r1 moveq r0, r2 bxeq lr @@ -1281,7 +1404,11 @@ _022E2ABC: bl strcpy ldmia sp!, {r4, pc} .align 2, 0 +#ifdef JAPAN +_022E2AD4: .word 0x00000B42 +#else _022E2AD4: .word 0x00000A42 +#endif arm_func_end ov29_022E2A78 arm_func_start SubstitutePlaceholderStringTags @@ -1326,7 +1453,11 @@ _022E2B50: str r0, [r1, #0x38] ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 +#ifdef JAPAN +_022E2B64: .word 0x00000B42 +#else _022E2B64: .word 0x00000A42 +#endif arm_func_end SubstitutePlaceholderStringTags #ifdef EUROPE @@ -1362,7 +1493,11 @@ ov29_022E2B68: ; 0x022E2B68 movs r5, r0 ldr r2, [r1] mov r1, #0 +#ifdef JAPAN + add r0, r2, #0x178 +#else add r0, r2, #0x21c +#endif add r4, r0, #0x1a000 strh r1, [r4, #8] ldr r0, _022E2C60 ; =0x0001A21C @@ -1413,7 +1548,11 @@ _022E2BF4: ldr r0, _022E2C5C ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x28000 +#ifdef JAPAN + ldrb r0, [r0, #0x624] +#else ldrb r0, [r0, #0x6c8] +#endif ands r0, r0, #3 strb r0, [r4, #0x21] moveq r0, #1 @@ -1431,7 +1570,11 @@ ov29_022E2C6C: ; 0x022E2C6C ldr r0, _022E2C9C ; =DUNGEON_PTR mvn r1, #0 ldr r0, [r0] +#ifdef JAPAN + add r0, r0, #0x178 +#else add r0, r0, #0x21c +#endif add r0, r0, #0x1a000 strh r1, [r0, #0x3c] strh r1, [r0, #0x3e] @@ -1453,7 +1596,11 @@ ov29_022E2CA0: ; 0x022E2CA0 ldr r0, _022E2D38 ; =0x0001A21C ldrsh r1, [r4] ldrsh r2, [r3, r0] +#ifdef JAPAN + add r0, r3, #0x178 +#else add r0, r3, #0x21c +#endif add r5, r0, #0x1a000 sub r0, r2, r1 ldr r6, [r5, #0x10] @@ -1498,7 +1645,11 @@ ov29_022E2D3C: ; 0x022E2D3C ldr r0, _022E2DD4 ; =0x0001A21C ldrsh r1, [r4] ldrsh r2, [r3, r0] +#ifdef JAPAN + add r0, r3, #0x178 +#else add r0, r3, #0x21c +#endif add r5, r0, #0x1a000 sub r0, r2, r1 ldr r6, [r5, #0x10] @@ -1531,9 +1682,14 @@ _022E2DC8: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _022E2DD0: .word DUNGEON_PTR +#ifdef JAPAN +_022E2DD4: .word 0x0001A178 +#else _022E2DD4: .word 0x0001A21C +#endif arm_func_end ov29_022E2D3C +#ifndef JAPAN arm_func_start UpdateMapSurveyorFlag UpdateMapSurveyorFlag: ; 0x022E2DD8 #ifdef EUROPE @@ -1569,6 +1725,7 @@ UpdateMapSurveyorFlag: ; 0x022E2DD8 .align 2, 0 _022E2DF8: .word DUNGEON_PTR arm_func_end UpdateMapSurveyorFlag +#endif arm_func_start ov29_022E2DFC ov29_022E2DFC: ; 0x022E2DFC @@ -1576,7 +1733,11 @@ ov29_022E2DFC: ; 0x022E2DFC ldr r1, _022E2E50 ; =DUNGEON_PTR cmp r0, #0 ldr r1, [r1] +#ifdef JAPAN + add r1, r1, #0x178 +#else add r1, r1, #0x21c +#endif add r1, r1, #0x1a000 str r0, [r1, #0x10] moveq r0, #0 @@ -1605,7 +1766,11 @@ PointCameraToMonster: ; 0x022E2E54 mov r4, r1 ldr r1, [r2] cmp r0, #0 +#ifdef JAPAN + add r1, r1, #0x178 +#else add r1, r1, #0x21c +#endif add r2, r1, #0x1a000 moveq r1, #0 streqb r1, [r2, #0x2f] @@ -1634,6 +1799,11 @@ _022E2EC0: .word DUNGEON_PTR arm_func_start UpdateCamera UpdateCamera: ; 0x022E2EC4 +#ifdef JAPAN +#define UPDATE_CAMERA_OFFSET -0xA4 +#else +#define UPDATE_CAMERA_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x10 ldr r1, _022E32DC ; =DUNGEON_PTR @@ -1641,7 +1811,7 @@ UpdateCamera: ; 0x022E2EC4 ldr r0, [r1] cmp r0, #0 beq _022E32D4 - add r0, r0, #0x21c + add r0, r0, #0x21c + UPDATE_CAMERA_OFFSET add r4, r0, #0x1a000 ldr r5, [r4, #0x10] cmp r5, #0 @@ -1772,7 +1942,7 @@ _022E30A8: ldreq r0, _022E32DC ; =DUNGEON_PTR ldreq r0, [r0] addeq r0, r0, #0x2c000 - ldreqb r0, [r0, #0xb10] + ldreqb r0, [r0, #0xb10 + UPDATE_CAMERA_OFFSET] cmpeq r0, #0 beq _022E3108 bl ov29_023047DC @@ -1781,7 +1951,7 @@ _022E30A8: ldr r0, [r0] mov r7, #1 add r0, r0, #0x2c000 - strb r1, [r0, #0xb10] + strb r1, [r0, #0xb10 + UPDATE_CAMERA_OFFSET] _022E3108: mov r0, r5 ldrb r8, [r4, #0x28] @@ -1877,7 +2047,7 @@ _022E3250: ldr r0, [r4] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 - ldr r7, [r0, #0xb78] + ldr r7, [r0, #0xb78 + UPDATE_CAMERA_OFFSET] mov r0, r7 bl EntityIsValid__022E32E8 cmp r0, #0 @@ -1898,7 +2068,7 @@ _022E3298: ldr r0, [r4] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 - ldr r6, [r0, #0xbc8] + ldr r6, [r0, #0xbc8 + UPDATE_CAMERA_OFFSET] mov r0, r6 bl EntityIsValid__022E32E8 cmp r0, #0 diff --git a/asm/overlay_29_022E330C.s b/asm/overlay_29_022E330C.s index 2555cb04..7a50cbb5 100644 --- a/asm/overlay_29_022E330C.s +++ b/asm/overlay_29_022E330C.s @@ -24,7 +24,11 @@ GetVisibilityRange: ; 0x022E333C ldr r0, _022E3358 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x1a000 +#ifdef JAPAN + ldrb r0, [r0, #0x199] +#else ldrb r0, [r0, #0x23d] +#endif cmp r0, #0 moveq r0, #2 bx lr @@ -34,13 +38,18 @@ _022E3358: .word DUNGEON_PTR arm_func_start ov29_022E335C ov29_022E335C: ; 0x022E335C +#ifdef JAPAN +#define OV29_022E335C_OFFSET -0xA4 +#else +#define OV29_022E335C_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, lr} ldr r0, _022E3428 ; =DUNGEON_PTR mov r5, #0 ldr r0, [r0] add r0, r0, #0x1a000 - ldrb r1, [r0, #0x24d] - ldr r4, [r0, #0x22c] + ldrb r1, [r0, #0x24d + OV29_022E335C_OFFSET] + ldr r4, [r0, #0x22c + OV29_022E335C_OFFSET] cmp r1, #0 bne _022E33A0 bl ov10_022BFD20 @@ -59,7 +68,7 @@ _022E33A0: _022E33B0: ldr r0, _022E3428 ; =DUNGEON_PTR ldr r0, [r0] - add r0, r0, #0x21c + add r0, r0, #0x21c + OV29_022E335C_OFFSET add r4, r0, #0x1a000 ldr r0, [r4, #0x10] ldr r5, [r0, #0xb4] @@ -101,7 +110,11 @@ RevealWholeFloor: ; 0x022E3430 mov r4, r0 mov r2, #1 add r0, r1, #0x1a000 +#ifdef JAPAN + strb r2, [r0, #0x19b] +#else strb r2, [r0, #0x23f] +#endif mov r5, r7 _022E3454: mov r6, r5 @@ -128,7 +141,11 @@ _022E3458: ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 _022E34A8: .word DUNGEON_PTR +#ifdef JAPAN +_022E34AC: .word 0x00000888 +#else _022E34AC: .word 0x00000B77 +#endif arm_func_end RevealWholeFloor arm_func_start ov29_022E34B0 @@ -136,7 +153,11 @@ ov29_022E34B0: ; 0x022E34B0 ldr r1, _022E34C4 ; =DUNGEON_PTR ldr r1, [r1] add r1, r1, #0x1a000 +#ifdef JAPAN + strb r0, [r1, #0x1a8] +#else strb r0, [r1, #0x24c] +#endif bx lr .align 2, 0 _022E34C4: .word DUNGEON_PTR @@ -144,10 +165,15 @@ _022E34C4: .word DUNGEON_PTR arm_func_start ov29_022E34C8 ov29_022E34C8: ; 0x022E34C8 +#ifdef JAPAN +#define OV29_022E34C8_OFFSET -0xA4 +#else +#define OV29_022E34C8_OFFSET 0 +#endif ldr r0, _022E352C ; =DUNGEON_PTR ldr r3, [r0] add r0, r3, #0x1a000 - ldr r2, [r0, #0x234] + ldr r2, [r0, #0x234 + OV29_022E34C8_OFFSET] cmp r2, #0 bxeq lr ldr r1, _022E3530 ; =ov29_0235110C @@ -156,18 +182,18 @@ ov29_022E34C8: ; 0x022E34C8 ldr r2, [r1, r2, lsl #2] add r0, r3, #0x1a000 ldr r1, _022E352C ; =DUNGEON_PTR - str r2, [r0, #0x230] + str r2, [r0, #0x230 + OV29_022E34C8_OFFSET] ldr r0, [r1] add r0, r0, #0x1a000 - ldr r2, [r0, #0x234] + ldr r2, [r0, #0x234 + OV29_022E34C8_OFFSET] sub r2, r2, #1 - str r2, [r0, #0x234] + str r2, [r0, #0x234 + OV29_022E34C8_OFFSET] ldr r0, [r1] add r0, r0, #0x1a000 - ldr r1, [r0, #0x234] + ldr r1, [r0, #0x234 + OV29_022E34C8_OFFSET] cmp r1, #0 - ldreq r1, [r0, #0x238] - streq r1, [r0, #0x234] + ldreq r1, [r0, #0x238 + OV29_022E34C8_OFFSET] + streq r1, [r0, #0x234 + OV29_022E34C8_OFFSET] bx lr .align 2, 0 _022E352C: .word DUNGEON_PTR @@ -262,7 +288,11 @@ PlayEffectAnimationEntity: ; 0x022E35E4 beq _022E37A8 ldrb r0, [sp, #0x4c] cmp r0, #0 +#ifdef JAPAN + ldreqb r0, [r6, #0x10a] +#else ldreqb r0, [r6, #0x10b] +#endif cmpeq r0, #2 mvneq r0, #0 beq _022E37A8 @@ -284,13 +314,21 @@ _022E365C: ldrnesh r2, [sp, #2] cmpne r2, #0x63 ldreq r1, [r8, #0x10] +#ifdef JAPAN + ldreq r0, [r6, #0x184] +#else ldreq r0, [r6, #0x188] +#endif ldreq r7, [r8, #0xc] subeq r8, r1, r0 beq _022E36A8 ldr r1, [r8, #0x10] ldr r3, [r8, #0xc] +#ifdef JAPAN + ldr r0, [r6, #0x184] +#else ldr r0, [r6, #0x188] +#endif add r2, r1, r2, lsl #8 add r7, r3, r7, lsl #8 sub r8, r2, r0 diff --git a/asm/overlay_29_022E37DC.s b/asm/overlay_29_022E37DC.s index 6626f53c..19718e6b 100644 --- a/asm/overlay_29_022E37DC.s +++ b/asm/overlay_29_022E37DC.s @@ -90,7 +90,11 @@ AnimationDelayOrSomething: ; 0x022E38E0 mov r1, r7 add r2, r2, #0x1a000 mov r8, r0 +#ifdef JAPAN + str r7, [r2, #0x194] +#else str r7, [r2, #0x238] +#endif bl ov10_022BF9CC cmp r0, #0 bne _022E3920 @@ -190,8 +194,13 @@ _022E3A3C: .word ov29_0235354C arm_func_start ov29_022E3A40 ov29_022E3A40: ; 0x022E3A40 ldr r1, [r1, #0xb4] +#ifdef JAPAN + ldr r2, [r1, #0x214] + ldr r1, [r1, #0x218] +#else ldr r2, [r1, #0x218] ldr r1, [r1, #0x21c] +#endif str r2, [r0] str r1, [r0, #4] bx lr @@ -208,14 +217,22 @@ _022E3A6C: ldr r0, [r6] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r8, [r0, #0xad4] +#else ldr r8, [r0, #0xb78] +#endif mov r0, r8 bl EntityIsValid__022E37B8 cmp r0, #0 beq _022E3AA0 ldr r0, [r8, #0xb4] cmp r5, #0 +#ifdef JAPAN + strneb r7, [r0, #0x152] +#else strneb r7, [r0, #0x156] +#endif mov r0, r8 bl UpdateStatusIconFlags _022E3AA0: @@ -414,8 +431,13 @@ _022E3D30: cmpge r3, #0xa orrlt r1, r1, #0x8000000 orrlt r0, r0, #0 +#ifdef JAPAN + str r1, [r2, #0x214] + str r0, [r2, #0x218] +#else str r1, [r2, #0x218] str r0, [r2, #0x21c] +#endif ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _022E3D94: .word STATUS_ICON_ARRAY_SLEEP @@ -1264,7 +1286,11 @@ ov29_022E46D4: ; 0x022E46D4 ldmeqia sp!, {r4, pc} ldr r0, [r4, #0xb4] mov r1, r4 +#ifdef JAPAN + ldrb r0, [r0, #0x11a] +#else ldrb r0, [r0, #0x11e] +#endif mov r2, #1 mov r3, #0xb bl DisplayAnimatedNumbers @@ -2868,7 +2894,11 @@ _022E5AD4: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _022E5ADC: .word DUNGEON_PTR +#ifdef JAPAN +_022E5AE0: .word 0x0001A182 +#else _022E5AE0: .word 0x0001A226 +#endif arm_func_end ov29_022E5A00 arm_func_start ov29_022E5AE4 @@ -3043,7 +3073,11 @@ _022E5D50: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _022E5D58: .word DUNGEON_PTR +#ifdef JAPAN +_022E5D5C: .word 0x0001A182 +#else _022E5D5C: .word 0x0001A226 +#endif _022E5D60: .word 0x00000165 _022E5D64: .word DIRECTIONS_XY arm_func_end ov29_022E5BD8 @@ -3173,10 +3207,17 @@ ov29_022E5ED0: ; 0x022E5ED0 ldr r1, _022E5F1C ; =DUNGEON_PTR ldr r1, [r1] add r1, r1, #0x1a000 +#ifdef JAPAN + ldrb r2, [r1, #0x19a] + cmp r2, #0 + beq _022E5F14 + ldr r1, [r1, #0x188] +#else ldrb r2, [r1, #0x23e] cmp r2, #0 beq _022E5F14 ldr r1, [r1, #0x22c] +#endif cmp r1, r0 moveq r0, #1 movne r0, #0 @@ -3204,7 +3245,11 @@ _022E5F44: ldr r0, [fp] add r0, r0, r8, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr sb, [r0, #0xad4] +#else ldr sb, [r0, #0xb78] +#endif mov r0, sb bl EntityIsValid__022E37B8 cmp r0, #0 @@ -3243,7 +3288,11 @@ _022E5FC8: .align 2, 0 _022E5FDC: .word 0x00000199 _022E5FE0: .word DUNGEON_PTR +#ifdef JAPAN +_022E5FE4: .word 0x000008A4 +#else _022E5FE4: .word 0x00000B92 +#endif arm_func_end ov29_022E5F20 arm_func_start ov29_022E5FE8 @@ -3255,7 +3304,11 @@ ov29_022E5FE8: ; 0x022E5FE8 ldr r0, [r2] mov r5, r1 add r0, r0, #0x1a000 +#ifdef JAPAN + ldr r4, [r0, #0x188] +#else ldr r4, [r0, #0x22c] +#endif cmp r4, #0 bne _022E6018 bl GetLeader @@ -3946,7 +3999,11 @@ _022E68AC: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 _022E68B4: .word DUNGEON_PTR +#ifdef JAPAN +_022E68B8: .word 0x0001A182 +#else _022E68B8: .word 0x0001A226 +#endif arm_func_end ov29_022E67E4 arm_func_start ov29_022E68BC @@ -4480,10 +4537,17 @@ ov29_022E6F94: ; 0x022E6F94 mov r2, #0xff ldr r0, [r1] add r0, r0, #0x28000 +#ifdef JAPAN + strb r2, [r0, #0x60c] + ldr r0, [r1] + add r0, r0, #0x28000 + strb r2, [r0, #0x60d] +#else strb r2, [r0, #0x6b0] ldr r0, [r1] add r0, r0, #0x28000 strb r2, [r0, #0x6b1] +#endif bx lr .align 2, 0 _022E6FB8: .word DUNGEON_PTR @@ -4491,6 +4555,11 @@ _022E6FB8: .word DUNGEON_PTR arm_func_start LoadMappaFileAttributes LoadMappaFileAttributes: ; 0x022E6FBC +#ifdef JAPAN +#define LOAD_MAPPA_FILE_ATTRIBUTES_OFFSET -0xA4 +#else +#define LOAD_MAPPA_FILE_ATTRIBUTES_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x50 ldr r3, _022E79E4 ; =DUNGEON_PTR @@ -4512,9 +4581,9 @@ LoadMappaFileAttributes: ; 0x022E6FBC ldr r3, [r1] ldrb r2, [r3, #0x74a] add r0, r3, #0x28000 - strb r2, [r0, #0x6b0] + strb r2, [r0, #0x6b0 + LOAD_MAPPA_FILE_ATTRIBUTES_OFFSET] ldrb r2, [r3, #0x74b] - strb r2, [r0, #0x6b1] + strb r2, [r0, #0x6b1 + LOAD_MAPPA_FILE_ATTRIBUTES_OFFSET] ldr r0, [r1] ldrb r0, [r0, #0x748] bl GetNbPrecedingFloors @@ -4563,8 +4632,8 @@ _022E709C: ldr r7, [r0] mov r1, #0x12 add r0, r7, #0x28000 - ldrb r3, [r0, #0x6b0] - ldrb r2, [r0, #0x6b1] + ldrb r3, [r0, #0x6b0 + LOAD_MAPPA_FILE_ATTRIBUTES_OFFSET] + ldrb r2, [r0, #0x6b1 + LOAD_MAPPA_FILE_ATTRIBUTES_OFFSET] ldrb r0, [r7, #0x748] ldr r3, [r6, r3, lsl #2] mla r6, r2, r1, r3 @@ -4572,7 +4641,7 @@ _022E709C: ldr r2, _022E79E4 ; =DUNGEON_PTR ldr r1, [r2] add r1, r1, #0x2c000 - strb r0, [r1, #0xaf4] + strb r0, [r1, #0xaf4 + LOAD_MAPPA_FILE_ATTRIBUTES_OFFSET] ldr r0, [r2] ldrb r0, [r0, #0x748] cmp r0, #0xae @@ -4586,9 +4655,9 @@ _022E709C: ldr r0, _022E79E4 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x2c000 - ldrb r1, [r0, #0xaf4] + ldrb r1, [r0, #0xaf4 + LOAD_MAPPA_FILE_ATTRIBUTES_OFFSET] sub r1, r1, #1 - strb r1, [r0, #0xaf4] + strb r1, [r0, #0xaf4 + LOAD_MAPPA_FILE_ATTRIBUTES_OFFSET] _022E7138: ldr r0, _022E79E4 ; =DUNGEON_PTR ldrsh r2, [r6] @@ -4603,6 +4672,25 @@ _022E7158: subs r2, r2, #1 strh r0, [r3], #2 bne _022E7158 +#ifdef JAPAN + ldr r0, _022E79FC ; =0x000286CE + ldr r2, _022E7A00 ; =0x0002CB08 + ldrsh r3, [r1, r0] + mov r0, #0 + strh r3, [r1, r2] + ldr r2, _022E79E4 ; =DUNGEON_PTR +_022E7184: + ldrsh r3, [r6, #4] + ldr r7, [sb, #0x10] + ldr r1, [r2] + ldr r7, [r7, r3, lsl #2] + mov r3, r0, lsl #1 + ldrh r3, [r7, r3] + add r1, r1, r0, lsl #1 + add r1, r1, #0x2c800 + add r0, r0, #1 + strh r3, [r1, #0x8e] +#else ldr r2, _022E79FC ; =0x000286CE ldr r3, _022E7A00 ; =0x0002CB08 ldrsh r7, [r1, r2] @@ -4620,6 +4708,7 @@ _022E7184: add r3, r3, r0, lsl #1 add r0, r0, #1 strh r7, [r3, r1] +#endif cmp r0, #0x19 blt _022E7184 cmp r4, #0 @@ -4708,7 +4797,7 @@ _022E7294: ldr r0, _022E79E4 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x28000 - ldrb r0, [r0, #0x6c4] + ldrb r0, [r0, #0x6c4 + LOAD_MAPPA_FILE_ATTRIBUTES_OFFSET] bl IsBossFight cmp r0, #0 bne _022E7398 @@ -5016,8 +5105,13 @@ _022E7710: ldr r1, [r1] mov r2, #4 add r1, r1, r8, lsl #3 +#ifdef JAPAN + add r1, r1, #0x8c0 + add r3, r1, #0x2c000 +#else add r1, r1, #0x164 add r3, r1, #0x2c800 +#endif _022E7764: ldrh r1, [r7], #2 subs r2, r2, #1 @@ -5039,8 +5133,13 @@ _022E7764: mov r0, r7, lsl #0x10 ldr r2, [r1] mov r1, r0, asr #0x10 +#ifdef JAPAN + add r0, r2, #0x8c0 + add r0, r0, #0x2c000 +#else add r0, r2, #0x164 add r0, r0, #0x2c800 +#endif add r0, r0, r8, lsl #3 bl SetMonsterId _022E77C4: @@ -5059,8 +5158,13 @@ _022E77D4: ldr r4, [r0] rsb r1, r8, #0x10 add r2, r4, #0x4000 +#ifdef JAPAN + add r0, r4, #0x8c0 + add r0, r0, #0x2c000 +#else add r0, r4, #0x164 add r0, r0, #0x2c800 +#endif ldrb r2, [r2, #0xda] ldrsh r3, [r4, r3] add r0, r0, r8, lsl #3 @@ -5068,10 +5172,10 @@ _022E77D4: ldr r2, _022E79E4 ; =DUNGEON_PTR ldr r1, [r2] add r1, r1, #0x12000 - str r0, [r1, #0xb20] + str r0, [r1, #0xb20 + LOAD_MAPPA_FILE_ATTRIBUTES_OFFSET] ldr r0, [r2] add r0, r0, #0x12000 - ldr r0, [r0, #0xb20] + ldr r0, [r0, #0xb20 + LOAD_MAPPA_FILE_ATTRIBUTES_OFFSET] add r8, r8, r0 _022E782C: ldr r4, _022E79E4 ; =DUNGEON_PTR @@ -5083,8 +5187,13 @@ _022E782C: _022E7844: ldr r0, [r4] mov r1, r5 +#ifdef JAPAN + add r0, r0, #0x8c0 + add r0, r0, #0x2c000 +#else add r0, r0, #0x164 add r0, r0, #0x2c800 +#endif add r0, r0, r8, lsl #3 bl SetMonsterId add r8, r8, #1 @@ -5202,20 +5311,20 @@ _022E79E8: .word ov29_02351584 _022E79EC: .word ov29_02351594 _022E79F0: .word ov29_023515B0 _022E79F4: .word ov29_023515CC -_022E79F8: .word 0x000286B2 -_022E79FC: .word 0x000286CE -_022E7A00: .word 0x0002CB08 +_022E79F8: .word 0x000286B2 + LOAD_MAPPA_FILE_ATTRIBUTES_OFFSET +_022E79FC: .word 0x000286CE + LOAD_MAPPA_FILE_ATTRIBUTES_OFFSET +_022E7A00: .word 0x0002CB08 + LOAD_MAPPA_FILE_ATTRIBUTES_OFFSET _022E7A04: .word 0x0000FFFF -_022E7A08: .word 0x0002C9EA +_022E7A08: .word 0x0002C9EA + LOAD_MAPPA_FILE_ATTRIBUTES_OFFSET _022E7A0C: .word 0x00000906 _022E7A10: .word 0x00000229 _022E7A14: .word 0x0000017F -_022E7A18: .word 0x0002C9E6 -_022E7A1C: .word 0x0002C9E4 -_022E7A20: .word 0x0002C9E8 +_022E7A18: .word 0x0002C9E6 + LOAD_MAPPA_FILE_ATTRIBUTES_OFFSET +_022E7A1C: .word 0x0002C9E4 + LOAD_MAPPA_FILE_ATTRIBUTES_OFFSET +_022E7A20: .word 0x0002C9E8 + LOAD_MAPPA_FILE_ATTRIBUTES_OFFSET _022E7A24: .word 0xFFFF8AD0 -_022E7A28: .word 0x000286D2 -_022E7A2C: .word 0x000286F2 +_022E7A28: .word 0x000286D2 + LOAD_MAPPA_FILE_ATTRIBUTES_OFFSET +_022E7A2C: .word 0x000286F2 + LOAD_MAPPA_FILE_ATTRIBUTES_OFFSET arm_func_end LoadMappaFileAttributes arm_func_start ov29_022E7A30 @@ -5224,6 +5333,24 @@ ov29_022E7A30: ; 0x022E7A30 ldr r0, _022E7A80 ; =0x00002710 bl DungeonRandInt ldr r1, _022E7A84 ; =DUNGEON_PTR +#ifdef JAPAN + mov r2, #0 + ldr r3, [r1] + b _022E90E0 +_022E7A50: + add r1, r3, r2, lsl #1 + add r1, r1, #0x2c800 + ldrh r1, [r1, #0x8e] + cmp r1, #0 + beq _022E90DC + cmp r1, r0 + andge r0, r2, #0xff + ldmgeia sp!, {r3, pc} +_022E90DC: + add r2, r2, #1 +_022E90E0: + cmp r2, #0x19 +#else mov r3, #0 ldr ip, [r1] ldr r1, _022E7A88 ; =0x0002C932 @@ -5240,13 +5367,16 @@ _022E7A6C: add r3, r3, #1 _022E7A70: cmp r3, #0x19 +#endif blt _022E7A50 mov r0, #0x10 ldmia sp!, {r3, pc} .align 2, 0 _022E7A80: .word 0x00002710 _022E7A84: .word DUNGEON_PTR +#ifndef JAPAN _022E7A88: .word 0x0002C932 +#endif arm_func_end ov29_022E7A30 arm_func_start ov29_022E7A8C @@ -5339,8 +5469,13 @@ _022E7B98: .align 2, 0 _022E7BA8: .word 0x00002710 _022E7BAC: .word DUNGEON_PTR +#ifdef JAPAN +_022E7BB0: .word 0x0002862E +_022E7BB4: .word 0x0002864E +#else _022E7BB0: .word 0x000286D2 _022E7BB4: .word 0x000286F2 +#endif arm_func_end GetItemIdToSpawn arm_func_start ov29_022E7BB8 @@ -5373,8 +5508,13 @@ ov29_022E7BE8: ; 0x022E7BE8 b _022E7C4C _022E7C00: ldr r0, [r7] +#ifdef JAPAN + add r0, r0, #0x8c0 + add r0, r0, #0x2c000 +#else add r0, r0, #0x164 add r0, r0, #0x2c800 +#endif add r0, r0, r4, lsl #3 bl GetMonsterIdFromSpawnEntry cmp r0, #0 @@ -5382,8 +5522,13 @@ _022E7C00: ldr r0, [r7] add r2, r6, r5, lsl #3 add r0, r0, r4, lsl #3 +#ifdef JAPAN + add r0, r0, #0x8c0 + add r3, r0, #0x2c000 +#else add r0, r0, #0x164 add r3, r0, #0x2c800 +#endif mov r1, #4 _022E7C34: ldrh r0, [r3], #2 @@ -5412,8 +5557,13 @@ MonsterSpawnListPartialCopy: ; 0x022E7C60 _022E7C74: ldr r0, _022E7CF4 ; =DUNGEON_PTR ldr r0, [r0] +#ifdef JAPAN + add r0, r0, #0x8c0 + add r0, r0, #0x2c000 +#else add r0, r0, #0x164 add r0, r0, #0x2c800 +#endif add r0, r0, r4, lsl #3 bl GetMonsterIdFromSpawnEntry cmp r0, #0 @@ -5421,6 +5571,17 @@ _022E7C74: bl GetSpriteSize cmp r0, #6 bhi _022E7CE0 +#ifdef JAPAN + ldr r0, _022E7CF4 ; =DUNGEON_PTR + ldr r0, [r0] + add r1, r0, r4, lsl #3 + add r0, r1, #0x2c800 + ldrsh r0, [r0, #0xc2] + cmp r0, #0 + beq _022E7CE0 + add r0, r1, #0x8c0 + add r3, r0, #0x2c000 +#else ldr r1, _022E7CF4 ; =DUNGEON_PTR ldr r0, _022E7CF8 ; =0x0002C966 ldr r1, [r1] @@ -5430,6 +5591,7 @@ _022E7C74: beq _022E7CE0 add r0, r1, #0x164 add r3, r0, #0x2c800 +#endif add r2, r6, r5, lsl #3 mov r1, #4 _022E7CCC: @@ -5448,29 +5610,40 @@ _022E7CEC: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _022E7CF4: .word DUNGEON_PTR +#ifndef JAPAN _022E7CF8: .word 0x0002C966 +#endif arm_func_end MonsterSpawnListPartialCopy arm_func_start ov29_022E7CFC ov29_022E7CFC: ; 0x022E7CFC +#ifdef JAPAN +#define OV29_022E7CFC_OFFSET -0xA4 +#else +#define OV29_022E7CFC_OFFSET 0 +#endif stmdb sp!, {r3, lr} ldr r1, _022E7D48 ; =DUNGEON_PTR ldr r0, [r1] add r0, r0, #0x3000 - ldrb r2, [r0, #0xe28] + ldrb r2, [r0, #0xe28 + OV29_022E7CFC_OFFSET] cmp r2, #0 ldmneia sp!, {r3, pc} mov r2, #1 - strb r2, [r0, #0xe28] + strb r2, [r0, #0xe28 + OV29_022E7CFC_OFFSET] ldr r0, [r1] mov r1, #0 +#ifdef JAPAN + add r0, r0, #0x124 +#else add r0, r0, #0x174 +#endif add r0, r0, #0x3800 bl ov29_022E7BE8 ldr r1, _022E7D48 ; =DUNGEON_PTR ldr r1, [r1] add r1, r1, #0x3000 - str r0, [r1, #0xe20] + str r0, [r1, #0xe20 + OV29_022E7CFC_OFFSET] ldmia sp!, {r3, pc} .align 2, 0 _022E7D48: .word DUNGEON_PTR @@ -5485,8 +5658,13 @@ IsOnMonsterSpawnList: ; 0x022E7D4C b _022E7D8C _022E7D60: ldr r0, [r4] +#ifdef JAPAN + add r0, r0, #0x8c0 + add r0, r0, #0x2c000 +#else add r0, r0, #0x164 add r0, r0, #0x2c800 +#endif add r0, r0, r5, lsl #3 bl GetMonsterIdFromSpawnEntry cmp r0, #0 @@ -5507,6 +5685,11 @@ _022E7D9C: .word DUNGEON_PTR arm_func_start GetMonsterIdToSpawn GetMonsterIdToSpawn: ; 0x022E7DA0 +#ifdef JAPAN +#define GET_MONSTER_ID_TO_SPAWN_OFFSET -0x50 +#else +#define GET_MONSTER_ID_TO_SPAWN_OFFSET 0 +#endif stmdb sp!, {r4, lr} mov r4, r0 ldr r0, _022E7E50 ; =0x00002710 @@ -5515,18 +5698,22 @@ GetMonsterIdToSpawn: ; 0x022E7DA0 mov ip, #0 ldr r1, [r1] add r2, r1, #0x3000 +#ifdef JAPAN + ldr lr, [r2, #0xd7c] +#else ldr lr, [r2, #0xe20] +#endif add r3, r1, r4, lsl #1 b _022E7E00 _022E7DCC: add r2, r3, ip, lsl #3 add r2, r2, #0x3900 - ldrsh r2, [r2, #0x76] + ldrsh r2, [r2, #0x76 + GET_MONSTER_ID_TO_SPAWN_OFFSET] cmp r2, #0 beq _022E7DFC cmp r2, r0 blt _022E7DFC - add r0, r1, #0x174 + add r0, r1, #0x174 + GET_MONSTER_ID_TO_SPAWN_OFFSET add r0, r0, #0x3800 add r0, r0, ip, lsl #3 bl GetMonsterIdFromSpawnEntry @@ -5542,10 +5729,10 @@ _022E7E00: _022E7E14: add r0, r2, r3, lsl #3 add r0, r0, #0x3900 - ldrsh r0, [r0, #0x76] + ldrsh r0, [r0, #0x76 + GET_MONSTER_ID_TO_SPAWN_OFFSET] cmp r0, #0 beq _022E7E3C - add r0, r1, #0x174 + add r0, r1, #0x174 + GET_MONSTER_ID_TO_SPAWN_OFFSET add r0, r0, #0x3800 add r0, r0, r3, lsl #3 bl GetMonsterIdFromSpawnEntry @@ -5570,7 +5757,11 @@ GetMonsterLevelToSpawn: ; 0x022E7E58 ldr r6, _022E7EC0 ; =DUNGEON_PTR b _022E7EA4 _022E7E6C: +#ifdef JAPAN + add r0, r1, #0x124 +#else add r0, r1, #0x174 +#endif add r0, r0, #0x3800 add r0, r0, r4, lsl #3 bl GetMonsterIdFromSpawnEntry @@ -5578,7 +5769,11 @@ _022E7E6C: bne _022E7EA0 ldr r0, _022E7EC0 ; =DUNGEON_PTR ldr r0, [r0] +#ifdef JAPAN + add r0, r0, #0x124 +#else add r0, r0, #0x174 +#endif add r0, r0, #0x3800 add r0, r0, r4, lsl #3 bl GetMonsterLevelFromSpawnEntry @@ -5588,7 +5783,11 @@ _022E7EA0: _022E7EA4: ldr r1, [r6] add r0, r1, #0x3000 +#ifdef JAPAN + ldr r0, [r0, #0xd7c] +#else ldr r0, [r0, #0xe20] +#endif cmp r4, r0 blt _022E7E6C mov r0, #1 @@ -5906,6 +6105,11 @@ _022E826C: .word TOP_SCREEN_STATUS_PTR arm_func_start ov29_022E8270 ov29_022E8270: ; 0x022E8270 +#ifdef JAPAN +#define OV29_022E8270_OFFSET -0xA4 +#else +#define OV29_022E8270_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x1c ldr r3, _022E83FC ; =TOP_SCREEN_STATUS_PTR @@ -5922,14 +6126,14 @@ ov29_022E8270: ; 0x022E8270 ldr r1, [r1] mov r5, #0 add r1, r1, #0x1a000 - ldr r0, [r1, #0x22c] + ldr r0, [r1, #0x22c + OV29_022E8270_OFFSET] mov r6, r5 cmp r0, sl ldrsh r0, [sl, #0xa8] mov r7, r5 str r0, [sp, #0x18] moveq r0, r5 - ldrneb r0, [r1, #0x245] + ldrneb r0, [r1, #0x245 + OV29_022E8270_OFFSET] cmp r0, #0 bne _022E82E4 ldrb r0, [r8, #0xd8] @@ -5961,7 +6165,11 @@ _022E832C: cmpne r0, #7 bne _022E8354 ldr r0, [sl, #0xb4] +#ifdef JAPAN + ldr r0, [r0, #0x10c] +#else ldr r0, [r0, #0x110] +#endif cmp r0, #1 addgt r0, r5, #1 movgt r0, r0, lsl #0x10 @@ -5974,7 +6182,11 @@ _022E8354: _022E8364: mov r5, #0 _022E8368: +#ifdef JAPAN + ldrb r0, [r8, #0x10a] +#else ldrb r0, [r8, #0x10b] +#endif cmp r0, #2 beq _022E83A4 ldrb r1, [r8, #0xc4] @@ -5995,7 +6207,7 @@ _022E83A4: ldreq r0, _022E8400 ; =DUNGEON_PTR ldreq r0, [r0] addeq r0, r0, #0x1a000 - ldreqb r0, [r0, #0x244] + ldreqb r0, [r0, #0x244 + OV29_022E8270_OFFSET] cmpeq r0, #0 moveq r7, #1 cmp r4, #0xff @@ -6767,7 +6979,11 @@ _022E8CFC: ldr r1, [r0] add r0, r1, r8, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r0, [r0, #0xa84] +#else ldr r0, [r0, #0xb28] +#endif cmp r0, #0 moveq r0, #0 beq _022E8D30 @@ -6781,14 +6997,22 @@ _022E8D30: beq _022E8DE4 add r0, r1, r8, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r6, [r0, #0xa84] +#else ldr r6, [r0, #0xb28] +#endif ldr r0, _022E8E5C ; =TOP_SCREEN_STATUS_PTR ldr r7, [r6, #0xb4] ldr r0, [r0] add r5, r0, #0xb8 mov r0, #0x5c smulbb r4, sb, r0 +#ifdef JAPAN + ldrb r0, [r7, #0x161] +#else ldrb r0, [r7, #0x165] +#endif cmp r0, #0 bne _022E8DE4 add r0, sp, #0x14 @@ -6874,8 +7098,10 @@ ov29_022E8E60: ; 0x022E8E60 bl UpdateWindow ldmia sp!, {r4, pc} .align 2, 0 -#ifdef EUROPE +#if defined(EUROPE) _022E8E90: .word 0x00003FCD +#elif defined(JAPAN) +_022E8E90: .word 0x000049CE #else _022E8E90: .word 0x00003FCB #endif @@ -6972,8 +7198,10 @@ ov29_022E8F78: ; 0x022E8F78 ldmia sp!, {r4, pc} .align 2, 0 _022E8FC4: .word ov29_02353558 -#ifdef EUROPE +#if defined(EUROPE) _022E8FC8: .word 0x00003FCD +#elif defined(JAPAN) +_022E8FC8: .word 0x000049CE #else _022E8FC8: .word 0x00003FCB #endif @@ -7106,7 +7334,11 @@ _022E913C: mov r1, #0x1c ldr r0, [r0] ldrsh r2, [r4] +#ifdef JAPAN + add r0, r0, #0x244 +#else add r0, r0, #0x2e8 +#endif add r0, r0, #0xec00 mla r3, ip, r1, r0 ldrsh r0, [r3, #2] @@ -7150,7 +7382,11 @@ IsPositionInSight: ; 0x022E91A4 mov r1, #0x1c ldr r0, [r0] ldrsh r2, [r4] +#ifdef JAPAN + add r0, r0, #0x244 +#else add r0, r0, #0x2e8 +#endif add r0, r0, #0xec00 mla r3, r6, r1, r0 ldrsh r0, [r3, #2] @@ -7236,7 +7472,11 @@ _022E930C: ldr r0, _022E9358 ; =DUNGEON_PTR mov r1, #0x1c ldr r0, [r0] +#ifdef JAPAN + add r0, r0, #0x244 +#else add r0, r0, #0x2e8 +#endif add r0, r0, #0xec00 mla r1, r2, r1, r0 ldrsh r0, [r1, #2] @@ -7399,7 +7639,11 @@ _022E9554: ldmia sp!, {r3, r4, r5, pc} .align 2, 0 _022E955C: .word DUNGEON_PTR +#ifdef JAPAN +_022E9560: .word 0x0001A180 +#else _022E9560: .word 0x0001A224 +#endif _022E9564: .word ov29_0237C88A _022E9568: .word ov29_0237C890 _022E956C: .word ov29_0237C88E @@ -7423,7 +7667,11 @@ _022E95A0: ldr r0, [r4] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r6, [r0, #0xa84] +#else ldr r6, [r0, #0xb28] +#endif mov r0, r6 bl EntityIsValid__022E95F4 cmp r0, #0 diff --git a/asm/overlay_29_022E9618.s b/asm/overlay_29_022E9618.s index 8cceedfc..77576248 100644 --- a/asm/overlay_29_022E9618.s +++ b/asm/overlay_29_022E9618.s @@ -259,9 +259,15 @@ _022E9920: ldr r2, _022E99EC ; =DUNGEON_PTR ldr r2, [r2] add r2, r2, #0xcc00 +#ifdef JAPAN + ldrsh r3, [r2, #0x40] + cmp r3, fp + ldreqsh r2, [r2, #0x42] +#else ldrsh r3, [r2, #0xe4] cmp r3, fp ldreqsh r2, [r2, #0xe6] +#endif cmpeq r2, r5 beq _022E99CC _022E99A0: @@ -360,6 +366,11 @@ _022E9A98: .word 0x00007530 arm_func_start ov29_022E9A9C ov29_022E9A9C: ; 0x022E9A9C +#ifdef JAPAN +#define OV29_022E9A9C_OFFSET -0xA4 +#else +#define OV29_022E9A9C_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x18 mov sb, r1 @@ -397,7 +408,7 @@ _022E9B00: ldr r1, [r0] ldr r4, _022E9CAC ; =ov29_0235179C add r0, r1, #0x3000 - ldrb r0, [r0, #0xe38] + ldrb r0, [r0, #0xe38 + OV29_022E9A9C_OFFSET] ldr r3, _022E9CB0 ; =ov29_023517A0 mov r5, r6, lsl #3 cmp r0, #0 @@ -412,7 +423,7 @@ _022E9B00: ldrsh r0, [sb, #6] str r0, [sp, #8] beq _022E9B80 - add r0, r1, #0x378 + add r0, r1, #0x378 + OV29_022E9A9C_OFFSET add r0, r0, #0x12800 str r0, [sp, #4] mov r0, #0x14 @@ -422,14 +433,14 @@ _022E9B80: ldrb r0, [r8, #6] cmp r0, #0 bne _022E9BA4 - add r0, r1, #0x338 + add r0, r1, #0x338 + OV29_022E9A9C_OFFSET add r0, r0, #0x12800 str r0, [sp, #4] mov r0, #0x10 str r0, [sp] b _022E9C44 _022E9BA4: - add r0, r1, #0x328 + add r0, r1, #0x328 + OV29_022E9A9C_OFFSET add r0, r0, #0x12800 str r0, [sp, #4] mov r0, #4 @@ -684,11 +695,19 @@ ov29_022E9F18: ; 0x022E9F18 ldr r0, [r2] ldr r1, _022E9F74 ; =ov29_0237C850 add r0, r0, #0x1a000 +#ifdef JAPAN + strb r3, [r0, #0x1a8] +#else strb r3, [r0, #0x24c] +#endif ldr r0, [r2] mov r2, #0 add r0, r0, #0x1a000 +#ifdef JAPAN + strb r3, [r0, #0x1a9] +#else strb r3, [r0, #0x24d] +#endif str r2, [r1, #0xc] ldmia sp!, {r3, pc} .align 2, 0 @@ -760,6 +779,11 @@ _022EA004: .word ov29_02353560 arm_func_start ov29_022EA008 ov29_022EA008: ; 0x022EA008 +#ifdef JAPAN +#define OV29_022EA008_OFFSET -0xA4 +#else +#define OV29_022EA008_OFFSET 0 +#endif stmdb sp!, {r3, lr} ldr r0, _022EA290 ; =DUNGEON_PTR ldr r0, [r0] @@ -783,7 +807,7 @@ ov29_022EA008: ; 0x022EA008 add r1, r0, #2 add r2, ip, #0x1a000 ldrsh r3, [ip, r1] - ldr r1, [r2, #0x230] + ldr r1, [r2, #0x230 + OV29_022EA008_OFFSET] ldrsh r0, [ip, r0] sub r1, r3, r1 mov r1, r1, lsl #0x10 @@ -794,17 +818,17 @@ ov29_022EA008: ; 0x022EA008 ldr r1, _022EA290 ; =DUNGEON_PTR ldr r0, [r1] add ip, r0, #0x1a000 - ldrb r0, [ip, #0x251] + ldrb r0, [ip, #0x251 + OV29_022EA008_OFFSET] cmp r0, #0 beq _022EA0DC mov r0, #2 - strb r0, [ip, #0x23c] + strb r0, [ip, #0x23c + OV29_022EA008_OFFSET] ldr r0, _022EA298 ; =0x0001A224 ldr ip, [r1] add r1, r0, #2 add r2, ip, #0x1a000 ldrsh r3, [ip, r1] - ldr r1, [r2, #0x230] + ldr r1, [r2, #0x230 + OV29_022EA008_OFFSET] mov r2, #0 sub r1, r3, r1 mov r1, r1, lsl #0x10 @@ -819,7 +843,7 @@ _022EA0DC: mov r1, r0 mov r2, r0 mov r3, r0 - strb lr, [ip, #0x23c] + strb lr, [ip, #0x23c + OV29_022EA008_OFFSET] bl sub_02051E20 _022EA0F8: bl ov29_0230473C @@ -857,7 +881,7 @@ _022EA154: ldr r0, _022EA290 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x1a000 - ldrb r2, [r0, #0x24a] + ldrb r2, [r0, #0x24a + OV29_022EA008_OFFSET] cmp r2, #0 beq _022EA1B8 bl ov29_022DE11C @@ -868,7 +892,7 @@ _022EA154: ldr r0, [r0] ldr r1, _022EA294 ; =ov29_02353560 add r0, r0, #0x1a000 - strb r2, [r0, #0x24a] + strb r2, [r0, #0x24a + OV29_022EA008_OFFSET] ldr r0, [r1, #8] str r0, [r1, #0xc] b _022EA1D0 @@ -878,12 +902,12 @@ _022EA1B8: str r2, [r1, #0xc] cmp r2, #0 movle r1, #1 - strleb r1, [r0, #0x24a] + strleb r1, [r0, #0x24a + OV29_022EA008_OFFSET] _022EA1D0: ldr r0, _022EA290 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x1a000 - ldrb r0, [r0, #0x24a] + ldrb r0, [r0, #0x24a + OV29_022EA008_OFFSET] cmp r0, #0 beq _022EA214 bl ov29_0234B4F4 @@ -911,9 +935,9 @@ _022EA214: ldrb r1, [r0, #7] ldr r2, [r2] cmp r2, #0 - addne r0, r2, #0xc4 + addne r0, r2, #0xc4 + OV29_022EA008_OFFSET addne r0, r0, #0x4000 - add r2, r2, #0x21c + add r2, r2, #0x21c + OV29_022EA008_OFFSET moveq r0, #0 add r2, r2, #0x1a000 bl ov29_022ED800 @@ -922,8 +946,13 @@ _022EA260: bl ov29_022E8C10 ldr r0, _022EA290 ; =DUNGEON_PTR ldr r0, [r0] +#ifdef JAPAN + add r0, r0, #0x2180 + add r0, r0, #0x18000 +#else add r0, r0, #0x224 add r0, r0, #0x1a000 +#endif bl ov29_022DD8B4 _022EA27C: ldr r0, _022EA29C ; =ov29_0237C850 @@ -934,9 +963,9 @@ _022EA27C: .align 2, 0 _022EA290: .word DUNGEON_PTR _022EA294: .word ov29_02353560 -_022EA298: .word 0x0001A224 +_022EA298: .word 0x0001A224 + OV29_022EA008_OFFSET _022EA29C: .word ov29_0237C850 -_022EA2A0: .word 0x0001A21C +_022EA2A0: .word 0x0001A21C + OV29_022EA008_OFFSET arm_func_end ov29_022EA008 arm_func_start ov29_022EA2A4 @@ -961,7 +990,11 @@ _022EA2C0: mov r1, #0 ldr r0, [r0] add r0, r0, #0x1a000 +#ifdef JAPAN + strb r1, [r0, #0x1a4] +#else strb r1, [r0, #0x248] +#endif bl InitWeirdMinimapMatrix ldr r0, _022EA31C ; =ov29_02353560 ldrb r0, [r0, #6] @@ -1308,7 +1341,11 @@ DisplayAnimatedNumbers: ; 0x022EA718 ldr r0, _022EA7FC ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x1a000 +#ifdef JAPAN + ldrb r0, [r0, #0x19a] +#else ldrb r0, [r0, #0x23e] +#endif cmp r0, #0 ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} mov r6, #0 @@ -1412,8 +1449,13 @@ _022EA848: ldr r4, [r5, #0xb4] ldr ip, [r1] add r1, r4, #0x100 +#ifdef JAPAN + ldrsh r5, [r1, #0x7e] + ldrsh r4, [r1, #0x80] +#else ldrsh r5, [r1, #0x82] ldrsh r4, [r1, #0x84] +#endif ldr r1, [r3, #0x30] ldrsh r0, [ip, r0] add r5, r5, r1, asr #8 diff --git a/asm/overlay_29_022EAB50.s b/asm/overlay_29_022EAB50.s index 12ea4a69..ef738d0d 100644 --- a/asm/overlay_29_022EAB50.s +++ b/asm/overlay_29_022EAB50.s @@ -192,6 +192,11 @@ _022EAD64: .word RANDOM_MUSIC_ID_TABLE arm_func_start ov29_022EAD68 ov29_022EAD68: ; 0x022EAD68 +#ifdef JAPAN +#define OV29_022EAD68_OFFSET -0xA4 +#else +#define OV29_022EAD68_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, lr} bl IsCurrentFixedRoomBossFight cmp r0, #0 @@ -217,12 +222,12 @@ _022EADAC: ldr r0, [r0] ldr r2, _022EAE10 ; =FIXED_ROOM_PROPERTIES_TABLE add r0, r0, #0x4000 - ldrb r3, [r0, #0xda] + ldrb r3, [r0, #0xda + OV29_022EAD68_OFFSET] smulbb r1, r3, r1 ldr r1, [r2, r1] cmp r1, #0 - ldreqsh r1, [r0, #0xd6] - strneh r1, [r0, #0xd6] + ldreqsh r1, [r0, #0xd6 + OV29_022EAD68_OFFSET] + strneh r1, [r0, #0xd6 + OV29_022EAD68_OFFSET] mov r0, r1, lsl #0x10 mov r0, r0, asr #0x10 bl MusicTableIdxToMusicId @@ -255,7 +260,11 @@ ChangeDungeonMusic: ; 0x022EAE14 bx lr .align 2, 0 _022EAE38: .word DUNGEON_PTR +#ifdef JAPAN +_022EAE3C: .word 0x0002CA62 +#else _022EAE3C: .word 0x0002CB06 +#endif arm_func_end ChangeDungeonMusic arm_func_start ov29_022EAE40 @@ -286,7 +295,11 @@ ov29_022EAE40: ; 0x022EAE40 ldmia sp!, {r4, pc} .align 2, 0 _022EAEA0: .word DUNGEON_PTR +#ifdef JAPAN +_022EAEA4: .word 0x0002CA5E +#else _022EAEA4: .word 0x0002CB02 +#endif _022EAEA8: .word 0x000003E7 arm_func_end ov29_022EAE40 @@ -307,7 +320,11 @@ ov29_022EAEAC: ; 0x022EAEAC strh ip, [r1, r0] ldmia sp!, {r3, pc} .align 2, 0 +#ifdef JAPAN +_022EAEE4: .word 0x0002CA5E +#else _022EAEE4: .word 0x0002CB02 +#endif _022EAEE8: .word DUNGEON_PTR _022EAEEC: .word 0x000003E7 arm_func_end ov29_022EAEAC @@ -361,9 +378,15 @@ ov29_022EAF48: ; 0x022EAF48 mov r4, #0 ldr r3, [ip] ldr lr, _022EAFAC ; =0x000003E7 +#ifdef JAPAN + add r2, r3, #0x254 + add r3, r3, #0x2c000 + str r4, [r3, #0xa54] +#else add r2, r3, #0x2f8 add r3, r3, #0x2c000 str r4, [r3, #0xaf8] +#endif add r3, r2, #0x2c800 str r4, [r3, #4] ldr r2, [ip] @@ -397,7 +420,11 @@ ov29_022EAFB0: ; 0x022EAFB0 add r0, r3, #0x700 ldrh r0, [r0, #0x96] ldr r2, _022EB16C ; =0x000003E7 +#ifdef JAPAN + add r1, r3, #0x254 +#else add r1, r3, #0x2f8 +#endif cmp r0, r2 add r4, r1, #0x2c800 bne _022EB034 @@ -609,7 +636,11 @@ _022EB2BC: add sp, sp, #8 ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_022EB2C4: .word 0x00000887 +#else _022EB2C4: .word 0x00000B76 +#endif arm_func_end TrySwitchPlace arm_func_start ov29_022EB2C8 @@ -627,8 +658,13 @@ ov29_022EB2C8: ; 0x022EB2C8 ldreq r0, _022EB364 ; =0x000009C9 ldmeqia sp!, {r3, r4, r5, r6, r7, pc} _022EB2F8: +#ifdef JAPAN + add r0, r6, #0x57 + add r0, r0, #0x2300 +#else add r0, r6, #0x87 add r0, r0, #0x900 +#endif mov r0, r0, lsl #0x10 mov r7, r0, lsr #0x10 mov r0, r7 @@ -656,11 +692,19 @@ _022EB34C: ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 _022EB360: .word ov29_0237C91C +#ifdef JAPAN +_022EB364: .word 0x00002399 +#else _022EB364: .word 0x000009C9 +#endif _022EB368: .word ov29_02352070 _022EB36C: .word ov29_0237C91E _022EB370: .word ov29_02352032 +#ifdef JAPAN +_022EB374: .word 0x0000239A +#else _022EB374: .word 0x000009CA +#endif arm_func_end ov29_022EB2C8 arm_func_start ov29_022EB378 @@ -777,7 +821,11 @@ _022EB498: ldr r0, [r0] add r0, r0, r1, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r0, [r0, #0xa84] +#else ldr r0, [r0, #0xb28] +#endif ldr r0, [r0, #0xb4] add r0, r0, #0x62 ldmia sp!, {r3, pc} @@ -839,7 +887,11 @@ ov29_022EB568: ; 0x022EB568 ldr r0, [r0] add r0, r0, r1, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r0, [r0, #0xa84] +#else ldr r0, [r0, #0xb28] +#endif bx lr .align 2, 0 _022EB590: .word DUNGEON_PTR @@ -975,7 +1027,11 @@ _022EB71C: ldr r0, [r0] add r0, r0, r1, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r0, [r0, #0xa84] +#else ldr r0, [r0, #0xb28] +#endif ldr r0, [r0, #0xb4] add r0, r0, #0x62 cmp r4, r0 @@ -1066,7 +1122,11 @@ _022EB850: ldr r4, _022EB8A0 ; =ov29_0237C91C mov r6, r2, lsl #3 ldr lr, [ip] +#ifdef JAPAN + add r3, r0, #0x57 +#else add r3, r0, #0x87 +#endif add lr, lr, #1 ldr r5, _022EB8A4 ; =ov29_0237C91E strh r0, [r4, r6] @@ -1075,7 +1135,11 @@ _022EB850: mov r1, #1 ldr r0, _022EB8AC ; =ov29_0237C922 strb r1, [r4, r2, lsl #3] +#ifdef JAPAN + add r1, r3, #0x2300 +#else add r1, r3, #0x900 +#endif strh r1, [r0, r6] str lr, [ip] ldmia sp!, {r4, r5, r6, pc} @@ -1480,6 +1544,13 @@ ov29_022EBCE8: ; 0x022EBCE8 arm_func_start RunFractionalTurn RunFractionalTurn: ; 0x022EBD08 +#ifdef JAPAN +#define RUN_FRACTIONAL_TURN_OFFSET -0xA4 +#define RUN_FRACTIONAL_TURN_OFFSET_2 -4 +#else +#define RUN_FRACTIONAL_TURN_OFFSET 0 +#define RUN_FRACTIONAL_TURN_OFFSET_2 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x40 mov r4, r0 @@ -1516,7 +1587,7 @@ _022EBD80: ldr r0, [r0] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 - ldr r4, [r0, #0xb28] + ldr r4, [r0, #0xb28 + RUN_FRACTIONAL_TURN_OFFSET] mov r0, r4 bl EntityIsValid__022EC608 cmp r0, #0 @@ -1536,7 +1607,7 @@ _022EBD80: bl TryActivateArtificialWeatherAbilities mov r1, #0 mov r0, r4 - strb r1, [r6, #0x14e] + strb r1, [r6, #0x14e + RUN_FRACTIONAL_TURN_OFFSET_2] bl CalcSpeedStageWrapper ldr r1, _022EC2FC ; =DUNGEON_PTR ldr r3, _022EC300 ; =FRACTIONAL_TURN_SEQUENCE @@ -1549,7 +1620,7 @@ _022EBD80: ldrsh r0, [r0, r1] cmp r0, #0 beq _022EBEC8 - ldrb r0, [r6, #0x152] + ldrb r0, [r6, #0x152 + RUN_FRACTIONAL_TURN_OFFSET_2] cmp r0, #0 bne _022EBEC8 ldrh r0, [r6] @@ -1561,7 +1632,7 @@ _022EBD80: bne _022EBEC8 mov r1, #0 mov r0, r4 - strb r1, [r6, #0x14f] + strb r1, [r6, #0x14f + RUN_FRACTIONAL_TURN_OFFSET_2] bl TickStatusAndHealthRegen mov r0, r4 bl EntityIsValid__022EC608 @@ -1626,18 +1697,18 @@ _022EBF18: ldr r0, [r0] add r0, r0, sl, lsl #2 add r0, r0, #0x12000 - ldr r7, [r0, #0xb28] + ldr r7, [r0, #0xb28 + RUN_FRACTIONAL_TURN_OFFSET] mov r0, r7 bl EntityIsValid__022EC608 cmp r0, #0 ldrne r1, [r7, #0xb4] - ldrneb r0, [r1, #0x14e] + ldrneb r0, [r1, #0x14e + RUN_FRACTIONAL_TURN_OFFSET_2] cmpne r0, #0 beq _022EBFA8 ldrb r0, [r1, #7] cmp r0, #0 - strneb r6, [r1, #0x14f] - strneb r6, [r1, #0x14e] + strneb r6, [r1, #0x14f + RUN_FRACTIONAL_TURN_OFFSET_2] + strneb r6, [r1, #0x14e + RUN_FRACTIONAL_TURN_OFFSET_2] bne _022EBFA8 ldrsh r1, [r8, #6] ldrsh r0, [r7, #6] @@ -1673,9 +1744,9 @@ _022EBFC8: beq _022EC008 ldr r2, [r4, #0xb4] mov r0, r4 - strb sl, [r2, #0x14f] + strb sl, [r2, #0x14f + RUN_FRACTIONAL_TURN_OFFSET_2] mov r1, sl - strb r7, [r2, #0x14e] + strb r7, [r2, #0x14e + RUN_FRACTIONAL_TURN_OFFSET_2] bl RunMonsterAi mov r0, r4 bl ExecuteMonsterAction @@ -1702,12 +1773,12 @@ _022EC038: ldr r0, [r5] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 - ldr r7, [r0, #0xb28] + ldr r7, [r0, #0xb28 + RUN_FRACTIONAL_TURN_OFFSET] mov r0, r7 bl EntityIsValid__022EC608 cmp r0, #0 ldrne r8, [r7, #0xb4] - ldrneb r0, [r8, #0x14e] + ldrneb r0, [r8, #0x14e + RUN_FRACTIONAL_TURN_OFFSET_2] cmpne r0, #0 beq _022EC088 mov r0, r7 @@ -1718,7 +1789,7 @@ _022EC038: beq _022EC088 mov r0, r7 bl EnemyEvolution - strb r6, [r8, #0x14e] + strb r6, [r8, #0x14e + RUN_FRACTIONAL_TURN_OFFSET_2] _022EC088: add r4, r4, #1 cmp r4, #4 @@ -1738,7 +1809,7 @@ _022EC0BC: ldr r0, [r4] add r0, r0, sb, lsl #2 add r0, r0, #0x12000 - ldr r8, [r0, #0xb38] + ldr r8, [r0, #0xb38 + RUN_FRACTIONAL_TURN_OFFSET] mov r0, r8 bl EntityIsValid__022EC608 cmp r0, #0 @@ -1760,7 +1831,7 @@ _022EC0BC: strneh r0, [sl] bne _022EC1BC mov r0, r8 - strb r7, [sl, #0x14e] + strb r7, [sl, #0x14e + RUN_FRACTIONAL_TURN_OFFSET_2] bl CalcSpeedStageWrapper ldr r2, [r4] mla r1, r0, fp, r6 @@ -1770,14 +1841,14 @@ _022EC0BC: ldrsh r0, [r0, r1] cmp r0, #0 beq _022EC1BC - ldrb r0, [sl, #0x152] + ldrb r0, [sl, #0x152 + RUN_FRACTIONAL_TURN_OFFSET_2] cmp r0, #0 bne _022EC1BC ldrh r1, [sl] mov r0, r8 bic r1, r1, #0xc000 strh r1, [sl] - strb r5, [sl, #0x14f] + strb r5, [sl, #0x14f + RUN_FRACTIONAL_TURN_OFFSET_2] bl TickStatusAndHealthRegen mov r0, r8 bl EntityIsValid__022EC608 @@ -1815,12 +1886,12 @@ _022EC1E0: ldr r0, [r5] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 - ldr r7, [r0, #0xb38] + ldr r7, [r0, #0xb38 + RUN_FRACTIONAL_TURN_OFFSET] mov r0, r7 bl EntityIsValid__022EC608 cmp r0, #0 ldrne r8, [r7, #0xb4] - ldrneb r0, [r8, #0x14e] + ldrneb r0, [r8, #0x14e + RUN_FRACTIONAL_TURN_OFFSET_2] cmpne r0, #0 beq _022EC230 mov r0, r7 @@ -1831,7 +1902,7 @@ _022EC1E0: beq _022EC230 mov r0, r7 bl EnemyEvolution - strb r6, [r8, #0x14e] + strb r6, [r8, #0x14e + RUN_FRACTIONAL_TURN_OFFSET_2] _022EC230: add r4, r4, #1 cmp r4, #0x10 @@ -1856,7 +1927,7 @@ _022EC278: ldr r0, [r4] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 - ldr r0, [r0, #0xb78] + ldr r0, [r0, #0xb78 + RUN_FRACTIONAL_TURN_OFFSET] bl EntityIsValid__022EC608 cmp r0, #0 beq _022EC2A0 @@ -1922,7 +1993,11 @@ RunLeaderTurn: ; 0x022EC308 moveq r0, #0 ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} ldr r0, [r4, #0xb4] +#ifdef JAPAN + ldrb r0, [r0, #0x14e] +#else ldrb r0, [r0, #0x152] +#endif cmp r0, #0 movne r0, #0 ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} @@ -2033,7 +2108,11 @@ _022EC500: ldr r0, [r4] add r0, r0, r7, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r6, [r0, #0xad4] +#else ldr r6, [r0, #0xb78] +#endif mov r0, r6 bl EntityIsValid__022EC608 cmp r0, #0 diff --git a/asm/overlay_29_022EC62C.s b/asm/overlay_29_022EC62C.s index 61509412..eaf5c0d8 100644 --- a/asm/overlay_29_022EC62C.s +++ b/asm/overlay_29_022EC62C.s @@ -24,7 +24,11 @@ _022EC668: ldr r0, [r7] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r5, [r0, #0xad4] +#else ldr r5, [r0, #0xb78] +#endif mov r0, r5 bl EntityIsValid__022EC608 cmp r0, #0 @@ -57,6 +61,11 @@ _022EC6D8: .word DUNGEON_PTR arm_func_start TrySpawnMonsterAndActivatePlusMinus TrySpawnMonsterAndActivatePlusMinus: ; 0x022EC6DC +#ifdef JAPAN +#define TRY_SPAWN_MONSTER_AND_ACTIVATE_PLUS_MINUS_OFFSET -0xA4 +#else +#define TRY_SPAWN_MONSTER_AND_ACTIVATE_PLUS_MINUS_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} ldr r0, _022EC7E0 ; =DUNGEON_PTR ldr r1, _022EC7E4 ; =ov29_023522B6 @@ -73,31 +82,31 @@ TrySpawnMonsterAndActivatePlusMinus: ; 0x022EC6DC ldr r0, [r4] mov fp, #1 add r0, r0, #0x3000 - strb r8, [r0, #0xe34] + strb r8, [r0, #0xe34 + TRY_SPAWN_MONSTER_AND_ACTIVATE_PLUS_MINUS_OFFSET] ldr r0, [r4] mov r7, r8 add r0, r0, #0x3000 - strb r8, [r0, #0xe35] + strb r8, [r0, #0xe35 + TRY_SPAWN_MONSTER_AND_ACTIVATE_PLUS_MINUS_OFFSET] ldr r0, [r4] mov r6, fp add r0, r0, #0x3000 - strb r8, [r0, #0xe36] + strb r8, [r0, #0xe36 + TRY_SPAWN_MONSTER_AND_ACTIVATE_PLUS_MINUS_OFFSET] ldr r0, [r4] mov r5, fp add r0, r0, #0x3000 - strb r8, [r0, #0xe37] + strb r8, [r0, #0xe37 + TRY_SPAWN_MONSTER_AND_ACTIVATE_PLUS_MINUS_OFFSET] _022EC750: ldr r0, [r4] add r0, r0, r8, lsl #2 add r0, r0, #0x12000 - ldr sb, [r0, #0xb78] + ldr sb, [r0, #0xb78 + TRY_SPAWN_MONSTER_AND_ACTIVATE_PLUS_MINUS_OFFSET] mov r0, sb bl EntityIsValid__022EC608 cmp r0, #0 beq _022EC7C8 ldr r0, [sb, #0xb4] mov r1, #0x3f - strb r7, [r0, #0x152] + strb r7, [r0, #0x152 + TRY_SPAWN_MONSTER_AND_ACTIVATE_PLUS_MINUS_OFFSET] ldrb r0, [r0, #6] cmp r0, #0 moveq sl, fp @@ -109,14 +118,14 @@ _022EC750: mov r1, #0x38 addne r0, r0, sl addne r0, r0, #0x3000 - strneb r6, [r0, #0xe36] + strneb r6, [r0, #0xe36 + TRY_SPAWN_MONSTER_AND_ACTIVATE_PLUS_MINUS_OFFSET] mov r0, sb bl AbilityIsActiveVeneer cmp r0, #0 ldrne r0, [r4] addne r0, r0, sl addne r0, r0, #0x3000 - strneb r5, [r0, #0xe34] + strneb r5, [r0, #0xe34 + TRY_SPAWN_MONSTER_AND_ACTIVATE_PLUS_MINUS_OFFSET] _022EC7C8: add r8, r8, #1 cmp r8, #0x14 @@ -230,7 +239,11 @@ _022EC900: add r2, r3, r2 ldr r2, [r5, r2, lsl #2] add r1, r1, #0x1a000 +#ifdef JAPAN + str r2, [r1, #0x18c] +#else str r2, [r1, #0x230] +#endif bl AdvanceFrame _022EC93C: ldrb r0, [r6, #3] @@ -254,7 +267,11 @@ _022EC96C: ldr r0, [r0] ldr r1, _022EC9A0 ; =ov29_02353598 add r0, r0, #0x1a000 +#ifdef JAPAN + str r2, [r0, #0x18c] +#else str r2, [r0, #0x230] +#endif strb r2, [r1] ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 @@ -268,16 +285,27 @@ ov29_022EC9A4: ; 0x022EC9A4 stmdb sp!, {r4, r5, r6, lr} sub sp, sp, #8 mov r3, #0xc +#ifdef JAPAN + smulbb r4, r1, r3 + ldr r1, _022ECAD8 ; =ov10_022C6320 + mov r6, r0 + ldrb r4, [r1, r4] +#else smulbb r3, r1, r3 ldr r1, _022ECAD8 ; =ov10_022C6320 mov r6, r0 ldrb r4, [r1, r3] +#endif mov r5, r2 cmp r4, #5 beq _022ECA28 cmp r5, #0 bne _022EC9E0 +#ifdef JAPAN + add r1, r3, #0x930 +#else ldr r1, _022ECADC ; =0x00000BFD +#endif bl LogMessageByIdWithPopupCheckUser b _022ECA18 _022EC9E0: @@ -295,7 +323,11 @@ _022EC9F4: _022ECA08: cmp r5, #3 bne _022ECA18 +#ifdef JAPAN + ldr r1, _022EE14C ; =0x0000093F +#else mov r1, #0xc00 +#endif bl LogMessageByIdWithPopupCheckUser _022ECA18: mov r0, r4 @@ -307,8 +339,13 @@ _022ECA28: mov r4, r0 cmp r5, #0 bne _022ECA48 +#ifdef JAPAN + mov r0, r6 + mov r1, #0x940 +#else ldr r1, _022ECAE8 ; =0x00000C01 mov r0, r6 +#endif bl LogMessageByIdWithPopupCheckUser b _022ECA8C _022ECA48: @@ -354,6 +391,14 @@ _022ECAD0: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _022ECAD8: .word ov10_022C6320 +#ifdef JAPAN +_022ECAE0: .word 0x0000093D +_022ECAE4: .word 0x0000093E +_022EE14C: .word 0x0000093F +_022ECAEC: .word 0x00000941 +_022ECAF0: .word 0x00000942 +_022ECAF4: .word 0x00000943 +#else _022ECADC: .word 0x00000BFD _022ECAE0: .word 0x00000BFE _022ECAE4: .word 0x00000BFF @@ -361,6 +406,7 @@ _022ECAE8: .word 0x00000C01 _022ECAEC: .word 0x00000C02 _022ECAF0: .word 0x00000C03 _022ECAF4: .word 0x00000C04 +#endif _022ECAF8: .word ov29_02352380 arm_func_end ov29_022EC9A4 @@ -394,6 +440,11 @@ _022ECB44: .word ov29_02353598 arm_func_start DecrementWindCounter DecrementWindCounter: ; 0x022ECB48 +#ifdef JAPAN +#define DECREMENT_WIND_COUNTER_OFFSET -0xA4 +#else +#define DECREMENT_WIND_COUNTER_OFFSET 0 +#endif stmdb sp!, {r4, lr} bl GetLeader movs r4, r0 @@ -444,7 +495,7 @@ _022ECB70: mov r0, r4 ldr r2, [r1] add r1, r2, #0x4000 - ldrsh r1, [r1, #0xd4] + ldrsh r1, [r1, #0xd4 + DECREMENT_WIND_COUNTER_OFFSET] ldrb r2, [r2, #0x79a] bl ov29_022EC9A4 ldr r0, _022ECD7C ; =DUNGEON_PTR @@ -473,7 +524,7 @@ _022ECC2C: mov r0, r4 ldr r2, [r1] add r1, r2, #0x4000 - ldrsh r1, [r1, #0xd4] + ldrsh r1, [r1, #0xd4 + DECREMENT_WIND_COUNTER_OFFSET] ldrb r2, [r2, #0x79a] bl ov29_022EC9A4 ldr r0, _022ECD7C ; =DUNGEON_PTR @@ -502,7 +553,7 @@ _022ECC9C: mov r0, r4 ldr r2, [r1] add r1, r2, #0x4000 - ldrsh r1, [r1, #0xd4] + ldrsh r1, [r1, #0xd4 + DECREMENT_WIND_COUNTER_OFFSET] ldrb r2, [r2, #0x79a] bl ov29_022EC9A4 ldr r0, _022ECD7C ; =DUNGEON_PTR @@ -527,7 +578,7 @@ _022ECD0C: mov r0, r4 ldr r2, [r1] add r1, r2, #0x4000 - ldrsh r1, [r1, #0xd4] + ldrsh r1, [r1, #0xd4 + DECREMENT_WIND_COUNTER_OFFSET] ldrb r2, [r2, #0x79a] bl ov29_022EC9A4 ldr r0, _022ECD7C ; =DUNGEON_PTR diff --git a/asm/overlay_29_022ECDE4.s b/asm/overlay_29_022ECDE4.s index c7fa4ec4..5f95f6f3 100644 --- a/asm/overlay_29_022ECDE4.s +++ b/asm/overlay_29_022ECDE4.s @@ -10,7 +10,11 @@ ov29_022ECDE4: ; 0x022ECDE4 mov r6, r1 ldr r1, [r4] mov sb, r0 +#ifdef JAPAN + add r1, r1, #0x168 +#else add r1, r1, #0x20c +#endif mov r0, r6 mov r8, r2 mov r7, r3 @@ -97,7 +101,11 @@ _022ECE94: .align 2, 0 _022ECF34: .word DUNGEON_PTR _022ECF38: .word ov29_0237C974 +#ifdef JAPAN +_022ECF3C: .word 0x00000889 +#else _022ECF3C: .word 0x00000A41 +#endif _022ECF40: .word 0x000003E7 arm_func_end ov29_022ECDE4 @@ -115,7 +123,11 @@ ov29_022ECF44: ; 0x022ECF44 bx lr .align 2, 0 _022ECF6C: .word DUNGEON_PTR +#ifdef JAPAN +_022ECF70: .word 0x0002C9C2 +#else _022ECF70: .word 0x0002CA66 +#endif _022ECF74: .word 0x00000279 arm_func_end ov29_022ECF44 @@ -136,7 +148,11 @@ ov29_022ECF78: ; 0x022ECF78 bx lr .align 2, 0 _022ECFAC: .word DUNGEON_PTR +#ifdef JAPAN +_022ECFB0: .word 0x0002C9C2 +#else _022ECFB0: .word 0x0002CA66 +#endif _022ECFB4: .word 0x0000027A arm_func_end ov29_022ECF78 @@ -148,7 +164,11 @@ ov29_022ECFB8: ; 0x022ECFB8 ldr r1, [r1] cmp r1, #0 beq _022ECFF8 +#ifdef JAPAN + add r0, r1, #0x168 +#else add r0, r1, #0x20c +#endif add lr, r0, #0x2c800 mov ip, #0xe _022ECFDC: @@ -219,7 +239,11 @@ ov29_022ED030: ; 0x022ED030 ldmia sp!, {r3, pc} .align 2, 0 _022ED0A0: .word ov29_02352690 +#ifdef JAPAN +_022ED0A4: .word 0x000003F5 +#else _022ED0A4: .word 0x00000401 +#endif _022ED0A8: .word ov29_0237C99C _022ED0AC: .word ov29_0235359C arm_func_end ov29_022ED030 @@ -751,12 +775,16 @@ ov29_022ED800: ; 0x022ED800 arm_func_start ov29_022ED82C ov29_022ED82C: ; 0x022ED82C stmdb sp!, {r4, lr} -#ifdef EUROPE +#if defined(EUROPE) add r1, r1, #0xc3 + add r1, r1, #0x3400 +#elif defined(JAPAN) + add r1, r1, #0x46 + add r1, r1, #0x4700 #else add r1, r1, #0xc1 -#endif add r1, r1, #0x3400 +#endif mov r1, r1, lsl #0x10 mov r4, r0 mov r0, r1, lsr #0x10 @@ -781,7 +809,11 @@ ov29_022ED868: ; 0x022ED868 ldr ip, _022ED884 ; =AreLateGameTrapsEnabled ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrb r0, [r0, #0x36] +#else ldrb r0, [r0, #0xda] +#endif bx ip .align 2, 0 _022ED880: .word DUNGEON_PTR @@ -887,6 +919,11 @@ _022ED9C8: arm_func_start ov29_022ED9D0 ov29_022ED9D0: ; 0x022ED9D0 +#ifdef JAPAN +#define OV29_022ED9D0_OFFSET -0xA4 +#else +#define OV29_022ED9D0_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #8 ldr r0, _022EDBB8 ; =DUNGEON_PTR @@ -894,7 +931,7 @@ ov29_022ED9D0: ; 0x022ED9D0 ldr r0, [r0] ldrsh r2, [r0, r1] add r1, r0, #0x1a000 - ldrb r8, [r1, #0x244] + ldrb r8, [r1, #0x244 + OV29_022ED9D0_OFFSET] sub sb, r2, #5 b _022EDB9C _022ED9F8: @@ -1017,8 +1054,8 @@ _022EDB9C: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _022EDBB8: .word DUNGEON_PTR -_022EDBBC: .word 0x0001A21E -_022EDBC0: .word 0x0001A21C +_022EDBBC: .word 0x0001A21E + OV29_022ED9D0_OFFSET +_022EDBC0: .word 0x0001A21C + OV29_022ED9D0_OFFSET _022EDBC4: .word 0x0000013E _022EDBC8: .word ov29_0237C864 _022EDBCC: .word 0xFFFF000F @@ -1027,6 +1064,11 @@ _022EDBD0: .word _020AFC4C arm_func_start PrepareTrapperTrap PrepareTrapperTrap: ; 0x022EDBD4 +#ifdef JAPAN +#define PREPARE_TRAPPER_TRAP_OFFSET -0xA4 +#else +#define PREPARE_TRAPPER_TRAP_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, lr} ldr lr, _022EDC28 ; =DUNGEON_PTR ldrsh r5, [r0] @@ -1040,17 +1082,17 @@ PrepareTrapperTrap: ; 0x022EDBD4 strh r4, [r0, ip] ldr r0, [lr] add r0, r0, #0x12000 - strb r1, [r0, #0xaae] + strb r1, [r0, #0xaae + PREPARE_TRAPPER_TRAP_OFFSET] ldr r0, [lr] add r0, r0, #0x12000 - strb r2, [r0, #0xaaf] + strb r2, [r0, #0xaaf + PREPARE_TRAPPER_TRAP_OFFSET] ldr r0, [lr] add r0, r0, #0x12000 - strb r3, [r0, #0xaa8] + strb r3, [r0, #0xaa8 + PREPARE_TRAPPER_TRAP_OFFSET] ldmia sp!, {r3, r4, r5, pc} .align 2, 0 _022EDC28: .word DUNGEON_PTR -_022EDC2C: .word 0x00012AAA +_022EDC2C: .word 0x00012AAA + PREPARE_TRAPPER_TRAP_OFFSET arm_func_end PrepareTrapperTrap arm_func_start ov29_022EDC30 @@ -1174,22 +1216,27 @@ _022EDDA0: arm_func_start TrySpawnTrapperTrap TrySpawnTrapperTrap: ; 0x022EDDD4 +#ifdef JAPAN +#define TRY_SPAWN_TRAPPER_TRAP_OFFSET -0xA4 +#else +#define TRY_SPAWN_TRAPPER_TRAP_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, lr} ldr r1, _022EDE6C ; =DUNGEON_PTR mov r5, r0 ldr r0, [r1] add r0, r0, #0x12000 - ldrb r2, [r0, #0xaa8] + ldrb r2, [r0, #0xaa8 + TRY_SPAWN_TRAPPER_TRAP_OFFSET] cmp r2, #0 moveq r0, #0 ldmeqia sp!, {r3, r4, r5, pc} mov r2, #0 - strb r2, [r0, #0xaa8] + strb r2, [r0, #0xaa8 + TRY_SPAWN_TRAPPER_TRAP_OFFSET] ldr r3, [r1] ldr r0, _022EDE70 ; =0x00012AAA add r2, r3, #0x12000 - ldrb r1, [r2, #0xaae] - ldrb r2, [r2, #0xaaf] + ldrb r1, [r2, #0xaae + TRY_SPAWN_TRAPPER_TRAP_OFFSET] + ldrb r2, [r2, #0xaaf + TRY_SPAWN_TRAPPER_TRAP_OFFSET] add r0, r3, r0 mov r3, #1 bl TrySpawnTrap @@ -1216,9 +1263,14 @@ _022EDE60: ldmia sp!, {r3, r4, r5, pc} .align 2, 0 _022EDE6C: .word DUNGEON_PTR -_022EDE70: .word 0x00012AAA +_022EDE70: .word 0x00012AAA + TRY_SPAWN_TRAPPER_TRAP_OFFSET +#ifdef JAPAN +_022EDE74: .word 0x00000B99 +_022EDE78: .word 0x00000B9A +#else _022EDE74: .word 0x00000E57 _022EDE78: .word 0x00000E58 +#endif arm_func_end TrySpawnTrapperTrap arm_func_start ov29_022EDE7C @@ -1320,8 +1372,17 @@ ov29_022EDF7C: ; 0x022EDF7C arm_func_start TryTriggerTrap TryTriggerTrap: ; 0x022EDFA0 +#ifdef JAPAN +#define TRY_TRIGGER_TRAP_OFFSET -4 +#else +#define TRY_TRIGGER_TRAP_OFFSET 0 +#endif +#ifdef JAPAN + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} +#else stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 +#endif + sub sp, sp, #0x14 + TRY_TRIGGER_TRAP_OFFSET mov sb, r1 mov sl, r0 ldrsh r0, [sb] @@ -1330,7 +1391,7 @@ TryTriggerTrap: ; 0x022EDFA0 mov r7, r3 bl GetTileSafe ldr r4, [r0, #0x10] - str r0, [sp, #0x10] + str r0, [sp, #0x10 + TRY_TRIGGER_TRAP_OFFSET] cmp r4, #0 beq _022EE2F4 ldr r0, [r4] @@ -1342,7 +1403,7 @@ TryTriggerTrap: ; 0x022EDFA0 ldrb r1, [r6] mov r0, #0 bl ov29_022EDF5C - ldr r0, [sp, #0x10] + ldr r0, [sp, #0x10 + TRY_TRIGGER_TRAP_OFFSET] ldr r5, [r0, #0xc] cmp r5, #0 ldrne r0, [r5] @@ -1350,7 +1411,7 @@ TryTriggerTrap: ; 0x022EDFA0 ldrb r0, [r4, #0x20] movne r5, #0 cmp r5, #0 - str r0, [sp, #0xc] + str r0, [sp, #0xc + TRY_TRIGGER_TRAP_OFFSET] mov r0, #1 strb r0, [r4, #0x20] beq _022EE1D8 @@ -1396,13 +1457,17 @@ _022EE05C: bl ov29_022EDE7C ldr r8, _022EE304 ; =0x00000E5A _022EE0C8: - ldr r0, [sp, #0xc] + ldr r0, [sp, #0xc + TRY_TRIGGER_TRAP_OFFSET] cmp r0, #1 beq _022EE0EC ldr r0, _022EE308 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x1a000 +#ifdef JAPAN + ldrb r0, [r0, #0x1a0] +#else ldrb r0, [r0, #0x244] +#endif cmp r0, #0 beq _022EE100 _022EE0EC: @@ -1493,7 +1558,11 @@ _022EE1D8: ldr r0, _022EE308 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x1a000 +#ifdef JAPAN + ldrb r0, [r0, #0x19a] +#else ldrb r0, [r0, #0x23e] +#endif cmp r0, #0 beq _022EE248 ldr r1, _022EE314 ; =0x00000E5D @@ -1503,8 +1572,13 @@ _022EE1D8: _022EE248: ldrb r1, [r6] mov r0, sl +#ifdef JAPAN + add r1, r1, #0x53 + add r1, r1, #0x600 +#else add r1, r1, #0x51 add r1, r1, #0xb00 +#endif mov r1, r1, lsl #0x10 mov r1, r1, lsr #0x10 bl LogMessageByIdWithPopupCheckUser @@ -1527,13 +1601,20 @@ _022EE288: _022EE29C: str sb, [sp] ldrb r6, [r6] +#ifdef JAPAN + ldr r3, [sp, #0xc] + mov r0, r4 +#else mov r0, r4 ldr r3, [sp, #0x10] +#endif mov r1, sl mov r2, r5 str r6, [sp, #4] +#ifndef JAPAN mov r4, #0 str r4, [sp, #8] +#endif bl ApplyTrapEffect mov r4, r0 mov r0, r5 @@ -1549,16 +1630,25 @@ _022EE2E0: mov r1, #1 bl ov29_022EDE7C _022EE2F4: - add sp, sp, #0x14 + add sp, sp, #0x14 + TRY_TRIGGER_TRAP_OFFSET +#ifdef JAPAN + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +#else ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +#endif .align 2, 0 -_022EE2FC: .word 0x00000E59 -_022EE300: .word 0x00000E5B -_022EE304: .word 0x00000E5A +#ifdef JAPAN +#define TRY_TRIGGER_TRAP_DATA_OFFSET -0x2BE +#else +#define TRY_TRIGGER_TRAP_DATA_OFFSET 0 +#endif +_022EE2FC: .word 0x00000E59 + TRY_TRIGGER_TRAP_DATA_OFFSET +_022EE300: .word 0x00000E5B + TRY_TRIGGER_TRAP_DATA_OFFSET +_022EE304: .word 0x00000E5A + TRY_TRIGGER_TRAP_DATA_OFFSET _022EE308: .word DUNGEON_PTR -_022EE30C: .word 0x00000E5C +_022EE30C: .word 0x00000E5C + TRY_TRIGGER_TRAP_DATA_OFFSET _022EE310: .word ov10_022C445C -_022EE314: .word 0x00000E5D +_022EE314: .word 0x00000E5D + TRY_TRIGGER_TRAP_DATA_OFFSET arm_func_end TryTriggerTrap arm_func_start ItemIsActive__022EE318 diff --git a/asm/overlay_29_022EE36C.s b/asm/overlay_29_022EE36C.s index 831aedac..861390b5 100644 --- a/asm/overlay_29_022EE36C.s +++ b/asm/overlay_29_022EE36C.s @@ -74,9 +74,15 @@ ApplyStickyTrapEffect: ; 0x022EE434 bl ItemIsActive__022EE318 cmp r0, #0 beq _022EE470 +#ifdef JAPAN + ldr r2, _022EFC78 ; =0x00000BA2 + mov r0, sl + mov r1, sb +#else mov r0, sl mov r1, sb mov r2, #0xe60 +#endif bl LogMessageByIdWithPopupCheckUserTarget b _022EE610 _022EE470: @@ -171,6 +177,18 @@ _022EE574: bl SetFlagsForHeldItemInBag b _022EE5E8 _022EE5C4: +#ifdef JAPAN + sub r2, r0, #1 + mov r0, #0x23c + ldr r1, _022EE620 ; =DUNGEON_PTR + mul r3, r2, r0 + ldr r0, [r1] + add r0, r0, #0x56 + add r1, r0, #0x800 + ldrb r0, [r1, r3] + orr r0, r0, #8 + strb r0, [r1, r3] +#else ldr r1, _022EE620 ; =DUNGEON_PTR sub r0, r0, #1 ldr r2, [r1] @@ -180,6 +198,7 @@ _022EE5C4: ldrb r0, [r2, r1, lsl #6] orr r0, r0, #8 strb r0, [r2, r1, lsl #6] +#endif _022EE5E8: #ifdef EUROPE mov r0, #0 @@ -188,9 +207,15 @@ _022EE5E8: ldr r1, _022EE624 ; =0x00000309 mov r0, sb bl ov29_022E56A0 +#ifdef JAPAN + mov r0, sl + mov r1, sb + mov r2, #0xba0 +#else ldr r2, _022EE628 ; =0x00000E5E mov r0, sl mov r1, sb +#endif bl LogMessageByIdWithPopupCheckUserTarget bl ov29_022E8104 bl ov29_022E81F8 @@ -198,15 +223,28 @@ _022EE610: add sp, sp, #0xcc ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +_022EFC78: .word 0x00000BA2 +_022EE618: .word BAG_ITEMS_PTR_MIRROR +_022EE61C: .word 0x00000BA1 +_022EE620: .word DUNGEON_PTR +_022EE624: .word 0x00000309 +#else _022EE618: .word BAG_ITEMS_PTR_MIRROR _022EE61C: .word 0x00000E5F _022EE620: .word DUNGEON_PTR _022EE624: .word 0x00000309 _022EE628: .word 0x00000E5E +#endif arm_func_end ApplyStickyTrapEffect arm_func_start ApplyGrimyTrapEffect ApplyGrimyTrapEffect: ; 0x022EE62C +#ifdef JAPAN +#define APPLY_GRIMY_TRAP_EFFECT_OFFSET 4 +#else +#define APPLY_GRIMY_TRAP_EFFECT_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0xd8 movs sl, r1 @@ -299,15 +337,21 @@ _022EE77C: ldr r0, _022EE810 ; =DUNGEON_PTR ldrb r2, [r8, #1] ldr r3, [r0] +#ifdef JAPAN + mov r0, #0x23c + mla r0, r2, r0, r3 + ldrh r1, [r8] +#else ldrh r1, [r8] add r0, r2, r2, lsl #3 add r0, r3, r0, lsl #6 +#endif add r0, r0, #0x600 - strh r1, [r0, #0x16] + strh r1, [r0, #0x16 + APPLY_GRIMY_TRAP_EFFECT_OFFSET] ldrh r1, [r8, #2] - strh r1, [r0, #0x18] + strh r1, [r0, #0x18 + APPLY_GRIMY_TRAP_EFFECT_OFFSET] ldrh r1, [r8, #4] - strh r1, [r0, #0x1a] + strh r1, [r0, #0x1a + APPLY_GRIMY_TRAP_EFFECT_OFFSET] _022EE7AC: add sb, sb, #1 _022EE7B0: @@ -340,32 +384,63 @@ _022EE800: _022EE808: .word BAG_ITEMS_PTR_MIRROR _022EE80C: .word ov10_022C4434 _022EE810: .word DUNGEON_PTR +#ifdef JAPAN +_022EE814: .word 0x00000BA5 +_022EE818: .word 0x00000BA3 +_022EE81C: .word 0x00000BA4 +#else _022EE814: .word 0x00000E63 _022EE818: .word 0x00000E61 _022EE81C: .word 0x00000E62 +#endif arm_func_end ApplyGrimyTrapEffect arm_func_start ApplyPitfallTrapEffect ApplyPitfallTrapEffect: ; 0x022EE820 stmdb sp!, {r4, r5, r6, r7, r8, lr} +#ifdef JAPAN + movs r6, r1 + mov r7, r0 + mov r5, r2 +#else movs r7, r1 mov r8, r0 mov r6, r2 mov r5, r3 +#endif mov r4, #0 ldmeqia sp!, {r4, r5, r6, r7, r8, pc} ldr r0, _022EE980 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrb r0, [r0, #0x36] +#else ldrb r0, [r0, #0xda] +#endif bl AreLateGameTrapsEnabled cmp r0, #0 bne _022EE868 ldr r1, _022EE984 ; =0x00000E64 +#ifdef JAPAN + mov r0, r7 +#else mov r0, r8 +#endif bl LogMessageByIdWithPopupCheckUser ldmia sp!, {r4, r5, r6, r7, r8, pc} _022EE868: +#ifdef JAPAN + mov r0, r6 + ldr r8, [r6, #0xb4] + bl ShouldDisplayEntityWrapper + cmp r0, #0 + beq _022EE8AC + mov r0, r5 + mov r1, #0x20 + bl ov29_022EF478 + mov r0, r6 +#else cmp r5, #0 ldr r5, [r7, #0xb4] bne _022EE8AC @@ -377,6 +452,7 @@ _022EE868: mov r1, #0x20 bl ov29_022EF478 mov r0, r7 +#endif mov r1, #0x308 mov r4, #1 bl ov29_022E56A0 @@ -384,13 +460,26 @@ _022EE868: mov r1, #0x48 bl ov29_022EA370 _022EE8AC: +#ifdef JAPAN + ldrb r0, [r8, #7] +#else ldrb r0, [r5, #7] +#endif cmp r0, #0 beq _022EE91C bl GetFloorType cmp r0, #2 beq _022EE90C mov r2, #1 +#ifdef JAPAN + strb r2, [r5, #0x16e] + mov r0, #0x28 + mov r1, #0x4b + strb r2, [r5, #0x170] + bl ov29_022EA370 + ldr r1, _022EE988 ; =ov10_022C44E4 + mov r0, r6 +#else strb r2, [r5, #0x172] mov r0, #0x28 mov r1, #0x4b @@ -398,6 +487,7 @@ _022EE8AC: bl ov29_022EA370 ldr r1, _022EE988 ; =ov10_022C44E4 mov r0, r7 +#endif ldrsh r1, [r1] mov r2, #0x11 mov r3, #0x254 @@ -410,44 +500,77 @@ _022EE8AC: b _022EE968 _022EE90C: ldr r1, _022EE98C ; =0x00000E66 +#ifdef JAPAN + mov r0, r7 +#else mov r0, r8 +#endif bl LogMessageByIdWithPopupCheckUser b _022EE968 _022EE91C: mov r0, #0 +#ifdef JAPAN + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r8, #6] +#else mov r1, r7 mov r2, r0 bl SubstitutePlaceholderStringTags ldrb r0, [r5, #6] +#endif cmp r0, #0 beq _022EE94C ldr r2, _022EE990 ; =0x00000E65 +#ifdef JAPAN + mov r0, r7 + mov r1, r6 +#else mov r0, r8 mov r1, r7 +#endif bl LogMessageByIdWithPopupCheckUserTarget b _022EE958 _022EE94C: ldr r1, _022EE990 ; =0x00000E65 +#ifdef JAPAN + mov r0, r7 + bl LogMessageByIdWithPopup +_022EE958: + mov r0, r6 + mov r2, r7 +#else mov r0, r8 bl LogMessageByIdWithPopup _022EE958: mov r0, r7 mov r2, r8 +#endif mov r1, #0x254 bl HandleFaint _022EE968: cmp r4, #0 ldmeqia sp!, {r4, r5, r6, r7, r8, pc} +#ifdef JAPAN + mov r0, r5 +#else mov r0, r6 +#endif mov r1, #5 bl ov29_022EF478 ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 +#ifdef JAPAN +#define APPLY_PITFALL_TRAP_EFFECT_OFFSET -0x2BE +#else +#define APPLY_PITFALL_TRAP_EFFECT_OFFSET 0 +#endif _022EE980: .word DUNGEON_PTR -_022EE984: .word 0x00000E64 +_022EE984: .word 0x00000E64 + APPLY_PITFALL_TRAP_EFFECT_OFFSET _022EE988: .word ov10_022C44E4 -_022EE98C: .word 0x00000E66 -_022EE990: .word 0x00000E65 +_022EE98C: .word 0x00000E66 + APPLY_PITFALL_TRAP_EFFECT_OFFSET +_022EE990: .word 0x00000E65 + APPLY_PITFALL_TRAP_EFFECT_OFFSET arm_func_end ApplyPitfallTrapEffect arm_func_start ApplySummonTrapEffect @@ -461,7 +584,11 @@ ApplySummonTrapEffect: ; 0x022EE994 mov r4, r0 ldr r0, [r1] add r0, r0, #0x4000 +#ifdef JAPAN + ldrb r0, [r0, #0x36] +#else ldrb r0, [r0, #0xda] +#endif bl AreLateGameTrapsEnabled cmp r0, #0 bne _022EE9D8 @@ -491,9 +618,15 @@ _022EEA10: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _022EEA20: .word DUNGEON_PTR +#ifdef JAPAN +_022EEA24: .word 0x00000BAA +_022EEA28: .word 0x0000030F +_022EEA2C: .word 0x00000BA9 +#else _022EEA24: .word 0x00000E68 _022EEA28: .word 0x0000030F _022EEA2C: .word 0x00000E67 +#endif arm_func_end ApplySummonTrapEffect arm_func_start ApplyPpZeroTrapEffect @@ -506,7 +639,11 @@ ApplyPpZeroTrapEffect: ; 0x022EEA30 beq _022EEB08 ldr r1, [r4, #0xb4] mov r0, r8 +#ifdef JAPAN + add lr, r1, #0x120 +#else add lr, r1, #0x124 +#endif mov r7, r8 mov r6, r8 mov ip, #1 @@ -559,8 +696,13 @@ _022EEB08: add sp, sp, #0x20 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 +#ifdef JAPAN +_022EEB10: .word 0x00000BAB +_022EEB14: .word 0x00000BAC +#else _022EEB10: .word 0x00000E69 _022EEB14: .word 0x00000E6A +#endif arm_func_end ApplyPpZeroTrapEffect arm_func_start ApplyPokemonTrapEffect @@ -575,7 +717,11 @@ ApplyPokemonTrapEffect: ; 0x022EEB18 mov r5, r0 ldr r0, [r1] add r0, r0, #0x4000 +#ifdef JAPAN + ldrb r0, [r0, #0x36] +#else ldrb r0, [r0, #0xda] +#endif bl AreLateGameTrapsEnabled cmp r0, #0 bne _022EEB60 @@ -601,7 +747,11 @@ _022EEB94: ldr r0, _022EED1C ; =DUNGEON_PTR mov r1, #0x1c ldr r0, [r0] +#ifdef JAPAN + add r0, r0, #0x244 +#else add r0, r0, #0x2e8 +#endif add r0, r0, #0xec00 mla r0, r2, r1, r0 ldrsh r3, [r0, #2] @@ -711,9 +861,15 @@ _022EED14: ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _022EED1C: .word DUNGEON_PTR +#ifdef JAPAN +_022EED20: .word 0x00000BAD +_022EED24: .word 0x00000BAE +_022EED28: .word 0x00000BAF +#else _022EED20: .word 0x00000E6B _022EED24: .word 0x00000E6C _022EED28: .word 0x00000E6D +#endif arm_func_end ApplyPokemonTrapEffect arm_func_start ApplyTripTrapEffect @@ -798,9 +954,16 @@ _022EEE4C: .word DISPLACEMENTS_WITHIN_2_SMALLEST_FIRST arm_func_start ApplyStealthRockTrapEffect ApplyStealthRockTrapEffect: ; 0x022EEE50 +#ifdef JAPAN + stmdb sp!, {r4, r5, r6, lr} + movs r4, r1 + mov r6, r0 + ldmeqia sp!, {r4, r5, r6, pc} +#else stmdb sp!, {r3, r4, r5, lr} movs r4, r1 ldmeqia sp!, {r3, r4, r5, pc} +#endif mov r0, r4 mov r1, #0xd ldr r5, [r4, #0xb4] @@ -824,6 +987,18 @@ ApplyStealthRockTrapEffect: ; 0x022EEE50 mov r1, r1, asr #8 mov r2, #0x16 bl ApplyDamageAndEffectsWrapper +#ifdef JAPAN + ldmia sp!, {r4, r5, r6, pc} +_022EEEBC: + mov r0, #0 + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r0, r6 + mov r1, #0xbb0 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r4, r5, r6, pc} +#else ldmia sp!, {r3, r4, r5, pc} _022EEEBC: mov r0, #0 @@ -834,13 +1009,17 @@ _022EEEBC: mov r0, r4 bl LogMessageByIdWithPopupCheckUser ldmia sp!, {r3, r4, r5, pc} +#endif .align 2, 0 _022EEEDC: .word 0x000003E7 _022EEEE0: .word ov10_022C4770 _022EEEE4: .word 0x0000026D +#ifndef JAPAN _022EEEE8: .word 0x00000E6E +#endif arm_func_end ApplyStealthRockTrapEffect +#ifndef JAPAN arm_func_start ApplyToxicSpikesTrapEffect ApplyToxicSpikesTrapEffect: ; 0x022EEEEC stmdb sp!, {r3, r4, r5, lr} @@ -866,15 +1045,25 @@ ApplyToxicSpikesTrapEffect: ; 0x022EEEEC .align 2, 0 _022EEF3C: .word ov10_022C45CC arm_func_end ApplyToxicSpikesTrapEffect +#endif arm_func_start ApplyRandomTrapEffect ApplyRandomTrapEffect: ; 0x022EEF40 +#ifdef JAPAN +#define APPLY_RANDOM_TRAP_EFFECT_OFFSET -4 +#else +#define APPLY_RANDOM_TRAP_EFFECT_OFFSET 0 +#endif +#ifdef JAPAN + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} +#else stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x64 +#endif + sub sp, sp, #0x64 + APPLY_RANDOM_TRAP_EFFECT_OFFSET movs sb, r2 - str r0, [sp, #0xc] + str r0, [sp, #0xc + APPLY_RANDOM_TRAP_EFFECT_OFFSET] mov sl, r1 - str r3, [sp, #0x10] + str r3, [sp, #0x10 + APPLY_RANDOM_TRAP_EFFECT_OFFSET] ldr r8, [sp, #0x88] beq _022EF064 bl ov29_022E7A8C @@ -888,27 +1077,33 @@ ApplyRandomTrapEffect: ; 0x022EEF40 mov r2, r4 bl ov29_022E58B0 str r8, [sp] +#ifndef JAPAN str r4, [sp, #4] mov r4, #1 - ldr r0, [sp, #0xc] - ldr r3, [sp, #0x10] +#endif + ldr r0, [sp, #0xc + APPLY_RANDOM_TRAP_EFFECT_OFFSET] + ldr r3, [sp, #0x10 + APPLY_RANDOM_TRAP_EFFECT_OFFSET] mov r1, sl mov r2, sb - str r4, [sp, #8] + str r4, [sp, #8 + APPLY_RANDOM_TRAP_EFFECT_OFFSET] bl ApplyTrapEffect b _022EF064 _022EEFB0: ldr r0, [sb, #0xb4] mov r5, #0 ldrb fp, [r0, #6] - str sb, [sp, #0x14] + str sb, [sp, #0x14 + APPLY_RANDOM_TRAP_EFFECT_OFFSET] add r7, r5, #1 _022EEFC4: ldr r0, _022EF070 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r6, [r0, #0xad4] +#else ldr r6, [r0, #0xb78] +#endif mov r0, r6 bl EntityIsValid__022EE348 cmp r0, #0 @@ -917,7 +1112,7 @@ _022EEFC4: ldr r0, [r6, #0xb4] ldrb r0, [r0, #6] cmp fp, r0 - addeq r0, sp, #0x14 + addeq r0, sp, #0x14 + APPLY_RANDOM_TRAP_EFFECT_OFFSET streq r6, [r0, r7, lsl #2] addeq r7, r7, #1 _022EF004: @@ -925,7 +1120,7 @@ _022EF004: cmp r5, #0x14 blt _022EEFC4 mov sb, #0 - add r5, sp, #0x14 + add r5, sp, #0x14 + APPLY_RANDOM_TRAP_EFFECT_OFFSET mov fp, #1 b _022EF05C _022EF020: @@ -935,21 +1130,31 @@ _022EF020: add r1, r6, #4 bl ov29_022E58B0 str r8, [sp] - ldr r0, [sp, #0xc] - ldr r3, [sp, #0x10] + ldr r0, [sp, #0xc + APPLY_RANDOM_TRAP_EFFECT_OFFSET] + ldr r3, [sp, #0x10 + APPLY_RANDOM_TRAP_EFFECT_OFFSET] mov r2, r6 mov r1, sl +#ifdef JAPAN + str r4, [sp, #4] + bl ApplyTrapEffect + mov r0, fp +#else stmib sp, {r4, fp} bl ApplyTrapEffect mov r0, #1 +#endif bl AnimationDelayOrSomething add sb, sb, #1 _022EF05C: cmp sb, r7 blt _022EF020 _022EF064: - add sp, sp, #0x64 + add sp, sp, #0x64 + APPLY_RANDOM_TRAP_EFFECT_OFFSET +#ifdef JAPAN + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +#else ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +#endif .align 2, 0 _022EF06C: .word ov10_022C4B18 _022EF070: .word DUNGEON_PTR @@ -958,12 +1163,20 @@ _022EF070: .word DUNGEON_PTR arm_func_start ApplyGrudgeTrapEffect ApplyGrudgeTrapEffect: ; 0x022EF074 stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} +#ifdef JAPAN + mov r6, r0 +#else mov sl, r0 +#endif mov r0, #3 mov r4, r1 bl DungeonRandInt mov r2, r0 +#ifdef JAPAN + mov r0, r6 +#else mov r0, sl +#endif mov r1, r4 add r2, r2, #2 bl ov29_022EF4B4 @@ -973,6 +1186,37 @@ ApplyGrudgeTrapEffect: ; 0x022EF074 mov r0, r4 bl ov29_022E56D4 _022EF0B0: +#ifdef JAPAN + mov r4, #0 + ldr r7, _022EF14C ; =DUNGEON_PTR + mov r5, r4 + mov r8, #1 + mov sb, r4 +_022F06BC: + ldr r0, [r7] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr sl, [r0, #0xa94] + mov r0, sl + bl EntityIsValid__022EE348 + cmp r0, #0 + beq _022F06F4 + mov r0, sl + mov r1, sl + mov r2, sb + bl TryInflictGrudgeStatus + cmp r0, #0 + movne r4, r8 +_022F06F4: + add r5, r5, #1 + cmp r5, #0x10 + blt _022F06BC + cmp r4, #0 + ldrne r0, _022F0728 ; =0x00000BB1 + ldreq r0, _022F072C ; =0x00000BB2 + mov r1, r0, lsl #0x10 + mov r0, r6 +#else mov r7, #0 ldr r4, _022EF14C ; =DUNGEON_PTR mov r8, r7 @@ -1010,13 +1254,19 @@ _022EF11C: moveq r0, #0xe70 mov r1, r0, lsl #0x10 mov r0, sl +#endif mov r1, r1, lsr #0x10 bl LogMessageByIdWithPopupCheckUser ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} .align 2, 0 _022EF148: .word 0x0000030F _022EF14C: .word DUNGEON_PTR +#ifdef JAPAN +_022F0728: .word 0x00000BB1 +_022F072C: .word 0x00000BB2 +#else _022EF150: .word 0x00000E6F +#endif arm_func_end ApplyGrudgeTrapEffect arm_func_start ApplyTrapEffect @@ -1088,10 +1338,16 @@ _022EF234: mov r4, #1 b _022EF454 _022EF248: +#ifdef JAPAN + mov r0, r6 + mov r1, r5 + mov r2, r3 +#else mov r2, r3 ldrb r3, [sp, #0x28] mov r0, r6 mov r1, r5 +#endif bl ApplyPitfallTrapEffect b _022EF454 _022EF260: @@ -1220,9 +1476,25 @@ _022EF408: bl ApplyStealthRockTrapEffect b _022EF454 _022EF418: +#ifdef JAPAN + cmp r5, #0 + beq _022EF454 + ldr r1, _022F0A78 ; =0x022C5CB4 + mov r0, r5 + ldrsh r1, [r1] + mov r2, #0x15 + mov r3, #0x26c + bl ApplyDamageAndEffectsWrapper + mov r0, r6 + mov r1, r5 + mov r2, #1 + mov r3, r4 + bl TryInflictPoisonedStatus +#else mov r0, r6 mov r1, r5 bl ApplyToxicSpikesTrapEffect +#endif b _022EF454 _022EF428: mov r0, r6 @@ -1249,6 +1521,9 @@ _022EF468: .word ov10_022C45C8 _022EF46C: .word 0x00000252 _022EF470: .word ov10_022C4418 _022EF474: .word 0x00000245 +#ifdef JAPAN +_022F0A78: .word ov10_022C45CC +#endif arm_func_end ApplyTrapEffect arm_func_start ov29_022EF478 @@ -1400,7 +1675,11 @@ _022EF65C: ldr r0, _022EF6F4 ; =DUNGEON_PTR mov r1, #0x1c ldr r0, [r0] +#ifdef JAPAN + add r0, r0, #0x244 +#else add r0, r0, #0x2e8 +#endif add r0, r0, #0xec00 mla r4, r7, r1, r0 ldrsh r0, [r4, #4] @@ -1443,8 +1722,13 @@ _022EF6E4: ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 _022EF6F4: .word DUNGEON_PTR +#ifdef JAPAN +_022EF6F8: .word 0x00000B43 +_022EF6FC: .word 0x00000B44 +#else _022EF6F8: .word 0x00000E02 _022EF6FC: .word 0x00000E03 +#endif arm_func_end RevealTrapsNearby arm_func_start ov29_022EF700 @@ -1468,6 +1752,11 @@ _022EF730: arm_func_start ov29_022EF738 ov29_022EF738: ; 0x022EF738 +#ifdef JAPAN +#define OV29_022EF738_OFFSET -0xA4 +#else +#define OV29_022EF738_OFFSET 0 +#endif stmdb sp!, {r3, lr} bl IsFullFloorFixedRoom cmp r0, #0 @@ -1477,21 +1766,21 @@ ov29_022EF738: ; 0x022EF738 ldr r0, [r0] ldr r2, _022EF79C ; =ov10_022C6C7A add r0, r0, #0x4000 - ldrb r3, [r0, #0xda] + ldrb r3, [r0, #0xda + OV29_022EF738_OFFSET] smulbb r1, r3, r1 ldrb r1, [r2, r1] cmp r1, #0 movne r1, #2 - strneb r1, [r0, #0xca] + strneb r1, [r0, #0xca + OV29_022EF738_OFFSET] moveq r1, #1 - streqb r1, [r0, #0xca] + streqb r1, [r0, #0xca + OV29_022EF738_OFFSET] ldmia sp!, {r3, pc} _022EF780: ldr r0, _022EF798 ; =DUNGEON_PTR mov r1, #0 ldr r0, [r0] add r0, r0, #0x4000 - strb r1, [r0, #0xca] + strb r1, [r0, #0xca + OV29_022EF738_OFFSET] ldmia sp!, {r3, pc} .align 2, 0 _022EF798: .word DUNGEON_PTR diff --git a/asm/overlay_29_022EF7C4.s b/asm/overlay_29_022EF7C4.s index dd1c40ff..d5d23d36 100644 --- a/asm/overlay_29_022EF7C4.s +++ b/asm/overlay_29_022EF7C4.s @@ -13,7 +13,11 @@ ov29_022EF7C4: ; 0x022EF7C4 ldr r4, _022EF89C ; =DUNGEON_PTR ldr r0, [r4] add r0, r0, #0x4000 +#ifdef JAPAN + ldrb r0, [r0, #0x26] +#else ldrb r0, [r0, #0xca] +#endif cmp r0, #0 cmpne r0, #1 cmpne r0, #3 @@ -25,7 +29,11 @@ _022EF804: ldr r0, [r4] add r0, r0, r6, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr sb, [r0, #0xa94] +#else ldr sb, [r0, #0xb38] +#endif cmp r8, sb beq _022EF840 mov r0, sb @@ -71,6 +79,11 @@ _022EF8A0: .word 0x000003E7 arm_func_start ov29_022EF8A4 ov29_022EF8A4: ; 0x022EF8A4 +#ifdef JAPAN +#define OV29_022EF8A4_OFFSET -0xA4 +#else +#define OV29_022EF8A4_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} mov r8, #1 ldr r5, _022EF934 ; =DUNGEON_PTR @@ -81,7 +94,7 @@ _022EF8BC: ldr r0, [r5] add r0, r0, r8, lsl #2 add r0, r0, #0x12000 - ldr sb, [r0, #0xb28] + ldr sb, [r0, #0xb28 + OV29_022EF8A4_OFFSET] cmp sb, #0 beq _022EF918 mov r0, sb @@ -90,9 +103,9 @@ _022EF8BC: ldrne r0, [r5] addne r0, r0, r8, lsl #2 addne r0, r0, #0xcc00 - ldrnesh r1, [r0, #0xec] + ldrnesh r1, [r0, #0xec + OV29_022EF8A4_OFFSET] cmpne r1, r4 - ldrnesh r2, [r0, #0xee] + ldrnesh r2, [r0, #0xee + OV29_022EF8A4_OFFSET] cmpne r2, r4 beq _022EF918 mov r0, sb @@ -123,7 +136,11 @@ _022EF948: ldr r0, [r5] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r7, [r0, #0xa84] +#else ldr r7, [r0, #0xb28] +#endif cmp r7, #0 beq _022EF99C mov r0, r7 @@ -133,7 +150,11 @@ _022EF948: ldr r0, [r5] add r0, r0, r4 add r0, r0, #0xc000 +#ifdef JAPAN + ldrb r1, [r0, #0xc68] +#else ldrb r1, [r0, #0xd0c] +#endif mov r0, r7 cmp r1, #0xff beq _022EF994 @@ -260,7 +281,11 @@ _022EFAD8: ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 _022EFAE0: .word DUNGEON_PTR +#ifdef JAPAN +_022EFAE4: .word 0x0002862C +#else _022EFAE4: .word 0x000286D0 +#endif arm_func_end TryActivateIqBooster arm_func_start ov29_022EFAE8 @@ -978,7 +1003,11 @@ ov29_022F04F0: ; 0x022F04F0 cmp r0, #0 movne r0, #1 strneb r0, [r5, #0xb3] +#ifdef JAPAN + strneb r0, [r4, #0x16d] +#else strneb r0, [r4, #0x171] +#endif ldmia sp!, {r3, r4, r5, pc} arm_func_end ov29_022F04F0 @@ -988,7 +1017,11 @@ ov29_022F0518: ; 0x022F0518 mov r1, #0 ldr ip, _022F0530 ; =sub_0201D198 add r0, r0, #0x2c +#ifdef JAPAN + strb r1, [r2, #0x16d] +#else strb r1, [r2, #0x171] +#endif bx ip .align 2, 0 _022F0530: .word sub_0201D198 @@ -1004,7 +1037,11 @@ _022F0544: ldr r0, [r4] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r6, [r0, #0xad4] +#else ldr r6, [r0, #0xb78] +#endif mov r0, r6 bl EntityIsValid__022F0590 cmp r0, #0 diff --git a/asm/overlay_29_022F05B4.s b/asm/overlay_29_022F05B4.s index 6d8a51b9..914e7d04 100644 --- a/asm/overlay_29_022F05B4.s +++ b/asm/overlay_29_022F05B4.s @@ -94,7 +94,11 @@ _022F06A4: ldr r0, [r8] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr sl, [r0, #0xa84] +#else ldr sl, [r0, #0xb28] +#endif mov r0, sl bl EntityIsValid__022F0590 cmp r0, #0 @@ -192,7 +196,11 @@ _022F07E8: ldr r0, [r5] add r0, r0, r6, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r7, [r0, #0xad4] +#else ldr r7, [r0, #0xb78] +#endif mov r0, r7 bl EntityIsValid__022F0590 cmp r0, #0 @@ -448,9 +456,15 @@ ov29_022F0B10: ; 0x022F0B10 mov r3, #0x400 bl PreprocessString mov r1, #4 +#ifdef JAPAN + mov r0, r4 + mov r2, r1 + rsb r3, r1, #0x430 +#else ldr r3, _022F0B88 ; =0x00000225 mov r0, r4 mov r2, r1 +#endif bl sub_02026268 mov r0, r4 mov r1, #0xa @@ -463,7 +477,9 @@ ov29_022F0B10: ; 0x022F0B10 ldmia sp!, {r3, r4, pc} .align 2, 0 _022F0B84: .word ov29_023526B8 +#ifndef JAPAN _022F0B88: .word 0x00000225 +#endif arm_func_end ov29_022F0B10 arm_func_start GetLeaderAction @@ -585,7 +601,11 @@ ov29_022F0C98: ; 0x022F0C98 mov r0, #1 strb r0, [r2] add r1, r1, #0x1a000 +#ifdef JAPAN + strb r0, [r1, #0x1a5] +#else strb r0, [r1, #0x249] +#endif bl ov29_0234B1A4 mov r0, #1 bl ov29_02338F58 @@ -696,7 +716,11 @@ _022F0E64: ldr r1, [r1] mov r2, #0 add r1, r1, #0x1a000 +#ifdef JAPAN + strb r2, [r1, #0x1a5] +#else strb r2, [r1, #0x249] +#endif bl sub_0204AEB0 ldr r0, _022F0ECC ; =ov29_0237CFBB mov r1, #1 @@ -721,13 +745,24 @@ _022F0ED8: .word 0x00003F03 arm_func_start SetLeaderAction SetLeaderAction: ; 0x022F0EDC +#ifdef JAPAN +#define SET_LEADER_ACTION_OFFSET -4 +#define SET_LEADER_ACTION_DATA_OFFSET -0x2C1 +#else +#define SET_LEADER_ACTION_OFFSET 0 +#define SET_LEADER_ACTION_DATA_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0xdc ldr r1, _022F1DDC ; =DUNGEON_PTR add r0, sp, #0xb6 ldr r2, [r1] mov r1, #5 +#ifdef JAPAN + add r2, r2, #0x178 +#else add r2, r2, #0x21c +#endif add r5, r2, #0x1a000 mov r2, #3 str r2, [sp, #0x68] @@ -742,8 +777,10 @@ SetLeaderAction: ; 0x022F0EDC mov r1, #1 mov r2, r1 bl TryPointCameraToMonster +#ifndef JAPAN bl GetLeader bl ov29_022FB538 +#endif bl GetLeader bl ov29_022FF3F4 cmp r0, #0 @@ -857,7 +894,11 @@ _022F10AC: sub r0, r0, #1 str r0, [sp, #0x88] ldr r0, _022F1DE8 ; =0x00000BA3 +#ifdef JAPAN + sub r0, r0, #3 +#else sub r0, r0, #2 +#endif str r0, [sp, #0x84] ldr r0, _022F1DE8 ; =0x00000BA3 sub r0, r0, #5 @@ -1028,11 +1069,11 @@ _022F1344: beq _022F13B0 _022F1364: ldr r0, [sp, #0x8c] - ldrh r1, [r0, #0x46] + ldrh r1, [r0, #0x46 + SET_LEADER_ACTION_OFFSET] ldr r0, [sp, #0x70] strh r1, [r0] ldr r0, [sp, #0x8c] - ldrh r1, [r0, #0x48] + ldrh r1, [r0, #0x48 + SET_LEADER_ACTION_OFFSET] ldr r0, [sp, #0x70] strh r1, [r0, #2] ldr r0, [r0] @@ -1483,11 +1524,11 @@ _022F19DC: tst r0, #2 beq _022F1A64 ldr r0, [sp, #0x8c] - ldrh r1, [r0, #0x46] + ldrh r1, [r0, #0x46 + SET_LEADER_ACTION_OFFSET] ldr r0, [sp, #0x70] strh r1, [r0] ldr r0, [sp, #0x8c] - ldrh r1, [r0, #0x48] + ldrh r1, [r0, #0x48 + SET_LEADER_ACTION_OFFSET] ldr r0, [sp, #0x70] strh r1, [r0, #2] ldr r0, [r0] @@ -1529,14 +1570,14 @@ _022F1AA0: b _022F1AF4 _022F1AC4: add r0, sb, r4, lsl #3 - ldrb r0, [r0, #0x124] + ldrb r0, [r0, #0x124 + SET_LEADER_ACTION_OFFSET] tst r0, #1 movne r0, r2 moveq r0, r1 tst r0, #0xff beq _022F1AF0 add r0, sb, r4, lsl #3 - ldrb r0, [r0, #0x124] + ldrb r0, [r0, #0x124 + SET_LEADER_ACTION_OFFSET] tst r0, #8 bne _022F1AFC _022F1AF0: @@ -1561,13 +1602,13 @@ _022F1B20: b _022F1B5C _022F1B30: add r0, sb, r3, lsl #3 - ldrb r0, [r0, #0x124] + ldrb r0, [r0, #0x124 + SET_LEADER_ACTION_OFFSET] tst r0, #1 movne r0, r2 moveq r0, r1 tst r0, #0xff addne r0, sb, r3, lsl #3 - ldrneb r0, [r0, #0x12a] + ldrneb r0, [r0, #0x12a + SET_LEADER_ACTION_OFFSET] cmpne r0, #0 bne _022F1B64 add r3, r3, #1 @@ -1598,12 +1639,12 @@ _022F1BA8: cmp r7, r4 beq _022F1BC0 add r0, sb, r7, lsl #3 - ldrb r0, [r0, #0x124] + ldrb r0, [r0, #0x124 + SET_LEADER_ACTION_OFFSET] tst r0, #2 beq _022F1BE0 _022F1BC0: add r0, sb, r7, lsl #3 - ldrb r0, [r0, #0x12a] + ldrb r0, [r0, #0x12a + SET_LEADER_ACTION_OFFSET] cmp r0, #0 movne r1, #1 bne _022F1BE0 @@ -1625,7 +1666,7 @@ _022F1C04: bl sub_0204AF20 cmp r0, #0 beq _022F1C28 - add r1, sb, #0x124 + add r1, sb, #0x124 + SET_LEADER_ACTION_OFFSET mov r0, r6 add r1, r1, r7, lsl #3 bl ov29_022F0C3C @@ -1753,12 +1794,12 @@ _022F1DB0: _022F1DDC: .word DUNGEON_PTR _022F1DE0: .word DIRECTIONS_XY _022F1DE4: .word ov29_0237C9A4 -_022F1DE8: .word 0x00000BA3 +_022F1DE8: .word 0x00000BA3 + SET_LEADER_ACTION_DATA_OFFSET _022F1DEC: .word ov29_0237C6A4 _022F1DF0: .word ov29_0237C694 -_022F1DF4: .word 0x00000B9A -_022F1DF8: .word 0x00000B9B -_022F1DFC: .word 0x00000B9C +_022F1DF4: .word 0x00000B9A + SET_LEADER_ACTION_DATA_OFFSET +_022F1DF8: .word 0x00000B9B + SET_LEADER_ACTION_DATA_OFFSET +_022F1DFC: .word 0x00000B9C + SET_LEADER_ACTION_DATA_OFFSET _022F1E00: .word 0x00000708 _022F1E04: ldr r0, _022F1DF0 ; =ov29_0237C694 @@ -2009,7 +2050,7 @@ _022F2180: ldr r0, _022F1DDC ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x1a000 - ldrb r0, [r0, #0x23e] + ldrb r0, [r0, #0x23e + SET_LEADER_ACTION_OFFSET] cmp r0, #0 bne _022F21B4 ldr r0, _022F1DF0 ; =ov29_0237C694 @@ -2384,10 +2425,10 @@ _022F26B8: strh r1, [sl] ldr r1, [sp, #0x14] ldrsh r1, [r1, #4] - strh r1, [r2, #0x7e] + strh r1, [r2, #0x7e + SET_LEADER_ACTION_OFFSET] ldr r1, [sp, #0x14] ldrsh r1, [r1, #6] - strh r1, [r2, #0x80] + strh r1, [r2, #0x80 + SET_LEADER_ACTION_OFFSET] ldr r1, _022F1DDC ; =DUNGEON_PTR ldr r2, [r1] mov r1, r0 @@ -2409,13 +2450,21 @@ _022F2748: andeq r8, r0, #0xff beq _022F27C8 cmp r0, #5 +#ifdef JAPAN + ldreq r0, [sp, #0x84] +#else moveq r0, #0xba0 +#endif streq r0, [sp, #0x24] orreq r0, r8, #1 andeq r8, r0, #0xff beq _022F27C8 cmp r0, #3 +#ifdef JAPAN + moveq r0, #0x8e0 +#else ldreq r0, [sp, #0x84] +#endif streq r0, [sp, #0x24] orreq r0, r8, #1 andeq r8, r0, #0xff @@ -2490,10 +2539,10 @@ _022F289C: cmpeq r0, #0 beq _022F2904 add r0, sb, #0x100 - ldrh r1, [r0, #0x46] + ldrh r1, [r0, #0x46 + SET_LEADER_ACTION_OFFSET] sub r2, sp, #4 strh r1, [r2] - ldrh r0, [r0, #0x48] + ldrh r0, [r0, #0x48 + SET_LEADER_ACTION_OFFSET] strh r0, [r2, #2] ldr r0, [r2] bl CeilFixedPoint @@ -2698,7 +2747,11 @@ ov29_022F2B74: ; 0x022F2B74 ldr r8, _022F2FC0 ; =ov29_0237C9A4 ldr r1, [r1] ldrb r2, [r8, #1] +#ifdef JAPAN + add r1, r1, #0x178 +#else add r1, r1, #0x21c +#endif str r0, [sp] cmp r2, #0 add r5, r1, #0x1a000 @@ -3207,7 +3260,11 @@ _022F32DC: ldreq r0, _022F35D4 ; =DUNGEON_PTR ldreq r0, [r0] addeq r0, r0, #0x1a000 +#ifdef JAPAN + ldreqb r0, [r0, #0x1a0] +#else ldreqb r0, [r0, #0x244] +#endif cmpeq r0, #0 beq _022F3368 mov r0, #0 @@ -3226,7 +3283,11 @@ _022F3324: ldreq r0, _022F35D4 ; =DUNGEON_PTR ldreq r0, [r0] addeq r0, r0, #0x1a000 +#ifdef JAPAN + ldreqb r0, [r0, #0x1a0] +#else ldreqb r0, [r0, #0x244] +#endif cmpeq r0, #0 movne r0, #0 bne _022F35CC @@ -3767,12 +3828,17 @@ _022F3A6C: bl ov29_022F9EA0 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +#define CHANGE_LEADER_OFFSET -0x2C1 +#else +#define CHANGE_LEADER_OFFSET 0 +#endif _022F3AE4: .word DUNGEON_PTR -_022F3AE8: .word 0x00000BA4 -_022F3AEC: .word 0x00000BA5 -_022F3AF0: .word 0x00000BA6 +_022F3AE8: .word 0x00000BA4 + CHANGE_LEADER_OFFSET +_022F3AEC: .word 0x00000BA5 + CHANGE_LEADER_OFFSET +_022F3AF0: .word 0x00000BA6 + CHANGE_LEADER_OFFSET _022F3AF4: .word LEADER_PTR -_022F3AF8: .word 0x00000BA7 +_022F3AF8: .word 0x00000BA7 + CHANGE_LEADER_OFFSET arm_func_end ChangeLeader arm_func_start ov29_022F3AFC @@ -4034,7 +4100,11 @@ _022F3E88: ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _022F3E90: .word ov29_0237C9A4 +#ifdef JAPAN +_022F3E94: .word 0x000008E7 +#else _022F3E94: .word 0x00000BA8 +#endif _022F3E98: .word ov29_0237C6A4 _022F3E9C: .word ov29_0237C694 arm_func_end ov29_022F3B98 @@ -4188,8 +4258,13 @@ _022F40A4: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 _022F40AC: .word DUNGEON_PTR +#ifdef JAPAN +_022F40B0: .word 0x0001A180 +_022F40B4: .word 0x0001A182 +#else _022F40B0: .word 0x0001A224 _022F40B4: .word 0x0001A226 +#endif arm_func_end ov29_022F3EA0 arm_func_start ov29_022F40B8 @@ -4326,7 +4401,11 @@ ov29_022F426C: ; 0x022F426C mov r4, r0 ldr r0, [r1] add r0, r0, #0x1a000 +#ifdef JAPAN + ldrb r0, [r0, #0x19a] +#else ldrb r0, [r0, #0x23e] +#endif cmp r0, #0 movne r0, #0 ldmneia sp!, {r4, r5, r6, pc} @@ -4498,13 +4577,18 @@ _022F4494: bl LogMessageByIdWithPopupCheckUser ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +#define OV29_022F4370_OFFSET -0x2C1 +#else +#define OV29_022F4370_OFFSET 0 +#endif _022F44D4: .word BAG_ITEMS_PTR_MIRROR -_022F44D8: .word 0x00000BA9 +_022F44D8: .word 0x00000BA9 + OV29_022F4370_OFFSET _022F44DC: .word 0x00003F07 -_022F44E0: .word 0x00000BAA -_022F44E4: .word 0x00000BAB -_022F44E8: .word 0x00000BAC -_022F44EC: .word 0x00000BAE +_022F44E0: .word 0x00000BAA + OV29_022F4370_OFFSET +_022F44E4: .word 0x00000BAB + OV29_022F4370_OFFSET +_022F44E8: .word 0x00000BAC + OV29_022F4370_OFFSET +_022F44EC: .word 0x00000BAE + OV29_022F4370_OFFSET arm_func_end ov29_022F4370 arm_func_start ov29_022F44F0 @@ -4566,9 +4650,15 @@ _022F45B0: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _022F45BC: .word BAG_ITEMS_PTR_MIRROR +#ifdef JAPAN +_022F45C0: .word 0x000008E8 +_022F45C4: .word 0x00003F07 +_022F45C8: .word 0x000008EC +#else _022F45C0: .word 0x00000BA9 _022F45C4: .word 0x00003F07 _022F45C8: .word 0x00000BAD +#endif arm_func_end ov29_022F44F0 arm_func_start ov29_022F45CC @@ -4608,8 +4698,13 @@ ov29_022F45CC: ; 0x022F45CC mov r1, r5 mov r0, #1 bl ov29_02344B44 +#ifdef JAPAN + ldr r1, _022F5EB8 ; =0x000008EF + mov r0, sl +#else mov r0, sl mov r1, #0xbb0 +#endif bl LogMessageByIdWithPopupCheckUser b _022F48B8 _022F4668: @@ -4768,17 +4863,29 @@ _022F4878: ldr r1, [r1] mov r0, sl add r1, r1, #0x4000 +#ifdef JAPAN + ldrb r1, [r1, #0x20] +#else ldrb r1, [r1, #0xc4] +#endif bl TryTriggerMonsterHouse _022F48B8: add sp, sp, #0x14 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} .align 2, 0 -_022F48C0: .word 0x00000BAF +#ifdef JAPAN +#define OV29_022F45CC_OFFSET -0x2C1 +#else +#define OV29_022F45CC_OFFSET 0 +#endif +#ifdef JAPAN +_022F5EB8: .word 0x000008EF +#endif +_022F48C0: .word 0x00000BAF + OV29_022F45CC_OFFSET _022F48C4: .word 0x00001317 -_022F48C8: .word 0x00000BB2 -_022F48CC: .word 0x00000BAE -_022F48D0: .word 0x00000BB3 +_022F48C8: .word 0x00000BB2 + OV29_022F45CC_OFFSET +_022F48CC: .word 0x00000BAE + OV29_022F45CC_OFFSET +_022F48D0: .word 0x00000BB3 + OV29_022F45CC_OFFSET _022F48D4: .word DUNGEON_PTR arm_func_end ov29_022F45CC @@ -4843,15 +4950,25 @@ _022F4928: ldr r1, [r1] mov r0, r6 add r1, r1, #0x4000 +#ifdef JAPAN + ldrb r1, [r1, #0x20] +#else ldrb r1, [r1, #0xc4] +#endif bl TryTriggerMonsterHouse _022F49C8: add sp, sp, #8 ldmia sp!, {r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_022F49D0: .word 0x000008ED +_022F49D4: .word 0x00001317 +_022F49D8: .word 0x000008F4 +#else _022F49D0: .word 0x00000BAE _022F49D4: .word 0x00001317 _022F49D8: .word 0x00000BB5 +#endif _022F49DC: .word DUNGEON_PTR arm_func_end ov29_022F48D8 @@ -4955,11 +5072,19 @@ _022F4B24: strltb r0, [r6, #1] blt _022F4B70 ldr r2, _022F4BD0 ; =DUNGEON_PTR +#ifdef JAPAN + mov r2, #0x23c + ldr r1, [r1] + add r1, r1, #0x3f4 + add r1, r1, #0x400 + mla r0, r2, r0, r1 +#else add r1, r0, r0, lsl #3 ldr r0, [r2] add r0, r0, #0x3f4 add r0, r0, #0x400 add r0, r0, r1, lsl #6 +#endif bl AddHeldItemToBag _022F4B70: bl RemoveEmptyItemsInBagWrapper @@ -4980,17 +5105,28 @@ _022F4B70: ldr r1, [r1] mov r0, r7 add r1, r1, #0x4000 +#ifdef JAPAN + ldrb r1, [r1, #0x20] +#else ldrb r1, [r1, #0xc4] +#endif bl TryTriggerMonsterHouse _022F4BC0: add sp, sp, #8 ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 _022F4BC8: .word 0x00001565 +#ifdef JAPAN +_022F4BCC: .word 0x000008ED +_022F4BD0: .word DUNGEON_PTR +_022F4BD4: .word 0x00001317 +_022F4BD8: .word 0x000008F5 +#else _022F4BCC: .word 0x00000BAE _022F4BD0: .word DUNGEON_PTR _022F4BD4: .word 0x00001317 _022F4BD8: .word 0x00000BB6 +#endif arm_func_end ov29_022F49E0 arm_func_start ov29_022F4BDC @@ -5000,7 +5136,11 @@ ov29_022F4BDC: ; 0x022F4BDC bl ov29_022EB568 ldr r0, [r0, #0xb4] mov r1, #1 +#ifdef JAPAN + strb r1, [r0, #0x108] +#else strb r1, [r0, #0x109] +#endif ldmia sp!, {r3, pc} arm_func_end ov29_022F4BDC @@ -5113,15 +5253,24 @@ _022F4D48: ldr r1, _022F4DA8 ; =DUNGEON_PTR ldr r1, [r1] add r1, r1, #0x4000 +#ifdef JAPAN + ldrb r1, [r1, #0x20] +#else ldrb r1, [r1, #0xc4] +#endif bl TryTriggerMonsterHouse ldmia sp!, {r4, r5, r6, pc} .align 2, 0 -_022F4D94: .word 0x00000BB7 -_022F4D98: .word 0x00000BAE -_022F4D9C: .word 0x00000BB8 +#ifdef JAPAN +#define OV29_022F4BF8_OFFSET -0x2C1 +#else +#define OV29_022F4BF8_OFFSET 0 +#endif +_022F4D94: .word 0x00000BB7 + OV29_022F4BF8_OFFSET +_022F4D98: .word 0x00000BAE + OV29_022F4BF8_OFFSET +_022F4D9C: .word 0x00000BB8 + OV29_022F4BF8_OFFSET _022F4DA0: .word 0x00001317 -_022F4DA4: .word 0x00000BB9 +_022F4DA4: .word 0x00000BB9 + OV29_022F4BF8_OFFSET _022F4DA8: .word DUNGEON_PTR arm_func_end ov29_022F4BF8 @@ -5179,8 +5328,13 @@ _022F4E48: mov r1, r7 mov r0, #1 bl ov29_02344B44 +#ifdef JAPAN + mov r0, r8 + mov r1, #0x8f0 +#else ldr r1, _022F5044 ; =0x00000BB1 mov r0, r8 +#endif bl LogMessageByIdWithPopupCheckUser b _022F5034 _022F4E84: @@ -5261,12 +5415,21 @@ _022F4F94: cmp r0, #0 blt _022F4FD0 ldr r1, _022F5050 ; =DUNGEON_PTR +#ifdef JAPAN + mov r1, #0x23c + ldr r3, [r2] + ldrh r2, [sp] + mla r1, r0, r1, r3 + add r0, r1, #0x800 + strh r2, [r0, #0x56] +#else add r0, r0, r0, lsl #3 ldr r2, [r1] ldrh r1, [sp] add r0, r2, r0, lsl #6 add r0, r0, #0x800 strh r1, [r0, #0x56] +#endif ldrh r1, [sp, #2] strh r1, [r0, #0x58] ldrh r1, [sp, #4] @@ -5292,7 +5455,11 @@ _022F4FDC: mov r0, r8 ldr r1, [r1] add r1, r1, #0x4000 +#ifdef JAPAN + ldrb r1, [r1, #0x20] +#else ldrb r1, [r1, #0xc4] +#endif bl TryTriggerMonsterHouse add r0, sp, #0 mov r1, r5 @@ -5302,14 +5469,21 @@ _022F5034: add sp, sp, #0xc ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} .align 2, 0 -_022F503C: .word 0x00000BBA -_022F5040: .word 0x00000BAE +#ifdef JAPAN +#define OV29_022F4DAC_OFFSET -0x2C1 +#else +#define OV29_022F4DAC_OFFSET 0 +#endif +_022F503C: .word 0x00000BBA + OV29_022F4DAC_OFFSET +_022F5040: .word 0x00000BAE + OV29_022F4DAC_OFFSET +#ifndef JAPAN _022F5044: .word 0x00000BB1 -_022F5048: .word 0x00000BBB -_022F504C: .word 0x00000BBC +#endif +_022F5048: .word 0x00000BBB + OV29_022F4DAC_OFFSET +_022F504C: .word 0x00000BBC + OV29_022F4DAC_OFFSET _022F5050: .word DUNGEON_PTR _022F5054: .word 0x00001317 -_022F5058: .word 0x00000BBD +_022F5058: .word 0x00000BBD + OV29_022F4DAC_OFFSET arm_func_end ov29_022F4DAC arm_func_start ov29_022F505C @@ -5345,8 +5519,13 @@ ov29_022F505C: ; 0x022F505C mov r1, r6 mov r0, #1 bl ov29_02344B44 +#ifdef JAPAN + mov r0, r7 + mov r1, #0x8f0 +#else ldr r1, _022F5274 ; =0x00000BB1 mov r0, r7 +#endif bl LogMessageByIdWithPopupCheckUser b _022F526C _022F50E8: @@ -5358,8 +5537,13 @@ _022F50E8: moveq r0, #0 tst r0, #0xff beq _022F5118 +#ifdef JAPAN + ldr r1, _022F686C ; =0x000008EF + mov r0, r7 +#else mov r0, r7 mov r1, #0xbb0 +#endif bl LogMessageByIdWithPopupCheckUser b _022F526C _022F5118: @@ -5447,7 +5631,11 @@ _022F522C: mov r0, r7 ldr r1, [r1] add r1, r1, #0x4000 +#ifdef JAPAN + ldrb r1, [r1, #0x20] +#else ldrb r1, [r1, #0xc4] +#endif bl TryTriggerMonsterHouse add r0, sp, #6 mov r1, r4 @@ -5457,10 +5645,19 @@ _022F526C: add sp, sp, #0xc ldmia sp!, {r4, r5, r6, r7, pc} .align 2, 0 +#ifdef JAPAN +#define OV29_022F505C_OFFSET -0x2C1 +#else +#define OV29_022F505C_OFFSET 0 +#endif +#ifdef JAPAN +_022F686C: .word 0x000008EF +#else _022F5274: .word 0x00000BB1 -_022F5278: .word 0x00000BBB -_022F527C: .word 0x00000BBC +#endif +_022F5278: .word 0x00000BBB + OV29_022F505C_OFFSET +_022F527C: .word 0x00000BBC + OV29_022F505C_OFFSET _022F5280: .word 0x00001317 -_022F5284: .word 0x00000BBD +_022F5284: .word 0x00000BBD + OV29_022F505C_OFFSET _022F5288: .word DUNGEON_PTR arm_func_end ov29_022F505C diff --git a/asm/overlay_29_022F52B0.s b/asm/overlay_29_022F52B0.s index df3c0b9f..2d1ab8b2 100644 --- a/asm/overlay_29_022F52B0.s +++ b/asm/overlay_29_022F52B0.s @@ -29,7 +29,11 @@ UseSingleUseItemWrapper: ; 0x022F52CC ldr ip, _022F52F4 ; =UseSingleUseItem add r1, r1, r2, lsl #2 add r1, r1, #0x12000 +#ifdef JAPAN + ldr r1, [r1, #0xa84] +#else ldr r1, [r1, #0xb28] +#endif bx ip .align 2, 0 _022F52F0: .word DUNGEON_PTR @@ -125,7 +129,11 @@ _022F5440: ldr r0, [r4] add r0, r0, r7, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr sl, [r0, #0xa84] +#else ldr sl, [r0, #0xb28] +#endif cmp sl, r8 beq _022F5484 mov r0, sl @@ -150,7 +158,11 @@ _022F5498: mov r0, sb ldr r1, [r1] add r1, r1, #0x4000 +#ifdef JAPAN + ldrb r1, [r1, #0x20] +#else ldrb r1, [r1, #0xc4] +#endif bl TryTriggerMonsterHouse _022F54B0: add sp, sp, #0x10 @@ -351,7 +363,11 @@ _022F5744: cmp r6, #8 blt _022F5744 mov r0, #4 +#ifdef JAPAN + strb r0, [r8, #0x175] +#else strb r0, [r8, #0x179] +#endif _022F577C: ldrsh r0, [sp, #0x10] bl GetItemCategoryVeneer @@ -378,8 +394,13 @@ _022F57A4: bl GetItemCategoryVeneer cmp r0, #0 bne _022F57E8 +#ifdef JAPAN + ldr r1, _022F6F84 ; =0x000008FF + mov r0, sb +#else mov r0, sb mov r1, #0xbc0 +#endif bl LogMessageByIdWithPopupCheckUser b _022F57F4 _022F57E8: @@ -432,7 +453,11 @@ _022F5880: cmp r0, #0 movne r0, #0 bne _022F58A0 +#ifdef JAPAN + add r0, r1, #0x224 +#else add r0, r1, #0x228 +#endif mov r1, #0x24 bl ExclusiveItemEffectFlagTest _022F58A0: @@ -492,16 +517,28 @@ _022F5944: mov r0, sb ldr r1, [r1] add r1, r1, #0x4000 +#ifdef JAPAN + ldrb r1, [r1, #0x20] +#else ldrb r1, [r1, #0xc4] +#endif bl TryTriggerMonsterHouse _022F5978: add sp, sp, #0x14 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} .align 2, 0 -_022F5980: .word 0x00000BAE -_022F5984: .word 0x00000BBE +#ifdef JAPAN +#define USE_THROWABLE_ITEM_OFFSET -0x2C1 +#else +#define USE_THROWABLE_ITEM_OFFSET 0 +#endif +_022F5980: .word 0x00000BAE + USE_THROWABLE_ITEM_OFFSET +_022F5984: .word 0x00000BBE + USE_THROWABLE_ITEM_OFFSET _022F5988: .word 0x00000103 -_022F598C: .word 0x00000BBF +#ifdef JAPAN +_022F6F84: .word 0x000008FF +#endif +_022F598C: .word 0x00000BBF + USE_THROWABLE_ITEM_OFFSET _022F5990: .word DUNGEON_PTR arm_func_end UseThrowableItem @@ -555,7 +592,11 @@ ov29_022F5A0C: ; 0x022F5A0C mov r2, #0 add r1, r1, r3, lsl #2 add r1, r1, #0x12000 +#ifdef JAPAN + ldr r1, [r1, #0xa84] +#else ldr r1, [r1, #0xb28] +#endif bl ov29_022F5A40 ldmia sp!, {r4, pc} .align 2, 0 @@ -564,15 +605,29 @@ _022F5A3C: .word DUNGEON_PTR arm_func_start ov29_022F5A40 ov29_022F5A40: ; 0x022F5A40 +#ifdef JAPAN +#define OV29_022F5A40_OFFSET -4 +#else +#define OV29_022F5A40_OFFSET 0 +#endif +#ifdef JAPAN + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} +#else stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 +#endif + sub sp, sp, #0x18 + OV29_022F5A40_OFFSET mov r6, r0 movs sl, r1 mov r5, r2 ldr r8, [r6, #0xb4] bne _022F5A70 +#ifdef JAPAN + mov r0, #0 + mov r1, #0x900 +#else ldr r1, _022F5D9C ; =0x00000BC1 mov r0, #0 +#endif mov r2, #1 bl DisplayMessage2 b _022F5D94 @@ -580,8 +635,13 @@ _022F5A70: bl ov29_023009CC cmp r0, #0 bne _022F5A90 +#ifdef JAPAN + mov r0, #0 + mov r1, #0x900 +#else ldr r1, _022F5D9C ; =0x00000BC1 mov r0, #0 +#endif mov r2, #1 bl DisplayMessage2 b _022F5D94 @@ -734,30 +794,48 @@ _022F5CA4: mov r0, sl mov r6, #0x14 bl ov29_0231AE3C +#ifdef JAPAN + mov r7, r0 +#else str r0, [sp, #4] ldr r0, _022F5DB4 ; =0x000004D3 sub fp, r0, #0x1b +#endif _022F5CBC: mov r0, sb bl GetPersonalityIndex +#ifdef JAPAN + mov fp, r0 + ldr r0, _022F5DB4 ; =0x000004D3 + cmp fp, r0 +#else mov r7, r0 cmp r7, fp ldrne r0, _022F5DB4 ; =0x000004D3 cmpne r7, r0 +#endif moveq r2, #0 beq _022F5CE8 ldrb r0, [r8, #0x48] bl ov29_0234CFA0 mov r2, r0 _022F5CE8: +#ifdef JAPAN + mov r0, fp +#else mov r0, r7 +#endif mov r1, r4 bl GetTalkLine mov r1, r0 mov r0, r5 bl GetStringFromFileVeneer +#ifdef JAPAN + cmp r7, #0 +#else ldr r0, [sp, #4] cmp r0, #0 +#endif bne _022F5D3C ldr r1, _022F5DB8 ; =ov29_02352750 mov r0, r5 @@ -785,23 +863,40 @@ _022F5D5C: mov r2, #0 _022F5D60: ldrsh r1, [sb, #4] - add r0, sp, #8 + add r0, sp, #8 + OV29_022F5A40_OFFSET bl InitPortraitDungeon - add r1, sp, #8 + add r1, sp, #8 + OV29_022F5A40_OFFSET mov r0, sl mov r2, r5 mov r3, #1 bl ov29_0234D304 b _022F5D94 _022F5D84: +#ifdef JAPAN + mov r0, #0 + mov r1, #0x900 +#else ldr r1, _022F5D9C ; =0x00000BC1 mov r0, #0 +#endif mov r2, #1 bl DisplayMessage2 _022F5D94: - add sp, sp, #0x18 + add sp, sp, #0x18 + OV29_022F5A40_OFFSET +#ifdef JAPAN + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +#else ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +#endif .align 2, 0 +#ifdef JAPAN +_022F5DA0: .word 0x00000901 +_022F5DA4: .word DUNGEON_PTR +_022F5DA8: .word 0x00000902 +_022F5DAC: .word 0x000003E7 +_022F5DB0: .word 0x000004F8 +_022F5DB4: .word 0x000004B8 +#else _022F5D9C: .word 0x00000BC1 _022F5DA0: .word 0x00000BC2 _022F5DA4: .word DUNGEON_PTR @@ -809,6 +904,7 @@ _022F5DA8: .word 0x00000BC3 _022F5DAC: .word 0x000003E7 _022F5DB0: .word 0x0000025E _022F5DB4: .word 0x000004D3 +#endif _022F5DB8: .word ov29_02352750 _022F5DBC: .word ov29_02352758 arm_func_end ov29_022F5A40 @@ -824,7 +920,11 @@ ov29_022F5DC0: ; 0x022F5DC0 mov r2, #0 add r1, r1, r3, lsl #2 add r1, r1, #0x12000 +#ifdef JAPAN + ldr r1, [r1, #0xa84] +#else ldr r1, [r1, #0xb28] +#endif bl ov29_022F5DF4 ldmia sp!, {r4, pc} .align 2, 0 @@ -872,10 +972,17 @@ _022F5E1C: addeq r5, r5, #1 _022F5E84: mov r2, #1 +#ifdef JAPAN + mov r0, #0 + mov r1, r5 + mov r3, r2 + str r0, [sp] +#else mov r1, r5 mov r3, r2 mov r0, #0 str r2, [sp] +#endif bl YesNoMenu cmp r0, #1 bne _022F5F04 @@ -893,7 +1000,7 @@ _022F5E84: mov r1, #0x25c mov r2, #0 bl HandleFaint -#ifndef EUROPE +#if !defined(EUROPE) && !defined(JAPAN) bl UpdateMapSurveyorFlag #endif bl ov29_022E8104 @@ -909,13 +1016,24 @@ _022F5F04: add sp, sp, #0x44 ldmia sp!, {r4, r5, r6, r7, pc} .align 2, 0 +#ifdef JAPAN +_022F5F0C: .word 0x00000903 +_022F5F10: .word 0x00000904 +_022F5F14: .word 0x00000909 +#else _022F5F0C: .word 0x00000BC4 _022F5F10: .word 0x00000BC5 _022F5F14: .word 0x00000BCA +#endif arm_func_end ov29_022F5DF4 arm_func_start ov29_022F5F18 ov29_022F5F18: ; 0x022F5F18 +#ifdef JAPAN +#define OV29_022F5F18_OFFSET -4 +#else +#define OV29_022F5F18_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} sub sp, sp, #4 mov sb, r0 @@ -926,7 +1044,11 @@ ov29_022F5F18: ; 0x022F5F18 ldr r0, _022F6050 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrb r0, [r0, #0x36] +#else ldrb r0, [r0, #0xda] +#endif bl AreMovesEnabled cmp r0, #0 bne _022F5F60 @@ -938,13 +1060,13 @@ _022F5F60: ldr r4, [sb, #0xb4] mov r1, r7 mov r0, sb - strb r1, [r4, #0x23f] + strb r1, [r4, #0x23f + OV29_022F5F18_OFFSET] bl ShouldUsePp cmp r0, #0 movne r7, #1 - strneb r7, [r4, #0x23f] + strneb r7, [r4, #0x23f + OV29_022F5F18_OFFSET] mov r0, #0 - strb r0, [r4, #0x23e] + strb r0, [r4, #0x23e + OV29_022F5F18_OFFSET] _022F5F88: mov r6, #0 mov r4, #1 @@ -961,9 +1083,9 @@ _022F5F9C: bl ov29_0232145C bl IsFloorOver cmp r0, #0 - ldreqb r0, [r8, #0x23e] + ldreqb r0, [r8, #0x23e + OV29_022F5F18_OFFSET] cmpeq r0, #0 - ldreqb r0, [r8, #0x163] + ldreqb r0, [r8, #0x163 + OV29_022F5F18_OFFSET] cmpeq r0, #0 bne _022F5FEC add r6, r6, #1 @@ -1004,11 +1126,20 @@ _022F6048: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} .align 2, 0 _022F6050: .word DUNGEON_PTR +#ifdef JAPAN +_022F6054: .word 0x00000B3D +#else _022F6054: .word 0x00000DFD +#endif arm_func_end ov29_022F5F18 arm_func_start ov29_022F6058 ov29_022F6058: ; 0x022F6058 +#ifdef JAPAN +#define OV29_022F6058_OFFSET -4 +#else +#define OV29_022F6058_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x14 mov sl, r0 @@ -1047,7 +1178,7 @@ _022F60D8: cmp sb, #0x160 moveq r8, #1 movne r8, #0 - strb r6, [r7, #0x163] + strb r6, [r7, #0x163 + OV29_022F6058_OFFSET] mov fp, r6 mov r5, #0xa add r4, sp, #0xc @@ -1055,7 +1186,7 @@ _022F60D8: _022F60FC: mov r0, sl bl ov29_022F3B8C - str fp, [r7, #0x18c] + str fp, [r7, #0x18c + OV29_022F6058_OFFSET] ldrb r1, [sp, #0xc] strb r5, [sp, #0x12] mov r0, sl @@ -1071,7 +1202,7 @@ _022F60FC: bl EntityIsValid__022F528C cmp r0, #0 beq _022F6168 - ldrb r0, [r7, #0x163] + ldrb r0, [r7, #0x163 + OV29_022F6058_OFFSET] cmp r0, #0 bne _022F6168 add r6, r6, #1 @@ -1123,9 +1254,15 @@ _022F61F0: ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _022F61F8: .word ov29_0237CA80 +#ifdef JAPAN +_022F61FC: .word 0x0000090B +_022F6200: .word 0x0000090C +_022F6204: .word 0x0000090D +#else _022F61FC: .word 0x00000BCC _022F6200: .word 0x00000BCD _022F6204: .word 0x00000BCE +#endif _022F6208: .word DIRECTIONS_XY _022F620C: .word ov29_0235171E arm_func_end ov29_022F6058 @@ -1145,7 +1282,11 @@ _022F6234: ldr r0, [r7] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r5, [r0, #0xa94] +#else ldr r5, [r0, #0xb38] +#endif mov r0, r5 bl EntityIsValid__022F62A8 cmp r0, #0 diff --git a/asm/overlay_29_022F62CC.s b/asm/overlay_29_022F62CC.s index 1a87c10e..33675d3c 100644 --- a/asm/overlay_29_022F62CC.s +++ b/asm/overlay_29_022F62CC.s @@ -58,7 +58,11 @@ _022F6388: ldr r0, [r7] add r0, r0, r8, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr sb, [r0, #0xa94] +#else ldr sb, [r0, #0xb38] +#endif mov r0, sb bl EntityIsValid__022F62A8 cmp r0, #0 @@ -128,7 +132,11 @@ _022F648C: ldr r0, [sb] add r0, r0, r8, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr sl, [r0, #0xa94] +#else ldr sl, [r0, #0xb38] +#endif mov r0, sl bl EntityIsValid__022F62A8 cmp r0, #0 @@ -299,9 +307,15 @@ _022F66F4: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _022F66FC: .word DUNGEON_PTR +#ifdef JAPAN +_022F6700: .word 0x00000B95 +_022F6704: .word ov29_02352760 +_022F6708: .word 0x00000B94 +#else _022F6700: .word 0x00000E53 _022F6704: .word ov29_02352760 _022F6708: .word 0x00000E52 +#endif arm_func_end ov29_022F62CC arm_func_start ov29_022F670C @@ -355,19 +369,34 @@ _022F67AC: bl ov29_022F6CAC b _022F67C4 _022F67B4: +#ifdef JAPAN + ldr r1, _022F7DB4 ; =0x00000B92 + add r0, sp, #0 +#else add r0, sp, #0 mov r1, #0xe50 +#endif mov r2, #1 bl DisplayMessage2 _022F67C4: add sp, sp, #0x10 ldmia sp!, {r4, pc} .align 2, 0 +#ifdef JAPAN +_022F67CC: .word 0x00000B93 +_022F7DB4: .word 0x00000B92 +#else _022F67CC: .word 0x00000E51 +#endif arm_func_end ov29_022F6748 arm_func_start ov29_022F67D0 ov29_022F67D0: ; 0x022F67D0 +#ifdef JAPAN +#define OV29_022F67D0_OFFSET -0xA4 +#else +#define OV29_022F67D0_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x24 ldr r1, _022F69EC ; =DUNGEON_PTR @@ -433,11 +462,11 @@ _022F6870: strh r3, [sp, #4] strh r2, [sp, #6] ldr sl, [r0, #0x7bc] - ldr sb, [r1, #0xd14] + ldr sb, [r1, #0xd14 + OV29_022F67D0_OFFSET] b _022F69A8 _022F68D8: add r0, r0, #0xc000 - ldr r8, [r0, #0xd18] + ldr r8, [r0, #0xd18 + OV29_022F67D0_OFFSET] mov r0, sb, lsl #0x10 mov r7, r0, asr #0x10 add r6, sp, #0xc @@ -487,13 +516,13 @@ _022F698C: _022F6990: ldr r0, [r4] add r1, r0, #0xc000 - ldr r1, [r1, #0xd20] + ldr r1, [r1, #0xd20 + OV29_022F67D0_OFFSET] cmp r8, r1 ble _022F68FC add sb, sb, #1 _022F69A8: add r1, r0, #0xc000 - ldr r1, [r1, #0xd1c] + ldr r1, [r1, #0xd1c + OV29_022F67D0_OFFSET] cmp sb, r1 ble _022F68D8 ldr r1, _022F69EC ; =DUNGEON_PTR @@ -511,14 +540,19 @@ _022F69E4: add sp, sp, #0x24 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +#define OV29_022F67D0_DATA_OFFSET -0x2BE +#else +#define OV29_022F67D0_DATA_OFFSET 0 +#endif _022F69EC: .word DUNGEON_PTR _022F69F0: .word ov29_023535A8 _022F69F4: .word ov10_022C4800 -_022F69F8: .word 0x00000E4F -_022F69FC: .word 0x00000E4D +_022F69F8: .word 0x00000E4F + OV29_022F67D0_DATA_OFFSET +_022F69FC: .word 0x00000E4D + OV29_022F67D0_DATA_OFFSET _022F6A00: .word 0x00001308 _022F6A04: .word ov29_02352760 -_022F6A08: .word 0x00000E4A +_022F6A08: .word 0x00000E4A + OV29_022F67D0_DATA_OFFSET arm_func_end ov29_022F67D0 arm_func_start ov29_022F6A0C @@ -560,8 +594,13 @@ _022F6A80: beq _022F6AE0 cmp r4, #0 beq _022F6AAC +#ifdef JAPAN + add r0, sp, #4 + mov r1, #0xb90 +#else ldr r1, _022F6C94 ; =0x00000E4E add r0, sp, #4 +#endif mov r2, #1 bl DisplayMessage2 _022F6AAC: @@ -662,7 +701,11 @@ _022F6C00: ldr r0, [r8] add r0, r0, r7, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r6, [r0, #0xad4] +#else ldr r6, [r0, #0xb78] +#endif mov r0, r6 bl EntityIsValid__022F62A8 cmp r0, #0 @@ -697,14 +740,21 @@ _022F6C84: add sp, sp, #0x14 ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} .align 2, 0 +#ifdef JAPAN +#define OV29_022F6A0C_OFFSET -0x2BE +#else +#define OV29_022F6A0C_OFFSET 0 +#endif _022F6C8C: .word DUNGEON_PTR _022F6C90: .word ov10_022C473C +#ifndef JAPAN _022F6C94: .word 0x00000E4E -_022F6C98: .word 0x00000E4C -_022F6C9C: .word 0x00000E4B +#endif +_022F6C98: .word 0x00000E4C + OV29_022F6A0C_OFFSET +_022F6C9C: .word 0x00000E4B + OV29_022F6A0C_OFFSET _022F6CA0: .word 0x00001308 _022F6CA4: .word BAG_ITEMS_PTR_MIRROR -_022F6CA8: .word 0x00000E49 +_022F6CA8: .word 0x00000E49 + OV29_022F6A0C_OFFSET arm_func_end ov29_022F6A0C arm_func_start ov29_022F6CAC @@ -773,7 +823,11 @@ _022F6D8C: ldr r0, [sb] add r0, r0, r8, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr sl, [r0, #0xad4] +#else ldr sl, [r0, #0xb78] +#endif mov r0, sl bl EntityIsValid__022F62A8 cmp r0, #0 @@ -805,7 +859,11 @@ _022F6DDC: ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} .align 2, 0 _022F6E0C: .word DUNGEON_PTR +#ifdef JAPAN +_022F6E10: .word 0x00000B96 +#else _022F6E10: .word 0x00000E54 +#endif _022F6E14: .word BAG_ITEMS_PTR_MIRROR arm_func_end ov29_022F6CAC @@ -853,17 +911,23 @@ _022F6E84: ldr r0, _022F6EE8 ; =0x00000217 bl GetSpriteFileSize cmp r4, r0 +#ifdef JAPAN + ldmneia sp!, {r4, pc} +#else bne _022F6EC0 +#endif mov r0, #0x218 bl GetSpriteFileSize ldr r0, _022F6EEC ; =0x00000211 bl GetSpriteFileSize +#ifndef JAPAN _022F6EC0: ldr r0, _022F6EF0 ; =DUNGEON_PTR mov r1, #0 ldr r0, [r0] add r0, r0, #0x3000 str r1, [r0, #0xe1c] +#endif ldmia sp!, {r4, pc} .align 2, 0 _022F6ED8: .word 0x0001A002 @@ -872,7 +936,9 @@ _022F6EE0: .word ov29_0237C9B0 _022F6EE4: .word 0x00000216 _022F6EE8: .word 0x00000217 _022F6EEC: .word 0x00000211 +#ifndef JAPAN _022F6EF0: .word DUNGEON_PTR +#endif arm_func_end ov29_022F6E40 arm_func_start ov29_022F6EF4 @@ -1051,10 +1117,17 @@ ov29_022F7104: ; 0x022F7104 ldr r0, [r1] mov r2, #0xa add r0, r0, #0x3000 +#ifdef JAPAN + str r3, [r0, #0xd88] + ldr r0, [r1] + add r0, r0, #0x3000 + str r2, [r0, #0xd8c] +#else str r3, [r0, #0xe2c] ldr r0, [r1] add r0, r0, #0x3000 str r2, [r0, #0xe30] +#endif bx lr .align 2, 0 _022F712C: .word DUNGEON_PTR @@ -1062,13 +1135,23 @@ _022F712C: .word DUNGEON_PTR arm_func_start ov29_022F7130 ov29_022F7130: ; 0x022F7130 +#ifdef JAPAN +#define OV29_022F7130_OFFSET -0xA4 +#else +#define OV29_022F7130_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} ldr r0, _022F72F8 ; =DUNGEON_PTR mov r2, #0 ldr r0, [r0] mov r3, r2 +#ifdef JAPAN + add r0, r0, #0x870 + add r4, r0, #0x19000 +#else add r0, r0, #0x114 add r4, r0, #0x19800 +#endif ldr r0, _022F72FC ; =0x00000483 _022F7150: mov r1, r2, lsl #1 @@ -1081,14 +1164,18 @@ _022F7150: ldr r2, [r1] mov r1, #1 add r2, r2, #0x2c000 - str r3, [r2, #0xb0c] + str r3, [r2, #0xb0c + OV29_022F7130_OFFSET] bl LoadMonsterSprite mov r6, #0 mov r5, #1 ldr r4, _022F72F8 ; =DUNGEON_PTR b _022F71AC _022F7190: +#ifdef JAPAN + add r0, r1, #0x124 +#else add r0, r1, #0x174 +#endif add r0, r0, #0x3800 add r0, r0, r6, lsl #3 bl GetMonsterIdFromSpawnEntry @@ -1098,7 +1185,7 @@ _022F7190: _022F71AC: ldr r1, [r4] add r0, r1, #0x3000 - ldr r0, [r0, #0xe20] + ldr r0, [r0, #0xe20 + OV29_022F7130_OFFSET] cmp r6, r0 blt _022F7190 bl LoadMissionMonsterSprites @@ -1159,7 +1246,7 @@ _022F7278: ldr r0, _022F72F8 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] + ldrb r0, [r0, #0xda + OV29_022F7130_OFFSET] cmp r0, #0x6e ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} mov r7, #0 @@ -1202,7 +1289,11 @@ _022F7318: ldr r0, [r4] add r0, r0, r6, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r7, [r0, #0xad4] +#else ldr r7, [r0, #0xb78] +#endif cmp r7, #0 beq _022F7350 mov r0, r7 diff --git a/asm/overlay_29_022F7388.s b/asm/overlay_29_022F7388.s index e3d9e4d7..98326e5e 100644 --- a/asm/overlay_29_022F7388.s +++ b/asm/overlay_29_022F7388.s @@ -5,15 +5,25 @@ arm_func_start DungeonGetSpriteIndex DungeonGetSpriteIndex: ; 0x022F7388 +#ifdef JAPAN + ldr r1, _022F73A0 ; =DUNGEON_PTR + ldr r1, [r1] + add r0, r1, r0, lsl #1 + add r0, r0, #0x19800 + ldrsh r0, [r0, #0x70] +#else ldr r2, _022F73A0 ; =DUNGEON_PTR ldr r1, _022F73A4 ; =0x00019914 ldr r2, [r2] add r0, r2, r0, lsl #1 ldrsh r0, [r0, r1] +#endif bx lr .align 2, 0 _022F73A0: .word DUNGEON_PTR +#ifndef JAPAN _022F73A4: .word 0x00019914 +#endif arm_func_end DungeonGetSpriteIndex arm_func_start JoinedAtRangeCheck2Veneer @@ -63,8 +73,13 @@ StoreSpriteFileIndexBothGenders: ; 0x022F740C mov r7, r0 ldr r2, [r2] mov r6, r1 +#ifdef JAPAN + add r1, r2, #0x870 + add r5, r1, #0x19000 +#else add r1, r2, #0x114 add r5, r1, #0x19800 +#endif bl GetSpriteIndex__020526EC mov r4, r0 mov r1, r7, lsl #1 @@ -118,10 +133,17 @@ LoadMonsterSpriteInner: ; 0x022F74D4 sub sp, sp, #4 ldr r1, _022F75C4 ; =DUNGEON_PTR mov r6, r0 +#ifdef JAPAN + ldr r1, [r1] + add r1, r1, r6, lsl #1 + add r1, r1, #0x19800 + ldrsh r1, [r1, #0x70] +#else ldr r2, [r1] ldr r1, _022F75C8 ; =0x00019914 add r2, r2, r6, lsl #1 ldrsh r1, [r2, r1] +#endif cmp r1, #0 bne _022F75BC bl GetSpriteIndex__020526EC @@ -171,15 +193,23 @@ _022F7598: ldr r1, _022F75C4 ; =DUNGEON_PTR ldr r1, [r1] add r1, r1, #0x2c000 +#ifdef JAPAN + ldr r2, [r1, #0xa68] + add r0, r2, r0 + str r0, [r1, #0xa68] +#else ldr r2, [r1, #0xb0c] add r0, r2, r0 str r0, [r1, #0xb0c] +#endif _022F75BC: add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, pc} .align 2, 0 _022F75C4: .word DUNGEON_PTR +#ifndef JAPAN _022F75C8: .word 0x00019914 +#endif _022F75CC: .word ov29_0237C9B0 _022F75D0: .word WAN_TABLE arm_func_end LoadMonsterSpriteInner @@ -192,9 +222,15 @@ SwapMonsterWanFileIndex: ; 0x022F75D4 mov r5, r1 ldr r1, [r2] mov r6, r0 +#ifdef JAPAN + add r1, r1, #0x870 + mov r0, r5 + add r4, r1, #0x19000 +#else add r1, r1, #0x114 mov r0, r5 add r4, r1, #0x19800 +#endif bl GetSpriteIndex__020526EC mov r1, #1 str r1, [sp] @@ -237,8 +273,13 @@ LoadMonsterSprite: ; 0x022F7654 bhi _022F769C ldr r0, _022F774C ; =DUNGEON_PTR ldr r0, [r0] +#ifdef JAPAN + add r0, r0, #0x3d00 + ldrsh r0, [r0, #0x96] +#else add r0, r0, #0x3e00 ldrsh r0, [r0, #0x3a] +#endif bl LoadMonsterSpriteInner ldmia sp!, {r4, pc} _022F769C: @@ -304,15 +345,31 @@ DeleteMonsterSpriteFile: ; 0x022F7768 stmdb sp!, {r3, r4, r5, lr} ldr r1, _022F77F4 ; =DUNGEON_PTR mov r5, r0 +#ifdef JAPAN + ldr r0, [r1] + add r0, r0, r5, lsl #1 + add r0, r0, #0x19800 + ldrsh r1, [r0, #0x70] +#else ldr r1, [r1] ldr r0, _022F77F8 ; =0x00019914 add r1, r1, r5, lsl #1 ldrsh r1, [r1, r0] +#endif cmp r1, #0 ldmeqia sp!, {r3, r4, r5, pc} ldr r0, _022F77FC ; =WAN_TABLE ldr r0, [r0] bl DeleteWanTableEntryVeneer +#ifdef JAPAN + ldr r1, _022F77F4 ; =DUNGEON_PTR + mov r2, #0 + ldr r1, [r1] + mov r0, r5 + add r1, r1, r5, lsl #1 + add r1, r1, #0x19800 + strh r2, [r1, #0x70] +#else ldr r0, _022F77F4 ; =DUNGEON_PTR ldr r1, _022F77F8 ; =0x00019914 ldr r2, [r0] @@ -320,6 +377,7 @@ DeleteMonsterSpriteFile: ; 0x022F7768 add r2, r2, r5, lsl #1 mov r0, r5 strh r3, [r2, r1] +#endif bl IsShaymin cmp r0, #0 ldmeqia sp!, {r3, r4, r5, pc} @@ -338,7 +396,9 @@ DeleteMonsterSpriteFile: ; 0x022F7768 ldmia sp!, {r3, r4, r5, pc} .align 2, 0 _022F77F4: .word DUNGEON_PTR +#ifndef JAPAN _022F77F8: .word 0x00019914 +#endif _022F77FC: .word WAN_TABLE _022F7800: .word ov29_0237C9B0 arm_func_end DeleteMonsterSpriteFile @@ -617,14 +677,19 @@ _022F7BCC: add sp, sp, #0x54 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 -_022F7BD4: .word 0x00000C0D -_022F7BD8: .word 0x00000C0E -_022F7BDC: .word 0x00000C0F -_022F7BE0: .word 0x00000C0C +#ifdef JAPAN +#define OV29_022F7910_OFFSET -0x2C1 +#else +#define OV29_022F7910_OFFSET 0 +#endif +_022F7BD4: .word 0x00000C0D + OV29_022F7910_OFFSET +_022F7BD8: .word 0x00000C0E + OV29_022F7910_OFFSET +_022F7BDC: .word 0x00000C0F + OV29_022F7910_OFFSET +_022F7BE0: .word 0x00000C0C + OV29_022F7910_OFFSET _022F7BE4: .word 0x000055AA _022F7BE8: .word TEAM_MEMBER_TABLE_PTR _022F7BEC: .word IQ_SKILLS -_022F7BF0: .word 0x00000C12 +_022F7BF0: .word 0x00000C12 + OV29_022F7910_OFFSET arm_func_end ov29_022F7910 arm_func_start ov29_022F7BF4 @@ -677,8 +742,13 @@ _022F7C7C: blo _022F7CC0 cmp r0, #0xe4 bhs _022F7CC0 +#ifdef JAPAN + ldr r1, _022F93E0 ; =0x0000094F + mov r0, #0 +#else mov r0, #0 mov r1, #0xc10 +#endif mov r2, #1 bl DisplayMessage2 b _022F7E10 @@ -744,8 +814,13 @@ _022F7D6C: cmp r0, #0xe4 blo _022F7E10 _022F7DA4: +#ifdef JAPAN + mov r0, #0 + mov r1, #0x950 +#else ldr r1, _022F7E30 ; =0x00000C11 mov r0, #0 +#endif mov r2, #1 bl DisplayMessage2 b _022F7E10 @@ -764,8 +839,13 @@ _022F7DC4: blo _022F7E00 cmp r0, #0xe4 bhs _022F7E00 +#ifdef JAPAN + ldr r1, _022F93E0 ; =0x0000094F + mov r0, #0 +#else mov r0, #0 mov r1, #0xc10 +#endif mov r2, #1 bl DisplayMessage2 b _022F7E10 @@ -779,12 +859,20 @@ _022F7E10: ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 _022F7E18: .word DUNGEON_PTR +#ifdef JAPAN +_022F7E1C: .word 0x0000094A +_022F93E0: .word 0x0000094F +_022F7E20: .word 0x00000949 +#else _022F7E1C: .word 0x00000C0B _022F7E20: .word 0x00000C0A +#endif _022F7E24: .word 0x000055AA _022F7E28: .word TEAM_MEMBER_TABLE_PTR _022F7E2C: .word IQ_SKILLS +#ifndef JAPAN _022F7E30: .word 0x00000C11 +#endif arm_func_end ov29_022F7BF4 arm_func_start ov29_022F7E34 @@ -896,6 +984,11 @@ _022F892C: arm_func_start HandleFaint HandleFaint: ; 0x022F7F30 +#ifdef JAPAN +#define HANDLE_FAINT_OFFSET -0xA4 +#else +#define HANDLE_FAINT_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0xbc mov sl, r0 @@ -942,7 +1035,7 @@ _022F7F8C: add r0, r0, r5, lsl #2 #endif add r0, r0, #0x12000 - ldr r6, [r0, #0xb78] + ldr r6, [r0, #0xb78 + HANDLE_FAINT_OFFSET] cmp r6, #0 beq _022F7FC4 mov r0, r6 @@ -970,7 +1063,7 @@ _022F7FC4: moveq r1, #0 ldreq r0, [r0] addeq r0, r0, #0x3000 - streqb r1, [r0, #0xe38] + streqb r1, [r0, #0xe38 + HANDLE_FAINT_OFFSET] ldrb r0, [r7, #0xc4] add r0, r0, #0xfd and r0, r0, #0xff @@ -1014,7 +1107,11 @@ _022F8008: ldrb r0, [r0, #0x75f] cmp r0, #0 moveq r0, #1 +#ifdef JAPAN + streqb r0, [r7, #0x161] +#else streqb r0, [r7, #0x165] +#endif #ifdef EUROPE mov r0, r5 bl EuFaintCheck @@ -1038,7 +1135,11 @@ _022F8098: cmp r0, #1 mov r0, #1 streqb r0, [sl, #0x20] +#ifdef JAPAN + strneb r0, [r7, #0x161] +#else strneb r0, [r7, #0x165] +#endif bl ov29_022E8104 bl ov29_022E81F8 mov r0, #0x3c @@ -1103,19 +1204,24 @@ _022F80F4: cmpne sb, r0 beq _022F8234 add r0, r2, #0x4000 - ldrb r0, [r0, #0xca] + ldrb r0, [r0, #0xca + HANDLE_FAINT_OFFSET] cmp r0, #0 bne _022F8234 add r0, r2, #0x700 +#ifdef JAPAN + ldrsb r1, [r0, #0x9b] + cmp r1, #0 +#else ldrsb r2, [r0, #0x9b] cmp r2, #0 +#endif #endif blt _022F8234 ldrsb r0, [r0, #0x98] cmp r0, #3 cmpne r0, #2 beq _022F8234 -#ifdef EUROPE +#if defined(EUROPE) || defined(JAPAN) cmp r1, #0 #else cmp r2, #0 @@ -1176,8 +1282,10 @@ _022F8208: mov r4, r0 b _022F8240 _022F8220: -#ifdef EUROPE +#if defined(EUROPE) rsb r1, r2, #0xe70 +#elif defined(JAPAN) + ldr r1, _022F9BA4 ; =0x00000954 #else rsb r1, r1, #0xe70 #endif @@ -1259,7 +1367,7 @@ _022F82E4: #endif add r0, r0, r4, lsl #2 add r0, r0, #0x12000 - ldr r8, [r0, #0xb28] + ldr r8, [r0, #0xb28 + HANDLE_FAINT_OFFSET] mov r0, r8 bl EntityIsValid__022F7364 cmp r0, #0 @@ -1502,8 +1610,14 @@ _022F85C8: _022F85D0: .word DUNGEON_PTR _022F85D4: .word LEADER_PTR _022F85D8: .word 0x0000025B +#ifdef JAPAN +_022F85DC: .word 0x00000952 +_022F85E0: .word 0x00000953 +_022F9BA4: .word 0x00000954 +#else _022F85DC: .word 0x00000C13 _022F85E0: .word 0x00000C14 +#endif _022F85E4: .word 0x00000266 _022F85E8: .word 0x0000025E _022F85EC: .word 0x00000233 @@ -1793,6 +1907,11 @@ ov29_022F89AC: ; 0x022F89AC arm_func_start CreateMonsterSummaryFromMonster CreateMonsterSummaryFromMonster: ; 0x022F89CC +#ifdef JAPAN +#define CREATE_MONSTER_SUMMARY_FROM_MONSTER_OFFSET -4 +#else +#define CREATE_MONSTER_SUMMARY_FROM_MONSTER_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r6, r1 ldr r5, [r6, #0xb4] @@ -1905,10 +2024,10 @@ _022F8B24: movne r1, #0xb strneb r1, [r0, #0x58] add r0, r5, #0x100 - ldrh r1, [r0, #0x46] + ldrh r1, [r0, #0x46 + CREATE_MONSTER_SUMMARY_FROM_MONSTER_OFFSET] addne r4, r4, #1 strh r1, [r2] - ldrh r0, [r0, #0x48] + ldrh r0, [r0, #0x48 + CREATE_MONSTER_SUMMARY_FROM_MONSTER_OFFSET] strh r0, [r2, #2] ldr r0, [r2] bl CeilFixedPoint @@ -1923,14 +2042,14 @@ _022F8B24: add r4, r4, #1 _022F8BC4: ldr r0, [r6, #0xb4] - ldr r0, [r0, #0x110] + ldr r0, [r0, #0x110 + CREATE_MONSTER_SUMMARY_FROM_MONSTER_OFFSET] cmp r0, #1 addgt r0, r7, r4 movgt r1, #0x1b strgtb r1, [r0, #0x58] ldr r0, [r6, #0xb4] addgt r4, r4, #1 - ldr r0, [r0, #0x110] + ldr r0, [r0, #0x110 + CREATE_MONSTER_SUMMARY_FROM_MONSTER_OFFSET] cmp r0, #1 addlt r0, r7, r4 movlt r1, #0x29 @@ -2118,7 +2237,7 @@ _022F8E78: strltb r1, [r0, #0x58] addlt r4, r4, #1 _022F8E98: - ldrb r0, [r5, #0x11e] + ldrb r0, [r5, #0x11e + CREATE_MONSTER_SUMMARY_FROM_MONSTER_OFFSET] cmp r0, #0 beq _022F8EB8 cmp r4, #0x1e @@ -2173,7 +2292,11 @@ _022F8F38: strltb r1, [r0, #0x58] addlt r4, r4, #1 _022F8F5C: +#ifdef JAPAN + ldrb r0, [r5, #0x105] +#else ldrb r0, [r5, #0x106] +#endif cmp r0, #0 beq _022F8F7C cmp r4, #0x1e @@ -2251,6 +2374,11 @@ _022F9054: .word ov29_0235171E arm_func_start ov29_022F9058 ov29_022F9058: ; 0x022F9058 +#ifdef JAPAN +#define OV29_022F9058_OFFSET -4 +#else +#define OV29_022F9058_OFFSET 0 +#endif stmdb sp!, {r4, r5, lr} sub sp, sp, #0xc ldr r4, [r1, #0xb4] @@ -2273,7 +2401,7 @@ ov29_022F9058: ; 0x022F9058 ldrb r2, [r4, #0xa] bl GetLvlUpEntry ldr r0, [sp] - add r3, r4, #0x124 + add r3, r4, #0x124 + OV29_022F9058_OFFSET str r0, [r5, #0x10] ldrb r0, [r4, #0x1a] add r2, r5, #0x22 @@ -2297,13 +2425,13 @@ _022F90F8: strh r0, [r2], #2 bne _022F90F8 add r0, r4, #0x100 - ldrh r1, [r0, #0x46] + ldrh r1, [r0, #0x46 + OV29_022F9058_OFFSET] strh r1, [r5, #0x14] - ldrh r1, [r0, #0x48] + ldrh r1, [r0, #0x48 + OV29_022F9058_OFFSET] strh r1, [r5, #0x16] - ldrh r1, [r0, #0x4a] + ldrh r1, [r0, #0x4a + OV29_022F9058_OFFSET] strh r1, [r5, #0x18] - ldrh r0, [r0, #0x4c] + ldrh r0, [r0, #0x4c + OV29_022F9058_OFFSET] strh r0, [r5, #0x1a] ldrh r0, [r4, #0x44] strh r0, [r5, #0x44] @@ -2325,13 +2453,21 @@ UpdateAiTargetPos: ; 0x022F9144 ldrsh r3, [r2, r3] ldr r2, _022F9190 ; =ov29_0235171E add r3, ip, r3 +#ifdef JAPAN + strh r3, [r1, #0x7a] +#else strh r3, [r1, #0x7e] +#endif ldrb r3, [lr, #0x4c] ldrsh ip, [r0, #6] mov r0, r3, lsl #2 ldrsh r0, [r2, r0] add r0, ip, r0 +#ifdef JAPAN + strh r0, [r1, #0x7c] +#else strh r0, [r1, #0x80] +#endif ldmia sp!, {r3, pc} .align 2, 0 _022F918C: .word DIRECTIONS_XY @@ -2403,7 +2539,11 @@ _022F925C: ldr r0, [r4] add r0, r0, sb, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr sl, [r0, #0xad4] +#else ldr sl, [r0, #0xb78] +#endif mov r0, sl bl EntityIsValid__022F7364 cmp r0, #0 @@ -2437,6 +2577,11 @@ _022F92D4: .word DUNGEON_PTR arm_func_start TryActivateArtificialWeatherAbilities TryActivateArtificialWeatherAbilities: ; 0x022F92D8 +#ifdef JAPAN +#define TRY_ACTIVATE_ARTIFICIAL_WEATHER_ABILITIES_OFFSET -0xA4 +#else +#define TRY_ACTIVATE_ARTIFICIAL_WEATHER_ABILITIES_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} bl IsSecretFloor cmp r0, #0 @@ -2451,7 +2596,7 @@ TryActivateArtificialWeatherAbilities: ; 0x022F92D8 ldr r0, [r4] mov r5, #1 add r0, r0, #0xc000 - strb sb, [r0, #0xd5d] + strb sb, [r0, #0xd5d + TRY_ACTIVATE_ARTIFICIAL_WEATHER_ABILITIES_OFFSET] mov r6, r5 mov r7, r5 mov r8, r5 @@ -2460,7 +2605,7 @@ _022F9324: ldr r0, [r4] add r0, r0, sb, lsl #2 add r0, r0, #0x12000 - ldr sl, [r0, #0xb78] + ldr sl, [r0, #0xb78 + TRY_ACTIVATE_ARTIFICIAL_WEATHER_ABILITIES_OFFSET] mov r0, sl bl EntityIsValid__022F7364 cmp r0, #0 @@ -2470,32 +2615,52 @@ _022F9324: bl AbilityIsActiveVeneer cmp r0, #0 ldrne r0, [r4] +#ifdef JAPAN + addne r0, r0, #0xcc00 + strneh r8, [r0, #0xae] +#else addne r0, r0, #0xcd00 strneh r8, [r0, #0x52] +#endif bne _022F93C0 mov r0, sl mov r1, #0x1c bl AbilityIsActiveVeneer cmp r0, #0 ldrne r0, [r4] +#ifdef JAPAN + addne r0, r0, #0xcc00 + strneh r7, [r0, #0xaa] +#else addne r0, r0, #0xcd00 strneh r7, [r0, #0x4e] +#endif bne _022F93C0 mov r0, sl mov r1, #0x31 bl AbilityIsActiveVeneer cmp r0, #0 ldrne r0, [r4] +#ifdef JAPAN + addne r0, r0, #0xcc00 + strneh r6, [r0, #0xa8] +#else addne r0, r0, #0xcd00 strneh r6, [r0, #0x4c] +#endif bne _022F93C0 mov r0, sl mov r1, #0x78 bl AbilityIsActiveVeneer cmp r0, #0 ldrne r0, [r4] +#ifdef JAPAN + addne r0, r0, #0xcc00 + strneh r5, [r0, #0xb0] +#else addne r0, r0, #0xcd00 strneh r5, [r0, #0x54] +#endif _022F93C0: mov r0, sl mov r1, #8 @@ -2510,7 +2675,7 @@ _022F93C0: _022F93E8: ldr r0, [r4] add r0, r0, #0xc000 - strb fp, [r0, #0xd5d] + strb fp, [r0, #0xd5d + TRY_ACTIVATE_ARTIFICIAL_WEATHER_ABILITIES_OFFSET] _022F93F4: add sb, sb, #1 cmp sb, #0x14 @@ -2658,15 +2823,26 @@ _022F95A0: mov r1, r8 bl TryEndStatusWithAbility _022F95FC: +#ifdef JAPAN + ldrb r0, [r6, #0x160] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r3, #0 +#else ldrb r0, [r6, #0x164] cmp r0, #0 ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} mov r4, #0 +#endif mov r0, sb mov r1, r8 mov r2, #0x3b +#ifdef JAPAN + strb r3, [r6, #0x160] +#else mov r3, #1 strb r4, [r6, #0x164] +#endif bl DefenderAbilityIsActive__022F96CC cmp r0, #0 ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} @@ -2709,35 +2885,63 @@ _022F9658: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 _022F96BC: .word DUNGEON_PTR +#ifdef JAPAN +_022F96C0: .word 0x00000957 +_022F96C4: .word WEATHER_BALL_TYPE_TABLE +_022F96C8: .word 0x00000958 +#else _022F96C0: .word 0x00000C18 _022F96C4: .word WEATHER_BALL_TYPE_TABLE _022F96C8: .word 0x00000C19 +#endif arm_func_end TryActivateTraceAndColorChange arm_func_start DefenderAbilityIsActive__022F96CC DefenderAbilityIsActive__022F96CC: ; 0x022F96CC +#ifdef JAPAN + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + cmp r6, r5 +#else stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r7, r0 mov r6, r1 mov r5, r2 mov r4, r3 cmp r7, r6 +#endif beq _022F9710 bl IsMonster__022F9720 cmp r0, #0 +#ifdef JAPAN + beq _022F9710 + mov r0, r6 +#else cmpne r4, #0 beq _022F9710 mov r0, r7 +#endif mov r1, #0x53 bl AbilityIsActiveVeneer cmp r0, #0 movne r0, #0 +#ifdef JAPAN + ldmneia sp!, {r4, r5, r6, pc} +_022F9710: + mov r0, r5 + mov r1, r4 + bl AbilityIsActiveVeneer + ldmia sp!, {r4, r5, r6, pc} +#else ldmneia sp!, {r3, r4, r5, r6, r7, pc} _022F9710: mov r0, r6 mov r1, r5 bl AbilityIsActiveVeneer ldmia sp!, {r3, r4, r5, r6, r7, pc} +#endif arm_func_end DefenderAbilityIsActive__022F96CC arm_func_start IsMonster__022F9720 @@ -2798,7 +3002,11 @@ TryActivateConversion2: ; 0x022F9744 bl LogMessageByIdWithPopupCheckUserTarget ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 +#ifdef JAPAN +_022F97EC: .word 0x00000955 +#else _022F97EC: .word 0x00000C16 +#endif arm_func_end TryActivateConversion2 arm_func_start TryActivateTruant @@ -2875,7 +3083,11 @@ TryPointCameraToMonster: ; 0x022F98B4 ldr r0, _022F9968 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x1a000 +#ifdef JAPAN + ldr r0, [r0, #0x188] +#else ldr r0, [r0, #0x22c] +#endif cmp r0, r6 ldmeqia sp!, {r3, r4, r5, r6, r7, pc} cmp r5, #0 @@ -2922,6 +3134,11 @@ ov29_022F996C: ; 0x022F996C arm_func_start ov29_022F9970 ov29_022F9970: ; 0x022F9970 +#ifdef JAPAN +#define OV29_022F9970_OFFSET -0xA4 +#else +#define OV29_022F9970_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, lr} mov r4, #0 ldr r6, _022F99E8 ; =DUNGEON_PTR @@ -2930,7 +3147,7 @@ _022F9980: ldr r0, [r6] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 - ldr r5, [r0, #0xb78] + ldr r5, [r0, #0xb78 + OV29_022F9970_OFFSET] mov r0, r5 bl EntityIsValid__022F7364 cmp r0, #0 @@ -2942,12 +3159,12 @@ _022F9980: ldr r1, _022F99E8 ; =DUNGEON_PTR ldr r0, [r1] add r0, r0, #0x19000 - str r5, [r0, #0x904] + str r5, [r0, #0x904 + OV29_022F9970_OFFSET] ldr r2, [r5, #0xb4] ldr r0, [r1] ldr r1, [r2, #0xb0] add r0, r0, #0x19000 - str r1, [r0, #0x90c] + str r1, [r0, #0x90c + OV29_022F9970_OFFSET] ldmia sp!, {r4, r5, r6, pc} _022F99D8: add r4, r4, #1 @@ -2971,7 +3188,11 @@ _022F9A04: ldr r0, [r6] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r8, [r0, #0xa94] +#else ldr r8, [r0, #0xb38] +#endif mov r0, r8 bl EntityIsValid__022F7364 cmp r0, #0 @@ -3006,7 +3227,11 @@ RestorePpAllMovesSetFlags: ; 0x022F9A74 stmdb sp!, {r4, r5, r6, r7, r8, lr} ldr r0, [r0, #0xb4] mov r7, #0 +#ifdef JAPAN + add r6, r0, #0x120 +#else add r6, r0, #0x124 +#endif mov r4, r7 mov r5, #1 _022F9A8C: @@ -3118,11 +3343,19 @@ ov29_022F9B8C: ; 0x022F9B8C _022F9C00: mla lr, r1, r2, r0 add r3, r4, r1, lsl #3 +#ifdef JAPAN + ldrb ip, [r3, #0x120] +#else ldrb ip, [r3, #0x124] +#endif add r3, r3, #0x100 add r1, r1, #1 strb ip, [lr, #0x22] +#ifdef JAPAN + ldrh r3, [r3, #0x24] +#else ldrh r3, [r3, #0x28] +#endif cmp r1, #4 strh r3, [lr, #0x24] blt _022F9C00 @@ -3168,14 +3401,21 @@ _022F9C70: .word IsMonsterIdInNormalRange arm_func_start ov29_022F9C74 ov29_022F9C74: ; 0x022F9C74 +#ifdef JAPAN +#define OV29_022F9C74_OFFSET -4 +#else +#define OV29_022F9C74_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, lr} sub sp, sp, #0xc mov r6, r0 bl EntityIsValid__022F7364 +#ifndef JAPAN cmp r0, #0 beq _022F9E80 ldr r5, [r6, #0xb4] ldrb r0, [r5, #0x103] +#endif cmp r0, #0 beq _022F9E78 mov r0, r6 @@ -3187,12 +3427,22 @@ ov29_022F9C74: ; 0x022F9C74 ldr r0, _022F9E88 ; =DUNGEON_PTR ldr r1, _022F9E8C ; =SECONDARY_TERRAIN_TYPES ldr r0, [r0] +#ifdef JAPAN + ldr r4, [r6, #0xb4] + add r0, r0, #0x4000 + ldrsh r0, [r0, #0x30] +#else add r0, r0, #0x4000 ldrsh r0, [r0, #0xd4] +#endif ldrb r0, [r1, r0] cmp r0, #1 bne _022F9D34 +#ifdef JAPAN + ldrb r0, [r4, #0xc4] +#else ldrb r0, [r5, #0xc4] +#endif cmp r0, #1 bne _022F9CF0 mov r0, r6 @@ -3200,14 +3450,25 @@ ov29_022F9C74: ; 0x022F9C74 mov r2, #1 bl EndFrozenClassStatus _022F9CF0: +#ifdef JAPAN + ldrsh r0, [r4, #2] + bl GetMobilityType + cmp r0, #4 + ldrnesh r1, [r4, #2] +#else ldrsh r0, [r5, #2] bl GetMobilityType cmp r0, #4 ldrnesh r1, [r5, #2] +#endif ldrne r0, _022F9E90 ; =0x00000115 cmpne r1, r0 cmpne r1, #0x92 +#ifdef JAPAN + ldrneb r0, [r4, #0xbf] +#else ldrneb r0, [r5, #0xbf] +#endif cmpne r0, #1 beq _022F9E78 mov r3, #0 @@ -3218,7 +3479,11 @@ _022F9CF0: bl TryInflictBurnStatus b _022F9E78 _022F9D34: +#ifdef JAPAN + ldrb r0, [r4, #0xbf] +#else ldrb r0, [r5, #0xbf] +#endif cmp r0, #1 bne _022F9E78 mov r0, r6 @@ -3228,12 +3493,15 @@ _022F9D34: _022F9D50: cmp r0, #0 bne _022F9E78 +#ifdef JAPAN + ldr r5, [r6, #0xb4] +#endif ldrb r0, [r5, #7] cmp r0, #0 beq _022F9E78 add r0, r5, #0x100 - ldrh r1, [r0, #0x48] - ldrh r4, [r0, #0x46] + ldrh r1, [r0, #0x48 + OV29_022F9C74_OFFSET] + ldrh r4, [r0, #0x46 + OV29_022F9C74_OFFSET] sub r3, sp, #4 strh r1, [sp, #0xa] mov r0, r1 @@ -3254,9 +3522,9 @@ _022F9D50: ldrh r1, [sp, #4] add r0, r5, #0x100 ldrh r3, [sp, #6] - strh r1, [r0, #0x46] + strh r1, [r0, #0x46 + OV29_022F9C74_OFFSET] ldrh r2, [sp, #8] - strh r3, [r0, #0x48] + strh r3, [r0, #0x48 + OV29_022F9C74_OFFSET] sub r0, sp, #4 ldrh r1, [sp, #0xa] strh r2, [r0] @@ -3267,10 +3535,10 @@ _022F9D50: cmp r0, #0x14 blt _022F9E18 add r0, r5, #0x100 - ldrh r1, [r0, #0x46] + ldrh r1, [r0, #0x46 + OV29_022F9C74_OFFSET] sub r2, sp, #4 strh r1, [r2] - ldrh r0, [r0, #0x48] + ldrh r0, [r0, #0x48 + OV29_022F9C74_OFFSET] strh r0, [r2, #2] ldr r0, [r2] bl CeilFixedPoint @@ -3287,10 +3555,10 @@ _022F9E18: cmp r0, #0xa blt _022F9E64 add r0, r5, #0x100 - ldrh r1, [r0, #0x46] + ldrh r1, [r0, #0x46 + OV29_022F9C74_OFFSET] sub r2, sp, #4 strh r1, [r2] - ldrh r0, [r0, #0x48] + ldrh r0, [r0, #0x48 + OV29_022F9C74_OFFSET] strh r0, [r2, #2] ldr r0, [r2] bl CeilFixedPoint @@ -3303,9 +3571,11 @@ _022F9E64: mov r1, r4 bl LogMessageByIdWithPopupCheckUser _022F9E78: +#ifndef JAPAN mov r0, #0 strb r0, [r5, #0x103] _022F9E80: +#endif add sp, sp, #0xc ldmia sp!, {r3, r4, r5, r6, pc} .align 2, 0 @@ -3313,12 +3583,22 @@ _022F9E88: .word DUNGEON_PTR _022F9E8C: .word SECONDARY_TERRAIN_TYPES _022F9E90: .word 0x00000115 _022F9E94: .word BELLY_DRAIN_IN_WALLS_INT +#ifdef JAPAN +_022F9E98: .word 0x00000959 +_022F9E9C: .word 0x0000095A +#else _022F9E98: .word 0x00000C1A _022F9E9C: .word 0x00000C1B +#endif arm_func_end ov29_022F9C74 arm_func_start ov29_022F9EA0 ov29_022F9EA0: ; 0x022F9EA0 +#ifdef JAPAN +#define OV29_022F9EA0_OFFSET -4 +#else +#define OV29_022F9EA0_OFFSET 0 +#endif stmdb sp!, {r4, r5, lr} sub sp, sp, #0xc mov r5, r0 @@ -3344,11 +3624,11 @@ _022F9EF4: mov r0, #0xa bl sub_02050FF8 add r1, r4, #0x100 - ldrh r2, [r1, #0x46] + ldrh r2, [r1, #0x46 + OV29_022F9EA0_OFFSET] sub r3, sp, #4 strh r0, [sp, #8] strh r2, [r3] - ldrh r1, [r1, #0x48] + ldrh r1, [r1, #0x48 + OV29_022F9EA0_OFFSET] mov r0, r0, lsr #0x10 strh r0, [sp, #0xa] strh r1, [r3, #2] @@ -3365,8 +3645,8 @@ _022F9EF4: ldrh r2, [sp, #4] add r0, r4, #0x100 ldrh r1, [sp, #6] - strh r2, [r0, #0x46] - strh r1, [r0, #0x48] + strh r2, [r0, #0x46 + OV29_022F9EA0_OFFSET] + strh r1, [r0, #0x48 + OV29_022F9EA0_OFFSET] b _022F9F9C _022F9F60: mov r0, r5 @@ -3382,8 +3662,8 @@ _022F9F60: ldrh r2, [sp] add r0, r4, #0x100 ldrh r1, [sp, #2] - strh r2, [r0, #0x46] - strh r1, [r0, #0x48] + strh r2, [r0, #0x46 + OV29_022F9EA0_OFFSET] + strh r1, [r0, #0x48 + OV29_022F9EA0_OFFSET] _022F9F9C: ldr r0, _022FA028 ; =DUNGEON_PTR ldr r0, [r0] @@ -3507,7 +3787,11 @@ _022FA12C: add sp, sp, #0x90 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +_022FA140: .word 0x0000095B +#else _022FA140: .word 0x00000C1C +#endif arm_func_end ov29_022FA02C arm_func_start BoostIQ @@ -3550,12 +3834,22 @@ _022FA1B0: ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 _022FA1CC: .word 0x000003E7 +#ifdef JAPAN +_022FA1D0: .word 0x00000966 +_022FA1D4: .word 0x00000965 +#else _022FA1D0: .word 0x00000C27 _022FA1D4: .word 0x00000C26 +#endif arm_func_end BoostIQ arm_func_start ov29_022FA1D8 ov29_022FA1D8: ; 0x022FA1D8 +#ifdef JAPAN +#define OV29_022FA1D8_OFFSET -4 +#else +#define OV29_022FA1D8_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, lr} mov r6, r0 ldr r4, [r6, #0xb4] @@ -3565,19 +3859,19 @@ ov29_022FA1D8: ; 0x022FA1D8 beq _022FA210 ldrsh r1, [r6, #4] add r0, r4, #0x100 - strh r1, [r0, #0x7e] + strh r1, [r0, #0x7e + OV29_022FA1D8_OFFSET] ldrsh r1, [r6, #6] add r1, r1, #1 - strh r1, [r0, #0x80] + strh r1, [r0, #0x80 + OV29_022FA1D8_OFFSET] b _022FA27C _022FA210: - ldrb r1, [r4, #0x16a] + ldrb r1, [r4, #0x16a + OV29_022FA1D8_OFFSET] cmp r1, #0xff beq _022FA274 ldrsh r1, [r4, #2] add r0, r4, #0x4a bl SetActionPassTurnOrWalk - ldrb r2, [r4, #0x16a] + ldrb r2, [r4, #0x16a + OV29_022FA1D8_OFFSET] ldr r1, _022FA2E8 ; =DIRECTIONS_XY add r0, r4, #0x100 strb r2, [r4, #0x4c] @@ -3587,23 +3881,23 @@ _022FA210: ldr r2, _022FA2EC ; =ov29_0235171E mov r1, #0xff add r3, ip, r3 - strh r3, [r0, #0x7e] + strh r3, [r0, #0x7e + OV29_022FA1D8_OFFSET] ldrb r3, [r4, #0x4c] ldrsh ip, [r6, #6] mov r3, r3, lsl #2 ldrsh r2, [r2, r3] add r2, ip, r2 - strh r2, [r0, #0x80] - strb r1, [r4, #0x16a] + strh r2, [r0, #0x80 + OV29_022FA1D8_OFFSET] + strb r1, [r4, #0x16a + OV29_022FA1D8_OFFSET] b _022FA27C _022FA274: mov r1, r2 bl AiMovement _022FA27C: add r0, r4, #0x100 - ldrsh r1, [r0, #0x7e] + ldrsh r1, [r0, #0x7e + OV29_022FA1D8_OFFSET] cmp r1, #0 - ldreqsh r0, [r0, #0x80] + ldreqsh r0, [r0, #0x80 + OV29_022FA1D8_OFFSET] cmpeq r0, #0 ldmeqia sp!, {r4, r5, r6, pc} mov r0, r6 @@ -3616,7 +3910,7 @@ _022FA27C: cmp r0, #0 ldmneia sp!, {r4, r5, r6, pc} _022FA2B8: - add r1, r4, #0x7e + add r1, r4, #0x7e + OV29_022FA1D8_OFFSET add r0, r6, #4 add r1, r1, #0x100 bl GetDirectionTowardsPosition @@ -3645,7 +3939,11 @@ _022FA308: ldr r0, [sb] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r4, [r0, #0xad4] +#else ldr r4, [r0, #0xb78] +#endif mov r0, r4 bl EntityIsValid__022F7364 cmp r0, #0 @@ -3712,7 +4010,11 @@ ov29_022FA3D4: ; 0x022FA3D4 mov r4, r0 ldr r0, [r1] mov r6, #0 +#ifdef JAPAN + add r0, r0, #0x284 +#else add r0, r0, #0x328 +#endif add r5, r0, #0x12800 _022FA3F0: ldr r0, [r5, r6, lsl #2] @@ -3753,8 +4055,13 @@ ShouldMonsterHeadToStairs: ; 0x022FA430 ldr r1, _022FA51C ; =DUNGEON_PTR add r0, sl, #4 ldr r1, [r1] +#ifdef JAPAN + add r1, r1, #0xc40 + add r1, r1, #0xc000 +#else add r1, r1, #0xe4 add r1, r1, #0xcc00 +#endif bl GetChebyshevDistance ldr r7, _022FA520 ; =0x00002710 ldr r4, _022FA51C ; =DUNGEON_PTR @@ -3764,7 +4071,11 @@ _022FA480: ldr r0, [r4] add r0, r0, r8, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr sb, [r0, #0xad4] +#else ldr sb, [r0, #0xb78] +#endif mov r0, sb bl EntityIsValid__022F7364 cmp r0, #0 @@ -3782,8 +4093,13 @@ _022FA480: bne _022FA4E8 ldr r1, [r4] add r0, sb, #4 +#ifdef JAPAN + add r1, r1, #0xc40 + add r1, r1, #0xc000 +#else add r1, r1, #0xe4 add r1, r1, #0xcc00 +#endif bl GetChebyshevDistance cmp r0, r7 movlt r7, r0 @@ -3817,7 +4133,11 @@ _022FA530: ldr r0, [r4] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r6, [r0, #0xad4] +#else ldr r6, [r0, #0xb78] +#endif mov r0, r6 bl EntityIsValid__022F7364 cmp r0, #0 @@ -3845,7 +4165,11 @@ ov29_022FA574: ; 0x022FA574 ldmeqia sp!, {r3, r4, r5, pc} ldr r0, [r5, #0xb4] mov r1, r4 +#ifdef JAPAN + add r0, r0, #0x120 +#else add r0, r0, #0x124 +#endif bl sub_0201405C cmp r0, #0 bne _022FA5B4 @@ -3868,9 +4192,15 @@ _022FA5CC: bl LogMessageByIdWithPopupCheckUser ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_022FA5E4: .word 0x0000095C +_022FA5E8: .word 0x0000095D +_022FA5EC: .word 0x0000095E +#else _022FA5E4: .word 0x00000C1D _022FA5E8: .word 0x00000C1E _022FA5EC: .word 0x00000C1F +#endif arm_func_end ov29_022FA574 arm_func_start MewSpawnCheck @@ -3887,7 +4217,11 @@ MewSpawnCheck: ; 0x022FA5F0 ldr r0, _022FA644 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x3000 +#ifdef JAPAN + ldrb r0, [r0, #0xd95] +#else ldrb r0, [r0, #0xe39] +#endif cmp r0, #0 movne r0, #0 ldmneia sp!, {r3, r4, r5, pc} @@ -3913,7 +4247,11 @@ _022FA65C: ldr r0, [r0] add r0, r0, r7, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r8, [r0, #0xa84] +#else ldr r8, [r0, #0xb28] +#endif mov r0, r8 bl EntityIsValid__022F7364 cmp r0, #0 @@ -3923,7 +4261,11 @@ _022FA65C: ldrsh r0, [sl, #0xc] cmp r1, #0 beq _022FA6C4 +#ifdef JAPAN + strb r6, [sl, #0x161] +#else strb r6, [sl, #0x165] +#endif bl ov29_022E8104 bl ov29_022E81F8 bl ov29_022E0A04 @@ -3959,7 +4301,11 @@ _022FA6C4: _022FA70C: cmp sb, #0 beq _022FA730 +#ifdef JAPAN + strb fp, [sl, #0x161] +#else strb fp, [sl, #0x165] +#endif bl ov29_022E8104 bl ov29_022E81F8 mov r0, r8 @@ -3988,7 +4334,11 @@ _022FA760: ldr r0, [r4] add r0, r0, r6, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r8, [r0, #0xad4] +#else ldr r8, [r0, #0xb78] +#endif mov r0, r8 bl EntityIsValid__022F7364 cmp r0, #0 @@ -3999,7 +4349,11 @@ _022FA788: ldr r0, [r4] add r0, r0, r7, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr sl, [r0, #0xad4] +#else ldr sl, [r0, #0xb78] +#endif mov r0, sl bl EntityIsValid__022F7364 cmp r0, #0 @@ -4028,7 +4382,9 @@ TryEndStatusWithAbility: ; 0x022FA7DC sub sp, sp, #4 mov r5, r1 mov r2, #0x16 +#ifndef JAPAN mov r3, #1 +#endif mov r6, r0 ldr r4, [r5, #0xb4] bl DefenderAbilityIsActive__022F96CC @@ -4044,7 +4400,9 @@ _022FA81C: mov r0, r6 mov r1, r5 mov r2, #0x40 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__022F96CC cmp r0, #0 beq _022FA850 @@ -4058,7 +4416,9 @@ _022FA850: mov r0, r6 mov r1, r5 mov r2, #0x42 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__022F96CC cmp r0, #0 beq _022FA884 @@ -4072,7 +4432,9 @@ _022FA884: mov r0, r6 mov r1, r5 mov r2, #0x29 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__022F96CC cmp r0, #0 beq _022FA8B8 @@ -4086,14 +4448,18 @@ _022FA8B8: mov r0, r6 mov r1, r5 mov r2, #0x36 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__022F96CC cmp r0, #0 bne _022FA8F0 mov r0, r6 mov r1, r5 mov r2, #0x49 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__022F96CC cmp r0, #0 beq _022FA924 @@ -4116,7 +4482,9 @@ _022FA924: mov r0, r6 mov r1, r5 mov r2, #0x41 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__022F96CC cmp r0, #0 beq _022FA95C @@ -4131,7 +4499,9 @@ _022FA95C: mov r0, r6 mov r1, r5 mov r2, #0x45 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__022F96CC cmp r0, #0 beq _022FA998 @@ -4177,24 +4547,29 @@ _022FA9FC: arm_func_start ov29_022FAA04 ov29_022FAA04: ; 0x022FAA04 +#ifdef JAPAN +#define OV29_022FAA04_OFFSET -4 +#else +#define OV29_022FAA04_OFFSET 0 +#endif ldr ip, [r0, #0xb4] mov r3, #0 _022FAA0C: add r2, ip, r3, lsl #3 - ldrb r0, [r2, #0x124] + ldrb r0, [r2, #0x124 + OV29_022FAA04_OFFSET] add r3, r3, #1 cmp r3, #4 bic r0, r0, #0x10 - strb r0, [r2, #0x124] + strb r0, [r2, #0x124 + OV29_022FAA04_OFFSET] blt _022FAA0C - ldrb r0, [ip, #0x144] + ldrb r0, [ip, #0x144 + OV29_022FAA04_OFFSET] bic r0, r0, #0x10 - strb r0, [ip, #0x144] + strb r0, [ip, #0x144 + OV29_022FAA04_OFFSET] ldrh r0, [r1, #4] cmp r0, #0x160 - ldreqb r0, [ip, #0x144] + ldreqb r0, [ip, #0x144 + OV29_022FAA04_OFFSET] orreq r0, r0, #0x10 - streqb r0, [ip, #0x144] + streqb r0, [ip, #0x144 + OV29_022FAA04_OFFSET] ldrneb r0, [r1] orrne r0, r0, #0x10 strneb r0, [r1] @@ -4203,13 +4578,22 @@ _022FAA0C: arm_func_start ov29_022FAA58 ov29_022FAA58: ; 0x022FAA58 +#ifdef JAPAN +#define OV29_022FAA58_OFFSET -4 +#else +#define OV29_022FAA58_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x14 ldr r1, _022FAC90 ; =DUNGEON_PTR mov sl, r0 ldr r0, [r1] mov r6, #0 +#ifdef JAPAN + add r0, r0, #0x284 +#else add r0, r0, #0x328 +#endif add r4, r0, #0x12800 _022FAA78: ldr r5, [r4, r6, lsl #2] @@ -4225,7 +4609,7 @@ _022FAA78: ldr sb, [r5, #0xb4] mov r8, #0 mov r7, r8 - add fp, sb, #0x124 + add fp, sb, #0x124 + OV29_022FAA58_OFFSET _022FAAB0: ldrb r1, [fp, r7, lsl #3] add r0, fp, r7, lsl #3 @@ -4261,7 +4645,7 @@ _022FAB00: add r1, sp, #4 mov r0, r0, asr #0xf ldrsh r0, [r1, r0] - add r1, sb, #0x124 + add r1, sb, #0x124 + OV29_022FAA58_OFFSET add r1, r1, r0, lsl #3 ldrb r0, [r1, #6] add r0, r0, #1 @@ -4286,8 +4670,13 @@ _022FAB58: mov r0, #1 mov r1, #0x37 bl ov29_0234B084 +#ifdef JAPAN + ldr r1, _022FC21C ; =0x0000095F + mov r0, r5 +#else mov r0, r5 mov r1, #0xc20 +#endif bl LogMessageByIdWithPopupCheckUser _022FAB98: add r0, r6, #1 @@ -4305,13 +4694,13 @@ _022FABB4: beq _022FAC74 ldr r6, [sb, #0xb4] mov r7, fp - add r5, r6, #0x124 + add r5, r6, #0x124 + OV29_022FAA58_OFFSET b _022FABFC _022FABD8: add r0, r5, r7, lsl #3 bl GetMaxPp add r1, r6, r7, lsl #3 - ldrb r1, [r1, #0x12a] + ldrb r1, [r1, #0x12a + OV29_022FAA58_OFFSET] cmp r1, r0 blt _022FAC04 add r0, r7, #1 @@ -4360,7 +4749,12 @@ _022FAC74: ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _022FAC90: .word DUNGEON_PTR +#ifdef JAPAN +_022FC21C: .word 0x0000095F +_022FAC94: .word 0x00000962 +#else _022FAC94: .word 0x00000C23 +#endif arm_func_end ov29_022FAA58 arm_func_start ExclusiveItemEffectIsActive__022FAC98 @@ -4371,7 +4765,11 @@ ExclusiveItemEffectIsActive__022FAC98: ; 0x022FAC98 cmp r0, #0 movne r0, #0 ldmneia sp!, {r3, pc} +#ifdef JAPAN + add r0, r2, #0x224 +#else add r0, r2, #0x228 +#endif bl ExclusiveItemEffectFlagTest ldmia sp!, {r3, pc} arm_func_end ExclusiveItemEffectIsActive__022FAC98 @@ -4384,7 +4782,11 @@ ov29_022FACBC: ; 0x022FACBC mov sb, r0 ldr r0, [r1] mov r8, #0 +#ifdef JAPAN + add r0, r0, #0x284 +#else add r0, r0, #0x328 +#endif ldr r5, _022FAD48 ; =0x000003E7 add r7, r0, #0x12800 mov r4, r8 @@ -4421,17 +4823,22 @@ _022FAD48: .word 0x000003E7 arm_func_start ov29_022FAD4C ov29_022FAD4C: ; 0x022FAD4C +#ifdef JAPAN +#define OV29_022FAD4C_OFFSET -0xA4 +#else +#define OV29_022FAD4C_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} ldr r1, _022FAF00 ; =DUNGEON_PTR mov r8, #0 ldr r1, [r1] sub r3, r8, #1 add r2, r1, #0xcc00 - ldrsh r4, [r2, #0xe4] - add r1, r1, #0x328 + ldrsh r4, [r2, #0xe4 + OV29_022FAD4C_OFFSET] + add r1, r1, #0x328 + OV29_022FAD4C_OFFSET add r5, r1, #0x12800 cmp r4, r3 - ldreqsh r1, [r2, #0xe6] + ldreqsh r1, [r2, #0xe6 + OV29_022FAD4C_OFFSET] mov sb, r0 moveq r0, r3 cmpeq r1, r0 @@ -4473,8 +4880,13 @@ _022FADEC: bne _022FAEEC cmp sb, #0 bne _022FAE14 +#ifdef JAPAN + mov r0, r6 + mov r1, #0x960 +#else ldr r1, _022FAF04 ; =0x00000C21 mov r0, r6 +#endif bl LogMessageByIdWithPopupCheckUser _022FAE14: bl GetLeader @@ -4545,7 +4957,9 @@ _022FAEEC: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 _022FAF00: .word DUNGEON_PTR +#ifndef JAPAN _022FAF04: .word 0x00000C21 +#endif arm_func_end ov29_022FAD4C arm_func_start ov29_022FAF08 @@ -4555,7 +4969,11 @@ ov29_022FAF08: ; 0x022FAF08 mov r6, r0 ldr r0, [r1] mov r5, #0 +#ifdef JAPAN + add r0, r0, #0x284 +#else add r0, r0, #0x328 +#endif add r8, r0, #0x12800 bl IsCurrentFixedRoomBossFight cmp r0, #0 @@ -4604,8 +5022,13 @@ _022FAF7C: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 _022FAFC8: .word DUNGEON_PTR +#ifdef JAPAN +_022FAFCC: .word 0x00012A54 +_022FAFD0: .word 0x00000961 +#else _022FAFCC: .word 0x00012AF8 _022FAFD0: .word 0x00000C22 +#endif arm_func_end ov29_022FAF08 arm_func_start ov29_022FAFD4 @@ -4628,7 +5051,11 @@ GetTeamMemberWithIqSkill: ; 0x022FAFF8 mov r4, #0 ldr r1, [r1] mov r5, r0 +#ifdef JAPAN + add r0, r1, #0x284 +#else add r0, r1, #0x328 +#endif mov r7, r4 add r6, r0, #0x12800 b _022FB050 @@ -4692,14 +5119,22 @@ CountMovesOutOfPp: ; 0x022FB0A8 mov r3, #1 _022FB0C0: add r1, ip, lr, lsl #3 +#ifdef JAPAN + ldrb r1, [r1, #0x120] +#else ldrb r1, [r1, #0x124] +#endif tst r1, #1 movne r1, r3 moveq r1, r2 tst r1, #0xff beq _022FB0F4 add r1, ip, lr, lsl #3 +#ifdef JAPAN + ldrb r1, [r1, #0x126] +#else ldrb r1, [r1, #0x12a] +#endif cmp r1, #0 addeq r0, r0, #1 moveq r0, r0, lsl #0x10 @@ -4721,13 +5156,21 @@ HasSuperEffectiveMoveAgainstUser: ; 0x022FB10C mov r7, #0 mov sl, r0 mov r8, r2 +#ifdef JAPAN + add r4, r6, #0x120 +#else add r4, r6, #0x124 +#endif mov fp, r7 mov r5, #1 b _022FB198 _022FB134: add r0, r6, r7, lsl #3 +#ifdef JAPAN + ldrb r0, [r0, #0x120] +#else ldrb r0, [r0, #0x124] +#endif tst r0, #1 movne r0, r5 moveq r0, fp @@ -4770,7 +5213,11 @@ ov29_022FB1A8: ; 0x022FB1A8 b _022FB204 _022FB1C0: add r0, r6, r7, lsl #3 +#ifdef JAPAN + ldrb r0, [r0, #0x120] +#else ldrb r0, [r0, #0x124] +#endif tst r0, #1 movne r0, r5 moveq r0, r4 @@ -4778,7 +5225,11 @@ _022FB1C0: beq _022FB1F8 add r0, r6, r7, lsl #3 add r0, r0, #0x100 +#ifdef JAPAN + ldrh r0, [r0, #0x24] +#else ldrh r0, [r0, #0x28] +#endif bl IsOneHitKoMove cmp r0, #0 movne r0, #1 @@ -5001,9 +5452,15 @@ _022FB508: add sp, sp, #0x74 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +_022FB510: .word 0x00000963 +_022FB514: .word BAG_ITEMS_PTR_MIRROR +_022FB518: .word 0x00000964 +#else _022FB510: .word 0x00000C24 _022FB514: .word BAG_ITEMS_PTR_MIRROR _022FB518: .word 0x00000C25 +#endif arm_func_end TryEatItem arm_func_start ov29_022FB51C @@ -5017,6 +5474,7 @@ ov29_022FB51C: ; 0x022FB51C ldmia sp!, {r3, pc} arm_func_end ov29_022FB51C +#ifndef JAPAN arm_func_start ov29_022FB538 ov29_022FB538: ; 0x022FB538 stmdb sp!, {r4, r5, r6, r7, r8, lr} @@ -5069,6 +5527,7 @@ _022FB5DC: .align 2, 0 _022FB5E8: .word DUNGEON_PTR arm_func_end ov29_022FB538 +#endif arm_func_start CheckSpawnThreshold CheckSpawnThreshold: ; 0x022FB5EC @@ -5187,7 +5646,11 @@ ov29_022FB718: ; 0x022FB718 mov r8, #0 ldrnesh r1, [r4, #0x16] ldrnesh r0, [r0] +#ifdef JAPAN + add r5, r4, #0x120 +#else add r5, r4, #0x124 +#endif mov fp, r8 addne r0, r1, r0 strneh r0, [r4, #0x16] @@ -5256,7 +5719,11 @@ ov29_022FB83C: ; 0x022FB83C ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} ldr r8, [sl, #0xb4] mov r7, #0 +#ifdef JAPAN + add r6, r8, #0x120 +#else add r6, r8, #0x124 +#endif mov r4, r7 mov r5, #1 _022FB868: @@ -5287,7 +5754,11 @@ _022FB88C: cmp r1, r0 movgt r1, r0 strh r1, [r8, #0x10] +#ifdef JAPAN + add r6, r8, #0x120 +#else add r6, r8, #0x124 +#endif mov r4, sb mov r5, #1 _022FB8DC: @@ -5344,7 +5815,11 @@ _022FB92C: ldr r0, [r4] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r0, [r0, #0xa84] +#else ldr r0, [r0, #0xb28] +#endif bl ov29_022FB718 add r0, r5, #1 mov r0, r0, lsl #0x10 @@ -5360,7 +5835,11 @@ _022FB92C: moveq r1, #0 ldr r0, [r0] add r0, r0, #0x1a000 +#ifdef JAPAN + strb r1, [r0, #0x19d] +#else strb r1, [r0, #0x241] +#endif ldmia sp!, {r3, r4, r5, pc} #endif .align 2, 0 @@ -5413,7 +5892,11 @@ ov29_022FB9E0: ; 0x022FB9E0 beq _022FBA4C ldr r1, [r5, #0xb4] mov r0, #0 +#ifdef JAPAN + add ip, r1, #0x120 +#else add ip, r1, #0x124 +#endif mov r2, r0 mov r3, #1 b _022FBA44 @@ -5479,8 +5962,13 @@ ov29_022FBAB4: ; 0x022FBAB4 cmp r2, #0 addne r0, r2, #0x100 movne r1, #0 +#ifdef JAPAN + strneh r1, [r0, #0x8e] + strne r1, [r2, #0x188] +#else strneh r1, [r0, #0x92] strne r1, [r2, #0x18c] +#endif bx lr arm_func_end ov29_022FBAB4 @@ -5514,10 +6002,15 @@ IsExperienceLocked: ; 0x022FBAF0 arm_func_start ov29_022FBB1C ov29_022FBB1C: ; 0x022FBB1C +#ifdef JAPAN + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r4, _022FBBE4 ; =DUNGEON_PTR +#else stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} sub sp, sp, #4 ldr r4, _022FBBE4 ; =DUNGEON_PTR ldr sl, _022FBBE8 ; =0x00019914 +#endif mov r7, #0 add r6, sp, #0 mov r5, #3 @@ -5525,7 +6018,11 @@ _022FBB38: ldr r0, [r4] add r0, r0, r7, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r8, [r0, #0xad4] +#else ldr r8, [r0, #0xb78] +#endif mov r0, r8 bl EntityIsValid__022F7364 cmp r0, #0 @@ -5535,7 +6032,12 @@ _022FBB38: ldrsh r1, [sb, #4] add r0, r8, #0x2c add r1, r2, r1, lsl #1 +#ifdef JAPAN + add r1, r1, #0x19800 + ldrsh r1, [r1, #0x70] +#else ldrsh r1, [r1, sl] +#endif strh r1, [r8, #0xa8] bl InitAnimationControlWithSet__0201C0CC ldrsh r1, [r8, #0xa8] @@ -5564,11 +6066,17 @@ _022FBBD0: add r7, r7, #1 cmp r7, #0x14 blt _022FBB38 +#ifdef JAPAN + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +#else add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} +#endif .align 2, 0 _022FBBE4: .word DUNGEON_PTR +#ifndef JAPAN _022FBBE8: .word 0x00019914 +#endif arm_func_end ov29_022FBB1C arm_func_start ov29_022FBBEC @@ -5582,7 +6090,11 @@ _022FBC00: ldr r0, [r6] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r7, [r0, #0xad4] +#else ldr r7, [r0, #0xb78] +#endif mov r0, r7 bl EntityIsValid__022F7364 cmp r0, #0 @@ -5613,7 +6125,11 @@ _022FBC5C: ldr r0, [r4] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r0, [r0, #0xa84] +#else ldr r0, [r0, #0xb28] +#endif bl EntityIsValid__022F7364 cmp r0, #0 moveq r0, #1 @@ -5639,14 +6155,22 @@ _022FBCA8: ldr r0, [r6] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r0, [r0, #0xa84] +#else ldr r0, [r0, #0xb28] +#endif bl EntityIsValid__022F7364 cmp r0, #0 beq _022FBCE4 ldr r0, [r6] 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] ldrsh r0, [r0, #2] bl GetBodySize @@ -5664,6 +6188,7 @@ _022FBCE4: _022FBD04: .word DUNGEON_PTR arm_func_end ov29_022FBC94 +#ifndef JAPAN arm_func_start ov29_022FBD08 ov29_022FBD08: ; 0x022FBD08 ldr r0, _022FBD20 ; =DUNGEON_PTR @@ -5735,6 +6260,7 @@ _022FBDD4: .align 2, 0 _022FBDDC: .word DUNGEON_PTR arm_func_end ov29_022FBD80 +#endif arm_func_start ov29_022FBDE0 ov29_022FBDE0: ; 0x022FBDE0 @@ -5816,8 +6342,13 @@ InitOtherMonsterData: ; 0x022FBE58 strb r5, [ip, #0x1c] ldrb r3, [r3, #9] strb r3, [ip, #0x1d] +#ifdef JAPAN + strh r1, [lr, #0x64] + strb r2, [ip, #0x166] +#else strh r1, [lr, #0x68] strb r2, [ip, #0x16a] +#endif ldrsh r1, [ip, #2] ldrsh r2, [ip, #0xe] bl EnableAllLearnableIqSkills @@ -5863,12 +6394,17 @@ _022FBF54: .word DUNGEON_PTR arm_func_start InitEnemySpawnStats InitEnemySpawnStats: ; 0x022FBF58 +#ifdef JAPAN +#define INIT_ENEMY_SPAWN_STATS_OFFSET -0x50 +#else +#define INIT_ENEMY_SPAWN_STATS_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x218 ldr r1, _022FC230 ; =DUNGEON_PTR mov r0, #0 ldr r1, [r1] - add r1, r1, #0xf4 + add r1, r1, #0xf4 + INIT_ENEMY_SPAWN_STATS_OFFSET add r5, r1, #0x3400 bl DungeonRngSetSecondary bl ov29_022FBF08 @@ -5977,7 +6513,7 @@ _022FC0EC: add r0, r0, r2 add r0, r0, #0x3000 add r2, r2, #1 - strb sl, [r0, #0xb74] + strb sl, [r0, #0xb74 + INIT_ENEMY_SPAWN_STATS_OFFSET] cmp r2, #0x258 blt _022FC0EC mvn r0, #0 @@ -6007,7 +6543,7 @@ _022FC128: mov sb, r1, asr #0x10 add r0, r0, r1, asr #16 add r0, r0, #0x3000 - ldrb r0, [r0, #0xb74] + ldrb r0, [r0, #0xb74 + INIT_ENEMY_SPAWN_STATS_OFFSET] cmp r0, #0 bne _022FC190 ldr r1, [sp, #4] @@ -6030,7 +6566,7 @@ _022FC194: add r0, r0, r6 add r1, r0, #0x3000 mov r0, #1 - strb r0, [r1, #0xb74] + strb r0, [r1, #0xb74 + INIT_ENEMY_SPAWN_STATS_OFFSET] b _022FC1E4 _022FC1C8: ldr r0, _022FC230 ; =DUNGEON_PTR @@ -6039,7 +6575,7 @@ _022FC1C8: add r5, r5, #2 add r0, r0, r6 add r0, r0, #0x3000 - strb r1, [r0, #0xb74] + strb r1, [r0, #0xb74 + INIT_ENEMY_SPAWN_STATS_OFFSET] _022FC1E4: add sl, sl, #1 _022FC1E8: @@ -6053,10 +6589,10 @@ _022FC1FC: ldr r0, [r1] add r0, r0, r4 add r0, r0, #0x3000 - ldrb r3, [r0, #0xb74] + ldrb r3, [r0, #0xb74 + INIT_ENEMY_SPAWN_STATS_OFFSET] add r4, r4, #1 cmp r3, #0 - streqb r2, [r0, #0xb74] + streqb r2, [r0, #0xb74 + INIT_ENEMY_SPAWN_STATS_OFFSET] cmp r4, #0x258 blt _022FC1FC bl ov29_022FBF30 @@ -6084,7 +6620,11 @@ InitEnemyStatsAndMoves: ; 0x022FC234 mov r4, r0, asr #0x10 ldr r1, [r2] mov fp, #0 +#ifdef JAPAN + add r0, r1, #0xa4 +#else add r0, r1, #0xf4 +#endif add r5, r0, #0x3400 mov r3, r5 mov r0, #0x12 @@ -6276,6 +6816,11 @@ _022FC508: .word IQ_SKILLS arm_func_start SpawnTeam SpawnTeam: ; 0x022FC50C +#ifdef JAPAN +#define SPAWN_TEAM_OFFSET -0xA4 +#else +#define SPAWN_TEAM_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x44 mov sl, r0 @@ -6284,8 +6829,8 @@ SpawnTeam: ; 0x022FC50C ldr r0, _022FC98C ; =DUNGEON_PTR ldr r0, [r0] add r1, r0, #0xcc00 - ldrsh r0, [r1, #0xe0] - ldrsh r1, [r1, #0xe2] + ldrsh r0, [r1, #0xe0 + SPAWN_TEAM_OFFSET] + ldrsh r1, [r1, #0xe2 + SPAWN_TEAM_OFFSET] bl GetTile ldrb fp, [r0, #7] mov r4, #0 @@ -6451,8 +6996,8 @@ _022FC750: ldrsh r7, [sp, #0x20] ldr r0, [r0] add r0, r0, #0xcc00 - ldrsh r1, [r0, #0xe2] - ldrsh r2, [r0, #0xe0] + ldrsh r1, [r0, #0xe2 + SPAWN_TEAM_OFFSET] + ldrsh r2, [r0, #0xe0 + SPAWN_TEAM_OFFSET] add r1, r7, r1 add r0, r8, r2 bl GetTile @@ -6472,8 +7017,8 @@ _022FC750: stmib sp, {r0, r1, sl} str r1, [sp, #0x10] add r0, r2, #0xcc00 - ldrsh r1, [r0, #0xe0] - ldrsh r2, [r0, #0xe2] + ldrsh r1, [r0, #0xe0 + SPAWN_TEAM_OFFSET] + ldrsh r2, [r0, #0xe2 + SPAWN_TEAM_OFFSET] ldrsh r0, [r5, #0xc] mov r3, r5 add r1, r8, r1 @@ -6503,8 +7048,8 @@ _022FC818: ldrsh r4, [sp, #0x16] ldr r0, [r0] add r0, r0, #0xcc00 - ldrsh r1, [r0, #0xe2] - ldrsh r2, [r0, #0xe0] + ldrsh r1, [r0, #0xe2 + SPAWN_TEAM_OFFSET] + ldrsh r2, [r0, #0xe0 + SPAWN_TEAM_OFFSET] add r1, r4, r1 add r0, r6, r2 bl GetTile @@ -6521,8 +7066,8 @@ _022FC818: stmib sp, {r0, r1, sl} str r1, [sp, #0x10] add r0, r2, #0xcc00 - ldrsh r1, [r0, #0xe0] - ldrsh r2, [r0, #0xe2] + ldrsh r1, [r0, #0xe0 + SPAWN_TEAM_OFFSET] + ldrsh r2, [r0, #0xe2 + SPAWN_TEAM_OFFSET] ldrsh r0, [r5, #0xc] mov r3, r5 add r1, r6, r1 @@ -6540,15 +7085,35 @@ _022FC8BC: blt _022FC6F0 bl ov29_022FCD04 mov r2, #0 +#ifdef JAPAN + mov sb, r2 +#else mov r8, r2 +#endif add r1, sp, #0x18 _022FC8E0: add r0, r2, #1 mov r0, r0, lsl #0x10 +#ifdef JAPAN + strb sb, [r1, r2] +#else strb r8, [r1, r2] +#endif mov r2, r0, asr #0x10 cmp r2, #5 blt _022FC8E0 +#ifdef JAPAN + ldr r5, _022FC98C ; =DUNGEON_PTR + mov r7, #0 + mov r8, #1 + add r6, sp, #0x18 + mov r4, #0x23c +_022FC908: + ldr r0, [r5] + add r0, r0, sb, lsl #2 + add r0, r0, #0x12000 + ldr r0, [r0, #0xa84] +#else ldr r4, _022FC98C ; =DUNGEON_PTR mov r6, #0 mov r7, #1 @@ -6558,9 +7123,21 @@ _022FC908: add r0, r0, r8, lsl #2 add r0, r0, #0x12000 ldr r0, [r0, #0xb28] +#endif bl EntityIsValid__022FC99C cmp r0, #0 beq _022FC964 +#ifdef JAPAN + mul r1, sb, r4 + ldr r0, [r5] + add r0, r0, #0x56 + add r2, r0, #0x800 + ldrb r0, [r2, r1] + add r2, r2, r1 + tst r0, #1 + movne r0, r8 + moveq r0, r7 +#else ldr r0, [r4] add r1, r8, r8, lsl #3 add r0, r0, #0x56 @@ -6570,9 +7147,21 @@ _022FC908: tst r0, #1 movne r0, r7 moveq r0, r6 +#endif tst r0, #0xff ldrneb r1, [r2, #1] cmpne r1, #0 +#ifdef JAPAN + addne r0, sb, #1 + andne r0, r0, #0xff + strneb r0, [r6, r1] + strneb r0, [r2, #1] +_022FC964: + add r0, sb, #1 + mov r0, r0, lsl #0x10 + mov sb, r0, asr #0x10 + cmp sb, #4 +#else addne r0, r8, #1 andne r0, r0, #0xff strneb r0, [r5, r1] @@ -6582,6 +7171,7 @@ _022FC964: mov r0, r0, lsl #0x10 mov r8, r0, asr #0x10 cmp r8, #4 +#endif blt _022FC908 add r0, sp, #0x18 bl sub_0200F9B4 diff --git a/asm/overlay_29_022FC9C0.s b/asm/overlay_29_022FC9C0.s index a7afcce9..1d8ec606 100644 --- a/asm/overlay_29_022FC9C0.s +++ b/asm/overlay_29_022FC9C0.s @@ -65,8 +65,13 @@ _022FCA60: ldreq r0, [r0] ldrnesh r8, [r4, #6] addeq r0, r0, #0xcc00 +#ifdef JAPAN + ldreqsh sb, [r0, #0x3c] + ldreqsh r8, [r0, #0x3e] +#else ldreqsh sb, [r0, #0xe0] ldreqsh r8, [r0, #0xe2] +#endif mov r0, sb mov r1, r8 bl GetTile @@ -244,7 +249,11 @@ _022FCD14: ldr r0, [r4] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r6, [r0, #0xa84] +#else ldr r6, [r0, #0xb28] +#endif mov r0, r6 bl EntityIsValid__022FC99C cmp r0, #0 @@ -329,7 +338,11 @@ _022FCE34: ldr r1, [r0] mov r0, #0x38 add r1, r1, #0x3000 +#ifdef JAPAN + strb r2, [r1, #0xd95] +#else strb r2, [r1, #0xe39] +#endif bl DungeonRandInt mov r6, r0 mov r0, #0x20 @@ -431,8 +444,13 @@ _022FCFB4: add r0, sp, #0 ldr r1, [r1] mov r2, #0 +#ifdef JAPAN + add r1, r1, #0x3c + add r1, r1, #0xcc00 +#else add r1, r1, #0xce0 add r1, r1, #0xc000 +#endif bl FindFarthestUnoccupiedTileWithin2 cmp r0, #0 ldrnesh r1, [sp] @@ -446,8 +464,13 @@ _022FCFEC: add r0, sp, #0 ldr r1, [r1] mov r2, #0 +#ifdef JAPAN + add r1, r1, #0x3c + add r1, r1, #0xcc00 +#else add r1, r1, #0xce0 add r1, r1, #0xc000 +#endif bl FindClosestUnoccupiedTileWithin2 cmp r0, #0 ldrnesh r1, [sp] @@ -488,6 +511,11 @@ _022FD080: .word DUNGEON_PTR arm_func_start SpawnMonster SpawnMonster: ; 0x022FD084 +#ifdef JAPAN +#define SPAWN_MONSTER_OFFSET -0xA4 +#else +#define SPAWN_MONSTER_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, lr} sub sp, sp, #8 mov r7, r0 @@ -549,7 +577,7 @@ _022FD154: bhi _022FD194 add r0, r5, #0xe str r0, [sp] - add r0, r5, #0x124 + add r0, r5, #0x124 + SPAWN_MONSTER_OFFSET add r1, r5, #0x12 add r2, r5, #0x1a add r3, r5, #0x1c @@ -560,7 +588,7 @@ _022FD154: b _022FD1F0 _022FD194: ldrsh r2, [r5, #2] - add r0, r5, #0x124 + add r0, r5, #0x124 + SPAWN_MONSTER_OFFSET add r1, r5, #0x12 str r2, [sp] ldrb ip, [r5, #0xa] @@ -630,7 +658,7 @@ _022FD278: strh r1, [r5, #0x10] ldr r1, [r7, #4] mov r0, r4 - str r1, [r5, #0x120] + str r1, [r5, #0x120 + SPAWN_MONSTER_OFFSET] mov r1, #1 bl ov29_022FB83C ldrb r0, [r7, #2] @@ -660,7 +688,11 @@ _022FD2F8: .align 2, 0 _022FD300: .word ov29_0237C690 _022FD304: .word DUNGEON_PTR +#ifdef JAPAN +_022FD308: .word 0x0002CA64 +#else _022FD308: .word 0x0002CB08 +#endif _022FD30C: .word ov10_022C45A4 _022FD310: .word 0x000003E7 _022FD314: .word ov10_022C489C @@ -713,6 +745,11 @@ _022FD3AC: arm_func_start InitTeamMember InitTeamMember: ; 0x022FD3B4 +#ifdef JAPAN +#define INIT_TEAM_MEMBER_OFFSET -4 +#else +#define INIT_TEAM_MEMBER_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} sub sp, sp, #0x14 mov r5, r3 @@ -737,8 +774,13 @@ InitTeamMember: ; 0x022FD3B4 cmp r0, #0 ldrne r0, _022FD780 ; =DUNGEON_PTR ldrne r0, [r0] +#ifdef JAPAN + addne r0, r0, #0x3d00 + ldrnesh r7, [r0, #0x96] +#else addne r0, r0, #0x3e00 ldrnesh r7, [r0, #0x3a] +#endif moveq r7, r1 _022FD420: ldrb r0, [sp, #0x48] @@ -816,7 +858,7 @@ _022FD520: strb r0, [r1, #0x1c] blt _022FD520 add r3, r5, #0x1c - add r2, r8, #0x124 + add r2, r8, #0x124 + INIT_TEAM_MEMBER_OFFSET mov r1, #0x11 _022FD550: ldrh r0, [r3], #2 @@ -824,7 +866,7 @@ _022FD550: strh r0, [r2], #2 bne _022FD550 mov r2, #0 - add r1, r8, #0x124 + add r1, r8, #0x124 + INIT_TEAM_MEMBER_OFFSET mov sb, r2 mov sl, #1 _022FD570: @@ -842,13 +884,13 @@ _022FD570: strneb r3, [r1, r0] cmp r2, #4 blt _022FD570 - ldrb r1, [r8, #0x144] + ldrb r1, [r8, #0x144 + INIT_TEAM_MEMBER_OFFSET] add r0, r5, #0x4c add sb, r8, #0x90 bic r2, r1, #0x10 and r1, r2, #0xff bic r1, r1, #0x20 - strb r1, [r8, #0x144] + strb r1, [r8, #0x144 + INIT_TEAM_MEMBER_OFFSET] ldrb r1, [r5, #2] add r3, r8, #0x100 mov r6, #0 @@ -869,13 +911,13 @@ _022FD570: ldrb r1, [r5, #4] strb r1, [r8, #0x49] ldrh r1, [r5, #0x44] - strh r1, [r3, #0x46] + strh r1, [r3, #0x46 + INIT_TEAM_MEMBER_OFFSET] ldrh r1, [r5, #0x46] - strh r1, [r3, #0x48] + strh r1, [r3, #0x48 + INIT_TEAM_MEMBER_OFFSET] ldrh r1, [r5, #0x48] - strh r1, [r3, #0x4a] + strh r1, [r3, #0x4a + INIT_TEAM_MEMBER_OFFSET] ldrh r1, [r5, #0x4a] - strh r1, [r3, #0x4c] + strh r1, [r3, #0x4c + INIT_TEAM_MEMBER_OFFSET] ldrsh r1, [r5, #0xa] strh r1, [r8, #0xc] ldrh r1, [r5, #0x3e] @@ -885,9 +927,11 @@ _022FD570: ldrh r1, [r5, #0x42] strh r1, [r8, #0x66] strb r6, [r8, #0xfc] +#ifndef JAPAN strb r6, [r8, #0x103] - strb r6, [r8, #0x23c] - strb r6, [r8, #0x23d] +#endif + strb r6, [r8, #0x23c + INIT_TEAM_MEMBER_OFFSET] + strb r6, [r8, #0x23d + INIT_TEAM_MEMBER_OFFSET] strh r6, [r8, #0x68] bl ov29_023021F0 ldrb r1, [sp, #0x44] @@ -915,7 +959,7 @@ _022FD570: cmp r1, #0 movne r0, #0 bne _022FD6D8 - add r0, r2, #0x228 + add r0, r2, #0x228 + INIT_TEAM_MEMBER_OFFSET mov r1, #0x61 bl ExclusiveItemEffectFlagTest _022FD6D8: @@ -977,6 +1021,11 @@ _022FD79C: .word ov10_022C4858 arm_func_start ov29_022FD7A0 ov29_022FD7A0: ; 0x022FD7A0 +#ifdef JAPAN +#define OV29_022FD7A0_OFFSET -4 +#else +#define OV29_022FD7A0_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} sub sp, sp, #0x20 mov r7, r0 @@ -1054,10 +1103,10 @@ _022FD864: strh r0, [r7, #0xac] ldr r1, [sp, #0xc] ldr r0, [r7, #0xb4] - strb r1, [r0, #0x17a] + strb r1, [r0, #0x17a + OV29_022FD7A0_OFFSET] ldr r1, [sp, #8] ldr r0, [r7, #0xb4] - strb r1, [r0, #0x17b] + strb r1, [r0, #0x17b + OV29_022FD7A0_OFFSET] ldrb r0, [r5, #6] cmp r0, #0 beq _022FD904 @@ -1098,7 +1147,7 @@ _022FD94C: mov r3, #0 bl InitMonster ldrsh r2, [r5, #2] - add r0, r5, #0x124 + add r0, r5, #0x124 + OV29_022FD7A0_OFFSET add r1, r5, #0x12 str r2, [sp] ldrb r4, [r5, #0xa] @@ -1127,6 +1176,15 @@ _022FD9D0: .word 0x000003E7 arm_func_start InitMonster InitMonster: ; 0x022FD9D4 +#ifdef JAPAN +#define INIT_MONSTER_OFFSET -0xA4 +#define INIT_MONSTER_OFFSET_2 -4 +#define INIT_MONSTER_OFFSET_3 -1 +#else +#define INIT_MONSTER_OFFSET 0 +#define INIT_MONSTER_OFFSET_2 0 +#define INIT_MONSTER_OFFSET_3 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} sub sp, sp, #0xc ldr r4, _022FDDB0 ; =DUNGEON_PTR @@ -1173,7 +1231,7 @@ InitMonster: ; 0x022FD9D4 cmp r0, #0 bne _022FDAAC add r0, r1, #0x4000 - ldrb r0, [r0, #0xc6] + ldrb r0, [r0, #0xc6 + INIT_MONSTER_OFFSET] cmp r0, #0 beq _022FDAAC ldrb r0, [r6, #2] @@ -1192,19 +1250,19 @@ _022FDAB4: moveq r1, #1 ldreq r0, [r0] addeq r0, r0, #0x3000 - streqb r1, [r0, #0xe39] + streqb r1, [r0, #0xe39 + INIT_MONSTER_OFFSET] _022FDAD4: ldr r1, _022FDDB0 ; =DUNGEON_PTR mov r2, #0 ldr r0, [r1] add r0, r0, #0x3000 - ldr r0, [r0, #0xe2c] + ldr r0, [r0, #0xe2c + INIT_MONSTER_OFFSET] str r0, [r4, #0xb0] ldr r0, [r1] add r0, r0, #0x3000 - ldr r1, [r0, #0xe2c] + ldr r1, [r0, #0xe2c + INIT_MONSTER_OFFSET] add r1, r1, #1 - str r1, [r0, #0xe2c] + str r1, [r0, #0xe2c + INIT_MONSTER_OFFSET] str r2, [r4, #0xb4] ldrsh r0, [r6, #8] cmp r0, #0 @@ -1215,7 +1273,7 @@ _022FDB18: strb r0, [r4, #0xa] ldr r0, [r6, #4] mov r2, #1 - str r0, [r4, #0x120] + str r0, [r4, #0x120 + INIT_MONSTER_OFFSET_2] strh r2, [r4, #0xe] ldrsh r1, [r4, #2] add r0, r4, #0x90 @@ -1233,9 +1291,9 @@ _022FDB18: ldrh r0, [sp, #4] add r1, r4, #0x100 ldrh r2, [sp, #6] - strh r0, [r1, #0x46] + strh r0, [r1, #0x46 + INIT_MONSTER_OFFSET_2] mov r0, #0x64 - strh r2, [r1, #0x48] + strh r2, [r1, #0x48 + INIT_MONSTER_OFFSET_2] bl sub_02050FF8 strh r0, [sp] mov r0, r0, lsr #0x10 @@ -1243,22 +1301,22 @@ _022FDB18: ldrh r2, [sp] add r0, r4, #0x100 ldrh r1, [sp, #2] - strh r2, [r0, #0x4a] + strh r2, [r0, #0x4a + INIT_MONSTER_OFFSET_2] cmp r5, #0 - strh r1, [r0, #0x4c] + strh r1, [r0, #0x4c + INIT_MONSTER_OFFSET_2] ldrneh r1, [r5] - strneh r1, [r0, #0x7e] + strneh r1, [r0, #0x7e + INIT_MONSTER_OFFSET_2] ldrneh r1, [r5, #2] moveq r1, #0 - streqh r1, [r0, #0x7e] - strh r1, [r0, #0x80] + streqh r1, [r0, #0x7e + INIT_MONSTER_OFFSET_2] + strh r1, [r0, #0x80 + INIT_MONSTER_OFFSET_2] mov r3, #0 strh r3, [r4] - strb r3, [r4, #0x14e] - strb r3, [r4, #0x14f] + strb r3, [r4, #0x14e + INIT_MONSTER_OFFSET_2] + strb r3, [r4, #0x14f + INIT_MONSTER_OFFSET_2] add r0, r4, #0x200 - strh r3, [r0, #0xc] - strh r3, [r0, #0xe] + strh r3, [r0, #0xc + INIT_MONSTER_OFFSET_2] + strh r3, [r0, #0xe + INIT_MONSTER_OFFSET_2] strb r3, [r4, #0x7c] ldrh r2, [r7, #4] mov r0, r4 @@ -1269,67 +1327,67 @@ _022FDB18: str r3, [r4, #0x84] str r3, [r4, #0x88] strh r3, [r4, #0x80] - strb r3, [r4, #0x10b] - str r3, [r4, #0x188] - strb r3, [r4, #0x10c] - strb r3, [r4, #0x23c] - strb r3, [r4, #0x23d] - strb r3, [r4, #0x23f] + strb r3, [r4, #0x10b + INIT_MONSTER_OFFSET_3] + str r3, [r4, #0x188 + INIT_MONSTER_OFFSET_2] + strb r3, [r4, #0x10c + INIT_MONSTER_OFFSET_3] + strb r3, [r4, #0x23c + INIT_MONSTER_OFFSET_2] + strb r3, [r4, #0x23d + INIT_MONSTER_OFFSET_2] + strb r3, [r4, #0x23f + INIT_MONSTER_OFFSET_2] bl SubInitMonster add r0, r4, #0x62 bl ItemZInit mov r2, #0 strh r2, [r4, #0x68] - str r2, [r4, #0x218] - str r2, [r4, #0x21c] + str r2, [r4, #0x218 + INIT_MONSTER_OFFSET_2] + str r2, [r4, #0x21c + INIT_MONSTER_OFFSET_2] mov r0, #0xff - strb r0, [r4, #0x177] - strb r0, [r4, #0x178] - str r2, [r4, #0x214] - strb r2, [r4, #0x151] - strb r2, [r4, #0x150] - strb r2, [r4, #0x179] + strb r0, [r4, #0x177 + INIT_MONSTER_OFFSET_2] + strb r0, [r4, #0x178 + INIT_MONSTER_OFFSET_2] + str r2, [r4, #0x214 + INIT_MONSTER_OFFSET_2] + strb r2, [r4, #0x151 + INIT_MONSTER_OFFSET_2] + strb r2, [r4, #0x150 + INIT_MONSTER_OFFSET_2] + strb r2, [r4, #0x179 + INIT_MONSTER_OFFSET_2] add r0, r4, #0x200 - strh r2, [r0, #0x10] - strh r2, [r0, #0x12] - strb r2, [r4, #0x152] - strb r2, [r4, #0x153] + strh r2, [r0, #0x10 + INIT_MONSTER_OFFSET_2] + strh r2, [r0, #0x12 + INIT_MONSTER_OFFSET_2] + strb r2, [r4, #0x152 + INIT_MONSTER_OFFSET_2] + strb r2, [r4, #0x153 + INIT_MONSTER_OFFSET_2] add r0, r4, #0x100 - strh r2, [r0, #0x92] - str r2, [r4, #0x18c] - strb r2, [r4, #0x105] - strb r2, [r4, #0x104] - strb r2, [r4, #0x109] - strb r2, [r4, #0x155] + strh r2, [r0, #0x92 + INIT_MONSTER_OFFSET_2] + str r2, [r4, #0x18c + INIT_MONSTER_OFFSET_2] + strb r2, [r4, #0x105 + INIT_MONSTER_OFFSET_3] + strb r2, [r4, #0x104 + INIT_MONSTER_OFFSET_3] + strb r2, [r4, #0x109 + INIT_MONSTER_OFFSET_3] + strb r2, [r4, #0x155 + INIT_MONSTER_OFFSET_2] mov r1, #1 - strb r1, [r4, #0x156] - strh r2, [r0, #0x58] - strh r2, [r0, #0x5a] - strb r2, [r4, #0x15c] - strb r2, [r4, #0x15d] - strb r2, [r4, #0x15e] - strb r2, [r4, #0x15f] - strb r2, [r4, #0x17c] - strb r2, [r4, #0x106] - strb r2, [r4, #0x107] + strb r1, [r4, #0x156 + INIT_MONSTER_OFFSET_2] + strh r2, [r0, #0x58 + INIT_MONSTER_OFFSET_2] + strh r2, [r0, #0x5a + INIT_MONSTER_OFFSET_2] + strb r2, [r4, #0x15c + INIT_MONSTER_OFFSET_2] + strb r2, [r4, #0x15d + INIT_MONSTER_OFFSET_2] + strb r2, [r4, #0x15e + INIT_MONSTER_OFFSET_2] + strb r2, [r4, #0x15f + INIT_MONSTER_OFFSET_2] + strb r2, [r4, #0x17c + INIT_MONSTER_OFFSET_2] + strb r2, [r4, #0x106 + INIT_MONSTER_OFFSET_3] + strb r2, [r4, #0x107 + INIT_MONSTER_OFFSET_3] mov r0, #0x63 - strb r0, [r4, #0x10a] - strb r2, [r4, #0x162] - strb r2, [r4, #0x163] - strb r2, [r4, #0x164] - strb r2, [r4, #0x165] - strb r2, [r4, #0x170] + strb r0, [r4, #0x10a + INIT_MONSTER_OFFSET_3] + strb r2, [r4, #0x162 + INIT_MONSTER_OFFSET_2] + strb r2, [r4, #0x163 + INIT_MONSTER_OFFSET_2] + strb r2, [r4, #0x164 + INIT_MONSTER_OFFSET_2] + strb r2, [r4, #0x165 + INIT_MONSTER_OFFSET_2] + strb r2, [r4, #0x170 + INIT_MONSTER_OFFSET_2] mov r0, r7 - strb r2, [r4, #0x171] + strb r2, [r4, #0x171 + INIT_MONSTER_OFFSET_2] bl CalcSpeedStageWrapper mov r0, #1 - strb r0, [r4, #0x160] + strb r0, [r4, #0x160 + INIT_MONSTER_OFFSET_2] mov r0, #0 - strb r0, [r4, #0x172] - strb r0, [r4, #0x174] - strb r0, [r4, #0x173] - strb r0, [r4, #0x175] - strb r0, [r4, #0x176] + strb r0, [r4, #0x172 + INIT_MONSTER_OFFSET_2] + strb r0, [r4, #0x174 + INIT_MONSTER_OFFSET_2] + strb r0, [r4, #0x173 + INIT_MONSTER_OFFSET_2] + strb r0, [r4, #0x175 + INIT_MONSTER_OFFSET_2] + strb r0, [r4, #0x176 + INIT_MONSTER_OFFSET_2] ldrsh r1, [r4, #4] cmp r1, #0x32 ldrne r0, _022FDDB8 ; =0x0000028A @@ -1338,7 +1396,7 @@ _022FDB18: addne r0, r0, #1 cmpne r1, r0 moveq r0, #0 - streqb r0, [r4, #0x160] + streqb r0, [r4, #0x160 + INIT_MONSTER_OFFSET_2] ldr r1, _022FDDBC ; =ov29_0235276C ldr r0, _022FDDB0 ; =DUNGEON_PTR ldrh r3, [r1] @@ -1352,7 +1410,7 @@ _022FDB18: strh r1, [sp, #8] ldrsh r1, [r7, #6] strh r1, [sp, #0xa] - ldrb r3, [r0, #0x23c] + ldrb r3, [r0, #0x23c + INIT_MONSTER_OFFSET] ldrsh r1, [r4, #4] ldr r0, [r4, #0xb0] bl ov29_022DDA54 @@ -1364,17 +1422,17 @@ _022FDB18: bl ov29_022FA1D8 mov r1, #0 strh r1, [r4, #0xac] - str r1, [r4, #0x18c] + str r1, [r4, #0x18c + INIT_MONSTER_OFFSET_2] add r0, r4, #0x100 - strh r1, [r0, #0x90] - strb r1, [r4, #0x166] - strb r1, [r4, #0x167] - strb r1, [r4, #0x221] - strh r1, [r0, #0x68] + strh r1, [r0, #0x90 + INIT_MONSTER_OFFSET_2] + strb r1, [r4, #0x166 + INIT_MONSTER_OFFSET_2] + strb r1, [r4, #0x167 + INIT_MONSTER_OFFSET_2] + strb r1, [r4, #0x221 + INIT_MONSTER_OFFSET_2] + strh r1, [r0, #0x68 + INIT_MONSTER_OFFSET_2] mov r2, #0xff - add r0, r4, #0x224 + add r0, r4, #0x224 + INIT_MONSTER_OFFSET_2 mov r1, #0x18 - strb r2, [r4, #0x16a] + strb r2, [r4, #0x16a + INIT_MONSTER_OFFSET_2] bl MemZero add sp, sp, #0xc ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} @@ -1387,6 +1445,11 @@ _022FDDBC: .word ov29_0235276C arm_func_start SubInitMonster SubInitMonster: ; 0x022FDDC0 +#ifdef JAPAN +#define SUB_INIT_MONSTER_OFFSET -4 +#else +#define SUB_INIT_MONSTER_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} mov sl, r0 mov r2, #0 @@ -1429,15 +1492,15 @@ SubInitMonster: ; 0x022FDDC0 strb r2, [sl, #0xfa] strb r2, [sl, #0xfb] mov r0, #0xff - strb r0, [sl, #0x177] + strb r0, [sl, #0x177 + SUB_INIT_MONSTER_OFFSET] mov sb, r1 - strb r0, [sl, #0x178] + strb r0, [sl, #0x178 + SUB_INIT_MONSTER_OFFSET] mov r6, r2 _022FDE78: add r0, sl, r2 - strb r6, [r0, #0x114] + strb r6, [r0, #0x114 + SUB_INIT_MONSTER_OFFSET] add r2, r2, #1 - strb r6, [r0, #0x119] + strb r6, [r0, #0x119 + SUB_INIT_MONSTER_OFFSET] cmp r2, #5 blt _022FDE78 mov r8, r6 @@ -1499,17 +1562,28 @@ _022FDF48: mov r1, #1 strb r1, [r0, #0xe] strh r2, [sl, #0x30] - strb r2, [sl, #0x11e] + strb r2, [sl, #0x11e + SUB_INIT_MONSTER_OFFSET] +#ifdef JAPAN + strb r2, [sl, #0x105] + strb r2, [sl, #0x11b] + strb r2, [sl, #0xfd] + strb r2, [sl, #0x107] +#else strb r2, [sl, #0x106] strb r2, [sl, #0x11f] strb r2, [sl, #0xfd] strb r2, [sl, #0x108] +#endif strb r2, [sl, #0xfe] strb r2, [sl, #0xff] strb r2, [sl, #0x100] +#ifdef JAPAN + strb r2, [sl, #0x10a] +#else mov r0, sl strb r2, [sl, #0x10b] bl ov29_02307DC0 +#endif ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _022FDF9C: .word CASTFORM_WEATHER_ATTRIBUTE_TABLE @@ -1518,6 +1592,11 @@ _022FDFA0: .word DUNGEON_PTR arm_func_start ov29_022FDFA4 ov29_022FDFA4: ; 0x022FDFA4 +#ifdef JAPAN +#define OV29_022FDFA4_OFFSET -4 +#else +#define OV29_022FDFA4_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r7, #0 mov r4, r7 @@ -1528,7 +1607,11 @@ _022FDFB8: ldr r0, [r0] add r0, r0, r7, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r8, [r0, #0xa84] +#else ldr r8, [r0, #0xb28] +#endif mov r0, r8 bl EntityIsValid__022FC99C cmp r0, #0 @@ -1540,17 +1623,17 @@ _022FDFB8: mov r8, r6 _022FDFF0: add r0, r1, r8, lsl #3 - ldrb r0, [r0, #0x124] + ldrb r0, [r0, #0x124 + OV29_022FDFA4_OFFSET] tst r0, #1 movne r0, r5 moveq r0, r4 tst r0, #0xff addne r0, r1, r8, lsl #3 addne r0, r0, #0x100 - ldrneh r2, [r0, #0x26] + ldrneh r2, [r0, #0x26 + OV29_022FDFA4_OFFSET] add r8, r8, #1 bicne r2, r2, #1 - strneh r2, [r0, #0x26] + strneh r2, [r0, #0x26 + OV29_022FDFA4_OFFSET] cmp r8, #4 blt _022FDFF0 mov r0, r3, lsl #0x10 @@ -1567,6 +1650,11 @@ _022FE044: .word DUNGEON_PTR arm_func_start ov29_022FE048 ov29_022FE048: ; 0x022FE048 +#ifdef JAPAN +#define OV29_022FE048_OFFSET -4 +#else +#define OV29_022FE048_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, lr} mov r4, r1 bl GetActiveTeamMember @@ -1607,7 +1695,7 @@ _022FE074: ldrls r0, _022FE18C ; =0x000003D3 strlsh r0, [r3, #0xc] _022FE0E0: - add r5, r4, #0x124 + add r5, r4, #0x124 + OV29_022FE048_OFFSET add r2, r3, #0x1c mov r1, #0x11 _022FE0EC: @@ -1631,13 +1719,13 @@ _022FE0EC: strh r0, [r3, #0x5a] ldrh r0, [r4, #0x46] strh r0, [r3, #0x5c] - ldrh r0, [ip, #0x46] + ldrh r0, [ip, #0x46 + OV29_022FE048_OFFSET] strh r0, [r3, #0x44] - ldrh r0, [ip, #0x48] + ldrh r0, [ip, #0x48 + OV29_022FE048_OFFSET] strh r0, [r3, #0x46] - ldrh r0, [ip, #0x4a] + ldrh r0, [ip, #0x4a + OV29_022FE048_OFFSET] strh r0, [r3, #0x48] - ldrh r0, [ip, #0x4c] + ldrh r0, [ip, #0x4c + OV29_022FE048_OFFSET] strh r0, [r3, #0x4a] ldrh r0, [r4, #0x62] strh r0, [r3, #0x3e] diff --git a/asm/overlay_29_022FE4BC.s b/asm/overlay_29_022FE4BC.s index 965224c3..871b0230 100644 --- a/asm/overlay_29_022FE4BC.s +++ b/asm/overlay_29_022FE4BC.s @@ -5,6 +5,11 @@ arm_func_start ExecuteMonsterAction ExecuteMonsterAction: ; 0x022FE4BC +#ifdef JAPAN +#define EXECUTE_MONSTER_ACTION_OFFSET -4 +#else +#define EXECUTE_MONSTER_ACTION_OFFSET 0 +#endif #ifdef EUROPE stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} sub sp, sp, #4 @@ -642,12 +647,18 @@ _022FF7B4: mov sb, r0 mov r0, #1 bl AnimationDelayOrSomething +#ifndef JAPAN bl ov29_022FBD08 +#endif mov r0, #1 bl ov29_0234B024 ldr r6, [sb, #0xb4] mov r1, #0 +#ifdef JAPAN + strb r1, [r6, #0x108] +#else strb r1, [r6, #0x109] +#endif ldr r0, _022FED70 ; =DUNGEON_PTR strb r1, [r6, #0xfc] ldr r1, [r0] @@ -685,7 +696,7 @@ _022FE538: bl ov29_02318D58 _022FE568: mov r4, #0 - add r3, r6, #0x124 + add r3, r6, #0x124 + EXECUTE_MONSTER_ACTION_OFFSET mov r1, r4 mov r2, #1 _022FE578: @@ -732,7 +743,7 @@ _022FE608: mov r0, #0xa bl ov29_0234BA54 _022FE61C: - ldrb r0, [r6, #0x23c] + ldrb r0, [r6, #0x23c + EXECUTE_MONSTER_ACTION_OFFSET] cmp r0, #0 bne _022FE630 mov r0, sb @@ -742,7 +753,7 @@ _022FE630: bl AdvanceFrame _022FE638: mov r0, #0 - strb r0, [r6, #0x23c] + strb r0, [r6, #0x23c + EXECUTE_MONSTER_ACTION_OFFSET] ldrh r0, [r6, #0x4a] mov r4, #0 ldr r1, _022FED80 ; =ov29_0237CA6C @@ -751,13 +762,15 @@ _022FE638: cmpne r0, #4 cmpne r0, #2 movne r0, #1 - strneb r0, [r6, #0x152] - strb r4, [r6, #0x154] + strneb r0, [r6, #0x152 + EXECUTE_MONSTER_ACTION_OFFSET] + strb r4, [r6, #0x154 + EXECUTE_MONSTER_ACTION_OFFSET] ldr r0, _022FED84 ; =ov29_0237CA68 strb r4, [r1] strb r4, [r0] +#ifndef JAPAN mov r1, #1 strb r1, [r6, #0x103] +#endif ldrh r0, [r6, #0x4a] cmp r0, #0x42 addls pc, pc, r0, lsl #2 @@ -843,7 +856,7 @@ _022FE7B8: mov r0, #0 strh r0, [r6, #0x4a] mov r0, #1 - strb r0, [r6, #0x151] + strb r0, [r6, #0x151 + EXECUTE_MONSTER_ACTION_OFFSET] ldrb r0, [r6, #7] cmp r0, #0 beq _022FEBB4 @@ -894,7 +907,7 @@ _022FE870: mov r0, #0 strh r0, [r6, #0x4a] mov r0, #1 - strb r0, [r6, #0x151] + strb r0, [r6, #0x151 + EXECUTE_MONSTER_ACTION_OFFSET] ldrb r0, [r6, #7] cmp r0, #0 beq _022FEBB4 @@ -1007,10 +1020,20 @@ _022FEA14: bl ov29_0231A9F8 b _022FEBB4 _022FEA20: +#ifdef JAPAN + mov r0, #1 + strh r0, [r6, #0x4a] +#else strh r1, [r6, #0x4a] +#endif b _022FEBB4 _022FEA28: +#ifdef JAPAN + mov r0, #1 + strh r0, [r6, #0x4a] +#else strh r1, [r6, #0x4a] +#endif b _022FEBB4 _022FEA30: mov r0, sb @@ -1034,10 +1057,16 @@ _022FEA60: b _022FEBB4 _022FEA6C: mov r0, sb +#ifdef JAPAN + mov r1, #1 +#endif bl ov29_022F4370 b _022FEBB4 _022FEA78: mov r0, sb +#ifdef JAPAN + mov r1, #1 +#endif bl ov29_022F44F0 b _022FEBB4 _022FEA84: @@ -1046,7 +1075,11 @@ _022FEA84: ldr r2, [r0] add r0, r2, r1, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r0, [r0, #0xa84] +#else ldr r0, [r0, #0xb28] +#endif str r0, [r2, #0xc8] b _022FEBB4 _022FEAA4: @@ -1077,7 +1110,11 @@ _022FEAEC: mov r2, r0 bl SubstitutePlaceholderStringTags mov r0, sb +#ifdef JAPAN + mov r1, #0xb30 +#else mov r1, #0xdf0 +#endif bl LogMessageByIdWithPopupCheckUser b _022FEBB4 _022FEB0C: @@ -1094,8 +1131,13 @@ _022FEB24: bl ov29_022F6058 b _022FEBB4 _022FEB34: +#ifdef JAPAN + ldr r1, _0230017C ; =0x00000163 + mov r0, sb +#else mov r0, sb rsb r1, r1, #0x164 +#endif bl ov29_022F6058 b _022FEBB4 _022FEB44: @@ -1142,12 +1184,12 @@ _022FEBB4: moveq r0, #0 ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ldr r2, [sb, #0xb4] - ldrb r0, [r2, #0x154] + ldrb r0, [r2, #0x154 + EXECUTE_MONSTER_ACTION_OFFSET] cmp r0, #0 bne _022FEBF0 mov r1, #0 mov r0, sb - strb r1, [r2, #0x154] + strb r1, [r2, #0x154 + EXECUTE_MONSTER_ACTION_OFFSET] bl ov29_02318D58 _022FEBF0: mov r0, #0 @@ -1158,14 +1200,14 @@ _022FEBF0: moveq r0, #0 ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} bl ov29_022EF9BC - ldrb r0, [r6, #0x155] + ldrb r0, [r6, #0x155 + EXECUTE_MONSTER_ACTION_OFFSET] cmp r0, #0 beq _022FEC88 mov ip, #0 mov r5, #1 mov r8, ip - strb ip, [r6, #0x155] - add r7, r6, #0x124 + strb ip, [r6, #0x155 + EXECUTE_MONSTER_ACTION_OFFSET] + add r7, r6, #0x124 + EXECUTE_MONSTER_ACTION_OFFSET mov r3, ip mov r1, ip mov r0, r5 @@ -1220,7 +1262,7 @@ _022FECD8: cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldrb r0, [r6, #0x14e] + ldrb r0, [r6, #0x14e + EXECUTE_MONSTER_ACTION_OFFSET] cmp r0, #0 cmpeq r4, #0 bne _022FED68 @@ -1229,7 +1271,7 @@ _022FECD8: bl CannotStandOnTile cmp r0, #0 beq _022FED58 - ldr r0, [r6, #0x110] + ldr r0, [r6, #0x110 + EXECUTE_MONSTER_ACTION_OFFSET] cmp r0, #1 ble _022FED50 mov r0, #0 @@ -1265,6 +1307,12 @@ _022FED80: .word ov29_0237CA6C _022FED84: .word ov29_0237CA68 _022FED88: .word DIRECTIONS_XY _022FED8C: .word ov29_0235171E +#ifdef JAPAN +_0230017C: .word 0x00000163 +_022FED90: .word 0x00000B31 +_022FED94: .word 0x00000B32 +#else _022FED90: .word 0x00000DF1 _022FED94: .word 0x00000DF2 +#endif arm_func_end ExecuteMonsterAction diff --git a/asm/overlay_29_022FEDBC.s b/asm/overlay_29_022FEDBC.s index fd8f2a17..f95e83e7 100644 --- a/asm/overlay_29_022FEDBC.s +++ b/asm/overlay_29_022FEDBC.s @@ -5,6 +5,11 @@ arm_func_start ov29_022FEDBC ov29_022FEDBC: ; 0x022FEDBC +#ifdef JAPAN +#define OV29_022FEDBC_OFFSET -4 +#else +#define OV29_022FEDBC_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x10 mov r4, #0 @@ -14,12 +19,16 @@ _022FEDC8: ldr r0, [r0] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r7, [r0, #0xad4] +#else ldr r7, [r0, #0xb78] +#endif mov r0, r7 bl EntityIsValid__022FED98 cmp r0, #0 ldrne r8, [r7, #0xb4] - ldrneb r5, [r8, #0x177] + ldrneb r5, [r8, #0x177 + OV29_022FEDBC_OFFSET] cmpne r5, #0xff beq _022FEFA4 mov r0, r7 @@ -27,24 +36,24 @@ _022FEDC8: bl ov29_02300DCC cmp r0, #0 movne r0, #0xff - strneb r0, [r8, #0x177] + strneb r0, [r8, #0x177 + OV29_022FEDBC_OFFSET] bne _022FEFA4 mov r0, r7 bl IsMonsterSleeping cmp r0, #0 moveq r0, #0xff - streqb r0, [r8, #0x177] + streqb r0, [r8, #0x177 + OV29_022FEDBC_OFFSET] beq _022FEFA4 ldrb r0, [r8, #0xf3] cmp r0, #1 moveq r0, #0xff - streqb r0, [r8, #0x177] + streqb r0, [r8, #0x177 + OV29_022FEDBC_OFFSET] beq _022FEFA4 mov r0, #4 bl DungeonRandInt ldr fp, _022FEFBC ; =0x0000020D mov sb, r6 - add lr, r8, #0x124 + add lr, r8, #0x124 + OV29_022FEDBC_OFFSET sub r1, fp, #0xc6 b _022FEF80 _022FEE60: @@ -68,7 +77,7 @@ _022FEE84: cmpne r2, fp beq _022FEF70 mov sb, #0 - add r6, r8, #0x124 + add r6, r8, #0x124 + OV29_022FEDBC_OFFSET mov fp, #1 b _022FEF20 _022FEEB8: @@ -132,7 +141,7 @@ _022FEF80: blt _022FEE60 _022FEF88: mov r0, #0xff - strb r0, [r8, #0x177] + strb r0, [r8, #0x177 + OV29_022FEDBC_OFFSET] cmp r6, #0 beq _022FEFA4 ldr r1, _022FEFC4 ; =0x00001204 @@ -147,12 +156,21 @@ _022FEFA4: .align 2, 0 _022FEFB8: .word DUNGEON_PTR _022FEFBC: .word 0x0000020D +#ifdef JAPAN +_022FEFC0: .word 0x00000B33 +#else _022FEFC0: .word 0x00000DF3 +#endif _022FEFC4: .word 0x00001204 arm_func_end ov29_022FEDBC arm_func_start ov29_022FEFC8 ov29_022FEFC8: ; 0x022FEFC8 +#ifdef JAPAN +#define OV29_022FEFC8_OFFSET -4 +#else +#define OV29_022FEFC8_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x10 mov r5, #0 @@ -161,12 +179,16 @@ _022FEFD4: ldr r0, [r0] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r8, [r0, #0xad4] +#else ldr r8, [r0, #0xb78] +#endif mov r0, r8 bl EntityIsValid__022FED98 cmp r0, #0 ldrne sl, [r8, #0xb4] - ldrneb r7, [sl, #0x178] + ldrneb r7, [sl, #0x178 + OV29_022FEFC8_OFFSET] cmpne r7, #0xff beq _022FF14C mov r0, r8 @@ -174,24 +196,24 @@ _022FEFD4: bl ov29_02300DCC cmp r0, #0 movne r0, #0xff - strneb r0, [sl, #0x178] - strneb r0, [sl, #0x177] + strneb r0, [sl, #0x178 + OV29_022FEFC8_OFFSET] + strneb r0, [sl, #0x177 + OV29_022FEFC8_OFFSET] bne _022FF14C mov r0, r8 bl IsMonsterSleeping cmp r0, #0 moveq r0, #0xff - streqb r0, [sl, #0x178] - streqb r0, [sl, #0x177] + streqb r0, [sl, #0x178 + OV29_022FEFC8_OFFSET] + streqb r0, [sl, #0x177 + OV29_022FEFC8_OFFSET] beq _022FF14C ldrb r0, [sl, #0xf3] cmp r0, #1 moveq r0, #0xff - streqb r0, [sl, #0x178] - streqb r0, [sl, #0x177] + streqb r0, [sl, #0x178 + OV29_022FEFC8_OFFSET] + streqb r0, [sl, #0x177 + OV29_022FEFC8_OFFSET] beq _022FF14C mov r6, #0 - add r4, sl, #0x124 + add r4, sl, #0x124 + OV29_022FEFC8_OFFSET mov fp, #1 b _022FF0F8 _022FF068: @@ -255,8 +277,8 @@ _022FF100: mov r3, #1 bl ov29_02322374 mov r0, #0xff - strb r0, [sl, #0x178] - strb r0, [sl, #0x177] + strb r0, [sl, #0x178 + OV29_022FEFC8_OFFSET] + strb r0, [sl, #0x177 + OV29_022FEFC8_OFFSET] _022FF14C: add r5, r5, #1 cmp r5, #0x14 @@ -265,7 +287,11 @@ _022FF14C: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _022FF160: .word DUNGEON_PTR +#ifdef JAPAN +_022FF164: .word 0x00000B34 +#else _022FF164: .word 0x00000DF4 +#endif arm_func_end ov29_022FEFC8 arm_func_start TryActivateFlashFireOnAllMonsters @@ -278,17 +304,29 @@ _022FF178: ldr r0, [r5] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r7, [r0, #0xad4] +#else ldr r7, [r0, #0xb78] +#endif mov r0, r7 bl EntityIsValid__022FED98 cmp r0, #0 ldrne r2, [r7, #0xb4] +#ifdef JAPAN + ldrneb r0, [r2, #0x158] +#else ldrneb r0, [r2, #0x15c] +#endif cmpne r0, #0 beq _022FF1B4 mov r0, r7 mov r1, r7 +#ifdef JAPAN + strb r6, [r2, #0x158] +#else strb r6, [r2, #0x15c] +#endif bl ActivateFlashFire _022FF1B4: add r4, r4, #1 @@ -393,10 +431,17 @@ _022FF2DC: ldrsh r2, [r5, #4] add r1, r4, #0x100 mov r0, #1 +#ifdef JAPAN + strh r2, [r1, #0x7a] + ldrsh r2, [r5, #6] + sub r2, r2, #1 + strh r2, [r1, #0x7c] +#else strh r2, [r1, #0x7e] ldrsh r2, [r5, #6] sub r2, r2, #1 strh r2, [r1, #0x80] +#endif ldmia sp!, {r3, r4, r5, pc} _022FF320: ldrb r0, [r4, #9] @@ -451,12 +496,17 @@ _022FF3AC: mov r0, #1 ldmia sp!, {r3, r4, r5, pc} .align 2, 0 -_022FF3DC: .word 0x00000C28 -_022FF3E0: .word 0x00000C29 -_022FF3E4: .word 0x00000C2A -_022FF3E8: .word 0x00000C2B -_022FF3EC: .word 0x00000C2C -_022FF3F0: .word 0x00000C2D +#ifdef JAPAN +#define HAS_STATUS_THAT_PREVENTS_ACTING_OFFSET -0x2C1 +#else +#define HAS_STATUS_THAT_PREVENTS_ACTING_OFFSET 0 +#endif +_022FF3DC: .word 0x00000C28 + HAS_STATUS_THAT_PREVENTS_ACTING_OFFSET +_022FF3E0: .word 0x00000C29 + HAS_STATUS_THAT_PREVENTS_ACTING_OFFSET +_022FF3E4: .word 0x00000C2A + HAS_STATUS_THAT_PREVENTS_ACTING_OFFSET +_022FF3E8: .word 0x00000C2B + HAS_STATUS_THAT_PREVENTS_ACTING_OFFSET +_022FF3EC: .word 0x00000C2C + HAS_STATUS_THAT_PREVENTS_ACTING_OFFSET +_022FF3F0: .word 0x00000C2D + HAS_STATUS_THAT_PREVENTS_ACTING_OFFSET arm_func_end HasStatusThatPreventsActing arm_func_start ov29_022FF3F4 @@ -568,7 +618,11 @@ _022FF53C: b _022FF5FC _022FF564: mov r5, #0 +#ifdef JAPAN + add r4, r6, #0x120 +#else add r4, r6, #0x124 +#endif mov r8, r5 mov sb, #1 b _022FF5F4 @@ -591,7 +645,11 @@ _022FF578: b _022FF5CC _022FF5B8: add r0, r6, r5, lsl #3 +#ifdef JAPAN + ldrb r0, [r0, #0x120] +#else ldrb r0, [r0, #0x124] +#endif tst r0, #2 beq _022FF5D4 sub r5, r5, #1 @@ -618,14 +676,19 @@ _022FF604: mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 -_022FF60C: .word 0x00000C2E -_022FF610: .word 0x00000C28 -_022FF614: .word 0x00000C29 -_022FF618: .word 0x00000C2A -_022FF61C: .word 0x00000C2B -_022FF620: .word 0x00000C2C -_022FF624: .word 0x00000C2D -_022FF628: .word 0x00000C2F +#ifdef JAPAN +#define OV29_022FF3F4_OFFSET -0x2C1 +#else +#define OV29_022FF3F4_OFFSET 0 +#endif +_022FF60C: .word 0x00000C2E + OV29_022FF3F4_OFFSET +_022FF610: .word 0x00000C28 + OV29_022FF3F4_OFFSET +_022FF614: .word 0x00000C29 + OV29_022FF3F4_OFFSET +_022FF618: .word 0x00000C2A + OV29_022FF3F4_OFFSET +_022FF61C: .word 0x00000C2B + OV29_022FF3F4_OFFSET +_022FF620: .word 0x00000C2C + OV29_022FF3F4_OFFSET +_022FF624: .word 0x00000C2D + OV29_022FF3F4_OFFSET +_022FF628: .word 0x00000C2F + OV29_022FF3F4_OFFSET arm_func_end ov29_022FF3F4 arm_func_start GetMobilityTypeCheckSlip @@ -777,12 +840,29 @@ _022FF810: mov r0, r6 bl GetMobilityTypeCheckSlipAndFloating ldrh r2, [r4] +#ifdef JAPAN + mov r4, r0 + mov r0, r6 + mov r1, #0xc + and r5, r2, #3 + bl IqSkillIsEnabled + cmp r0, #0 + mov r0, r6 + mov r1, #0xd + movne r4, #2 + bl IqSkillIsEnabled + cmp r0, #0 + movne r4, #3 + cmp r4, #3 + addls pc, pc, r4, lsl #2 +#else mov r1, r0 mov r0, r6 and r4, r2, #3 bl GetMobilityTypeAfterIqSkills cmp r0, #3 addls pc, pc, r0, lsl #2 +#endif b _022FF888 _022FF83C: ; jump table b _022FF84C ; case 0 @@ -790,20 +870,35 @@ _022FF83C: ; jump table b _022FF878 ; case 2 b _022FF888 ; case 3 _022FF84C: +#ifdef JAPAN + cmp r5, #1 +#else cmp r4, #1 +#endif bne _022FF890 mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, pc} _022FF85C: +#ifdef JAPAN + cmp r5, #2 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + cmp r5, #1 +#else cmp r4, #2 moveq r0, #0 ldmeqia sp!, {r3, r4, r5, r6, r7, pc} cmp r4, #1 +#endif bne _022FF890 mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, pc} _022FF878: +#ifdef JAPAN + cmp r5, #0 +#else cmp r4, #0 +#endif beq _022FF890 mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, pc} @@ -831,6 +926,7 @@ ItemIsActive__022FF898: ; 0x022FF898 ldmia sp!, {r3, r4, r5, pc} arm_func_end ItemIsActive__022FF898 +#ifndef JAPAN arm_func_start GetMobilityTypeAfterIqSkills GetMobilityTypeAfterIqSkills: ; 0x022FF8C8 stmdb sp!, {r3, r4, r5, lr} @@ -851,6 +947,7 @@ _022FF8EC: mov r0, r4 ldmia sp!, {r3, r4, r5, pc} arm_func_end GetMobilityTypeAfterIqSkills +#endif arm_func_start ov29_022FF908 ov29_022FF908: ; 0x022FF908 @@ -928,12 +1025,29 @@ _022FFA0C: mov r0, r6 bl GetMobilityTypeCheckSlipAndFloating ldrh r2, [r4] +#ifdef JAPAN + mov r4, r0 + mov r0, r6 + mov r1, #0xc + and r5, r2, #3 + bl IqSkillIsEnabled + cmp r0, #0 + mov r0, r6 + mov r1, #0xd + movne r4, #2 + bl IqSkillIsEnabled + cmp r0, #0 + movne r4, #3 + cmp r4, #3 + addls pc, pc, r4, lsl #2 +#else mov r1, r0 mov r0, r6 and r4, r2, #3 bl GetMobilityTypeAfterIqSkills cmp r0, #3 addls pc, pc, r0, lsl #2 +#endif b _022FFA84 _022FFA38: ; jump table b _022FFA48 ; case 0 @@ -941,20 +1055,35 @@ _022FFA38: ; jump table b _022FFA74 ; case 2 b _022FFA84 ; case 3 _022FFA48: +#ifdef JAPAN + cmp r5, #1 +#else cmp r4, #1 +#endif bne _022FFA8C mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, pc} _022FFA58: +#ifdef JAPAN + cmp r5, #2 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + cmp r5, #1 +#else cmp r4, #2 moveq r0, #0 ldmeqia sp!, {r3, r4, r5, r6, r7, pc} cmp r4, #1 +#endif bne _022FFA8C mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, pc} _022FFA74: +#ifdef JAPAN + cmp r5, #0 +#else cmp r4, #0 +#endif beq _022FFA8C mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, pc} @@ -1091,12 +1220,29 @@ _022FFC44: mov r0, r6 bl GetMobilityTypeCheckSlipAndFloating ldrh r2, [r4] +#ifdef JAPAN + mov r4, r0 + mov r0, r6 + mov r1, #0xc + and r5, r2, #3 + bl IqSkillIsEnabled + cmp r0, #0 + mov r0, r6 + mov r1, #0xd + movne r4, #2 + bl IqSkillIsEnabled + cmp r0, #0 + movne r4, #3 + cmp r4, #3 + addls pc, pc, r4, lsl #2 +#else mov r1, r0 mov r0, r6 and r4, r2, #3 bl GetMobilityTypeAfterIqSkills cmp r0, #3 addls pc, pc, r0, lsl #2 +#endif b _022FFC94 _022FFC70: ; jump table b _022FFC80 ; case 0 @@ -1104,7 +1250,11 @@ _022FFC70: ; jump table b _022FFC80 ; case 2 b _022FFC94 ; case 3 _022FFC80: +#ifdef JAPAN + cmp r5, #0 +#else cmp r4, #0 +#endif moveq r0, #1 movne r0, #0 and r0, r0, #0xff @@ -1175,12 +1325,29 @@ _022FFD6C: mov r0, r6 bl GetMobilityTypeCheckSlipAndFloating ldrh r2, [r4] +#ifdef JAPAN + mov r4, r0 + mov r0, r6 + mov r1, #0xc + and r5, r2, #3 + bl IqSkillIsEnabled + cmp r0, #0 + mov r0, r6 + mov r1, #0xd + movne r4, #2 + bl IqSkillIsEnabled + cmp r0, #0 + movne r4, #3 + cmp r4, #3 + addls pc, pc, r4, lsl #2 +#else mov r1, r0 mov r0, r6 and r4, r2, #3 bl GetMobilityTypeAfterIqSkills cmp r0, #3 addls pc, pc, r0, lsl #2 +#endif b _022FFDE4 _022FFD98: ; jump table b _022FFDA8 ; case 0 @@ -1188,20 +1355,35 @@ _022FFD98: ; jump table b _022FFDD4 ; case 2 b _022FFDE4 ; case 3 _022FFDA8: +#ifdef JAPAN + cmp r5, #1 +#else cmp r4, #1 +#endif bne _022FFDEC mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, pc} _022FFDB8: +#ifdef JAPAN + cmp r5, #2 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + cmp r5, #1 +#else cmp r4, #2 moveq r0, #0 ldmeqia sp!, {r3, r4, r5, r6, r7, pc} cmp r4, #1 +#endif bne _022FFDEC mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, pc} _022FFDD4: +#ifdef JAPAN + cmp r5, #0 +#else cmp r4, #0 +#endif beq _022FFDEC mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, pc} @@ -1215,6 +1397,11 @@ _022FFDEC: arm_func_start CalcSpeedStage CalcSpeedStage: ; 0x022FFDF4 +#ifdef JAPAN +#define CALC_SPEED_STAGE_OFFSET -4 +#else +#define CALC_SPEED_STAGE_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r8, r0 mov r7, r1 @@ -1225,10 +1412,10 @@ CalcSpeedStage: ; 0x022FFDF4 mov r1, r4 _022FFE14: add r2, r6, r1 - ldrb r0, [r2, #0x119] + ldrb r0, [r2, #0x119 + CALC_SPEED_STAGE_OFFSET] add r1, r1, #1 cmp r0, #0 - ldrb r0, [r2, #0x114] + ldrb r0, [r2, #0x114 + CALC_SPEED_STAGE_OFFSET] subne r4, r4, r7 cmp r0, #0 addne r4, r4, r7 @@ -1290,7 +1477,7 @@ _022FFEFC: cmp r4, #5 movge r4, #4 mov r0, r4 - str r4, [r6, #0x110] + str r4, [r6, #0x110 + CALC_SPEED_STAGE_OFFSET] ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 _022FFF18: .word EXCL_ITEM_EFFECTS_WEATHER_MOVE_SPEED_BOOST @@ -1307,7 +1494,11 @@ ExclusiveItemEffectIsActive__022FFF28: ; 0x022FFF28 cmp r0, #0 movne r0, #0 ldmneia sp!, {r3, pc} +#ifdef JAPAN + add r0, r2, #0x224 +#else add r0, r2, #0x228 +#endif bl ExclusiveItemEffectFlagTest ldmia sp!, {r3, pc} arm_func_end ExclusiveItemEffectIsActive__022FFF28 @@ -1390,8 +1581,13 @@ _02300028: beq _023000C8 mov r0, sl bl ov29_022E655C +#ifdef JAPAN + ldr r1, _02301510 ; =0x0000096F + mov r0, sl +#else mov r0, sl mov r1, #0xc30 +#endif bl LogMessageByIdWithPopupCheckUser b _023000C8 _02300068: @@ -1416,8 +1612,13 @@ _02300068: add r1, sp, #0 mov r0, #0 bl ov29_02344B44 +#ifdef JAPAN + mov r0, sl + mov r1, #0x970 +#else ldr r1, _023000E0 ; =0x00000C31 mov r0, sl +#endif bl LogMessageByIdWithPopupCheckUser _023000C8: cmp r5, #0 @@ -1428,5 +1629,9 @@ _023000D4: ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} .align 2, 0 _023000DC: .word EXCL_ITEM_EFFECTS_WEATHER_ATK_SPEED_BOOST +#ifdef JAPAN +_02301510: .word 0x0000096F +#else _023000E0: .word 0x00000C31 +#endif arm_func_end GetNumberOfAttacks diff --git a/asm/overlay_29_02300108.s b/asm/overlay_29_02300108.s index 35a13d38..54a9a602 100644 --- a/asm/overlay_29_02300108.s +++ b/asm/overlay_29_02300108.s @@ -3,6 +3,7 @@ .text +#ifndef JAPAN arm_func_start GetMonsterDisplayNameType GetMonsterDisplayNameType: ; 0x02300108 ldr r1, _02300160 ; =DUNGEON_PTR @@ -32,9 +33,35 @@ _0230014C: .align 2, 0 _02300160: .word DUNGEON_PTR arm_func_end GetMonsterDisplayNameType +#endif arm_func_start GetMonsterName GetMonsterName: ; 0x02300164 +#ifdef JAPAN + stmdb sp!, {r4, lr} + ldr r2, _02301678 ; =DUNGEON_PTR + mov r4, r0 + ldr r0, [r2] + add r0, r0, #0x1a000 + ldrb r2, [r0, #0x19a] + cmp r2, #0 + ldreqb r2, [r0, #0x1a1] + cmpeq r2, #0 + bne _02301574 + ldrb r0, [r0, #0x1a0] + cmp r0, #0 + ldreqb r0, [r1, #0xef] + cmpeq r0, #1 + bne _02300190 +_02301574: + ldrb r0, [r1, #6] + cmp r0, #0 + beq _02300190 + ldr r1, _02300274 ; =0x00000C34 + mov r0, r4 + bl CopyStringFromId + ldmia sp!, {r4, pc} +#else stmdb sp!, {r3, r4, r5, lr} mov r4, r1 mov r5, r0 @@ -46,10 +73,21 @@ GetMonsterName: ; 0x02300164 mov r0, r5 bl CopyStringFromId ldmia sp!, {r3, r4, r5, pc} +#endif _02300190: cmp r0, #2 bne _023001A8 ldr r1, _02300278 ; =0x00000C32 +#ifdef JAPAN + mov r0, r4 + bl CopyStringFromId + ldmia sp!, {r4, pc} +_023001A8: + ldrb r0, [r1, #6] + cmp r0, #0 + beq _0230025C + ldrb r0, [r1, #0xbc] +#else mov r0, r5 bl CopyStringFromId ldmia sp!, {r3, r4, r5, pc} @@ -58,41 +96,86 @@ _023001A8: cmp r0, #0 beq _0230025C ldrb r0, [r4, #0xbc] +#endif cmp r0, #0xb bne _023001DC mov r0, #0 bl GetExplorerMazeMonster mov r1, r0 +#ifdef JAPAN + mov r0, r4 + mov r2, #0x4e + bl sub_02056084 + ldmia sp!, {r4, pc} +#else mov r0, r5 mov r2, #0x4e bl sub_02056084 ldmia sp!, {r3, r4, r5, pc} +#endif _023001DC: cmp r0, #0xc bne _02300200 mov r0, #1 bl GetExplorerMazeMonster mov r1, r0 +#ifdef JAPAN + mov r0, r4 + mov r2, #0x4e + bl sub_02056084 + ldmia sp!, {r4, pc} +#else mov r0, r5 mov r2, #0x4e bl sub_02056084 ldmia sp!, {r3, r4, r5, pc} +#endif _02300200: cmp r0, #0xd bne _02300224 mov r0, #2 bl GetExplorerMazeMonster mov r1, r0 +#ifdef JAPAN + mov r0, r4 + mov r2, #0x4e + bl sub_02056084 + ldmia sp!, {r4, pc} +#else mov r0, r5 mov r2, #0x4e bl sub_02056084 ldmia sp!, {r3, r4, r5, pc} +#endif _02300224: cmp r0, #0xe bne _02300248 mov r0, #3 bl GetExplorerMazeMonster mov r1, r0 +#ifdef JAPAN + mov r0, r4 + mov r2, #0x4e + bl sub_02056084 + ldmia sp!, {r4, pc} +_02300248: + ldrsh r1, [r1, #4] + mov r0, r4 + mov r2, #0x4e + bl GetNameWithGender + ldmia sp!, {r4, pc} +_0230025C: + ldrsh r0, [r1, #0xc] + bl GetActiveTeamMember + mov r1, r0 + mov r0, r4 + bl sub_020585B4 + ldmia sp!, {r4, pc} + .align 2, 0 +_02301678: .word DUNGEON_PTR +_02300274: .word 0x00000973 +_02300278: .word 0x00000971 +#else mov r0, r5 mov r2, #0x4e bl sub_02056084 @@ -113,6 +196,7 @@ _0230025C: .align 2, 0 _02300274: .word 0x00000C34 _02300278: .word 0x00000C32 +#endif arm_func_end GetMonsterName arm_func_start ov29_0230027C @@ -137,7 +221,11 @@ _023002B8: add sp, sp, #0x100 ldmia sp!, {r4, pc} .align 2, 0 +#ifdef JAPAN +_023002C0: .word 0x00000971 +#else _023002C0: .word 0x00000C32 +#endif _023002C4: .word ov29_023527C0 arm_func_end ov29_0230027C @@ -184,7 +272,11 @@ _02300344: bl sub_02058534 ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_02300350: .word 0x00000972 +#else _02300350: .word 0x00000C33 +#endif _02300354: .word ov29_023527D0 arm_func_end ov29_023002F0 @@ -195,9 +287,15 @@ ov29_02300358: ; 0x02300358 mov r4, r0 ldr r0, [r2] add r0, r0, #0x1a000 +#ifdef JAPAN + ldrb r2, [r0, #0x19a] + cmp r2, #0 + ldreqb r0, [r0, #0x1a1] +#else ldrb r2, [r0, #0x23e] cmp r2, #0 ldreqb r0, [r0, #0x245] +#endif cmpeq r0, #0 bne _0230038C ldrb r0, [r1, #0xef] @@ -238,8 +336,13 @@ _023003F0: ldmia sp!, {r4, pc} .align 2, 0 _02300400: .word DUNGEON_PTR +#ifdef JAPAN +_02300404: .word 0x00000974 +_02300408: .word 0x00000972 +#else _02300404: .word 0x00000C35 _02300408: .word 0x00000C33 +#endif arm_func_end ov29_02300358 arm_func_start ov29_0230040C @@ -264,20 +367,26 @@ _02300448: bl GetMonsterName b _02300490 _02300454: +#ifdef JAPAN + ldrsh r1, [r5, #4] +#else mov r0, r5 bl GetMonsterDisplayNameType cmp r0, #0 bne _02300478 ldrsh r1, [r5, #4] mov r0, r4 +#endif mov r2, #0x6a bl GetNameWithGender b _02300490 +#ifndef JAPAN _02300478: mov r0, r4 mov r1, r5 bl GetMonsterName b _02300490 +#endif _02300488: mov r1, r5 bl ov29_02300358 @@ -489,12 +598,20 @@ MonsterHasNegativeStatus: ; 0x02300634 cmp r0, #0 movne r0, #1 ldmneia sp!, {r4, r5, r6, pc} +#ifdef JAPAN + ldrb r0, [r4, #0x105] +#else ldrb r0, [r4, #0x106] +#endif cmp r0, #0 movne r0, #1 ldmneia sp!, {r4, r5, r6, pc} mov ip, #0 +#ifdef JAPAN + add r3, r4, #0x120 +#else add r3, r4, #0x124 +#endif mov r1, ip mov r2, #1 b _02300770 @@ -519,7 +636,11 @@ _02300770: b _02300798 _02300780: add r0, r4, r1 +#ifdef JAPAN + ldrb r0, [r0, #0x115] +#else ldrb r0, [r0, #0x119] +#endif cmp r0, #0 movne r0, #1 ldmneia sp!, {r4, r5, r6, pc} @@ -614,7 +735,11 @@ _02300840: cmp r0, #6 moveq r0, #1 ldmeqia sp!, {r3, r4, r5, pc} +#ifdef JAPAN + ldrb r0, [r4, #0x104] +#else ldrb r0, [r4, #0x105] +#endif cmp r0, #0 movne r0, #1 moveq r0, #0 @@ -668,7 +793,11 @@ _02300904: cmp r0, #6 moveq r0, #1 ldmeqia sp!, {r3, r4, r5, pc} +#ifdef JAPAN + ldrb r0, [r4, #0x104] +#else ldrb r0, [r4, #0x105] +#endif cmp r0, #0 movne r0, #1 moveq r0, #0 @@ -1059,11 +1188,43 @@ CanMonsterMoveInDirection: ; 0x02300E78 cmp r0, #0 movne r0, #0 ldmneia sp!, {r4, r5, r6, pc} +#ifdef JAPAN + bl IsCurrentTilesetBackground + cmp r0, #0 + bne _02302330 + ldr r0, [r6, #0xb4] + ldrb r0, [r0, #0xef] + cmp r0, #3 + moveq r4, #3 + beq _02302330 + mov r0, r6 + mov r1, #0x10 + bl ItemIsActive__022FF898 + cmp r0, #0 + movne r4, #3 + bne _02302330 + mov r0, r6 + mov r1, #0xc + bl IqSkillIsEnabled + cmp r0, #0 + movne r4, #2 + bne _02302330 + mov r0, r6 + mov r1, #0xd + bl IqSkillIsEnabled + cmp r0, #0 + beq _02302330 + tst r5, #1 + movne r4, #2 + moveq r4, #3 +_02302330: +#else mov r0, r6 mov r1, r4 and r2, r5, #0xff bl GetDirectionalMobilityType mov r4, r0 +#endif ldrsh r0, [r6, #4] ldrsh r1, [r6, #6] bl GetTile @@ -1083,6 +1244,7 @@ _02300F28: .word ov29_0235171E _02300F2C: .word ov29_02352798 arm_func_end CanMonsterMoveInDirection +#ifndef JAPAN arm_func_start GetDirectionalMobilityType GetDirectionalMobilityType: ; 0x02300F30 stmdb sp!, {r4, r5, r6, lr} @@ -1127,6 +1289,7 @@ _02300FC4: mov r0, r5 ldmia sp!, {r4, r5, r6, pc} arm_func_end GetDirectionalMobilityType +#endif arm_func_start ov29_02300FCC ov29_02300FCC: ; 0x02300FCC @@ -1198,11 +1361,43 @@ ov29_0230105C: ; 0x0230105C cmpne r0, #1 movne r0, #0 ldmneia sp!, {r4, r5, r6, pc} +#ifdef JAPAN + bl IsCurrentTilesetBackground + cmp r0, #0 + bne _023024DC_JP + ldr r0, [r6, #0xb4] + ldrb r0, [r0, #0xef] + cmp r0, #3 + moveq r4, #3 + beq _023024DC_JP + mov r0, r6 + mov r1, #0x10 + bl ItemIsActive__022FF898 + cmp r0, #0 + movne r4, #3 + bne _023024DC_JP + mov r0, r6 + mov r1, #0xc + bl IqSkillIsEnabled + cmp r0, #0 + movne r4, #2 + bne _023024DC_JP + mov r0, r6 + mov r1, #0xd + bl IqSkillIsEnabled + cmp r0, #0 + beq _023024DC_JP + tst r5, #1 + movne r4, #2 + moveq r4, #3 +_023024DC_JP: +#else mov r0, r6 mov r1, r4 and r2, r5, #0xff bl GetDirectionalMobilityType mov r4, r0 +#endif ldrsh r0, [r6, #4] ldrsh r1, [r6, #6] bl GetTile @@ -1212,8 +1407,14 @@ ov29_0230105C: ; 0x0230105C ldrb r1, [r1, r2] ldrb r0, [r0, #8] tst r1, r0 +#ifdef JAPAN + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff +#else moveq r0, #0 movne r0, #1 +#endif ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _0230110C: .word DIRECTIONS_XY @@ -1280,11 +1481,43 @@ ov29_02301158: ; 0x02301158 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, pc} _023011E0: +#ifdef JAPAN + bl IsCurrentTilesetBackground + cmp r0, #0 + bne _02302654 + ldr r0, [r6, #0xb4] + ldrb r0, [r0, #0xef] + cmp r0, #3 + moveq r4, #3 + beq _02302654 + mov r0, r6 + mov r1, #0x10 + bl ItemIsActive__022FF898 + cmp r0, #0 + movne r4, #3 + bne _02302654 + mov r0, r6 + mov r1, #0xc + bl IqSkillIsEnabled + cmp r0, #0 + movne r4, #2 + bne _02302654 + mov r0, r6 + mov r1, #0xd + bl IqSkillIsEnabled + cmp r0, #0 + beq _02302654 + tst r5, #1 + movne r4, #2 + moveq r4, #3 +_02302654: +#else mov r0, r6 mov r1, r4 and r2, r5, #0xff bl GetDirectionalMobilityType mov r4, r0 +#endif ldrsh r0, [r6, #4] ldrsh r1, [r6, #6] bl GetTile @@ -1335,11 +1568,43 @@ CanAttackInDirection: ; 0x02301234 cmpne r0, #1 movne r0, #0 ldmneia sp!, {r4, r5, r6, pc} +#ifdef JAPAN + bl IsCurrentTilesetBackground + cmp r0, #0 + bne _02302778 + ldr r0, [r6, #0xb4] + ldrb r0, [r0, #0xef] + cmp r0, #3 + moveq r4, #3 + beq _02302778 + mov r0, r6 + mov r1, #0x10 + bl ItemIsActive__022FF898 + cmp r0, #0 + movne r4, #3 + bne _02302778 + mov r0, r6 + mov r1, #0xc + bl IqSkillIsEnabled + cmp r0, #0 + movne r4, #2 + bne _02302778 + mov r0, r6 + mov r1, #0xd + bl IqSkillIsEnabled + cmp r0, #0 + beq _02302778 + tst r5, #1 + movne r4, #2 + moveq r4, #3 +_02302778: +#else mov r0, r6 mov r1, r4 and r2, r5, #0xff bl GetDirectionalMobilityType mov r4, r0 +#endif ldrsh r0, [r6, #4] ldrsh r1, [r6, #6] bl GetTile @@ -1349,8 +1614,14 @@ CanAttackInDirection: ; 0x02301234 ldrb r1, [r1, r2] ldrb r0, [r0, #8] tst r1, r0 +#ifdef JAPAN + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff +#else moveq r0, #0 movne r0, #1 +#endif ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _023012EC: .word DIRECTIONS_XY @@ -1430,7 +1701,11 @@ _023013E4: ldr r1, _02301490 ; =SECONDARY_TERRAIN_TYPES ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrsh r0, [r0, #0x30] +#else ldrsh r0, [r0, #0xd4] +#endif ldrb r0, [r1, r0] cmp r0, #1 bne _0230142C @@ -1441,11 +1716,43 @@ _023013E4: movne r0, #0 ldmneia sp!, {r4, r5, r6, r7, r8, pc} _0230142C: +#ifdef JAPAN + bl IsCurrentTilesetBackground + cmp r0, #0 + bne _0230295C + ldr r0, [r8, #0xb4] + ldrb r0, [r0, #0xef] + cmp r0, #3 + moveq r5, #3 + beq _0230295C + mov r0, r8 + mov r1, #0x10 + bl ItemIsActive__022FF898 + cmp r0, #0 + movne r5, #3 + bne _0230295C + mov r0, r8 + mov r1, #0xc + bl IqSkillIsEnabled + cmp r0, #0 + movne r5, #2 + bne _0230295C + mov r0, r8 + mov r1, #0xd + bl IqSkillIsEnabled + cmp r0, #0 + beq _0230295C + tst r7, #1 + movne r5, #2 + moveq r5, #3 +_0230295C: +#else mov r0, r8 mov r1, r5 and r2, r7, #0xff bl GetDirectionalMobilityType mov r5, r0 +#endif ldrsh r0, [r8, #4] ldrsh r1, [r8, #6] bl GetTile @@ -1473,29 +1780,64 @@ _02301494: .word ov29_02352770 arm_func_start ov29_02301498 ov29_02301498: ; 0x02301498 +#ifdef JAPAN +#define OV29_02301498_OFFSET -4 +#else +#define OV29_02301498_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, lr} mov r5, r0 ldr r1, [r5, #0xb4] ldrsh r1, [r1, #2] bl GetMobilityTypeCheckSlipAndFloating +#ifdef JAPAN + mov r4, r0 + bl IsCurrentTilesetBackground + cmp r0, #0 + bne _02302A30_JP + ldr r0, [r5, #0xb4] + ldrb r0, [r0, #0xef] + cmp r0, #3 + moveq r4, #3 + beq _02302A30_JP + mov r0, r5 + mov r1, #0x10 + bl ItemIsActive__022FF898 + cmp r0, #0 + movne r4, #3 + bne _02302A30_JP + mov r0, r5 + mov r1, #0xc + bl IqSkillIsEnabled + cmp r0, #0 + movne r4, #2 + bne _02302A30_JP + mov r0, r5 + mov r1, #0xd + bl IqSkillIsEnabled + cmp r0, #0 + movne r4, #3 +_02302A30_JP: +#else mov r1, r0 mov r0, r5 mov r2, #0xff bl GetDirectionalMobilityType mov r4, r0 +#endif cmp r4, #3 bne _023014FC ldr r4, [r5, #0xb4] mov r0, #0x64 bl DungeonRandInt add r1, r4, #0x200 - ldrsh r2, [r1, #0x12] + ldrsh r2, [r1, #0x12 + OV29_02301498_OFFSET] add r0, r2, r0 - strh r0, [r1, #0x12] - ldrsh r0, [r1, #0x12] + strh r0, [r1, #0x12 + OV29_02301498_OFFSET] + ldrsh r0, [r1, #0x12 + OV29_02301498_OFFSET] cmp r0, #0xc8 mov r0, #0 - strgeh r0, [r1, #0x12] + strgeh r0, [r1, #0x12 + OV29_02301498_OFFSET] movge r0, #1 ldmia sp!, {r3, r4, r5, pc} _023014FC: @@ -1503,7 +1845,11 @@ _023014FC: ldr r1, _02301590 ; =SECONDARY_TERRAIN_TYPES ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrsh r0, [r0, #0x30] +#else ldrsh r0, [r0, #0xd4] +#endif ldrb r0, [r1, r0] cmp r0, #1 cmpeq r4, #1 @@ -1563,9 +1909,15 @@ ShouldMonsterRunAway: ; 0x023015B8 moveq r0, #0 ldmeqia sp!, {r3, r4, r5, pc} ldr r4, [r5, #0xb4] +#ifdef JAPAN + ldrb r0, [r4, #0x103] + cmp r0, #0 + ldrneb r0, [r4, #0x104] +#else ldrb r0, [r4, #0x104] cmp r0, #0 ldrneb r0, [r4, #0x105] +#endif cmpne r0, #0 movne r0, #1 ldmneia sp!, {r3, r4, r5, pc} @@ -1713,7 +2065,11 @@ _023017C4: moveq r0, #2 ldmeqia sp!, {r3, r4, r5, pc} _023017E4: +#ifdef JAPAN + ldrb r0, [r4, #0x10b] +#else ldrb r0, [r4, #0x10c] +#endif cmp r0, #0 bne _02301804 ldrb r0, [r4, #7] @@ -1788,7 +2144,9 @@ ov29_023018AC: ; 0x023018AC ldmneia sp!, {r3, r4, r5, pc} ldrb r0, [r4, #9] cmp r0, #0 +#ifndef JAPAN cmpne r0, #3 +#endif movne r0, #2 ldmneia sp!, {r3, r4, r5, pc} ldrb r0, [r5, #0xbc] @@ -1802,7 +2160,9 @@ ov29_023018AC: ; 0x023018AC ldmneia sp!, {r3, r4, r5, pc} ldrb r0, [r5, #9] cmp r0, #0 +#ifndef JAPAN cmpne r0, #3 +#endif movne r0, #2 ldmneia sp!, {r3, r4, r5, pc} ldrb r1, [r4, #6] @@ -1810,6 +2170,9 @@ ov29_023018AC: ; 0x023018AC cmp r1, r0 movne r0, #1 moveq r0, #0 +#ifdef JAPAN + and r0, r0, #0xff +#endif ldmia sp!, {r3, r4, r5, pc} arm_func_end ov29_023018AC @@ -1838,7 +2201,11 @@ _02301988: mov r0, #0 ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_02301990: .word 0x00000975 +#else _02301990: .word 0x00000C36 +#endif arm_func_end SafeguardIsActive arm_func_start LeafGuardIsActive @@ -1854,7 +2221,9 @@ LeafGuardIsActive: ; 0x02301994 mov r0, r6 mov r1, r5 mov r2, #0x7b +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__02301A0C cmp r0, #0 beq _02301A00 @@ -1875,33 +2244,59 @@ _02301A00: mov r0, #0 ldmia sp!, {r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_02301A08: .word 0x00000976 +#else _02301A08: .word 0x00000C37 +#endif arm_func_end LeafGuardIsActive arm_func_start DefenderAbilityIsActive__02301A0C DefenderAbilityIsActive__02301A0C: ; 0x02301A0C +#ifdef JAPAN + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + cmp r6, r5 +#else stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r7, r0 mov r6, r1 mov r5, r2 mov r4, r3 cmp r7, r6 +#endif beq _02301A50 bl IsMonster__02301A60 cmp r0, #0 +#ifdef JAPAN + beq _02301A50 + mov r0, r6 +#else cmpne r4, #0 beq _02301A50 mov r0, r7 +#endif mov r1, #0x53 bl AbilityIsActive cmp r0, #0 movne r0, #0 +#ifdef JAPAN + ldmneia sp!, {r4, r5, r6, pc} +_02301A50: + mov r0, r5 + mov r1, r4 + bl AbilityIsActive + ldmia sp!, {r4, r5, r6, pc} +#else ldmneia sp!, {r3, r4, r5, r6, r7, pc} _02301A50: mov r0, r6 mov r1, r5 bl AbilityIsActive ldmia sp!, {r3, r4, r5, r6, r7, pc} +#endif arm_func_end DefenderAbilityIsActive__02301A0C arm_func_start IsMonster__02301A60 @@ -1963,7 +2358,11 @@ _02301B18: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 _02301B24: .word EXCL_ITEM_EFFECTS_WEATHER_NO_STATUS +#ifdef JAPAN +_02301B28: .word 0x00000978 +#else _02301B28: .word 0x00000C39 +#endif arm_func_end ov29_02301A84 arm_func_start IsProtectedFromStatDrops @@ -2007,14 +2406,18 @@ _02301BB0: mov r0, r7 mov r1, r6 mov r2, #0xf +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__02301A0C cmp r0, #0 bne _02301BE8 mov r0, r7 mov r1, r6 mov r2, #0x18 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__02301A0C cmp r0, #0 beq _02301C18 @@ -2036,9 +2439,15 @@ _02301C18: mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 +#ifdef JAPAN +_02301C20: .word 0x00000977 +_02301C24: .word 0x00000978 +_02301C28: .word 0x00000979 +#else _02301C20: .word 0x00000C38 _02301C24: .word 0x00000C39 _02301C28: .word 0x00000C3A +#endif arm_func_end IsProtectedFromStatDrops arm_func_start ov29_02301C2C @@ -2054,7 +2463,11 @@ ov29_02301C2C: ; 0x02301C2C movne r0, #0 ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} mov r6, #0 +#ifdef JAPAN + add r5, r8, #0x120 +#else add r5, r8, #0x124 +#endif mov fp, r6 mov r4, #1 b _02301CCC @@ -2151,6 +2564,45 @@ _02301D80: .word AbilityIsActive arm_func_start OtherMonsterAbilityIsActive OtherMonsterAbilityIsActive: ; 0x02301D84 +#ifdef JAPAN + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r5, r0 + mov r4, r1 + mov r7, #0 + ldr r6, _02301E14 ; =DUNGEON_PTR + b _02303354 +_023032F4: + ldr r0, [r6] + add r0, r0, r7, lsl #2 + add r0, r0, #0x12000 + ldr r8, [r0, #0xad4] + mov r0, r8 + bl EntityIsValid__023000E4 + cmp r0, #0 + cmpne r5, r8 + beq _02303348 + mov r0, r5 + mov r1, r8 + bl ov29_022FAFD4 + cmp r0, #0 + beq _02303348 + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl DefenderAbilityIsActive__02301A0C + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} +_02303348: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 +_02303354: + cmp r7, #0x14 + blt _023032F4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +#else stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} mov r7, r0 mov r6, r1 @@ -2190,6 +2642,7 @@ _02301E04: blt _02301DA0 mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +#endif .align 2, 0 _02301E14: .word DUNGEON_PTR arm_func_end OtherMonsterAbilityIsActive @@ -2527,7 +2980,11 @@ _02302228: mov r0, r4 add r1, r1, r6, lsl #2 add r1, r1, #0x12000 +#ifdef JAPAN + ldr r7, [r1, #0xa84] +#else ldr r7, [r1, #0xb28] +#endif bl EntityIsValid__023000E4 cmp r0, #0 cmpne r4, r7 @@ -2653,29 +3110,34 @@ _023023B8: arm_func_start UpdateStateFlags UpdateStateFlags: ; 0x023023C0 +#ifdef JAPAN +#define UPDATE_STATE_FLAGS_OFFSET -4 +#else +#define UPDATE_STATE_FLAGS_OFFSET 0 +#endif stmdb sp!, {r3, lr} add r3, r0, #0x100 - ldrh ip, [r3, #0x58] + ldrh ip, [r3, #0x58 + UPDATE_STATE_FLAGS_OFFSET] tst ip, r1 - ldrneh ip, [r3, #0x5a] - ldreqh lr, [r3, #0x5a] + ldrneh ip, [r3, #0x5a + UPDATE_STATE_FLAGS_OFFSET] + ldreqh lr, [r3, #0x5a + UPDATE_STATE_FLAGS_OFFSET] orrne ip, ip, r1 mvneq ip, r1 andeq ip, lr, ip cmp r2, #0 add r2, r0, #0x100 - strh ip, [r3, #0x5a] - ldrneh r3, [r2, #0x58] - ldreqh ip, [r2, #0x58] + strh ip, [r3, #0x5a + UPDATE_STATE_FLAGS_OFFSET] + ldrneh r3, [r2, #0x58 + UPDATE_STATE_FLAGS_OFFSET] + ldreqh ip, [r2, #0x58 + UPDATE_STATE_FLAGS_OFFSET] add r0, r0, #0x100 orrne r3, r3, r1 mvneq r3, r1 andeq r3, ip, r3 - strh r3, [r2, #0x58] - ldrh r2, [r0, #0x5a] + strh r3, [r2, #0x58 + UPDATE_STATE_FLAGS_OFFSET] + ldrh r2, [r0, #0x5a + UPDATE_STATE_FLAGS_OFFSET] tst r2, r1 bne _02302428 - ldrh r0, [r0, #0x58] + ldrh r0, [r0, #0x58 + UPDATE_STATE_FLAGS_OFFSET] tst r0, r1 movne r0, #1 ldmneia sp!, {r3, pc} @@ -2733,7 +3195,11 @@ _023024D4: add sp, sp, #8 ldmia sp!, {r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_023024DC: .word 0x00000978 +#else _023024DC: .word 0x00000C39 +#endif arm_func_end IsProtectedFromNegativeStatus arm_func_start ov29_023024E0 @@ -2768,6 +3234,11 @@ _02302534: arm_func_start AddExpSpecial AddExpSpecial: ; 0x0230253C +#ifdef JAPAN +#define ADD_EXP_SPECIAL_OFFSET -4 +#else +#define ADD_EXP_SPECIAL_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r7, r1 ldr r5, [r7, #0xb4] @@ -2838,7 +3309,7 @@ _02302630: cmp r0, #0 movne r0, #0 bne _02302650 - add r0, r1, #0x228 + add r0, r1, #0x228 + ADD_EXP_SPECIAL_OFFSET mov r1, #0x4f bl ExclusiveItemEffectFlagTest _02302650: @@ -2860,10 +3331,10 @@ _0230267C: ldr r0, [r5, #0x20] subs r2, r4, r0 ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r5, #0x214] + ldr r1, [r5, #0x214 + ADD_EXP_SPECIAL_OFFSET] ldr r0, _023026B4 ; =DUNGEON_PTR add r1, r1, r2 - str r1, [r5, #0x214] + str r1, [r5, #0x214 + ADD_EXP_SPECIAL_OFFSET] ldr r0, [r0] mov r1, #1 strb r1, [r0, #0xf] @@ -2895,6 +3366,11 @@ ItemIsActive__023026CC: ; 0x023026CC arm_func_start EnemyEvolution EnemyEvolution: ; 0x023026FC +#ifdef JAPAN +#define ENEMY_EVOLUTION_OFFSET -0xA4 +#else +#define ENEMY_EVOLUTION_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x168 mov sl, r0 @@ -2936,7 +3412,11 @@ _02302780: ldr r2, [sp, #0x18] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r5, [r0, #0xad4] +#else ldr r5, [r0, #0xb78] +#endif ldr r1, [sp, #0xc] ldr r0, [sp, #0x10] mov r6, #0 @@ -2959,7 +3439,7 @@ _02302780: movne r0, r6 strneb r0, [sb, #0x102] bne _02302A08 - ldr fp, [sb, #0x214] + ldr fp, [sb, #0x214 + ENEMY_EVOLUTION_OFFSET] cmp fp, #0 beq _023028C4 ldrb r0, [sb, #7] @@ -3013,7 +3493,7 @@ _02302818: bl LevelUp orr r6, r6, r0 _023028C4: - ldrb r0, [sb, #0x153] + ldrb r0, [sb, #0x153 + ENEMY_EVOLUTION_OFFSET] cmp r0, #0 beq _02302968 ldrsh r0, [sb, #2] @@ -3103,8 +3583,8 @@ _023029EC: bl ov29_02302C04 _02302A08: mov r0, #0 - str r0, [sb, #0x214] - strb r0, [sb, #0x153] + str r0, [sb, #0x214 + ENEMY_EVOLUTION_OFFSET] + strb r0, [sb, #0x153 + ENEMY_EVOLUTION_OFFSET] _02302A14: add r4, r4, #1 cmp r4, #0x14 @@ -3116,5 +3596,9 @@ _02302A20: _02302A28: .word DUNGEON_PTR _02302A2C: .word ov29_023527F8 _02302A30: .word 0x000003E7 +#ifdef JAPAN +_02302A34: .word 0x00002486 +#else _02302A34: .word 0x00000F1F +#endif arm_func_end EnemyEvolution diff --git a/asm/overlay_29_02302A5C.s b/asm/overlay_29_02302A5C.s index 4d7f9dfc..3535180d 100644 --- a/asm/overlay_29_02302A5C.s +++ b/asm/overlay_29_02302A5C.s @@ -96,8 +96,13 @@ _02302BA8: mov r3, r8 bl ov29_02302C04 mov r0, #0 +#ifdef JAPAN + str r0, [r5, #0x210] + strb r0, [r5, #0x14f] +#else str r0, [r5, #0x214] strb r0, [r5, #0x153] +#endif cmp r4, #0 bne _02302BF4 cmp r8, #0 @@ -114,7 +119,11 @@ _02302BF4: ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _02302BFC: .word 0x000003E7 +#ifdef JAPAN +_02302C00: .word 0x00002484 +#else _02302C00: .word 0x00000F1D +#endif arm_func_end LevelUpItemEffect arm_func_start ov29_02302C04 @@ -171,7 +180,11 @@ _02302CB8: ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _02302CC0: .word DUNGEON_PTR +#ifdef JAPAN +_02302CC4: .word 0x00002491 +#else _02302CC4: .word 0x00000F2A +#endif arm_func_end ov29_02302C04 arm_func_start ov29_02302CC8 @@ -277,7 +290,11 @@ _02302E18: ldr r1, [r1, r2, lsl #2] bl strcat _02302E44: +#ifdef JAPAN + mov r0, #0x2480 +#else ldr r0, _02302F78 ; =0x00000F19 +#endif bl StringFromId mov r1, r0 mov r0, r5 @@ -358,15 +375,22 @@ _02302F4C: add sp, sp, #0x58 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 +#ifdef JAPAN +#define OV29_02302CC8_OFFSET 0x1567 +#else +#define OV29_02302CC8_OFFSET 0 +#endif _02302F64: .word DUNGEON_PTR -_02302F68: .word 0x00000F27 -_02302F6C: .word 0x00000F18 +_02302F68: .word 0x00000F27 + OV29_02302CC8_OFFSET +_02302F6C: .word 0x00000F18 + OV29_02302CC8_OFFSET _02302F70: .word ov29_023527F0 _02302F74: .word ov29_023535C8 +#ifndef JAPAN _02302F78: .word 0x00000F19 -_02302F7C: .word 0x00000F1A -_02302F80: .word 0x00000F1B -_02302F84: .word 0x00000F1C +#endif +_02302F7C: .word 0x00000F1A + OV29_02302CC8_OFFSET +_02302F80: .word 0x00000F1B + OV29_02302CC8_OFFSET +_02302F84: .word 0x00000F1C + OV29_02302CC8_OFFSET arm_func_end ov29_02302CC8 arm_func_start TryDecreaseLevel @@ -403,8 +427,13 @@ TryDecreaseLevel: ; 0x02302F88 orr r4, r4, r0 _02303000: mov r0, #0 +#ifdef JAPAN + str r0, [r5, #0x210] + strb r0, [r5, #0x14f] +#else str r0, [r5, #0x214] strb r0, [r5, #0x153] +#endif cmp r4, #0 bne _02303030 mov r1, r7 @@ -418,7 +447,11 @@ _02303030: add sp, sp, #0xc ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} .align 2, 0 +#ifdef JAPAN +_02303038: .word 0x00002485 +#else _02303038: .word 0x00000F1E +#endif arm_func_end TryDecreaseLevel arm_func_start LevelUp @@ -479,8 +512,13 @@ _023030F0: mov r3, r1 str r1, [sp] bl ov29_0230040C +#ifdef JAPAN + ldr r1, _023047C0 ; =0x00002487 + mov r0, sl +#else mov r0, sl mov r1, #0xf20 +#endif bl ov29_0234D484 b _02303160 _02303124: @@ -497,8 +535,13 @@ _02303130: mov r3, r1 str r1, [sp] bl ov29_0230040C +#ifdef JAPAN + ldr r1, _023047C0 ; =0x00002487 + mov r0, sl +#else mov r0, sl mov r1, #0xf20 +#endif bl LogMessageByIdWithPopup _02303160: ldrh r1, [sp, #0x10] @@ -575,6 +618,9 @@ _02303268: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _02303270: .word ov29_0237C9C4 +#ifdef JAPAN +_023047C0: .word 0x00002487 +#endif _02303274: .word 0x000003E7 _02303278: .word ov29_0237C9C8 _0230327C: .word ov29_0237C9C9 @@ -743,12 +789,22 @@ _023034C8: .word 0x000003E7 _023034CC: .word ov29_0237C9C8 _023034D0: .word ov29_0237C9C9 _023034D4: .word ov29_0237C9C5 +#ifdef JAPAN +_023034D8: .word 0x00002489 +_023034DC: .word 0x00002488 +#else _023034D8: .word 0x00000F22 _023034DC: .word 0x00000F21 +#endif arm_func_end ov29_02303284 arm_func_start ov29_023034E0 ov29_023034E0: ; 0x023034E0 +#ifdef JAPAN +#define OV29_023034E0_OFFSET -4 +#else +#define OV29_023034E0_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x78 mov sb, r1 @@ -770,7 +826,7 @@ ov29_023034E0: ; 0x023034E0 cmp r6, r0 addne r0, r5, r6, lsl #3 addne r0, r0, #0x100 - ldrneh r7, [r0, #0x28] + ldrneh r7, [r0, #0x28 + OV29_023034E0_OFFSET] mov ip, sl mov lr, sl moveq r7, #0 @@ -778,7 +834,7 @@ ov29_023034E0: ; 0x023034E0 add r0, sp, #0x10 _0230354C: add r1, r5, ip, lsl #3 - ldrb r1, [r1, #0x124] + ldrb r1, [r1, #0x124 + OV29_023034E0_OFFSET] tst r1, #1 movne r1, r3 moveq r1, lr @@ -786,7 +842,7 @@ _0230354C: beq _02303588 add r1, r5, ip, lsl #3 add r1, r1, #0x100 - ldrh r2, [r1, #0x28] + ldrh r2, [r1, #0x28 + OV29_023034E0_OFFSET] mov r1, sl, lsl #1 add sl, sl, #1 strh r2, [r0, r1] @@ -820,7 +876,7 @@ _023035C0: bl sub_02053904 mov sl, r0 add r0, sp, #0x18 - add r1, r5, #0x124 + add r1, r5, #0x124 + OV29_023034E0_OFFSET bl sub_020149C0 cmp sl, #0 beq _02303670 @@ -879,7 +935,7 @@ _0230367C: _023036B4: add r1, r5, ip, lsl #3 add r0, sp, #0x18 - add r2, r1, #0x124 + add r2, r1, #0x124 + OV29_023034E0_OFFSET add r3, r0, ip, lsl #3 mov r1, #4 _023036C8: @@ -889,12 +945,12 @@ _023036C8: bne _023036C8 add r0, r5, ip, lsl #3 add r0, r0, #0x100 - ldrh r1, [r0, #0x26] + ldrh r1, [r0, #0x26 + OV29_023034E0_OFFSET] add ip, ip, #1 tst r1, #4 bicne r1, r1, #4 - strneh r1, [r0, #0x26] - ldrneh r4, [r0, #0x28] + strneh r1, [r0, #0x26 + OV29_023034E0_OFFSET] + ldrneh r4, [r0, #0x28 + OV29_023034E0_OFFSET] movne sl, #1 _023036FC: cmp ip, lr @@ -903,7 +959,7 @@ _023036FC: b _02303718 _0230370C: add r0, r5, ip, lsl #3 - strb r1, [r0, #0x124] + strb r1, [r0, #0x124 + OV29_023034E0_OFFSET] add ip, ip, #1 _02303718: cmp ip, #4 @@ -987,7 +1043,7 @@ _02303818: b _0230389C _02303840: add r3, r5, r4, lsl #3 - ldrb r3, [r3, #0x124] + ldrb r3, [r3, #0x124 + OV29_023034E0_OFFSET] tst r3, #1 movne r3, r1 moveq r3, r0 @@ -995,7 +1051,7 @@ _02303840: beq _02303870 add r3, r5, r4, lsl #3 add r3, r3, #0x100 - ldrh r3, [r3, #0x28] + ldrh r3, [r3, #0x28 + OV29_023034E0_OFFSET] cmp r7, r3 beq _023038A4 _02303870: @@ -1020,19 +1076,30 @@ _023038A4: beq _023038BC _023038B4: mov r0, #1 - strb r0, [r5, #0x23e] + strb r0, [r5, #0x23e + OV29_023034E0_OFFSET] _023038BC: add sp, sp, #0x78 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _023038C4: .word 0x0000131B +#ifdef JAPAN +_023038C8: .word 0x0000248A +_023038CC: .word 0xFFFFFE5E +_023038D0: .word 0x0000248C +#else _023038C8: .word 0x00000F23 _023038CC: .word 0xFFFFFE5E _023038D0: .word 0x00000F25 +#endif arm_func_end ov29_023034E0 arm_func_start ov29_023038D4 ov29_023038D4: ; 0x023038D4 +#ifdef JAPAN +#define OV29_023038D4_OFFSET -4 +#else +#define OV29_023038D4_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0xa4 mov sl, r0 @@ -1040,7 +1107,7 @@ ov29_023038D4: ; 0x023038D4 mov r6, r1 mov r5, #0 add r0, sp, #0 - add r1, r8, #0x124 + add r1, r8, #0x124 + OV29_023038D4_OFFSET mov r7, r5 bl sub_020149C0 mov r4, r5 @@ -1092,13 +1159,13 @@ _02303978: cmp r6, #4 bgt _02303A84 mov sb, #0 - add r4, r8, #0x124 + add r4, r8, #0x124 + OV29_023038D4_OFFSET add fp, sp, #0 b _02303A14 _023039B4: add r0, r8, sb, lsl #3 add r3, fp, sb, lsl #3 - add r2, r0, #0x124 + add r2, r0, #0x124 + OV29_023038D4_OFFSET mov r1, #4 _023039C4: ldrh r0, [r3], #2 @@ -1107,18 +1174,18 @@ _023039C4: bne _023039C4 add r0, r8, sb, lsl #3 add r3, r0, #0x100 - ldrh r0, [r3, #0x26] + ldrh r0, [r3, #0x26 + OV29_023038D4_OFFSET] tst r0, #4 beq _02303A10 bic r5, r0, #4 add r0, sp, #0x40 mov r2, #0 add r1, r4, sb, lsl #3 - strh r5, [r3, #0x26] + strh r5, [r3, #0x26 + OV29_023038D4_OFFSET] bl FormatMoveString add r0, r8, sb, lsl #3 add r0, r0, #0x100 - ldrh r5, [r0, #0x28] + ldrh r5, [r0, #0x28 + OV29_023038D4_OFFSET] mov r7, #1 _02303A10: add sb, sb, #1 @@ -1129,7 +1196,7 @@ _02303A14: b _02303A30 _02303A24: add r0, r8, sb, lsl #3 - strb r1, [r0, #0x124] + strb r1, [r0, #0x124 + OV29_023038D4_OFFSET] add sb, sb, #1 _02303A30: cmp sb, #4 @@ -1194,9 +1261,15 @@ _02303B00: ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _02303B08: .word 0x0000131B +#ifdef JAPAN +_02303B0C: .word 0x0000248A +_02303B10: .word 0x0000248F +_02303B14: .word 0x0000248B +#else _02303B0C: .word 0x00000F23 _02303B10: .word 0x00000F28 _02303B14: .word 0x00000F24 +#endif arm_func_end ov29_023038D4 arm_func_start GetMonsterMoves @@ -1411,7 +1484,11 @@ _02303DF4: add sp, sp, #0x20 ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 +#ifdef JAPAN +_02303DFC: .word 0x00002490 +#else _02303DFC: .word 0x00000F29 +#endif _02303E00: .word 0x0000013F _02303E04: .word DIRECTIONS_XY _02303E08: .word ov29_0235171E @@ -1497,6 +1574,13 @@ _02303F14: .word _020AFC4C arm_func_start ov29_02303F18 ov29_02303F18: ; 0x02303F18 +#ifdef JAPAN +#define OV29_02303F18_OFFSET -4 +#define OV29_02303F18_OFFSET_2 -0xA4 +#else +#define OV29_02303F18_OFFSET 0 +#define OV29_02303F18_OFFSET_2 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} sub sp, sp, #0x38 ldr r1, _023046C8 ; =DUNGEON_PTR @@ -1504,10 +1588,10 @@ ov29_02303F18: ; 0x02303F18 ldr r0, [r1] ldr r5, [r7, #0xb4] add r0, r0, #0x1a000 - ldr r1, [r0, #0x22c] + ldr r1, [r0, #0x22c + OV29_02303F18_OFFSET_2] cmp r1, r7 moveq r4, #0 - ldrneb r4, [r0, #0x245] + ldrneb r4, [r0, #0x245 + OV29_02303F18_OFFSET_2] ldrb r0, [r5, #0xd8] ldrb r1, [r7, #0xaf] cmp r0, #2 @@ -1531,7 +1615,11 @@ ov29_02303F18: ; 0x02303F18 bl GetIdleAnimationId mov r3, #1 strb r3, [r7, #0x21] +#ifdef JAPAN + ldrb r1, [r5, #0x109] +#else ldrb r1, [r5, #0x10a] +#endif cmp r1, #0x63 bne _02303FF4 ldrb r6, [r7, #0xaf] @@ -1565,7 +1653,7 @@ _02303FF4: and r2, r2, #7 strb r2, [r7, #0xb0] strb r1, [r7, #0xb3] - ldrb r1, [r5, #0x23d] + ldrb r1, [r5, #0x23d + OV29_02303F18_OFFSET] cmp r1, #0 ldreqb r1, [r7, #0xae] cmpeq r1, #6 @@ -1636,7 +1724,7 @@ _023040EC: add r0, r7, #0x2c mov r3, r3, asr #0x10 bl SetAndPlayAnimationForAnimationControl - ldrb r0, [r5, #0x171] + ldrb r0, [r5, #0x171 + OV29_02303F18_OFFSET] cmp r0, #0 beq _023041E4 add r0, r7, #0x2c @@ -1716,12 +1804,12 @@ _0230422C: ldrsh r4, [r8, r1] ldr r6, [r7, #0x10] ldr r3, [r7, #0x1c] - ldrb r2, [r5, #0x160] + ldrb r2, [r5, #0x160 + OV29_02303F18_OFFSET] rsb r1, r4, r6, asr #8 ldrsh r8, [r8, r0] add r1, r1, r1, lsr #31 ldr sb, [r7, #0xc] - ldr r0, [r5, #0x188] + ldr r0, [r5, #0x188 + OV29_02303F18_OFFSET] sub r3, r6, r3 sub r0, r3, r0 rsb r8, r8, sb, asr #8 @@ -1739,18 +1827,18 @@ _0230422C: moveq r0, #2 add r8, r8, r0 _023042B0: - ldrb r0, [r5, #0x172] + ldrb r0, [r5, #0x172 + OV29_02303F18_OFFSET] cmp r0, #0 bne _023042D8 mov r0, r7 bl ov29_022E273C - ldrb r1, [r5, #0x170] + ldrb r1, [r5, #0x170 + OV29_02303F18_OFFSET] mov r4, r0 cmp r1, #0 movne r4, #0 b _02304310 _023042D8: - ldrb r0, [r5, #0x173] + ldrb r0, [r5, #0x173 + OV29_02303F18_OFFSET] cmp r0, #0 beq _023042FC ldr r0, _023046D8 ; =ov29_0237C850 @@ -1760,7 +1848,7 @@ _023042D8: mvneq r0, #0 add r8, r8, r0 _023042FC: - ldrb r0, [r5, #0x174] + ldrb r0, [r5, #0x174 + OV29_02303F18_OFFSET] cmp r0, #0 moveq r0, #1 movne r0, #0 @@ -1779,7 +1867,7 @@ _02304310: strh r3, [sp, #0x18] ldr ip, [r7, #0x10] ldr r6, [r7, #0x1c] - ldr r3, [r5, #0x188] + ldr r3, [r5, #0x188 + OV29_02303F18_OFFSET] sub r6, ip, r6 sub r3, r6, r3 mov r3, r3, asr #8 @@ -1853,7 +1941,7 @@ _02304458: ldrb r2, [r5, #0xef] cmp r2, #1 addeq r1, r1, #0x1a000 - ldreqb r1, [r1, #0x244] + ldreqb r1, [r1, #0x244 + OV29_02303F18_OFFSET_2] cmpeq r1, #0 moveq r0, #1 cmp r0, #0 @@ -1903,7 +1991,11 @@ _02304510: strh sl, [r7, #0x64] strh r8, [r7, #0x48] strh sb, [r7, #0x4a] +#ifdef JAPAN + ldrb r0, [r5, #0x10a] +#else ldrb r0, [r5, #0x10b] +#endif cmp r0, #2 beq _02304590 ldrb r1, [r5, #0xc4] @@ -1938,23 +2030,23 @@ _02304590: ldrsh r2, [r7, #0x50] add r1, r5, #0x100 ldr r0, _023046D4 ; =0x0001A224 - strh r2, [r1, #0x82] + strh r2, [r1, #0x82 + OV29_02303F18_OFFSET] ldrsh r8, [r7, #0x52] ldr r3, _023046C8 ; =DUNGEON_PTR add r2, r0, #2 - strh r8, [r1, #0x84] - ldrsh sb, [r1, #0x82] + strh r8, [r1, #0x84 + OV29_02303F18_OFFSET] + ldrsh sb, [r1, #0x82 + OV29_02303F18_OFFSET] ldr r8, [r7, #0xc] add r8, sb, r8, asr #8 - strh r8, [r1, #0x82] - ldrsh sb, [r1, #0x84] + strh r8, [r1, #0x82 + OV29_02303F18_OFFSET] + ldrsh sb, [r1, #0x84 + OV29_02303F18_OFFSET] ldr r8, [r7, #0x10] add r8, sb, r8, asr #8 - strh r8, [r1, #0x84] + strh r8, [r1, #0x84 + OV29_02303F18_OFFSET] ldr sb, [r3] - ldrsh r8, [r1, #0x82] + ldrsh r8, [r1, #0x82 + OV29_02303F18_OFFSET] ldrsh r0, [sb, r0] - ldrsh r3, [r1, #0x84] + ldrsh r3, [r1, #0x84 + OV29_02303F18_OFFSET] ldrsh r1, [sb, r2] sub r0, r8, r0 mov r0, r0, lsl #0x10 @@ -1978,7 +2070,7 @@ _02304628: cmp r0, #0 bne _0230464C str sb, [sp] - ldrb r0, [r5, #0x160] + ldrb r0, [r5, #0x160 + OV29_02303F18_OFFSET] mov r1, r6 mov r2, r4 mov r3, r8 @@ -2007,7 +2099,7 @@ _02304690: cmpne r0, #7 bne _023046B8 ldr r0, [r7, #0xb4] - ldr r0, [r0, #0x110] + ldr r0, [r0, #0x110 + OV29_02303F18_OFFSET] cmp r0, #1 ble _023046B8 add r0, r7, #0x2c @@ -2022,7 +2114,7 @@ _023046C0: _023046C8: .word DUNGEON_PTR _023046CC: .word ov29_02352810 _023046D0: .word 0x00000229 -_023046D4: .word 0x0001A224 +_023046D4: .word 0x0001A224 + OV29_02303F18_OFFSET_2 _023046D8: .word ov29_0237C850 _023046DC: .word ov29_0235280C _023046E0: .word 0x0000F3FF @@ -2031,27 +2123,36 @@ _023046E4: .word 0xFFFFFE5D arm_func_start ov29_023046E8 ov29_023046E8: ; 0x023046E8 +#ifdef JAPAN +#define OV29_023046E8_OFFSET -4 +#else +#define OV29_023046E8_OFFSET 0 +#endif ldr r1, [r0, #0xb4] - ldrb r0, [r1, #0x172] + ldrb r0, [r1, #0x172 + OV29_023046E8_OFFSET] cmp r0, #0 bxne lr +#ifdef JAPAN + ldrb r0, [r1, #0x10a] +#else ldrb r0, [r1, #0x10b] +#endif cmp r0, #1 - ldr r0, [r1, #0x188] + ldr r0, [r1, #0x188 + OV29_023046E8_OFFSET] bne _02304728 cmp r0, #0xc800 bxge lr add r0, r0, #0x800 - str r0, [r1, #0x188] + str r0, [r1, #0x188 + OV29_023046E8_OFFSET] cmp r0, #0xc800 movgt r0, #0xc800 - strgt r0, [r1, #0x188] + strgt r0, [r1, #0x188 + OV29_023046E8_OFFSET] bx lr _02304728: subs r0, r0, #0xc00 - str r0, [r1, #0x188] + str r0, [r1, #0x188 + OV29_023046E8_OFFSET] movmi r0, #0 - strmi r0, [r1, #0x188] + strmi r0, [r1, #0x188 + OV29_023046E8_OFFSET] bx lr arm_func_end ov29_023046E8 @@ -2065,17 +2166,29 @@ _0230474C: ldr r0, [r6] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r4, [r0, #0xad4] +#else ldr r4, [r0, #0xb78] +#endif mov r0, r4 bl EntityIsValid__023047B8 cmp r0, #0 ldrne r2, [r4, #0xb4] +#ifdef JAPAN + ldrneb r0, [r2, #0x175] +#else ldrneb r0, [r2, #0x179] +#endif cmpne r0, #0 beq _023047A4 sub r1, r0, #1 and r0, r1, #0xff +#ifdef JAPAN + strb r1, [r2, #0x175] +#else strb r1, [r2, #0x179] +#endif tst r0, #1 bne _023047A4 ldrb r2, [r2, #0x4c] diff --git a/asm/overlay_29_023047DC.s b/asm/overlay_29_023047DC.s index 10029fea..9777e910 100644 --- a/asm/overlay_29_023047DC.s +++ b/asm/overlay_29_023047DC.s @@ -12,7 +12,11 @@ _023047E8: ldr r0, [r4] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r6, [r0, #0xad4] +#else ldr r6, [r0, #0xb78] +#endif mov r0, r6 bl EntityIsValid__023047B8 cmp r0, #0 @@ -40,8 +44,13 @@ ov29_02304830: ; 0x02304830 ldr r0, [r2] ldr r4, [r5, #0xb4] add r0, r0, #0x1a000 +#ifdef JAPAN + ldr r2, [r0, #0x188] + ldrb r3, [r0, #0x1a1] +#else ldr r2, [r0, #0x22c] ldrb r3, [r0, #0x245] +#endif cmp r5, r2 mov r2, #0 strb r2, [r5, #0x28] @@ -121,7 +130,11 @@ _02304960: ldr r0, [r4] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r6, [r0, #0xad4] +#else ldr r6, [r0, #0xb78] +#endif mov r0, r6 bl EntityIsValid__023047B8 cmp r0, #0 @@ -296,7 +309,11 @@ _02304B70: ldr r0, [r4] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r6, [r0, #0xad4] +#else ldr r6, [r0, #0xb78] +#endif mov r0, r6 bl EntityIsValid__023047B8 cmp r0, #0 @@ -340,14 +357,22 @@ _02304BF8: ldr r1, _02304C38 ; =SECONDARY_TERRAIN_TYPES ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrsh r0, [r0, #0x30] +#else ldrsh r0, [r0, #0xd4] +#endif ldrb r0, [r1, r0] cmp r0, #1 ldrne r0, _02304C30 ; =ov29_02352808 ldrneb r4, [r0, r4] _02304C24: mov r0, r4 +#ifdef JAPAN + strb r4, [r5, #0x21c] +#else strb r4, [r5, #0x220] +#endif ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _02304C30: .word ov29_02352808 @@ -422,12 +447,17 @@ _02304CFC: arm_func_start ov29_02304D20 ov29_02304D20: ; 0x02304D20 +#ifdef JAPAN +#define OV29_02304D20_OFFSET -4 +#else +#define OV29_02304D20_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} mov r6, r0 ldr sb, [r6, #0xb4] mov r5, r1 add r0, sb, #0x200 - ldrsh r0, [r0, #0xc] + ldrsh r0, [r0, #0xc + OV29_02304D20_OFFSET] mov r4, r2 cmp r0, #4 movge r0, #0 @@ -440,9 +470,9 @@ ov29_02304D20: ; 0x02304D20 moveq r1, #1 str r1, [r2] add r0, sb, #0x200 - ldrsh r3, [r0, #0xc] + ldrsh r3, [r0, #0xc + OV29_02304D20_OFFSET] mov r1, #0x1c - add r0, sb, #0x19c + add r0, sb, #0x19c + OV29_02304D20_OFFSET smulbb sl, r3, r1 add r7, r0, sl mov r1, #0 @@ -474,10 +504,10 @@ ov29_02304D20: ; 0x02304D20 moveq r1, #1 add r0, sb, #0x200 str r1, [r5] - ldrsh r1, [r0, #0xc] + ldrsh r1, [r0, #0xc + OV29_02304D20_OFFSET] add r1, r1, #1 - strh r1, [r0, #0xc] - ldrsh r0, [r0, #0xc] + strh r1, [r0, #0xc + OV29_02304D20_OFFSET] + ldrsh r0, [r0, #0xc + OV29_02304D20_OFFSET] cmp r0, #2 bne _02304E6C ldr r1, [r5] @@ -485,15 +515,15 @@ ov29_02304D20: ; 0x02304D20 mov r1, r1, lsl #1 bl _s32_div_f add r1, sb, #0x100 - strh r0, [r1, #0xb4] - ldr r0, [sb, #0x1ac] + strh r0, [r1, #0xb4 + OV29_02304D20_OFFSET] + ldr r0, [sb, #0x1ac + OV29_02304D20_OFFSET] mov r1, r5 mov r0, r0, lsl #1 - str r0, [sb, #0x1ac] - ldr r2, [sb, #0x1b0] + str r0, [sb, #0x1ac + OV29_02304D20_OFFSET] + ldr r2, [sb, #0x1b0 + OV29_02304D20_OFFSET] mov r0, #0x18 mov r2, r2, lsl #1 - str r2, [sb, #0x1b0] + str r2, [sb, #0x1b0 + OV29_02304D20_OFFSET] ldr r1, [r1] mov r1, r1, lsl #1 bl _s32_div_f @@ -518,23 +548,23 @@ _02304E80: add r1, r1, r1, lsl #1 bl _s32_div_f add r1, r8, #0x100 - strh r0, [r1, #0xb4] - ldr r0, [r8, #0x1ac] + strh r0, [r1, #0xb4 + OV29_02304D20_OFFSET] + ldr r0, [r8, #0x1ac + OV29_02304D20_OFFSET] add r6, r6, #1 add r0, r0, r0, lsl #1 - str r0, [r8, #0x1ac] - ldr r0, [r8, #0x1b0] + str r0, [r8, #0x1ac + OV29_02304D20_OFFSET] + ldr r0, [r8, #0x1b0 + OV29_02304D20_OFFSET] cmp r6, #2 add r0, r0, r0, lsl #1 - str r0, [r8, #0x1b0] - ldr r0, [r8, #0x1ac] + str r0, [r8, #0x1b0 + OV29_02304D20_OFFSET] + ldr r0, [r8, #0x1ac + OV29_02304D20_OFFSET] add r0, r0, r0, lsr #31 mov r0, r0, asr #1 - str r0, [r8, #0x1ac] - ldr r0, [r8, #0x1b0] + str r0, [r8, #0x1ac + OV29_02304D20_OFFSET] + ldr r0, [r8, #0x1b0 + OV29_02304D20_OFFSET] add r0, r0, r0, lsr #31 mov r0, r0, asr #1 - str r0, [r8, #0x1b0] + str r0, [r8, #0x1b0 + OV29_02304D20_OFFSET] blt _02304E80 ldr r1, _02304FD4 ; =ov29_0237C9CC mov r0, #0x18 @@ -563,22 +593,22 @@ _02304F2C: mov r1, r1, lsl #2 bl _s32_div_f add r1, sl, #0x100 - strh r0, [r1, #0xb4] - ldr r0, [sl, #0x1ac] + strh r0, [r1, #0xb4 + OV29_02304D20_OFFSET] + ldr r0, [sl, #0x1ac + OV29_02304D20_OFFSET] mov r1, fp mov r0, r0, lsl #2 - str r0, [sl, #0x1ac] - ldr r0, [sl, #0x1b0] + str r0, [sl, #0x1ac + OV29_02304D20_OFFSET] + ldr r0, [sl, #0x1b0 + OV29_02304D20_OFFSET] mov r0, r0, lsl #2 - str r0, [sl, #0x1b0] - ldr r0, [sl, #0x1ac] + str r0, [sl, #0x1b0 + OV29_02304D20_OFFSET] + ldr r0, [sl, #0x1ac + OV29_02304D20_OFFSET] bl _s32_div_f - str r0, [sl, #0x1ac] - ldr r0, [sl, #0x1b0] + str r0, [sl, #0x1ac + OV29_02304D20_OFFSET] + ldr r0, [sl, #0x1b0 + OV29_02304D20_OFFSET] mov r1, #3 bl _s32_div_f add r8, r8, #1 - str r0, [sl, #0x1b0] + str r0, [sl, #0x1b0 + OV29_02304D20_OFFSET] cmp r8, #3 blt _02304F2C ldr r1, _02304FD4 ; =ov29_0237C9CC @@ -608,6 +638,13 @@ _02304FDC: .word ov29_0235173E arm_func_start DisplayActions DisplayActions: ; 0x02304FE0 +#ifdef JAPAN +#define DISPLAY_ACTIONS_OFFSET -4 +#define DISPLAY_ACTIONS_OFFSET_2 -0xA4 +#else +#define DISPLAY_ACTIONS_OFFSET 0 +#define DISPLAY_ACTIONS_OFFSET_2 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x14 ldr r1, _02305580 ; =ov29_0237C9C1 @@ -629,30 +666,30 @@ _02305020: ldr r0, [r0] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 - ldr r8, [r0, #0xb78] + ldr r8, [r0, #0xb78 + DISPLAY_ACTIONS_OFFSET_2] mov r0, r8 bl EntityIsValid__0230558C cmp r0, #0 beq _02305160 ldr sb, [r8, #0xb4] add r0, sb, #0x200 - ldrsh r0, [r0, #0xc] + ldrsh r0, [r0, #0xc + DISPLAY_ACTIONS_OFFSET] cmp r0, #0 bne _023050EC - ldrb r0, [sb, #0x151] + ldrb r0, [sb, #0x151 + DISPLAY_ACTIONS_OFFSET] cmp r0, #0 beq _02305160 - strb r4, [sb, #0x151] + strb r4, [sb, #0x151 + DISPLAY_ACTIONS_OFFSET] add r0, sb, #0x100 - ldrsh r1, [r0, #0x7e] + ldrsh r1, [r0, #0x7e + DISPLAY_ACTIONS_OFFSET] cmp r1, #0 - ldreqsh r0, [r0, #0x80] + ldreqsh r0, [r0, #0x80 + DISPLAY_ACTIONS_OFFSET] cmpeq r0, #0 beq _02305160 ldrsh r0, [r8, #4] cmp r1, r0 addeq r0, sb, #0x100 - ldreqsh r1, [r0, #0x80] + ldreqsh r1, [r0, #0x80 + DISPLAY_ACTIONS_OFFSET] ldreqsh r0, [r8, #6] cmpeq r1, r0 beq _02305160 @@ -667,7 +704,7 @@ _02305020: bne _02305160 _023050C0: add r0, r8, #4 - add r1, sb, #0x7e + add r1, sb, #0x7e + DISPLAY_ACTIONS_OFFSET add r1, r1, #0x100 bl GetDirectionTowardsPosition mov r1, r0 @@ -683,25 +720,25 @@ _023050EC: add r1, sp, #0xc orr r2, r2, #0x2000 strh r2, [sb] - ldr r3, [sb, #0x1a0] + ldr r3, [sb, #0x1a0 + DISPLAY_ACTIONS_OFFSET] mov r2, #0x18 mul r2, r3, r2 add r2, r2, #0xc mov r2, r2, lsl #8 str r2, [sp, #0xc] - ldr r3, [sb, #0x1a4] + ldr r3, [sb, #0x1a4 + DISPLAY_ACTIONS_OFFSET] mov r2, #0x18 mul r2, r3, r2 add r2, r2, #0x10 mov r2, r2, lsl #8 str r2, [sp, #0x10] bl UpdateEntityPixelPos - ldr r2, [sb, #0x1a8] + ldr r2, [sb, #0x1a8 + DISPLAY_ACTIONS_OFFSET] mov r0, r8 mov r1, #0 bl ov29_023049D4 add r0, sb, #0x200 - strh fp, [r0, #0xe] + strh fp, [r0, #0xe + DISPLAY_ACTIONS_OFFSET] mov r0, r8 mov r6, #1 bl ShouldDisplayEntityWrapper @@ -738,16 +775,16 @@ _023051C4: ldr r0, [r4] add r0, r0, sl, lsl #2 add r0, r0, #0x12000 - ldr r7, [r0, #0xb78] + ldr r7, [r0, #0xb78 + DISPLAY_ACTIONS_OFFSET_2] mov r0, r7 bl EntityIsValid__0230558C cmp r0, #0 beq _02305304 ldr sb, [r7, #0xb4] add r0, sb, #0x200 - ldrsh r2, [r0, #0xe] - ldrsh r1, [r0, #0xc] - add r3, sb, #0x19c + ldrsh r2, [r0, #0xe + DISPLAY_ACTIONS_OFFSET] + ldrsh r1, [r0, #0xc + DISPLAY_ACTIONS_OFFSET] + add r3, sb, #0x19c + DISPLAY_ACTIONS_OFFSET mov r0, #0x1c smlabb r8, r2, r0, r3 cmp r1, #0 @@ -782,25 +819,25 @@ _02305258: add r2, sb, #0x200 ldrsh r0, [r2, #0xe] add r0, r0, #1 - strh r0, [r2, #0xe] - ldrsh r1, [r2, #0xe] - ldrsh r0, [r2, #0xc] + strh r0, [r2, #0xe + DISPLAY_ACTIONS_OFFSET] + ldrsh r1, [r2, #0xe + DISPLAY_ACTIONS_OFFSET] + ldrsh r0, [r2, #0xc + DISPLAY_ACTIONS_OFFSET] cmp r1, r0 - streqh fp, [r2, #0xc] + streqh fp, [r2, #0xc + DISPLAY_ACTIONS_OFFSET] beq _02305304 mov r0, #0x1c smlabb r0, r1, r0, sb - ldr r3, [r0, #0x1a0] + ldr r3, [r0, #0x1a0 + DISPLAY_ACTIONS_OFFSET] mov r1, #0x18 mul r1, r3, r1 add r1, r1, #0xc mov r1, r1, lsl #8 str r1, [sp, #4] - ldrsh r3, [r2, #0xe] + ldrsh r3, [r2, #0xe + DISPLAY_ACTIONS_OFFSET] mov r2, #0x1c mov r0, r7 smlabb r2, r3, r2, sb - ldr r3, [r2, #0x1a4] + ldr r3, [r2, #0x1a4 + DISPLAY_ACTIONS_OFFSET] mov r2, #0x18 mul r2, r3, r2 add r2, r2, #0x10 @@ -809,11 +846,11 @@ _02305258: str r2, [sp, #8] bl UpdateEntityPixelPos add r2, sb, #0x200 - ldrsh r3, [r2, #0xe] + ldrsh r3, [r2, #0xe + DISPLAY_ACTIONS_OFFSET] mov r2, #0x1c mov r0, r7 smlabb r2, r3, r2, sb - ldr r2, [r2, #0x1a8] + ldr r2, [r2, #0x1a8 + DISPLAY_ACTIONS_OFFSET] mov r1, #0 bl ov29_023049D4 _02305304: @@ -836,14 +873,14 @@ _02305338: ldr r0, [r8] add r0, r0, r7, lsl #2 add r0, r0, #0x12000 - ldr r5, [r0, #0xb78] + ldr r5, [r0, #0xb78 + DISPLAY_ACTIONS_OFFSET_2] mov r0, r5 bl EntityIsValid__0230558C cmp r0, #0 beq _0230537C ldr r1, [r5, #0xb4] add r0, r1, #0x200 - strh r4, [r0, #0xc] + strh r4, [r0, #0xc + DISPLAY_ACTIONS_OFFSET] ldrh r0, [r1] tst r0, #0x2000 beq _0230537C @@ -867,7 +904,7 @@ _023053A8: ldr r0, [r5] add r0, r0, sl, lsl #2 add r0, r0, #0x12000 - ldr sb, [r0, #0xb78] + ldr sb, [r0, #0xb78 + DISPLAY_ACTIONS_OFFSET_2] mov r0, sb bl EntityIsValid__0230558C cmp r0, #0 @@ -946,7 +983,7 @@ _0230547C: ldr r1, [r5] mov r0, sb add r1, r1, #0x4000 - ldrb r1, [r1, #0xc4] + ldrb r1, [r1, #0xc4 + DISPLAY_ACTIONS_OFFSET_2] bl ov29_02305814 _023054E4: mov r0, sb diff --git a/asm/overlay_29_023055B0.s b/asm/overlay_29_023055B0.s index 5cc53982..a506d735 100644 --- a/asm/overlay_29_023055B0.s +++ b/asm/overlay_29_023055B0.s @@ -5,6 +5,11 @@ arm_func_start ov29_023055B0 ov29_023055B0: ; 0x023055B0 +#ifdef JAPAN +#define OV29_023055B0_OFFSET 4 +#else +#define OV29_023055B0_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} mov r6, #0 mov r5, #1 @@ -14,7 +19,11 @@ _023055C4: ldr r0, [r4] add r0, r0, r6, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r7, [r0, #0xad4] +#else ldr r7, [r0, #0xb78] +#endif mov r0, r7 bl EntityIsValid__0230558C cmp r0, #0 @@ -28,15 +37,15 @@ _023055C4: cmp r0, #0 ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} add r0, r8, #0x100 - ldrsh r1, [r0, #0x7e] + ldrsh r1, [r0, #0x7e + OV29_023055B0_OFFSET] cmp r1, #0 - ldreqsh r0, [r0, #0x80] + ldreqsh r0, [r0, #0x80 + OV29_023055B0_OFFSET] cmpeq r0, #0 beq _02305680 ldrsh r0, [r7, #4] cmp r1, r0 addeq r0, r8, #0x100 - ldreqsh r1, [r0, #0x80] + ldreqsh r1, [r0, #0x80 + OV29_023055B0_OFFSET] ldreqsh r0, [r7, #6] cmpeq r1, r0 beq _02305680 @@ -45,7 +54,7 @@ _023055C4: bl ov29_02300818 cmp r0, #0 bne _02305680 - add r1, r8, #0x7e + add r1, r8, #0x7e + OV29_023055B0_OFFSET add r0, r7, #4 add r1, r1, #0x100 bl GetDirectionTowardsPosition @@ -223,11 +232,20 @@ ov29_02305814: ; 0x02305814 ldmia sp!, {r3, r4, r5, pc} .align 2, 0 _023058BC: .word DUNGEON_PTR +#ifdef JAPAN +_023058C0: .word 0x000009C2 +#else _023058C0: .word 0x00000C82 +#endif arm_func_end ov29_02305814 arm_func_start EndNegativeStatusCondition EndNegativeStatusCondition: ; 0x023058C4 +#ifdef JAPAN +#define END_NEGATIVE_STATUS_CONDITION_OFFSET -4 +#else +#define END_NEGATIVE_STATUS_CONDITION_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} mov r4, #0 mov sb, r1 @@ -354,14 +372,22 @@ _02305A74: mov r1, sb bl EndMiracleEyeStatus _02305A90: +#ifdef JAPAN + ldrb r0, [r6, #0x105] +#else ldrb r0, [r6, #0x106] +#endif cmp r0, #0 beq _02305AB4 ldr r2, _02305BF0 ; =0x00000C83 mov r3, #0 mov r0, sl mov r1, sb +#ifdef JAPAN + strb r3, [r6, #0x105] +#else strb r3, [r6, #0x106] +#endif bl LogMessageByIdWithPopupCheckUserTarget _02305AB4: ldrb r0, [r6, #0xfe] @@ -382,7 +408,7 @@ _02305AD8: _02305AEC: add r0, r6, r2 add r2, r2, #1 - strb r1, [r0, #0x119] + strb r1, [r0, #0x119 + END_NEGATIVE_STATUS_CONDITION_OFFSET] cmp r2, #5 blt _02305AEC mov r0, sb @@ -394,7 +420,7 @@ _02305AEC: mov r2, r0 mov r4, #1 bl SubstitutePlaceholderStringTags - ldr r1, [r6, #0x110] + ldr r1, [r6, #0x110 + END_NEGATIVE_STATUS_CONDITION_OFFSET] ldr r0, _02305BF8 ; =ov29_02353318 mov r1, r1, lsl #1 ldrh r2, [r0, r1] @@ -404,7 +430,7 @@ _02305AEC: _02305B40: mov fp, #0 mov r1, #1 - add r2, r6, #0x124 + add r2, r6, #0x124 + END_NEGATIVE_STATUS_CONDITION_OFFSET mov r0, fp mov ip, r1 _02305B54: @@ -452,9 +478,14 @@ _02305BE0: mov r0, r4 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 -_02305BF0: .word 0x00000C83 -_02305BF4: .word 0x00000C84 +#ifdef JAPAN +#define END_NEGATIVE_STATUS_CONDITION_DATA_OFFSET -0x2C0 +#else +#define END_NEGATIVE_STATUS_CONDITION_DATA_OFFSET 0 +#endif +_02305BF0: .word 0x00000C83 + END_NEGATIVE_STATUS_CONDITION_DATA_OFFSET +_02305BF4: .word 0x00000C84 + END_NEGATIVE_STATUS_CONDITION_DATA_OFFSET _02305BF8: .word ov29_02353318 -_02305BFC: .word 0x00000C85 -_02305C00: .word 0x00000C86 +_02305BFC: .word 0x00000C85 + END_NEGATIVE_STATUS_CONDITION_DATA_OFFSET +_02305C00: .word 0x00000C86 + END_NEGATIVE_STATUS_CONDITION_DATA_OFFSET arm_func_end EndNegativeStatusCondition diff --git a/asm/overlay_29_02305C28.s b/asm/overlay_29_02305C28.s index 56c8f1eb..72be39f1 100644 --- a/asm/overlay_29_02305C28.s +++ b/asm/overlay_29_02305C28.s @@ -14,6 +14,13 @@ EndNegativeStatusConditionWrapper: ; 0x02305C28 arm_func_start TransferNegativeStatusCondition TransferNegativeStatusCondition: ; 0x02305C3C +#ifdef JAPAN +#define TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET -1 +#define TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET_2 -4 +#else +#define TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET 0 +#define TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET_2 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} sub sp, sp, #0xb8 mov sb, r0 @@ -74,7 +81,7 @@ TransferNegativeStatusCondition: ; 0x02305C3C bl ov29_02307B0C orr r5, r5, r0 _02305D28: - ldrb r0, [r6, #0x106] + ldrb r0, [r6, #0x106 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET] cmp r0, #0 beq _02305D68 mov r0, sb @@ -82,14 +89,14 @@ _02305D28: mov r2, #1 bl TryInflictPerishSongStatus cmp r0, #0 - ldrneb r1, [r6, #0x106] + ldrneb r1, [r6, #0x106 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET] orrne r0, r5, #0x11 andne r5, r0, #0xff orreq r0, r5, #1 andeq r5, r0, #0xff - strneb r1, [r7, #0x106] + strneb r1, [r7, #0x106 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET] mov r0, #0 - strb r0, [r6, #0x106] + strb r0, [r6, #0x106 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET] _02305D68: ldrb r0, [r6, #0xfe] cmp r0, #0 @@ -124,10 +131,10 @@ _02305DAC: mov r2, #0 _02305DE0: add r0, r6, r2 - ldrb r0, [r0, #0x119] + ldrb r0, [r0, #0x119 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET_2] add r1, r7, r2 add r2, r2, #1 - strb r0, [r1, #0x119] + strb r0, [r1, #0x119 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET_2] cmp r0, #0 orrne r0, r5, #0x11 andne r5, r0, #0xff @@ -142,7 +149,7 @@ _02305E08: _02305E1C: add r0, r6, r2 add r2, r2, #1 - strb r1, [r0, #0x119] + strb r1, [r0, #0x119 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET_2] cmp r2, #5 blt _02305E1C mov r0, sb @@ -151,7 +158,7 @@ _02305E1C: orrne r0, r5, #1 andne r5, r0, #0xff mov r0, #0 - add r6, r6, #0x124 + add r6, r6, #0x124 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET_2 mov r3, r0 mov r4, #1 _02305E54: @@ -228,9 +235,15 @@ _02305F4C: add sp, sp, #0xb8 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 +#ifdef JAPAN +_02305F54: .word 0x00000A0C +_02305F58: .word 0x00000A0B +_02305F5C: .word 0x00000A0A +#else _02305F54: .word 0x00000CCC _02305F58: .word 0x00000CCB _02305F5C: .word 0x00000CCA +#endif arm_func_end TransferNegativeStatusCondition arm_func_start ov29_02305F60 @@ -246,9 +259,15 @@ ov29_02305F60: ; 0x02305F60 mov r0, r5 bl SubInitMonster mov ip, #0 +#ifdef JAPAN + strb ip, [r5, #0x105] + strb ip, [r5, #0xfe] + add r3, r5, #0x120 +#else strb ip, [r5, #0x106] strb ip, [r5, #0xfe] add r3, r5, #0x124 +#endif mov r1, ip mov r2, #1 _02305FA0: @@ -315,7 +334,11 @@ _02306070: mov r4, #1 mov r0, sb mov r1, r8 +#ifdef JAPAN + rsb r2, r4, #0x9d0 +#else rsb r2, r4, #0xc90 +#endif bl LogMessageByIdWithPopupCheckUserTarget cmp r6, #0 beq _02306164 @@ -329,7 +352,11 @@ _02306070: _023060A8: mov r0, sb mov r1, r8 +#ifdef JAPAN + mov r2, #0x9d0 +#else mov r2, #0xc90 +#endif mov r4, #1 bl LogMessageByIdWithPopupCheckUserTarget ldrb r0, [sp, #0x20] @@ -389,13 +416,18 @@ _02306164: bl ov29_02304A48 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 -_0230618C: .word 0x00000C8D -_02306190: .word 0x00000C8E +#ifdef JAPAN +#define END_SLEEP_CLASS_STATUS_OFFSET -0x2C0 +#else +#define END_SLEEP_CLASS_STATUS_OFFSET 0 +#endif +_0230618C: .word 0x00000C8D + END_SLEEP_CLASS_STATUS_OFFSET +_02306190: .word 0x00000C8E + END_SLEEP_CLASS_STATUS_OFFSET _02306194: .word ov10_022C45A8 _02306198: .word 0x0000024E _0230619C: .word ov10_022C45A0 _023061A0: .word ov10_022C4868 -_023061A4: .word 0x00000C91 +_023061A4: .word 0x00000C91 + END_SLEEP_CLASS_STATUS_OFFSET arm_func_end EndSleepClassStatus arm_func_start EndBurnClassStatus @@ -447,9 +479,15 @@ _02306238: bl UpdateStatusIconFlags ldmia sp!, {r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_0230624C: .word 0x000009DE +_02306250: .word 0x000009DC +_02306254: .word 0x000009DD +#else _0230624C: .word 0x00000C9E _02306250: .word 0x00000C9C _02306254: .word 0x00000C9D +#endif arm_func_end EndBurnClassStatus arm_func_start EndFrozenClassStatus @@ -478,7 +516,11 @@ _023062A0: ; jump table b _02306300 ; case 2 b _02306338 ; case 3 b _0230635C ; case 4 +#ifdef JAPAN + b _02306300 ; case 5 +#else b _0230631C ; case 5 +#endif b _02306380 ; case 6 b _023062E4 ; case 7 b _02306398 ; case 8 @@ -508,6 +550,7 @@ _02306300: mov r1, r7 bl LogMessageByIdWithPopupCheckUserTarget b _02306398 +#ifndef JAPAN _0230631C: cmp r6, #0 beq _02306398 @@ -516,6 +559,7 @@ _0230631C: mov r1, r7 bl LogMessageByIdWithPopupCheckUserTarget b _02306398 +#endif _02306338: cmp r6, #0 beq _02306350 @@ -556,16 +600,28 @@ _02306398: bl ov29_022E6798 ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 -_023063BC: .word 0x00000C9F -_023063C0: .word 0x00000C99 -_023063C4: .word 0x00000C9A +#ifdef JAPAN +#define END_FROZEN_CLASS_STATUS_OFFSET -0x2C0 +#else +#define END_FROZEN_CLASS_STATUS_OFFSET 0 +#endif +_023063BC: .word 0x00000C9F + END_FROZEN_CLASS_STATUS_OFFSET +_023063C0: .word 0x00000C99 + END_FROZEN_CLASS_STATUS_OFFSET +_023063C4: .word 0x00000C9A + END_FROZEN_CLASS_STATUS_OFFSET +#ifndef JAPAN _023063C8: .word 0x00000C9B -_023063CC: .word 0x00000C98 -_023063D0: .word 0x00000CBB +#endif +_023063CC: .word 0x00000C98 + END_FROZEN_CLASS_STATUS_OFFSET +_023063D0: .word 0x00000CBB + END_FROZEN_CLASS_STATUS_OFFSET arm_func_end EndFrozenClassStatus arm_func_start EndCringeClassStatus EndCringeClassStatus: ; 0x023063D4 +#ifdef JAPAN +#define END_CRINGE_CLASS_STATUS_OFFSET -0x2C0 +#else +#define END_CRINGE_CLASS_STATUS_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, lr} mov r5, r1 mov r6, r0 @@ -625,7 +681,7 @@ _02306488: _0230649C: mov r0, r6 mov r1, r5 - mov r2, #0xcb0 + mov r2, #0xcb0 + END_CRINGE_CLASS_STATUS_OFFSET bl LogMessageByIdWithPopupCheckUserTarget b _023064C0 _023064B0: @@ -642,16 +698,21 @@ _023064C0: bl CalcSpeedStageWrapper ldmia sp!, {r4, r5, r6, pc} .align 2, 0 -_023064DC: .word 0x00000C97 -_023064E0: .word 0x00000CA4 -_023064E4: .word 0x00000CA7 -_023064E8: .word 0x00000CBD -_023064EC: .word 0x00000CB7 -_023064F0: .word 0x00000CBC +_023064DC: .word 0x00000C97 + END_CRINGE_CLASS_STATUS_OFFSET +_023064E0: .word 0x00000CA4 + END_CRINGE_CLASS_STATUS_OFFSET +_023064E4: .word 0x00000CA7 + END_CRINGE_CLASS_STATUS_OFFSET +_023064E8: .word 0x00000CBD + END_CRINGE_CLASS_STATUS_OFFSET +_023064EC: .word 0x00000CB7 + END_CRINGE_CLASS_STATUS_OFFSET +_023064F0: .word 0x00000CBC + END_CRINGE_CLASS_STATUS_OFFSET arm_func_end EndCringeClassStatus arm_func_start EndReflectClassStatus EndReflectClassStatus: ; 0x023064F4 +#ifdef JAPAN +#define END_REFLECT_CLASS_STATUS_OFFSET -0x2C0 +#else +#define END_REFLECT_CLASS_STATUS_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, lr} mov r5, r1 mov r0, r5 @@ -763,7 +824,7 @@ _0230665C: b _02306688 _0230666C: mov r0, r5 - mov r1, #0xcc0 + mov r1, #0xcc0 + END_REFLECT_CLASS_STATUS_OFFSET bl LogMessageByIdWithPopupCheckUser b _02306688 _0230667C: @@ -777,21 +838,21 @@ _02306688: bl UpdateStatusIconFlags ldmia sp!, {r3, r4, r5, pc} .align 2, 0 -_0230669C: .word 0x00000C87 -_023066A0: .word 0x00000C8A -_023066A4: .word 0x00000C88 -_023066A8: .word 0x00000C89 -_023066AC: .word 0x00000C8B -_023066B0: .word 0x00000C8C -_023066B4: .word 0x00000CA6 -_023066B8: .word 0x00000CAE -_023066BC: .word 0x00000CB1 -_023066C0: .word 0x00000CB2 -_023066C4: .word 0x00000CB3 -_023066C8: .word 0x00000CB4 -_023066CC: .word 0x00000CB5 -_023066D0: .word 0x00000CBE -_023066D4: .word 0x00000CC1 +_0230669C: .word 0x00000C87 + END_REFLECT_CLASS_STATUS_OFFSET +_023066A0: .word 0x00000C8A + END_REFLECT_CLASS_STATUS_OFFSET +_023066A4: .word 0x00000C88 + END_REFLECT_CLASS_STATUS_OFFSET +_023066A8: .word 0x00000C89 + END_REFLECT_CLASS_STATUS_OFFSET +_023066AC: .word 0x00000C8B + END_REFLECT_CLASS_STATUS_OFFSET +_023066B0: .word 0x00000C8C + END_REFLECT_CLASS_STATUS_OFFSET +_023066B4: .word 0x00000CA6 + END_REFLECT_CLASS_STATUS_OFFSET +_023066B8: .word 0x00000CAE + END_REFLECT_CLASS_STATUS_OFFSET +_023066BC: .word 0x00000CB1 + END_REFLECT_CLASS_STATUS_OFFSET +_023066C0: .word 0x00000CB2 + END_REFLECT_CLASS_STATUS_OFFSET +_023066C4: .word 0x00000CB3 + END_REFLECT_CLASS_STATUS_OFFSET +_023066C8: .word 0x00000CB4 + END_REFLECT_CLASS_STATUS_OFFSET +_023066CC: .word 0x00000CB5 + END_REFLECT_CLASS_STATUS_OFFSET +_023066D0: .word 0x00000CBE + END_REFLECT_CLASS_STATUS_OFFSET +_023066D4: .word 0x00000CC1 + END_REFLECT_CLASS_STATUS_OFFSET arm_func_end EndReflectClassStatus arm_func_start TryRemoveSnatchedMonsterFromDungeonStruct @@ -810,10 +871,17 @@ TryRemoveSnatchedMonsterFromDungeonStruct: ; 0x023066D8 mov r2, #0 ldr r0, [r1] add r0, r0, #0x19000 +#ifdef JAPAN + str r2, [r0, #0x860] + ldr r0, [r1] + add r0, r0, #0x19000 + str r2, [r0, #0x868] +#else str r2, [r0, #0x904] ldr r0, [r1] add r0, r0, #0x19000 str r2, [r0, #0x90c] +#endif ldmia sp!, {r4, pc} .align 2, 0 _02306724: .word DUNGEON_PTR @@ -881,7 +949,11 @@ _023067D4: ldr r1, [r1] cmp r6, #2 add r1, r1, #0x3000 +#ifdef JAPAN + strb r0, [r1, #0xd94] +#else strb r0, [r1, #0xe38] +#endif beq _02306894 mov r1, r7 mov r2, r0 @@ -928,13 +1000,18 @@ _02306894: bl UpdateStatusIconFlags ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 -_023068A8: .word 0x00000C95 -_023068AC: .word 0x00000C96 +#ifdef JAPAN +#define END_CURSE_CLASS_OFFSET -0x2C0 +#else +#define END_CURSE_CLASS_OFFSET 0 +#endif +_023068A8: .word 0x00000C95 + END_CURSE_CLASS_OFFSET +_023068AC: .word 0x00000C96 + END_CURSE_CLASS_OFFSET _023068B0: .word DUNGEON_PTR -_023068B4: .word 0x00000CA5 -_023068B8: .word 0x00000CBF -_023068BC: .word 0x00000CC2 -_023068C0: .word 0x00000CC3 +_023068B4: .word 0x00000CA5 + END_CURSE_CLASS_OFFSET +_023068B8: .word 0x00000CBF + END_CURSE_CLASS_OFFSET +_023068BC: .word 0x00000CC2 + END_CURSE_CLASS_OFFSET +_023068C0: .word 0x00000CC3 + END_CURSE_CLASS_OFFSET arm_func_end EndCurseClassStatus arm_func_start EndLeechSeedClassStatus @@ -977,12 +1054,22 @@ _0230692C: bl UpdateStatusIconFlags ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_02306948: .word 0x000009D4 +_0230694C: .word 0x000009EF +#else _02306948: .word 0x00000C94 _0230694C: .word 0x00000CAF +#endif arm_func_end EndLeechSeedClassStatus arm_func_start EndSureShotClassStatus EndSureShotClassStatus: ; 0x02306950 +#ifdef JAPAN +#define END_SURE_SHOT_CLASS_STATUS_OFFSET -0x2C0 +#else +#define END_SURE_SHOT_CLASS_STATUS_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, lr} mov r5, r1 mov r0, r5 @@ -1007,7 +1094,7 @@ _0230698C: ; jump table b _023069E0 ; case 5 _023069A4: mov r0, r5 - mov r1, #0xca0 + mov r1, #0xca0 + END_SURE_SHOT_CLASS_STATUS_OFFSET bl LogMessageByIdWithPopupCheckUser b _023069E0 _023069B4: @@ -1031,9 +1118,9 @@ _023069E0: bl UpdateStatusIconFlags ldmia sp!, {r3, r4, r5, pc} .align 2, 0 -_023069F4: .word 0x00000CA1 -_023069F8: .word 0x00000CA2 -_023069FC: .word 0x00000CA3 +_023069F4: .word 0x00000CA1 + END_SURE_SHOT_CLASS_STATUS_OFFSET +_023069F8: .word 0x00000CA2 + END_SURE_SHOT_CLASS_STATUS_OFFSET +_023069FC: .word 0x00000CA3 + END_SURE_SHOT_CLASS_STATUS_OFFSET arm_func_end EndSureShotClassStatus arm_func_start EndInvisibleClassStatus @@ -1117,10 +1204,15 @@ _02306AFC: bl EnsureCanStandCurrentTile ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 -_02306B18: .word 0x00000CA8 -_02306B1C: .word 0x00000CB8 -_02306B20: .word 0x00000CB6 -_02306B24: .word 0x00000CAC +#ifdef JAPAN +#define END_INVISIBLE_CLASS_OFFSET -0x2C0 +#else +#define END_INVISIBLE_CLASS_OFFSET 0 +#endif +_02306B18: .word 0x00000CA8 + END_INVISIBLE_CLASS_OFFSET +_02306B1C: .word 0x00000CB8 + END_INVISIBLE_CLASS_OFFSET +_02306B20: .word 0x00000CB6 + END_INVISIBLE_CLASS_OFFSET +_02306B24: .word 0x00000CAC + END_INVISIBLE_CLASS_OFFSET arm_func_end EndInvisibleClassStatus arm_func_start EndBlinkerClassStatus @@ -1180,10 +1272,15 @@ _02306BB8: bl UpdateMinimap ldmia sp!, {r3, r4, r5, pc} .align 2, 0 -_02306BE8: .word 0x00000CA9 -_02306BEC: .word 0x00000CAA -_02306BF0: .word 0x00000CAB -_02306BF4: .word 0x00000CAD +#ifdef JAPAN +#define END_BLINKER_CLASS_OFFSET -0x2C0 +#else +#define END_BLINKER_CLASS_OFFSET 0 +#endif +_02306BE8: .word 0x00000CA9 + END_BLINKER_CLASS_OFFSET +_02306BEC: .word 0x00000CAA + END_BLINKER_CLASS_OFFSET +_02306BF0: .word 0x00000CAB + END_BLINKER_CLASS_OFFSET +_02306BF4: .word 0x00000CAD + END_BLINKER_CLASS_OFFSET arm_func_end EndBlinkerClassStatus arm_func_start EndMuzzledStatus @@ -1217,7 +1314,11 @@ _02306C4C: bl UpdateStatusIconFlags ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_02306C60: .word 0x000009F9 +#else _02306C60: .word 0x00000CB9 +#endif arm_func_end EndMuzzledStatus arm_func_start EndMiracleEyeStatus @@ -1251,7 +1352,11 @@ _02306CB8: bl UpdateStatusIconFlags ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_02306CCC: .word 0x00000A04 +#else _02306CCC: .word 0x00000CC4 +#endif arm_func_end EndMiracleEyeStatus arm_func_start EndMagnetRiseStatus @@ -1291,7 +1396,11 @@ _02306D2C: bl ov29_02321134 ldmia sp!, {r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_02306D50: .word 0x00000A05 +#else _02306D50: .word 0x00000CC5 +#endif arm_func_end EndMagnetRiseStatus arm_func_start ov29_02306D54 @@ -1307,7 +1416,11 @@ _02306D70: ldr r0, [r4] add r0, r0, r8, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r1, [r0, #0xad4] +#else ldr r1, [r0, #0xb78] +#endif cmp r1, #0 moveq r0, r7 beq _02306DA0 @@ -2045,7 +2158,11 @@ _02307794: ldr r1, [r2] add r1, r1, r0, lsl #2 add r1, r1, #0x12000 +#ifdef JAPAN + ldr r1, [r1, #0xad4] +#else ldr r1, [r1, #0xb78] +#endif cmp sb, r1 streqb r0, [r7, #0xe8] ldreq r1, [sb, #0xb4] @@ -2429,7 +2546,11 @@ EndFrozenStatus: ; 0x02307C78 bl UpdateStatusIconFlags ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_02307CDC: .word 0x000009DF +#else _02307CDC: .word 0x00000C9F +#endif arm_func_end EndFrozenStatus arm_func_start ov29_02307CE0 @@ -2498,14 +2619,25 @@ TryRestoreRoostTyping: ; 0x02307D54 bl LogMessageByIdWithPopupCheckUser ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_02307DBC: .word 0x00000A08 +#else _02307DBC: .word 0x00000CC8 +#endif arm_func_end TryRestoreRoostTyping arm_func_start ov29_02307DC0 ov29_02307DC0: ; 0x02307DC0 +#ifdef JAPAN + ldr r1, [r0, #0xb4] + mov r0, #0 + strb r0, [r1, #0x103] + strb r0, [r1, #0x104] +#else mov r1, #0 strb r1, [r0, #0x104] strb r1, [r0, #0x105] +#endif bx lr arm_func_end ov29_02307DC0 @@ -2518,7 +2650,11 @@ _02307DD8: ldr r0, [r0] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r6, [r0, #0xa94] +#else ldr r6, [r0, #0xb38] +#endif mov r0, r6 bl EntityIsValid__02307EF8 cmp r0, #0 @@ -2539,7 +2675,11 @@ _02307E2C: ldr r0, [fp] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr sb, [r0, #0xa84] +#else ldr sb, [r0, #0xb28] +#endif mov r0, sb bl EntityIsValid__02307EF8 cmp r0, #0 diff --git a/asm/overlay_29_02307F1C.s b/asm/overlay_29_02307F1C.s index 9af17d2c..d1b4b12d 100644 --- a/asm/overlay_29_02307F1C.s +++ b/asm/overlay_29_02307F1C.s @@ -46,10 +46,17 @@ TryTriggerMonsterHouse: ; 0x02307F4C strb r1, [r2, #0x793] ldr r1, [r0] add r0, r1, #0x4000 +#ifdef JAPAN + ldrb r2, [r0, #0x25] + cmp r2, #0xff + beq _02308268 + add r0, r1, #0x244 +#else ldrb r2, [r0, #0xc9] cmp r2, #0xff beq _02308268 add r0, r1, #0x2e8 +#endif add r1, r0, #0xec00 mov r0, #0x1c mla r1, r2, r0, r1 diff --git a/asm/overlay_29_023082A0.s b/asm/overlay_29_023082A0.s index 6cd7adc2..b4f88a41 100644 --- a/asm/overlay_29_023082A0.s +++ b/asm/overlay_29_023082A0.s @@ -54,6 +54,234 @@ _02308338: arm_func_start RunMonsterAi RunMonsterAi: ; 0x02308340 +#ifdef JAPAN + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + ldr sb, [sl, #0xb4] + ldrh r1, [sb] + tst r1, #0x8000 + beq _023098A8 + ldrb r1, [sb, #0xc4] + cmp r1, #6 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r1, sl + mov r2, #1 + bl EndFrozenClassStatus + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023098A8: + mov r1, #0 + strb r1, [sb, #0x10b] + ldrb r1, [sb, #0xbc] + cmp r1, #6 + bls _023098C8 + bl ShouldRunMonsterAi + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023098C8: + ldrb r0, [sb, #0xbc] + cmp r0, #7 + ldrneb r0, [sb, #0x108] + cmpne r0, #0 + beq _02309924 + mov r0, sl + bl ov29_02300B40 + cmp r0, #0 + beq _02309910 + mov r0, #0 + mov r1, sl + mov r2, r0 + strb r0, [sb, #0x108] + bl SubstitutePlaceholderStringTags + ldr r1, _02309BB0 ; =0x00000B2D + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02309910: + mov r0, sl + bl ov29_0230E914 + ldrh r0, [sb, #0x4a] + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02309924: + mov r0, sl + bl HasStatusThatPreventsActing + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r4, _02309BB4 ; =0x023547B8 + ldr r0, [r4] + add r0, r0, #0x3000 + ldrb r0, [r0, #0xd94] + cmp r0, #0 + beq _023099E4 + mov r7, #0 + mov fp, r7 + mov r5, #1 + mov r6, r7 + b _023099DC +_02309960: + ldr r0, [r4] + add r0, r0, r7, lsl #2 + add r0, r0, #0x12000 + ldr r8, [r0, #0xad4] + cmp r8, #0 + moveq r0, r6 + beq _02309990 + ldr r0, [r8] + cmp r0, #0 + movne r0, r5 + moveq r0, fp + and r0, r0, #0xff +_02309990: + cmp r0, #0 + beq _023099D8 + ldr r0, [r8, #0xb4] + ldrb r0, [r0, #0xd8] + cmp r0, #2 + bne _023099D8 + mov r0, sl + mov r1, r8 + bl CanSeeTarget + cmp r0, #0 + beq _023099D8 + ldr r0, [r8, #0xb4] + ldrb r0, [r0, #0xd9] + cmp r0, #0 + movne r0, #2 + moveq r0, #1 + strb r0, [sb, #0x10b] + b _023099E4 +_023099D8: + add r7, r7, #1 +_023099DC: + cmp r7, #0x14 + blt _02309960 +_023099E4: + add r0, sb, #0x4a + bl ClearMonsterActionFields + ldrb r0, [sb, #0xbc] + cmp r0, #7 + bne _02309A2C + ldrsh r1, [sb, #2] + add r0, sb, #0x4a + bl SetActionPassTurnOrWalk + mov r0, #8 + bl DungeonRandInt + strb r0, [sb, #0x4c] + ldrsh r1, [sl, #4] + add r0, sb, #0x100 + strh r1, [r0, #0x7a] + ldrsh r1, [sl, #6] + sub r1, r1, #1 + strh r1, [r0, #0x7c] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02309A2C: + mov r0, sl + bl ov29_0230E914 + ldrh r0, [sb, #0x4a] + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sl + mov r1, #0x15 + bl IqSkillIsEnabled + cmp r0, #0 + bne _02309AEC + mov r0, sl + bl ChooseAiMove + ldrh r0, [sb, #0x4a] + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [sb, #0xd0] + cmp r0, #2 + bne _02309A84 + ldrsh r1, [sb, #2] + add r0, sb, #0x4a + bl SetActionPassTurnOrWalk + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02309A84: + ldrsh r0, [sb, #2] + bl GetCanMoveFlag + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sl + mov r1, #1 + bl AiMovement + ldrb r0, [sb, #6] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sl + mov r1, #0x17 + bl IqSkillIsEnabled + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrh r0, [sb, #0x4a] + cmp r0, #1 + ldmhiia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, #0 + mov r1, sl + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _02309BB8 ; =0x00000B2E + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02309AEC: + ldrb r0, [sb, #0xd0] + cmp r0, #2 + bne _02309B08 + ldrsh r1, [sb, #2] + add r0, sb, #0x4a + bl SetActionPassTurnOrWalk + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02309B08: + ldrsh r0, [sb, #2] + bl GetCanMoveFlag + cmp r0, #0 + beq _02309B24 + mov r0, sl + mov r1, #1 + bl AiMovement +_02309B24: + ldrh r0, [sb, #0x4a] + cmp r0, #0 + cmpne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sl + bl ChooseAiMove + ldrsh r0, [sb, #2] + bl GetCanMoveFlag + cmp r0, #0 + ldrneb r0, [sb, #6] + cmpne r0, #0 + beq _02309B90 + mov r0, sl + mov r1, #0x17 + bl IqSkillIsEnabled + cmp r0, #0 + beq _02309B90 + ldrh r0, [sb, #0x4a] + cmp r0, #1 + bhi _02309B90 + mov r0, #0 + mov r1, sl + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _02309BB8 ; =0x00000B2E + mov r0, sl + bl LogMessageByIdWithPopupCheckUser +_02309B90: + ldrh r0, [sb, #0x4a] + cmp r0, #0 + cmpne r0, #1 + movne r0, #0 + strneb r0, [sb, #0x7d] + strneb r0, [sb, #0x14a] + strneb r0, [sb, #0x14d] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02309BB0: .word 0x00000B2D +_02309BB4: .word 0x023547B8 +_02309BB8: .word 0x00000B2E +#else stmdb sp!, {r3, r4, r5, lr} mov r5, r0 ldr r4, [r5, #0xb4] @@ -232,6 +460,7 @@ _023085B4: .align 2, 0 _023085D4: .word 0x00000DED _023085D8: .word 0x00000DEE +#endif arm_func_end RunMonsterAi arm_func_start ov29_023085DC @@ -265,6 +494,11 @@ _02308618: arm_func_start ApplyDamageAndEffects ApplyDamageAndEffects: ; 0x0230863C +#ifdef JAPAN +#define APPLY_DAMAGE_AND_EFFECTS_OFFSET -4 +#else +#define APPLY_DAMAGE_AND_EFFECTS_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x40 ldr r7, [sp, #0x68] @@ -464,7 +698,9 @@ _02308914: mov r0, sl mov r1, sb mov r2, #0x12 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 addne r5, r5, #2 @@ -645,7 +881,9 @@ _02308BB0: mov r0, sl mov r1, sb mov r2, #5 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 beq _02308C38 @@ -682,7 +920,9 @@ _02308C38: mov r0, sl mov r1, sb mov r2, #0xa +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 beq _02308C88 @@ -693,17 +933,19 @@ _02308C38: cmp r0, r1 bge _02308C88 add r0, r6, #0x100 - ldrh r3, [r0, #0x92] + ldrh r3, [r0, #0x92 + APPLY_DAMAGE_AND_EFFECTS_OFFSET] ldr r1, _02308F98 ; =ov29_0237CA6D mov r2, #0 orr r3, r3, #2 - strh r3, [r0, #0x92] + strh r3, [r0, #0x92 + APPLY_DAMAGE_AND_EFFECTS_OFFSET] strb r2, [r1] _02308C88: mov r0, sl mov r1, sb mov r2, #0x17 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 beq _02308CDC @@ -718,14 +960,16 @@ _02308C88: ldrsh r1, [r1] cmp r0, r1 addlt r0, r6, #0x100 - ldrlth r1, [r0, #0x92] + ldrlth r1, [r0, #0x92 + APPLY_DAMAGE_AND_EFFECTS_OFFSET] orrlt r1, r1, #4 - strlth r1, [r0, #0x92] + strlth r1, [r0, #0x92 + APPLY_DAMAGE_AND_EFFECTS_OFFSET] _02308CDC: mov r0, sl mov r1, sb mov r2, #0x20 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 beq _02308D24 @@ -737,14 +981,16 @@ _02308CDC: ldrsh r1, [r1] cmp r0, r1 addlt r0, r6, #0x100 - ldrlth r1, [r0, #0x92] + ldrlth r1, [r0, #0x92 + APPLY_DAMAGE_AND_EFFECTS_OFFSET] orrlt r1, r1, #8 - strlth r1, [r0, #0x92] + strlth r1, [r0, #0x92 + APPLY_DAMAGE_AND_EFFECTS_OFFSET] _02308D24: mov r0, sl mov r1, sb mov r2, #0x27 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 beq _02308D64 @@ -754,14 +1000,16 @@ _02308D24: ldrsh r1, [r1] cmp r0, r1 addlt r0, r6, #0x100 - ldrlth r1, [r0, #0x92] + ldrlth r1, [r0, #0x92 + APPLY_DAMAGE_AND_EFFECTS_OFFSET] orrlt r1, r1, #0x20 - strlth r1, [r0, #0x92] + strlth r1, [r0, #0x92 + APPLY_DAMAGE_AND_EFFECTS_OFFSET] _02308D64: mov r0, sl mov r1, sb mov r2, #0x3d +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 beq _02308DE0 @@ -777,23 +1025,25 @@ _02308D64: bl DungeonRandInt cmp r0, #1 addlt r0, r6, #0x100 - ldrlth r1, [r0, #0x92] + ldrlth r1, [r0, #0x92 + APPLY_DAMAGE_AND_EFFECTS_OFFSET] orrlt r1, r1, #0x40 - strlth r1, [r0, #0x92] + strlth r1, [r0, #0x92 + APPLY_DAMAGE_AND_EFFECTS_OFFSET] blt _02308DE0 cmp r0, #2 add r0, r6, #0x100 - ldrlth r1, [r0, #0x92] + ldrlth r1, [r0, #0x92 + APPLY_DAMAGE_AND_EFFECTS_OFFSET] orrlt r1, r1, #0x10 - strlth r1, [r0, #0x92] - ldrgeh r1, [r0, #0x92] + strlth r1, [r0, #0x92 + APPLY_DAMAGE_AND_EFFECTS_OFFSET] + ldrgeh r1, [r0, #0x92 + APPLY_DAMAGE_AND_EFFECTS_OFFSET] orrge r1, r1, #0x80 - strgeh r1, [r0, #0x92] + strgeh r1, [r0, #0x92 + APPLY_DAMAGE_AND_EFFECTS_OFFSET] _02308DE0: mov r0, sl mov r1, sb mov r2, #0x3e +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 beq _02308E20 @@ -803,14 +1053,16 @@ _02308DE0: ldrsh r1, [r1] cmp r0, r1 addlt r0, r6, #0x100 - ldrlth r1, [r0, #0x92] + ldrlth r1, [r0, #0x92 + APPLY_DAMAGE_AND_EFFECTS_OFFSET] orrlt r1, r1, #0x100 - strlth r1, [r0, #0x92] + strlth r1, [r0, #0x92 + APPLY_DAMAGE_AND_EFFECTS_OFFSET] _02308E20: mov r0, sl mov r1, sb mov r2, #0x44 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 beq _02308E80 @@ -828,14 +1080,20 @@ _02308E20: ldrsh r1, [r1] cmp r0, r1 addlt r0, r6, #0x100 - ldrlth r1, [r0, #0x92] + ldrlth r1, [r0, #0x92 + APPLY_DAMAGE_AND_EFFECTS_OFFSET] orrlt r1, r1, #0x200 - strlth r1, [r0, #0x92] + strlth r1, [r0, #0x92 + APPLY_DAMAGE_AND_EFFECTS_OFFSET] _02308E80: +#ifdef JAPAN + mov r0, sl + mov r1, sb + mov r2, #1 +#else mov r2, #1 mov r0, sl mov r1, sb mov r3, r2 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 beq _02308EC0 @@ -845,9 +1103,9 @@ _02308E80: ldrsh r1, [r1] cmp r0, r1 addlt r0, r6, #0x100 - ldrlth r1, [r0, #0x92] + ldrlth r1, [r0, #0x92 + APPLY_DAMAGE_AND_EFFECTS_OFFSET] orrlt r1, r1, #0x400 - strlth r1, [r0, #0x92] + strlth r1, [r0, #0x92 + APPLY_DAMAGE_AND_EFFECTS_OFFSET] _02308EC0: mov r0, sl mov r1, sb @@ -865,7 +1123,11 @@ _02308ECC: ldr r1, [r1] add r1, r1, r2, lsl #2 add r1, r1, #0x12000 +#ifdef JAPAN + ldr r4, [r1, #0xad4] +#else ldr r4, [r1, #0xb78] +#endif cmp r4, #0 moveq r1, #0 streqb r1, [r0, #0xe0] diff --git a/asm/overlay_29_02308FE0.s b/asm/overlay_29_02308FE0.s index 52dfc087..c89713de 100644 --- a/asm/overlay_29_02308FE0.s +++ b/asm/overlay_29_02308FE0.s @@ -5,6 +5,13 @@ arm_func_start ApplyDamage ApplyDamage: ; 0x02308FE0 +#ifdef JAPAN +#define APPLY_DAMAGE_OFFSET -4 +#define APPLY_DAMAGE_OFFSET_2 -0xA4 +#else +#define APPLY_DAMAGE_OFFSET 0 +#define APPLY_DAMAGE_OFFSET_2 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x64 #ifdef EUROPE @@ -1142,7 +1149,9 @@ _0230905C: mov r0, r8 mov r1, r7 mov r2, #0x73 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 ldrne r0, [r6, #4] @@ -1215,7 +1224,9 @@ _023091A4: mov r0, r8 mov r1, r7 mov r2, #0xd +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 beq _02309224 @@ -1227,9 +1238,15 @@ _023091A4: mov r0, #1 mov r2, #0 bl SubstitutePlaceholderStringTags +#ifdef JAPAN + ldr r2, _0230B540 ; =0x0000097F + mov r0, r8 + mov r1, r7 +#else mov r0, r8 mov r1, r7 mov r2, #0xc40 +#endif bl LogMessageByIdWithPopupCheckUserTarget mov r0, r8 mov r1, r7 @@ -1248,9 +1265,15 @@ _02309224: mov r0, #1 mov r2, #0 bl SubstitutePlaceholderStringTags +#ifdef JAPAN + mov r0, r8 + mov r1, r7 + mov r2, #0x980 +#else ldr r2, _02309FA8 ; =0x00000C41 mov r0, r8 mov r1, r7 +#endif bl LogMessageByIdWithPopupCheckUserTarget mov r0, r8 mov r1, r7 @@ -1278,7 +1301,9 @@ _0230929C: mov r0, r8 mov r1, r7 mov r2, #0x23 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 beq _023092F8 @@ -1299,7 +1324,9 @@ _023092F8: mov r0, r8 mov r1, r7 mov r2, #0x24 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 beq _02309348 @@ -1320,7 +1347,9 @@ _02309348: mov r0, r8 mov r1, r7 mov r2, #0x55 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 beq _02309398 @@ -1341,7 +1370,9 @@ _02309398: mov r0, r8 mov r1, r7 mov r2, #0x66 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 beq _023093D8 @@ -1446,7 +1477,7 @@ _023094D8: mov r3, #0 bl RestoreRandomMovePP _02309520: - ldrb r0, [r4, #0x15c] + ldrb r0, [r4, #0x15c + APPLY_DAMAGE_OFFSET] cmp r0, #0 bne _023095A0 ldrb r0, [r6, #0xe] @@ -1502,7 +1533,7 @@ _023095A0: bl ShouldDisplayEntityWrapper cmp r0, #0 beq _02309618 - ldrb r0, [r4, #0x15c] + ldrb r0, [r4, #0x15c + APPLY_DAMAGE_OFFSET] cmp r0, #0 bne _02309608 ldr r2, _02309FC4 ; =0x00000C47 @@ -1585,7 +1616,7 @@ _023096D4: ldr r1, _02309FC8 ; =ov29_023535D4 strh r0, [r1] _02309718: - ldrb r0, [r4, #0x15c] + ldrb r0, [r4, #0x15c + APPLY_DAMAGE_OFFSET] cmp r0, #0 bne _02309734 ldr r2, _02309FD0 ; =0x00000C48 @@ -1629,7 +1660,7 @@ _02309740: sub r3, r2, #2 bl DisplayAnimatedNumbers _023097BC: - ldrb r0, [r4, #0x15c] + ldrb r0, [r4, #0x15c + APPLY_DAMAGE_OFFSET] cmp r0, #0 bne _02309808 cmp sl, #0 @@ -1640,7 +1671,7 @@ _023097BC: bl LogMessageByIdWithPopupCheckUserTarget b _02309808 _023097E4: - ldrb r0, [r4, #0x15c] + ldrb r0, [r4, #0x15c + APPLY_DAMAGE_OFFSET] cmp r0, #0 bne _02309808 cmp sl, #0 @@ -1808,8 +1839,10 @@ _02309A28: mov r1, #0x18 bl ov29_022EA370 _02309A50: +#ifndef JAPAN mov r0, r7 bl UpdateStatusIconFlags +#endif ldrsh r0, [r4, #0x10] cmp r0, #0 beq _02309B20 @@ -1923,7 +1956,7 @@ _02309BE8: mov r0, #0 mov r1, r8 mov r2, r0 - strb r0, [r4, #0x156] + strb r0, [r4, #0x156 + APPLY_DAMAGE_OFFSET] bl SubstitutePlaceholderStringTags mov r1, r7 mov r0, #1 @@ -2089,14 +2122,14 @@ _02309DE4: movgt r1, r0 strh r1, [r4, #0x10] mov r2, #0 - strb r2, [r4, #0x162] + strb r2, [r4, #0x162 + APPLY_DAMAGE_OFFSET] mov r0, #1 - strb r0, [r4, #0x156] + strb r0, [r4, #0x156 + APPLY_DAMAGE_OFFSET] add r0, r4, #0x100 - ldrh r1, [r0, #0x4a] - strh r1, [r0, #0x46] - ldrh r1, [r0, #0x4c] - strh r1, [r0, #0x48] + ldrh r1, [r0, #0x4a + APPLY_DAMAGE_OFFSET] + strh r1, [r0, #0x46 + APPLY_DAMAGE_OFFSET] + ldrh r1, [r0, #0x4c + APPLY_DAMAGE_OFFSET] + strh r1, [r0, #0x48 + APPLY_DAMAGE_OFFSET] ldrb r0, [r4, #7] cmp r0, #0 ldrne r0, _02309FFC ; =DUNGEON_PTR @@ -2174,29 +2207,38 @@ _02309F44: #endif b _0230A090 .align 2, 0 +#ifdef JAPAN +#define APPLY_DAMAGE_DATA_OFFSET -0x2C1 +#else +#define APPLY_DAMAGE_DATA_OFFSET 0 +#endif _02309F98: .word SET_DAMAGE_STATUS_DAMAGE -_02309F9C: .word 0x00000C46 +_02309F9C: .word 0x00000C46 + APPLY_DAMAGE_DATA_OFFSET _02309FA0: .word 0x0000024D _02309FA4: .word 0x0000270F +#ifdef JAPAN +_0230B540: .word 0x0000097F +#else _02309FA8: .word 0x00000C41 +#endif _02309FAC: .word TYPE_DAMAGE_NEGATING_EXCLUSIVE_ITEM_EFFECTS _02309FB0: .word ov10_022C45C4 -_02309FB4: .word 0x00000C42 -_02309FB8: .word 0x00000C43 -_02309FBC: .word 0x00000C44 -_02309FC0: .word 0x00000C45 -_02309FC4: .word 0x00000C47 +_02309FB4: .word 0x00000C42 + APPLY_DAMAGE_DATA_OFFSET +_02309FB8: .word 0x00000C43 + APPLY_DAMAGE_DATA_OFFSET +_02309FBC: .word 0x00000C44 + APPLY_DAMAGE_DATA_OFFSET +_02309FC0: .word 0x00000C45 + APPLY_DAMAGE_DATA_OFFSET +_02309FC4: .word 0x00000C47 + APPLY_DAMAGE_DATA_OFFSET _02309FC8: .word ov29_023535D4 _02309FCC: .word 0x000002B6 -_02309FD0: .word 0x00000C48 +_02309FD0: .word 0x00000C48 + APPLY_DAMAGE_DATA_OFFSET _02309FD4: .word 0x000003E7 _02309FD8: .word DAMAGE_STRING_IDS _02309FDC: .word 0x0000025F -_02309FE0: .word 0x00000C49 -_02309FE4: .word 0x00000C4A +_02309FE0: .word 0x00000C49 + APPLY_DAMAGE_DATA_OFFSET +_02309FE4: .word 0x00000C4A + APPLY_DAMAGE_DATA_OFFSET _02309FE8: .word ov10_022C4834 _02309FEC: .word ov10_022C45FC -_02309FF0: .word 0x00000C4B +_02309FF0: .word 0x00000C4B + APPLY_DAMAGE_DATA_OFFSET _02309FF4: .word ov29_02353220 _02309FF8: .word ov29_0235321C _02309FFC: .word DUNGEON_PTR @@ -2209,7 +2251,7 @@ _0230A010: .word ov29_02353230 _0230A014: .word ov29_02353218 #endif _0230A018: .word 0x00000153 -_0230A01C: .word 0x00000C4C +_0230A01C: .word 0x00000C4C + APPLY_DAMAGE_DATA_OFFSET _0230A020: .word 0x00000159 _0230A024: #ifdef EUROPE @@ -2217,7 +2259,7 @@ _0230A024: ldr r0, [r0] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 - ldr r6, [r0, #0xb28] + ldr r6, [r0, #0xb28 + APPLY_DAMAGE_OFFSET_2] mov r0, r6 bl EntityIsValid__02308FBC cmp r0, #0 @@ -2282,14 +2324,14 @@ _0230AAB4: strh r1, [r7, #0x10] bl ov29_022E66D8 mov r2, #0 - strb r2, [r7, #0x162] + strb r2, [r7, #0x162 + APPLY_DAMAGE_OFFSET] mov r0, #1 - strb r0, [r7, #0x156] + strb r0, [r7, #0x156 + APPLY_DAMAGE_OFFSET] add r0, r7, #0x100 - ldrh r1, [r0, #0x4a] - strh r1, [r0, #0x46] - ldrh r1, [r0, #0x4c] - strh r1, [r0, #0x48] + ldrh r1, [r0, #0x4a + APPLY_DAMAGE_OFFSET] + strh r1, [r0, #0x46 + APPLY_DAMAGE_OFFSET] + ldrh r1, [r0, #0x4c + APPLY_DAMAGE_OFFSET] + strh r1, [r0, #0x48 + APPLY_DAMAGE_OFFSET] ldrb r0, [r7, #7] cmp r0, #0 ldrne r0, _02309FFC ; =DUNGEON_PTR @@ -3041,8 +3083,10 @@ _0230A328: _0230A330: cmp r6, #0 beq _0230A45C +#ifndef JAPAN mov r0, r7 bl ov29_022FBD24 +#endif mov r0, r7 bl ov29_022E550C mov r0, r6 @@ -3057,14 +3101,14 @@ _0230A330: movgt r1, r0 strh r1, [r4, #0x10] mov r2, #0 - strb r2, [r4, #0x162] + strb r2, [r4, #0x162 + APPLY_DAMAGE_OFFSET] mov r0, #1 - strb r0, [r4, #0x156] + strb r0, [r4, #0x156 + APPLY_DAMAGE_OFFSET] add r0, r4, #0x100 - ldrh r1, [r0, #0x4a] - strh r1, [r0, #0x46] - ldrh r1, [r0, #0x4c] - strh r1, [r0, #0x48] + ldrh r1, [r0, #0x4a + APPLY_DAMAGE_OFFSET] + strh r1, [r0, #0x46 + APPLY_DAMAGE_OFFSET] + ldrh r1, [r0, #0x4c + APPLY_DAMAGE_OFFSET] + strh r1, [r0, #0x48 + APPLY_DAMAGE_OFFSET] ldrb r0, [r4, #7] cmp r0, #0 ldrne r0, _02309FFC ; =DUNGEON_PTR @@ -3090,6 +3134,10 @@ _0230A3D8: mov r3, #1 bl EndCurseClassStatus _0230A3F4: +#ifdef JAPAN + mov r0, r7 + bl ov29_02307DC0 +#endif mov r0, r7 bl ov29_023159D4 mov r0, r4 @@ -3117,11 +3165,13 @@ _0230A3F4: mov r0, #0 b _0230A918 _0230A45C: +#ifndef JAPAN ldr r0, _02309FFC ; =DUNGEON_PTR ldr r0, [r0] ldrb r0, [r0, #8] cmp r0, #0 bne _0230A5E0 +#endif cmp sb, #0 beq _0230A5E0 bl ov29_022EAF20 @@ -3154,7 +3204,7 @@ _0230A4A0: mov r0, #0 strb r0, [r7, #0x22] mov r0, #1 - strb r0, [r4, #0x23d] + strb r0, [r4, #0x23d + APPLY_DAMAGE_OFFSET] mov r0, r7 bl GetIdleAnimationId mov r1, r0 @@ -3197,7 +3247,7 @@ _0230A4A0: mov r0, #1 strb r0, [r7, #0x22] mov r0, #0 - strb r0, [r4, #0x23d] + strb r0, [r4, #0x23d + APPLY_DAMAGE_OFFSET] mov r0, r8 ldr r1, _0230A934 ; =0x00000C6D bl LogMessageByIdWithPopup @@ -3208,7 +3258,7 @@ _0230A4A0: ldr r0, _02309FFC ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 - ldrsh r0, [r0, #0xd6] + ldrsh r0, [r0, #0xd6 + APPLY_DAMAGE_OFFSET_2] bl MusicTableIdxToMusicId bl ChangeDungeonMusic mov r0, r6 @@ -3292,14 +3342,18 @@ _0230A69C: cmp r0, #0 beq _0230A714 add r0, r4, #0x100 - ldrsh r2, [r0, #0x68] + ldrsh r2, [r0, #0x68 + APPLY_DAMAGE_OFFSET] mov r0, #0xc ldr r1, _0230A938 ; =ov10_022C593C smulbb r0, r2, r0 ldrsh sb, [r1, r0] b _0230A740 _0230A714: +#ifdef JAPAN + ldrb r0, [r4, #0x107] +#else ldrb r0, [r4, #0x108] +#endif cmp r0, #0 addeq r0, sb, sb, lsr #31 moveq sb, r0, asr #1 @@ -3315,7 +3369,7 @@ _0230A740: ldrb r0, [r4, #0xfd] cmp r0, #0 movne r0, #1 - strneb r0, [sl, #0x155] + strneb r0, [sl, #0x155 + APPLY_DAMAGE_OFFSET] ldr r0, [sp, #0x88] cmp r0, #1 bne _0230A7FC @@ -3335,7 +3389,7 @@ _0230A78C: ldr r0, [r6] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 - ldr sl, [r0, #0xb28] + ldr sl, [r0, #0xb28 + APPLY_DAMAGE_OFFSET_2] mov r0, sl bl EntityIsValid__02308FBC cmp r0, #0 @@ -3359,7 +3413,7 @@ _0230A7D4: cmp r0, #0 movne r1, #1 ldrne r0, _02309FFC ; =DUNGEON_PTR - strneb r1, [sl, #0x153] + strneb r1, [sl, #0x153 + APPLY_DAMAGE_OFFSET] ldrne r0, [r0] strneb r1, [r0, #0xf] _0230A7FC: @@ -3445,15 +3499,15 @@ _0230A918: add sp, sp, #0x64 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 -_0230A920: .word 0x00000C4D +_0230A920: .word 0x00000C4D + APPLY_DAMAGE_DATA_OFFSET _0230A924: .word BAG_ITEMS_PTR_MIRROR #ifdef EUROPE _0230B394: .word 0x02353E44 #endif -_0230A928: .word 0x00000C6A -_0230A92C: .word 0x00000C6B -_0230A930: .word 0x00000C6C -_0230A934: .word 0x00000C6D +_0230A928: .word 0x00000C6A + APPLY_DAMAGE_DATA_OFFSET +_0230A92C: .word 0x00000C6B + APPLY_DAMAGE_DATA_OFFSET +_0230A930: .word 0x00000C6C + APPLY_DAMAGE_DATA_OFFSET +_0230A934: .word 0x00000C6D + APPLY_DAMAGE_DATA_OFFSET #ifdef EUROPE _0230B3A8: .word 0x02353E40 #endif @@ -3463,28 +3517,50 @@ _0230A93C: .word ov29_0237CA6C arm_func_start DefenderAbilityIsActive__0230A940 DefenderAbilityIsActive__0230A940: ; 0x0230A940 +#ifdef JAPAN + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + cmp r6, r5 +#else stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r7, r0 mov r6, r1 mov r5, r2 mov r4, r3 cmp r7, r6 +#endif beq _0230A984 bl IsMonster__0230A994 cmp r0, #0 +#ifdef JAPAN + beq _0230A984 + mov r0, r6 +#else cmpne r4, #0 beq _0230A984 mov r0, r7 +#endif mov r1, #0x53 bl AbilityIsActiveVeneer cmp r0, #0 movne r0, #0 +#ifdef JAPAN + ldmneia sp!, {r4, r5, r6, pc} +_0230A984: + mov r0, r5 + mov r1, r4 + bl AbilityIsActiveVeneer + ldmia sp!, {r4, r5, r6, pc} +#else ldmneia sp!, {r3, r4, r5, r6, r7, pc} _0230A984: mov r0, r6 mov r1, r5 bl AbilityIsActiveVeneer ldmia sp!, {r3, r4, r5, r6, r7, pc} +#endif arm_func_end DefenderAbilityIsActive__0230A940 arm_func_start IsMonster__0230A994 @@ -3508,7 +3584,11 @@ ExclusiveItemEffectIsActive__0230A9B8: ; 0x0230A9B8 cmp r0, #0 movne r0, #0 ldmneia sp!, {r3, pc} +#ifdef JAPAN + add r0, r2, #0x224 +#else add r0, r2, #0x228 +#endif bl ExclusiveItemEffectFlagTest ldmia sp!, {r3, pc} arm_func_end ExclusiveItemEffectIsActive__0230A9B8 @@ -3535,7 +3615,9 @@ AftermathCheck: ; 0x0230AA0C sub sp, sp, #8 mov r4, r2 mov r2, #0x76 +#ifndef JAPAN mov r3, #1 +#endif mov r6, r0 mov r5, r1 bl DefenderAbilityIsActive__0230A940 @@ -3800,7 +3882,9 @@ CalcTypeBasedDamageEffects: ; 0x0230AD04 mov r0, sl mov r1, sb mov r2, #0x35 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 cmpne r8, #0 @@ -3983,14 +4067,18 @@ _0230B02C: mov r0, sl mov r1, sb mov r2, #0x6c +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 bne _0230B064 mov r0, sl mov r1, sb mov r2, #0x6e +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 beq _0230B080 @@ -4044,7 +4132,9 @@ _0230B104: mov r0, sl mov r1, sb mov r2, #2 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 beq _0230B14C @@ -4082,7 +4172,9 @@ _0230B198: mov r0, sl mov r1, sb mov r2, #0x5f +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 beq _0230B1DC @@ -4210,9 +4302,15 @@ _0230B380: beq _0230B3A0 mov r0, sl bl PlayEffectAnimation0x1A9__022E61C8 +#ifdef JAPAN + ldr r2, _0230CD24 ; =0x0000098F + mov r0, sl + mov r1, sb +#else mov r0, sl mov r1, sb mov r2, #0xc50 +#endif bl LogMessageByIdWithPopupCheckUserTarget _0230B3A0: cmp r8, #0xc @@ -4255,9 +4353,15 @@ _0230B42C: beq _0230B44C mov r0, sl bl PlayEffectAnimation0x1A9__022E64C4 +#ifdef JAPAN + mov r0, sl + mov r1, sb + mov r2, #0x990 +#else ldr r2, _0230B7C4 ; =0x00000C51 mov r0, sl mov r1, sb +#endif bl LogMessageByIdWithPopupCheckUserTarget _0230B44C: cmp r8, #2 @@ -4308,7 +4412,9 @@ _0230B4F8: mov r0, sl mov r1, sb mov r2, #0x55 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 beq _0230B534 @@ -4431,7 +4537,11 @@ _0230B6C0: ldr r0, _0230B798 ; =DUNGEON_PTR ldr r7, [r0] add r0, r7, #0xc000 +#ifdef JAPAN + ldrb r0, [r0, #0xcb7] +#else ldrb r0, [r0, #0xd5b] +#endif cmp r0, #0 bne _0230B6E0 cmp r5, #6 @@ -4449,7 +4559,11 @@ _0230B700: ldr r0, _0230B798 ; =DUNGEON_PTR ldr r5, [r0] add r0, r5, #0xc000 +#ifdef JAPAN + ldrb r0, [r0, #0xcb8] +#else ldrb r0, [r0, #0xd5c] +#endif cmp r0, #0 beq _0230B738 cmp r8, #2 @@ -4479,6 +4593,11 @@ _0230B76C: add sp, sp, #0x64 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +#define CALC_TYPE_BASED_DAMAGE_EFFECTS_OFFSET -0x2C1 +#else +#define CALC_TYPE_BASED_DAMAGE_EFFECTS_OFFSET 0 +#endif _0230B774: .word ov29_02352838 _0230B778: .word MATCHUP_IMMUNE_MULTIPLIER_ERRATIC_PLAYER _0230B77C: .word MATCHUP_NOT_VERY_EFFECTIVE_MULTIPLIER_ERRATIC_PLAYER @@ -4495,12 +4614,16 @@ _0230B7A4: .word SOLID_ROCK_MULTIPLIER _0230B7A8: .word DAMAGE_MULTIPLIER_0_5 _0230B7AC: .word TECHNICIAN_MOVE_POWER_THRESHOLD _0230B7B0: .word DAMAGE_MULTIPLIER_1_5 -_0230B7B4: .word 0x00000C3E -_0230B7B8: .word 0x000003E7 +_0230B7B4: .word 0x00000C3E + CALC_TYPE_BASED_DAMAGE_EFFECTS_OFFSET +_0230B7B8: .word 0x000003E7 + CALC_TYPE_BASED_DAMAGE_EFFECTS_OFFSET _0230B7BC: .word DAMAGE_MULTIPLIER_2 -_0230B7C0: .word 0x00000C4F +_0230B7C0: .word 0x00000C4F + CALC_TYPE_BASED_DAMAGE_EFFECTS_OFFSET +#ifdef JAPAN +_0230CD24: .word 0x0000098F +#else _0230B7C4: .word 0x00000C51 -_0230B7C8: .word 0x00000C52 +#endif +_0230B7C8: .word 0x00000C52 + CALC_TYPE_BASED_DAMAGE_EFFECTS_OFFSET _0230B7CC: .word BURN_DAMAGE_MULTIPLIER _0230B7D0: .word CLOUDY_DAMAGE_MULTIPLIER arm_func_end CalcTypeBasedDamageEffects @@ -4543,7 +4666,9 @@ _0230B84C: mov r0, sl mov r1, sb mov r2, #0x23 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 movne r0, #0 @@ -4554,7 +4679,9 @@ _0230B874: mov r0, sl mov r1, sb mov r2, #0x24 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 movne r0, #0 @@ -4641,7 +4768,9 @@ _0230B9A8: mov r0, sl mov r1, sb mov r2, #2 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 movne r0, #2 @@ -4745,7 +4874,11 @@ _0230BB3C: ldr r0, _0230BBA4 ; =DUNGEON_PTR ldr r1, [r0] add r0, r1, #0xc000 +#ifdef JAPAN + ldrb r0, [r0, #0xcb7] +#else ldrb r0, [r0, #0xd5b] +#endif cmp r0, #0 beq _0230BB60 cmp r8, #5 @@ -4753,7 +4886,11 @@ _0230BB3C: beq _0230BB98 _0230BB60: add r0, r1, #0xc000 +#ifdef JAPAN + ldrb r0, [r0, #0xcb8] +#else ldrb r0, [r0, #0xd5c] +#endif cmp r0, #0 beq _0230BB7C cmp r8, #2 @@ -4778,6 +4915,11 @@ _0230BBA8: .word 0x000003E7 arm_func_start CalcDamage CalcDamage: ; 0x0230BBAC +#ifdef JAPAN +#define CALC_DAMAGE_OFFSET -4 +#else +#define CALC_DAMAGE_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0xc0 ldr r4, _0230C450 ; =DUNGEON_PTR @@ -4798,7 +4940,7 @@ CalcDamage: ; 0x0230BBAC ldr r7, [sb, #0xb4] str r1, [sp, #0x1c] bl ResetDamageData - ldrb r0, [r6, #0x221] + ldrb r0, [r6, #0x221 + CALC_DAMAGE_OFFSET] cmp r0, #0 beq _0230BC1C ldr r1, _0230C454 ; =ME_FIRST_MULTIPLIER @@ -4854,10 +4996,10 @@ _0230BC84: cmp r0, #0 bne _0230BD34 add r0, r6, #0x100 - ldrh r1, [r0, #0x46] + ldrh r1, [r0, #0x46 + CALC_DAMAGE_OFFSET] sub r2, sp, #4 strh r1, [r2] - ldrh r0, [r0, #0x48] + ldrh r0, [r0, #0x48 + CALC_DAMAGE_OFFSET] strh r0, [r2, #2] ldr r0, [r2] bl CeilFixedPoint @@ -4887,7 +5029,9 @@ _0230BD34: mov r0, sl mov r1, sb mov r2, #0x35 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 beq _0230BDA0 @@ -4983,7 +5127,7 @@ _0230BE70: mov r0, sl bl IqSkillIsEnabled cmp r0, #0 - ldrneb r0, [r6, #0x166] + ldrneb r0, [r6, #0x166 + CALC_DAMAGE_OFFSET] mov r1, #0x32 cmpne r0, #0 ldrneb r0, [r5, #0x34] @@ -5105,7 +5249,7 @@ _0230C07C: ldr r0, [sp, #0x44] add r0, r0, r4 str r0, [sp, #0x44] - ldrb r0, [r6, #0x167] + ldrb r0, [r6, #0x167 + CALC_DAMAGE_OFFSET] cmp r0, #0 beq _0230C0AC mov r0, sl @@ -5158,6 +5302,9 @@ _0230C0F4: ldr r0, _0230C464 ; =0x000001A5 addeq fp, fp, #2 cmp r1, r0 +#ifdef JAPAN + ldrsh r1, [r6, #4] +#endif ldr r0, _0230C468 ; =0x00000211 subeq fp, fp, #2 cmp r1, r0 @@ -5211,7 +5358,9 @@ _0230C1F4: mov r0, sl mov r1, sb mov r2, #0x67 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 movne r0, #0xa @@ -5359,6 +5508,11 @@ _0230C41C: strb r0, [r5, #0x36] b _0230C5E0 .align 2, 0 +#ifdef JAPAN +#define CALC_DAMAGE_DATA_OFFSET -0x2C1 +#else +#define CALC_DAMAGE_DATA_OFFSET 0 +#endif _0230C450: .word DUNGEON_PTR _0230C454: .word ME_FIRST_MULTIPLIER _0230C458: .word 0x000001D3 @@ -5375,9 +5529,9 @@ _0230C480: .word AURA_BOW_STAT_BOOST _0230C484: .word DEF_SCARF_STAT_BOOST _0230C488: .word ZINC_BAND_STAT_BOOST _0230C48C: .word SPECIAL_BAND_STAT_BOOST -_0230C490: .word 0x00000C53 -_0230C494: .word 0x00000C54 -_0230C498: .word 0x00000C55 +_0230C490: .word 0x00000C53 + CALC_DAMAGE_DATA_OFFSET +_0230C494: .word 0x00000C54 + CALC_DAMAGE_DATA_OFFSET +_0230C498: .word 0x00000C55 + CALC_DAMAGE_DATA_OFFSET _0230C49C: .word 0x000003E7 _0230C4A0: .word DAMAGE_FORMULA_FLV_DEFICIT_DIVISOR _0230C4A4: .word ov29_02352984 @@ -5479,15 +5633,15 @@ _0230C5E0: mov r4, #1 str r0, [sp, #0x40] add r0, r6, #0x100 - ldrh r1, [r0, #0x5a] + ldrh r1, [r0, #0x5a + CALC_DAMAGE_OFFSET] mov fp, r4 str r4, [sp, #0x28] bic r1, r1, #0x100 - strh r1, [r0, #0x5a] - ldrh r1, [r0, #0x58] + strh r1, [r0, #0x5a + CALC_DAMAGE_OFFSET] + ldrh r1, [r0, #0x58 + CALC_DAMAGE_OFFSET] str r4, [sp, #0x2c] bic r1, r1, #0x100 - strh r1, [r0, #0x58] + strh r1, [r0, #0x58 + CALC_DAMAGE_OFFSET] ldr r0, [sp, #0xf4] bl MoveIsNotPhysical str r0, [sp, #0x30] @@ -5590,7 +5744,7 @@ _0230C76C: ldr r0, [sp, #0x14] add r0, r1, r0 add r0, r0, #0x3000 - ldrb r0, [r0, #0xe36] + ldrb r0, [r0, #0xe36 + CALC_DAMAGE_OFFSET] cmp r0, #0 movne r0, #0xa mulne r0, fp, r0 @@ -5610,7 +5764,7 @@ _0230C7D4: ldr r0, [sp, #0x14] add r0, r1, r0 add r0, r0, #0x3000 - ldrb r0, [r0, #0xe34] + ldrb r0, [r0, #0xe34 + CALC_DAMAGE_OFFSET] cmp r0, #0 movne r0, #0xa mulne r0, fp, r0 @@ -5620,7 +5774,9 @@ _0230C820: mov r0, sl mov r1, sb mov r2, #6 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 beq _0230C84C @@ -5632,7 +5788,9 @@ _0230C84C: mov r0, sl mov r1, sb mov r2, #0x34 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 beq _0230C8E0 @@ -5879,7 +6037,7 @@ _0230CB78: bl FlashFireShouldActivate movs r4, r0 beq _0230CC78 - ldrb r0, [r7, #0x15c] + ldrb r0, [r7, #0x15c + CALC_DAMAGE_OFFSET] cmp r0, #0 bne _0230CC78 ldr r0, [sp, #0xf8] @@ -5887,7 +6045,7 @@ _0230CB78: beq _0230CC78 mov r0, #1 mov r1, sb - strb r0, [r7, #0x15c] + strb r0, [r7, #0x15c + CALC_DAMAGE_OFFSET] mov r2, #0 bl SubstitutePlaceholderStringTags cmp r4, #1 @@ -5963,14 +6121,18 @@ _0230CD3C: mov r0, sl mov r1, sb mov r2, #0xc +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 bne _0230CEEC mov r0, sl mov r1, sb mov r2, #0x13 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 bne _0230CEEC @@ -6046,7 +6208,11 @@ _0230CE74: mov r4, #5 mov r0, sl mov r1, sb +#ifdef JAPAN + add r3, r2, #0xb00 +#else add r3, r2, #0xdc0 +#endif str r4, [sp] bl ExclusiveItemEffectIsActiveWithLogging cmp r0, #0 @@ -6162,13 +6328,13 @@ _0230D038: cmp r0, #0 streqb r1, [r8, #0xe] ldrb r0, [r8, #0xe] - strb r0, [r7, #0x167] + strb r0, [r7, #0x167 + CALC_DAMAGE_OFFSET] _0230D054: add sp, sp, #0xc0 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 -_0230D05C: .word 0x00000C58 -_0230D060: .word 0x00000C57 +_0230D05C: .word 0x00000C58 + CALC_DAMAGE_DATA_OFFSET +_0230D060: .word 0x00000C57 + CALC_DAMAGE_DATA_OFFSET _0230D064: .word DAMAGE_MULTIPLIER_0_5 _0230D068: .word SCOPE_LENS_CRIT_RATE_BOOST _0230D06C: .word SUPER_LUCK_CRIT_RATE_BOOST @@ -6343,7 +6509,9 @@ _0230D298: mov r0, sl mov r1, sb mov r2, #0x35 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__0230A940 cmp r0, #0 beq _0230D2F8 @@ -6602,7 +6770,11 @@ ov29_0230D628: ; 0x0230D628 ldr r1, _0230D650 ; =DUNGEON_PTR ldr r1, [r1] add r1, r1, #0x1a000 +#ifdef JAPAN + ldr r1, [r1, #0x188] +#else ldr r1, [r1, #0x22c] +#endif cmp r1, r0 ldmneia sp!, {r3, pc} mov r1, #1 @@ -6820,7 +6992,11 @@ ov29_0230D874: ; 0x0230D874 bl LogMessageByIdWithPopupCheckUserTarget ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_0230D8E4: .word 0x00002494 +#else _0230D8E4: .word 0x00000F2D +#endif arm_func_end ov29_0230D874 arm_func_start ov29_0230D8E8 @@ -6854,7 +7030,11 @@ ov29_0230D8E8: ; 0x0230D8E8 bl LogMessageByIdWithPopupCheckUserTarget ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_0230D958: .word 0x00002495 +#else _0230D958: .word 0x00000F2E +#endif arm_func_end ov29_0230D8E8 arm_func_start ov29_0230D95C @@ -6888,7 +7068,11 @@ ov29_0230D95C: ; 0x0230D95C bl LogMessageByIdWithPopupCheckUserTarget ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_0230D9CC: .word 0x00002492 +#else _0230D9CC: .word 0x00000F2B +#endif arm_func_end ov29_0230D95C arm_func_start ov29_0230D9D0 @@ -6922,7 +7106,11 @@ ov29_0230D9D0: ; 0x0230D9D0 bl LogMessageByIdWithPopupCheckUserTarget ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_0230DA40: .word 0x00002493 +#else _0230DA40: .word 0x00000F2C +#endif arm_func_end ov29_0230D9D0 arm_func_start ov29_0230DA44 @@ -6956,7 +7144,11 @@ ov29_0230DA44: ; 0x0230DA44 bl LogMessageByIdWithPopupCheckUserTarget ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_0230DAB4: .word 0x00002496 +#else _0230DAB4: .word 0x00000F2F +#endif arm_func_end ov29_0230DA44 arm_func_start ov29_0230DAB8 @@ -6979,11 +7171,20 @@ ov29_0230DAB8: ; 0x0230DAB8 mov r1, r5 mov r2, r0 bl SubstitutePlaceholderStringTags +#ifdef JAPAN + ldr r2, _0230F050 ; =0x00002497 + mov r0, r5 + mov r1, r4 +#else mov r0, r5 mov r1, r4 mov r2, #0xf30 +#endif bl LogMessageByIdWithPopupCheckUserTarget ldmia sp!, {r3, r4, r5, pc} +#ifdef JAPAN +_0230F050: .word 0x00002497 +#endif arm_func_end ov29_0230DAB8 arm_func_start SpecificRecruitCheck @@ -7355,8 +7556,19 @@ _0230E060: .word RECRUITMENT_LEVEL_BOOST_TABLE arm_func_start TryRecruit TryRecruit: ; 0x0230E064 +#ifdef JAPAN +#define TRY_RECRUIT_OFFSET -4 +#define TRY_RECRUIT_OFFSET_2 -0x2C0 +#else +#define TRY_RECRUIT_OFFSET 0 +#define TRY_RECRUIT_OFFSET_2 0 +#endif +#ifdef JAPAN + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} +#else stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x114 +#endif + sub sp, sp, #0x114 + TRY_RECRUIT_OFFSET mov sl, r0 mov r0, #0xa mov r5, #0 @@ -7415,41 +7627,41 @@ _0230E114: mov r4, #1 mov r0, #0 orr r1, r4, #2 - strb r1, [sp, #0xac] - strb r0, [sp, #0xad] + strb r1, [sp, #0xac + TRY_RECRUIT_OFFSET] + strb r0, [sp, #0xad + TRY_RECRUIT_OFFSET] ldrsh r2, [r8, #0xc] ldr r1, _0230E560 ; =DUNGEON_PTR sub r3, r0, #1 - strb r2, [sp, #0xae] - strh r4, [sp, #0xb2] + strb r2, [sp, #0xae + TRY_RECRUIT_OFFSET] + strh r4, [sp, #0xb2 + TRY_RECRUIT_OFFSET] ldr r2, [r1] ldrh r4, [r8, #0x44] add r1, sp, #0x14 - strh r4, [r1, #0xf2] + strh r4, [r1, #0xf2 + TRY_RECRUIT_OFFSET] ldrh r4, [r8, #0x46] - strh r4, [r1, #0xf4] - strb r0, [sp, #0x104] - strh r3, [sp, #0xb4] - strh r3, [sp, #0xb6] + strh r4, [r1, #0xf4 + TRY_RECRUIT_OFFSET] + strb r0, [sp, #0x104 + TRY_RECRUIT_OFFSET] + strh r3, [sp, #0xb4 + TRY_RECRUIT_OFFSET] + strh r3, [sp, #0xb6 + TRY_RECRUIT_OFFSET] ldrsh r1, [r8] - strh r1, [sp, #0xb8] + strh r1, [sp, #0xb8 + TRY_RECRUIT_OFFSET] ldrb r1, [r2, #0x748] - strb r1, [sp, #0xaf] + strb r1, [sp, #0xaf + TRY_RECRUIT_OFFSET] ldrb r1, [r2, #0x749] - add r2, sp, #0xac - strb r1, [sp, #0xb0] + add r2, sp, #0xac + TRY_RECRUIT_OFFSET + strb r1, [sp, #0xb0 + TRY_RECRUIT_OFFSET] ldrsh r1, [r8, #6] - strh r1, [sp, #0xba] + strh r1, [sp, #0xba + TRY_RECRUIT_OFFSET] ldrsh r1, [r8, #6] - strh r1, [sp, #0xbc] + strh r1, [sp, #0xbc + TRY_RECRUIT_OFFSET] ldrh r1, [r8, #0x14] - strh r1, [sp, #0xf0] + strh r1, [sp, #0xf0 + TRY_RECRUIT_OFFSET] ldrh r1, [r8, #0x16] - strh r1, [sp, #0xf2] + strh r1, [sp, #0xf2 + TRY_RECRUIT_OFFSET] ldrh r1, [r8, #0x18] - strh r1, [sp, #0xf4] + strh r1, [sp, #0xf4 + TRY_RECRUIT_OFFSET] ldrh r1, [r8, #0x1a] - strh r1, [sp, #0xf6] + strh r1, [sp, #0xf6 + TRY_RECRUIT_OFFSET] _0230E1D8: add r4, r8, r0 ldrb r1, [r4, #8] @@ -7463,8 +7675,8 @@ _0230E1D8: cmp r0, #2 blt _0230E1D8 ldr r0, [r8, #0x10] - add r2, sp, #0xc8 - str r0, [sp, #0xc4] + add r2, sp, #0xc8 + TRY_RECRUIT_OFFSET + str r0, [sp, #0xc4 + TRY_RECRUIT_OFFSET] add r3, r8, #0x22 mov r1, #0x11 _0230E218: @@ -7473,11 +7685,11 @@ _0230E218: strh r0, [r2], #2 bne _0230E218 ldrh r0, [r8, #0x1c] - strh r0, [sp, #0xea] + strh r0, [sp, #0xea + TRY_RECRUIT_OFFSET] ldrh r0, [r8, #0x1e] - strh r0, [sp, #0xec] + strh r0, [sp, #0xec + TRY_RECRUIT_OFFSET] ldrh r0, [r8, #0x20] - strh r0, [sp, #0xee] + strh r0, [sp, #0xee + TRY_RECRUIT_OFFSET] ldrsh r0, [r8] bl GetNameString mov r1, r0 @@ -7485,14 +7697,16 @@ _0230E218: add r0, r0, #0xa mov r2, #0xa bl StrncpyName - ldrsh r1, [sp, #0xb8] - ldrsh r2, [sp, #0xb2] - add r0, sp, #0xf8 + ldrsh r1, [sp, #0xb8 + TRY_RECRUIT_OFFSET] + ldrsh r2, [sp, #0xb2 + TRY_RECRUIT_OFFSET] + add r0, sp, #0xf8 + TRY_RECRUIT_OFFSET bl EnableAllLearnableIqSkills add r1, sp, #0x100 add r0, sp, #0x98 - add r1, r1, #0xa + add r1, r1, #0xa + TRY_RECRUIT_OFFSET +#ifndef JAPAN mov r2, #0xa +#endif add r4, sp, #0x18 bl StrncpySimpleNoPad bl ov29_022EACAC @@ -7508,7 +7722,7 @@ _0230E218: bne _0230E2D4 bl ov29_0234D838 add r6, sp, #0x100 - add r6, r6, #0xa + add r6, r6, #0xa + TRY_RECRUIT_OFFSET _0230E2BC: mov r0, r6 add r1, sp, #0x98 @@ -7517,7 +7731,7 @@ _0230E2BC: cmp r0, #0 beq _0230E2BC _0230E2D4: - add r1, sp, #0xac + add r1, sp, #0xac + TRY_RECRUIT_OFFSET mov r0, r4 bl sub_020585B4 mov r1, r4 @@ -7539,7 +7753,7 @@ _0230E2D4: bl ov29_0230E5A8 cmp r0, #0 bne _0230E42C - add r0, sp, #0xac + add r0, sp, #0xac + TRY_RECRUIT_OFFSET mvn r1, #0 bl ov29_0230E5FC mov r7, r0 @@ -7552,14 +7766,14 @@ _0230E34C: bl ov29_0234D838 add r1, sp, #0x100 mov r0, sb - add r1, r1, #0xa + add r1, r1, #0xa + TRY_RECRUIT_OFFSET bl ov29_0234EE10 movs r6, r0 beq _0230E3D4 cmp r6, sb add r0, sp, #0x58 bne _0230E380 - add r1, sp, #0xac + add r1, sp, #0xac + TRY_RECRUIT_OFFSET bl sub_020585B4 b _0230E38C _0230E380: @@ -7579,7 +7793,7 @@ _0230E38C: mov r2, #0 str r1, [sp] mov r1, r0 - mov r0, #0xc80 + mov r0, #0xc80 + TRY_RECRUIT_OFFSET_2 mov r3, r2 bl ov29_0234D7C0 mov fp, r0 @@ -7630,12 +7844,12 @@ _0230E468: cmp r6, #4 blt _0230E43C _0230E470: - add r0, sp, #0xac + add r0, sp, #0xac + TRY_RECRUIT_OFFSET mov r1, r7 - strh r6, [sp, #0xb6] + strh r6, [sp, #0xb6 + TRY_RECRUIT_OFFSET] bl ov29_0230E5FC - strh r0, [sp, #0xb4] - ldrsh r1, [sp, #0xb4] + strh r0, [sp, #0xb4 + TRY_RECRUIT_OFFSET] + ldrsh r1, [sp, #0xb4 + TRY_RECRUIT_OFFSET] mov r0, r6 bl sub_02056698 ldr r1, _0230E570 ; =0x00000233 @@ -7645,7 +7859,7 @@ _0230E470: mov r0, r6 bl GetActiveTeamMember mov r4, r0 - add r7, sp, #0xac + add r7, sp, #0xac + TRY_RECRUIT_OFFSET mov r6, r4 mov r5, #6 _0230E4B8: @@ -7691,16 +7905,16 @@ _0230E540: bl EnsureCanStandCurrentTile _0230E550: mov r0, r4 - add sp, sp, #0x114 + add sp, sp, #0x114 + TRY_RECRUIT_OFFSET ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 -_0230E55C: .word 0x00000C77 +_0230E55C: .word 0x00000C77 + TRY_RECRUIT_OFFSET_2 _0230E560: .word DUNGEON_PTR -_0230E564: .word 0x00000C7B -_0230E568: .word 0x00000C7E -_0230E56C: .word 0x00000C7F +_0230E564: .word 0x00000C7B + TRY_RECRUIT_OFFSET_2 +_0230E568: .word 0x00000C7E + TRY_RECRUIT_OFFSET_2 +_0230E56C: .word 0x00000C7F + TRY_RECRUIT_OFFSET_2 _0230E570: .word 0x00000233 -_0230E574: .word 0x00000C78 +_0230E574: .word 0x00000C78 + TRY_RECRUIT_OFFSET_2 arm_func_end TryRecruit arm_func_start ItemIsActive__0230E578 @@ -7804,6 +8018,11 @@ ov29_0230E658: ; 0x0230E658 arm_func_start TrySpawnMonsterAndTickSpawnCounter TrySpawnMonsterAndTickSpawnCounter: ; 0x0230E6BC +#ifdef JAPAN +#define TRY_SPAWN_MONSTER_AND_TICK_SPAWN_COUNTER_OFFSET -0xA4 +#else +#define TRY_SPAWN_MONSTER_AND_TICK_SPAWN_COUNTER_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, lr} sub sp, sp, #0x10 ldr r0, _0230E8D8 ; =DUNGEON_PTR @@ -7835,14 +8054,14 @@ _0230E724: cmp r2, #0x384 ble _0230E76C add r0, r7, #0x19000 - ldr r4, [r0, #0x908] + ldr r4, [r0, #0x908 + TRY_SPAWN_MONSTER_AND_TICK_SPAWN_COUNTER_OFFSET] mov r0, r4 bl EntityIsValid__0230E8F0 cmp r0, #0 beq _0230E76C add r0, r7, #0x19000 ldrh r1, [r4, #0x26] - ldr r0, [r0, #0x910] + ldr r0, [r0, #0x910 + TRY_SPAWN_MONSTER_AND_TICK_SPAWN_COUNTER_OFFSET] cmp r1, r0 bne _0230E76C mov r0, #0 @@ -7856,11 +8075,11 @@ _0230E76C: strh r5, [r0, #0x82] add r0, r7, #0x19000 mov r4, r5 - str r5, [r0, #0x908] + str r5, [r0, #0x908 + TRY_SPAWN_MONSTER_AND_TICK_SPAWN_COUNTER_OFFSET] _0230E784: add r0, r7, r4, lsl #2 add r0, r0, #0x12000 - ldr r8, [r0, #0xb38] + ldr r8, [r0, #0xb38 + TRY_SPAWN_MONSTER_AND_TICK_SPAWN_COUNTER_OFFSET] mov r0, r8 bl EntityIsValid__0230E8F0 cmp r0, #0 @@ -7881,7 +8100,7 @@ _0230E7B8: ldr r0, _0230E8D8 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 - ldrb r0, [r0, #0xc9] + ldrb r0, [r0, #0xc9 + TRY_SPAWN_MONSTER_AND_TICK_SPAWN_COUNTER_OFFSET] cmp r0, #0xff bne _0230E7FC ldr r0, _0230E8E4 ; =SPAWN_CAP_NO_MONSTER_HOUSE @@ -7956,5 +8175,9 @@ _0230E8DC: .word SPAWN_COOLDOWN _0230E8E0: .word SPAWN_COOLDOWN_THIEF_ALERT _0230E8E4: .word SPAWN_CAP_NO_MONSTER_HOUSE _0230E8E8: .word SPAWN_CAP_WITH_MONSTER_HOUSE +#ifdef JAPAN +_0230E8EC: .word 0x0000099C +#else _0230E8EC: .word 0x00000C5D +#endif arm_func_end TrySpawnMonsterAndTickSpawnCounter diff --git a/asm/overlay_29_0230E914.s b/asm/overlay_29_0230E914.s index c3348395..8a563cb0 100644 --- a/asm/overlay_29_0230E914.s +++ b/asm/overlay_29_0230E914.s @@ -12,9 +12,15 @@ ov29_0230E914: ; 0x0230E914 bl ov29_02300B40 cmp r0, #0 movne r0, #0 +#ifdef JAPAN + strneb r0, [r7, #0x108] + bne _0230ED98 + ldrb r0, [r7, #0x108] +#else strneb r0, [r7, #0x109] bne _0230ED98 ldrb r0, [r7, #0x109] +#endif cmp r0, #0 beq _0230EAF0 ldrb r0, [r7, #0x62] @@ -353,7 +359,11 @@ _0230EDF4: ldr r0, [r0] add r0, r0, fp, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r4, [r0, #0xad4] +#else ldr r4, [r0, #0xb78] +#endif mov r0, r4 bl EntityIsValid__0230F008 cmp r0, #0 diff --git a/asm/overlay_29_0230F02C.s b/asm/overlay_29_0230F02C.s index 5816f71d..11a9818b 100644 --- a/asm/overlay_29_0230F02C.s +++ b/asm/overlay_29_0230F02C.s @@ -18,7 +18,11 @@ _0230F04C: ldr r0, [r0] add r0, r0, r6, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r7, [r0, #0xad4] +#else ldr r7, [r0, #0xb78] +#endif mov r0, r7 bl EntityIsValid__0230F008 cmp r0, #0 @@ -322,13 +326,23 @@ _0230F408: ldr r0, [r0, r7, lsl #2] cmp r0, #0 bge _0230F4A0 +#ifdef JAPAN + ldr r1, _02310B84 ; =0x0000099F + mov r0, r8 +#else mov r0, r8 mov r1, #0xc60 +#endif bl LogMessageByIdWithPopup b _0230F624 _0230F4A0: +#ifdef JAPAN + mov r0, r8 + mov r1, #0x9a0 +#else ldr r1, _0230F648 ; =0x00000C61 mov r0, r8 +#endif bl LogMessageByIdWithPopup b _0230F624 _0230F4B0: @@ -402,8 +416,13 @@ _0230F564: add r0, r8, #4 mov r1, #1 bl RemoveGroundItem +#ifdef JAPAN + ldr r1, _02310B84 ; =0x0000099F + mov r0, r8 +#else mov r0, r8 mov r1, #0xc60 +#endif bl LogMessageByIdWithPopup b _0230F624 _0230F5BC: @@ -428,8 +447,13 @@ _0230F5F8: add r0, r8, #4 mov r1, #1 bl RemoveGroundItem +#ifdef JAPAN + mov r0, r8 + mov r1, #0x9a0 +#else ldr r1, _0230F648 ; =0x00000C61 mov r0, r8 +#endif bl LogMessageByIdWithPopup mov r0, r4 mov r1, r5 @@ -438,16 +462,25 @@ _0230F624: add sp, sp, #0x198 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 -_0230F62C: .word 0x00000C5E +#ifdef JAPAN +#define TRY_NON_LEADER_ITEM_PICK_UP_OFFSET -0x2C1 +#else +#define TRY_NON_LEADER_ITEM_PICK_UP_OFFSET 0 +#endif +_0230F62C: .word 0x00000C5E + TRY_NON_LEADER_ITEM_PICK_UP_OFFSET _0230F630: .word 0x00001305 _0230F634: .word 0x00001308 -_0230F638: .word 0x00000C5F +_0230F638: .word 0x00000C5F + TRY_NON_LEADER_ITEM_PICK_UP_OFFSET _0230F63C: .word DUNGEON_PTR _0230F640: .word BAG_ITEMS_PTR_MIRROR _0230F644: .word 0x00001304 +#ifdef JAPAN +_02310B84: .word 0x0000099F +#else _0230F648: .word 0x00000C61 -_0230F64C: .word 0x00000C62 -_0230F650: .word 0x00000C63 +#endif +_0230F64C: .word 0x00000C62 + TRY_NON_LEADER_ITEM_PICK_UP_OFFSET +_0230F650: .word 0x00000C63 + TRY_NON_LEADER_ITEM_PICK_UP_OFFSET arm_func_end TryNonLeaderItemPickUp arm_func_start ov29_0230F654 @@ -516,6 +549,11 @@ _0230F718: arm_func_start ov29_0230F728 ov29_0230F728: ; 0x0230F728 +#ifdef JAPAN +#define OV29_0230F728_OFFSET -0xA4 +#else +#define OV29_0230F728_OFFSET 0 +#endif stmdb sp!, {r4, r5, lr} sub sp, sp, #0xc ldr ip, [r1, #0xb4] @@ -528,12 +566,12 @@ ov29_0230F728: ; 0x0230F728 ldrb r3, [ip, #0x5e] add r0, sp, #4 bl GetExclusiveItemForMonsterFromBag - ldr r1, [r4, #0x18c] + ldr r1, [r4, #0x18c + OV29_0230F728_OFFSET] add r0, r4, #0x100 orr r1, r1, r5 - str r1, [r4, #0x18c] + str r1, [r4, #0x18c + OV29_0230F728_OFFSET] ldrsh r1, [sp, #8] - strh r1, [r0, #0x90] + strh r1, [r0, #0x90 + OV29_0230F728_OFFSET] add sp, sp, #0xc ldmia sp!, {r4, r5, pc} arm_func_end ov29_0230F728 @@ -542,7 +580,11 @@ ov29_0230F728: ; 0x0230F728 ExclusiveItemOffenseBoost: ; 0x0230F778 ldr r0, [r0, #0xb4] add r0, r0, r1 +#ifdef JAPAN + ldrb r0, [r0, #0x220] +#else ldrb r0, [r0, #0x224] +#endif bx lr arm_func_end ExclusiveItemOffenseBoost @@ -550,7 +592,11 @@ ExclusiveItemOffenseBoost: ; 0x0230F778 ExclusiveItemDefenseBoost: ; 0x0230F788 ldr r0, [r0, #0xb4] add r0, r0, r1 +#ifdef JAPAN + ldrb r0, [r0, #0x222] +#else ldrb r0, [r0, #0x226] +#endif bx lr arm_func_end ExclusiveItemDefenseBoost @@ -566,7 +612,11 @@ _0230F7B0: ldr r0, [r4] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r7, [r0, #0xa84] +#else ldr r7, [r0, #0xb28] +#endif mov r0, r7 bl EntityIsValid__0230F008 cmp r0, #0 @@ -618,7 +668,11 @@ _0230F854: ldr r0, [r5] add r0, r0, r6, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r7, [r0, #0xa84] +#else ldr r7, [r0, #0xb28] +#endif mov r0, r7 bl EntityIsValid__0230F008 cmp r0, #0 @@ -650,7 +704,11 @@ ExclusiveItemEffectIsActive__0230F8AC: ; 0x0230F8AC cmp r0, #0 movne r0, #0 ldmneia sp!, {r3, pc} +#ifdef JAPAN + add r0, r2, #0x224 +#else add r0, r2, #0x228 +#endif bl ExclusiveItemEffectFlagTest ldmia sp!, {r3, pc} arm_func_end ExclusiveItemEffectIsActive__0230F8AC @@ -858,11 +916,20 @@ ov29_0230FB30: ; 0x0230FB30 ldmia sp!, {r3, r4, r5, pc} .align 2, 0 _0230FB88: .word ov29_023529A8 +#ifdef JAPAN +_0230FB8C: .word 0x000009B6 +#else _0230FB8C: .word 0x00000F62 +#endif arm_func_end ov29_0230FB30 arm_func_start TickNoSlipCap TickNoSlipCap: ; 0x0230FB90 +#ifdef JAPAN +#define TICK_NO_SLIP_CAP_OFFSET -1 +#else +#define TICK_NO_SLIP_CAP_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, lr} mov r1, #0x6f mov r5, r0 @@ -880,13 +947,13 @@ _0230FBB8: ldrb r0, [r4, #6] cmp r0, #0 ldmneia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0x107] + ldrb r0, [r4, #0x107 + TICK_NO_SLIP_CAP_OFFSET] add r1, r0, #1 and r0, r1, #0xff cmp r0, #0x14 - strb r1, [r4, #0x107] + strb r1, [r4, #0x107 + TICK_NO_SLIP_CAP_OFFSET] movhs r0, #0x13 - strhsb r0, [r4, #0x107] + strhsb r0, [r4, #0x107 + TICK_NO_SLIP_CAP_OFFSET] mov r0, #0x64 bl DungeonRandInt ldrb r2, [r4, #0x107] @@ -898,7 +965,7 @@ _0230FBB8: mov r0, r5 bl ov29_0230FB30 mov r0, #0 - strb r0, [r4, #0x107] + strb r0, [r4, #0x107 + TICK_NO_SLIP_CAP_OFFSET] ldmia sp!, {r3, r4, r5, pc} .align 2, 0 _0230FC20: .word ov10_022C4BE4 @@ -906,6 +973,13 @@ _0230FC20: .word ov10_022C4BE4 arm_func_start ov29_0230FC24 ov29_0230FC24: ; 0x0230FC24 +#ifdef JAPAN +#define OV29_0230FC24_OFFSET -4 +#define OV29_0230FC24_OFFSET_2 -0xA4 +#else +#define OV29_0230FC24_OFFSET 0 +#define OV29_0230FC24_OFFSET_2 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} sub sp, sp, #0x34 movs r5, r0 @@ -919,7 +993,7 @@ ov29_0230FC24: ; 0x0230FC24 ldr r4, [r5, #0xb4] mov r1, #0 mov r0, r5 - strb r1, [r4, #0x150] + strb r1, [r4, #0x150 + OV29_0230FC24_OFFSET] bl ov29_022FB718 bl ov29_0234B294 mov r0, r5 @@ -929,16 +1003,16 @@ ov29_0230FC24: ; 0x0230FC24 bl ItemIsActive__02311034 cmp r0, #0 beq _0230FD0C - ldrb r0, [r4, #0x17c] + ldrb r0, [r4, #0x17c + OV29_0230FC24_OFFSET] add r1, r0, #1 and r0, r1, #0xff cmp r0, #0x14 - strb r1, [r4, #0x17c] + strb r1, [r4, #0x17c + OV29_0230FC24_OFFSET] movhs r0, #0x13 - strhsb r0, [r4, #0x17c] + strhsb r0, [r4, #0x17c + OV29_0230FC24_OFFSET] mov r0, #0x64 bl DungeonRandInt - ldrb r2, [r4, #0x17c] + ldrb r2, [r4, #0x17c + OV29_0230FC24_OFFSET] ldr r1, _02310A6C ; =ov10_022C4BBC mov r2, r2, lsl #1 ldrsh r1, [r1, r2] @@ -946,7 +1020,7 @@ ov29_0230FC24: ; 0x0230FC24 bge _0230FD0C mov r1, #0 mov r0, r5 - strb r1, [r4, #0x17c] + strb r1, [r4, #0x17c + OV29_0230FC24_OFFSET] bl ov29_022EC62C mov r0, #0 bl DisplayActions @@ -1028,7 +1102,7 @@ _0230FD0C: str r3, [sp, #0x28] add r2, r2, r7, lsl #3 bl MultiplyFixedPoint64 - ldrb r2, [r4, #0x15d] + ldrb r2, [r4, #0x15d + OV29_0230FC24_OFFSET] cmp r2, #1 ldrhi r0, _02310A78 ; =ov10_022C4A5C ldrhi r1, [sp, #0x30] @@ -1036,10 +1110,10 @@ _0230FD0C: addhi r0, r1, r0, lsl #16 strhi r0, [sp, #0x30] mov r0, #0 - strb r0, [r4, #0x15d] + strb r0, [r4, #0x15d + OV29_0230FC24_OFFSET] add r0, r4, #0x100 - ldrh r2, [r0, #0x46] - ldrh r1, [r0, #0x48] + ldrh r2, [r0, #0x46 + OV29_0230FC24_OFFSET] + ldrh r1, [r0, #0x48 + OV29_0230FC24_OFFSET] add r0, sp, #0x2c strh r2, [sp, #0x20] strh r1, [sp, #0x22] @@ -1048,11 +1122,11 @@ _0230FD0C: mov r0, r0, lsr #0x10 add r1, r4, #0x100 strh r0, [sp, #0x16] - ldrh r0, [r1, #0x46] + ldrh r0, [r1, #0x46 + OV29_0230FC24_OFFSET] sub r3, sp, #4 ldrh r2, [sp, #0x14] strh r0, [r3] - ldrh r0, [r1, #0x48] + ldrh r0, [r1, #0x48 + OV29_0230FC24_OFFSET] ldrh r1, [sp, #0x16] strh r0, [r3, #2] ldr r0, [r3] @@ -1066,9 +1140,9 @@ _0230FD0C: ldrh r1, [sp, #0x10] add r0, r4, #0x100 ldrh r3, [sp, #0x12] - strh r1, [r0, #0x46] + strh r1, [r0, #0x46 + OV29_0230FC24_OFFSET] ldrh r2, [sp, #0x20] - strh r3, [r0, #0x48] + strh r3, [r0, #0x48 + OV29_0230FC24_OFFSET] sub r0, sp, #4 ldrh r1, [sp, #0x22] strh r2, [r0] @@ -1080,10 +1154,10 @@ _0230FD0C: cmp r0, #0x14 blt _0230FEFC add r0, r4, #0x100 - ldrh r1, [r0, #0x46] + ldrh r1, [r0, #0x46 + OV29_0230FC24_OFFSET] sub r2, sp, #4 strh r1, [r2] - ldrh r0, [r0, #0x48] + ldrh r0, [r0, #0x48 + OV29_0230FC24_OFFSET] strh r0, [r2, #2] ldr r0, [r2] bl CeilFixedPoint @@ -1100,10 +1174,10 @@ _0230FEFC: cmp r0, #0xa blt _0230FF48 add r0, r4, #0x100 - ldrh r1, [r0, #0x46] + ldrh r1, [r0, #0x46 + OV29_0230FC24_OFFSET] sub r2, sp, #4 strh r1, [r2] - ldrh r0, [r0, #0x48] + ldrh r0, [r0, #0x48 + OV29_0230FC24_OFFSET] strh r0, [r2, #2] ldr r0, [r2] bl CeilFixedPoint @@ -1111,10 +1185,10 @@ _0230FEFC: ldrlt r6, _02310A80 ; =0x00000DE7 _0230FF48: add r0, r4, #0x100 - ldrh r1, [r0, #0x46] + ldrh r1, [r0, #0x46 + OV29_0230FC24_OFFSET] sub r2, sp, #4 strh r1, [r2] - ldrh r0, [r0, #0x48] + ldrh r0, [r0, #0x48 + OV29_0230FC24_OFFSET] strh r0, [r2, #2] ldr r0, [r2] bl CeilFixedPoint @@ -1128,14 +1202,14 @@ _0230FF48: ldrh r2, [sp, #0xc] add r0, r4, #0x100 ldrh r1, [sp, #0xe] - strh r2, [r0, #0x46] - strh r1, [r0, #0x48] + strh r2, [r0, #0x46 + OV29_0230FC24_OFFSET] + strh r1, [r0, #0x48 + OV29_0230FC24_OFFSET] _0230FF98: add r0, r4, #0x100 - ldrh r1, [r0, #0x46] + ldrh r1, [r0, #0x46 + OV29_0230FC24_OFFSET] sub r2, sp, #4 strh r1, [r2] - ldrh r0, [r0, #0x48] + ldrh r0, [r0, #0x48 + OV29_0230FC24_OFFSET] strh r0, [r2, #2] ldr r0, [r2] bl CeilFixedPoint @@ -1149,14 +1223,14 @@ _0230FF98: ldrh r2, [sp, #8] add r0, r4, #0x100 ldrh r1, [sp, #0xa] - strh r2, [r0, #0x46] - strh r1, [r0, #0x48] + strh r2, [r0, #0x46 + OV29_0230FC24_OFFSET] + strh r1, [r0, #0x48 + OV29_0230FC24_OFFSET] _0230FFE8: add r0, r4, #0x100 - ldrh r1, [r0, #0x46] + ldrh r1, [r0, #0x46 + OV29_0230FC24_OFFSET] sub r2, sp, #4 strh r1, [r2] - ldrh r0, [r0, #0x48] + ldrh r0, [r0, #0x48 + OV29_0230FC24_OFFSET] strh r0, [r2, #2] ldr r0, [r2] bl CeilFixedPoint @@ -1200,12 +1274,12 @@ _0230FFE8: mov r3, #0x250 bl ApplyDamageAndEffectsWrapper mov r0, #1 - strb r0, [r4, #0x150] + strb r0, [r4, #0x150 + OV29_0230FC24_OFFSET] add r0, r4, #0x100 - ldrh r1, [r0, #0x46] + ldrh r1, [r0, #0x46 + OV29_0230FC24_OFFSET] sub r2, sp, #4 strh r1, [r2] - ldrh r0, [r0, #0x48] + ldrh r0, [r0, #0x48 + OV29_0230FC24_OFFSET] strh r0, [r2, #2] ldr r0, [r2] bl CeilFixedPoint @@ -1222,9 +1296,12 @@ _023100E8: beq _0231013C cmp r7, #0 beq _02310124 -#ifdef EUROPE +#if defined(EUROPE) mov r0, r5 bl ov29_022E34A8_EU +#elif defined(JAPAN) + mov r0, r5 + bl EntityIsValid__02311010 #else ldr r0, _02310A84 ; =DUNGEON_PTR ldr r0, [r0] @@ -1256,7 +1333,7 @@ _0231013C: ldr r0, _02310A84 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0xc000 - ldrb r0, [r0, #0xd5a] + ldrb r0, [r0, #0xd5a + OV29_0230FC24_OFFSET_2] cmp r0, #0 bne _0231037C mov r0, r5 @@ -1464,19 +1541,19 @@ _02310474: bl AbilityIsActiveVeneer cmp r0, #0 beq _023104C0 - ldrb r1, [r4, #0x11f] + ldrb r1, [r4, #0x11f + OV29_0230FC24_OFFSET] ldr r0, _02310AA8 ; =SPEED_BOOST_TURNS add r2, r1, #1 ldrsh r0, [r0] and r1, r2, #0xff - strb r2, [r4, #0x11f] + strb r2, [r4, #0x11f + OV29_0230FC24_OFFSET] cmp r1, r0 blt _023104C0 mov r3, #0 mov r0, r5 mov r1, r5 mov r2, #0x7f - strb r3, [r4, #0x11f] + strb r3, [r4, #0x11f + OV29_0230FC24_OFFSET] bl BoostSpeedOneStage _023104C0: ldrb r0, [r4, #0xbd] @@ -1621,7 +1698,7 @@ _023106C8: ldr r0, [r6] add r0, r0, sb, lsl #2 add r0, r0, #0x12000 - ldr r8, [r0, #0xb28] + ldr r8, [r0, #0xb28 + OV29_0230FC24_OFFSET_2] mov r0, r8 bl EntityIsValid__02311010 cmp r0, #0 @@ -1863,18 +1940,23 @@ _02310A4C: beq _02310B6C b _02310FF4 .align 2, 0 +#ifdef JAPAN +#define OV29_0230FC24_DATA_OFFSET -0x2C0 +#else +#define OV29_0230FC24_DATA_OFFSET 0 +#endif _02310A6C: .word ov10_022C4BBC _02310A70: .word 0x0000199A _02310A74: .word ov10_022C4FC4 _02310A78: .word ov10_022C4A5C -_02310A7C: .word 0x00000DE6 -_02310A80: .word 0x00000DE7 +_02310A7C: .word 0x00000DE6 + OV29_0230FC24_DATA_OFFSET +_02310A80: .word 0x00000DE7 + OV29_0230FC24_DATA_OFFSET _02310A84: .word DUNGEON_PTR -_02310A88: .word 0x00000DE8 -_02310A8C: .word 0x00000DE9 -_02310A90: .word 0x00000DEA +_02310A88: .word 0x00000DE8 + OV29_0230FC24_DATA_OFFSET +_02310A8C: .word 0x00000DE9 + OV29_0230FC24_DATA_OFFSET +_02310A90: .word 0x00000DEA + OV29_0230FC24_DATA_OFFSET _02310A94: .word 0x00001303 -_02310A98: .word 0x00000DBD +_02310A98: .word 0x00000DBD + OV29_0230FC24_DATA_OFFSET _02310A9C: .word ov10_022C46EC _02310AA0: .word 0x0000025F _02310AA4: .word ov10_022C46A0 @@ -1994,7 +2076,7 @@ _02310C28: ldr r1, _02310AF0 ; =LEECH_SEED_DAMAGE_COOLDOWN add r0, r0, r2, lsl #2 add r0, r0, #0x12000 - ldr r7, [r0, #0xb78] + ldr r7, [r0, #0xb78 + OV29_0230FC24_OFFSET_2] ldrsh r1, [r1] ldr r0, _02310AF4 ; =LEECH_SEED_HP_DRAIN cmp r7, #0 @@ -2094,13 +2176,21 @@ _02310DC4: cmp r0, #0 bne _02310FF4 _02310DE0: +#ifdef JAPAN + ldrb r0, [r4, #0x105] +#else ldrb r0, [r4, #0x106] +#endif cmp r0, #0 beq _02310E9C add r0, r4, #6 add r0, r0, #0x100 bl TickStatusTurnCounter +#ifdef JAPAN + ldrb r0, [r4, #0x105] +#else ldrb r0, [r4, #0x106] +#endif cmp r0, #0 bne _02310E9C mov r0, #0 @@ -2217,7 +2307,7 @@ _02310F70: strb r0, [r4, #0xd2] mov r1, r5 mov r2, r0 - strb r0, [r4, #0x154] + strb r0, [r4, #0x154 + OV29_0230FC24_OFFSET] bl SubstitutePlaceholderStringTags ldr r1, _0231100C ; =0x00000CBA mov r0, r5 @@ -2236,9 +2326,9 @@ _02310FF4: add sp, sp, #0x34 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} .align 2, 0 -_02310FFC: .word 0x00000DEB -_02311000: .word 0x00000DEC +_02310FFC: .word 0x00000DEB + OV29_0230FC24_DATA_OFFSET +_02311000: .word 0x00000DEC + OV29_0230FC24_DATA_OFFSET _02311004: .word 0x0000270F _02311008: .word 0x00000165 -_0231100C: .word 0x00000CBA +_0231100C: .word 0x00000CBA + OV29_0230FC24_DATA_OFFSET arm_func_end ov29_0230FC24 diff --git a/asm/overlay_29_02311034.s b/asm/overlay_29_02311034.s index 14444419..ddc041e2 100644 --- a/asm/overlay_29_02311034.s +++ b/asm/overlay_29_02311034.s @@ -27,13 +27,24 @@ ExclusiveItemEffectIsActive__02311064: ; 0x02311064 cmp r0, #0 movne r0, #0 ldmneia sp!, {r3, pc} +#ifdef JAPAN + add r0, r2, #0x224 +#else add r0, r2, #0x228 +#endif bl ExclusiveItemEffectFlagTest ldmia sp!, {r3, pc} arm_func_end ExclusiveItemEffectIsActive__02311064 arm_func_start TickStatusAndHealthRegen TickStatusAndHealthRegen: ; 0x02311088 +#ifdef JAPAN +#define TICK_STATUS_AND_HEALTH_REGEN_OFFSET -4 +#define TICK_STATUS_AND_HEALTH_REGEN_OFFSET_2 -1 +#else +#define TICK_STATUS_AND_HEALTH_REGEN_OFFSET 0 +#define TICK_STATUS_AND_HEALTH_REGEN_OFFSET_2 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} movs sl, r0 mov r4, #0 @@ -57,7 +68,7 @@ TickStatusAndHealthRegen: ; 0x02311088 cmp r0, #0 moveq r4, #1 _023110E0: - ldrb r0, [r7, #0x150] + ldrb r0, [r7, #0x150 + TICK_STATUS_AND_HEALTH_REGEN_OFFSET] cmp r0, #0 cmpeq r4, #0 bne _023112A8 @@ -150,10 +161,10 @@ _023111F4: cmp r3, r0 movgt r3, r0 add r0, r7, #0x200 - ldrsh r1, [r0, #0x10] - add r2, r7, #0x210 + ldrsh r1, [r0, #0x10 + TICK_STATUS_AND_HEALTH_REGEN_OFFSET] + add r2, r7, #0x210 + TICK_STATUS_AND_HEALTH_REGEN_OFFSET add r1, r1, r3 - strh r1, [r0, #0x10] + strh r1, [r0, #0x10 + TICK_STATUS_AND_HEALTH_REGEN_OFFSET] b _02311268 _02311250: ldrsh r1, [r7, #0x10] @@ -163,7 +174,7 @@ _02311250: sub r1, r1, r4 strh r1, [r2] _02311268: - ldrsh r1, [r0, #0x10] + ldrsh r1, [r0, #0x10 + TICK_STATUS_AND_HEALTH_REGEN_OFFSET] cmp r1, r4 bge _02311250 ldrsh r1, [r7, #0x12] @@ -188,9 +199,11 @@ _023112A8: ldrb r0, [r7, #0xbe] cmp r0, #0 bne _0231131C +#ifndef JAPAN ldr r0, [r7, #0x110] cmp r0, #1 ble _02311304 +#endif ldrb r0, [r7, #0xbd] cmp r0, #4 bne _02311304 @@ -461,16 +474,20 @@ _023116B4: bl IsFloorOver cmp r0, #0 ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [r7, #0x105] + ldrb r0, [r7, #0x105 + TICK_STATUS_AND_HEALTH_REGEN_OFFSET_2] cmp r0, #0 beq _0231174C +#ifdef JAPAN + add r0, r7, #0x104 +#else add r0, r7, #5 add r0, r0, #0x100 +#endif bl TickStatusTurnCounter - ldrb r0, [r7, #0x105] + ldrb r0, [r7, #0x105 + TICK_STATUS_AND_HEALTH_REGEN_OFFSET_2] cmp r0, #0 bne _0231174C - ldrb r0, [r7, #0x104] + ldrb r0, [r7, #0x104 + TICK_STATUS_AND_HEALTH_REGEN_OFFSET_2] cmp r0, #2 bne _02311720 mov r0, #0 @@ -493,31 +510,31 @@ _02311720: bl LogMessageByIdWithPopupCheckUser _02311744: mov r0, #0 - strb r0, [r7, #0x104] + strb r0, [r7, #0x104 + TICK_STATUS_AND_HEALTH_REGEN_OFFSET_2] _0231174C: mov r6, #0 - add r0, r7, #0x19 + add r0, r7, #0x19 + TICK_STATUS_AND_HEALTH_REGEN_OFFSET mov sb, r6 add r5, r0, #0x100 - add r4, r7, #0x114 + add r4, r7, #0x114 + TICK_STATUS_AND_HEALTH_REGEN_OFFSET mov fp, #1 _02311764: add r8, r7, sb - ldrb r0, [r8, #0x119] + ldrb r0, [r8, #0x119 + TICK_STATUS_AND_HEALTH_REGEN_OFFSET] cmp r0, #0 beq _02311788 add r0, r5, sb bl TickStatusTurnCounter - ldrb r0, [r8, #0x119] + ldrb r0, [r8, #0x119 + TICK_STATUS_AND_HEALTH_REGEN_OFFSET] cmp r0, #0 moveq r6, fp _02311788: - ldrb r0, [r8, #0x114] + ldrb r0, [r8, #0x114 + TICK_STATUS_AND_HEALTH_REGEN_OFFSET] cmp r0, #0 beq _023117A8 add r0, r4, sb bl TickStatusTurnCounter - ldrb r0, [r8, #0x114] + ldrb r0, [r8, #0x114 + TICK_STATUS_AND_HEALTH_REGEN_OFFSET] cmp r0, #0 moveq r6, #1 _023117A8: @@ -528,7 +545,7 @@ _023117A8: ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} ldr r1, [sl, #0xb4] mov r0, sl - ldr r5, [r1, #0x110] + ldr r5, [r1, #0x110 + TICK_STATUS_AND_HEALTH_REGEN_OFFSET] bl CalcSpeedStageWrapper mov r4, r0 cmp r5, r4 @@ -550,8 +567,13 @@ _02311808: .word RAIN_ABILITY_BONUS_REGEN _0231180C: .word ICE_BODY_BONUS_REGEN _02311810: .word ov10_022C4674 _02311814: .word 0x000003E7 +#ifdef JAPAN +_02311818: .word 0x00000A06 +_0231181C: .word 0x00000A07 +#else _02311818: .word 0x00000CC6 _0231181C: .word 0x00000CC7 +#endif _02311820: .word ov29_02353318 arm_func_end TickStatusAndHealthRegen diff --git a/asm/overlay_29_023118D8.s b/asm/overlay_29_023118D8.s index 28a527df..df05da8f 100644 --- a/asm/overlay_29_023118D8.s +++ b/asm/overlay_29_023118D8.s @@ -72,11 +72,16 @@ _023119B0: bl TryActivateQuickFeet ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 -_023119D0: .word 0x00000D09 -_023119D4: .word 0x00000D0A -_023119D8: .word 0x00000D06 -_023119DC: .word 0x00000D07 -_023119E0: .word 0x00000D04 +#ifdef JAPAN +#define TRY_INFLICT_SLEEP_STATUS_OFFSET -0x2C0 +#else +#define TRY_INFLICT_SLEEP_STATUS_OFFSET 0 +#endif +_023119D0: .word 0x00000D09 + TRY_INFLICT_SLEEP_STATUS_OFFSET +_023119D4: .word 0x00000D0A + TRY_INFLICT_SLEEP_STATUS_OFFSET +_023119D8: .word 0x00000D06 + TRY_INFLICT_SLEEP_STATUS_OFFSET +_023119DC: .word 0x00000D07 + TRY_INFLICT_SLEEP_STATUS_OFFSET +_023119E0: .word 0x00000D04 + TRY_INFLICT_SLEEP_STATUS_OFFSET arm_func_end TryInflictSleepStatus arm_func_start IsProtectedFromSleepClassStatus @@ -135,7 +140,9 @@ _02311AA0: mov r0, r8 mov r1, r7 mov r2, #0x36 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__02311B94 cmp r0, #0 beq _02311ADC @@ -152,7 +159,9 @@ _02311ADC: mov r0, r8 mov r1, r7 mov r2, #0x49 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__02311B94 cmp r0, #0 beq _02311B18 @@ -196,11 +205,16 @@ _02311B78: add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} .align 2, 0 -_02311B80: .word 0x00000DA4 -_02311B84: .word 0x00000DA5 -_02311B88: .word 0x00000DA6 -_02311B8C: .word 0x00000DB1 -_02311B90: .word 0x00000DC2 +#ifdef JAPAN +#define IS_PROTECTED_FROM_SLEEP_CLASS_STATUS_OFFSET -0x2C0 +#else +#define IS_PROTECTED_FROM_SLEEP_CLASS_STATUS_OFFSET 0 +#endif +_02311B80: .word 0x00000DA4 + IS_PROTECTED_FROM_SLEEP_CLASS_STATUS_OFFSET +_02311B84: .word 0x00000DA5 + IS_PROTECTED_FROM_SLEEP_CLASS_STATUS_OFFSET +_02311B88: .word 0x00000DA6 + IS_PROTECTED_FROM_SLEEP_CLASS_STATUS_OFFSET +_02311B8C: .word 0x00000DB1 + IS_PROTECTED_FROM_SLEEP_CLASS_STATUS_OFFSET +_02311B90: .word 0x00000DC2 + IS_PROTECTED_FROM_SLEEP_CLASS_STATUS_OFFSET arm_func_end IsProtectedFromSleepClassStatus arm_func_start DefenderAbilityIsActive__02311B94 @@ -220,7 +234,9 @@ DefenderAbilityIsActive__02311B94: ; 0x02311B94 and r1, r1, #0xff _02311BC8: cmp r1, #0 +#ifndef JAPAN cmpne r3, #0 +#endif beq _02311BE8 mov r1, #0x53 bl AbilityIsActiveVeneer @@ -289,7 +305,9 @@ TryInflictNightmareStatus: ; 0x02311C4C mov r0, r7 mov r1, r6 mov r2, #0x2f +#ifndef JAPAN mov r3, #1 +#endif strb r8, [r5, #0xbe] bl DefenderAbilityIsActive__02311B94 cmp r0, #0 @@ -338,9 +356,15 @@ _02311D4C: add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} .align 2, 0 +#ifdef JAPAN +_02311D54: .word 0x00000A4D +_02311D58: .word 0x00000A4C +_02311D5C: .word 0x00000A4E +#else _02311D54: .word 0x00000D0D _02311D58: .word 0x00000D0C _02311D5C: .word 0x00000D0E +#endif arm_func_end TryInflictNightmareStatus arm_func_start TryInflictNappingStatus @@ -371,7 +395,9 @@ TryInflictNappingStatus: ; 0x02311D60 mov r0, r8 mov r1, r7 mov r2, #0x2f +#ifndef JAPAN mov r3, #1 +#endif strb r6, [r5, #0xbe] bl DefenderAbilityIsActive__02311B94 cmp r0, #0 @@ -417,9 +443,15 @@ _02311E5C: add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} .align 2, 0 +#ifdef JAPAN +_02311E64: .word 0x00000A48 +_02311E68: .word 0x00000A45 +_02311E6C: .word 0x00000A4B +#else _02311E64: .word 0x00000D08 _02311E68: .word 0x00000D05 _02311E6C: .word 0x00000D0B +#endif arm_func_end TryInflictNappingStatus arm_func_start TryInflictYawningStatus @@ -470,7 +502,11 @@ _02311F10: bne _02311F2C mov r0, r6 mov r1, r5 +#ifdef JAPAN + mov r2, #0xa50 +#else mov r2, #0xd10 +#endif bl LogMessageByIdWithPopupCheckUserTarget b _02311F64 _02311F2C: @@ -496,9 +532,15 @@ _02311F6C: add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_02311F74: .word 0x00000A4F +_02311F78: .word 0x00000A52 +_02311F7C: .word 0x00000A51 +#else _02311F74: .word 0x00000D0F _02311F78: .word 0x00000D12 _02311F7C: .word 0x00000D11 +#endif arm_func_end TryInflictYawningStatus arm_func_start TryInflictSleeplessStatus @@ -533,9 +575,15 @@ TryInflictSleeplessStatus: ; 0x02311F80 add r0, r0, #1 strb r0, [r5, #0xbe] mov r1, #0xff +#ifdef JAPAN + strb r1, [r5, #0x174] + mov r0, r6 + strb r1, [r5, #0x173] +#else strb r1, [r5, #0x178] mov r0, r6 strb r1, [r5, #0x177] +#endif bl ov29_022E4BB4 mov r0, r6 mov r1, #8 @@ -563,9 +611,15 @@ _02312050: ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 _0231205C: .word ov10_022C4728 +#ifdef JAPAN +_02312060: .word 0x00000A53 +_02312064: .word 0x00000A55 +_02312068: .word 0x00000A54 +#else _02312060: .word 0x00000D13 _02312064: .word 0x00000D15 _02312068: .word 0x00000D14 +#endif arm_func_end TryInflictSleeplessStatus arm_func_start TryInflictPausedStatus @@ -653,10 +707,15 @@ _0231218C: mov r0, #1 ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 -_0231219C: .word 0x00000D16 -_023121A0: .word 0x00000D18 -_023121A4: .word 0x00000D17 -_023121A8: .word 0x00000D19 +#ifdef JAPAN +#define TRY_INFLICT_PAUSED_STATUS_OFFSET -0x2C0 +#else +#define TRY_INFLICT_PAUSED_STATUS_OFFSET 0 +#endif +_0231219C: .word 0x00000D16 + TRY_INFLICT_PAUSED_STATUS_OFFSET +_023121A0: .word 0x00000D18 + TRY_INFLICT_PAUSED_STATUS_OFFSET +_023121A4: .word 0x00000D17 + TRY_INFLICT_PAUSED_STATUS_OFFSET +_023121A8: .word 0x00000D19 + TRY_INFLICT_PAUSED_STATUS_OFFSET arm_func_end TryInflictPausedStatus arm_func_start TryInflictInfatuatedStatus @@ -690,7 +749,9 @@ TryInflictInfatuatedStatus: ; 0x023121AC mov r0, r5 mov r1, r4 mov r2, #0x29 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__02311B94 cmp r0, #0 beq _02312260 @@ -761,11 +822,16 @@ _0231231C: add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} .align 2, 0 -_02312324: .word 0x00000DA3 -_02312328: .word 0x00000DBB +#ifdef JAPAN +#define TRY_INFLICT_INFATUATED_STATUS_OFFSET -0x2C0 +#else +#define TRY_INFLICT_INFATUATED_STATUS_OFFSET 0 +#endif +_02312324: .word 0x00000DA3 + TRY_INFLICT_INFATUATED_STATUS_OFFSET +_02312328: .word 0x00000DBB + TRY_INFLICT_INFATUATED_STATUS_OFFSET _0231232C: .word ov10_022C4804 -_02312330: .word 0x00000D1A -_02312334: .word 0x00000D1B +_02312330: .word 0x00000D1A + TRY_INFLICT_INFATUATED_STATUS_OFFSET +_02312334: .word 0x00000D1B + TRY_INFLICT_INFATUATED_STATUS_OFFSET arm_func_end TryInflictInfatuatedStatus arm_func_start TryInflictBurnStatus @@ -804,7 +870,9 @@ TryInflictBurnStatus: ; 0x02312338 mov r0, sl mov r1, sb mov r2, #0x42 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__02311B94 cmp r0, #0 beq _023123F0 @@ -843,7 +911,11 @@ _02312424: ldr r1, _023125FC ; =SECONDARY_TERRAIN_TYPES ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrsh r0, [r0, #0x30] +#else ldrsh r0, [r0, #0xd4] +#endif ldrb r0, [r1, r0] cmp r0, #1 beq _0231247C @@ -958,16 +1030,21 @@ _023125E8: mov r0, #1 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 -_023125F0: .word 0x00000DAB -_023125F4: .word 0x00000DAC +#ifdef JAPAN +#define TRY_INFLICT_BURN_STATUS_OFFSET -0x2C0 +#else +#define TRY_INFLICT_BURN_STATUS_OFFSET 0 +#endif +_023125F0: .word 0x00000DAB + TRY_INFLICT_BURN_STATUS_OFFSET +_023125F4: .word 0x00000DAC + TRY_INFLICT_BURN_STATUS_OFFSET _023125F8: .word DUNGEON_PTR _023125FC: .word SECONDARY_TERRAIN_TYPES -_02312600: .word 0x00000DB9 +_02312600: .word 0x00000DB9 + TRY_INFLICT_BURN_STATUS_OFFSET _02312604: .word ov10_022C4874 -_02312608: .word 0x00000D1C -_0231260C: .word 0x00000D1D +_02312608: .word 0x00000D1C + TRY_INFLICT_BURN_STATUS_OFFSET +_0231260C: .word 0x00000D1D + TRY_INFLICT_BURN_STATUS_OFFSET _02312610: .word DIRECTIONS_XY -_02312614: .word 0x00000DC5 +_02312614: .word 0x00000DC5 + TRY_INFLICT_BURN_STATUS_OFFSET arm_func_end TryInflictBurnStatus arm_func_start TryInflictBurnStatusWholeTeam @@ -983,7 +1060,11 @@ _0231262C: add r0, r0, r7, lsl #2 str r6, [sp] add r0, r0, #0x12000 +#ifdef JAPAN + ldr r0, [r0, #0xa84] +#else ldr r0, [r0, #0xb28] +#endif mov r3, r5 mov r1, r0 bl TryInflictBurnStatus @@ -997,6 +1078,11 @@ _02312660: .word DUNGEON_PTR arm_func_start TryInflictPoisonedStatus TryInflictPoisonedStatus: ; 0x02312664 +#ifdef JAPAN +#define TRY_INFLICT_POISONED_STATUS_OFFSET -0x2C0 +#else +#define TRY_INFLICT_POISONED_STATUS_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} mov sb, r1 mov sl, r0 @@ -1037,7 +1123,7 @@ TryInflictPoisonedStatus: ; 0x02312664 beq _0231270C mov r0, sl mov r1, sb - mov r2, #0xdb0 + mov r2, #0xdb0 + TRY_INFLICT_POISONED_STATUS_OFFSET bl LogMessageByIdWithPopupCheckUserTarget _0231270C: mov r0, #0 @@ -1046,7 +1132,9 @@ _02312714: mov r0, sl mov r1, sb mov r2, #0x45 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__02311B94 cmp r0, #0 beq _02312750 @@ -1117,13 +1205,13 @@ _02312798: _0231281C: mov r0, sl mov r1, sb - mov r2, #0xd20 + mov r2, #0xd20 + TRY_INFLICT_POISONED_STATUS_OFFSET bl LogMessageByIdWithPopupCheckUserTarget b _02312840 _02312830: mov r0, sl mov r1, sb - add r2, r4, #0xd20 + add r2, r4, #0xd20 + TRY_INFLICT_POISONED_STATUS_OFFSET bl LogMessageByIdWithPopupCheckUserTarget _02312840: mov r0, sb @@ -1188,16 +1276,21 @@ _02312914: mov r0, #1 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 -_02312924: .word 0x00000DAD -_02312928: .word 0x00000DAE +_02312924: .word 0x00000DAD + TRY_INFLICT_POISONED_STATUS_OFFSET +_02312928: .word 0x00000DAE + TRY_INFLICT_POISONED_STATUS_OFFSET _0231292C: .word ov10_022C4878 -_02312930: .word 0x00000D1E +_02312930: .word 0x00000D1E + TRY_INFLICT_POISONED_STATUS_OFFSET _02312934: .word DIRECTIONS_XY -_02312938: .word 0x00000DC5 +_02312938: .word 0x00000DC5 + TRY_INFLICT_POISONED_STATUS_OFFSET arm_func_end TryInflictPoisonedStatus arm_func_start TryInflictBadlyPoisonedStatus TryInflictBadlyPoisonedStatus: ; 0x0231293C +#ifdef JAPAN +#define TRY_INFLICT_BADLY_POISONED_STATUS_OFFSET -0x2C0 +#else +#define TRY_INFLICT_BADLY_POISONED_STATUS_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} mov sb, r1 mov sl, r0 @@ -1238,7 +1331,7 @@ TryInflictBadlyPoisonedStatus: ; 0x0231293C beq _023129E4 mov r0, sl mov r1, sb - mov r2, #0xdb0 + mov r2, #0xdb0 + TRY_INFLICT_BADLY_POISONED_STATUS_OFFSET bl LogMessageByIdWithPopupCheckUserTarget _023129E4: mov r0, #0 @@ -1247,7 +1340,9 @@ _023129EC: mov r0, sl mov r1, sb mov r2, #0x45 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__02311B94 cmp r0, #0 beq _02312A28 @@ -1316,7 +1411,7 @@ _02312A70: _02312AEC: mov r0, sl mov r1, sb - add r2, r4, #0xd20 + add r2, r4, #0xd20 + TRY_INFLICT_BADLY_POISONED_STATUS_OFFSET bl LogMessageByIdWithPopupCheckUserTarget _02312AFC: mov r0, sb @@ -1381,16 +1476,21 @@ _02312BD0: mov r0, #1 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 -_02312BE0: .word 0x00000DAD -_02312BE4: .word 0x00000DAE +_02312BE0: .word 0x00000DAD + TRY_INFLICT_BADLY_POISONED_STATUS_OFFSET +_02312BE4: .word 0x00000DAE + TRY_INFLICT_BADLY_POISONED_STATUS_OFFSET _02312BE8: .word ov10_022C4880 -_02312BEC: .word 0x00000D1F +_02312BEC: .word 0x00000D1F + TRY_INFLICT_BADLY_POISONED_STATUS_OFFSET _02312BF0: .word DIRECTIONS_XY -_02312BF4: .word 0x00000DC5 +_02312BF4: .word 0x00000DC5 + TRY_INFLICT_BADLY_POISONED_STATUS_OFFSET arm_func_end TryInflictBadlyPoisonedStatus arm_func_start TryInflictFrozenStatus TryInflictFrozenStatus: ; 0x02312BF8 +#ifdef JAPAN +#define TRY_INFLICT_FROZEN_STATUS_OFFSET -0x2C0 +#else +#define TRY_INFLICT_FROZEN_STATUS_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r6, r1 mov r7, r0 @@ -1423,7 +1523,7 @@ TryInflictFrozenStatus: ; 0x02312BF8 mov r0, r7 mov r1, r6 mov r2, r5 - rsb r3, ip, #0xdc0 + rsb r3, ip, #0xdc0 + TRY_INFLICT_FROZEN_STATUS_OFFSET str ip, [sp] bl ExclusiveItemEffectIsActiveWithLogging cmp r0, #0 @@ -1431,7 +1531,9 @@ TryInflictFrozenStatus: ; 0x02312BF8 mov r0, r7 mov r1, r6 mov r2, #0x41 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__02311B94 cmp r0, #0 beq _02312CC4 @@ -1466,7 +1568,11 @@ _02312CF4: ldr r1, _02312E0C ; =SECONDARY_TERRAIN_TYPES ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrsh r0, [r0, #0x30] +#else ldrsh r0, [r0, #0xd4] +#endif ldrb r0, [r1, r0] cmp r0, #1 bne _02312D48 @@ -1482,7 +1588,7 @@ _02312D48: mov r0, r7 mov r1, r6 mov r2, r5 - rsb r3, ip, #0xdc0 + rsb r3, ip, #0xdc0 + TRY_INFLICT_FROZEN_STATUS_OFFSET str ip, [sp] bl ExclusiveItemEffectIsActiveWithLogging cmp r0, #0 @@ -1526,14 +1632,14 @@ _02312D88: bl LogMessageByIdWithPopupCheckUserTarget ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 -_02312E00: .word 0x00000DA8 -_02312E04: .word 0x00000DA9 +_02312E00: .word 0x00000DA8 + TRY_INFLICT_FROZEN_STATUS_OFFSET +_02312E04: .word 0x00000DA9 + TRY_INFLICT_FROZEN_STATUS_OFFSET _02312E08: .word DUNGEON_PTR _02312E0C: .word SECONDARY_TERRAIN_TYPES -_02312E10: .word 0x00000DAA +_02312E10: .word 0x00000DAA + TRY_INFLICT_FROZEN_STATUS_OFFSET _02312E14: .word ov10_022C4870 -_02312E18: .word 0x00000D22 -_02312E1C: .word 0x00000D23 +_02312E18: .word 0x00000D22 + TRY_INFLICT_FROZEN_STATUS_OFFSET +_02312E1C: .word 0x00000D23 + TRY_INFLICT_FROZEN_STATUS_OFFSET arm_func_end TryInflictFrozenStatus arm_func_start TryInflictConstrictionStatus @@ -1625,10 +1731,15 @@ _02312F58: mov r0, #1 ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 -_02312F68: .word 0x00000C9B +#ifdef JAPAN +#define TRY_INFLICT_CONSTRICTION_STATUS_OFFSET -0x2C0 +#else +#define TRY_INFLICT_CONSTRICTION_STATUS_OFFSET 0 +#endif +_02312F68: .word 0x00000C9B + TRY_INFLICT_CONSTRICTION_STATUS_OFFSET _02312F6C: .word ov10_022C48A0 -_02312F70: .word 0x00000D24 -_02312F74: .word 0x00000D25 +_02312F70: .word 0x00000D24 + TRY_INFLICT_CONSTRICTION_STATUS_OFFSET +_02312F74: .word 0x00000D25 + TRY_INFLICT_CONSTRICTION_STATUS_OFFSET arm_func_end TryInflictConstrictionStatus arm_func_start TryInflictShadowHoldStatus @@ -1659,7 +1770,9 @@ TryInflictShadowHoldStatus: ; 0x02312F78 mov r0, r6 mov r1, r5 mov r2, #0x2b +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__02311B94 cmp r0, #0 beq _0231302C @@ -1745,11 +1858,16 @@ _0231310C: mov r0, #1 ldmia sp!, {r4, r5, r6, pc} .align 2, 0 -_0231311C: .word 0x00000D28 -_02313120: .word 0x00000C9B +#ifdef JAPAN +#define TRY_INFLICT_SHADOW_HOLD_STATUS_OFFSET -0x2C0 +#else +#define TRY_INFLICT_SHADOW_HOLD_STATUS_OFFSET 0 +#endif +_0231311C: .word 0x00000D28 + TRY_INFLICT_SHADOW_HOLD_STATUS_OFFSET +_02313120: .word 0x00000C9B + TRY_INFLICT_SHADOW_HOLD_STATUS_OFFSET _02313124: .word ov10_022C4898 -_02313128: .word 0x00000D26 -_0231312C: .word 0x00000D27 +_02313128: .word 0x00000D26 + TRY_INFLICT_SHADOW_HOLD_STATUS_OFFSET +_0231312C: .word 0x00000D27 + TRY_INFLICT_SHADOW_HOLD_STATUS_OFFSET arm_func_end TryInflictShadowHoldStatus arm_func_start TryInflictIngrainStatus @@ -1805,12 +1923,22 @@ _023131DC: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _023131E8: .word ov10_022C48B8 +#ifdef JAPAN +_023131EC: .word 0x00000A69 +_023131F0: .word 0x00000A6A +#else _023131EC: .word 0x00000D29 _023131F0: .word 0x00000D2A +#endif arm_func_end TryInflictIngrainStatus arm_func_start TryInflictWrappedStatus TryInflictWrappedStatus: ; 0x023131F4 +#ifdef JAPAN +#define TRY_INFLICT_WRAPPED_STATUS_OFFSET -0x2C0 +#else +#define TRY_INFLICT_WRAPPED_STATUS_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r6, r1 mov r7, r0 @@ -1859,18 +1987,18 @@ TryInflictWrappedStatus: ; 0x023131F4 ldr r1, [r3] mov r0, r7 add r1, r1, #0x3000 - ldr r2, [r1, #0xe30] + ldr r2, [r1, #0xe30 + TRY_INFLICT_WRAPPED_STATUS_OFFSET] mov r1, r6 str r2, [r4, #0xb4] ldr r2, [r3] add r2, r2, #0x3000 - ldr r2, [r2, #0xe30] + ldr r2, [r2, #0xe30 + TRY_INFLICT_WRAPPED_STATUS_OFFSET] str r2, [r5, #0xb4] ldr r2, [r3] add r2, r2, #0x3000 - ldr r3, [r2, #0xe30] + ldr r3, [r2, #0xe30 + TRY_INFLICT_WRAPPED_STATUS_OFFSET] add r3, r3, #1 - str r3, [r2, #0xe30] + str r3, [r2, #0xe30 + TRY_INFLICT_WRAPPED_STATUS_OFFSET] bl ov29_022E4290 mov r0, #0 mov r1, r6 @@ -1941,9 +2069,9 @@ _023133D0: .align 2, 0 _023133DC: .word ov10_022C48AC _023133E0: .word DUNGEON_PTR -_023133E4: .word 0x00000D2B -_023133E8: .word 0x00000D2C -_023133EC: .word 0x00000D2D +_023133E4: .word 0x00000D2B + TRY_INFLICT_WRAPPED_STATUS_OFFSET +_023133E8: .word 0x00000D2C + TRY_INFLICT_WRAPPED_STATUS_OFFSET +_023133EC: .word 0x00000D2D + TRY_INFLICT_WRAPPED_STATUS_OFFSET arm_func_end TryInflictWrappedStatus arm_func_start FreeOtherWrappedMonsters @@ -1958,7 +2086,11 @@ _02313408: ldr r0, [r7] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r5, [r0, #0xad4] +#else ldr r5, [r0, #0xb78] +#endif mov r0, r5 bl EntityIsValid__023118B4 cmp r0, #0 @@ -2068,7 +2200,11 @@ _0231358C: ldr r0, [r6] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr sb, [r0, #0xa84] +#else ldr sb, [r0, #0xb28] +#endif mov r0, sb bl EntityIsValid__023118B4 cmp r0, #0 @@ -2093,8 +2229,13 @@ _023135DC: .align 2, 0 _023135E8: .word ov10_022C479C _023135EC: .word ov10_022C47A0 +#ifdef JAPAN +_023135F0: .word 0x00000A72 +_023135F4: .word 0x00000A73 +#else _023135F0: .word 0x00000D32 _023135F4: .word 0x00000D33 +#endif _023135F8: .word DUNGEON_PTR arm_func_end TryInflictPetrifiedStatus @@ -2160,7 +2301,9 @@ _023136D4: mov r0, r8 mov r1, r7 mov r2, #9 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__02311B94 cmp r0, #0 beq _02313720 @@ -2236,18 +2379,28 @@ _023137E8: add sp, sp, #0x10 bx lr .align 2, 0 -_023137F4: .word 0x00000DCB -_023137F8: .word 0x00000DCA -_023137FC: .word 0x00000DB2 -_02313800: .word 0x00000D9E -_02313804: .word 0x00000DCD -_02313808: .word 0x00000DCC -_0231380C: .word 0x00000D91 -_02313810: .word 0x00000DD9 +#ifdef JAPAN +#define LOWER_OFFENSIVE_STAT_OFFSET -0x2C0 +#else +#define LOWER_OFFENSIVE_STAT_OFFSET 0 +#endif +_023137F4: .word 0x00000DCB + LOWER_OFFENSIVE_STAT_OFFSET +_023137F8: .word 0x00000DCA + LOWER_OFFENSIVE_STAT_OFFSET +_023137FC: .word 0x00000DB2 + LOWER_OFFENSIVE_STAT_OFFSET +_02313800: .word 0x00000D9E + LOWER_OFFENSIVE_STAT_OFFSET +_02313804: .word 0x00000DCD + LOWER_OFFENSIVE_STAT_OFFSET +_02313808: .word 0x00000DCC + LOWER_OFFENSIVE_STAT_OFFSET +_0231380C: .word 0x00000D91 + LOWER_OFFENSIVE_STAT_OFFSET +_02313810: .word 0x00000DD9 + LOWER_OFFENSIVE_STAT_OFFSET arm_func_end LowerOffensiveStat arm_func_start LowerDefensiveStat LowerDefensiveStat: ; 0x02313814 +#ifdef JAPAN +#define LOWER_DEFENSIVE_STAT_OFFSET -0x2C0 +#else +#define LOWER_DEFENSIVE_STAT_OFFSET 0 +#endif stmdb sp!, {r0, r1, r2, r3} stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r7, r1 @@ -2333,7 +2486,7 @@ _0231392C: add r3, r6, r1, lsl #1 mov r0, r8 mov r1, r7 - mov r2, #0xd90 + mov r2, #0xd90 + LOWER_DEFENSIVE_STAT_OFFSET strh r4, [r3, #0x28] bl LogMessageByIdWithPopupCheckUserTarget b _02313974 @@ -2350,11 +2503,11 @@ _0231397C: add sp, sp, #0x10 bx lr .align 2, 0 -_02313988: .word 0x00000DC9 -_0231398C: .word 0x00000DC8 -_02313990: .word 0x00000DCD -_02313994: .word 0x00000DCC -_02313998: .word 0x00000DD7 +_02313988: .word 0x00000DC9 + LOWER_DEFENSIVE_STAT_OFFSET +_0231398C: .word 0x00000DC8 + LOWER_DEFENSIVE_STAT_OFFSET +_02313990: .word 0x00000DCD + LOWER_DEFENSIVE_STAT_OFFSET +_02313994: .word 0x00000DCC + LOWER_DEFENSIVE_STAT_OFFSET +_02313998: .word 0x00000DD7 + LOWER_DEFENSIVE_STAT_OFFSET arm_func_end LowerDefensiveStat arm_func_start BoostOffensiveStat @@ -2452,12 +2605,17 @@ _02313AE4: add sp, sp, #0x10 bx lr .align 2, 0 -_02313AF0: .word 0x00000DCB -_02313AF4: .word 0x00000DCA -_02313AF8: .word 0x00000DCD -_02313AFC: .word 0x00000DCC -_02313B00: .word 0x00000D8F -_02313B04: .word 0x00000DD8 +#ifdef JAPAN +#define BOOST_OFFENSIVE_STAT_OFFSET -0x2C0 +#else +#define BOOST_OFFENSIVE_STAT_OFFSET 0 +#endif +_02313AF0: .word 0x00000DCB + BOOST_OFFENSIVE_STAT_OFFSET +_02313AF4: .word 0x00000DCA + BOOST_OFFENSIVE_STAT_OFFSET +_02313AF8: .word 0x00000DCD + BOOST_OFFENSIVE_STAT_OFFSET +_02313AFC: .word 0x00000DCC + BOOST_OFFENSIVE_STAT_OFFSET +_02313B00: .word 0x00000D8F + BOOST_OFFENSIVE_STAT_OFFSET +_02313B04: .word 0x00000DD8 + BOOST_OFFENSIVE_STAT_OFFSET arm_func_end BoostOffensiveStat arm_func_start BoostDefensiveStat @@ -2555,12 +2713,17 @@ _02313C50: add sp, sp, #0x10 bx lr .align 2, 0 -_02313C5C: .word 0x00000DC9 -_02313C60: .word 0x00000DC8 -_02313C64: .word 0x00000DCD -_02313C68: .word 0x00000DCC -_02313C6C: .word 0x00000D8E -_02313C70: .word 0x00000DD6 +#ifdef JAPAN +#define BOOST_DEFENSIVE_STAT_OFFSET -0x2C0 +#else +#define BOOST_DEFENSIVE_STAT_OFFSET 0 +#endif +_02313C5C: .word 0x00000DC9 + BOOST_DEFENSIVE_STAT_OFFSET +_02313C60: .word 0x00000DC8 + BOOST_DEFENSIVE_STAT_OFFSET +_02313C64: .word 0x00000DCD + BOOST_DEFENSIVE_STAT_OFFSET +_02313C68: .word 0x00000DCC + BOOST_DEFENSIVE_STAT_OFFSET +_02313C6C: .word 0x00000D8E + BOOST_DEFENSIVE_STAT_OFFSET +_02313C70: .word 0x00000DD6 + BOOST_DEFENSIVE_STAT_OFFSET arm_func_end BoostDefensiveStat arm_func_start FlashFireShouldActivate @@ -2582,7 +2745,9 @@ FlashFireShouldActivate: ; 0x02313C74 mov r0, r5 mov r1, r4 mov r2, #0x48 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__02311B94 cmp r0, #0 moveq r0, #0 @@ -2625,6 +2790,11 @@ _02313D34: arm_func_start ApplyOffensiveStatMultiplier ApplyOffensiveStatMultiplier: ; 0x02313D40 +#ifdef JAPAN +#define APPLY_OFFENSIVE_STAT_MULTIPLIER_OFFSET -0x2C0 +#else +#define APPLY_OFFENSIVE_STAT_MULTIPLIER_OFFSET 0 +#endif stmdb sp!, {r0, r1, r2, r3} stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} mov r8, r1 @@ -2683,7 +2853,9 @@ _02313E0C: mov r0, sb mov r1, r8 mov r2, #9 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__02311B94 cmp r0, #0 beq _02313E6C @@ -2751,7 +2923,7 @@ _02313F0C: bge _02313F24 mov r0, sb mov r1, r8 - mov r2, #0xdd0 + mov r2, #0xdd0 + APPLY_OFFENSIVE_STAT_MULTIPLIER_OFFSET bl LogMessageByIdWithPopupCheckUserTarget b _02313F34 _02313F24: @@ -2767,13 +2939,13 @@ _02313F3C: add sp, sp, #0x10 bx lr .align 2, 0 -_02313F48: .word 0x00000DCB -_02313F4C: .word 0x00000DCA -_02313F50: .word 0x00000DB2 -_02313F54: .word 0x00000D9E +_02313F48: .word 0x00000DCB + APPLY_OFFENSIVE_STAT_MULTIPLIER_OFFSET +_02313F4C: .word 0x00000DCA + APPLY_OFFENSIVE_STAT_MULTIPLIER_OFFSET +_02313F50: .word 0x00000DB2 + APPLY_OFFENSIVE_STAT_MULTIPLIER_OFFSET +_02313F54: .word 0x00000D9E + APPLY_OFFENSIVE_STAT_MULTIPLIER_OFFSET _02313F58: .word 0x000063FD -_02313F5C: .word 0x00000DD1 -_02313F60: .word 0x00000DD3 +_02313F5C: .word 0x00000DD1 + APPLY_OFFENSIVE_STAT_MULTIPLIER_OFFSET +_02313F60: .word 0x00000DD3 + APPLY_OFFENSIVE_STAT_MULTIPLIER_OFFSET arm_func_end ApplyOffensiveStatMultiplier arm_func_start ApplyDefensiveStatMultiplier @@ -2878,12 +3050,17 @@ _023140C0: add sp, sp, #0x10 bx lr .align 2, 0 -_023140CC: .word 0x00000DC9 -_023140D0: .word 0x00000DC8 +#ifdef JAPAN +#define APPLY_DEFENSIVE_STAT_MULTIPLIER_OFFSET -0x2C0 +#else +#define APPLY_DEFENSIVE_STAT_MULTIPLIER_OFFSET 0 +#endif +_023140CC: .word 0x00000DC9 + APPLY_DEFENSIVE_STAT_MULTIPLIER_OFFSET +_023140D0: .word 0x00000DC8 + APPLY_DEFENSIVE_STAT_MULTIPLIER_OFFSET _023140D4: .word 0x000063FD -_023140D8: .word 0x00000DCF -_023140DC: .word 0x00000DCE -_023140E0: .word 0x00000DD2 +_023140D8: .word 0x00000DCF + APPLY_DEFENSIVE_STAT_MULTIPLIER_OFFSET +_023140DC: .word 0x00000DCE + APPLY_DEFENSIVE_STAT_MULTIPLIER_OFFSET +_023140E0: .word 0x00000DD2 + APPLY_DEFENSIVE_STAT_MULTIPLIER_OFFSET arm_func_end ApplyDefensiveStatMultiplier arm_func_start BoostHitChanceStat @@ -2972,11 +3149,16 @@ _0231420C: add sp, sp, #0x10 bx lr .align 2, 0 -_02314218: .word 0x00000DC7 -_0231421C: .word 0x00000DC6 -_02314220: .word 0x00000D95 -_02314224: .word 0x00000D93 -_02314228: .word 0x00000DD5 +#ifdef JAPAN +#define BOOST_HIT_CHANCE_STAT_OFFSET -0x2C0 +#else +#define BOOST_HIT_CHANCE_STAT_OFFSET 0 +#endif +_02314218: .word 0x00000DC7 + BOOST_HIT_CHANCE_STAT_OFFSET +_0231421C: .word 0x00000DC6 + BOOST_HIT_CHANCE_STAT_OFFSET +_02314220: .word 0x00000D95 + BOOST_HIT_CHANCE_STAT_OFFSET +_02314224: .word 0x00000D93 + BOOST_HIT_CHANCE_STAT_OFFSET +_02314228: .word 0x00000DD5 + BOOST_HIT_CHANCE_STAT_OFFSET arm_func_end BoostHitChanceStat arm_func_start LowerHitChanceStat @@ -3020,7 +3202,9 @@ _0231429C: mov r0, r7 mov r1, r6 mov r2, #0x1e +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__02311B94 cmp r0, #0 beq _02314308 @@ -3094,12 +3278,17 @@ _023143C4: add sp, sp, #0x10 bx lr .align 2, 0 -_023143D0: .word 0x00000DC7 -_023143D4: .word 0x00000DC6 -_023143D8: .word 0x00000D9F -_023143DC: .word 0x00000D94 -_023143E0: .word 0x00000D92 -_023143E4: .word 0x00000DD4 +#ifdef JAPAN +#define LOWER_HIT_CHANCE_STAT_OFFSET -0x2C0 +#else +#define LOWER_HIT_CHANCE_STAT_OFFSET 0 +#endif +_023143D0: .word 0x00000DC7 + LOWER_HIT_CHANCE_STAT_OFFSET +_023143D4: .word 0x00000DC6 + LOWER_HIT_CHANCE_STAT_OFFSET +_023143D8: .word 0x00000D9F + LOWER_HIT_CHANCE_STAT_OFFSET +_023143DC: .word 0x00000D94 + LOWER_HIT_CHANCE_STAT_OFFSET +_023143E0: .word 0x00000D92 + LOWER_HIT_CHANCE_STAT_OFFSET +_023143E4: .word 0x00000DD4 + LOWER_HIT_CHANCE_STAT_OFFSET arm_func_end LowerHitChanceStat arm_func_start TryInflictCringeStatus @@ -3132,7 +3321,9 @@ TryInflictCringeStatus: ; 0x023143E8 mov r0, r7 mov r1, r6 mov r2, #0x1f +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__02311B94 cmp r0, #0 beq _02314498 @@ -3192,14 +3383,24 @@ _02314524: mov r0, #1 ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 -_02314534: .word 0x00000DA2 +#ifdef JAPAN +#define TRY_INFLICT_CRINGE_STATUS_OFFSET -0x2C0 +#else +#define TRY_INFLICT_CRINGE_STATUS_OFFSET 0 +#endif +_02314534: .word 0x00000DA2 + TRY_INFLICT_CRINGE_STATUS_OFFSET _02314538: .word ov10_022C4884 -_0231453C: .word 0x00000D02 -_02314540: .word 0x00000D03 +_0231453C: .word 0x00000D02 + TRY_INFLICT_CRINGE_STATUS_OFFSET +_02314540: .word 0x00000D03 + TRY_INFLICT_CRINGE_STATUS_OFFSET arm_func_end TryInflictCringeStatus arm_func_start TryInflictParalysisStatus TryInflictParalysisStatus: ; 0x02314544 +#ifdef JAPAN +#define TRY_INFLICT_PARALYSIS_STATUS_OFFSET -0x2C0 +#else +#define TRY_INFLICT_PARALYSIS_STATUS_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0xc mov sb, r1 @@ -3228,7 +3429,9 @@ TryInflictParalysisStatus: ; 0x02314544 mov r0, sl mov r1, sb mov r2, #0x16 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__02311B94 cmp r0, #0 beq _023145F4 @@ -3240,7 +3443,7 @@ TryInflictParalysisStatus: ; 0x02314544 beq _023145EC mov r0, sl mov r1, sb - mov r2, #0xda0 + mov r2, #0xda0 + TRY_INFLICT_PARALYSIS_STATUS_OFFSET bl LogMessageByIdWithPopupCheckUserTarget _023145EC: mov r0, #0 @@ -3296,7 +3499,7 @@ _02314654: strb r4, [r7, #0xc1] mov r0, sl mov r1, sb - mov r2, #0xd00 + mov r2, #0xd00 + TRY_INFLICT_PARALYSIS_STATUS_OFFSET strb r4, [r7, #0xc2] bl LogMessageByIdWithPopupCheckUserTarget mov r0, sb @@ -3377,11 +3580,11 @@ _023147D0: add sp, sp, #0xc ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 -_023147D8: .word 0x00000DA1 +_023147D8: .word 0x00000DA1 + TRY_INFLICT_PARALYSIS_STATUS_OFFSET _023147DC: .word ov10_022C4894 -_023147E0: .word 0x00000D01 +_023147E0: .word 0x00000D01 + TRY_INFLICT_PARALYSIS_STATUS_OFFSET _023147E4: .word DIRECTIONS_XY -_023147E8: .word 0x00000DC5 +_023147E8: .word 0x00000DC5 + TRY_INFLICT_PARALYSIS_STATUS_OFFSET arm_func_end TryInflictParalysisStatus arm_func_start ExclusiveItemEffectIsActive__023147EC @@ -3392,13 +3595,22 @@ ExclusiveItemEffectIsActive__023147EC: ; 0x023147EC cmp r0, #0 movne r0, #0 ldmneia sp!, {r3, pc} +#ifdef JAPAN + add r0, r2, #0x224 +#else add r0, r2, #0x228 +#endif bl ExclusiveItemEffectFlagTest ldmia sp!, {r3, pc} arm_func_end ExclusiveItemEffectIsActive__023147EC arm_func_start BoostSpeed BoostSpeed: ; 0x02314810 +#ifdef JAPAN +#define BOOST_SPEED_OFFSET -4 +#else +#define BOOST_SPEED_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} mov r8, r1 mov sb, r0 @@ -3440,9 +3652,9 @@ _0231489C: b _023148BC _023148A4: add r1, r5, r2 - ldrb r0, [r1, #0x114] + ldrb r0, [r1, #0x114 + BOOST_SPEED_OFFSET] cmp r0, #0 - streqb r6, [r1, #0x114] + streqb r6, [r1, #0x114 + BOOST_SPEED_OFFSET] beq _023148C4 add r2, r2, #1 _023148BC: @@ -3472,15 +3684,20 @@ _023148F0: mov r0, #1 strb r0, [r5, #0x101] mov r0, #0 - strb r0, [r5, #0x152] + strb r0, [r5, #0x152 + BOOST_SPEED_OFFSET] _02314920: mov r0, r8 bl UpdateStatusIconFlags ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 _0231492C: .word SPEED_BOOST_TURN_RANGE +#ifdef JAPAN +_02314930: .word 0x00000B1B +_02314934: .word 0x00000B1A +#else _02314930: .word 0x00000DDB _02314934: .word 0x00000DDA +#endif _02314938: .word ov29_02353318 arm_func_end BoostSpeed @@ -3541,7 +3758,11 @@ _023149F0: b _02314A28 _023149F8: add r6, r4, r1 +#ifdef JAPAN + ldrb r0, [r6, #0x115] +#else ldrb r0, [r6, #0x119] +#endif cmp r0, #0 bne _02314A24 ldr r1, _02314AB0 ; =ov10_022C488C @@ -3549,7 +3770,11 @@ _023149F8: mov r2, #1 bl CalcStatusDuration add r0, r0, #1 +#ifdef JAPAN + strb r0, [r6, #0x115] +#else strb r0, [r6, #0x119] +#endif b _02314A30 _02314A24: add r1, r1, #1 @@ -3592,9 +3817,15 @@ _02314AA0: bl UpdateStatusIconFlags ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +_02314AAC: .word 0x00000B1C +_02314AB0: .word ov10_022C488C +_02314AB4: .word 0x00000B1A +#else _02314AAC: .word 0x00000DDC _02314AB0: .word ov10_022C488C _02314AB4: .word 0x00000DDA +#endif _02314AB8: .word ov29_02353318 arm_func_end LowerSpeed @@ -3622,7 +3853,11 @@ TrySealMove: ; 0x02314ABC bne _02314C18 ldr r0, [r7, #0xb4] mov r4, r5 +#ifdef JAPAN + add ip, r0, #0x120 +#else add ip, r0, #0x124 +#endif mov lr, r4 mov r2, r5 mov r3, #1 @@ -3697,9 +3932,15 @@ _02314C18: add sp, sp, #0x14 ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} .align 2, 0 +#ifdef JAPAN +_02314C20: .word 0x00000AFE +_02314C24: .word 0x00000B23 +_02314C28: .word 0x00000B24 +#else _02314C20: .word 0x00000DBE _02314C24: .word 0x00000DE3 _02314C28: .word 0x00000DE4 +#endif arm_func_end TrySealMove arm_func_start BoostOrLowerSpeed @@ -3770,7 +4011,11 @@ _02314CF4: beq _02314D20 mov r0, r6 mov r1, r5 +#ifdef JAPAN + mov r2, #0xaa0 +#else mov r2, #0xd60 +#endif bl LogMessageByIdWithPopupCheckUserTarget b _02314D30 _02314D20: @@ -3783,7 +4028,11 @@ _02314D30: bl UpdateStatusIconFlags ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 +#ifdef JAPAN +_02314D3C: .word 0x00000AA1 +#else _02314D3C: .word 0x00000D61 +#endif arm_func_end ResetHitChanceStat arm_func_start ExclusiveItemEffectIsActiveWithLogging @@ -3882,9 +4131,15 @@ TryInflictTerrifiedStatus: ; 0x02314E60 mov r3, #1 mov r5, r0 ldrsh r1, [r2] +#ifdef JAPAN + strb r3, [ip, #0x103] + mov r0, r4 + strb r1, [ip, #0x104] +#else strb r3, [ip, #0x104] mov r0, r4 strb r1, [ip, #0x105] +#endif bl ov29_022E60E4 mov r0, #0 mov r1, r4 @@ -3897,7 +4152,11 @@ TryInflictTerrifiedStatus: ; 0x02314E60 ldmia sp!, {r3, r4, r5, pc} .align 2, 0 _02314EB0: .word ov10_022C4618 +#ifdef JAPAN +_02314EB4: .word 0x00000B25 +#else _02314EB4: .word 0x00000DE5 +#endif arm_func_end TryInflictTerrifiedStatus arm_func_start TryInflictGrudgeStatus @@ -3928,15 +4187,26 @@ _02314F04: bl UpdateStatusIconFlags cmp r6, #0 beq _02314F2C +#ifdef JAPAN + ldr r2, _0231640C ; =0x00000C12 + mov r0, r8 + mov r1, r7 +#else mov r0, r8 mov r1, r7 mov r2, #0xed0 +#endif bl LogMessageByIdWithPopupCheckUserTarget _02314F2C: mov r0, r4 ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 +#ifdef JAPAN +_02314F34: .word 0x00000C13 +_0231640C: .word 0x00000C12 +#else _02314F34: .word 0x00000ED1 +#endif arm_func_end TryInflictGrudgeStatus arm_func_start TryInflictConfusedStatus @@ -4065,10 +4335,15 @@ _023150F0: mov r0, #1 ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 -_02315100: .word 0x00000DAF -_02315104: .word 0x00000DBA -_02315108: .word 0x00000DA7 +#ifdef JAPAN +#define TRY_INFLICT_CONFUSED_STATUS_OFFSET -0x2C0 +#else +#define TRY_INFLICT_CONFUSED_STATUS_OFFSET 0 +#endif +_02315100: .word 0x00000DAF + TRY_INFLICT_CONFUSED_STATUS_OFFSET +_02315104: .word 0x00000DBA + TRY_INFLICT_CONFUSED_STATUS_OFFSET +_02315108: .word 0x00000DA7 + TRY_INFLICT_CONFUSED_STATUS_OFFSET _0231510C: .word ov10_022C4890 -_02315110: .word 0x00000CFE -_02315114: .word 0x00000CFF +_02315110: .word 0x00000CFE + TRY_INFLICT_CONFUSED_STATUS_OFFSET +_02315114: .word 0x00000CFF + TRY_INFLICT_CONFUSED_STATUS_OFFSET arm_func_end TryInflictConfusedStatus diff --git a/asm/overlay_29_0231513C.s b/asm/overlay_29_0231513C.s index a8dcb08b..e8bf68c0 100644 --- a/asm/overlay_29_0231513C.s +++ b/asm/overlay_29_0231513C.s @@ -86,8 +86,13 @@ _02315250: ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 _02315260: .word ov10_022C47B0 +#ifdef JAPAN +_02315264: .word 0x00000A83 +_02315268: .word 0x00000A84 +#else _02315264: .word 0x00000D43 _02315268: .word 0x00000D44 +#endif arm_func_end TryInflictCoweringStatus arm_func_start TryRestoreHp @@ -339,15 +344,20 @@ _023155E4: mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 -_023155EC: .word 0x00000D83 +#ifdef JAPAN +#define TRY_INCREASE_HP_OFFSET -0x2C0 +#else +#define TRY_INCREASE_HP_OFFSET 0 +#endif +_023155EC: .word 0x00000D83 + TRY_INCREASE_HP_OFFSET _023155F0: .word ov10_022C4470 _023155F4: .word 0x000003E7 -_023155F8: .word 0x00000CFD -_023155FC: .word 0x00000CFA -_02315600: .word 0x00000CFB -_02315604: .word 0x00000CFC -_02315608: .word 0x00000CF9 -_0231560C: .word 0x00000CF8 +_023155F8: .word 0x00000CFD + TRY_INCREASE_HP_OFFSET +_023155FC: .word 0x00000CFA + TRY_INCREASE_HP_OFFSET +_02315600: .word 0x00000CFB + TRY_INCREASE_HP_OFFSET +_02315604: .word 0x00000CFC + TRY_INCREASE_HP_OFFSET +_02315608: .word 0x00000CF9 + TRY_INCREASE_HP_OFFSET +_0231560C: .word 0x00000CF8 + TRY_INCREASE_HP_OFFSET arm_func_end TryIncreaseHp arm_func_start RevealItems @@ -388,8 +398,13 @@ _02315650: bl UpdateStatusIconFlags ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_02315698: .word 0x00000A24 +_0231569C: .word 0x00000A22 +#else _02315698: .word 0x00000CE4 _0231569C: .word 0x00000CE2 +#endif arm_func_end RevealItems arm_func_start RevealStairs @@ -441,9 +456,15 @@ _02315700: bl UpdateStatusIconFlags ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_02315750: .word 0x00000A26 +_02315754: .word 0x00000A25 +_02315758: .word 0x00000A23 +#else _02315750: .word 0x00000CE6 _02315754: .word 0x00000CE5 _02315758: .word 0x00000CE3 +#endif arm_func_end RevealStairs arm_func_start RevealEnemies @@ -484,12 +505,22 @@ _0231579C: bl UpdateStatusIconFlags ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_023157E4: .word 0x00000A2A +_023157E8: .word 0x00000A29 +#else _023157E4: .word 0x00000CEA _023157E8: .word 0x00000CE9 +#endif arm_func_end RevealEnemies arm_func_start TryInflictLeechSeedStatus TryInflictLeechSeedStatus: ; 0x023157EC +#ifdef JAPAN +#define TRY_INFLICT_LEECH_SEED_STATUS_OFFSET -0x2C0 +#else +#define TRY_INFLICT_LEECH_SEED_STATUS_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r5, r1 mov r6, r0 @@ -595,7 +626,11 @@ _02315960: ldr r0, [r1] add r0, r0, r2, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r0, [r0, #0xad4] +#else ldr r0, [r0, #0xb78] +#endif cmp r6, r0 streqb r2, [r4, #0xe8] ldreq r0, [r6, #0xb4] @@ -606,7 +641,7 @@ _02315960: blt _02315960 mov r0, r6 mov r1, r5 - mov r2, #0xce0 + mov r2, #0xce0 + TRY_INFLICT_LEECH_SEED_STATUS_OFFSET bl LogMessageByIdWithPopupCheckUserTarget mov r0, r6 mov r1, r5 @@ -616,11 +651,11 @@ _02315960: mov r0, #1 ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 -_023159BC: .word 0x00000DE1 -_023159C0: .word 0x00000DE2 -_023159C4: .word 0x00000CAF +_023159BC: .word 0x00000DE1 + TRY_INFLICT_LEECH_SEED_STATUS_OFFSET +_023159C0: .word 0x00000DE2 + TRY_INFLICT_LEECH_SEED_STATUS_OFFSET +_023159C4: .word 0x00000CAF + TRY_INFLICT_LEECH_SEED_STATUS_OFFSET _023159C8: .word ov10_022C4790 -_023159CC: .word 0x00000CE1 +_023159CC: .word 0x00000CE1 + TRY_INFLICT_LEECH_SEED_STATUS_OFFSET _023159D0: .word DUNGEON_PTR arm_func_end TryInflictLeechSeedStatus @@ -635,7 +670,11 @@ _023159E8: ldr r0, [r7] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r6, [r0, #0xad4] +#else ldr r6, [r0, #0xb78] +#endif mov r0, r6 bl EntityIsValid__02315118 cmp r0, #0 @@ -719,7 +758,11 @@ _02315B10: ldr r0, [r1] add r0, r0, r2, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r0, [r0, #0xad4] +#else ldr r0, [r0, #0xb78] +#endif cmp r5, r0 streqb r2, [r4, #0xe8] ldreq r0, [r5, #0xb4] @@ -736,11 +779,16 @@ _02315B10: bl UpdateStatusIconFlags ldmia sp!, {r4, r5, r6, pc} .align 2, 0 -_02315B5C: .word 0x00000C94 +#ifdef JAPAN +#define TRY_INFLICT_DESTINY_BOND_OFFSET -0x2C0 +#else +#define TRY_INFLICT_DESTINY_BOND_OFFSET 0 +#endif +_02315B5C: .word 0x00000C94 + TRY_INFLICT_DESTINY_BOND_OFFSET _02315B60: .word ov10_022C47D4 -_02315B64: .word 0x00000D54 +_02315B64: .word 0x00000D54 + TRY_INFLICT_DESTINY_BOND_OFFSET _02315B68: .word DUNGEON_PTR -_02315B6C: .word 0x00000D53 +_02315B6C: .word 0x00000D53 + TRY_INFLICT_DESTINY_BOND_OFFSET arm_func_end TryInflictDestinyBondStatus arm_func_start TryInflictSureShotStatus @@ -782,8 +830,13 @@ _02315BEC: bl UpdateStatusIconFlags ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 +#ifdef JAPAN +_02315BF8: .word 0x00000A6E +_02315BFC: .word 0x00000A6F +#else _02315BF8: .word 0x00000D2E _02315BFC: .word 0x00000D2F +#endif arm_func_end TryInflictSureShotStatus arm_func_start TryInflictWhifferStatus @@ -831,7 +884,11 @@ TryInflictWhifferStatus: ; 0x02315C00 bl ov29_022E45B8 mov r0, r5 mov r1, r4 +#ifdef JAPAN + mov r2, #0xa70 +#else mov r2, #0xd30 +#endif bl LogMessageByIdWithPopupCheckUserTarget mov r0, r5 mov r1, r4 @@ -848,7 +905,11 @@ _02315CD4: mov r0, #1 ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 +#ifdef JAPAN +_02315CE4: .word 0x00000A71 +#else _02315CE4: .word 0x00000D31 +#endif arm_func_end TryInflictWhifferStatus arm_func_start TryInflictSetDamageStatus @@ -886,7 +947,11 @@ TryInflictSetDamageStatus: ; 0x02315CE8 _02315D60: mov r0, r6 mov r1, r5 +#ifdef JAPAN + mov r2, #0xa80 +#else mov r2, #0xd40 +#endif bl LogMessageByIdWithPopupCheckUserTarget _02315D70: mov r0, r5 @@ -894,7 +959,11 @@ _02315D70: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _02315D7C: .word ov10_022C47A4 +#ifdef JAPAN +_02315D80: .word 0x00000A7F +#else _02315D80: .word 0x00000D3F +#endif arm_func_end TryInflictSetDamageStatus arm_func_start TryInflictFocusEnergyStatus @@ -940,12 +1009,22 @@ _02315E0C: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _02315E18: .word ov10_022C47AC +#ifdef JAPAN +_02315E1C: .word 0x00000A81 +_02315E20: .word 0x00000A82 +#else _02315E1C: .word 0x00000D41 _02315E20: .word 0x00000D42 +#endif arm_func_end TryInflictFocusEnergyStatus arm_func_start TryInflictDecoyStatus TryInflictDecoyStatus: ; 0x02315E24 +#ifdef JAPAN +#define TRY_INFLICT_DECOY_STATUS_OFFSET -0xA4 +#else +#define TRY_INFLICT_DECOY_STATUS_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x14 mov sb, r1 @@ -998,7 +1077,7 @@ _02315EDC: ldr r0, [fp] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 - ldr r5, [r0, #0xb78] + ldr r5, [r0, #0xb78 + TRY_INFLICT_DECOY_STATUS_OFFSET] mov r0, r5 bl EntityIsValid__02315118 cmp r0, #0 @@ -1068,7 +1147,7 @@ _02315FCC: ldr r0, [r0] cmp r7, #0 add r0, r0, #0x3000 - strb r1, [r0, #0xe38] + strb r1, [r0, #0xe38 + TRY_INFLICT_DECOY_STATUS_OFFSET] beq _0231600C ldr r2, _023160D8 ; =0x00000D45 mov r0, sl @@ -1087,7 +1166,7 @@ _02316028: ldr r0, [r0] add r0, r0, sl, lsl #2 add r0, r0, #0x12000 - ldr r7, [r0, #0xb78] + ldr r7, [r0, #0xb78 + TRY_INFLICT_DECOY_STATUS_OFFSET] mov r0, r7 bl EntityIsValid__02315118 cmp r0, #0 @@ -1129,10 +1208,18 @@ _023160C4: add sp, sp, #0x14 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +_023160CC: .word 0x00000A86 +#else _023160CC: .word 0x00000D46 +#endif _023160D0: .word DUNGEON_PTR _023160D4: .word ov10_022C47B4 +#ifdef JAPAN +_023160D8: .word 0x00000A85 +#else _023160D8: .word 0x00000D45 +#endif arm_func_end TryInflictDecoyStatus arm_func_start TryInflictCurseStatus @@ -1246,12 +1333,21 @@ _0231626C: ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} .align 2, 0 _02316274: .word ov10_022C4784 +#ifdef JAPAN +_02316278: .word 0x00000A2C +#else _02316278: .word 0x00000CEC +#endif _0231627C: .word ATK_STAT_IDX arm_func_end TryInflictCurseStatus arm_func_start TryInflictSnatchStatus TryInflictSnatchStatus: ; 0x02316280 +#ifdef JAPAN +#define TRY_INFLICT_SNATCH_STATUS_OFFSET -0xA4 +#else +#define TRY_INFLICT_SNATCH_STATUS_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} mov r4, r1 mov r5, r0 @@ -1272,7 +1368,7 @@ _023162C0: ldr r0, [r6] add r0, r0, sb, lsl #2 add r0, r0, #0x12000 - ldr sl, [r0, #0xb78] + ldr sl, [r0, #0xb78 + TRY_INFLICT_SNATCH_STATUS_OFFSET] mov r0, sl bl EntityIsValid__02315118 cmp r0, #0 @@ -1312,12 +1408,12 @@ _02316350: ldr r2, [r3] mov r1, r4 add r2, r2, #0x19000 - str r4, [r2, #0x904] + str r4, [r2, #0x904 + TRY_INFLICT_SNATCH_STATUS_OFFSET] ldr r2, [r3] ldr r6, [r6, #0xb0] add r3, r2, #0x19000 mov r2, r0 - str r6, [r3, #0x90c] + str r6, [r3, #0x90c + TRY_INFLICT_SNATCH_STATUS_OFFSET] bl SubstitutePlaceholderStringTags ldr r2, _023163A4 ; =0x00000CED mov r0, r5 @@ -1329,7 +1425,11 @@ _02316350: .align 2, 0 _0231639C: .word DUNGEON_PTR _023163A0: .word ov10_022C4788 +#ifdef JAPAN +_023163A4: .word 0x00000A2D +#else _023163A4: .word 0x00000CED +#endif arm_func_end TryInflictSnatchStatus arm_func_start TryInflictTauntStatus @@ -1358,10 +1458,15 @@ TryInflictTauntStatus: ; 0x023163A8 cmp r0, #0 movne r0, #0 bne _023164C0 +#ifndef JAPAN ldr r3, _023164C8 ; =0x00000C39 +#endif mov ip, #8 mov r0, r5 mov r1, r4 +#ifdef JAPAN + add r3, ip, #0x970 +#endif mov r2, #1 str ip, [sp] bl ExclusiveItemEffectIsActiveWithLogging @@ -1410,14 +1515,25 @@ _023164C0: add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_023164CC: .word ov10_022C47BC +_023164D0: .word 0x00000A89 +_023164D4: .word 0x00000A8A +#else _023164C8: .word 0x00000C39 _023164CC: .word ov10_022C47BC _023164D0: .word 0x00000D49 _023164D4: .word 0x00000D4A +#endif arm_func_end TryInflictTauntStatus arm_func_start TryInflictStockpileStatus TryInflictStockpileStatus: ; 0x023164D8 +#ifdef JAPAN +#define TRY_INFLICT_STOCKPILE_STATUS_OFFSET -4 +#else +#define TRY_INFLICT_STOCKPILE_STATUS_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r6, r1 mov r7, r0 @@ -1431,16 +1547,16 @@ TryInflictStockpileStatus: ; 0x023164D8 mov r1, r6 mov r2, r0 bl SubstitutePlaceholderStringTags - ldrb r0, [r5, #0x11e] + ldrb r0, [r5, #0x11e + TRY_INFLICT_STOCKPILE_STATUS_OFFSET] cmp r0, #3 bhs _02316554 add r1, r0, #1 mov r0, #1 - strb r1, [r5, #0x11e] + strb r1, [r5, #0x11e + TRY_INFLICT_STOCKPILE_STATUS_OFFSET] bl AnimationDelayOrSomething mov r0, r6 bl ov29_022E46D4 - ldrb r1, [r5, #0x11e] + ldrb r1, [r5, #0x11e + TRY_INFLICT_STOCKPILE_STATUS_OFFSET] mov r0, r4 bl ov29_0234B09C ldr r2, _02316574 ; =0x00000D4B @@ -1460,8 +1576,13 @@ _02316564: mov r0, r4 ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 +#ifdef JAPAN +_02316574: .word 0x00000A8B +_02316578: .word 0x00000A8C +#else _02316574: .word 0x00000D4B _02316578: .word 0x00000D4C +#endif arm_func_end TryInflictStockpileStatus arm_func_start TryInflictInvisibleStatus @@ -1511,8 +1632,13 @@ _02316614: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _02316620: .word ov10_022C47C8 +#ifdef JAPAN +_02316624: .word 0x00000A8D +_02316628: .word 0x00000A8E +#else _02316624: .word 0x00000D4D _02316628: .word 0x00000D4E +#endif arm_func_end TryInflictInvisibleStatus arm_func_start TryInflictPerishSongStatus @@ -1550,7 +1676,11 @@ TryInflictPerishSongStatus: ; 0x0231662C mov r1, r5 mov r2, r0 bl SubstitutePlaceholderStringTags +#ifdef JAPAN + ldrb r0, [r4, #0x105] +#else ldrb r0, [r4, #0x106] +#endif cmp r0, #0 bne _023166F4 ldr r1, _02316714 ; =ov10_022C47D0 @@ -1561,7 +1691,11 @@ TryInflictPerishSongStatus: ; 0x0231662C ldr r2, _02316718 ; =0x00000D51 mov r0, r6 mov r1, r5 +#ifdef JAPAN + strb r3, [r4, #0x105] +#else strb r3, [r4, #0x106] +#endif bl LogMessageByIdWithPopupCheckUserTarget mov r0, r6 mov r1, r5 @@ -1579,8 +1713,13 @@ _02316704: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _02316714: .word ov10_022C47D0 +#ifdef JAPAN +_02316718: .word 0x00000A91 +_0231671C: .word 0x00000A92 +#else _02316718: .word 0x00000D51 _0231671C: .word 0x00000D52 +#endif arm_func_end TryInflictPerishSongStatus arm_func_start TryInflictEncoreStatus @@ -1610,9 +1749,15 @@ TryInflictEncoreStatus: ; 0x02316720 movne r0, #0 ldmneia sp!, {r3, r4, r5, r6, r7, pc} mov ip, #8 +#ifdef JAPAN + mov r0, r7 + mov r1, r6 + add r3, ip, #0x970 +#else ldr r3, _023168C4 ; =0x00000C39 mov r0, r7 mov r1, r6 +#endif mov r2, #1 str ip, [sp] bl ExclusiveItemEffectIsActiveWithLogging @@ -1620,7 +1765,11 @@ TryInflictEncoreStatus: ; 0x02316720 movne r0, #0 ldmneia sp!, {r3, r4, r5, r6, r7, pc} mov lr, #0 +#ifdef JAPAN + add ip, r4, #0x120 +#else add ip, r4, #0x124 +#endif mov r1, lr mov r2, #1 b _023167E8 @@ -1643,7 +1792,11 @@ _023167E8: _023167F0: cmp lr, #4 bne _02316834 +#ifdef JAPAN + ldrb r0, [r4, #0x140] +#else ldrb r0, [r4, #0x144] +#endif tst r0, #0x10 bne _02316834 cmp r5, #0 @@ -1699,15 +1852,27 @@ _023168B4: mov r0, #1 ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 +#ifdef JAPAN +#define TRY_INFLICT_ENCORE_STATUS_OFFSET -0x2C0 +#else +#define TRY_INFLICT_ENCORE_STATUS_OFFSET 0 +#endif +#ifndef JAPAN _023168C4: .word 0x00000C39 -_023168C8: .word 0x00000D57 +#endif +_023168C8: .word 0x00000D57 + TRY_INFLICT_ENCORE_STATUS_OFFSET _023168CC: .word ov10_022C47D8 -_023168D0: .word 0x00000D55 -_023168D4: .word 0x00000D56 +_023168D0: .word 0x00000D55 + TRY_INFLICT_ENCORE_STATUS_OFFSET +_023168D4: .word 0x00000D56 + TRY_INFLICT_ENCORE_STATUS_OFFSET arm_func_end TryInflictEncoreStatus arm_func_start TryDecreaseBelly TryDecreaseBelly: ; 0x023168D8 +#ifdef JAPAN +#define TRY_DECREASE_BELLY_OFFSET -4 +#else +#define TRY_DECREASE_BELLY_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} sub sp, sp, #0x24 mov r5, r1 @@ -1733,8 +1898,8 @@ TryDecreaseBelly: ; 0x023168D8 bl sub_02050FF8 strh r0, [sp, #0x10] add r1, r4, #0x100 - ldrh ip, [r1, #0x4a] - ldrh r1, [r1, #0x4c] + ldrh ip, [r1, #0x4a + TRY_DECREASE_BELLY_OFFSET] + ldrh r1, [r1, #0x4c + TRY_DECREASE_BELLY_OFFSET] mov r0, r0, lsr #0x10 ldrh r2, [sp, #0x10] sub r3, sp, #4 @@ -1760,17 +1925,17 @@ TryDecreaseBelly: ; 0x023168D8 ldrh r2, [sp, #0xc] add r1, r4, #0x100 ldrh r0, [sp, #0xe] - strh r2, [r1, #0x4a] + strh r2, [r1, #0x4a + TRY_DECREASE_BELLY_OFFSET] sub r3, sp, #4 - strh r0, [r1, #0x4c] - ldrh r0, [r1, #0x46] + strh r0, [r1, #0x4c + TRY_DECREASE_BELLY_OFFSET] + ldrh r0, [r1, #0x46 + TRY_DECREASE_BELLY_OFFSET] strh r0, [r3] - ldrh r0, [r1, #0x48] + ldrh r0, [r1, #0x48 + TRY_DECREASE_BELLY_OFFSET] strh r0, [r3, #2] - ldrh r2, [r1, #0x4a] + ldrh r2, [r1, #0x4a + TRY_DECREASE_BELLY_OFFSET] ldr r0, [r3] strh r2, [r3] - ldrh r1, [r1, #0x4c] + ldrh r1, [r1, #0x4c + TRY_DECREASE_BELLY_OFFSET] strh r1, [r3, #2] ldr r1, [r3] bl sub_02050F78 @@ -1780,9 +1945,9 @@ TryDecreaseBelly: ; 0x023168D8 ldrh r0, [sp, #8] add r1, r4, #0x100 ldrh r2, [sp, #0xa] - strh r0, [r1, #0x46] + strh r0, [r1, #0x46 + TRY_DECREASE_BELLY_OFFSET] mov r0, #0 - strh r2, [r1, #0x48] + strh r2, [r1, #0x48 + TRY_DECREASE_BELLY_OFFSET] mov r1, r5 mov r2, r0 bl SubstitutePlaceholderStringTags @@ -1822,8 +1987,8 @@ _02316A88: bl sub_02050FF8 strh r0, [sp, #4] add r1, r4, #0x100 - ldrh ip, [r1, #0x46] - ldrh r1, [r1, #0x48] + ldrh ip, [r1, #0x46 + TRY_DECREASE_BELLY_OFFSET] + ldrh r1, [r1, #0x48 + TRY_DECREASE_BELLY_OFFSET] mov r0, r0, lsr #0x10 ldrh r2, [sp, #4] sub r3, sp, #4 @@ -1849,9 +2014,9 @@ _02316A88: ldrh r1, [sp] add r2, r4, #0x100 ldrh r3, [sp, #2] - strh r1, [r2, #0x46] + strh r1, [r2, #0x46 + TRY_DECREASE_BELLY_OFFSET] mov r0, #0 - strh r3, [r2, #0x48] + strh r3, [r2, #0x48 + TRY_DECREASE_BELLY_OFFSET] mov r1, r5 mov r2, r0 bl SubstitutePlaceholderStringTags @@ -1863,11 +2028,11 @@ _02316A88: ldr r0, [r2] bl CeilFixedPoint add r1, r4, #0x100 - ldrh r2, [r1, #0x46] + ldrh r2, [r1, #0x46 + TRY_DECREASE_BELLY_OFFSET] sub r3, sp, #4 mov r4, r0 strh r2, [r3] - ldrh r0, [r1, #0x48] + ldrh r0, [r1, #0x48 + TRY_DECREASE_BELLY_OFFSET] strh r0, [r3, #2] ldr r0, [r3] bl CeilFixedPoint @@ -1892,14 +2057,24 @@ _02316B98: add sp, sp, #0x24 ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} .align 2, 0 -_02316BA0: .word 0x00000D64 -_02316BA4: .word 0x00000D68 -_02316BA8: .word 0x00000D63 -_02316BAC: .word 0x00000D69 +#ifdef JAPAN +#define TRY_DECREASE_BELLY_DATA_OFFSET -0x2C0 +#else +#define TRY_DECREASE_BELLY_DATA_OFFSET 0 +#endif +_02316BA0: .word 0x00000D64 + TRY_DECREASE_BELLY_DATA_OFFSET +_02316BA4: .word 0x00000D68 + TRY_DECREASE_BELLY_DATA_OFFSET +_02316BA8: .word 0x00000D63 + TRY_DECREASE_BELLY_DATA_OFFSET +_02316BAC: .word 0x00000D69 + TRY_DECREASE_BELLY_DATA_OFFSET arm_func_end TryDecreaseBelly arm_func_start TryIncreaseBelly TryIncreaseBelly: ; 0x02316BB0 +#ifdef JAPAN +#define TRY_INCREASE_BELLY_OFFSET -4 +#else +#define TRY_INCREASE_BELLY_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x2c mov sb, r1 @@ -1960,19 +2135,19 @@ _02316C74: mov r4, #0 beq _02316CE8 add r0, r5, #0x100 - ldrh r1, [r0, #0x46] + ldrh r1, [r0, #0x46 + TRY_INCREASE_BELLY_OFFSET] sub r2, sp, #4 strh r1, [r2] - ldrh r0, [r0, #0x48] + ldrh r0, [r0, #0x48 + TRY_INCREASE_BELLY_OFFSET] strh r0, [r2, #2] ldr r0, [r2] bl CeilFixedPoint add r1, r5, #0x100 - ldrh r2, [r1, #0x4a] + ldrh r2, [r1, #0x4a + TRY_INCREASE_BELLY_OFFSET] sub r3, sp, #4 mov fp, r0 strh r2, [r3] - ldrh r0, [r1, #0x4c] + ldrh r0, [r1, #0x4c + TRY_INCREASE_BELLY_OFFSET] strh r0, [r3, #2] ldr r0, [r3] bl CeilFixedPoint @@ -1985,23 +2160,23 @@ _02316CE8: cmp r4, #0 add r0, r5, #0x100 beq _02316F08 - ldrh r4, [r0, #0x4a] - ldrh r3, [r0, #0x4c] - ldrh r1, [r0, #0x46] + ldrh r4, [r0, #0x4a + TRY_INCREASE_BELLY_OFFSET] + ldrh r3, [r0, #0x4c + TRY_INCREASE_BELLY_OFFSET] + ldrh r1, [r0, #0x46 + TRY_INCREASE_BELLY_OFFSET] sub r2, sp, #4 strh r4, [sp, #0x24] strh r1, [r2] - ldrh r0, [r0, #0x48] + ldrh r0, [r0, #0x48 + TRY_INCREASE_BELLY_OFFSET] strh r3, [sp, #0x26] strh r0, [r2, #2] ldr r0, [r2] bl CeilFixedPoint add r1, r5, #0x100 - ldrh r2, [r1, #0x4a] + ldrh r2, [r1, #0x4a + TRY_INCREASE_BELLY_OFFSET] sub r3, sp, #4 mov r4, r0 strh r2, [r3] - ldrh r0, [r1, #0x4c] + ldrh r0, [r1, #0x4c + TRY_INCREASE_BELLY_OFFSET] strh r0, [r3, #2] ldr r0, [r3] bl CeilFixedPoint @@ -2016,11 +2191,11 @@ _02316CE8: add r1, r5, #0x100 ldrh r7, [sp, #0x18] ldrh r2, [sp, #0x1a] - ldrh r0, [r1, #0x4a] + ldrh r0, [r1, #0x4a + TRY_INCREASE_BELLY_OFFSET] sub r3, sp, #4 strh r7, [sp, #0x28] strh r0, [r3] - ldrh r0, [r1, #0x4c] + ldrh r0, [r1, #0x4c + TRY_INCREASE_BELLY_OFFSET] strh r2, [sp, #0x2a] ldrh r2, [sp, #0x28] strh r0, [r3, #2] @@ -2036,19 +2211,19 @@ _02316CE8: ldrh r0, [sp, #0x14] add r1, r5, #0x100 ldrh r2, [sp, #0x16] - strh r0, [r1, #0x4a] + strh r0, [r1, #0x4a + TRY_INCREASE_BELLY_OFFSET] mov r0, #0xc8 - strh r2, [r1, #0x4c] + strh r2, [r1, #0x4c + TRY_INCREASE_BELLY_OFFSET] bl sub_02050FF8 strh r0, [sp, #0x10] mov r0, r0, lsr #0x10 strh r0, [sp, #0x12] add r1, r5, #0x100 - ldrh r0, [r1, #0x4a] + ldrh r0, [r1, #0x4a + TRY_INCREASE_BELLY_OFFSET] sub r7, sp, #4 ldrh r3, [sp, #0x10] strh r0, [r7] - ldrh r0, [r1, #0x4c] + ldrh r0, [r1, #0x4c + TRY_INCREASE_BELLY_OFFSET] ldrh r2, [sp, #0x12] strh r0, [r7, #2] ldr r0, [r7] @@ -2062,13 +2237,13 @@ _02316CE8: ldrh r2, [sp, #0xc] add r0, r5, #0x100 ldrh r1, [sp, #0xe] - strh r2, [r0, #0x4a] + strh r2, [r0, #0x4a + TRY_INCREASE_BELLY_OFFSET] tst r4, #0xff - strh r1, [r0, #0x4c] - ldrh r1, [r0, #0x4a] - strh r1, [r0, #0x46] - ldrh r1, [r0, #0x4c] - strh r1, [r0, #0x48] + strh r1, [r0, #0x4c + TRY_INCREASE_BELLY_OFFSET] + ldrh r1, [r0, #0x4a + TRY_INCREASE_BELLY_OFFSET] + strh r1, [r0, #0x46 + TRY_INCREASE_BELLY_OFFSET] + ldrh r1, [r0, #0x4c + TRY_INCREASE_BELLY_OFFSET] + strh r1, [r0, #0x48 + TRY_INCREASE_BELLY_OFFSET] bne _02316E60 cmp r6, #0 beq _02316E60 @@ -2085,11 +2260,11 @@ _02316E60: ldr r0, [r2] bl CeilFixedPoint add r1, r5, #0x100 - ldrh r2, [r1, #0x4a] + ldrh r2, [r1, #0x4a + TRY_INCREASE_BELLY_OFFSET] sub r3, sp, #4 mov r4, r0 strh r2, [r3] - ldrh r0, [r1, #0x4c] + ldrh r0, [r1, #0x4c + TRY_INCREASE_BELLY_OFFSET] strh r0, [r3, #2] ldr r0, [r3] bl CeilFixedPoint @@ -2121,8 +2296,8 @@ _02316ED4: bl LogMessageByIdWithPopupCheckUserTarget b _023170F4 _02316F08: - ldrh r2, [r0, #0x46] - ldrh r1, [r0, #0x48] + ldrh r2, [r0, #0x46 + TRY_INCREASE_BELLY_OFFSET] + ldrh r1, [r0, #0x48 + TRY_INCREASE_BELLY_OFFSET] mov r0, r8 strh r2, [sp, #0x20] strh r1, [sp, #0x22] @@ -2133,11 +2308,11 @@ _02316F08: add r1, r5, #0x100 ldrh r4, [sp, #8] ldrh r2, [sp, #0xa] - ldrh r0, [r1, #0x46] + ldrh r0, [r1, #0x46 + TRY_INCREASE_BELLY_OFFSET] sub r3, sp, #4 strh r4, [sp, #0x1c] strh r0, [r3] - ldrh r0, [r1, #0x48] + ldrh r0, [r1, #0x48 + TRY_INCREASE_BELLY_OFFSET] strh r2, [sp, #0x1e] ldrh r2, [sp, #0x1c] strh r0, [r3, #2] @@ -2153,17 +2328,17 @@ _02316F08: ldrh r2, [sp, #4] add r1, r5, #0x100 ldrh r0, [sp, #6] - strh r2, [r1, #0x46] + strh r2, [r1, #0x46 + TRY_INCREASE_BELLY_OFFSET] sub r3, sp, #4 - strh r0, [r1, #0x48] - ldrh r0, [r1, #0x46] + strh r0, [r1, #0x48 + TRY_INCREASE_BELLY_OFFSET] + ldrh r0, [r1, #0x46 + TRY_INCREASE_BELLY_OFFSET] strh r0, [r3] - ldrh r0, [r1, #0x48] + ldrh r0, [r1, #0x48 + TRY_INCREASE_BELLY_OFFSET] strh r0, [r3, #2] - ldrh r2, [r1, #0x4a] + ldrh r2, [r1, #0x4a + TRY_INCREASE_BELLY_OFFSET] ldr r0, [r3] strh r2, [r3] - ldrh r1, [r1, #0x4c] + ldrh r1, [r1, #0x4c + TRY_INCREASE_BELLY_OFFSET] strh r1, [r3, #2] ldr r1, [r3] bl sub_02050F78 @@ -2175,12 +2350,12 @@ _02316F08: cmp r8, r0 add r0, r5, #0x100 ldrh r1, [sp, #2] - strh r2, [r0, #0x46] - strh r1, [r0, #0x48] - ldreqh r1, [r0, #0x4a] - streqh r1, [r0, #0x46] - ldreqh r1, [r0, #0x4c] - streqh r1, [r0, #0x48] + strh r2, [r0, #0x46 + TRY_INCREASE_BELLY_OFFSET] + strh r1, [r0, #0x48 + TRY_INCREASE_BELLY_OFFSET] + ldreqh r1, [r0, #0x4a + TRY_INCREASE_BELLY_OFFSET] + streqh r1, [r0, #0x46 + TRY_INCREASE_BELLY_OFFSET] + ldreqh r1, [r0, #0x4c + TRY_INCREASE_BELLY_OFFSET] + streqh r1, [r0, #0x48 + TRY_INCREASE_BELLY_OFFSET] mov r0, sb bl ov29_022E47BC mov r0, #0 @@ -2195,11 +2370,11 @@ _02316F08: ldr r0, [r2] bl CeilFixedPoint add r1, r5, #0x100 - ldrh r2, [r1, #0x46] + ldrh r2, [r1, #0x46 + TRY_INCREASE_BELLY_OFFSET] sub r3, sp, #4 mov r4, r0 strh r2, [r3] - ldrh r0, [r1, #0x48] + ldrh r0, [r1, #0x48 + TRY_INCREASE_BELLY_OFFSET] strh r0, [r3, #2] ldr r0, [r3] bl CeilFixedPoint @@ -2214,19 +2389,19 @@ _02316F08: b _023170F4 _02317074: add r0, r5, #0x100 - ldrh r1, [r0, #0x46] + ldrh r1, [r0, #0x46 + TRY_INCREASE_BELLY_OFFSET] sub r2, sp, #4 strh r1, [r2] - ldrh r0, [r0, #0x48] + ldrh r0, [r0, #0x48 + TRY_INCREASE_BELLY_OFFSET] strh r0, [r2, #2] ldr r0, [r2] bl CeilFixedPoint add r1, r5, #0x100 - ldrh r2, [r1, #0x4a] + ldrh r2, [r1, #0x4a + TRY_INCREASE_BELLY_OFFSET] sub r3, sp, #4 mov r4, r0 strh r2, [r3] - ldrh r0, [r1, #0x4c] + ldrh r0, [r1, #0x4c + TRY_INCREASE_BELLY_OFFSET] strh r0, [r3, #2] ldr r0, [r3] bl CeilFixedPoint @@ -2253,14 +2428,19 @@ _023170FC: add sp, sp, #0x2c ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +#define TRY_INCREASE_BELLY_DATA_OFFSET -0x2C0 +#else +#define TRY_INCREASE_BELLY_DATA_OFFSET 0 +#endif _02317104: .word ov10_022C44B0 _02317108: .word 0x000003E7 -_0231710C: .word 0x00000D6C -_02317110: .word 0x00000D6A -_02317114: .word 0x00000D66 -_02317118: .word 0x00000D65 -_0231711C: .word 0x00000D67 -_02317120: .word 0x00000D6B +_0231710C: .word 0x00000D6C + TRY_INCREASE_BELLY_DATA_OFFSET +_02317110: .word 0x00000D6A + TRY_INCREASE_BELLY_DATA_OFFSET +_02317114: .word 0x00000D66 + TRY_INCREASE_BELLY_DATA_OFFSET +_02317118: .word 0x00000D65 + TRY_INCREASE_BELLY_DATA_OFFSET +_0231711C: .word 0x00000D67 + TRY_INCREASE_BELLY_DATA_OFFSET +_02317120: .word 0x00000D6B + TRY_INCREASE_BELLY_DATA_OFFSET arm_func_end TryIncreaseBelly arm_func_start TryInflictMuzzledStatus @@ -2328,8 +2508,13 @@ _02317200: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _02317210: .word ov10_022C4848 +#ifdef JAPAN +_02317214: .word 0x00000AB2 +_02317218: .word 0x00000AB3 +#else _02317214: .word 0x00000D72 _02317218: .word 0x00000D73 +#endif arm_func_end TryInflictMuzzledStatus arm_func_start TryTransform @@ -2464,10 +2649,15 @@ _023173F4: add sp, sp, #0x240 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 -_023173FC: .word 0x00000D6F -_02317400: .word 0x00000D6E +#ifdef JAPAN +#define TRY_TRANSFORM_OFFSET -0x2C0 +#else +#define TRY_TRANSFORM_OFFSET 0 +#endif +_023173FC: .word 0x00000D6F + TRY_TRANSFORM_OFFSET +_02317400: .word 0x00000D6E + TRY_TRANSFORM_OFFSET _02317404: .word ov10_022C47FC -_02317408: .word 0x00000D6D +_02317408: .word 0x00000D6D + TRY_TRANSFORM_OFFSET arm_func_end TryTransform arm_func_start TryInflictMobileStatus @@ -2503,7 +2693,11 @@ TryInflictMobileStatus: ; 0x0231740C bl SubstitutePlaceholderStringTags mov r0, r6 mov r1, r5 +#ifdef JAPAN + mov r2, #0xab0 +#else mov r2, #0xd70 +#endif bl LogMessageByIdWithPopupCheckUserTarget b _023174B4 _02317494: @@ -2521,7 +2715,11 @@ _023174B4: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _023174C0: .word ov10_022C480C +#ifdef JAPAN +_023174C4: .word 0x00000AB1 +#else _023174C4: .word 0x00000D71 +#endif arm_func_end TryInflictMobileStatus arm_func_start TryInflictExposedStatus @@ -2625,10 +2823,15 @@ _02317628: mov r0, #1 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} .align 2, 0 -_02317638: .word 0x00000D77 -_0231763C: .word 0x00000D75 -_02317640: .word 0x00000D76 -_02317644: .word 0x00000D74 +#ifdef JAPAN +#define TRY_INFLICT_EXPOSED_STATUS_OFFSET -0x2C0 +#else +#define TRY_INFLICT_EXPOSED_STATUS_OFFSET 0 +#endif +_02317638: .word 0x00000D77 + TRY_INFLICT_EXPOSED_STATUS_OFFSET +_0231763C: .word 0x00000D75 + TRY_INFLICT_EXPOSED_STATUS_OFFSET +_02317640: .word 0x00000D76 + TRY_INFLICT_EXPOSED_STATUS_OFFSET +_02317644: .word 0x00000D74 + TRY_INFLICT_EXPOSED_STATUS_OFFSET arm_func_end TryInflictExposedStatus arm_func_start TryActivateIdentifyCondition @@ -2666,8 +2869,13 @@ _023176AC: ldmia sp!, {r3, r4, r5, pc} .align 2, 0 _023176C0: .word DUNGEON_PTR +#ifdef JAPAN +_023176C4: .word 0x00000AB8 +_023176C8: .word 0x00000AB9 +#else _023176C4: .word 0x00000D78 _023176C8: .word 0x00000D79 +#endif arm_func_end TryActivateIdentifyCondition arm_func_start TryInflictBlinkerStatus @@ -2744,8 +2952,13 @@ _023177C8: ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 _023177D8: .word ov10_022C4828 +#ifdef JAPAN +_023177DC: .word 0x00000A74 +_023177E0: .word 0x00000A75 +#else _023177DC: .word 0x00000D34 _023177E0: .word 0x00000D35 +#endif arm_func_end TryInflictBlinkerStatus arm_func_start IsBlinded @@ -2850,9 +3063,15 @@ _02317940: mov r0, #1 ldmia sp!, {r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_02317950: .word 0x00000A76 +_02317954: .word ov10_022C4830 +_02317958: .word 0x00000A77 +#else _02317950: .word 0x00000D36 _02317954: .word ov10_022C4830 _02317958: .word 0x00000D37 +#endif arm_func_end TryInflictCrossEyedStatus arm_func_start TryInflictEyedropStatus @@ -2902,8 +3121,13 @@ _023179F4: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _02317A00: .word ov10_022C4838 +#ifdef JAPAN +_02317A04: .word 0x00000A78 +_02317A08: .word 0x00000A79 +#else _02317A04: .word 0x00000D38 _02317A08: .word 0x00000D39 +#endif arm_func_end TryInflictEyedropStatus arm_func_start TryInflictSlipStatus @@ -2969,8 +3193,13 @@ _02317AD8: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _02317AE8: .word ov10_022C486C +#ifdef JAPAN +_02317AEC: .word 0x00000A7A +_02317AF0: .word 0x00000A7B +#else _02317AEC: .word 0x00000D3A _02317AF0: .word 0x00000D3B +#endif arm_func_end TryInflictSlipStatus arm_func_start TryInflictDropeyeStatus @@ -3051,11 +3280,16 @@ _02317BFC: mov r0, #1 ldmia sp!, {r4, r5, r6, pc} .align 2, 0 -_02317C0C: .word 0x00000D3E +#ifdef JAPAN +#define TRY_INFLICT_DROPEYE_STATUS_OFFSET -0x2C0 +#else +#define TRY_INFLICT_DROPEYE_STATUS_OFFSET 0 +#endif +_02317C0C: .word 0x00000D3E + TRY_INFLICT_DROPEYE_STATUS_OFFSET _02317C10: .word ov10_022C487C _02317C14: .word 0x00000115 -_02317C18: .word 0x00000D3C -_02317C1C: .word 0x00000D3D +_02317C18: .word 0x00000D3C + TRY_INFLICT_DROPEYE_STATUS_OFFSET +_02317C1C: .word 0x00000D3D + TRY_INFLICT_DROPEYE_STATUS_OFFSET arm_func_end TryInflictDropeyeStatus arm_func_start RestoreAllMovePP @@ -3073,7 +3307,11 @@ RestoreAllMovePP: ; 0x02317C20 beq _02317D48 ldr r0, [sb, #0xb4] mov r5, r6 +#ifdef JAPAN + add r4, r0, #0x120 +#else add r4, r0, #0x124 +#endif _02317C58: ldrb r0, [r4, r5, lsl #3] add r7, r4, r5, lsl #3 @@ -3142,8 +3380,13 @@ _02317D48: add sp, sp, #8 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +_02317D50: .word 0x00000AF3 +_02317D54: .word 0x00000AF4 +#else _02317D50: .word 0x00000DB3 _02317D54: .word 0x00000DB4 +#endif arm_func_end RestoreAllMovePP arm_func_start RestoreOneMovePP @@ -3160,7 +3403,11 @@ RestoreOneMovePP: ; 0x02317D58 cmp r0, #0 beq _02317E78 ldr r0, [r7, #0xb4] +#ifdef JAPAN + add r1, r0, #0x120 +#else add r1, r0, #0x124 +#endif ldrb r0, [r1, r5, lsl #3] add r5, r1, r5, lsl #3 tst r0, #1 @@ -3227,8 +3474,13 @@ _02317E78: add sp, sp, #8 ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 +#ifdef JAPAN +_02317E80: .word 0x00000AF3 +_02317E84: .word 0x00000AF4 +#else _02317E80: .word 0x00000DB3 _02317E84: .word 0x00000DB4 +#endif arm_func_end RestoreOneMovePP arm_func_start RestoreRandomMovePP @@ -3242,7 +3494,11 @@ RestoreRandomMovePP: ; 0x02317E88 mov r8, r2 mov r7, r3 mov r5, r6 +#ifdef JAPAN + add r4, r1, #0x120 +#else add r4, r1, #0x124 +#endif add fp, sp, #0xc _02317EB4: ldrb r1, [r4, r5, lsl #3] @@ -3328,8 +3584,13 @@ _02317FD0: bl UpdateStatusIconFlags ldmia sp!, {r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_02317FDC: .word 0x00000AD6 +_02317FE0: .word 0x00000AD7 +#else _02317FDC: .word 0x00000D96 _02317FE0: .word 0x00000D97 +#endif arm_func_end ApplyProteinEffect arm_func_start ApplyCalciumEffect @@ -3372,8 +3633,13 @@ _02318064: bl UpdateStatusIconFlags ldmia sp!, {r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_02318070: .word 0x00000AD8 +_02318074: .word 0x00000AD9 +#else _02318070: .word 0x00000D98 _02318074: .word 0x00000D99 +#endif arm_func_end ApplyCalciumEffect arm_func_start ApplyIronEffect @@ -3416,8 +3682,13 @@ _023180F8: bl UpdateStatusIconFlags ldmia sp!, {r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_02318104: .word 0x00000ADA +_02318108: .word 0x00000ADB +#else _02318104: .word 0x00000D9A _02318108: .word 0x00000D9B +#endif arm_func_end ApplyIronEffect arm_func_start ApplyZincEffect @@ -3460,8 +3731,13 @@ _0231818C: bl UpdateStatusIconFlags ldmia sp!, {r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_02318198: .word 0x00000ADC +_0231819C: .word 0x00000ADD +#else _02318198: .word 0x00000D9C _0231819C: .word 0x00000D9D +#endif arm_func_end ApplyZincEffect arm_func_start TryInflictLongTossStatus @@ -3495,8 +3771,13 @@ _023181FC: bl UpdateStatusIconFlags ldmia sp!, {r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_02318208: .word 0x00000B1D +_0231820C: .word 0x00000B1E +#else _02318208: .word 0x00000DDD _0231820C: .word 0x00000DDE +#endif arm_func_end TryInflictLongTossStatus arm_func_start TryInflictPierceStatus @@ -3523,14 +3804,22 @@ TryInflictPierceStatus: ; 0x02318210 _0231825C: mov r0, r6 mov r1, r5 +#ifdef JAPAN + mov r2, #0xb20 +#else mov r2, #0xde0 +#endif bl LogMessageByIdWithPopupCheckUserTarget _0231826C: mov r0, r5 bl UpdateStatusIconFlags ldmia sp!, {r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_02318278: .word 0x00000B1F +#else _02318278: .word 0x00000DDF +#endif arm_func_end TryInflictPierceStatus arm_func_start TryInflictGastroAcidStatus @@ -3618,8 +3907,13 @@ _023183A0: .align 2, 0 _023183B0: .word ov10_022C476C _023183B4: .word DUNGEON_PTR +#ifdef JAPAN +_023183B8: .word 0x00000ABB +_023183BC: .word 0x00000ABC +#else _023183B8: .word 0x00000D7B _023183BC: .word 0x00000D7C +#endif arm_func_end TryInflictGastroAcidStatus arm_func_start SetAquaRingHealingCountdownTo4 @@ -3719,8 +4013,13 @@ _023184F0: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _023184FC: .word ov10_022C4764 +#ifdef JAPAN +_02318500: .word 0x00000ABD +_02318504: .word 0x00000ABE +#else _02318500: .word 0x00000D7D _02318504: .word 0x00000D7E +#endif arm_func_end TryInflictAquaRingStatus arm_func_start TryInflictLuckyChantStatus @@ -3767,7 +4066,11 @@ _02318594: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _023185A0: .word ov10_022C4768 +#ifdef JAPAN +_023185A4: .word 0x00000ABF +#else _023185A4: .word 0x00000D7F +#endif arm_func_end TryInflictLuckyChantStatus arm_func_start TryInflictHealBlockStatus @@ -3847,8 +4150,13 @@ _023186B0: ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 _023186C0: .word ov10_022C4774 +#ifdef JAPAN +_023186C4: .word 0x00000AC1 +_023186C8: .word 0x00000AC2 +#else _023186C4: .word 0x00000D81 _023186C8: .word 0x00000D82 +#endif arm_func_end TryInflictHealBlockStatus arm_func_start MonsterHasEmbargoStatus @@ -3881,7 +4189,11 @@ LogItemBlockedByEmbargo: ; 0x02318700 bl LogMessageByIdWithPopupCheckUser ldmia sp!, {r4, pc} .align 2, 0 +#ifdef JAPAN +_02318728: .word 0x00000AC6 +#else _02318728: .word 0x00000D86 +#endif arm_func_end LogItemBlockedByEmbargo arm_func_start TryInflictEmbargoStatus @@ -3961,8 +4273,13 @@ _02318834: ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 _02318844: .word ov10_022C4778 +#ifdef JAPAN +_02318848: .word 0x00000AC4 +_0231884C: .word 0x00000AC5 +#else _02318848: .word 0x00000D84 _0231884C: .word 0x00000D85 +#endif arm_func_end TryInflictEmbargoStatus arm_func_start TryInflictMiracleEyeStatus @@ -4045,10 +4362,15 @@ _02318964: mov r0, #1 ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 -_02318974: .word 0x00000D89 +#ifdef JAPAN +#define TRY_INFLICT_MIRACLE_EYE_STATUS_OFFSET -0x2C0 +#else +#define TRY_INFLICT_MIRACLE_EYE_STATUS_OFFSET 0 +#endif +_02318974: .word 0x00000D89 + TRY_INFLICT_MIRACLE_EYE_STATUS_OFFSET _02318978: .word ov10_022C477C -_0231897C: .word 0x00000D87 -_02318980: .word 0x00000D88 +_0231897C: .word 0x00000D87 + TRY_INFLICT_MIRACLE_EYE_STATUS_OFFSET +_02318980: .word 0x00000D88 + TRY_INFLICT_MIRACLE_EYE_STATUS_OFFSET arm_func_end TryInflictMiracleEyeStatus arm_func_start TryInflictMagnetRiseStatus @@ -4103,10 +4425,15 @@ _02318A30: bl UpdateStatusIconFlags ldmia sp!, {r4, r5, r6, pc} .align 2, 0 -_02318A3C: .word 0x00000D8C +#ifdef JAPAN +#define TRY_INFLICT_MAGNET_RISE_STATUS_OFFSET -0x2C0 +#else +#define TRY_INFLICT_MAGNET_RISE_STATUS_OFFSET 0 +#endif +_02318A3C: .word 0x00000D8C + TRY_INFLICT_MAGNET_RISE_STATUS_OFFSET _02318A40: .word ov10_022C4780 -_02318A44: .word 0x00000D8A -_02318A48: .word 0x00000D8B +_02318A44: .word 0x00000D8A + TRY_INFLICT_MAGNET_RISE_STATUS_OFFSET +_02318A48: .word 0x00000D8B + TRY_INFLICT_MAGNET_RISE_STATUS_OFFSET arm_func_end TryInflictMagnetRiseStatus arm_func_start IsFloating @@ -4138,7 +4465,11 @@ ov29_02318A90: ; 0x02318A90 bl IsMonster__02318AB0 cmp r0, #0 ldrne r0, [r5, #0xb4] +#ifdef JAPAN + strneb r4, [r0, #0x10a] +#else strneb r4, [r0, #0x10b] +#endif ldmia sp!, {r3, r4, r5, pc} arm_func_end ov29_02318A90 @@ -4170,10 +4501,17 @@ ov29_02318AD4: ; 0x02318AD4 mov r4, #0x53 b _02318B3C _02318B04: +#ifdef JAPAN + ldrb r0, [r7, #0x10a] + cmp r0, #1 + bne _02318B20 + ldr r0, [r7, #0x184] +#else ldrb r0, [r7, #0x10b] cmp r0, #1 bne _02318B20 ldr r0, [r7, #0x188] +#endif cmp r0, #0xc800 movge r8, r6 movlt r8, r5 @@ -4206,10 +4544,17 @@ ov29_02318B48: ; 0x02318B48 mov r4, #0x53 b _02318BB0 _02318B78: +#ifdef JAPAN + ldrb r0, [r7, #0x10a] + cmp r0, #0 + bne _02318B94 + ldr r0, [r7, #0x184] +#else ldrb r0, [r7, #0x10b] cmp r0, #0 bne _02318B94 ldr r0, [r7, #0x188] +#endif cmp r0, #0 movle r8, r6 movgt r8, r5 @@ -4255,7 +4600,11 @@ ov29_02318BBC: ; 0x02318BBC _02318C18: strb r7, [r5, #0xd2] mov r2, #0 +#ifdef JAPAN + add r0, r5, #0x120 +#else add r0, r5, #0x124 +#endif b _02318C3C _02318C28: add r1, r0, r2, lsl #3 @@ -4270,17 +4619,29 @@ _02318C44: add r0, r7, #0xf9 mov r1, #1 and r0, r0, #0xff +#ifdef JAPAN + strb r1, [r5, #0x150] +#else strb r1, [r5, #0x154] +#endif cmp r0, #1 mov r4, #0 movls r4, r1 +#ifdef JAPAN + strlsb r1, [r5, #0x10a] +#else strlsb r1, [r5, #0x10b] +#endif bls _02318C7C cmp r7, #9 cmpne r7, #0xa cmpne r7, #0xd moveq r0, #2 +#ifdef JAPAN + streqb r0, [r5, #0x10a] +#else streqb r0, [r5, #0x10b] +#endif _02318C7C: cmp r7, #1 bne _02318CD0 @@ -4326,7 +4687,11 @@ _02318CF0: bl ov29_02318AD4 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 +#ifdef JAPAN +_02318D20: .word 0x00000ABA +#else _02318D20: .word 0x00000D7A +#endif _02318D24: .word ov10_022C4754 _02318D28: .word 0x00000166 _02318D2C: .word 0x00000217 diff --git a/asm/overlay_29_02318D58.s b/asm/overlay_29_02318D58.s index 102b868e..ca9f6948 100644 --- a/asm/overlay_29_02318D58.s +++ b/asm/overlay_29_02318D58.s @@ -16,8 +16,13 @@ ov29_02318D58: ; 0x02318D58 cmpne r0, #0xc movne r0, #0 strneb r0, [r1, #0xd2] +#ifdef JAPAN + strneb r0, [r1, #0x150] + strneb r0, [r1, #0x10a] +#else strneb r0, [r1, #0x154] strneb r0, [r1, #0x10b] +#endif mov r0, r4 bl UpdateStatusIconFlags ldmia sp!, {r4, pc} @@ -70,7 +75,13 @@ _02318E20: bl UpdateStatusIconFlags ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 +#ifdef JAPAN +_02318E40: .word 0x00000A33 +_02318E44: .word ov10_022C4750 +_02318E48: .word 0x00000A32 +#else _02318E40: .word 0x00000CF3 _02318E44: .word ov10_022C4750 _02318E48: .word 0x00000CF2 +#endif arm_func_end ov29_02318D98 diff --git a/asm/overlay_29_02318E70.s b/asm/overlay_29_02318E70.s index ccd8c300..15847139 100644 --- a/asm/overlay_29_02318E70.s +++ b/asm/overlay_29_02318E70.s @@ -46,8 +46,13 @@ _02318EF8: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _02318F04: .word ov10_022C4734 +#ifdef JAPAN +_02318F08: .word 0x00000A2E +_02318F0C: .word 0x00000A2F +#else _02318F08: .word 0x00000CEE _02318F0C: .word 0x00000CEF +#endif arm_func_end TryInflictSafeguardStatus arm_func_start TryInflictMistStatus @@ -79,7 +84,11 @@ TryInflictMistStatus: ; 0x02318F10 bl ov29_022E3F78 mov r0, r6 mov r1, r5 +#ifdef JAPAN + mov r2, #0xa30 +#else mov r2, #0xcf0 +#endif bl LogMessageByIdWithPopupCheckUserTarget b _02318F98 _02318F88: @@ -93,7 +102,11 @@ _02318F98: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _02318FA4: .word ov10_022C4738 +#ifdef JAPAN +_02318FA8: .word 0x00000A31 +#else _02318FA8: .word 0x00000CF1 +#endif arm_func_end TryInflictMistStatus arm_func_start TryInflictWishStatus @@ -139,8 +152,13 @@ _02319034: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _02319040: .word ov10_022C4794 +#ifdef JAPAN +_02319044: .word 0x00000A1E +_02319048: .word 0x00000A1F +#else _02319044: .word 0x00000CDE _02319048: .word 0x00000CDF +#endif arm_func_end TryInflictWishStatus arm_func_start TryInflictMagicCoatStatus @@ -186,8 +204,13 @@ _023190D4: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _023190E0: .word ov10_022C4740 +#ifdef JAPAN +_023190E4: .word 0x00000A27 +_023190E8: .word 0x00000A28 +#else _023190E4: .word 0x00000CE7 _023190E8: .word 0x00000CE8 +#endif arm_func_end TryInflictMagicCoatStatus arm_func_start TryInflictLightScreenStatus @@ -233,8 +256,13 @@ _02319174: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _02319180: .word ov10_022C4730 +#ifdef JAPAN +_02319184: .word 0x00000A34 +_02319188: .word 0x00000A35 +#else _02319184: .word 0x00000CF4 _02319188: .word 0x00000CF5 +#endif arm_func_end TryInflictLightScreenStatus arm_func_start TryInflictReflectStatus @@ -280,8 +308,13 @@ _02319214: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _02319220: .word ov10_022C472C +#ifdef JAPAN +_02319224: .word 0x00000A36 +_02319228: .word 0x00000A37 +#else _02319224: .word 0x00000CF6 _02319228: .word 0x00000CF7 +#endif arm_func_end TryInflictReflectStatus arm_func_start TryInflictProtectStatus @@ -331,8 +364,13 @@ _023192C4: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _023192D0: .word ov10_022C47B8 +#ifdef JAPAN +_023192D4: .word 0x00000A87 +_023192D8: .word 0x00000A88 +#else _023192D4: .word 0x00000D47 _023192D8: .word 0x00000D48 +#endif arm_func_end TryInflictProtectStatus arm_func_start TryInflictMirrorCoatStatus @@ -370,7 +408,11 @@ TryInflictMirrorCoatStatus: ; 0x023192DC _02319354: mov r0, r6 mov r1, r5 +#ifdef JAPAN + mov r2, #0xA90 +#else mov r2, #0xd50 +#endif bl LogMessageByIdWithPopupCheckUserTarget _02319364: mov r0, r5 @@ -378,7 +420,11 @@ _02319364: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _02319370: .word ov10_022C47CC +#ifdef JAPAN +_02319374: .word 0x00000A8F +#else _02319374: .word 0x00000D4F +#endif arm_func_end TryInflictMirrorCoatStatus arm_func_start TryInflictEndureStatus @@ -424,8 +470,13 @@ _02319400: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _0231940C: .word ov10_022C47F4 +#ifdef JAPAN +_02319410: .word 0x00000A98 +_02319414: .word 0x00000A99 +#else _02319410: .word 0x00000D58 _02319414: .word 0x00000D59 +#endif arm_func_end TryInflictEndureStatus arm_func_start TryInflictMirrorMoveStatus @@ -471,8 +522,13 @@ _023194A0: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _023194AC: .word ov10_022C4840 +#ifdef JAPAN +_023194B0: .word 0x00000A9A +_023194B4: .word 0x00000A9B +#else _023194B0: .word 0x00000D5A _023194B4: .word 0x00000D5B +#endif arm_func_end TryInflictMirrorMoveStatus arm_func_start TryInflictConversion2Status @@ -528,10 +584,15 @@ _02319568: bl UpdateStatusIconFlags ldmia sp!, {r4, r5, r6, pc} .align 2, 0 -_02319574: .word 0x00000DC4 +#ifdef JAPAN +#define TRY_INFLICT_CONVERSION2_STATUS_OFFSET -0x2C0 +#else +#define TRY_INFLICT_CONVERSION2_STATUS_OFFSET 0 +#endif +_02319574: .word 0x00000DC4 + TRY_INFLICT_CONVERSION2_STATUS_OFFSET _02319578: .word ov10_022C4854 -_0231957C: .word 0x00000D5C -_02319580: .word 0x00000D5D +_0231957C: .word 0x00000D5C + TRY_INFLICT_CONVERSION2_STATUS_OFFSET +_02319580: .word 0x00000D5D + TRY_INFLICT_CONVERSION2_STATUS_OFFSET arm_func_end TryInflictConversion2Status arm_func_start TryInflictVitalThrowStatus @@ -577,8 +638,13 @@ _0231960C: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _02319618: .word ov10_022C485C +#ifdef JAPAN +_0231961C: .word 0x00000A9E +_02319620: .word 0x00000A9F +#else _0231961C: .word 0x00000D5E _02319620: .word 0x00000D5F +#endif arm_func_end TryInflictVitalThrowStatus arm_func_start TryResetStatChanges @@ -648,7 +714,11 @@ _023196FC: beq _02319728 mov r0, r7 mov r1, r6 +#ifdef JAPAN + mov r2, #0xaa0 +#else mov r2, #0xd60 +#endif bl LogMessageByIdWithPopupCheckUserTarget b _02319738 _02319728: @@ -661,7 +731,11 @@ _02319738: bl UpdateStatusIconFlags ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +_02319744: .word 0x00000AA1 +#else _02319744: .word 0x00000D61 +#endif arm_func_end TryResetStatChanges arm_func_start MirrorMoveIsActive @@ -702,7 +776,11 @@ ExclusiveItemEffectIsActive__023197A8: ; 0x023197A8 cmp r0, #0 movne r0, #0 ldmneia sp!, {r3, pc} +#ifdef JAPAN + add r0, r2, #0x224 +#else add r0, r2, #0x228 +#endif bl ExclusiveItemEffectFlagTest ldmia sp!, {r3, pc} arm_func_end ExclusiveItemEffectIsActive__023197A8 @@ -770,6 +848,11 @@ _0231987C: .word ov29_0237CA18 arm_func_start AiConsiderMove AiConsiderMove: ; 0x02319880 +#ifdef JAPAN +#define AI_CONSIDER_MOVE_OFFSET -0xA4 +#else +#define AI_CONSIDER_MOVE_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x2c mov sl, r1 @@ -903,7 +986,7 @@ _02319A64: ldr r0, [r7] add r0, r0, r6, lsl #2 add r0, r0, #0x12000 - ldr r8, [r0, #0xb78] + ldr r8, [r0, #0xb78 + AI_CONSIDER_MOVE_OFFSET] mov r0, r8 bl EntityIsValid__02319F8C cmp r0, #0 @@ -1011,7 +1094,7 @@ _02319BF0: ldr r0, [sp, #0x20] add r0, r1, r0, lsl #2 add r0, r0, #0x12000 - ldr r0, [r0, #0xb78] + ldr r0, [r0, #0xb78 + AI_CONSIDER_MOVE_OFFSET] str r0, [sp, #0x18] bl EntityIsValid__02319F8C cmp r0, #0 @@ -1155,7 +1238,7 @@ _02319E10: ldr r0, [r7] add r0, r0, r6, lsl #2 add r0, r0, #0x12000 - ldr r8, [r0, #0xb78] + ldr r8, [r0, #0xb78 + AI_CONSIDER_MOVE_OFFSET] mov r0, r8 bl EntityIsValid__02319F8C cmp r0, #0 diff --git a/asm/overlay_29_02319FB0.s b/asm/overlay_29_02319FB0.s index 0115ea9f..b76073f1 100644 --- a/asm/overlay_29_02319FB0.s +++ b/asm/overlay_29_02319FB0.s @@ -307,7 +307,11 @@ _0231A3A4: ldr r0, [r0] add r0, r0, r1 add r0, r0, #0x3000 +#ifdef JAPAN + ldrb r4, [r0, #0xb24] +#else ldrb r4, [r0, #0xb74] +#endif b _0231A454 _0231A404: mov r0, sb @@ -636,8 +640,13 @@ _0231A868: ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 _0231A870: .word ov10_022C459C +#ifdef JAPAN +_0231A874: .word 0x00000B35 +_0231A878: .word 0x00000B37 +#else _0231A874: .word 0x00000DF5 _0231A878: .word 0x00000DF7 +#endif arm_func_end ShouldUsePp arm_func_start ExclusiveItemEffectIsActive__0231A87C @@ -648,13 +657,22 @@ ExclusiveItemEffectIsActive__0231A87C: ; 0x0231A87C cmp r0, #0 movne r0, #0 ldmneia sp!, {r3, pc} +#ifdef JAPAN + add r0, r2, #0x224 +#else add r0, r2, #0x228 +#endif bl ExclusiveItemEffectFlagTest ldmia sp!, {r3, pc} arm_func_end ExclusiveItemEffectIsActive__0231A87C arm_func_start ov29_0231A8A0 ov29_0231A8A0: ; 0x0231A8A0 +#ifdef JAPAN +#define OV29_0231A8A0_OFFSET -4 +#else +#define OV29_0231A8A0_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} sub sp, sp, #4 mov sb, r0 @@ -666,7 +684,11 @@ ov29_0231A8A0: ; 0x0231A8A0 ldr r4, [sb, #0xb4] ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrb r0, [r0, #0x36] +#else ldrb r0, [r0, #0xda] +#endif bl AreMovesEnabled cmp r0, #0 bne _0231A8EC @@ -677,13 +699,13 @@ ov29_0231A8A0: ; 0x0231A8A0 _0231A8EC: mov r1, r7 mov r0, sb - strb r1, [r4, #0x23f] + strb r1, [r4, #0x23f + OV29_0231A8A0_OFFSET] bl ShouldUsePp cmp r0, #0 movne r7, #1 - strneb r7, [r4, #0x23f] + strneb r7, [r4, #0x23f + OV29_0231A8A0_OFFSET] mov r0, #0 - strb r0, [r4, #0x23e] + strb r0, [r4, #0x23e + OV29_0231A8A0_OFFSET] _0231A910: mov r6, #0 mov r4, #1 @@ -704,9 +726,9 @@ _0231A924: beq _0231A984 bl IsFloorOver cmp r0, #0 - ldreqb r0, [r8, #0x23e] + ldreqb r0, [r8, #0x23e + OV29_0231A8A0_OFFSET] cmpeq r0, #0 - ldreqb r0, [r8, #0x163] + ldreqb r0, [r8, #0x163 + OV29_0231A8A0_OFFSET] cmpeq r0, #0 bne _0231A984 add r6, r6, #1 @@ -739,7 +761,11 @@ _0231A9C4: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} .align 2, 0 _0231A9CC: .word DUNGEON_PTR +#ifdef JAPAN +_0231A9D0: .word 0x00000B3D +#else _0231A9D0: .word 0x00000DFD +#endif arm_func_end ov29_0231A8A0 arm_func_start IsMonster__0231A9D4 @@ -797,7 +823,11 @@ _0231AA74: ldr r0, _0231AC94 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrb r0, [r0, #0x36] +#else ldrb r0, [r0, #0xda] +#endif bl AreOrbsAllowed cmp r0, #0 mov r4, #1 @@ -821,7 +851,11 @@ _0231AAB4: strb r2, [sp, #8] add r0, sp, #8 mov r1, r7 +#ifdef JAPAN + add r2, r5, #0x120 +#else add r2, r5, #0x124 +#endif str r3, [sp, #0xc] bl AiConsiderMove ldrb r0, [sp, #8] @@ -938,12 +972,17 @@ _0231AC88: add sp, sp, #0x34 ldmia sp!, {r4, r5, r6, r7, pc} .align 2, 0 -_0231AC90: .word 0x00000DF8 +#ifdef JAPAN +#define OV29_0231A9F8_OFFSET -0xC20 +#else +#define OV29_0231A9F8_OFFSET 0 +#endif +_0231AC90: .word 0x00000DF8 + OV29_0231A9F8_OFFSET _0231AC94: .word DUNGEON_PTR -_0231AC98: .word 0x00000DF9 -_0231AC9C: .word 0x00000DFA -_0231ACA0: .word 0x00000DFB -_0231ACA4: .word 0x00000DFC +_0231AC98: .word 0x00000DF9 + OV29_0231A9F8_OFFSET +_0231AC9C: .word 0x00000DFA + OV29_0231A9F8_OFFSET +_0231ACA0: .word 0x00000DFB + OV29_0231A9F8_OFFSET +_0231ACA4: .word 0x00000DFC + OV29_0231A9F8_OFFSET _0231ACA8: .word 0x00000141 arm_func_end ov29_0231A9F8 @@ -1029,7 +1068,11 @@ ov29_0231ADA8: ; 0x0231ADA8 ldr r1, [r0, #0xb4] mov r0, #0 mov r5, r0 +#ifdef JAPAN + add r4, r1, #0x120 +#else add r4, r1, #0x124 +#endif mov ip, r0 mov lr, #1 add r2, sp, #0 @@ -1076,7 +1119,11 @@ ov29_0231AE3C: ; 0x0231AE3C mov r3, #1 _0231AE54: add r1, ip, lr, lsl #3 +#ifdef JAPAN + ldrb r1, [r1, #0x120] +#else ldrb r1, [r1, #0x124] +#endif tst r1, #1 movne r1, r3 moveq r1, r2 @@ -1144,6 +1191,11 @@ _0231AF20: .word WEATHER_BALL_TYPE_TABLE arm_func_start ov29_0231AF24 ov29_0231AF24: ; 0x0231AF24 +#ifdef JAPAN +#define OV29_0231AF24_OFFSET -4 +#else +#define OV29_0231AF24_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, lr} sub sp, sp, #4 mov r6, r0 @@ -1166,13 +1218,13 @@ ov29_0231AF24: ; 0x0231AF24 add r0, r4, #0x4a bl SetActionUseMoveAi mov r2, #1 - strb r2, [r4, #0x124] + strb r2, [r4, #0x124 + OV29_0231AF24_OFFSET] add r0, r4, #0x100 mov r1, #0 - strh r1, [r0, #0x26] - strh r5, [r0, #0x28] - strb r2, [r4, #0x12a] - strb r1, [r4, #0x12b] + strh r1, [r0, #0x26 + OV29_0231AF24_OFFSET] + strh r5, [r0, #0x28 + OV29_0231AF24_OFFSET] + strb r2, [r4, #0x12a + OV29_0231AF24_OFFSET] + strb r1, [r4, #0x12b + OV29_0231AF24_OFFSET] _0231AF98: mov r3, #0 mov r0, r6 @@ -1194,8 +1246,13 @@ ov29_0231AFB4: ; 0x0231AFB4 _0231AFC8: ldr r0, [r1] mov r4, r3 +#ifdef JAPAN + add r0, r0, #0x1840 + add r0, r0, #0x18000 +#else add r0, r0, #0xe4 add r0, r0, #0x19800 +#endif add lr, r0, ip, lsl #4 _0231AFDC: str r2, [lr, r4, lsl #3] @@ -1223,8 +1280,13 @@ ov29_0231B008: ; 0x0231B008 _0231B020: ldr r0, [r1] mov r5, ip +#ifdef JAPAN + add r0, r0, #0x1840 + add r0, r0, #0x18000 +#else add r0, r0, #0xe4 add r0, r0, #0x19800 +#endif add r4, r0, lr, lsl #4 _0231B034: str r3, [r4, r5, lsl #3] @@ -1245,9 +1307,15 @@ _0231B05C: .word DUNGEON_PTR ActivateMotorDrive: ; 0x0231B060 stmdb sp!, {r3, r4, lr} sub sp, sp, #4 +#ifdef JAPAN + mov ip, #0x66 + mov r4, r0 + rsb r2, ip, #0x9e0 +#else ldr r2, _0231B0A0 ; =0x00000C3B mov ip, #0x66 mov r4, r0 +#endif mov r1, #0 mov r3, #2 str ip, [sp] @@ -1260,7 +1328,9 @@ ActivateMotorDrive: ; 0x0231B060 add sp, sp, #4 ldmia sp!, {r3, r4, pc} .align 2, 0 +#ifndef JAPAN _0231B0A0: .word 0x00000C3B +#endif arm_func_end ActivateMotorDrive arm_func_start TryActivateFrisk @@ -1326,6 +1396,11 @@ _0231B184: add sp, sp, #8 ldmia sp!, {r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_0231B18C: .word 0x0000097C +_0231B190: .word 0x0000097B +#else _0231B18C: .word 0x00000C3D _0231B190: .word 0x00000C3C +#endif arm_func_end TryActivateFrisk diff --git a/asm/overlay_29_0231B1B8.s b/asm/overlay_29_0231B1B8.s index 42784dbf..9dc1ee96 100644 --- a/asm/overlay_29_0231B1B8.s +++ b/asm/overlay_29_0231B1B8.s @@ -22,7 +22,11 @@ _0231B1EC: ldr r0, [r4] add r0, r0, r7, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r8, [r0, #0xad4] +#else ldr r8, [r0, #0xb78] +#endif mov r0, r8 bl IsMonster__0231B318 cmp r0, #0 @@ -124,8 +128,13 @@ ActivateStench: ; 0x0231B33C ldr r0, _0231B360 ; =ov10_022C457C mov r1, #2 ldrsh r0, [r0] +#ifdef JAPAN + strb r1, [r4, #0x103] + strb r0, [r4, #0x104] +#else strb r1, [r4, #0x104] strb r0, [r4, #0x105] +#endif ldmia sp!, {r4, pc} .align 2, 0 _0231B360: .word ov10_022C457C @@ -237,7 +246,11 @@ ov29_0231B490: ; 0x0231B490 mov r1, #0 ldr r0, [r0] add r0, r0, #0x3000 +#ifdef JAPAN + strb r1, [r0, #0xd98] +#else strb r1, [r0, #0xe3c] +#endif bx lr .align 2, 0 _0231B4A8: .word DUNGEON_PTR @@ -250,7 +263,11 @@ ov29_0231B4AC: ; 0x0231B4AC ldreq r0, _0231B4E8 ; =DUNGEON_PTR ldreq r0, [r0] addeq r0, r0, #0x3000 +#ifdef JAPAN + ldreqb r0, [r0, #0xd98] +#else ldreqb r0, [r0, #0xe3c] +#endif ldmeqia sp!, {r3, pc} cmp r0, #1 movne r0, #0 @@ -355,7 +372,11 @@ _0231B5F4: movne r1, #0 ldr r0, [r0] add r0, r0, #0x3000 +#ifdef JAPAN + strb r1, [r0, #0xd98] +#else strb r1, [r0, #0xe3c] +#endif bl sub_020017EC bl ov29_022E81F8 mov r0, #1 @@ -1521,14 +1542,19 @@ _0231C6B0: bl TryInflictDropeyeStatus b _0231CB14 .align 2, 0 +#ifdef JAPAN +#define APPLY_ITEM_EFFECT_OFFSET -0x2C1 +#else +#define APPLY_ITEM_EFFECT_OFFSET 0 +#endif _0231C6C0: .word 0x000001AB _0231C6C4: .word 0x00001317 -_0231C6C8: .word 0x00000BE6 -_0231C6CC: .word 0x00000BE7 +_0231C6C8: .word 0x00000BE6 + APPLY_ITEM_EFFECT_OFFSET +_0231C6CC: .word 0x00000BE7 + APPLY_ITEM_EFFECT_OFFSET _0231C6D0: .word ov10_022C4574 _0231C6D4: .word 0x00000256 _0231C6D8: .word ov10_022C4558 -_0231C6DC: .word 0x00000BE8 +_0231C6DC: .word 0x00000BE8 + APPLY_ITEM_EFFECT_OFFSET _0231C6E0: .word 0x0000016B _0231C6E4: .word 0x00000192 _0231C6E8: .word 0x00000196 @@ -1832,7 +1858,11 @@ _0231CB14: cmp r0, #0 movne r0, #0 bne _0231CB48 +#ifdef JAPAN + add r0, r1, #0x224 +#else add r0, r1, #0x228 +#endif mov r1, #0x5d bl ExclusiveItemEffectFlagTest _0231CB48: @@ -1871,10 +1901,10 @@ _0231CBA4: add sp, sp, #0x5c ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} .align 2, 0 -_0231CBAC: .word 0x00000C75 +_0231CBAC: .word 0x00000C75 + APPLY_ITEM_EFFECT_OFFSET _0231CBB0: .word OREN_BERRY_DAMAGE -_0231CBB4: .word 0x00000C67 -_0231CBB8: .word 0x00000C76 +_0231CBB4: .word 0x00000C67 + APPLY_ITEM_EFFECT_OFFSET +_0231CBB8: .word 0x00000C76 + APPLY_ITEM_EFFECT_OFFSET _0231CBBC: .word ov10_022C44EC _0231CBC0: .word APPLES_AND_BERRIES_ITEM_IDS _0231CBC4: .word ov10_022C4864 diff --git a/asm/overlay_29_0231CBEC.s b/asm/overlay_29_0231CBEC.s index 6cf59e14..bfb0d63e 100644 --- a/asm/overlay_29_0231CBEC.s +++ b/asm/overlay_29_0231CBEC.s @@ -17,7 +17,11 @@ _0231CC08: bl LogMessageByIdWithPopupCheckUserTarget ldmia sp!, {r3, pc} .align 2, 0 +#ifdef JAPAN +_0231CC14: .word 0x00000928 +#else _0231CC14: .word 0x00000BE9 +#endif arm_func_end ApplyCheriBerryEffect arm_func_start ApplyPechaBerryEffect @@ -36,7 +40,11 @@ _0231CC3C: bl LogMessageByIdWithPopupCheckUserTarget ldmia sp!, {r3, pc} .align 2, 0 +#ifdef JAPAN +_0231CC48: .word 0x00000928 +#else _0231CC48: .word 0x00000BE9 +#endif arm_func_end ApplyPechaBerryEffect arm_func_start ApplyRawstBerryEffect @@ -60,11 +68,20 @@ _0231CC70: bl LogMessageByIdWithPopupCheckUserTarget ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_0231CC90: .word 0x00000929 +#else _0231CC90: .word 0x00000BEA +#endif arm_func_end ApplyRawstBerryEffect arm_func_start ApplyHungerSeedEffect ApplyHungerSeedEffect: ; 0x0231CC94 +#ifdef JAPAN +#define APPLY_HUNGER_SEED_EFFECT_OFFSET -4 +#else +#define APPLY_HUNGER_SEED_EFFECT_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, lr} sub sp, sp, #4 mov r5, r1 @@ -93,10 +110,10 @@ _0231CCC4: b _0231CD6C _0231CCF8: add r0, r4, #0x100 - ldrh r1, [r0, #0x46] + ldrh r1, [r0, #0x46 + APPLY_HUNGER_SEED_EFFECT_OFFSET] sub r2, sp, #4 strh r1, [r2] - ldrh r0, [r0, #0x48] + ldrh r0, [r0, #0x48 + APPLY_HUNGER_SEED_EFFECT_OFFSET] strh r0, [r2, #2] ldr r0, [r2] bl CeilFixedPoint @@ -110,11 +127,11 @@ _0231CCF8: ldrh r0, [sp] add r3, r4, #0x100 ldrh r4, [sp, #2] - strh r0, [r3, #0x46] + strh r0, [r3, #0x46 + APPLY_HUNGER_SEED_EFFECT_OFFSET] ldr r2, _0231CD78 ; =0x00000BEC mov r0, r6 mov r1, r5 - strh r4, [r3, #0x48] + strh r4, [r3, #0x48 + APPLY_HUNGER_SEED_EFFECT_OFFSET] bl LogMessageByIdWithPopupCheckUserTarget b _0231CD6C _0231CD5C: @@ -126,9 +143,15 @@ _0231CD6C: add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_0231CD74: .word 0x0000092B +_0231CD78: .word 0x0000092C +_0231CD7C: .word 0x0000092D +#else _0231CD74: .word 0x00000BEB _0231CD78: .word 0x00000BEC _0231CD7C: .word 0x00000BED +#endif arm_func_end ApplyHungerSeedEffect arm_func_start ApplyVileSeedEffect @@ -184,6 +207,14 @@ ApplyViolentSeedEffect: ; 0x0231CE1C ldrsh r3, [r4, #0x24] ldr r2, [r2] mov r6, r0 +#ifdef JAPAN + bl BoostOffensiveStat + ldr r0, _0231CE64 ; =SPATK_STAT_IDX + ldrsh r3, [r4, #0x26] + ldr r2, [r0] + mov r0, r6 + mov r1, r5 +#else rsb r3, r3, #0x14 bl BoostOffensiveStat ldrsh r3, [r4, #0x26] @@ -192,6 +223,7 @@ ApplyViolentSeedEffect: ; 0x0231CE1C ldr r2, [r1] mov r1, r5 rsb r3, r3, #0x14 +#endif bl BoostOffensiveStat ldmia sp!, {r4, r5, r6, pc} .align 2, 0 @@ -212,7 +244,11 @@ ApplyGinsengEffect: ; 0x0231CE68 ldr r1, _0231CF78 ; =GINSENG_CHANCE_3 mov ip, #0 ldrsh r1, [r1] +#ifdef JAPAN + add r3, r6, #0x120 +#else add r3, r6, #0x124 +#endif cmp r0, r1 movlt r5, #3 mov r0, ip @@ -254,9 +290,15 @@ _0231CF18: ldrh r1, [r7, #4] mov r0, #0 bl ov29_0234B084 +#ifdef JAPAN + ldr r2, _0231E440 ; =0x0000092F + mov r0, sb + mov r1, r8 +#else mov r0, sb mov r1, r8 mov r2, #0xbf0 +#endif bl LogMessageByIdWithPopupCheckUserTarget cmp r5, #1 ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} @@ -276,8 +318,14 @@ _0231CF64: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 _0231CF78: .word GINSENG_CHANCE_3 +#ifdef JAPAN +_0231E440: .word 0x0000092F +_0231CF7C: .word 0x0000092F +_0231CF80: .word 0x0000092E +#else _0231CF7C: .word 0x00000BEF _0231CF80: .word 0x00000BEE +#endif arm_func_end ApplyGinsengEffect arm_func_start ApplyBlastSeedEffect @@ -364,7 +412,11 @@ _0231D0A0: _0231D0A8: .word ov10_022C45D8 _0231D0AC: .word ov10_022C45D4 _0231D0B0: .word 0x00000255 +#ifdef JAPAN +_0231D0B4: .word 0x00000931 +#else _0231D0B4: .word 0x00000BF2 +#endif _0231D0B8: .word ov10_022C45DC _0231D0BC: .word ov10_022C44E8 arm_func_end ApplyBlastSeedEffect @@ -628,21 +680,26 @@ _0231D460: add sp, sp, #8 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +#define APPLY_GUMMI_BOOSTS_DUNGEON_MODE_OFFSET -0xA4 +#else +#define APPLY_GUMMI_BOOSTS_DUNGEON_MODE_OFFSET 0 +#endif _0231D468: .word WONDER_GUMMI_IQ_GAIN _0231D46C: .word _020A1894 _0231D470: .word IQ_GUMMI_GAIN_TABLE _0231D474: .word GUMMI_BELLY_RESTORE_TABLE _0231D478: .word 0x000003E7 -_0231D47C: .word 0x00000BF3 +_0231D47C: .word 0x00000BF3 + APPLY_GUMMI_BOOSTS_DUNGEON_MODE_OFFSET _0231D480: .word GUMMI_LIKE_STRING_IDS _0231D484: .word GUMMI_IQ_STRING_IDS _0231D488: .word ov10_022C44CC _0231D48C: .word ov10_022C45E4 _0231D490: .word ov29_023529B0 -_0231D494: .word 0x00000BF7 -_0231D498: .word 0x00000BF8 -_0231D49C: .word 0x00000BF9 -_0231D4A0: .word 0x00000BFA +_0231D494: .word 0x00000BF7 + APPLY_GUMMI_BOOSTS_DUNGEON_MODE_OFFSET +_0231D498: .word 0x00000BF8 + APPLY_GUMMI_BOOSTS_DUNGEON_MODE_OFFSET +_0231D49C: .word 0x00000BF9 + APPLY_GUMMI_BOOSTS_DUNGEON_MODE_OFFSET +_0231D4A0: .word 0x00000BFA + APPLY_GUMMI_BOOSTS_DUNGEON_MODE_OFFSET arm_func_end ApplyGummiBoostsDungeonMode arm_func_start CanMonsterUseItem @@ -684,8 +741,13 @@ _0231D524: mov r0, #1 ldmia sp!, {r4, pc} .align 2, 0 +#ifdef JAPAN +_0231D52C: .word 0x00000926 +_0231D530: .word 0x00000935 +#else _0231D52C: .word 0x00000BE7 _0231D530: .word 0x00000BF6 +#endif arm_func_end CanMonsterUseItem arm_func_start ApplyGrimyFoodEffect @@ -812,7 +874,11 @@ _0231D6C4: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _0231D6D8: .word 0x000003E7 +#ifdef JAPAN +_0231D6DC: .word 0x000009A3 +#else _0231D6DC: .word 0x00000C64 +#endif arm_func_end ApplyMixElixirEffect arm_func_start ApplyDoughSeedEffect @@ -844,8 +910,13 @@ _0231D730: bl LogMessageByIdWithPopupCheckUserTarget ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_0231D744: .word 0x000009AD +_0231D748: .word 0x000009AE +#else _0231D744: .word 0x00000C6E _0231D748: .word 0x00000C6F +#endif arm_func_end ApplyDoughSeedEffect arm_func_start ApplyViaSeedEffect @@ -880,8 +951,13 @@ _0231D7A0: bl TryWarp ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_0231D7B8: .word 0x000009A7 +_0231D7BC: .word 0x000009A8 +#else _0231D7B8: .word 0x00000C68 _0231D7BC: .word 0x00000C69 +#endif arm_func_end ApplyViaSeedEffect arm_func_start ApplyGravelyrockEffect @@ -975,14 +1051,20 @@ ApplyGonePebbleEffect: ; 0x0231D838 ldr r0, _0231D9BC ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrsh r0, [r0, #0x32] +#else ldrsh r0, [r0, #0xd6] +#endif bl MusicTableIdxToMusicId bl ChangeDungeonMusic mov r0, r4 bl ov29_022EAF34 +#ifndef JAPAN bl UpdateMinimap mov r0, #1 bl ov29_02339FF4 +#endif mov r0, #0 bl GetApparentWeather bl GetWeatherColorTable @@ -1019,9 +1101,15 @@ _0231D9A8: add sp, sp, #0xc ldmia sp!, {r3, r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_0231D9B0: .word 0x000003F3 +_0231D9B4: .word 0x000009A4 +_0231D9B8: .word 0x000009A5 +#else _0231D9B0: .word 0x000003FF _0231D9B4: .word 0x00000C65 _0231D9B8: .word 0x00000C66 +#endif _0231D9BC: .word DUNGEON_PTR arm_func_end ApplyGonePebbleEffect @@ -1043,8 +1131,13 @@ ApplyGracideaEffect: ; 0x0231D9C0 bl SubstitutePlaceholderStringTags cmp r4, #3 bne _0231DA10 +#ifdef JAPAN + mov r0, r5 + mov r1, #0x9b0 +#else ldr r1, _0231DA70 ; =0x00000C71 mov r0, r5 +#endif bl LogMessageByIdWithPopupCheckUser ldmia sp!, {r3, r4, r5, pc} _0231DA10: @@ -1076,10 +1169,16 @@ _0231DA50: bl LogMessageByIdWithPopupCheckUser ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_0231DA74: .word 0x000009B1 +_0231DA78: .word 0x000009B3 +_0231DA7C: .word 0x000009B2 +#else _0231DA70: .word 0x00000C71 _0231DA74: .word 0x00000C72 _0231DA78: .word 0x00000C74 _0231DA7C: .word 0x00000C73 +#endif arm_func_end ApplyGracideaEffect arm_func_start ov29_0231DA80 @@ -1120,7 +1219,11 @@ _0231DAF8: ldr r0, [fp] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r7, [r0, #0xa84] +#else ldr r7, [r0, #0xb28] +#endif mov r0, r7 bl EntityIsValid__0231CBC8 cmp r0, #0 @@ -1146,14 +1249,20 @@ _0231DAF8: bl IsExperienceLocked cmp r0, #0 movne r6, #0 +#ifdef JAPAN + strb r6, [r8, #0x15d] +#else strb r6, [r8, #0x161] +#endif _0231DB70: add r4, r4, #1 cmp r4, #4 blt _0231DAF8 mov r0, #0 mov r2, r0 +#ifndef JAPAN mov r3, r0 +#endif mov r1, #1 bl ov31_023877EC mov r4, r0 @@ -1177,8 +1286,13 @@ _0231DB70: mov r0, #1 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +_0231DBE0: .word 0x00000926 +_0231DBE4: .word 0x00000933 +#else _0231DBE0: .word 0x00000BE7 _0231DBE4: .word 0x00000BF4 +#endif _0231DBE8: .word DUNGEON_PTR _0231DBEC: .word 0x00000141 arm_func_end ov29_0231DA80 @@ -1219,7 +1333,11 @@ _0231DC60: ldr r0, [r4] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r7, [r0, #0xa84] +#else ldr r7, [r0, #0xb28] +#endif mov r0, r7 bl EntityIsValid__0231CBC8 cmp r0, #0 @@ -1251,15 +1369,24 @@ _0231DCAC: movne r6, #0 cmp r0, #0 movne r6, #0 +#ifdef JAPAN + strb r6, [r8, #0x15d] +#else strb r6, [r8, #0x161] +#endif _0231DCEC: add r5, r5, #1 cmp r5, #4 blt _0231DC60 mov r0, #0 +#ifdef JAPAN + mov r2, r0 + mov r1, #1 +#else mov r1, #1 mov r2, r0 mov r3, r1 +#endif bl ov31_023877EC mov r4, r0 bl EntityIsValid__0231CBC8 @@ -1279,9 +1406,15 @@ _0231DCEC: mov r0, #1 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +_0231DD50: .word 0x00000926 +_0231DD54: .word DUNGEON_PTR +_0231DD58: .word 0x000008E3 +#else _0231DD50: .word 0x00000BE7 _0231DD54: .word DUNGEON_PTR _0231DD58: .word 0x00000BA4 +#endif _0231DD5C: .word 0x00000142 arm_func_end ov29_0231DBF0 @@ -1312,7 +1445,11 @@ _0231DDB0: ldr r0, [fp] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r7, [r0, #0xa84] +#else ldr r7, [r0, #0xb28] +#endif mov r0, r7 bl EntityIsValid__0231CBC8 cmp r0, #0 @@ -1331,14 +1468,20 @@ _0231DDB0: bl IsExperienceLocked cmp r0, #0 movne r7, #0 +#ifdef JAPAN + strb r7, [r8, #0x15d] +#else strb r7, [r8, #0x161] +#endif _0231DE0C: add r5, r5, #1 cmp r5, #4 blt _0231DDB0 mov r0, #0 mov r2, r0 +#ifndef JAPAN mov r3, r0 +#endif mov r1, #1 bl ov31_023877EC str r0, [sp, #4] @@ -1494,14 +1637,27 @@ _0231E044: add sp, sp, #0x1c ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +_0231E04C: .word 0x00000926 +#else _0231E04C: .word 0x00000BE7 +#endif _0231E050: .word DUNGEON_PTR _0231E054: .word 0x0000016A +#ifdef JAPAN +_0231E058: .word 0x00000934 +#else _0231E058: .word 0x00000BF5 +#endif arm_func_end ov29_0231DD60 arm_func_start ov29_0231E05C ov29_0231E05C: ; 0x0231E05C +#ifdef JAPAN +#define OV29_0231E05C_OFFSET -4 +#else +#define OV29_0231E05C_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} mov r7, r0 tst r2, #1 @@ -1678,10 +1834,10 @@ _0231E2FC: cmp r5, #0 beq _0231E330 add r0, r6, #0x100 - ldrh r1, [r0, #0x46] + ldrh r1, [r0, #0x46 + OV29_0231E05C_OFFSET] sub r2, sp, #4 strh r1, [r2] - ldrh r0, [r0, #0x48] + ldrh r0, [r0, #0x48 + OV29_0231E05C_OFFSET] strh r0, [r2, #2] ldr r0, [r2] bl CeilFixedPoint @@ -1740,7 +1896,7 @@ _0231E3D8: cmp r1, #0 beq _0231E8E0 mov r4, #0 - add r7, r6, #0x124 + add r7, r6, #0x124 + OV29_0231E05C_OFFSET mov r8, r4 mov r5, r4 mov r6, #1 @@ -1822,7 +1978,7 @@ _0231E4D8: moveq r4, #5 b _0231E8E0 _0231E504: - ldr r0, [r6, #0x110] + ldr r0, [r6, #0x110 + OV29_0231E05C_OFFSET] cmp r0, #3 movgt r0, #0 ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} @@ -1963,10 +2119,10 @@ _0231E6E4: b _0231E8E0 _0231E6FC: add r0, r6, #0x100 - ldrh r1, [r0, #0x46] + ldrh r1, [r0, #0x46 + OV29_0231E05C_OFFSET] sub r2, sp, #4 strh r1, [r2] - ldrh r0, [r0, #0x48] + ldrh r0, [r0, #0x48 + OV29_0231E05C_OFFSET] strh r0, [r2, #2] ldr r0, [r2] bl CeilFixedPoint @@ -2064,10 +2220,10 @@ _0231E83C: b _0231E8E0 _0231E864: add r0, r6, #0x100 - ldrh r1, [r0, #0x46] + ldrh r1, [r0, #0x46 + OV29_0231E05C_OFFSET] sub r2, sp, #4 strh r1, [r2] - ldrh r0, [r0, #0x48] + ldrh r0, [r0, #0x48 + OV29_0231E05C_OFFSET] strh r0, [r2, #2] ldr r0, [r2] bl CeilFixedPoint @@ -2227,6 +2383,11 @@ CategoryIsNotPhysical: ; 0x0231EA30 arm_func_start ov29_0231EA40 ov29_0231EA40: ; 0x0231EA40 +#ifdef JAPAN +#define OV29_0231EA40_OFFSET -0xA4 +#else +#define OV29_0231EA40_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} mov sl, r0 bl IsFullFloorFixedRoom @@ -2235,7 +2396,7 @@ ov29_0231EA40: ; 0x0231EA40 ldr r0, _0231EDC8 ; =DUNGEON_PTR ldr r0, [r0] add r1, r0, #0x4000 - ldrsh r0, [r1, #0xd4] + ldrsh r0, [r1, #0xd4 + OV29_0231EA40_OFFSET] sub r2, r0, #0x1a mov r2, r2, lsl #0x10 mov r2, r2, asr #0x10 @@ -2249,7 +2410,7 @@ _0231EA80: bl LogMessageByIdWithPopupCheckUser ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} _0231EA90: - ldrb r2, [r1, #0xc4] + ldrb r2, [r1, #0xc4 + OV29_0231EA40_OFFSET] cmp r2, #0 beq _0231EAAC ldr r1, _0231EDD0 ; =0x00000DFF @@ -2257,11 +2418,15 @@ _0231EA90: bl LogMessageByIdWithPopupCheckUser ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} _0231EAAC: - ldrb r1, [r1, #0xc7] + ldrb r1, [r1, #0xc7 + OV29_0231EA40_OFFSET] cmp r1, #0 beq _0231EAC8 mov r0, sl +#ifdef JAPAN + mov r1, #0xb40 +#else mov r1, #0xe00 +#endif bl LogMessageByIdWithPopupCheckUser ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} _0231EAC8: @@ -2345,8 +2510,8 @@ _0231EBCC: mov r2, #1 ldr r0, [r0] add r1, r0, #0xcc00 - ldrsh r0, [r1, #0xe4] - ldrsh r1, [r1, #0xe6] + ldrsh r0, [r1, #0xe4 + OV29_0231EA40_OFFSET] + ldrsh r1, [r1, #0xe6 + OV29_0231EA40_OFFSET] bl StairsAlwaysReachable cmp r0, #0 beq _0231EC64 @@ -2383,7 +2548,7 @@ _0231EC64: ldrne r0, [r0] movne r1, #0 addne r0, r0, #0x4000 - strneb r1, [r0, #0xc9] + strneb r1, [r0, #0xc9 + OV29_0231EA40_OFFSET] mov r4, r5 _0231EC84: mov r7, r4 @@ -2412,7 +2577,7 @@ _0231ECD4: ldr r0, [r4] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 - ldr r6, [r0, #0xb78] + ldr r6, [r0, #0xb78 + OV29_0231EA40_OFFSET] mov r0, r6 bl EntityIsValid__0231EDD8 cmp r0, #0 @@ -2447,7 +2612,7 @@ _0231ED58: ldr r0, [r4] add r0, r0, r6, lsl #2 add r0, r0, #0x12000 - ldr r5, [r0, #0xb78] + ldr r5, [r0, #0xb78 + OV29_0231EA40_OFFSET] mov r0, r5 bl EntityIsValid__0231EDD8 cmp r0, #0 @@ -2470,12 +2635,18 @@ _0231ED98: mov r0, #0x14 add r2, r1, #0x4000 mov r1, #0x2b - strb r3, [r2, #0xc4] + strb r3, [r2, #0xc4 + OV29_0231EA40_OFFSET] bl ov29_022EA370 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _0231EDC8: .word DUNGEON_PTR +#ifdef JAPAN +_0231EDCC: .word 0x00000B41 +_0231EDD0: .word 0x00000B3F +_0231EDD4: .word 0x00000B3E +#else _0231EDCC: .word 0x00000E01 _0231EDD0: .word 0x00000DFF _0231EDD4: .word 0x00000DFE +#endif arm_func_end ov29_0231EA40 diff --git a/asm/overlay_29_0231EDFC.s b/asm/overlay_29_0231EDFC.s index e622ad0b..0f02de83 100644 --- a/asm/overlay_29_0231EDFC.s +++ b/asm/overlay_29_0231EDFC.s @@ -73,7 +73,11 @@ _0231EEE0: ldr r0, [r0] add r0, r0, r6, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr sb, [r0, #0xad4] +#else ldr sb, [r0, #0xb78] +#endif mov r0, sb bl EntityIsValid__0231F570 cmp r0, #0 @@ -511,12 +515,17 @@ _0231F53C: add sp, sp, #0xf4 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 -_0231F544: .word 0x00000E45 -_0231F548: .word 0x00000E46 +#ifdef JAPAN +#define OV29_0231EDFC_OFFSET -0xA4 +#else +#define OV29_0231EDFC_OFFSET 0 +#endif +_0231F544: .word 0x00000E45 + OV29_0231EDFC_OFFSET +_0231F548: .word 0x00000E46 + OV29_0231EDFC_OFFSET _0231F54C: .word DIRECTIONS_XY _0231F550: .word DUNGEON_PTR -_0231F554: .word 0x00000E48 -_0231F558: .word 0x00000E47 +_0231F554: .word 0x00000E48 + OV29_0231EDFC_OFFSET +_0231F558: .word 0x00000E47 + OV29_0231EDFC_OFFSET _0231F55C: .word 0x00000212 _0231F560: .word ov29_0235171E _0231F564: .word 0x00000163 diff --git a/asm/overlay_29_0231F594.s b/asm/overlay_29_0231F594.s index e8112339..12e62a4d 100644 --- a/asm/overlay_29_0231F594.s +++ b/asm/overlay_29_0231F594.s @@ -11,7 +11,11 @@ TryDrought: ; 0x0231F594 ldr r0, [r1] mov r6, #0 add r0, r0, #0x4000 +#ifdef JAPAN + ldrb r0, [r0, #0x36] +#else ldrb r0, [r0, #0xda] +#endif bl AreOrbsAllowedVeneer cmp r0, #0 bne _0231F5CC @@ -96,25 +100,41 @@ _0231F6B4: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 _0231F6D4: .word DUNGEON_PTR +#ifdef JAPAN +_0231F6D8: .word 0x00000947 +_0231F6DC: .word 0x00000948 +_0231F6E0: .word 0x00000946 +#else _0231F6D8: .word 0x00000C08 _0231F6DC: .word 0x00000C09 _0231F6E0: .word 0x00000C07 +#endif arm_func_end TryDrought arm_func_start ov29_0231F6E4 ov29_0231F6E4: ; 0x0231F6E4 +#ifdef JAPAN +#define OV29_0231F6E4_OFFSET -0xA4 +#else +#define OV29_0231F6E4_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x38 ldr r1, _0231FBE4 ; =DUNGEON_PTR mov sl, r0 ldr r0, [r1] add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] + ldrb r0, [r0, #0xda + OV29_0231F6E4_OFFSET] bl AreTrawlOrbsAllowed cmp r0, #0 bne _0231F71C +#ifdef JAPAN + ldr r1, _02321094 ; =0x0000090F + mov r0, sl +#else mov r0, sl mov r1, #0xbd0 +#endif bl LogMessageByIdWithPopupCheckUser b _0231FBDC _0231F71C: @@ -133,7 +153,7 @@ _0231F71C: _0231F74C: add r0, r1, r8, lsl #2 add r0, r0, #0x12000 - ldr r7, [r0, #0xbc8] + ldr r7, [r0, #0xbc8 + OV29_0231F6E4_OFFSET] mov r0, r7 bl EntityIsValid__0231FBFC cmp r0, #0 @@ -193,15 +213,27 @@ _0231F7A0: ldr r2, [r1] mov r1, #6 mla r1, r8, r1, r2 +#ifdef JAPAN + add r1, r1, #0x3d00 + ldrh r2, [r1, #0x9c] +#else add r1, r1, #0x3e00 ldrh r2, [r1, #0x40] +#endif add r0, r0, #0x1100 add r5, r5, #0xb8 strh r2, [r0, #0xf8] +#ifdef JAPAN + ldrh r2, [r1, #0x9e] + add r6, r6, #1 + strh r2, [r0, #0xfa] + ldrh r1, [r1, #0xa0] +#else ldrh r2, [r1, #0x42] add r6, r6, #1 strh r2, [r0, #0xfa] ldrh r1, [r1, #0x44] +#endif strh r1, [r0, #0xfc] _0231F868: add r8, r8, #1 @@ -209,7 +241,7 @@ _0231F86C: ldr r0, _0231FBE4 ; =DUNGEON_PTR ldr r1, [r0] add r0, r1, #0x3f00 - ldrsh r0, [r0, #0xc0] + ldrsh r0, [r0, #0xc0 + OV29_0231F6E4_OFFSET] cmp r8, r0 blt _0231F74C _0231F884: @@ -351,7 +383,7 @@ _0231FA58: ldr r0, [r0] mov r8, r7 add r0, r0, #0x1a000 - ldrb r0, [r0, #0x245] + ldrb r0, [r0, #0x245 + OV29_0231F6E4_OFFSET] mov r5, r7 str r0, [sp, #8] _0231FA8C: @@ -434,8 +466,13 @@ _0231FB9C: ldr r0, [sp, #0xc] cmp r0, #0 beq _0231FBC0 +#ifdef JAPAN + mov r0, sl + mov r1, #0x910 +#else ldr r1, _0231FBF8 ; =0x00000BD1 mov r0, sl +#endif bl LogMessageByIdWithPopupCheckUser b _0231FBCC _0231FBC0: @@ -453,9 +490,17 @@ _0231FBDC: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _0231FBE4: .word DUNGEON_PTR +#ifdef JAPAN +_02321094: .word 0x0000090F +_0231FBE8: .word 0x000013BC +_0231FBEC: .word 0x0000090E +#else _0231FBE8: .word 0x000013BC _0231FBEC: .word 0x00000BCF +#endif _0231FBF0: .word DISPLACEMENTS_WITHIN_2_SMALLEST_FIRST _0231FBF4: .word 0x00000222 +#ifndef JAPAN _0231FBF8: .word 0x00000BD1 +#endif arm_func_end ov29_0231F6E4 diff --git a/asm/overlay_29_0231FC20.s b/asm/overlay_29_0231FC20.s index 7331dd1d..b87daac4 100644 --- a/asm/overlay_29_0231FC20.s +++ b/asm/overlay_29_0231FC20.s @@ -49,7 +49,11 @@ _0231FCB4: ldr r0, _0231FDD4 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrb r0, [r0, #0x36] +#else ldrb r0, [r0, #0xda] +#endif bl AreTileJumpsAllowed cmp r0, #0 bne _0231FCE4 @@ -121,9 +125,15 @@ _0231FDB4: bl ov29_0232124C ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +_0231FDD0: .word 0x00000B98 +_0231FDD4: .word DUNGEON_PTR +_0231FDD8: .word 0x00000B97 +#else _0231FDD0: .word 0x00000E56 _0231FDD4: .word DUNGEON_PTR _0231FDD8: .word 0x00000E55 +#endif _0231FDDC: .word DIRECTIONS_XY arm_func_end TryPounce @@ -136,7 +146,11 @@ TryBlowAway: ; 0x0231FDE0 ldr r0, [r3] mov sb, r1 add r0, r0, #0x4000 +#ifdef JAPAN + ldrb r0, [r0, #0x36] +#else ldrb r0, [r0, #0xda] +#endif mov r1, #0xa mov r4, r2 str r1, [sp, #0x20] @@ -366,12 +380,17 @@ _0232014C: add sp, sp, #0x30 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +#define TRY_BLOW_AWAY_OFFSET -0x2C1 +#else +#define TRY_BLOW_AWAY_OFFSET 0 +#endif _02320154: .word DUNGEON_PTR -_02320158: .word 0x00000B97 -_0232015C: .word 0x00000B98 -_02320160: .word 0x00000B99 +_02320158: .word 0x00000B97 + TRY_BLOW_AWAY_OFFSET +_0232015C: .word 0x00000B98 + TRY_BLOW_AWAY_OFFSET +_02320160: .word 0x00000B99 + TRY_BLOW_AWAY_OFFSET _02320164: .word 0x00000212 -_02320168: .word 0x00000B96 +_02320168: .word 0x00000B96 + TRY_BLOW_AWAY_OFFSET _0232016C: .word DIRECTIONS_XY _02320170: .word ov10_022C4570 _02320174: .word 0x00000163 diff --git a/asm/overlay_29_023201A0.s b/asm/overlay_29_023201A0.s index 03461f86..9fbfc116 100644 --- a/asm/overlay_29_023201A0.s +++ b/asm/overlay_29_023201A0.s @@ -215,7 +215,11 @@ _0232047C: ldr r0, [r4] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r6, [r0, #0xad4] +#else ldr r6, [r0, #0xb78] +#endif mov r0, r6 bl EntityIsValid__02320764 cmp r0, #0 @@ -413,8 +417,13 @@ _02320744: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _0232074C: .word DUNGEON_PTR +#ifdef JAPAN +_02320750: .word 0x0000093B +_02320754: .word 0x0000093A +#else _02320750: .word 0x00000BFC _02320754: .word 0x00000BFB +#endif _02320758: .word ov29_023529B8 _0232075C: .word ov29_02353700 _02320760: .word 0x0000026F diff --git a/asm/overlay_29_02320788.s b/asm/overlay_29_02320788.s index fff5cd0f..cdc340b5 100644 --- a/asm/overlay_29_02320788.s +++ b/asm/overlay_29_02320788.s @@ -22,7 +22,11 @@ _023207BC: ldr r0, [r4] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r6, [r0, #0xad4] +#else ldr r6, [r0, #0xb78] +#endif mov r0, r6 bl EntityIsValid__02320764 cmp r0, #0 @@ -220,8 +224,13 @@ _02320A84: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _02320A8C: .word DUNGEON_PTR +#ifdef JAPAN +_02320A90: .word 0x0000093B +_02320A94: .word 0x0000093A +#else _02320A90: .word 0x00000BFC _02320A94: .word 0x00000BFB +#endif _02320A98: .word ov29_023529B8 _02320A9C: .word ov29_02353700 _02320AA0: .word 0x0000026F @@ -275,7 +284,11 @@ _02320B44: mov r0, r8 mov r1, r7 mov r2, #1 +#ifdef JAPAN + mov r3, #0xb00 +#else mov r3, #0xdc0 +#endif str ip, [sp] bl ExclusiveItemEffectIsActiveWithLogging cmp r0, #0 @@ -285,7 +298,11 @@ _02320B44: mov ip, #6 mov r0, r8 mov r1, r7 +#ifdef JAPAN + rsb r3, r2, #0xb00 +#else rsb r3, r2, #0xdc0 +#endif str ip, [sp] bl ExclusiveItemEffectIsActiveWithLogging cmp r0, #0 @@ -358,7 +375,11 @@ _02320C6C: mov r0, sb mov r1, r8 mov r2, #1 +#ifdef JAPAN + mov r3, #0xb00 +#else mov r3, #0xdc0 +#endif str ip, [sp] bl ExclusiveItemEffectIsActiveWithLogging cmp r0, #0 @@ -368,7 +389,11 @@ _02320C6C: mov ip, #6 mov r0, sb mov r1, r8 +#ifdef JAPAN + rsb r3, r2, #0xb00 +#else rsb r3, r2, #0xdc0 +#endif str ip, [sp] bl ExclusiveItemEffectIsActiveWithLogging cmp r0, #0 @@ -400,6 +425,12 @@ _02320D04: .word 0x00000163 arm_func_start TryWarp TryWarp: ; 0x02320D08 + +#ifdef JAPAN +#define TRY_WARP_OFFSET -0xA4 +#else +#define TRY_WARP_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} mov r4, #0 mov sb, r0 @@ -445,7 +476,7 @@ _02320DA0: ldr r0, _023210EC ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] + ldrb r0, [r0, #0xda + TRY_WARP_OFFSET] bl AreTileJumpsAllowed cmp r0, #0 bne _02320DD0 @@ -461,9 +492,9 @@ _02320DD0: ldrsh r1, [r8, #4] ldr r0, [r0] add r0, r0, #0xcc00 - ldrsh r2, [r0, #0xe4] + ldrsh r2, [r0, #0xe4 + TRY_WARP_OFFSET] cmp r2, r1 - ldreqsh r1, [r0, #0xe6] + ldreqsh r1, [r0, #0xe6 + TRY_WARP_OFFSET] ldreqsh r0, [r8, #6] cmpeq r1, r0 bne _02320E20 @@ -539,8 +570,13 @@ _02320EF4: add r0, sp, #0 ldr r1, [r1] mov r2, #0 +#ifdef JAPAN + add r1, r1, #0xc40 + add r1, r1, #0xc000 +#else add r1, r1, #0xe4 add r1, r1, #0xcc00 +#endif bl FindClosestUnoccupiedTileWithin2 cmp r0, #0 bne _02321008 @@ -574,8 +610,13 @@ _02320F74: add r0, sp, #0 ldr r1, [r1] mov r2, #1 +#ifdef JAPAN + add r1, r1, #0xc40 + add r1, r1, #0xc000 +#else add r1, r1, #0xe4 add r1, r1, #0xcc00 +#endif bl FindUnoccupiedTileWithin3 cmp r0, #0 bne _02321008 @@ -672,13 +713,18 @@ _023210DC: bl ov29_02321238 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 -_023210E8: .word 0x00000E74 +#ifdef JAPAN +#define TRY_WARP_DATA_OFFSET -0x2BE +#else +#define TRY_WARP_DATA_OFFSET 0 +#endif +_023210E8: .word 0x00000E74 + TRY_WARP_DATA_OFFSET _023210EC: .word DUNGEON_PTR -_023210F0: .word 0x00000E72 -_023210F4: .word 0x00000E73 -_023210F8: .word 0x00000E71 +_023210F0: .word 0x00000E72 + TRY_WARP_DATA_OFFSET +_023210F4: .word 0x00000E73 + TRY_WARP_DATA_OFFSET +_023210F8: .word 0x00000E71 + TRY_WARP_DATA_OFFSET _023210FC: .word ov29_0237C850 -_02321100: .word 0x00000E75 +_02321100: .word 0x00000E75 + TRY_WARP_DATA_OFFSET arm_func_end TryWarp arm_func_start EnsureCanStandCurrentTile @@ -772,7 +818,11 @@ _02321210: mov r0, r4 ldr r1, [r1] add r1, r1, #0x4000 +#ifdef JAPAN + ldrb r1, [r1, #0x20] +#else ldrb r1, [r1, #0xc4] +#endif bl ov29_02305814 ldmia sp!, {r3, r4, r5, pc} .align 2, 0 @@ -889,7 +939,11 @@ _02321360: mov r0, sl bl ov29_022E4CD4 mov r0, #1 +#ifdef JAPAN + strb r0, [r5, #0x21d] +#else strb r0, [r5, #0x221] +#endif mov r0, #0 mov r1, sl mov r2, r0 @@ -909,7 +963,11 @@ _02321360: bl ov29_02322374 mov r4, r0 mov r0, #0 +#ifdef JAPAN + strb r0, [r5, #0x21d] +#else strb r0, [r5, #0x221] +#endif b _02321408 _023213E4: ldr r1, [sp, #0x30] @@ -935,6 +993,11 @@ _02321428: add sp, sp, #0x10 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} .align 2, 0 +#ifdef JAPAN +_02321430: .word 0x00000C53 +_02321434: .word 0x00000C54 +#else _02321430: .word 0x00000F11 _02321434: .word 0x00000F12 +#endif arm_func_end ov29_02321288 diff --git a/asm/overlay_29_0232145C.s b/asm/overlay_29_0232145C.s index 3f3f6953..ed20ad5d 100644 --- a/asm/overlay_29_0232145C.s +++ b/asm/overlay_29_0232145C.s @@ -5,6 +5,11 @@ arm_func_start ov29_0232145C ov29_0232145C: ; 0x0232145C +#ifdef JAPAN +#define OV29_0232145C_OFFSET -4 +#else +#define OV29_0232145C_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x34 mov sb, r1 @@ -19,7 +24,7 @@ ov29_0232145C: ; 0x0232145C bge _02321A40 bl ov29_022FBAB4 mov r0, #0 - strb r0, [r5, #0x163] + strb r0, [r5, #0x163 + OV29_0232145C_OFFSET] ldrb r1, [r5, #0xd0] cmp r1, #1 bne _023214C4 @@ -64,7 +69,7 @@ _0232152C: add r1, r5, r0, lsl #1 add r1, r1, #0x100 add r0, r0, #1 - strh r2, [r1, #0x94] + strh r2, [r1, #0x94 + OV29_0232145C_OFFSET] cmp r0, #4 blt _0232152C mov r1, r2 @@ -75,7 +80,7 @@ _0232154C: add r2, r2, #1 bge _02321578 add r0, r5, r4, lsl #3 - ldrb r0, [r0, #0x124] + ldrb r0, [r0, #0x124 + OV29_0232145C_OFFSET] tst r0, #2 beq _02321578 add r1, r1, #1 @@ -87,7 +92,7 @@ _02321578: movge r6, #1 movlt r6, #0 _02321584: - add r1, r5, #0x124 + add r1, r5, #0x124 + OV29_0232145C_OFFSET mov r0, sl add r4, r1, sb, lsl #3 bl EntityIsValid__02321438 @@ -103,8 +108,13 @@ _02321584: bl IsTrappingMove cmp r0, #0 beq _023215D8 +#ifdef JAPAN + mov r0, sl + mov r1, #0xbc0 +#else ldr r1, _02321A58 ; =0x00000E7E mov r0, sl +#endif bl LogMessageByIdWithPopupCheckUser mov r0, #0 b _02321A40 @@ -173,7 +183,7 @@ _023216AC: mov r0, #0 str r0, [sp, #0x10] ldr r0, [r1, #0x18] - strb fp, [r5, #0x163] + strb fp, [r5, #0x163 + OV29_0232145C_OFFSET] ldrh r1, [r4, #4] str r0, [sp, #0xc] cmp r1, #0xe5 @@ -200,8 +210,13 @@ _02321700: add r2, sp, #0x2c mov r3, r1 bl FormatMoveStringMore +#ifdef JAPAN + ldr r1, _02322F08 ; =0x00000BC2 + mov r0, sl +#else mov r0, sl mov r1, #0xe80 +#endif bl LogMessageByIdWithPopupCheckUser str r6, [sp] add r1, sp, #0x2c @@ -291,7 +306,7 @@ _02321848: cmp sb, #4 bge _02321888 add r0, r5, sb, lsl #3 - ldrb r0, [r0, #0x124] + ldrb r0, [r0, #0x124 + OV29_0232145C_OFFSET] tst r0, #2 bne _02321584 _02321888: @@ -303,10 +318,10 @@ _02321888: _0232189C: add r0, r5, sb, lsl #1 add r0, r0, #0x100 - ldrh r1, [r0, #0x94] + ldrh r1, [r0, #0x94 + OV29_0232145C_OFFSET] cmp r1, #0 beq _02321994 - ldrh r1, [r0, #0x94] + ldrh r1, [r0, #0x94 + OV29_0232145C_OFFSET] add r4, sp, #0x24 mov r0, r4 bl InitMoveCheckId @@ -334,8 +349,13 @@ _023218EC: add r2, sp, #0x1c mov r3, r1 bl FormatMoveStringMore +#ifdef JAPAN + ldr r1, _02322F08 ; =0x00000BC2 + mov r0, sl +#else mov r0, sl mov r1, #0xe80 +#endif bl LogMessageByIdWithPopupCheckUser str r6, [sp] add r1, sp, #0x1c @@ -407,32 +427,54 @@ _023219A0: mov r1, sl mov r2, #1 bl TryInflictPausedStatus +#ifdef JAPAN + ldrb r0, [r4, #0x107] + cmp r0, #1 + movlo r0, #1 + strlob r0, [r4, #0x107] +#else ldrb r0, [r4, #0x108] cmp r0, #1 movlo r0, #1 strlob r0, [r4, #0x108] +#endif _02321A3C: mov r0, #1 _02321A40: add sp, sp, #0x34 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 -_02321A48: .word 0x00000E7C -_02321A4C: .word 0x00000E7D -_02321A50: .word 0x00000E78 +#ifdef JAPAN +#define OV29_0232145C_DATA_OFFSET -0x2BE +#else +#define OV29_0232145C_DATA_OFFSET 0 +#endif +_02321A48: .word 0x00000E7C + OV29_0232145C_DATA_OFFSET +_02321A4C: .word 0x00000E7D + OV29_0232145C_DATA_OFFSET +_02321A50: .word 0x00000E78 + OV29_0232145C_DATA_OFFSET _02321A54: .word ov29_0237CA68 +#ifdef JAPAN +_02321A5C: .word 0x00000BC1 +_02322F08: .word 0x00000BC2 +#else _02321A58: .word 0x00000E7E _02321A5C: .word 0x00000E7F -_02321A60: .word 0x00000E81 -_02321A64: .word 0x00000E79 +#endif +_02321A60: .word 0x00000E81 + OV29_0232145C_DATA_OFFSET +_02321A64: .word 0x00000E79 + OV29_0232145C_DATA_OFFSET _02321A68: .word 0x000001D1 -_02321A6C: .word 0x00000E76 -_02321A70: .word 0x00000E77 +_02321A6C: .word 0x00000E76 + OV29_0232145C_DATA_OFFSET +_02321A70: .word 0x00000E77 + OV29_0232145C_DATA_OFFSET _02321A74: .word ov10_022C4714 arm_func_end ov29_0232145C arm_func_start TryActivateNondamagingDefenderAbility TryActivateNondamagingDefenderAbility: ; 0x02321A78 +#ifdef JAPAN +#define TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_OFFSET -4 +#else +#define TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, lr} mov r5, r0 bl EntityIsValid__02321438 @@ -440,7 +482,7 @@ TryActivateNondamagingDefenderAbility: ; 0x02321A78 ldmeqia sp!, {r3, r4, r5, pc} ldr r4, [r5, #0xb4] add r0, r4, #0x100 - ldrh r0, [r0, #0x92] + ldrh r0, [r0, #0x92 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_OFFSET] tst r0, #1 beq _02321ABC ldr r1, _02321CC0 ; =0x00000E82 @@ -452,7 +494,7 @@ TryActivateNondamagingDefenderAbility: ; 0x02321A78 bl TryInflictShadowHoldStatus _02321ABC: add r0, r4, #0x100 - ldrh r0, [r0, #0x92] + ldrh r0, [r0, #0x92 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_OFFSET] tst r0, #2 beq _02321AE8 ldr r1, _02321CC4 ; =0x00000E83 @@ -464,7 +506,7 @@ _02321ABC: bl TryInflictShadowHoldStatus _02321AE8: add r0, r4, #0x100 - ldrh r0, [r0, #0x92] + ldrh r0, [r0, #0x92 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_OFFSET] tst r0, #4 beq _02321B14 ldr r1, _02321CC8 ; =0x00000E84 @@ -476,7 +518,7 @@ _02321AE8: bl TryInflictShadowHoldStatus _02321B14: add r0, r4, #0x100 - ldrh r0, [r0, #0x92] + ldrh r0, [r0, #0x92 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_OFFSET] tst r0, #8 beq _02321B44 ldr r1, _02321CCC ; =0x00000E85 @@ -489,7 +531,7 @@ _02321B14: bl TryInflictParalysisStatus _02321B44: add r0, r4, #0x100 - ldrh r0, [r0, #0x92] + ldrh r0, [r0, #0x92 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_OFFSET] tst r0, #0x10 beq _02321B74 ldr r1, _02321CD0 ; =0x00000E86 @@ -502,7 +544,7 @@ _02321B44: bl TryInflictParalysisStatus _02321B74: add r0, r4, #0x100 - ldrh r0, [r0, #0x92] + ldrh r0, [r0, #0x92 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_OFFSET] tst r0, #0x20 beq _02321BA4 ldr r1, _02321CD4 ; =0x00000E87 @@ -515,7 +557,7 @@ _02321B74: bl TryInflictPoisonedStatus _02321BA4: add r0, r4, #0x100 - ldrh r0, [r0, #0x92] + ldrh r0, [r0, #0x92 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_OFFSET] tst r0, #0x40 beq _02321BD4 ldr r1, _02321CD8 ; =0x00000E88 @@ -528,7 +570,7 @@ _02321BA4: bl TryInflictPoisonedStatus _02321BD4: add r0, r4, #0x100 - ldrh r0, [r0, #0x92] + ldrh r0, [r0, #0x92 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_OFFSET] tst r0, #0x80 beq _02321C14 ldr r1, _02321CDC ; =0x00000E89 @@ -545,7 +587,7 @@ _02321BD4: bl TryInflictSleepStatus _02321C14: add r0, r4, #0x100 - ldrh r0, [r0, #0x92] + ldrh r0, [r0, #0x92 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_OFFSET] tst r0, #0x100 beq _02321C4C ldr r1, _02321CE4 ; =0x00000E8A @@ -560,7 +602,7 @@ _02321C14: bl TryInflictBurnStatus _02321C4C: add r0, r4, #0x100 - ldrh r0, [r0, #0x92] + ldrh r0, [r0, #0x92 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_OFFSET] tst r0, #0x200 beq _02321C7C ldr r1, _02321CE8 ; =0x00000E8B @@ -573,7 +615,7 @@ _02321C4C: bl TryInflictInfatuatedStatus _02321C7C: add r0, r4, #0x100 - ldrh r0, [r0, #0x92] + ldrh r0, [r0, #0x92 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_OFFSET] tst r0, #0x400 beq _02321CB0 mov r0, #0 @@ -588,25 +630,35 @@ _02321C7C: _02321CB0: add r0, r4, #0x100 mov r1, #0 - strh r1, [r0, #0x92] + strh r1, [r0, #0x92 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_OFFSET] ldmia sp!, {r3, r4, r5, pc} .align 2, 0 -_02321CC0: .word 0x00000E82 -_02321CC4: .word 0x00000E83 -_02321CC8: .word 0x00000E84 -_02321CCC: .word 0x00000E85 -_02321CD0: .word 0x00000E86 -_02321CD4: .word 0x00000E87 -_02321CD8: .word 0x00000E88 -_02321CDC: .word 0x00000E89 +#ifdef JAPAN +#define TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_DATA_OFFSET -0x2BE +#else +#define TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_DATA_OFFSET 0 +#endif +_02321CC0: .word 0x00000E82 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_DATA_OFFSET +_02321CC4: .word 0x00000E83 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_DATA_OFFSET +_02321CC8: .word 0x00000E84 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_DATA_OFFSET +_02321CCC: .word 0x00000E85 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_DATA_OFFSET +_02321CD0: .word 0x00000E86 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_DATA_OFFSET +_02321CD4: .word 0x00000E87 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_DATA_OFFSET +_02321CD8: .word 0x00000E88 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_DATA_OFFSET +_02321CDC: .word 0x00000E89 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_DATA_OFFSET _02321CE0: .word SLEEP_TURN_RANGE -_02321CE4: .word 0x00000E8A -_02321CE8: .word 0x00000E8B -_02321CEC: .word 0x00000E8C +_02321CE4: .word 0x00000E8A + TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_DATA_OFFSET +_02321CE8: .word 0x00000E8B + TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_DATA_OFFSET +_02321CEC: .word 0x00000E8C + TRY_ACTIVATE_NONDAMAGING_DEFENDER_ABILITY_DATA_OFFSET arm_func_end TryActivateNondamagingDefenderAbility arm_func_start TryActivateNondamagingDefenderExclusiveItem TryActivateNondamagingDefenderExclusiveItem: ; 0x02321CF0 +#ifdef JAPAN +#define TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET -4 +#else +#define TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, lr} sub sp, sp, #4 mov r6, r0 @@ -615,11 +667,11 @@ TryActivateNondamagingDefenderExclusiveItem: ; 0x02321CF0 cmp r0, #0 beq _02322244 ldr r4, [r6, #0xb4] - ldr r0, [r4, #0x18c] + ldr r0, [r4, #0x18c + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] tst r0, #1 beq _02321D48 add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] + ldrsh r1, [r0, #0x90 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] mov r0, #0 bl ov29_02344B9C ldr r1, _0232224C ; =0x00000E8D @@ -630,26 +682,31 @@ TryActivateNondamagingDefenderExclusiveItem: ; 0x02321CF0 mov r2, #0 bl TryInflictShadowHoldStatus _02321D48: - ldr r0, [r4, #0x18c] + ldr r0, [r4, #0x18c + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] tst r0, #2 beq _02321D80 add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] + ldrsh r1, [r0, #0x90 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] mov r0, #0 bl ov29_02344B9C +#ifdef JAPAN + mov r0, r6 + mov r1, #0xbd0 +#else ldr r1, _02322250 ; =0x00000E8E mov r0, r6 +#endif bl LogMessageByIdWithPopupCheckUser mov r0, r6 mov r1, r6 mov r2, #0 bl TryInflictShadowHoldStatus _02321D80: - ldr r0, [r4, #0x18c] + ldr r0, [r4, #0x18c + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] tst r0, #4 beq _02321DB8 add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] + ldrsh r1, [r0, #0x90 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] mov r0, #0 bl ov29_02344B9C ldr r1, _02322254 ; =0x00000E8F @@ -660,11 +717,11 @@ _02321D80: mov r2, #0 bl TryInflictShadowHoldStatus _02321DB8: - ldr r0, [r4, #0x18c] + ldr r0, [r4, #0x18c + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] tst r0, #0x80000 beq _02321E00 add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] + ldrsh r1, [r0, #0x90 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] mov r0, #0 bl ov29_02344B9C ldr r1, _02322258 ; =0x00000EA3 @@ -679,15 +736,20 @@ _02321DB8: mov r1, r6 bl TryInflictNightmareStatus _02321E00: - ldr r0, [r4, #0x18c] + ldr r0, [r4, #0x18c + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] tst r0, #8 beq _02321E3C add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] + ldrsh r1, [r0, #0x90 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] mov r0, #0 bl ov29_02344B9C +#ifdef JAPAN + ldr r1, _02323708 ; =0x00000BD2 + mov r0, r6 +#else mov r0, r6 mov r1, #0xe90 +#endif bl LogMessageByIdWithPopupCheckUser mov r0, r6 mov r1, r6 @@ -695,11 +757,11 @@ _02321E00: mov r3, #0 bl TryInflictParalysisStatus _02321E3C: - ldr r0, [r4, #0x18c] + ldr r0, [r4, #0x18c + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] tst r0, #0x10 beq _02321E78 add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] + ldrsh r1, [r0, #0x90 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] mov r0, #0 bl ov29_02344B9C ldr r1, _02322260 ; =0x00000E91 @@ -711,11 +773,11 @@ _02321E3C: mov r3, #0 bl TryInflictParalysisStatus _02321E78: - ldr r0, [r4, #0x18c] + ldr r0, [r4, #0x18c + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] tst r0, #0x20 beq _02321EB4 add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] + ldrsh r1, [r0, #0x90 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] mov r0, #0 bl ov29_02344B9C ldr r1, _02322264 ; =0x00000E92 @@ -727,11 +789,11 @@ _02321E78: mov r3, #0 bl TryInflictPoisonedStatus _02321EB4: - ldr r0, [r4, #0x18c] + ldr r0, [r4, #0x18c + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] tst r0, #0x40 beq _02321EF0 add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] + ldrsh r1, [r0, #0x90 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] mov r0, #0 bl ov29_02344B9C ldr r1, _02322268 ; =0x00000E93 @@ -743,11 +805,11 @@ _02321EB4: mov r3, #0 bl TryInflictPoisonedStatus _02321EF0: - ldr r0, [r4, #0x18c] + ldr r0, [r4, #0x18c + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] tst r0, #0x80 beq _02321F3C add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] + ldrsh r1, [r0, #0x90 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] mov r0, #0 bl ov29_02344B9C ldr r1, _0232226C ; =0x00000E94 @@ -763,11 +825,11 @@ _02321EF0: mov r3, #1 bl TryInflictSleepStatus _02321F3C: - ldr r0, [r4, #0x18c] + ldr r0, [r4, #0x18c + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] tst r0, #0x100 beq _02321F80 add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] + ldrsh r1, [r0, #0x90 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] mov r0, #0 bl ov29_02344B9C ldr r1, _02322274 ; =0x00000E95 @@ -781,11 +843,11 @@ _02321F3C: mov r3, r2 bl TryInflictBurnStatus _02321F80: - ldr r0, [r4, #0x18c] + ldr r0, [r4, #0x18c + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] tst r0, #0x200 beq _02321FBC add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] + ldrsh r1, [r0, #0x90 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] mov r0, #0 bl ov29_02344B9C ldr r1, _02322278 ; =0x00000E96 @@ -797,11 +859,11 @@ _02321F80: mov r3, #0 bl TryInflictInfatuatedStatus _02321FBC: - ldr r0, [r4, #0x18c] + ldr r0, [r4, #0x18c + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] tst r0, #0x800 beq _02321FF8 add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] + ldrsh r1, [r0, #0x90 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] mov r0, #0 bl ov29_02344B9C ldr r1, _0232227C ; =0x00000E98 @@ -813,11 +875,11 @@ _02321FBC: mov r3, r2 bl TryInflictConfusedStatus _02321FF8: - ldr r0, [r4, #0x18c] + ldr r0, [r4, #0x18c + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] tst r0, #0x100000 beq _02322030 add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] + ldrsh r1, [r0, #0x90 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] mov r0, #0 bl ov29_02344B9C ldr r1, _02322280 ; =0x00000E99 @@ -844,11 +906,11 @@ _02322030: mov r3, #1 bl TryInflictConstrictionStatus _0232206C: - ldr r0, [r4, #0x18c] + ldr r0, [r4, #0x18c + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] tst r0, #0x2000 beq _023220A8 add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] + ldrsh r1, [r0, #0x90 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] mov r0, #0 bl ov29_02344B9C ldr r1, _02322288 ; =0x00000E9A @@ -860,11 +922,11 @@ _0232206C: mov r3, #0 bl TryInflictCringeStatus _023220A8: - ldr r0, [r4, #0x18c] + ldr r0, [r4, #0x18c + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] tst r0, #0x4000 beq _023220E4 add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] + ldrsh r1, [r0, #0x90 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] mov r0, #0 bl ov29_02344B9C ldr r1, _0232228C ; =0x00000E9C @@ -876,11 +938,11 @@ _023220A8: mov r3, r2 bl TryInflictBlinkerStatus _023220E4: - ldr r0, [r4, #0x18c] + ldr r0, [r4, #0x18c + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] tst r0, #0x8000 beq _0232211C add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] + ldrsh r1, [r0, #0x90 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] mov r0, #0 bl ov29_02344B9C ldr r1, _02322290 ; =0x00000E9D @@ -891,25 +953,30 @@ _023220E4: mov r2, #0 bl TrySealMove _0232211C: - ldr r0, [r4, #0x18c] + ldr r0, [r4, #0x18c + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] tst r0, #0x10000 beq _02322150 add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] + ldrsh r1, [r0, #0x90 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] mov r0, #0 bl ov29_02344B9C +#ifdef JAPAN + mov r0, r6 + mov r1, #0xbe0 +#else ldr r1, _02322294 ; =0x00000E9E mov r0, r6 +#endif bl LogMessageByIdWithPopupCheckUser mov r0, r5 mov r1, r5 bl TryInflictInvisibleStatus _02322150: - ldr r0, [r4, #0x18c] + ldr r0, [r4, #0x18c + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] tst r0, #0x20000 beq _0232218C add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] + ldrsh r1, [r0, #0x90 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] mov r0, #0 bl ov29_02344B9C ldr r1, _02322298 ; =0x00000E9F @@ -921,26 +988,31 @@ _02322150: mov r3, #1 bl BoostSpeedOneStage _0232218C: - ldr r0, [r4, #0x18c] + ldr r0, [r4, #0x18c + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] tst r0, #0x200000 beq _023221C4 add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] + ldrsh r1, [r0, #0x90 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] mov r0, #0 bl ov29_02344B9C +#ifdef JAPAN + ldr r1, _02323744 ; =0x00000BE2 + mov r0, r6 +#else mov r0, r6 mov r1, #0xea0 +#endif bl LogMessageByIdWithPopupCheckUser mov r0, r6 mov r1, r6 mov r2, #0 bl TryInflictPerishSongStatus _023221C4: - ldr r0, [r4, #0x18c] + ldr r0, [r4, #0x18c + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] tst r0, #0x400000 beq _02322200 add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] + ldrsh r1, [r0, #0x90 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] mov r0, #0 bl ov29_02344B9C ldr r1, _0232229C ; =0x00000EA1 @@ -952,11 +1024,11 @@ _023221C4: mov r3, r2 bl LowerSpeed _02322200: - ldr r0, [r4, #0x18c] + ldr r0, [r4, #0x18c + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] tst r0, #0x40000 beq _0232223C add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] + ldrsh r1, [r0, #0x90 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] mov r0, #0 bl ov29_02344B9C ldr r1, _023222A0 ; =0x00000EA2 @@ -969,33 +1041,46 @@ _02322200: bl TryWarp _0232223C: mov r0, #0 - str r0, [r4, #0x18c] + str r0, [r4, #0x18c + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_OFFSET] _02322244: add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, pc} .align 2, 0 -_0232224C: .word 0x00000E8D +#ifdef JAPAN +#define TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_DATA_OFFSET -0x2BE +#else +#define TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_DATA_OFFSET 0 +#endif +_0232224C: .word 0x00000E8D + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_DATA_OFFSET +#ifndef JAPAN _02322250: .word 0x00000E8E -_02322254: .word 0x00000E8F -_02322258: .word 0x00000EA3 +#endif +_02322254: .word 0x00000E8F + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_DATA_OFFSET +_02322258: .word 0x00000EA3 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_DATA_OFFSET _0232225C: .word NIGHTMARE_TURN_RANGE -_02322260: .word 0x00000E91 -_02322264: .word 0x00000E92 -_02322268: .word 0x00000E93 -_0232226C: .word 0x00000E94 +#ifdef JAPAN +_02323708: .word 0x00000BD2 +#endif +_02322260: .word 0x00000E91 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_DATA_OFFSET +_02322264: .word 0x00000E92 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_DATA_OFFSET +_02322268: .word 0x00000E93 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_DATA_OFFSET +_0232226C: .word 0x00000E94 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_DATA_OFFSET _02322270: .word SLEEP_TURN_RANGE -_02322274: .word 0x00000E95 -_02322278: .word 0x00000E96 -_0232227C: .word 0x00000E98 -_02322280: .word 0x00000E99 -_02322284: .word 0x00000E9B -_02322288: .word 0x00000E9A -_0232228C: .word 0x00000E9C -_02322290: .word 0x00000E9D -_02322294: .word 0x00000E9E -_02322298: .word 0x00000E9F -_0232229C: .word 0x00000EA1 -_023222A0: .word 0x00000EA2 +_02322274: .word 0x00000E95 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_DATA_OFFSET +_02322278: .word 0x00000E96 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_DATA_OFFSET +_0232227C: .word 0x00000E98 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_DATA_OFFSET +_02322280: .word 0x00000E99 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_DATA_OFFSET +_02322284: .word 0x00000E9B + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_DATA_OFFSET +_02322288: .word 0x00000E9A + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_DATA_OFFSET +_0232228C: .word 0x00000E9C + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_DATA_OFFSET +_02322290: .word 0x00000E9D + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_DATA_OFFSET +_02322294: .word 0x00000E9E + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_DATA_OFFSET +_02322298: .word 0x00000E9F + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_DATA_OFFSET +#ifdef JAPAN +_02323744: .word 0x00000BE2 +#endif +_0232229C: .word 0x00000EA1 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_DATA_OFFSET +_023222A0: .word 0x00000EA2 + TRY_ACTIVATE_NONDAMAGING_DEFENDER_EXCLUSIVE_ITEM_DATA_OFFSET arm_func_end TryActivateNondamagingDefenderExclusiveItem arm_func_start GetMoveRangeDistance @@ -1059,6 +1144,13 @@ _0232236C: arm_func_start ov29_02322374 ov29_02322374: ; 0x02322374 +#ifdef JAPAN +#define OV29_02322374_OFFSET -4 +#define OV29_02322374_OFFSET_2 -1 +#else +#define OV29_02322374_OFFSET 0 +#define OV29_02322374_OFFSET_2 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x13c ldr sl, [sp, #0x164] @@ -1174,7 +1266,7 @@ _023224C4: ldr r1, [r6, #0xb4] mov r2, #0 str r0, [sp, #0x20] - strb r2, [r1, #0x10b] + strb r2, [r1, #0x10b + OV29_02322374_OFFSET_2] cmpne sl, r8 beq _02322598 mov r0, r6 @@ -1301,10 +1393,10 @@ _023226D0: cmp r4, #0 beq _02322714 ldr r1, [r6, #0xb4] - ldrb r0, [r1, #0x15d] + ldrb r0, [r1, #0x15d + OV29_02322374_OFFSET] cmp r0, #4 addlo r0, r0, #1 - strlob r0, [r1, #0x15d] + strlob r0, [r1, #0x15d + OV29_02322374_OFFSET] _02322714: ldrh r1, [r8, #4] ldr r0, _02322D48 ; =0x00000163 @@ -1397,7 +1489,7 @@ _0232284C: bne _02322C98 _02322860: mov r0, #0 - strb r0, [sl, #0x154] + strb r0, [sl, #0x154 + OV29_02322374_OFFSET] bl GravityIsActive cmp r0, #0 beq _023228A4 @@ -1470,7 +1562,9 @@ _02322928: mov r0, sl mov r1, r6 mov r2, #0x1f +#ifndef JAPAN mov r3, #0 +#endif bl DefenderAbilityIsActive__02322D64 cmp r0, #0 bne _02322A54 @@ -1562,8 +1656,8 @@ _02322AC0: cmpne r0, #4 addne r0, r1, #0x100 movne r1, #0 - strneh r1, [r0, #0x7e] - strneh r1, [r0, #0x80] + strneh r1, [r0, #0x7e + OV29_02322374_OFFSET] + strneh r1, [r0, #0x80 + OV29_02322374_OFFSET] ldr r0, _02322D44 ; =ov29_0237CA68 cmp fp, #0 ldr r1, [r0, #0x10] @@ -1588,7 +1682,7 @@ _02322B24: cmp r1, r0 ldreq r0, [r6, #0xb4] moveq r1, #1 - streqb r1, [r0, #0x170] + streqb r1, [r0, #0x170 + OV29_02322374_OFFSET] add r0, sp, #0x38 mov r1, r6 mov r3, r5 @@ -1641,7 +1735,7 @@ _02322BE8: bl IqSkillIsEnabled cmp r0, #0 ldrne r1, [r6, #0xb4] - ldrneb r0, [r1, #0x154] + ldrneb r0, [r1, #0x154 + OV29_02322374_OFFSET] cmpne r0, #0 ldrneb r0, [r1, #0xd2] cmpne r0, #1 @@ -1651,10 +1745,14 @@ _02322BE8: strb r2, [r1, #0xd3] ldr r1, [r6, #0xb4] ldr r0, _02322D44 ; =ov29_0237CA68 - strb r2, [r1, #0x154] + strb r2, [r1, #0x154 + OV29_02322374_OFFSET] ldr r1, [r6, #0xb4] sub r7, r7, #1 +#ifdef JAPAN + strb r2, [r1, #0x10a] +#else strb r2, [r1, #0x10b] +#endif ldr r1, [r0, #0x18] mov r2, #0 sub r1, r1, #1 @@ -1670,12 +1768,12 @@ _02322BE8: b _02322C88 _02322C68: ldr r2, [r6, #0xb4] - ldrb r0, [r2, #0x154] + ldrb r0, [r2, #0x154 + OV29_02322374_OFFSET] cmp r0, #0 bne _02322C88 mov r1, #0 mov r0, r6 - strb r1, [r2, #0x154] + strb r1, [r2, #0x154 + OV29_02322374_OFFSET] bl ov29_02318D58 _02322C88: add r7, r7, #1 @@ -1710,61 +1808,88 @@ _02322CC4: mov r1, r6 mov r3, r2 bl TryInflictConfusedStatus - ldrb r0, [r4, #0x108] + ldrb r0, [r4, #0x108 + OV29_02322374_OFFSET_2] cmp r0, #1 movlo r0, #1 - strlob r0, [r4, #0x108] + strlob r0, [r4, #0x108 + OV29_02322374_OFFSET_2] _02322D0C: mov r0, #1 _02322D10: add sp, sp, #0x13c ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +#define OV29_02322374_DATA_OFFSET -0x2BE +#else +#define OV29_02322374_DATA_OFFSET 0 +#endif _02322D18: .word 0x0000014A _02322D1C: .word ov29_0237CA88 _02322D20: .word METRONOME_TABLE -_02322D24: .word 0x00000EA4 +_02322D24: .word 0x00000EA4 + OV29_02322374_DATA_OFFSET _02322D28: .word NATURE_POWER_TABLE -_02322D2C: .word 0x00000EA5 -_02322D30: .word 0x00000EA6 -_02322D34: .word 0x00000EA7 -_02322D38: .word 0x00000E7B -_02322D3C: .word 0x00000E79 -_02322D40: .word 0x00000E7A +_02322D2C: .word 0x00000EA5 + OV29_02322374_DATA_OFFSET +_02322D30: .word 0x00000EA6 + OV29_02322374_DATA_OFFSET +_02322D34: .word 0x00000EA7 + OV29_02322374_DATA_OFFSET +_02322D38: .word 0x00000E7B + OV29_02322374_DATA_OFFSET +_02322D3C: .word 0x00000E79 + OV29_02322374_DATA_OFFSET +_02322D40: .word 0x00000E7A + OV29_02322374_DATA_OFFSET _02322D44: .word ov29_0237CA68 _02322D48: .word 0x00000163 _02322D4C: .word ov10_022C4584 _02322D50: .word INTIMIDATOR_ACTIVATION_CHANCE _02322D54: .word 0x000001ED _02322D58: .word ov29_0235370C -_02322D5C: .word 0x00000EA9 +_02322D5C: .word 0x00000EA9 + OV29_02322374_DATA_OFFSET _02322D60: .word 0x000001F6 arm_func_end ov29_02322374 arm_func_start DefenderAbilityIsActive__02322D64 DefenderAbilityIsActive__02322D64: ; 0x02322D64 +#ifdef JAPAN + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + cmp r6, r5 +#else stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r7, r0 mov r6, r1 mov r5, r2 mov r4, r3 cmp r7, r6 +#endif beq _02322DA8 bl IsMonster__02322DB8 cmp r0, #0 +#ifdef JAPAN + beq _02322DA8 + mov r0, r6 +#else cmpne r4, #0 beq _02322DA8 mov r0, r7 +#endif mov r1, #0x53 bl AbilityIsActiveVeneer cmp r0, #0 movne r0, #0 +#ifdef JAPAN + ldmneia sp!, {r4, r5, r6, pc} +_02322DA8: + mov r0, r5 + mov r1, r4 + bl AbilityIsActiveVeneer + ldmia sp!, {r4, r5, r6, pc} +#else ldmneia sp!, {r3, r4, r5, r6, r7, pc} _02322DA8: mov r0, r6 mov r1, r5 bl AbilityIsActiveVeneer ldmia sp!, {r3, r4, r5, r6, r7, pc} +#endif arm_func_end DefenderAbilityIsActive__02322D64 arm_func_start IsMonster__02322DB8 @@ -1911,7 +2036,11 @@ ov29_02322F78: ; 0x02322F78 ldr r0, [r4] mov r6, r1 add r0, r0, #0x1a000 +#ifdef JAPAN + ldrb r0, [r0, #0x19a] +#else ldrb r0, [r0, #0x23e] +#endif mov r5, r2 mov r8, r3 cmp r0, #0 @@ -2253,7 +2382,11 @@ _0232347C: ldr r0, _0232390C ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x1a000 +#ifdef JAPAN + ldrb r0, [r0, #0x19a] +#else ldrb r0, [r0, #0x23e] +#endif cmp r0, #0 bne _02323740 ldrsh r0, [sp, #0xa0] @@ -2562,7 +2695,11 @@ _02323900: .word ov29_0235175C _02323904: .word 0x00000FFF _02323908: .word ov29_02352A6C _0232390C: .word DUNGEON_PTR +#ifdef JAPAN +_02323910: .word 0x0001A182 +#else _02323910: .word 0x0001A226 +#endif _02323914: .word 0x000001E5 arm_func_end ov29_023230FC @@ -2574,7 +2711,11 @@ ExclusiveItemEffectIsActive__02323918: ; 0x02323918 cmp r0, #0 movne r0, #0 ldmneia sp!, {r3, pc} +#ifdef JAPAN + add r0, r2, #0x224 +#else add r0, r2, #0x228 +#endif bl ExclusiveItemEffectFlagTest ldmia sp!, {r3, pc} arm_func_end ExclusiveItemEffectIsActive__02323918 @@ -2686,7 +2827,11 @@ _02323A6C: ldr r0, _02323C3C ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x1a000 +#ifdef JAPAN + ldrb r0, [r0, #0x19a] +#else ldrb r0, [r0, #0x23e] +#endif cmp r0, #0 bne _02323BB0 ldrsh r2, [sp, #0x30] @@ -2776,7 +2921,11 @@ _02323BE0: cmp r1, r0 ldreq r0, [sp, #0x18] moveq r1, #0 +#ifdef JAPAN + streqb r1, [r0, #0x16c] +#else streqb r1, [r0, #0x170] +#endif mov r0, sl mov r2, sb mov r1, #0 @@ -2917,7 +3066,9 @@ _02323DDC: mov r0, r7 mov r1, r6 mov r2, #0x1d +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__02322D64 cmp r0, #0 addne r4, r4, #2 @@ -2956,7 +3107,9 @@ _02323E94: mov r0, r7 mov r1, r6 mov r2, #0x62 +#ifndef JAPAN mov r3, #1 +#endif subne r4, r4, #1 bl DefenderAbilityIsActive__02322D64 cmp r0, #0 @@ -2970,7 +3123,9 @@ _02323ED8: mov r0, r7 mov r1, r6 mov r2, #0x77 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__02322D64 cmp r0, #0 beq _02323F18 @@ -3006,7 +3161,9 @@ _02323F44: mov r0, r7 mov r1, r6 mov r2, #0x6a +#ifndef JAPAN mov r3, #1 +#endif movne sl, sb bl DefenderAbilityIsActive__02322D64 cmp r0, #0 @@ -3173,7 +3330,11 @@ _023241B8: ldr r0, [r0] add r0, r0, fp, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r7, [r0, #0xad4] +#else ldr r7, [r0, #0xb78] +#endif mov r0, r7 bl EntityIsValid__02321438 cmp r0, #0 @@ -3268,7 +3429,11 @@ _02324318: ldr r0, [r0] add r0, r0, r7, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr fp, [r0, #0xad4] +#else ldr fp, [r0, #0xb78] +#endif mov r0, fp bl EntityIsValid__02321438 cmp r0, #0 @@ -3541,14 +3706,22 @@ _023246B0: ldr r0, [fp] add r0, r0, r7, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr sb, [r0, #0xad4] +#else ldr sb, [r0, #0xb78] +#endif mov r0, sb bl EntityIsValid__02321438 cmp r0, #0 beq _0232470C ldr r0, [sb, #0xb4] mov r8, #0 +#ifdef JAPAN + add r5, r0, #0x120 +#else add r5, r0, #0x124 +#endif _023246DC: add sl, r5, r8, lsl #3 mov r0, sb @@ -3628,7 +3801,11 @@ ov29_023247B4: ; 0x023247B4 ldr r0, [r8, #0xb4] mov r7, #0 mov r6, r7 +#ifdef JAPAN + add r5, r0, #0x120 +#else add r5, r0, #0x124 +#endif add r4, sp, #0 _023247D4: add sb, r5, r6, lsl #3 @@ -3671,7 +3848,11 @@ _0232484C: TwoTurnMoveForcedMiss: ; 0x02324854 stmdb sp!, {r3, lr} ldr r2, [r0, #0xb4] +#ifdef JAPAN + ldrb r0, [r2, #0x10a] +#else ldrb r0, [r2, #0x10b] +#endif cmp r0, #1 bne _023248A4 ldrh r0, [r1, #4] @@ -3753,7 +3934,11 @@ DungeonRandOutcomeUserTargetInteraction: ; 0x02324934 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, pc} ldr r1, [r5, #0xb4] +#ifdef JAPAN + ldrb r0, [r1, #0x15e] +#else ldrb r0, [r1, #0x162] +#endif cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, pc} @@ -3786,7 +3971,9 @@ _023249E0: mov r0, r6 mov r1, r5 mov r2, #0x4c +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__02322D64 cmp r0, #0 beq _02324A18 @@ -3831,7 +4018,11 @@ CanAiUseMove: ; 0x02324A74 mov r6, r0 ldr r3, [r6, #0xb4] mov r5, r2 +#ifdef JAPAN + add r0, r3, #0x120 +#else add r0, r3, #0x124 +#endif ldrb r2, [r0, r1, lsl #3] add r4, r0, r1, lsl #3 tst r2, #1 @@ -3851,7 +4042,11 @@ CanAiUseMove: ; 0x02324A74 movne r0, #0 ldmneia sp!, {r4, r5, r6, r7, r8, pc} mov r8, #0 +#ifdef JAPAN + add r7, r3, #0x140 +#else add r7, r3, #0x144 +#endif b _02324B14 _02324ADC: mov r0, r6 @@ -3916,7 +4111,11 @@ _02324BA0: ldrh r0, [r5, #4] cmp r0, #0x160 bne _02324BCC +#ifdef JAPAN + ldrb r0, [r4, #0x140] +#else ldrb r0, [r4, #0x144] +#endif tst r0, #0x10 bne _02324BDC mov r0, #0 @@ -3969,7 +4168,11 @@ _02324C54: ldrh r0, [r5, #4] cmp r0, #0x160 bne _02324C80 +#ifdef JAPAN + ldrb r0, [r4, #0x140] +#else ldrb r0, [r4, #0x144] +#endif tst r0, #0x10 bne _02324C90 mov r0, #0 @@ -4077,7 +4280,11 @@ UpdateMovePp: ; 0x02324D8C ldr r0, [r5, #0xb4] mov r1, #0 _02324DAC: +#ifdef JAPAN + add r2, r0, #0x120 +#else add r2, r0, #0x124 +#endif ldrb r3, [r2, r1, lsl #3] add r2, r2, r1, lsl #3 tst r3, #1 @@ -4308,6 +4515,11 @@ _023250D0: .word ov29_02352AD8 arm_func_start ov29_023250D4 ov29_023250D4: ; 0x023250D4 +#ifdef JAPAN +#define OV29_023250D4_OFFSET -0xA4 +#else +#define OV29_023250D4_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x18 mov sl, r0 @@ -4387,14 +4599,14 @@ _023251E8: ldrne r0, _0232560C ; =DUNGEON_PTR ldrne r0, [r0] addne r0, r0, #0x1a000 - ldrne r5, [r0, #0x22c] + ldrne r5, [r0, #0x22c + OV29_023250D4_OFFSET] bne _02325228 ldrh r0, [sb, #4] cmp r0, #0x52 ldreq r0, _0232560C ; =DUNGEON_PTR ldreq r0, [r0] addeq r0, r0, #0x1a000 - ldreq r5, [r0, #0x22c] + ldreq r5, [r0, #0x22c + OV29_023250D4_OFFSET] movne r5, sl _02325228: mov r0, r5 @@ -4428,12 +4640,12 @@ _02325228: ldr r6, [r6, r0, lsl #2] str r0, [r2] add r0, r3, #0x1a000 - str r6, [r0, #0x234] + str r6, [r0, #0x234 + OV29_023250D4_OFFSET] ldr r1, [r1] mov r0, #0 add r1, r1, #0x1a000 - ldr r3, [r1, #0x234] - str r3, [r1, #0x238] + ldr r3, [r1, #0x234 + OV29_023250D4_OFFSET] + str r3, [r1, #0x238 + OV29_023250D4_OFFSET] ldr r1, [r2] add r1, r1, #4 bl ov29_0234B09C @@ -4452,12 +4664,12 @@ _023252E4: ldr r1, [r2] mov r0, r5 add r1, r1, #0x1a000 - str r3, [r1, #0x234] + str r3, [r1, #0x234 + OV29_023250D4_OFFSET] ldr r2, [r2] mov r1, #0x214 add r2, r2, #0x1a000 - ldr r3, [r2, #0x234] - str r3, [r2, #0x238] + ldr r3, [r2, #0x234 + OV29_023250D4_OFFSET] + str r3, [r2, #0x238 + OV29_023250D4_OFFSET] bl ov29_022E56A0 _0232531C: mov r0, sl @@ -4545,9 +4757,9 @@ _0232543C: ldr r0, _0232560C ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x1a000 - ldr r1, [r0, #0x22c] + ldr r1, [r0, #0x22c + OV29_023250D4_OFFSET] cmp r1, sl - ldrneb r0, [r0, #0x245] + ldrneb r0, [r0, #0x245 + OV29_023250D4_OFFSET] cmpne r0, #0 movne fp, #1 _02325470: @@ -4560,7 +4772,7 @@ _02325480: ldr r0, [r0] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 - ldr r6, [r0, #0xb78] + ldr r6, [r0, #0xb78 + OV29_023250D4_OFFSET] mov r0, r6 bl EntityIsValid__02325620 cmp r0, #0 @@ -4668,6 +4880,10 @@ _02325608: .word ov29_02352AD8 _0232560C: .word DUNGEON_PTR _02325610: .word ov29_02352B1C _02325614: .word ov29_0237CA84 +#ifdef JAPAN +_02325618: .word 0x00000BEC +#else _02325618: .word 0x00000EAA +#endif _0232561C: .word 0x00000229 arm_func_end ov29_023250D4 diff --git a/asm/overlay_29_02325644.s b/asm/overlay_29_02325644.s index 2ee0f37c..89571808 100644 --- a/asm/overlay_29_02325644.s +++ b/asm/overlay_29_02325644.s @@ -777,9 +777,15 @@ _02326074: mov r0, r4 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 +#ifdef JAPAN +_0232607C: .word 0x00000C06 +_02326080: .word DIG_DAMAGE_MULTIPLIER +_02326084: .word 0x00000A16 +#else _0232607C: .word 0x00000EC4 _02326080: .word DIG_DAMAGE_MULTIPLIER _02326084: .word 0x00000CD6 +#endif arm_func_end DoMoveDig arm_func_start DoMoveSweetScent @@ -819,10 +825,17 @@ DoMoveRainDance: ; 0x023260D0 ldr r2, [r2] mov r5, r0 mov r4, r1 +#ifdef JAPAN + add r2, r2, #0xcc00 + mov r0, #1 + mov r1, #0 + strh r3, [r2, #0x9e] +#else add r2, r2, #0xcd00 mov r0, #1 mov r1, #0 strh r3, [r2, #0x42] +#endif bl TryActivateWeather cmp r0, #0 bne _02326118 @@ -836,7 +849,11 @@ _02326118: .align 2, 0 _02326120: .word WEATHER_MOVE_TURN_COUNT _02326124: .word DUNGEON_PTR +#ifdef JAPAN +_02326128: .word 0x00000C07 +#else _02326128: .word 0x00000EC5 +#endif arm_func_end DoMoveRainDance arm_func_start DoMoveHail @@ -848,10 +865,17 @@ DoMoveHail: ; 0x0232612C ldr r2, [r2] mov r5, r0 mov r4, r1 +#ifdef JAPAN + add r2, r2, #0xcc00 + mov r0, #1 + mov r1, #0 + strh r3, [r2, #0xa0] +#else add r2, r2, #0xcd00 mov r0, #1 mov r1, #0 strh r3, [r2, #0x44] +#endif bl TryActivateWeather cmp r0, #0 bne _02326174 @@ -865,7 +889,11 @@ _02326174: .align 2, 0 _0232617C: .word WEATHER_MOVE_TURN_COUNT _02326180: .word DUNGEON_PTR +#ifdef JAPAN +_02326184: .word 0x00000C0A +#else _02326184: .word 0x00000EC8 +#endif arm_func_end DoMoveHail arm_func_start DoMoveHealStatus @@ -939,7 +967,11 @@ DoMoveRage: ; 0x02326220 add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_02326260: .word 0x00000A0F +#else _02326260: .word 0x00000CCF +#endif arm_func_end DoMoveRage arm_func_start DoMoveSuperFang @@ -992,7 +1024,11 @@ _0232630C: add sp, sp, #0x20 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} .align 2, 0 +#ifdef JAPAN +_02326318: .word 0x00000C0B +#else _02326318: .word 0x00000EC9 +#endif arm_func_end DoMoveSuperFang arm_func_start DoMovePainSplit @@ -1046,23 +1082,40 @@ _023263B8: mov r0, #1 mov r2, #0 bl SubstitutePlaceholderStringTags +#ifdef JAPAN + ldrb r0, [r4, #0x107] +#else ldrb r0, [r4, #0x108] +#endif ldr r2, _02326404 ; =0x00000ECA mov r1, r5 cmp r0, #1 movlo r0, #1 +#ifdef JAPAN + strlob r0, [r4, #0x107] +#else strlob r0, [r4, #0x108] +#endif mov r0, r6 bl LogMessageByIdWithPopupCheckUserTarget mov r0, #1 ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _02326400: .word 0x000003E7 +#ifdef JAPAN +_02326404: .word 0x00000C0C +#else _02326404: .word 0x00000ECA +#endif arm_func_end DoMovePainSplit arm_func_start DoMoveTorment DoMoveTorment: ; 0x02326408 +#ifdef JAPAN +#define DO_MOVE_TORMENT_OFFSET -4 +#else +#define DO_MOVE_TORMENT_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #8 mov sb, r1 @@ -1070,7 +1123,7 @@ DoMoveTorment: ; 0x02326408 mov r7, #0 mov sl, r0 mov r6, r7 - add r5, r8, #0x124 + add r5, r8, #0x124 + DO_MOVE_TORMENT_OFFSET mov fp, #1 _0232642C: ldrb r0, [r5, r6, lsl #3] @@ -1107,7 +1160,7 @@ _023264A0: add r6, r6, #1 cmp r6, #4 blt _0232642C - ldrb r0, [r8, #0x144] + ldrb r0, [r8, #0x144 + DO_MOVE_TORMENT_OFFSET] tst r0, #0x20 bne _02326504 tst r0, #0x10 @@ -1115,10 +1168,10 @@ _023264A0: add r0, sp, #0 mov r1, #0x160 bl InitMove - ldrb r0, [r8, #0x144] + ldrb r0, [r8, #0x144 + DO_MOVE_TORMENT_OFFSET] mov r7, #1 orr r0, r0, #0x20 - strb r0, [r8, #0x144] + strb r0, [r8, #0x144 + DO_MOVE_TORMENT_OFFSET] bl ov29_0234B034 mov r1, #0 add r2, sp, #0 @@ -1132,7 +1185,7 @@ _023264A0: _02326504: tst r0, #0x10 biceq r0, r0, #0x20 - streqb r0, [r8, #0x144] + streqb r0, [r8, #0x144 + DO_MOVE_TORMENT_OFFSET] _02326510: cmp r7, #0 beq _0232652C @@ -1151,8 +1204,13 @@ _0232653C: add sp, sp, #8 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +_02326548: .word 0x00000C0D +_0232654C: .word 0x00000C0E +#else _02326548: .word 0x00000ECB _0232654C: .word 0x00000ECC +#endif arm_func_end DoMoveTorment arm_func_start DoMoveStringShot @@ -1230,7 +1288,11 @@ _02326634: ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} .align 2, 0 _02326640: .word SNORE_CRINGE_CHANCE +#ifdef JAPAN +_02326644: .word 0x00000C0F +#else _02326644: .word 0x00000ECD +#endif arm_func_end DoMoveSnore arm_func_start DoMoveScreech @@ -1379,7 +1441,11 @@ DoMoveSpite: ; 0x0232680C mov r5, r1 ldr r1, [r5, #0xb4] mov r4, #0 +#ifdef JAPAN + add lr, r1, #0x120 +#else add lr, r1, #0x124 +#endif mov ip, #1 mov r6, r0 mov r7, r4 @@ -1408,9 +1474,15 @@ _02326864: bl SubstitutePlaceholderStringTags cmp r4, #0 beq _0232689C +#ifdef JAPAN + mov r0, r6 + mov r1, r5 + mov r2, #0xc10 +#else ldr r2, _023268B4 ; =0x00000ECE mov r0, r6 mov r1, r5 +#endif bl LogMessageByIdWithPopupCheckUserTarget b _023268AC _0232689C: @@ -1422,8 +1494,12 @@ _023268AC: mov r0, r4 ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 +#ifdef JAPAN +_023268B8: .word 0x00000C11 +#else _023268B4: .word 0x00000ECE _023268B8: .word 0x00000ECF +#endif arm_func_end DoMoveSpite arm_func_start DoMoveFocusEnergy @@ -1491,7 +1567,11 @@ DoMoveOverheat: ; 0x0232692C bl DungeonRandOutcomeUserAction cmp r0, #0 movne r0, r4 +#ifdef JAPAN + strneb r0, [r5, #0x15b] +#else strneb r0, [r5, #0x15f] +#endif _02326988: mov r0, r4 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} @@ -1557,7 +1637,11 @@ DoMoveMemento: ; 0x02326A0C str ip, [sp] bl ApplyOffensiveStatMultiplier mov r0, #1 +#ifdef JAPAN + strb r0, [r4, #0x15a] +#else strb r0, [r4, #0x15e] +#endif add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, pc} .align 2, 0 @@ -1630,13 +1714,21 @@ DoMoveWillOWisp: ; 0x02326B24 movs r4, r0 beq _02326B94 ldr r3, [r5, #0xb4] +#ifdef JAPAN + ldrb r0, [r3, #0x158] +#else ldrb r0, [r3, #0x15c] +#endif cmp r0, #0 bne _02326BAC mov r0, #1 mov r1, r5 mov r2, #0 +#ifdef JAPAN + strb r0, [r3, #0x158] +#else strb r0, [r3, #0x15c] +#endif bl SubstitutePlaceholderStringTags cmp r4, #1 bne _02326B80 @@ -1663,8 +1755,13 @@ _02326BAC: add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_02326BB8: .word 0x00000A1D +_02326BBC: .word 0x00000A1C +#else _02326BB8: .word 0x00000CDD _02326BBC: .word 0x00000CDC +#endif arm_func_end DoMoveWillOWisp arm_func_start DoMoveReturn @@ -1954,7 +2051,11 @@ _02326F38: ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 _02326F40: .word RAZOR_WIND_DAMAGE_MULTIPLIER +#ifdef JAPAN +_02326F44: .word 0x00000A0D +#else _02326F44: .word 0x00000CCD +#endif arm_func_end DoMoveRazorWind arm_func_start DoMoveBide @@ -1976,7 +2077,11 @@ DoMoveBide: ; 0x02326F48 add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_02326F88: .word 0x00000A0E +#else _02326F88: .word 0x00000CCE +#endif arm_func_end DoMoveBide arm_func_start DoMoveBideUnleash @@ -2267,7 +2372,11 @@ _0232735C: mov r0, r4 ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 +#ifdef JAPAN +_02327364: .word 0x00000C14 +#else _02327364: .word 0x00000ED2 +#endif arm_func_end DoMoveBrickBreak arm_func_start DoMoveDamageLowerSpeed100 @@ -2326,7 +2435,11 @@ DoMoveFocusPunch: ; 0x023273CC bl ov29_02318D58 b _0232744C _02327428: +#ifdef JAPAN + mov r0, #0xa10 +#else mov r0, #0xcd0 +#endif bl StringFromId str r0, [sp] mov r0, r7 @@ -2393,13 +2506,21 @@ _023274C8: ldr r1, [sb, #0xb4] add r0, r5, r5, lsr #31 mov r5, r0, asr #1 +#ifdef JAPAN + ldrb r0, [r1, #0x107] +#else ldrb r0, [r1, #0x108] +#endif mov r4, #1 cmp r5, #1 movlt r5, r4 cmp r0, #1 movlo r0, #1 +#ifdef JAPAN + strlob r0, [r1, #0x107] +#else strlob r0, [r1, #0x108] +#endif cmp r6, #0 beq _0232754C mov r2, #0xd @@ -2414,7 +2535,11 @@ _0232754C: cmp r0, #0 movne r0, #0 bne _0232756C +#ifdef JAPAN + add r0, r1, #0x224 +#else add r0, r1, #0x228 +#endif mov r1, #0x57 bl ExclusiveItemEffectFlagTest _0232756C: @@ -2677,10 +2802,17 @@ DoMoveDamageBoostAllStats: ; 0x02327804 mov r1, r6 mov r3, r4 bl BoostDefensiveStat +#ifdef JAPAN + ldrb r0, [r5, #0x107] + cmp r0, #1 + movlo r0, r4 + strlob r0, [r5, #0x107] +#else ldrb r0, [r5, #0x108] cmp r0, #1 movlo r0, r4 strlob r0, [r5, #0x108] +#endif _023278D4: mov r0, r4 add sp, sp, #0xc @@ -2739,7 +2871,11 @@ DoMoveRapidSpin: ; 0x02327940 beq _023279A0 ldr r0, [r5, #0xb4] add r0, r0, #0x100 +#ifdef JAPAN + ldrh r0, [r0, #0x8e] +#else ldrh r0, [r0, #0x92] +#endif tst r0, #2 ldrne r0, _023279A8 ; =ov29_0237CA6D movne r1, #0 @@ -2851,7 +2987,11 @@ _02327ADC: .align 2, 0 _02327AE8: .word SKY_ATTACK_DAMAGE_MULTIPLIER _02327AEC: .word SKY_ATTACK_CRINGE_CHANCE +#ifdef JAPAN +_02327AF0: .word 0x00000A11 +#else _02327AF0: .word 0x00000CD1 +#endif arm_func_end DoMoveSkyAttack arm_func_start DoMoveDamageFreeze15 @@ -2919,10 +3059,17 @@ DoMoveMeteorMash: ; 0x02327B5C mov r1, r6 mov r3, r4 bl BoostOffensiveStat +#ifdef JAPAN + ldrb r0, [r5, #0x107] + cmp r0, #1 + movlo r0, r4 + strlob r0, [r5, #0x107] +#else ldrb r0, [r5, #0x108] cmp r0, #1 movlo r0, r4 strlob r0, [r5, #0x108] +#endif _02327BCC: mov r0, r4 add sp, sp, #4 @@ -3180,14 +3327,25 @@ _02327EB4: mov r0, r7 mov r1, r6 bl LogMessageByIdWithPopupCheckUserTarget +#ifdef JAPAN + ldrb r0, [r5, #0x107] + cmp r0, #1 + movlo r0, #1 + strlob r0, [r5, #0x107] +#else ldrb r0, [r5, #0x108] cmp r0, #1 movlo r0, #1 strlob r0, [r5, #0x108] +#endif mov r0, #1 ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 +#ifdef JAPAN +_02327F30: .word 0x00000AA2 +#else _02327F30: .word 0x00000D62 +#endif arm_func_end DoMovePsychUp arm_func_start DoMoveDamageWithRecoil diff --git a/asm/overlay_29_02328030.s b/asm/overlay_29_02328030.s index 86dc954d..9b0bf897 100644 --- a/asm/overlay_29_02328030.s +++ b/asm/overlay_29_02328030.s @@ -33,11 +33,19 @@ DoMoveEarthquake: ; 0x02328074 ldr ip, [lr] mov r4, #0xc add ip, ip, #0x1a000 +#ifdef JAPAN + str r4, [ip, #0x190] +#else str r4, [ip, #0x234] +#endif ldr ip, [lr] mov lr, #0 add ip, ip, #0x1a000 +#ifdef JAPAN + str lr, [ip, #0x194] +#else str lr, [ip, #0x238] +#endif ldrb ip, [r5, #0xd2] mov r4, #1 cmp ip, #0xa @@ -59,7 +67,11 @@ GetNaturePowerVariant: ; 0x023280D4 ldr r0, _02328108 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrsh r2, [r0, #0x30] +#else ldrsh r2, [r0, #0xd4] +#endif mov r0, #0xc cmp r2, #0 movlt r2, #0 @@ -234,7 +246,11 @@ DoMoveCharge: ; 0x023282C8 add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_02328320: .word 0x00000A19 +#else _02328320: .word 0x00000CD9 +#endif _02328324: .word SPATK_STAT_IDX arm_func_end DoMoveCharge @@ -353,7 +369,11 @@ _023284A8: add sp, sp, #0x20 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 +#ifdef JAPAN +_023284B4: .word 0x00000C15 +#else _023284B4: .word 0x00000ED3 +#endif _023284B8: .word 0x0000270F arm_func_end DoMoveFissure @@ -402,11 +422,17 @@ DoMoveSafeguard: ; 0x02328528 DoMoveAbsorb: ; 0x02328538 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} mov r8, r2 +#ifndef JAPAN mov r6, r3 +#endif mov r7, r0 mov sb, r1 mov r2, #0x3a +#ifdef JAPAN + mov r6, r3 +#else mov r3, #1 +#endif mov r4, #0 bl DefenderAbilityIsActiveMoveEffects__02328634 mov r5, r0 @@ -428,9 +454,15 @@ DoMoveAbsorb: ; 0x02328538 beq _0232862C ldr r1, [r7, #0xb4] mov r4, #1 +#ifdef JAPAN + ldrb r0, [r1, #0x107] + cmp r0, #1 + strlob r4, [r1, #0x107] +#else ldrb r0, [r1, #0x108] cmp r0, #1 strlob r4, [r1, #0x108] +#endif mov r0, r7 mov r1, #0 bl DungeonRandOutcomeUserAction @@ -441,7 +473,11 @@ DoMoveAbsorb: ; 0x02328538 cmp r0, #0 movne r0, #0 bne _023285E8 +#ifdef JAPAN + add r0, r1, #0x224 +#else add r0, r1, #0x228 +#endif mov r1, #0x57 bl ExclusiveItemEffectFlagTest _023285E8: @@ -485,7 +521,9 @@ DefenderAbilityIsActiveMoveEffects__02328634: ; 0x02328634 and r1, r1, #0xff _02328668: cmp r1, #0 +#ifndef JAPAN cmpne r3, #0 +#endif beq _02328688 mov r1, #0x53 bl AbilityIsActiveVeneer @@ -551,11 +589,19 @@ _02328714: mov r1, r6 strb ip, [r3, #0xe] bl LogMessageByIdWithPopupCheckUserTarget +#ifdef JAPAN + ldrb r0, [r4, #0x107] +#else ldrb r0, [r4, #0x108] +#endif mov r1, r7 cmp r0, #1 movlo r0, #1 +#ifdef JAPAN + strlob r0, [r4, #0x107] +#else strlob r0, [r4, #0x108] +#endif mov r0, r7 bl TryEndStatusWithAbility mov r0, r7 @@ -564,14 +610,25 @@ _02328714: mov r0, #1 ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 -_02328784: .word 0x00000ED5 -_02328788: .word 0x00000ED6 +#ifdef JAPAN +#define DO_MOVE_SKILL_SWAP_OFFSET -0x2BE +#else +#define DO_MOVE_SKILL_SWAP_OFFSET 0 +#endif +_02328784: .word 0x00000ED5 + DO_MOVE_SKILL_SWAP_OFFSET +_02328788: .word 0x00000ED6 + DO_MOVE_SKILL_SWAP_OFFSET _0232878C: .word DUNGEON_PTR -_02328790: .word 0x00000ED4 +_02328790: .word 0x00000ED4 + DO_MOVE_SKILL_SWAP_OFFSET arm_func_end DoMoveSkillSwap arm_func_start DoMoveSketch DoMoveSketch: ; 0x02328794 +#ifdef JAPAN +#define DO_MOVE_SKETCH_OFFSET -4 +#else +#define DO_MOVE_SKETCH_OFFSET 0 +#endif + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #8 mov r4, #0 @@ -579,7 +636,7 @@ DoMoveSketch: ; 0x02328794 str r4, [sp] ldr r6, [sb, #0xb4] mov sl, r0 - add r0, r6, #0x124 + add r0, r6, #0x124 + DO_MOVE_SKETCH_OFFSET mov r8, r2 mov fp, r4 mov r7, r4 @@ -588,7 +645,7 @@ DoMoveSketch: ; 0x02328794 b _02328820 _023287CC: add r0, r6, r7, lsl #3 - ldrb r0, [r0, #0x124] + ldrb r0, [r0, #0x124 + DO_MOVE_SKETCH_OFFSET] tst r0, #1 movne r0, #1 moveq r0, #0 @@ -601,10 +658,10 @@ _023287CC: cmp r0, #0 bne _0232881C add r1, r6, r7, lsl #3 - ldrb r0, [r1, #0x124] + ldrb r0, [r1, #0x124 + DO_MOVE_SKETCH_OFFSET] tst r0, #0x10 addne r0, r1, #0x100 - ldrneh fp, [r0, #0x28] + ldrneh fp, [r0, #0x28 + DO_MOVE_SKETCH_OFFSET] movne r4, #1 bne _02328828 _0232881C: @@ -643,10 +700,17 @@ _02328864: mov r1, sb strh r3, [r8, #2] bl LogMessageByIdWithPopupCheckUserTarget +#ifdef JAPAN + ldrb r0, [r5, #0x107] + cmp r0, #1 + movlo r0, #1 + strlob r0, [r5, #0x107] +#else ldrb r0, [r5, #0x108] cmp r0, #1 movlo r0, #1 strlob r0, [r5, #0x108] +#endif mov r0, #1 str r0, [sp] _023288B0: @@ -655,8 +719,13 @@ _023288B4: add sp, sp, #8 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +_023288BC: .word 0x00000AF8 +_023288C0: .word 0x00000AF7 +#else _023288BC: .word 0x00000DB8 _023288C0: .word 0x00000DB7 +#endif arm_func_end DoMoveSketch arm_func_start DoMoveHeadbutt @@ -757,10 +826,17 @@ DoMoveSandstorm: ; 0x023289F8 ldr r2, [r2] mov r5, r0 mov r4, r1 +#ifdef JAPAN + add r2, r2, #0xcd00 + mov r0, #1 + mov r1, #0 + strh r3, [r2, #0x9a] +#else add r2, r2, #0xcd00 mov r0, #1 mov r1, #0 strh r3, [r2, #0x3e] +#endif bl TryActivateWeather cmp r0, #0 bne _02328A40 @@ -774,7 +850,11 @@ _02328A40: .align 2, 0 _02328A48: .word WEATHER_MOVE_TURN_COUNT _02328A4C: .word DUNGEON_PTR +#ifdef JAPAN +_02328A50: .word 0x00000C08 +#else _02328A50: .word 0x00000EC6 +#endif arm_func_end DoMoveSandstorm arm_func_start DoMoveLowerAccuracy1 @@ -938,7 +1018,11 @@ _02328C64: add sp, sp, #0x20 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 +#ifdef JAPAN +_02328C6C: .word 0x00000C19 +#else _02328C6C: .word 0x00000ED7 +#endif _02328C70: .word 0x0000270F arm_func_end DoMoveOhko @@ -1001,7 +1085,11 @@ _02328D30: ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} .align 2, 0 _02328D3C: .word SOLARBEAM_DAMAGE_MULTIPLIER +#ifdef JAPAN +_02328D40: .word 0x00000A12 +#else _02328D40: .word 0x00000CD2 +#endif arm_func_end DoMoveSolarBeam arm_func_start DoMoveSonicBoom @@ -1089,7 +1177,11 @@ _02328E64: ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 _02328E6C: .word FLY_DAMAGE_MULTIPLIER +#ifdef JAPAN +_02328E70: .word 0x00000A13 +#else _02328E70: .word 0x00000CD3 +#endif arm_func_end DoMoveFly arm_func_start DoMoveExplosion @@ -1171,9 +1263,15 @@ _02328F7C: add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} .align 2, 0 +#ifdef JAPAN +_02328F88: .word 0x00000C1A +_02328F8C: .word DIVE_DAMAGE_MULTIPLIER +_02328F90: .word 0x00000A15 +#else _02328F88: .word 0x00000ED8 _02328F8C: .word DIVE_DAMAGE_MULTIPLIER _02328F90: .word 0x00000CD5 +#endif arm_func_end DoMoveDive arm_func_start DoMoveWaterfall @@ -1598,7 +1696,11 @@ _02329524: add sp, sp, #0x20 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 +#ifdef JAPAN +_0232952C: .word 0x00000C1B +#else _0232952C: .word 0x00000ED9 +#endif _02329530: .word 0x0000270F arm_func_end DoMoveHornDrill @@ -1636,7 +1738,11 @@ DoMoveConversion: ; 0x02329554 b _02329650 _02329598: mov r5, r8 +#ifdef JAPAN + add r4, r7, #0x120 +#else add r4, r7, #0x124 +#endif add fp, sp, #0 _023295A4: ldrb r0, [r4, r5, lsl #3] @@ -1688,9 +1794,15 @@ _02329650: add sp, sp, #0x10 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +_02329658: .word 0x00000B03 +_0232965C: .word 0x00000AF6 +_02329660: .word 0x00000AF5 +#else _02329658: .word 0x00000DC3 _0232965C: .word 0x00000DB6 _02329660: .word 0x00000DB5 +#endif arm_func_end DoMoveConversion arm_func_start DoMoveConversion2 @@ -1728,7 +1840,11 @@ _023296C4: mov r0, r4 ldmia sp!, {r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_023296CC: .word 0x00000C1C +#else _023296CC: .word 0x00000EDA +#endif _023296D0: .word ATK_STAT_IDX _023296D4: .word SPATK_STAT_IDX arm_func_end DoMoveHelpingHand @@ -1805,7 +1921,9 @@ DoMoveThunderWave: ; 0x0232977C mov r0, r7 mov r1, r6 mov r2, #0x66 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActiveMoveEffects__02328634 cmp r0, #0 beq _023297D4 @@ -2026,7 +2144,11 @@ _02329A88: add sp, sp, #0x30 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 +#ifdef JAPAN +_02329A94: .word 0x00000C1D +#else _02329A94: .word 0x00000EDB +#endif _02329A98: .word 0x00000236 arm_func_end DoMoveJumpKick @@ -2086,7 +2208,11 @@ _02329B50: .align 2, 0 _02329B5C: .word BOUNCE_DAMAGE_MULTIPLIER _02329B60: .word BOUNCE_PARALYZE_CHANCE +#ifdef JAPAN +_02329B64: .word 0x00000A14 +#else _02329B64: .word 0x00000CD4 +#endif arm_func_end DoMoveBounce arm_func_start DoMoveHiJumpKick @@ -2167,7 +2293,11 @@ _02329C80: add sp, sp, #0x30 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 +#ifdef JAPAN +_02329C8C: .word 0x00000C1D +#else _02329C8C: .word 0x00000EDB +#endif _02329C90: .word 0x00000237 arm_func_end DoMoveHiJumpKick @@ -2247,13 +2377,21 @@ DoMoveSwapItems: ; 0x02329D50 mov r0, r7 mov r1, r6 mov r2, #0x2c +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActiveMoveEffects__02329F14 cmp r0, #0 beq _02329DC0 +#ifdef JAPAN + mov r0, r7 + mov r1, r6 + mov r2, #0xc20 +#else ldr r2, _02329F08 ; =0x00000EDE mov r0, r7 mov r1, r6 +#endif bl LogMessageByIdWithPopupCheckUserTarget mov r0, r8 b _02329F00 @@ -2334,12 +2472,20 @@ _02329EA8: bl ov29_022F9EA0 mov r0, r6 bl ov29_022F9EA0 +#ifdef JAPAN + ldrb r0, [r4, #0x107] +#else ldrb r0, [r4, #0x108] +#endif ldr r2, _02329F10 ; =0x00000EDC mov r1, r6 cmp r0, #1 movlo r0, #1 +#ifdef JAPAN + strlob r0, [r4, #0x107] +#else strlob r0, [r4, #0x108] +#endif mov r0, r7 bl LogMessageByIdWithPopupCheckUserTarget mov r0, #1 @@ -2347,9 +2493,14 @@ _02329F00: add sp, sp, #8 ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 +#ifdef JAPAN +_02329F0C: .word 0x00000C1F +_02329F10: .word 0x00000C1E +#else _02329F08: .word 0x00000EDE _02329F0C: .word 0x00000EDD _02329F10: .word 0x00000EDC +#endif arm_func_end DoMoveSwapItems arm_func_start DefenderAbilityIsActiveMoveEffects__02329F14 @@ -2369,7 +2520,9 @@ DefenderAbilityIsActiveMoveEffects__02329F14: ; 0x02329F14 and r1, r1, #0xff _02329F48: cmp r1, #0 +#ifndef JAPAN cmpne r3, #0 +#endif beq _02329F68 mov r1, #0x53 bl AbilityIsActiveVeneer @@ -2561,7 +2714,9 @@ DoMoveRolePlay: ; 0x0232A188 mov r6, r0 mov r5, r1 mov r2, #0x35 +#ifndef JAPAN mov r3, #1 +#endif ldr r4, [r6, #0xb4] ldr r7, [r5, #0xb4] bl DefenderAbilityIsActiveMoveEffects__02329F14 @@ -2581,11 +2736,19 @@ _0232A1C8: ldrb r2, [r7, #0x61] strb r2, [r4, #0x61] ldr r0, [r0] +#ifdef JAPAN + ldr r2, _0232B68C ; =0x00000C22 + strb r1, [r0, #0xe] + ldrb r0, [r4, #0x107] + cmp r0, #1 + strlob r1, [r4, #0x107] +#else mov r2, #0xee0 strb r1, [r0, #0xe] ldrb r0, [r4, #0x108] cmp r0, #1 strlob r1, [r4, #0x108] +#endif mov r0, r6 mov r1, r5 bl LogMessageByIdWithPopupCheckUserTarget @@ -2595,8 +2758,14 @@ _0232A1C8: mov r0, #1 ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 +#ifdef JAPAN +_0232A218: .word 0x00000C23 +_0232A21C: .word DUNGEON_PTR +_0232B68C: .word 0x00000C22 +#else _0232A218: .word 0x00000EE1 _0232A21C: .word DUNGEON_PTR +#endif arm_func_end DoMoveRolePlay arm_func_start DoMoveSunnyDay @@ -2608,10 +2777,17 @@ DoMoveSunnyDay: ; 0x0232A220 ldr r2, [r2] mov r5, r0 mov r4, r1 +#ifdef JAPAN + add r2, r2, #0xcc00 + mov r0, #1 + mov r1, #0 + strh r3, [r2, #0x98] +#else add r2, r2, #0xcd00 mov r0, #1 mov r1, #0 strh r3, [r2, #0x3c] +#endif bl TryActivateWeather cmp r0, #0 bne _0232A268 @@ -2625,7 +2801,11 @@ _0232A268: .align 2, 0 _0232A270: .word WEATHER_MOVE_TURN_COUNT _0232A274: .word DUNGEON_PTR +#ifdef JAPAN +_0232A278: .word 0x00000C09 +#else _0232A278: .word 0x00000EC7 +#endif arm_func_end DoMoveSunnyDay arm_func_start DoMoveLowerDefense1 @@ -2694,7 +2874,11 @@ DoMoveSleepTalk: ; 0x0232A328 mov r0, #0 ldmia sp!, {r3, pc} .align 2, 0 +#ifdef JAPAN +_0232A33C: .word 0x00000C24 +#else _0232A33C: .word 0x00000EE2 +#endif arm_func_end DoMoveSleepTalk arm_func_start DoMovePayDay diff --git a/asm/overlay_29_0232A3FC.s b/asm/overlay_29_0232A3FC.s index ac1778b0..247eb8f5 100644 --- a/asm/overlay_29_0232A3FC.s +++ b/asm/overlay_29_0232A3FC.s @@ -11,7 +11,11 @@ DoMoveAssist: ; 0x0232A3FC mov r0, #0 ldmia sp!, {r3, pc} .align 2, 0 +#ifdef JAPAN +_0232A410: .word 0x00000C25 +#else _0232A410: .word 0x00000EE3 +#endif arm_func_end DoMoveAssist arm_func_start DoMoveRest @@ -61,7 +65,11 @@ DoMoveSwallow: ; 0x0232A490 stmdb sp!, {r3, r4, lr} sub sp, sp, #4 ldr r4, [r1, #0xb4] +#ifdef JAPAN + ldrb r3, [r4, #0x11a] +#else ldrb r3, [r4, #0x11e] +#endif cmp r3, #0 beq _0232A4CC ldr r2, _0232A4E0 ; =ov10_022C49D4 @@ -71,7 +79,11 @@ DoMoveSwallow: ; 0x0232A490 str ip, [sp] bl TryIncreaseHp mov r0, #0 +#ifdef JAPAN + strb r0, [r4, #0x11a] +#else strb r0, [r4, #0x11e] +#endif b _0232A4D4 _0232A4CC: ldr r2, _0232A4E4 ; =0x00000EE4 @@ -82,7 +94,11 @@ _0232A4D4: ldmia sp!, {r3, r4, pc} .align 2, 0 _0232A4E0: .word ov10_022C49D4 +#ifdef JAPAN +_0232A4E4: .word 0x00000C26 +#else _0232A4E4: .word 0x00000EE4 +#endif arm_func_end DoMoveSwallow arm_func_start DoMoveCurse @@ -156,7 +172,9 @@ DoMoveSteelWing: ; 0x0232A5AC ldr ip, [sp, #0x28] mov r3, #0x100 mov r6, r0 +#ifndef JAPAN mov r5, r1 +#endif str ip, [sp] mov r4, #0 bl DealDamage @@ -165,7 +183,11 @@ DoMoveSteelWing: ; 0x0232A5AC ldr r1, _0232A63C ; =STEEL_WING_BOOST_DEFENSE_CHANCE mov r0, r6 ldrsh r2, [r1] +#ifdef JAPAN + mov r1, r6 +#else mov r1, r5 +#endif mov r4, #1 bl DungeonRandOutcomeUserTargetInteraction cmp r0, #0 @@ -177,10 +199,17 @@ DoMoveSteelWing: ; 0x0232A5AC mov r1, r6 mov r3, r4 bl BoostDefensiveStat +#ifdef JAPAN + ldrb r0, [r5, #0x107] + cmp r0, #1 + movlo r0, r4 + strlob r0, [r5, #0x107] +#else ldrb r0, [r5, #0x108] cmp r0, #1 movlo r0, r4 strlob r0, [r5, #0x108] +#endif _0232A628: mov r0, r4 add sp, sp, #4 @@ -196,14 +225,22 @@ DoMoveSpitUp: ; 0x0232A640 stmdb sp!, {r3, r4, lr} sub sp, sp, #4 ldr r4, [r0, #0xb4] +#ifdef JAPAN + ldrb ip, [r4, #0x11a] +#else ldrb ip, [r4, #0x11e] +#endif cmp ip, #0 beq _0232A670 str r3, [sp] mov r3, ip, lsl #8 bl DealDamage mov r0, #0 +#ifdef JAPAN + strb r0, [r4, #0x11a] +#else strb r0, [r4, #0x11e] +#endif b _0232A678 _0232A670: ldr r2, _0232A684 ; =0x00000EE5 @@ -213,7 +250,11 @@ _0232A678: add sp, sp, #4 ldmia sp!, {r3, r4, pc} .align 2, 0 +#ifdef JAPAN +_0232A684: .word 0x00000C27 +#else _0232A684: .word 0x00000EE5 +#endif arm_func_end DoMoveSpitUp arm_func_start DoMoveDynamicPunch @@ -265,7 +306,9 @@ DoMoveKnockOff: ; 0x0232A6EC mov r0, r7 mov r1, r6 mov r2, #0x2c +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActiveMoveEffects__02329F14 cmp r0, #0 beq _0232A758 @@ -330,9 +373,15 @@ _0232A818: add sp, sp, #0xc ldmia sp!, {r4, r5, r6, r7, pc} .align 2, 0 +#ifdef JAPAN +_0232A820: .word 0x00000C28 +_0232A824: .word 0x00000C2A +_0232A828: .word 0x00000C29 +#else _0232A820: .word 0x00000EE6 _0232A824: .word 0x00000EE8 _0232A828: .word 0x00000EE7 +#endif _0232A82C: .word DIRECTIONS_XY _0232A830: .word ov29_0235171E arm_func_end DoMoveKnockOff @@ -605,8 +654,10 @@ _0232ABDC: bl AbilityIsActiveVeneer cmp r0, #0 bne _0232AC24 +#ifndef JAPAN mov r0, sb bl ov29_02321260 +#endif mov r0, sl mov r1, sb bl ov29_02321164 @@ -618,7 +669,11 @@ _0232AC30: add sp, sp, #0x28 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +_0232AC38: .word 0x00000C2C +#else _0232AC38: .word 0x00000EEA +#endif _0232AC3C: .word 0x00000163 _0232AC40: .word ov10_022C44B4 arm_func_end DoMoveSplash @@ -633,16 +688,21 @@ DoMoveSetDamage: ; 0x0232AC44 arm_func_start DoMoveBellyDrum DoMoveBellyDrum: ; 0x0232AC54 +#ifdef JAPAN +#define DO_MOVE_BELLY_DRUM_OFFSET -4 +#else +#define DO_MOVE_BELLY_DRUM_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r7, r0 ldr r5, [r7, #0xb4] sub r3, sp, #4 add r0, r5, #0x100 - ldrh r2, [r0, #0x46] + ldrh r2, [r0, #0x46 + DO_MOVE_BELLY_DRUM_OFFSET] mov r6, r1 mov r4, #0 strh r2, [r3] - ldrh r0, [r0, #0x48] + ldrh r0, [r0, #0x48 + DO_MOVE_BELLY_DRUM_OFFSET] strh r0, [r3, #2] ldr r0, [r3] bl CeilFixedPoint @@ -662,9 +722,9 @@ DoMoveBellyDrum: ; 0x0232AC54 ldrh r2, [sp] add r0, r5, #0x100 ldrh r1, [sp, #2] - strh r2, [r0, #0x46] + strh r2, [r0, #0x46 + DO_MOVE_BELLY_DRUM_OFFSET] mov r4, #1 - strh r1, [r0, #0x48] + strh r1, [r0, #0x48 + DO_MOVE_BELLY_DRUM_OFFSET] b _0232ACF8 _0232ACD8: mov r0, r4 @@ -680,7 +740,11 @@ _0232ACF8: ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 _0232AD00: .word ATK_STAT_IDX +#ifdef JAPAN +_0232AD04: .word 0x00000C2D +#else _0232AD04: .word 0x00000EEB +#endif arm_func_end DoMoveBellyDrum arm_func_start DoMoveLightScreen @@ -716,7 +780,11 @@ DoMoveSecretPower: ; 0x0232AD18 ldr r0, [r0] ldr r2, _0232AEE4 ; =ov10_022C6321 add r0, r0, #0x4000 +#ifdef JAPAN + ldrsh r0, [r0, #0x30] +#else ldrsh r0, [r0, #0xd4] +#endif smulbb r0, r0, r1 ldrb r0, [r2, r0] cmp r0, #9 @@ -938,10 +1006,17 @@ DoMoveBeatUp: ; 0x0232B024 movne r6, #0x10 ldrne r0, [r0] moveq r6, #4 +#ifdef JAPAN + addne r0, r0, #0x294 + ldreq r0, _0232B110 ; =DUNGEON_PTR + ldreq r0, [r0] + addeq r0, r0, #0x294 +#else addne r0, r0, #0x338 ldreq r0, _0232B110 ; =DUNGEON_PTR ldreq r0, [r0] addeq r0, r0, #0x328 +#endif add r7, r0, #0x12800 b _0232B0E8 _0232B06C: @@ -970,11 +1045,19 @@ _0232B06C: mov r2, #2 add r3, fp, #4 bl TryWarp +#ifdef JAPAN + ldrb r0, [r8, #0x107] +#else ldrb r0, [r8, #0x108] +#endif mov r4, #1 cmp r0, #1 movlo r0, r4 +#ifdef JAPAN + strlob r0, [r8, #0x107] +#else strlob r0, [r8, #0x108] +#endif _0232B0E4: add r5, r5, #1 _0232B0E8: @@ -991,7 +1074,11 @@ _0232B108: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _0232B110: .word DUNGEON_PTR +#ifdef JAPAN +_0232B114: .word 0x00000C2E +#else _0232B114: .word 0x00000EEC +#endif arm_func_end DoMoveBeatUp arm_func_start DoMoveBlastBurn @@ -1254,7 +1341,11 @@ _0232B47C: mov r0, #1 ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_0232B490: .word 0x00000C2F +#else _0232B490: .word 0x00000EED +#endif arm_func_end DoMoveTransform arm_func_start DoMovePoisonTail @@ -1311,7 +1402,11 @@ DoMoveCamouflage: ; 0x0232B518 ldr r0, [r0] ldr r3, _0232B5BC ; =ov10_022C6322 add r0, r0, #0x4000 +#ifdef JAPAN + ldrsh ip, [r0, #0x30] +#else ldrsh ip, [r0, #0xd4] +#endif mov r0, r4 mov r1, #0x25 smulbb r2, ip, r2 @@ -1337,17 +1432,27 @@ _0232B578: mov r1, r6 mov r0, #0 bl ov29_0234B084 +#ifdef JAPAN + mov r0, r5 + mov r1, r4 + mov r2, #0xc30 +#else ldr r2, _0232B5C4 ; =0x00000EEE mov r0, r5 mov r1, r4 +#endif bl LogMessageByIdWithPopupCheckUserTarget mov r0, #1 ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 _0232B5B8: .word DUNGEON_PTR _0232B5BC: .word ov10_022C6322 +#ifdef JAPAN +_0232B5C0: .word 0x00000B03 +#else _0232B5C0: .word 0x00000DC3 _0232B5C4: .word 0x00000EEE +#endif arm_func_end DoMoveCamouflage arm_func_start DoMoveTailGlow @@ -1437,6 +1542,19 @@ DoMoveWrap: ; 0x0232B6B8 arm_func_start DoMoveSpikes DoMoveSpikes: ; 0x0232B6C8 +#ifdef JAPAN + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r0, [r6, #0xb4] + mov r5, r1 + ldrb r0, [r0, #6] + mov r4, #0 + mov r1, #0x13 + cmp r0, #0 + movne r2, #2 + moveq r2, #1 + add r0, r6, #4 +#else stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r7, r0 ldr r0, [r7, #0xb4] @@ -1452,6 +1570,7 @@ DoMoveSpikes: ; 0x0232B6C8 mov r2, r5 add r0, r7, #4 mov r1, #0x13 +#endif mov r3, #1 bl TrySpawnTrap cmp r0, #0 @@ -1459,15 +1578,26 @@ DoMoveSpikes: ; 0x0232B6C8 bne _0232B728 _0232B718: ldr r2, _0232B734 ; =0x00000EEF +#ifdef JAPAN + mov r0, r6 + mov r1, r5 +#else mov r0, r7 mov r1, r6 +#endif bl LogMessageByIdWithPopupCheckUserTarget _0232B728: bl UpdateTrapsVisibility mov r0, r4 +#ifdef JAPAN + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0232B734: .word 0x00000C31 +#else ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 _0232B734: .word 0x00000EEF +#endif arm_func_end DoMoveSpikes arm_func_start DoMoveMagnitude @@ -1482,11 +1612,19 @@ DoMoveMagnitude: ; 0x0232B738 ldr r6, [r6, ip, lsl #2] ldr lr, [r1, #0xb4] add r4, r4, #0x1a000 +#ifdef JAPAN + str r6, [r4, #0x190] +#else str r6, [r4, #0x234] +#endif ldr r4, [r5] mov r5, #0 add r4, r4, #0x1a000 +#ifdef JAPAN + str r5, [r4, #0x194] +#else str r5, [r4, #0x238] +#endif ldrb r4, [lr, #0xd2] ldr r5, _0232B7BC ; =ov10_022C4924 mov ip, ip, lsl #1 @@ -1684,10 +1822,17 @@ DoMoveMetalClaw: ; 0x0232B940 mov r1, r6 mov r3, r4 bl BoostOffensiveStat +#ifdef JAPAN + ldrb r0, [r5, #0x107] + cmp r0, #1 + movlo r0, r4 + strlob r0, [r5, #0x107] +#else ldrb r0, [r5, #0x108] cmp r0, #1 movlo r0, r4 strlob r0, [r5, #0x108] +#endif _0232B9B8: mov r0, r4 add sp, sp, #4 @@ -1724,13 +1869,23 @@ _0232BA14: mov r1, r5 mov r2, r0 bl SubstitutePlaceholderStringTags +#ifdef JAPAN + ldr r2, _0232CE90 ; =0x00000C52 + mov r0, r6 + mov r1, r5 +#else mov r0, r6 mov r1, r5 mov r2, #0xf10 +#endif bl LogMessageByIdWithPopupCheckUserTarget _0232BA3C: mov r0, r4 ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +#ifdef JAPAN +_0232CE90: .word 0x00000C52 +#endif arm_func_end DoMoveAttract arm_func_start DoMoveCopycat @@ -1740,7 +1895,11 @@ DoMoveCopycat: ; 0x0232BA44 mov r0, r1 ldr r0, [r0, #0xb4] mov r7, #0 +#ifdef JAPAN + add r4, r0, #0x120 +#else add r4, r0, #0x124 +#endif ldr r0, _0232BB44 ; =0x0000020D ldr sb, [sl, #0xb4] str r1, [sp] @@ -1773,7 +1932,11 @@ _0232BA74: tst r0, #0x10 addne r0, sb, r6, lsl #1 addne r0, r0, #0x100 +#ifdef JAPAN + strneh r1, [r0, #0x90] +#else strneh r1, [r0, #0x94] +#endif addne r6, r6, #1 _0232BAE0: add r5, r5, #1 @@ -1785,12 +1948,21 @@ _0232BAE0: bl SubstitutePlaceholderStringTags cmp r6, #0 beq _0232BB2C +#ifdef JAPAN + ldrb r0, [sb, #0x107] + ldr r2, _0232CF98 ; =0x00000C32 + ldr r1, [sp] + cmp r0, #1 + movlo r0, #1 + strlob r0, [sb, #0x107] +#else ldrb r0, [sb, #0x108] ldr r1, [sp] mov r2, #0xef0 cmp r0, #1 movlo r0, #1 strlob r0, [sb, #0x108] +#endif mov r0, sl bl LogMessageByIdWithPopupCheckUserTarget mov r7, #1 @@ -1805,7 +1977,12 @@ _0232BB3C: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _0232BB44: .word 0x0000020D +#ifdef JAPAN +_0232CF98: .word 0x00000C32 +_0232BB48: .word 0x00000C33 +#else _0232BB48: .word 0x00000EF1 +#endif arm_func_end DoMoveCopycat arm_func_start DoMoveFrustration @@ -1882,10 +2059,17 @@ DoMoveLeechSeed: ; 0x0232BC34 mov r3, #0 bl TryInflictLeechSeedStatus ldr r1, [r4, #0xb4] +#ifdef JAPAN + ldrb r0, [r1, #0x107] + cmp r0, #1 + movlo r0, #1 + strlob r0, [r1, #0x107] +#else ldrb r0, [r1, #0x108] cmp r0, #1 movlo r0, #1 strlob r0, [r1, #0x108] +#endif mov r0, #1 ldmia sp!, {r4, pc} arm_func_end DoMoveLeechSeed @@ -1923,11 +2107,18 @@ _0232BCC0: .word ov10_022C5DE0 DoMoveDreamEater: ; 0x0232BCC4 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} mov r8, r2 +#ifdef JAPAN + mov sb, r1 + mov r2, #0x3a + mov r7, r0 + mov r6, r3 +#else mov r6, r3 mov sb, r1 mov r2, #0x3a mov r3, #1 mov r7, r0 +#endif mov r4, #0 bl DefenderAbilityIsActiveMoveEffects__0232BDD0 mov r5, r0 @@ -1956,10 +2147,17 @@ DoMoveDreamEater: ; 0x0232BCC4 cmp r0, #0 beq _0232BDC4 ldr r1, [r7, #0xb4] +#ifdef JAPAN + ldrb r0, [r1, #0x107] + cmp r0, #1 + movlo r0, #1 + strlob r0, [r1, #0x107] +#else ldrb r0, [r1, #0x108] cmp r0, #1 movlo r0, #1 strlob r0, [r1, #0x108] +#endif mov r0, r7 mov r1, #0 bl DungeonRandOutcomeUserAction @@ -1991,7 +2189,11 @@ _0232BDC4: mov r0, r4 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 +#ifdef JAPAN +_0232BDCC: .word 0x00000C34 +#else _0232BDCC: .word 0x00000EF2 +#endif arm_func_end DoMoveDreamEater arm_func_start DefenderAbilityIsActiveMoveEffects__0232BDD0 @@ -2011,7 +2213,9 @@ DefenderAbilityIsActiveMoveEffects__0232BDD0: ; 0x0232BDD0 and r1, r1, #0xff _0232BE04: cmp r1, #0 +#ifndef JAPAN cmpne r3, #0 +#endif beq _0232BE24 mov r1, #0x53 bl AbilityIsActiveVeneer @@ -2035,6 +2239,12 @@ DoMoveSnatch: ; 0x0232BE34 arm_func_start DoMoveRecycle DoMoveRecycle: ; 0x0232BE44 +#ifdef JAPAN +#define DO_MOVE_RECYCLE_OFFSET 4 +#else +#define DO_MOVE_RECYCLE_OFFSET 0 +#endif + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} mov r5, r1 ldr r1, [r5, #0xb4] @@ -2079,6 +2289,16 @@ _0232BE74: add r0, r0, r4 strb sb, [r0, #1] beq _0232BF24 +#ifdef JAPAN + ldr r2, [r7] + mov r0, #0x23c + ldr r1, [r8] + mla r0, sb, r0, r2 + ldr r1, [r1, #0x384] + add r0, r0, #0x600 + add r2, r1, r4 + ldrh r1, [r1, r4] +#else ldr r1, [r8] ldr r2, [r7] add r0, sb, sb, lsl #3 @@ -2087,11 +2307,12 @@ _0232BE74: add r0, r0, #0x600 ldrh r1, [r2, r4] add r2, r2, r4 - strh r1, [r0, #0x16] +#endif + strh r1, [r0, #0x16 + DO_MOVE_RECYCLE_OFFSET] ldrh r1, [r2, #2] - strh r1, [r0, #0x18] + strh r1, [r0, #0x18 + DO_MOVE_RECYCLE_OFFSET] ldrh r1, [r2, #4] - strh r1, [r0, #0x1a] + strh r1, [r0, #0x1a + DO_MOVE_RECYCLE_OFFSET] _0232BF24: mov sb, #1 _0232BF28: @@ -2117,8 +2338,13 @@ _0232BF60: .align 2, 0 _0232BF68: .word DUNGEON_PTR _0232BF6C: .word BAG_ITEMS_PTR_MIRROR +#ifdef JAPAN +_0232BF70: .word 0x00000C35 +_0232BF74: .word 0x00000C36 +#else _0232BF70: .word 0x00000EF3 _0232BF74: .word 0x00000EF4 +#endif arm_func_end DoMoveRecycle arm_func_start DoMoveReflect @@ -2234,7 +2460,11 @@ _0232C0E4: ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 _0232C0EC: .word SKULL_BASH_DAMAGE_MULTIPLIER +#ifdef JAPAN +_0232C0F0: .word 0x00000A2B +#else _0232C0F0: .word 0x00000CEB +#endif arm_func_end DoMoveSkullBash arm_func_start DoMoveDamageLowerSpecialDefense50 @@ -2385,9 +2615,15 @@ _0232C2E8: add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_0232C2F4: .word 0x00000C37 +_0232C2F8: .word 0x00000C38 +_0232C2FC: .word 0x00000C39 +#else _0232C2F4: .word 0x00000EF5 _0232C2F8: .word 0x00000EF6 _0232C2FC: .word 0x00000EF7 +#endif arm_func_end DoMoveRockSmash arm_func_start DoMoveSeeTrap @@ -2430,13 +2666,21 @@ DoMoveTakeaway: ; 0x0232C310 mov r0, r8 mov r1, r7 mov r2, #0x2c +#ifndef JAPAN mov r3, r4 +#endif bl DefenderAbilityIsActiveMoveEffects__0232BDD0 cmp r0, #0 beq _0232C3B0 +#ifdef JAPAN + mov r0, r8 + mov r1, r7 + mov r2, #0xc40 +#else ldr r2, _0232C4E8 ; =0x00000EFE mov r0, r8 mov r1, r7 +#endif bl LogMessageByIdWithPopupCheckUserTarget mov r0, r4 b _0232C4E0 @@ -2504,12 +2748,20 @@ _0232C480: bl ov29_022F9EA0 mov r0, r7 bl ov29_022F9EA0 +#ifdef JAPAN + ldrb r0, [r5, #0x107] +#else ldrb r0, [r5, #0x108] +#endif ldr r2, _0232C4F8 ; =0x00000EF9 mov r1, r7 cmp r0, #1 movlo r0, #1 +#ifdef JAPAN + strlob r0, [r5, #0x107] +#else strlob r0, [r5, #0x108] +#endif mov r0, r8 bl LogMessageByIdWithPopupCheckUserTarget b _0232C4DC @@ -2528,10 +2780,17 @@ _0232C4E0: add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} .align 2, 0 +#ifdef JAPAN +#define DO_MOVE_TAKEAWAY_OFFSET -0x2BE +#else +#define DO_MOVE_TAKEAWAY_OFFSET 0 +#endif +#ifndef JAPAN _0232C4E8: .word 0x00000EFE -_0232C4EC: .word 0x00000EFA -_0232C4F0: .word 0x00000EFB -_0232C4F4: .word 0x00000EFC -_0232C4F8: .word 0x00000EF9 -_0232C4FC: .word 0x00000EFD +#endif +_0232C4EC: .word 0x00000EFA + DO_MOVE_TAKEAWAY_OFFSET +_0232C4F0: .word 0x00000EFB + DO_MOVE_TAKEAWAY_OFFSET +_0232C4F4: .word 0x00000EFC + DO_MOVE_TAKEAWAY_OFFSET +_0232C4F8: .word 0x00000EF9 + DO_MOVE_TAKEAWAY_OFFSET +_0232C4FC: .word 0x00000EFD + DO_MOVE_TAKEAWAY_OFFSET arm_func_end DoMoveTakeaway diff --git a/asm/overlay_29_0232C524.s b/asm/overlay_29_0232C524.s index 3233d663..0385ce17 100644 --- a/asm/overlay_29_0232C524.s +++ b/asm/overlay_29_0232C524.s @@ -16,10 +16,17 @@ DoMoveRebound: ; 0x0232C524 DoMoveSwitchPositions: ; 0x0232C538 stmdb sp!, {r3, lr} ldr r3, [r0, #0xb4] +#ifdef JAPAN + ldrb r2, [r3, #0x107] + cmp r2, #1 + movlo r2, #1 + strlob r2, [r3, #0x107] +#else ldrb r2, [r3, #0x108] cmp r2, #1 movlo r2, #1 strlob r2, [r3, #0x108] +#endif mov r2, #1 bl TrySwitchPlace mov r0, #1 @@ -79,7 +86,11 @@ _0232C604: ldr r0, [r4] add r0, r0, r8, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r7, [r0, #0xa84] +#else ldr r7, [r0, #0xb28] +#endif mov r0, r7 bl EntityIsValidMoveEffects__0232C500 cmp r0, #0 @@ -112,9 +123,15 @@ _0232C66C: bl LogMessageByIdWithPopupCheckUserTarget b _0232C698 _0232C688: +#ifdef JAPAN + ldr r2, _0232DAF8 ; =0x00000C42 + mov r0, sl + mov r1, sb +#else mov r0, sl mov r1, sb mov r2, #0xf00 +#endif bl LogMessageByIdWithPopupCheckUserTarget _0232C698: bl ov29_022E8104 @@ -124,7 +141,12 @@ _0232C698: .align 2, 0 _0232C6A8: .word BAG_ITEMS_PTR_MIRROR _0232C6AC: .word DUNGEON_PTR +#ifdef JAPAN +_0232C6B0: .word 0x00000C41 +_0232DAF8: .word 0x00000C42 +#else _0232C6B0: .word 0x00000EFF +#endif arm_func_end DoMoveCleanse arm_func_start DoMoveSiesta @@ -377,8 +399,13 @@ _0232CA04: mov r0, fp ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 +#ifdef JAPAN +_0232CA0C: .word 0x00000C44 +_0232CA10: .word 0x00000C43 +#else _0232CA0C: .word 0x00000F02 _0232CA10: .word 0x00000F01 +#endif arm_func_end DoMoveTransfer arm_func_start DoMoveSlowDown @@ -466,8 +493,13 @@ _0232CAF4: ldmia sp!, {r3, r4, r5, pc} .align 2, 0 _0232CAFC: .word DUNGEON_PTR +#ifdef JAPAN +_0232CB00: .word 0x00000C46 +_0232CB04: .word 0x00000C45 +#else _0232CB00: .word 0x00000F04 _0232CB04: .word 0x00000F03 +#endif arm_func_end DoMoveEscape arm_func_start DoMoveDrought @@ -518,7 +550,11 @@ _0232CB94: ldrb r2, [r4, #7] ldr r0, [r0] mov r1, #0x1c +#ifdef JAPAN + add r0, r0, #0x244 +#else add r0, r0, #0x2e8 +#endif add r0, r0, #0xec00 mla r0, r2, r1, r0 ldrsh r3, [r0, #2] @@ -595,11 +631,16 @@ _0232CCA8: add sp, sp, #0xc ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 -_0232CCB0: .word 0x00000F07 +#ifdef JAPAN +#define DO_MOVE_TRAP_BUSTER_OFFSET -0x2Be +#else +#define DO_MOVE_TRAP_BUSTER_OFFSET 0 +#endif +_0232CCB0: .word 0x00000F07 + DO_MOVE_TRAP_BUSTER_OFFSET _0232CCB4: .word DUNGEON_PTR _0232CCB8: .word ov29_02352B38 -_0232CCBC: .word 0x00000F05 -_0232CCC0: .word 0x00000F06 +_0232CCBC: .word 0x00000F05 + DO_MOVE_TRAP_BUSTER_OFFSET +_0232CCC0: .word 0x00000F06 + DO_MOVE_TRAP_BUSTER_OFFSET arm_func_end DoMoveTrapBuster arm_func_start DoMoveWildCall @@ -616,11 +657,19 @@ DoMoveWildCall: ; 0x0232CCC4 movne r5, #0x10 ldrne r0, [r0] moveq r5, #4 +#ifdef JAPAN + addne r0, r0, #0x294 +#else addne r0, r0, #0x338 +#endif ldreq r0, _0232CD88 ; =DUNGEON_PTR mov fp, #1 ldreq r0, [r0] +#ifdef JAPAN + addeq r0, r0, #0x284 +#else addeq r0, r0, #0x328 +#endif add r7, r0, #0x12800 b _0232CD60 _0232CD10: @@ -659,7 +708,11 @@ _0232CD80: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _0232CD88: .word DUNGEON_PTR +#ifdef JAPAN +_0232CD8C: .word 0x00000C4A +#else _0232CD8C: .word 0x00000F08 +#endif arm_func_end DoMoveWildCall arm_func_start DoMoveInvisify @@ -747,7 +800,11 @@ DoMoveReviver: ; 0x0232CE7C mov r0, #0 ldmia sp!, {r3, pc} .align 2, 0 +#ifdef JAPAN +_0232CE90: .word 0x00000C4B +#else _0232CE90: .word 0x00000F09 +#endif arm_func_end DoMoveReviver arm_func_start DoMoveShocker @@ -925,10 +982,17 @@ _0232D0D0: mov r0, r4 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 +#ifdef JAPAN +_0232D0E0: .word 0x00000C4D +_0232D0E4: .word DIRECTIONS_XY +_0232D0E8: .word ov29_0235171E +_0232D0EC: .word 0x00000C4C +#else _0232D0E0: .word 0x00000F0B _0232D0E4: .word DIRECTIONS_XY _0232D0E8: .word ov29_0235171E _0232D0EC: .word 0x00000F0A +#endif arm_func_end DoMoveFillIn arm_func_start DoMoveTrapper @@ -939,8 +1003,13 @@ DoMoveTrapper: ; 0x0232D0F0 bl ov29_022ED868 cmp r0, #0 bne _0232D11C +#ifdef JAPAN + mov r0, r5 + mov r1, #0xbc0 +#else ldr r1, _0232D144 ; =0x00000E7E mov r0, r5 +#endif bl LogMessageByIdWithPopupCheckUser mov r0, #0 ldmia sp!, {r3, r4, r5, pc} @@ -956,7 +1025,9 @@ _0232D11C: mov r0, #1 ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifndef JAPAN _0232D144: .word 0x00000E7E +#endif arm_func_end DoMoveTrapper arm_func_start DoMoveItemize @@ -999,7 +1070,11 @@ _0232D1CC: add sp, sp, #0xc ldmia sp!, {r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_0232D1D4: .word 0x00000C4E +#else _0232D1D4: .word 0x00000F0C +#endif _0232D1D8: .word 0x00000257 arm_func_end DoMoveItemize @@ -1180,7 +1255,11 @@ DoMoveGuardSwap: ; 0x0232D378 mov r0, #1 ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_0232D3D4: .word 0x00002495 +#else _0232D3D4: .word 0x00000F2E +#endif arm_func_end DoMoveGuardSwap arm_func_start DoMoveHealOrder @@ -1291,15 +1370,25 @@ _0232D4FC: ldrsh r3, [r1] ldr r1, [r0] mov r0, #1 +#ifdef JAPAN + add r2, r1, #0xcc00 + mov r1, #0 + strh r3, [r2, #0x36] +#else add r2, r1, #0xcd00 mov r1, #0 strh r3, [r2, #0x3a] +#endif bl TryActivateWeather _0232D548: mov r0, #1 ldmia sp!, {r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_0232D550: .word 0x00000C14 +#else _0232D550: .word 0x00000ED2 +#endif _0232D554: .word SPATK_STAT_IDX _0232D558: .word WEATHER_MOVE_TURN_COUNT _0232D55C: .word DUNGEON_PTR @@ -1514,7 +1603,11 @@ DoMoveGyroBall: ; 0x0232D7F8 mov r8, r0 ldr ip, [r8, #0xb4] mov r7, r1 +#ifdef JAPAN + ldr ip, [ip, #0x10c] +#else ldr ip, [ip, #0x110] +#endif mov r6, r2 cmp ip, #0 mov r5, r3 @@ -1536,7 +1629,11 @@ _0232D830: add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} .align 2, 0 +#ifdef JAPAN +_0232D85C: .word 0x00000C4F +#else _0232D85C: .word 0x00000F0D +#endif arm_func_end DoMoveGyroBall arm_func_start DoMoveShadowForce @@ -1582,7 +1679,11 @@ _0232D8EC: ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 _0232D8F4: .word SHADOW_FORCE_DAMAGE_MULTIPLIER +#ifdef JAPAN +_0232D8F8: .word 0x00000A17 +#else _0232D8F8: .word 0x00000CD7 +#endif arm_func_end DoMoveShadowForce arm_func_start DoMoveGravity @@ -1595,6 +1696,19 @@ DoMoveGravity: ; 0x0232D8FC arm_func_start DoMoveStealthRock DoMoveStealthRock: ; 0x0232D90C +#ifdef JAPAN + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r0, [r6, #0xb4] + mov r5, r1 + ldrb r0, [r0, #6] + mov r4, #0 + mov r1, #0x14 + cmp r0, #0 + movne r2, #2 + moveq r2, #1 + add r0, r6, #4 +#else stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r7, r0 ldr r0, [r7, #0xb4] @@ -1610,6 +1724,7 @@ DoMoveStealthRock: ; 0x0232D90C mov r2, r5 add r0, r7, #4 mov r1, #0x14 +#endif mov r3, #0 bl TrySpawnTrap cmp r0, #0 @@ -1617,15 +1732,26 @@ DoMoveStealthRock: ; 0x0232D90C bne _0232D96C _0232D95C: ldr r2, _0232D978 ; =0x00000EEF +#ifdef JAPAN + mov r0, r6 + mov r1, r5 +#else mov r0, r7 mov r1, r6 +#endif bl LogMessageByIdWithPopupCheckUserTarget _0232D96C: bl UpdateTrapsVisibility mov r0, r4 +#ifdef JAPAN + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0232D978: .word 0x00000C31 +#else ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 _0232D978: .word 0x00000EEF +#endif arm_func_end DoMoveStealthRock arm_func_start DoMoveChargeBeam @@ -1675,11 +1801,13 @@ DoMoveDamageEatItem: ; 0x0232D9E4 mov r0, r5 bl ov29_022E34A8_EU #else +#ifndef JAPAN ldr r0, _0232DACC ; =DUNGEON_PTR ldr r0, [r0] ldrb r0, [r0, #8] cmp r0, #0 bne _0232DAC4 +#endif cmp r5, #0 moveq r0, #0 beq _0232DA3C @@ -1731,7 +1859,7 @@ _0232DAC4: mov r0, #1 ldmia sp!, {r3, r4, r5, pc} .align 2, 0 -#ifndef EUROPE +#if !defined(EUROPE) && !defined(JAPAN) _0232DACC: .word DUNGEON_PTR #endif arm_func_end DoMoveDamageEatItem @@ -1776,9 +1904,15 @@ DoMoveAcupressure: ; 0x0232DAD0 mov r1, r4 mov r2, r0 bl SubstitutePlaceholderStringTags +#ifdef JAPAN + mov r0, r5 + mov r1, r4 + mov r2, #0xc50 +#else ldr r2, _0232DC48 ; =0x00000F0E mov r0, r5 mov r1, r4 +#endif bl LogMessageByIdWithPopupCheckUserTarget b _0232DC38 _0232DB7C: @@ -1829,9 +1963,15 @@ _0232DC18: mov r1, r4 mov r2, r0 bl SubstitutePlaceholderStringTags +#ifdef JAPAN + mov r0, r5 + mov r1, r4 + mov r2, #0xc50 +#else ldr r2, _0232DC48 ; =0x00000F0E mov r0, r5 mov r1, r4 +#endif bl LogMessageByIdWithPopupCheckUserTarget _0232DC38: mov r0, #1 @@ -1839,7 +1979,9 @@ _0232DC38: ldmia sp!, {r3, r4, r5, pc} .align 2, 0 _0232DC44: .word ov29_02352B3C +#ifndef JAPAN _0232DC48: .word 0x00000F0E +#endif _0232DC4C: .word ATK_STAT_IDX _0232DC50: .word SPATK_STAT_IDX arm_func_end DoMoveAcupressure @@ -1854,6 +1996,19 @@ DoMoveMagnetRise: ; 0x0232DC54 arm_func_start DoMoveToxicSpikes DoMoveToxicSpikes: ; 0x0232DC64 +#ifdef JAPAN + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r0, [r6, #0xb4] + mov r5, r1 + ldrb r0, [r0, #6] + mov r4, #0 + mov r1, #0x15 + cmp r0, #0 + movne r2, #2 + moveq r2, #1 + add r0, r6, #4 +#else stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r7, r0 ldr r0, [r7, #0xb4] @@ -1869,6 +2024,7 @@ DoMoveToxicSpikes: ; 0x0232DC64 mov r2, r5 add r0, r7, #4 mov r1, #0x15 +#endif mov r3, #1 bl TrySpawnTrap cmp r0, #0 @@ -1876,15 +2032,26 @@ DoMoveToxicSpikes: ; 0x0232DC64 bne _0232DCC4 _0232DCB4: ldr r2, _0232DCD0 ; =0x00000EEF +#ifdef JAPAN + mov r0, r6 + mov r1, r5 +#else mov r0, r7 mov r1, r6 +#endif bl LogMessageByIdWithPopupCheckUserTarget _0232DCC4: bl UpdateTrapsVisibility mov r0, r4 +#ifdef JAPAN + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0232DCD0: .word 0x00000C31 +#else ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 _0232DCD0: .word 0x00000EEF +#endif arm_func_end DoMoveToxicSpikes arm_func_start DoMoveLastResort @@ -1916,7 +2083,11 @@ _0232DD10: str r5, [sp] bl DealDamage cmp r0, #0 +#ifdef JAPAN + moveq r4, #1 +#else movgt r4, #1 +#endif b _0232DD64 _0232DD44: mov r1, r7 @@ -1933,7 +2104,11 @@ _0232DD64: ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} .align 2, 0 _0232DD70: .word LAST_RESORT_DAMAGE_MULT_TABLE +#ifdef JAPAN +_0232DD74: .word 0x00000BFE +#else _0232DD74: .word 0x00000EBC +#endif arm_func_end DoMoveLastResort arm_func_start DoMoveTrickRoom @@ -1960,11 +2135,16 @@ DoMoveDamage__0232DD88: ; 0x0232DD88 arm_func_start DoMoveWorrySeed DoMoveWorrySeed: ; 0x0232DDAC stmdb sp!, {r4, r5, r6, lr} +#ifndef JAPAN mov r4, #1 mov r3, r4 +#endif mov r2, #0x2a mov r6, r0 mov r5, r1 +#ifdef JAPAN + mov r4, #1 +#endif bl DefenderAbilityIsActiveMoveEffects__0232DE20 cmp r0, #0 beq _0232DE00 @@ -1990,7 +2170,11 @@ _0232DE14: mov r0, #1 ldmia sp!, {r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +_0232DE1C: .word 0x00000C55 +#else _0232DE1C: .word 0x00000F13 +#endif arm_func_end DoMoveWorrySeed arm_func_start DefenderAbilityIsActiveMoveEffects__0232DE20 @@ -2010,7 +2194,9 @@ DefenderAbilityIsActiveMoveEffects__0232DE20: ; 0x0232DE20 and r1, r1, #0xff _0232DE54: cmp r1, #0 +#ifndef JAPAN cmpne r3, #0 +#endif beq _0232DE74 mov r1, #0x53 bl AbilityIsActiveVeneer @@ -2113,7 +2299,11 @@ DoMoveHeartSwap: ; 0x0232DF38 mov r0, #1 ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_0232DFC4: .word 0x00002496 +#else _0232DFC4: .word 0x00000F2F +#endif arm_func_end DoMoveHeartSwap arm_func_start DoMoveRoost @@ -2167,7 +2357,11 @@ _0232E070: ldmia sp!, {r3, r4, r5, r6, pc} .align 2, 0 _0232E07C: .word ROOST_HP_RESTORATION_TABLE +#ifdef JAPAN +_0232E080: .word 0x00000A09 +#else _0232E080: .word 0x00000CC9 +#endif arm_func_end DoMoveRoost arm_func_start DoMovePowerSwap @@ -2196,7 +2390,11 @@ DoMovePowerSwap: ; 0x0232E084 mov r0, #1 ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_0232E0E0: .word 0x00002492 +#else _0232E0E0: .word 0x00000F2B +#endif arm_func_end DoMovePowerSwap arm_func_start DoMovePowerTrick diff --git a/asm/overlay_29_0232E274.s b/asm/overlay_29_0232E274.s index 8493c481..867dc9b0 100644 --- a/asm/overlay_29_0232E274.s +++ b/asm/overlay_29_0232E274.s @@ -245,7 +245,9 @@ DoMoveCaptivate: ; 0x0232E560 mov r0, r6 mov r1, r5 mov r2, #0x29 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActiveMoveEffects__0232DE20 cmp r0, #0 bne _0232E5D4 @@ -282,7 +284,11 @@ _0232E614: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _0232E61C: .word SPATK_STAT_IDX +#ifdef JAPAN +_0232E620: .word 0x00000C51 +#else _0232E620: .word 0x00000F0F +#endif arm_func_end DoMoveCaptivate arm_func_start DoMoveLeafStorm @@ -414,6 +420,11 @@ DoMoveTag0x1A6: ; 0x0232E750 arm_func_start DoMoveTag0x1A7 DoMoveTag0x1A7: ; 0x0232E794 +#ifdef JAPAN +#define DO_MOVE_TAG_0X147_OFFSET -4 +#else +#define DO_MOVE_TAG_0X147_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, lr} mov r5, r0 mov r4, r1 @@ -436,10 +447,10 @@ DoMoveTag0x1A7: ; 0x0232E794 ldr r1, [r4, #0xb4] mov r0, #0 add r1, r1, #0x100 - ldrh r2, [r1, #0x4a] - strh r2, [r1, #0x46] - ldrh r2, [r1, #0x4c] - strh r2, [r1, #0x48] + ldrh r2, [r1, #0x4a + DO_MOVE_TAG_0X147_OFFSET] + strh r2, [r1, #0x46 + DO_MOVE_TAG_0X147_OFFSET] + ldrh r2, [r1, #0x4c + DO_MOVE_TAG_0X147_OFFSET] + strh r2, [r1, #0x48 + DO_MOVE_TAG_0X147_OFFSET] bl ov29_0234AFFC mov r0, #1 ldmia sp!, {r3, r4, r5, pc} diff --git a/asm/overlay_29_0232E864.s b/asm/overlay_29_0232E864.s index 83fb7f5d..5961f989 100644 --- a/asm/overlay_29_0232E864.s +++ b/asm/overlay_29_0232E864.s @@ -5,6 +5,13 @@ arm_func_start ExecuteMoveEffect ExecuteMoveEffect: ; 0x0232E864 +#ifdef JAPAN +#define EXECUTE_MOVE_EFFECT_OFFSET -4 +#define EXECUTE_MOVE_EFFECT_OFFSET_2 -1 +#else +#define EXECUTE_MOVE_EFFECT_OFFSET 0 +#define EXECUTE_MOVE_EFFECT_OFFSET_2 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0xf0 ldr fp, _0232F7AC ; =ov10_022C45F8 @@ -83,7 +90,7 @@ _0232E92C: ldr sl, [r4, #0xb4] cmp sb, r4 str r0, [sp, #0x38] - strb r0, [sl, #0x164] + strb r0, [sl, #0x164 + EXECUTE_MOVE_EFFECT_OFFSET] bne _0232E9B0 mov r0, r6 bl IsHealingWishOrLunarDance @@ -100,7 +107,11 @@ _0232E9B0: ldrne r0, _0232F7D8 ; =DUNGEON_PTR ldrne r0, [r0] addne r0, r0, #0x19000 +#ifdef JAPAN + ldrne r5, [r0, #0x860] +#else ldrne r5, [r0, #0x904] +#endif cmpne r5, #0 beq _0232EA2C ldr r1, [r5] @@ -108,11 +119,15 @@ _0232E9B0: bne _0232EE54 cmp r5, sb beq _0232EE54 +#ifdef JAPAN + ldr r1, [r0, #0x868] +#else ldr r1, [r0, #0x90c] +#endif ldr r0, [r5, #0xb4] ldr r0, [r0, #0xb0] cmp r1, r0 - ldreqb r0, [sl, #0x10b] + ldreqb r0, [sl, #0x10b + EXECUTE_MOVE_EFFECT_OFFSET_2] cmpeq r0, #0 bne _0232EE54 mov r0, sb @@ -186,17 +201,17 @@ _0232EAEC: tst r0, #0xf0 bne _0232ED9C add r0, sl, #0x100 - ldrh r1, [r0, #0x46] + ldrh r1, [r0, #0x46 + EXECUTE_MOVE_EFFECT_OFFSET] sub r2, sp, #4 strh r1, [r2] - ldrh r0, [r0, #0x48] + ldrh r0, [r0, #0x48 + EXECUTE_MOVE_EFFECT_OFFSET] strh r0, [r2, #2] ldr r0, [r2] bl CeilFixedPoint ldr r1, [sp, #0x34] cmp r0, r1 blt _0232ED9C - ldrb r0, [sl, #0x10b] + ldrb r0, [sl, #0x10b + EXECUTE_MOVE_EFFECT_OFFSET_2] cmp r0, #0 bne _0232EE54 ldrb r5, [sl, #0x4c] @@ -206,7 +221,11 @@ _0232EAEC: beq _0232EB78 mov r0, sb mov r1, r4 +#ifdef JAPAN + ldr r2, _02330BE0 ; =0x00000BF2 +#else mov r2, #0xeb0 +#endif bl LogMessageByIdWithPopupCheckUserTarget b _0232EE54 _0232EB78: @@ -296,11 +315,11 @@ _0232ECA0: mov r0, r0, lsr #0x10 strh r0, [sp, #0x9a] add r0, sl, #0x100 - ldrh r5, [r0, #0x46] + ldrh r5, [r0, #0x46 + EXECUTE_MOVE_EFFECT_OFFSET] sub r1, sp, #4 ldrh r3, [sp, #0x98] strh r5, [r1] - ldrh r0, [r0, #0x48] + ldrh r0, [r0, #0x48 + EXECUTE_MOVE_EFFECT_OFFSET] ldrh r2, [sp, #0x9a] strh r0, [r1, #2] ldr r0, [r1] @@ -314,19 +333,32 @@ _0232ECA0: ldrh r3, [sp, #0x94] add r1, sl, #0x100 ldrh r2, [sp, #0x96] - strh r3, [r1, #0x46] + strh r3, [r1, #0x46 + EXECUTE_MOVE_EFFECT_OFFSET] ldr r0, _0232F7EC ; =0x00000163 - strh r2, [r1, #0x48] + strh r2, [r1, #0x48 + EXECUTE_MOVE_EFFECT_OFFSET] ldrh r1, [r8, #4] cmp r1, r0 +#ifdef JAPAN + bne _0232ED2C + add r2, r0, #0xa90 + mov r0, sb + mov r1, r4 +#else mov r0, sb mov r1, r4 bne _0232ED2C ldr r2, _0232F7F0 ; =0x00000EB1 +#endif bl LogMessageByIdWithPopupCheckUserTarget b _0232ED34 _0232ED2C: +#ifdef JAPAN + mov r0, sb + mov r1, r4 + mov r2, #0xbf0 +#else ldr r2, _0232F7F4 ; =0x00000EAE +#endif bl LogMessageByIdWithPopupCheckUserTarget _0232ED34: str r4, [sp, #0x6c] @@ -386,7 +418,7 @@ _0232ED9C: bl ov29_02300DC0 cmp r0, #0 ldreq r0, [r5, #0xb4] - ldreqb r0, [r0, #0x10b] + ldreqb r0, [r0, #0x10b + EXECUTE_MOVE_EFFECT_OFFSET_2] cmpeq r0, #0 bne _0232EE54 mov sl, r4 @@ -404,7 +436,11 @@ _0232ED9C: bl SubstitutePlaceholderStringTags mov r1, r5 mov r0, sb +#ifdef JAPAN + ldr r2, _02330BF4 ; =0x00000C02 +#else mov r2, #0xec0 +#endif bl LogMessageByIdWithPopupCheckUserTarget _0232EE54: ldr r1, _0232F800 ; =ov29_0237CA80 @@ -417,14 +453,14 @@ _0232EE54: str r1, [r0] ldr r5, [r4, #0xb4] mov r0, #0 - strb r0, [r5, #0x164] + strb r0, [r5, #0x164 + EXECUTE_MOVE_EFFECT_OFFSET] ldrb r0, [r5, #6] cmp r0, #0 ldrneh r1, [sb, #4] addne r0, r5, #0x100 - strneh r1, [r0, #0x7e] + strneh r1, [r0, #0x7e + EXECUTE_MOVE_EFFECT_OFFSET] ldrneh r1, [sb, #6] - strneh r1, [r0, #0x80] + strneh r1, [r0, #0x80 + EXECUTE_MOVE_EFFECT_OFFSET] mov r0, r4 bl ov29_022F9840 mov r0, sb @@ -553,7 +589,7 @@ _0232F060: bl ov29_02333044 ldr r5, [sb, #0xb4] mov r0, #0 - strb r0, [r5, #0x164] + strb r0, [r5, #0x164 + EXECUTE_MOVE_EFFECT_OFFSET] mov r0, #1 mov r4, sb str r0, [sp, #0x60] @@ -617,7 +653,7 @@ _0232F154: bl ov29_02333044 ldr r5, [sb, #0xb4] mov r0, #0 - strb r0, [r5, #0x164] + strb r0, [r5, #0x164 + EXECUTE_MOVE_EFFECT_OFFSET] mov r0, #1 mov r4, sb cmp r6, #0x42 @@ -666,7 +702,9 @@ _0232F204: mov r0, sb mov r1, r4 mov r2, #0x3c +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__02332A0C cmp r0, #0 beq _0232F270 @@ -701,7 +739,9 @@ _0232F270: mov r0, sb mov r1, r4 mov r3, #1 +#ifndef JAPAN moveq sl, #0 +#endif bl DefenderAbilityIsActive__02332A0C cmp r0, #0 beq _0232F2F0 @@ -846,7 +886,7 @@ _0232F498: ldr r0, _0232F7EC ; =0x00000163 cmp r1, r0 movne r0, #1 - strneb r0, [r2, #0x166] + strneb r0, [r2, #0x166 + EXECUTE_MOVE_EFFECT_OFFSET] ldrb r0, [r2, #7] cmp r0, #0 mov r0, sb @@ -888,7 +928,11 @@ _0232F550: beq _0232F570 mov r0, sb mov r1, r4 +#ifdef JAPAN + mov r2, #0xc00 +#else ldr r2, _0232F84C ; =0x00000EBE +#endif bl LogMessageByIdWithPopupCheckUserTarget b _0232F598 _0232F570: @@ -946,7 +990,7 @@ _0232F608: b _02332818 _0232F62C: mov sl, #1 - ldrb fp, [r5, #0x108] + ldrb fp, [r5, #0x108 + EXECUTE_MOVE_EFFECT_OFFSET_2] ldrb r0, [r5, #6] cmp r0, #0 beq _0232F670 @@ -957,14 +1001,14 @@ _0232F62C: cmp r7, #0 bne _0232F660 cmp fp, #1 - strlob sl, [r5, #0x108] + strlob sl, [r5, #0x108 + EXECUTE_MOVE_EFFECT_OFFSET_2] _0232F660: ldr r0, [sp, #0x118] cmp r0, #1 moveq r0, #2 - streqb r0, [r5, #0x108] + streqb r0, [r5, #0x108 + EXECUTE_MOVE_EFFECT_OFFSET_2] _0232F670: - ldrb r0, [r5, #0x177] + ldrb r0, [r5, #0x177 + EXECUTE_MOVE_EFFECT_OFFSET] cmp r0, #0xff bne _0232F6A0 mov r0, r4 @@ -975,9 +1019,9 @@ _0232F670: add r0, r4, #4 add r1, sb, #4 bl GetDirectionTowardsPosition - strb r0, [r5, #0x177] + strb r0, [r5, #0x177 + EXECUTE_MOVE_EFFECT_OFFSET] _0232F6A0: - ldrb r0, [r5, #0x178] + ldrb r0, [r5, #0x178 + EXECUTE_MOVE_EFFECT_OFFSET] cmp r0, #0xff bne _0232F6D0 mov r0, r4 @@ -988,7 +1032,7 @@ _0232F6A0: add r0, r4, #4 add r1, sb, #4 bl GetDirectionTowardsPosition - strb r0, [r5, #0x178] + strb r0, [r5, #0x178 + EXECUTE_MOVE_EFFECT_OFFSET] _0232F6D0: mov r0, sb mov r1, r8 @@ -1001,7 +1045,7 @@ _0232F6D0: ldrneh r0, [r2, #0xac] cmpne r1, r0 beq _0232F708 - ldrb r0, [r2, #0x23f] + ldrb r0, [r2, #0x23f + EXECUTE_MOVE_EFFECT_OFFSET] cmp r0, #0 beq _0232F70C _0232F708: @@ -1012,7 +1056,9 @@ _0232F70C: mov r0, sb mov r1, r4 mov r2, #0x39 +#ifndef JAPAN mov r3, #1 +#endif bl DefenderAbilityIsActive__02332A0C cmp r0, #0 beq _0232F87C @@ -1049,6 +1095,11 @@ _0232F79C: strh r0, [r8, #2] b _0232F87C .align 2, 0 +#ifdef JAPAN +#define EXECUTE_MOVE_EFFECT_DATA_OFFSET -0x2BE +#else +#define EXECUTE_MOVE_EFFECT_DATA_OFFSET 0 +#endif _0232F7AC: .word ov10_022C45F8 _0232F7B0: .word SPATK_STAT_IDX _0232F7B4: .word ov10_022C483C @@ -1061,37 +1112,47 @@ _0232F7CC: .word ov10_022C4508 _0232F7D0: .word ov29_02353718 _0232F7D4: .word ov10_022C4504 _0232F7D8: .word DUNGEON_PTR -_0232F7DC: .word 0x00000EAB -_0232F7E0: .word 0x00000EAC -_0232F7E4: .word 0x00000EAD +_0232F7DC: .word 0x00000EAB + EXECUTE_MOVE_EFFECT_DATA_OFFSET +_0232F7E0: .word 0x00000EAC + EXECUTE_MOVE_EFFECT_DATA_OFFSET +_0232F7E4: .word 0x00000EAD + EXECUTE_MOVE_EFFECT_DATA_OFFSET +#ifdef JAPAN +_02330BE0: .word 0x00000BF2 +#endif _0232F7E8: .word DIRECTIONS_XY _0232F7EC: .word 0x00000163 +#ifndef JAPAN _0232F7F0: .word 0x00000EB1 _0232F7F4: .word 0x00000EAE -_0232F7F8: .word 0x00000EB2 -_0232F7FC: .word 0x00000EAF +#endif +_0232F7F8: .word 0x00000EB2 + EXECUTE_MOVE_EFFECT_DATA_OFFSET +_0232F7FC: .word 0x00000EAF + EXECUTE_MOVE_EFFECT_DATA_OFFSET +#ifdef JAPAN +_02330BF4: .word 0x00000C02 +#endif _0232F800: .word ov29_0237CA80 _0232F804: .word ov29_0237CA74 -_0232F808: .word 0x00000EB3 -_0232F80C: .word 0x00000EB5 -_0232F810: .word 0x00000EB4 -_0232F814: .word 0x00000EB7 -_0232F818: .word 0x00000EB6 +_0232F808: .word 0x00000EB3 + EXECUTE_MOVE_EFFECT_DATA_OFFSET +_0232F80C: .word 0x00000EB5 + EXECUTE_MOVE_EFFECT_DATA_OFFSET +_0232F810: .word 0x00000EB4 + EXECUTE_MOVE_EFFECT_DATA_OFFSET +_0232F814: .word 0x00000EB7 + EXECUTE_MOVE_EFFECT_DATA_OFFSET +_0232F818: .word 0x00000EB6 + EXECUTE_MOVE_EFFECT_DATA_OFFSET _0232F81C: .word 0x000001DD -_0232F820: .word 0x00000EB8 -_0232F824: .word 0x00000EB9 +_0232F820: .word 0x00000EB8 + EXECUTE_MOVE_EFFECT_DATA_OFFSET +_0232F824: .word 0x00000EB9 + EXECUTE_MOVE_EFFECT_DATA_OFFSET _0232F828: .word 0x00000131 -_0232F82C: .word 0x00000EBA +_0232F82C: .word 0x00000EBA + EXECUTE_MOVE_EFFECT_DATA_OFFSET _0232F830: .word 0x000001F6 _0232F834: .word 0x00000232 _0232F838: .word ov29_0237CA69 _0232F83C: .word 0x00001307 _0232F840: .word 0x00001306 -_0232F844: .word 0x00000EBC -_0232F848: .word 0x00000EBD +_0232F844: .word 0x00000EBC + EXECUTE_MOVE_EFFECT_DATA_OFFSET +_0232F848: .word 0x00000EBD + EXECUTE_MOVE_EFFECT_DATA_OFFSET +#ifndef JAPAN _0232F84C: .word 0x00000EBE -_0232F850: .word 0x00000EBF -_0232F854: .word 0x00000EBB +#endif +_0232F850: .word 0x00000EBF + EXECUTE_MOVE_EFFECT_DATA_OFFSET +_0232F854: .word 0x00000EBB + EXECUTE_MOVE_EFFECT_DATA_OFFSET _0232F858: .word 0x0000270F _0232F85C: .word 0x0000021E _0232F860: @@ -1116,7 +1177,7 @@ _0232F87C: _0232F8A0: ldr r0, _0232F85C ; =0x0000021E mov r1, #1 - strb r1, [r5, #0x162] + strb r1, [r5, #0x162 + EXECUTE_MOVE_EFFECT_OFFSET] cmp r6, r0 addls pc, pc, r6, lsl #2 b _023326C8 @@ -4447,7 +4508,7 @@ _0233275C: cmp r0, #0 ldrneb r0, [r5, #6] cmpne r0, #0 - strneb fp, [r5, #0x108] + strneb fp, [r5, #0x108 + EXECUTE_MOVE_EFFECT_OFFSET_2] b _023327C8 _02332790: mov r0, r8 @@ -4469,7 +4530,7 @@ _023327C8: bl EntityIsValid__0232E840 cmp r0, #0 movne r0, #1 - strneb r0, [r5, #0x162] + strneb r0, [r5, #0x162 + EXECUTE_MOVE_EFFECT_OFFSET] cmp r6, #0x89 beq _02332818 mov r0, sb @@ -4502,8 +4563,8 @@ _02332830: cmp r0, #0 ldrne r1, [sb, #0xb4] movne r0, #0 - strneb r0, [r1, #0x166] - strneb r0, [r1, #0x167] + strneb r0, [r1, #0x166 + EXECUTE_MOVE_EFFECT_OFFSET] + strneb r0, [r1, #0x167 + EXECUTE_MOVE_EFFECT_OFFSET] _02332858: mov r0, r6 bl IsHealingWishOrLunarDance @@ -4568,14 +4629,14 @@ _02332930: bl EntityIsValid__0232E840 cmp r0, #0 ldrne r4, [sb, #0xb4] - ldrneb r0, [r4, #0x15e] + ldrneb r0, [r4, #0x15e + EXECUTE_MOVE_EFFECT_OFFSET] cmpne r0, #0 beq _02332970 mov r2, #0 mov r0, sb mov r1, sb mov r3, r2 - strb r2, [r4, #0x15e] + strb r2, [r4, #0x15e + EXECUTE_MOVE_EFFECT_OFFSET] bl TryWarp _02332970: mov r0, sb @@ -4583,12 +4644,12 @@ _02332970: cmp r0, #0 beq _023329CC ldr r4, [sb, #0xb4] - ldrb r0, [r4, #0x15f] + ldrb r0, [r4, #0x15f + EXECUTE_MOVE_EFFECT_OFFSET] cmp r0, #0 beq _023329B8 add r0, sp, #0x9c mov r5, #0 - strb r5, [r4, #0x15f] + strb r5, [r4, #0x15f + EXECUTE_MOVE_EFFECT_OFFSET] ldr r2, [r0] str r5, [sp] mov r0, sb @@ -4601,7 +4662,7 @@ _023329B8: ldr r0, _023329D8 ; =0x000001F6 cmp r1, r0 moveq r0, #0 - streqb r0, [r4, #0x170] + streqb r0, [r4, #0x170 + EXECUTE_MOVE_EFFECT_OFFSET] _023329CC: add sp, sp, #0xf0 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} @@ -4610,7 +4671,7 @@ _023329D4: .word ov29_02353718 _023329D8: .word 0x000001F6 _023329DC: .word ov29_0237CA68 _023329E0: .word 0x0000023A -_023329E4: .word 0x00000EC2 +_023329E4: .word 0x00000EC2 + EXECUTE_MOVE_EFFECT_DATA_OFFSET arm_func_end ExecuteMoveEffect arm_func_start ExclusiveItemEffectIsActive__023329E8 @@ -4621,7 +4682,11 @@ ExclusiveItemEffectIsActive__023329E8: ; 0x023329E8 cmp r0, #0 movne r0, #0 ldmneia sp!, {r3, pc} +#ifdef JAPAN + add r0, r2, #0x224 +#else add r0, r2, #0x228 +#endif bl ExclusiveItemEffectFlagTest ldmia sp!, {r3, pc} arm_func_end ExclusiveItemEffectIsActive__023329E8 @@ -4643,7 +4708,9 @@ DefenderAbilityIsActive__02332A0C: ; 0x02332A0C and r1, r1, #0xff _02332A40: cmp r1, #0 +#ifndef JAPAN cmpne r3, #0 +#endif beq _02332A60 mov r1, #0x53 bl AbilityIsActiveVeneer @@ -4870,6 +4937,11 @@ DealDamageWithType: ; 0x02332CDC arm_func_start PerformDamageSequence PerformDamageSequence: ; 0x02332D6C +#ifdef JAPAN +#define PERFORM_DAMAGE_SEQUENCE_OFFSET -4 +#else +#define PERFORM_DAMAGE_SEQUENCE_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, lr} sub sp, sp, #0x10 mov r8, r0 @@ -4889,7 +4961,9 @@ PerformDamageSequence: ; 0x02332D6C moveq r5, #1 mov r0, r8 mov r1, r7 +#ifndef JAPAN mov r3, #1 +#endif movne r5, #0 bl DefenderAbilityIsActive__02332A0C cmp r0, #0 @@ -4901,11 +4975,19 @@ PerformDamageSequence: ; 0x02332D6C strh r2, [r0, #0x82] ldr r0, [r1] add r0, r0, #0x19000 +#ifdef JAPAN + str r7, [r0, #0x864] +#else str r7, [r0, #0x908] +#endif ldr r0, [r1] ldrh r1, [r7, #0x26] add r0, r0, #0x19000 +#ifdef JAPAN + str r1, [r0, #0x86c] +#else str r1, [r0, #0x910] +#endif _02332DFC: ldrsh r0, [sp, #0x28] mov ip, #1 @@ -4920,8 +5002,8 @@ _02332DFC: str r5, [sp, #0xc] bl ApplyDamageAndEffects mov r0, r5 - strb r0, [r4, #0x166] - strb r0, [r4, #0x167] + strb r0, [r4, #0x166 + PERFORM_DAMAGE_SEQUENCE_OFFSET] + strb r0, [r4, #0x167 + PERFORM_DAMAGE_SEQUENCE_OFFSET] b _02332ED0 _02332E3C: bl ov29_0234B034 @@ -4962,7 +5044,7 @@ _02332EB8: ldrh r1, [r5, #4] rsb r0, r2, #0x164 cmp r1, r0 - strneb r2, [r4, #0x166] + strneb r2, [r4, #0x166 + PERFORM_DAMAGE_SEQUENCE_OFFSET] _02332ED0: ldrb r0, [r6, #0x10] cmp r0, #0 @@ -4973,7 +5055,7 @@ _02332ED0: cmp r0, #0 ldrne r0, [r7, #0xb4] movne r1, #1 - strneb r1, [r0, #0x164] + strneb r1, [r0, #0x164 + PERFORM_DAMAGE_SEQUENCE_OFFSET] ldr r0, [r6] _02332EFC: add sp, sp, #0x10 @@ -4983,7 +5065,11 @@ _02332F04: .word 0x0000013A _02332F08: .word DUNGEON_PTR _02332F0C: .word 0x000003E7 _02332F10: .word 0x0000270F +#ifdef JAPAN +_02332F14: .word 0x00000C05 +#else _02332F14: .word 0x00000EC3 +#endif arm_func_end PerformDamageSequence arm_func_start ov29_02332F18 @@ -5028,7 +5114,11 @@ ov29_02332F18: ; 0x02332F18 cmp r0, #0 ldrne r0, [r7, #0xb4] movne r1, #1 +#ifdef JAPAN + strneb r1, [r0, #0x160] +#else strneb r1, [r0, #0x164] +#endif ldr r0, [sp, #0x10] _02332FC0: add sp, sp, #0x24 @@ -5090,6 +5180,13 @@ ov29_02333044: ; 0x02333044 arm_func_start StatusCheckerCheck StatusCheckerCheck: ; 0x02333074 +#ifdef JAPAN +#define STATUS_CHECKER_CHECK_OFFSET -4 +#define STATUS_CHECKER_CHECK_OFFSET_2 -0xA4 +#else +#define STATUS_CHECKER_CHECK_OFFSET 0 +#define STATUS_CHECKER_CHECK_OFFSET_2 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, lr} ldrh r2, [r1, #4] ldr r1, _02333F98 ; =0x00000109 @@ -5542,10 +5639,10 @@ _02333674: cmp r0, #0x13 bgt _023336A8 add r0, r3, #0x100 - ldrh r1, [r0, #0x46] + ldrh r1, [r0, #0x46 + STATUS_CHECKER_CHECK_OFFSET] sub r2, sp, #4 strh r1, [r2] - ldrh r0, [r0, #0x48] + ldrh r0, [r0, #0x48 + STATUS_CHECKER_CHECK_OFFSET] strh r0, [r2, #2] ldr r0, [r2] bl CeilFixedPoint @@ -5573,7 +5670,7 @@ _023336D8: mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, pc} _023336EC: - ldr r0, [r3, #0x110] + ldr r0, [r3, #0x110 + STATUS_CHECKER_CHECK_OFFSET] cmp r0, #3 ble _02333F90 mov r0, #0 @@ -5649,14 +5746,14 @@ _023337D4: ldrsh r0, [r3, #0x10] cmp r2, r0 ble _02333804 - ldrb r0, [r3, #0x11e] + ldrb r0, [r3, #0x11e + STATUS_CHECKER_CHECK_OFFSET] cmp r0, #0 bne _02333F90 _02333804: mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, pc} _0233380C: - ldrb r0, [r3, #0x11e] + ldrb r0, [r3, #0x11e + STATUS_CHECKER_CHECK_OFFSET] cmp r0, #0 bne _02333F90 mov r0, #0 @@ -5681,7 +5778,11 @@ _02333850: ldr r1, [r1] ldr r3, _02333FA8 ; =ov10_022C6322 add r1, r1, #0x4000 +#ifdef JAPAN + ldrsh r1, [r1, #0x30] +#else ldrsh r1, [r1, #0xd4] +#endif smulbb r1, r1, r2 ldrb r1, [r3, r1] bl MonsterIsType @@ -5716,7 +5817,7 @@ _023338C0: _023338D4: ldrsh r0, [r3, #0x24] cmp r0, #0x13 - ldrgt r0, [r3, #0x110] + ldrgt r0, [r3, #0x110 + STATUS_CHECKER_CHECK_OFFSET] cmpgt r0, #3 ble _02333F90 mov r0, #0 @@ -5824,7 +5925,7 @@ _02333A44: ldr r0, _02333FA4 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0xc000 - ldrb r0, [r0, #0xd5b] + ldrb r0, [r0, #0xd5b + STATUS_CHECKER_CHECK_OFFSET_2] cmp r0, #0 beq _02333F90 mov r0, #0 @@ -5833,7 +5934,7 @@ _02333A64: ldr r0, _02333FA4 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0xc000 - ldrb r0, [r0, #0xd5c] + ldrb r0, [r0, #0xd5c + STATUS_CHECKER_CHECK_OFFSET_2] cmp r0, #0 beq _02333F90 mov r0, #0 @@ -5848,13 +5949,13 @@ _02333A98: ldr r0, _02333FA4 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x3000 - ldrb r0, [r0, #0xe38] + ldrb r0, [r0, #0xe38 + STATUS_CHECKER_CHECK_OFFSET_2] cmp r0, #0 beq _02333F90 mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, pc} _02333AB8: - ldrb r0, [r3, #0x11e] + ldrb r0, [r3, #0x11e + STATUS_CHECKER_CHECK_OFFSET] cmp r0, #3 blo _02333F90 mov r0, #0 @@ -5955,7 +6056,7 @@ _02333C0C: ldr r0, [r6] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 - ldr r7, [r0, #0xb38] + ldr r7, [r0, #0xb38 + STATUS_CHECKER_CHECK_OFFSET_2] mov r0, r7 bl EntityIsValid__02333FAC cmp r0, #0 @@ -5989,7 +6090,7 @@ _02333C80: ldr r0, [r6] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 - ldr r7, [r0, #0xb28] + ldr r7, [r0, #0xb28 + STATUS_CHECKER_CHECK_OFFSET_2] mov r0, r7 bl EntityIsValid__02333FAC cmp r0, #0 @@ -6033,7 +6134,7 @@ _02333D18: ldr r0, [r6] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 - ldr r7, [r0, #0xb38] + ldr r7, [r0, #0xb38 + STATUS_CHECKER_CHECK_OFFSET_2] mov r0, r7 bl EntityIsValid__02333FAC cmp r0, #0 @@ -6064,7 +6165,7 @@ _02333D80: ldr r0, [r6] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 - ldr r7, [r0, #0xb28] + ldr r7, [r0, #0xb28 + STATUS_CHECKER_CHECK_OFFSET_2] mov r0, r7 bl EntityIsValid__02333FAC cmp r0, #0 @@ -6106,7 +6207,7 @@ _02333E10: ldr r0, [r6] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 - ldr r7, [r0, #0xb38] + ldr r7, [r0, #0xb38 + STATUS_CHECKER_CHECK_OFFSET_2] mov r0, r7 bl EntityIsValid__02333FAC cmp r0, #0 @@ -6144,7 +6245,7 @@ _02333E94: ldr r0, [r6] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 - ldr r7, [r0, #0xb28] + ldr r7, [r0, #0xb28 + STATUS_CHECKER_CHECK_OFFSET_2] mov r0, r7 bl EntityIsValid__02333FAC cmp r0, #0 @@ -6182,7 +6283,7 @@ _02333F10: mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, pc} _02333F24: - ldr r0, [r3, #0x110] + ldr r0, [r3, #0x110 + STATUS_CHECKER_CHECK_OFFSET] cmp r0, #1 ble _02333F90 mov r0, #0 diff --git a/asm/overlay_29_02333FD0.s b/asm/overlay_29_02333FD0.s index 2c50a0ab..a8e9705c 100644 --- a/asm/overlay_29_02333FD0.s +++ b/asm/overlay_29_02333FD0.s @@ -5,6 +5,11 @@ arm_func_start ov29_02333FD0 ov29_02333FD0: ; 0x02333FD0 +#ifdef JAPAN +#define OV29_02333FD0_OFFSET -0xA4 +#else +#define OV29_02333FD0_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r6, r1 ldr r5, [r6, #0xb4] @@ -405,7 +410,7 @@ _0233454C: cmp r0, #6 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - add r0, r5, #0x124 + add r0, r5, #0x124 + OV29_02333FD0_OFFSET bl ov29_02334CAC cmp r0, #0 bne _02334C9C @@ -431,7 +436,7 @@ _023345A0: b _023345DC _023345B0: add r2, r5, r3, lsl #3 - ldrb r2, [r2, #0x124] + ldrb r2, [r2, #0x124 + OV29_02333FD0_OFFSET] tst r2, #1 movne r4, r1 moveq r4, r0 @@ -445,7 +450,7 @@ _023345D8: _023345DC: cmp r3, #4 blt _023345B0 - ldrb r0, [r5, #0x144] + ldrb r0, [r5, #0x144 + OV29_02333FD0_OFFSET] tst r0, #0x20 movne r0, #1 moveq r0, #0 @@ -453,7 +458,7 @@ _023345F4: cmp r0, #0 movne r0, #0 ldmneia sp!, {r4, r5, r6, r7, r8, pc} - add r0, r5, #0x124 + add r0, r5, #0x124 + OV29_02333FD0_OFFSET bl ov29_02334CAC cmp r0, #0 bne _02334C9C @@ -461,7 +466,7 @@ _023345F4: ldmia sp!, {r4, r5, r6, r7, r8, pc} _02334618: ldr r0, [r6, #0xb4] - ldr r0, [r0, #0x110] + ldr r0, [r0, #0x110 + OV29_02333FD0_OFFSET] cmp r0, #1 bge _02334C9C mov r0, #0 @@ -480,7 +485,7 @@ _02334644: ldmia sp!, {r4, r5, r6, r7, r8, pc} _02334658: mov r4, #0 - add r3, r5, #0x124 + add r3, r5, #0x124 + OV29_02333FD0_OFFSET mov r1, r4 mov r2, #1 b _023346A4 @@ -741,13 +746,17 @@ _023349CC: mov r0, #0 ldmia sp!, {r4, r5, r6, r7, r8, pc} _023349E0: +#ifdef JAPAN + ldrb r0, [r5, #0x105] +#else ldrb r0, [r5, #0x106] +#endif cmp r0, #0 beq _02334C9C mov r0, #0 ldmia sp!, {r4, r5, r6, r7, r8, pc} _023349F4: - add r0, r5, #0x124 + add r0, r5, #0x124 + OV29_02333FD0_OFFSET bl ov29_02334CAC cmp r0, #0 bne _02334C9C @@ -1000,7 +1009,11 @@ _02334D40: ldr r0, _02334D54 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0xc000 +#ifdef JAPAN + ldrb r0, [r0, #0xc94] +#else ldrb r0, [r0, #0xd38] +#endif ldmia sp!, {r4, pc} .align 2, 0 _02334D54: .word DUNGEON_PTR @@ -1015,7 +1028,11 @@ ov29_02334D58: ; 0x02334D58 ldr r0, _02334DA4 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x28000 +#ifdef JAPAN + ldrb r0, [r0, #0x612] +#else ldrb r0, [r0, #0x6b6] +#endif cmp r0, #8 bne _02334D8C mov r0, #8 @@ -1034,22 +1051,37 @@ _02334DA4: .word DUNGEON_PTR arm_func_start ov29_02334DA8 ov29_02334DA8: ; 0x02334DA8 +#ifdef JAPAN +#define OV29_02334DA8_OFFSET -0xA4 +#else +#define OV29_02334DA8_OFFSET 0 +#endif + ldr r3, _02334E6C ; =DUNGEON_PTR mov r1, #0 ldr r2, [r3] add r2, r2, #0xc000 - strb r0, [r2, #0xd39] + strb r0, [r2, #0xd39 + OV29_02334DA8_OFFSET] ldr r0, [r3] add r0, r0, #0xc000 - ldrb r2, [r0, #0xd39] - strb r2, [r0, #0xd38] + ldrb r2, [r0, #0xd39 + OV29_02334DA8_OFFSET] + strb r2, [r0, #0xd38 + OV29_02334DA8_OFFSET] ldr r0, [r3] add r0, r0, #0xc000 - strb r1, [r0, #0xd5d] + strb r1, [r0, #0xd5d + OV29_02334DA8_OFFSET] mov r0, r1 _02334DDC: ldr r2, [r3] add r2, r2, r1, lsl #1 +#ifdef JAPAN + add r2, r2, #0xcd00 + strh r0, [r2, #0x3a] + ldr r2, [r3] + add r2, r2, r1, lsl #1 + add r2, r2, #0xcc00 + add r1, r1, #1 + strh r0, [r2, #0xa6] +#else add r2, r2, #0xcd00 strh r0, [r2, #0x3a] ldr r2, [r3] @@ -1057,19 +1089,20 @@ _02334DDC: add r2, r2, #0xcd00 add r1, r1, #1 strh r0, [r2, #0x4a] +#endif cmp r1, #8 blt _02334DDC ldr r2, _02334E6C ; =DUNGEON_PTR mov r3, #9 ldr r1, [r2] add r1, r1, #0xc000 - strb r3, [r1, #0xd5a] + strb r3, [r1, #0xd5a + OV29_02334DA8_OFFSET] ldr r1, [r2] add r1, r1, #0xc000 - strb r0, [r1, #0xd5b] + strb r0, [r1, #0xd5b + OV29_02334DA8_OFFSET] ldr r1, [r2] add r1, r1, #0xc000 - strb r0, [r1, #0xd5c] + strb r0, [r1, #0xd5c + OV29_02334DA8_OFFSET] _02334E34: ldr r1, [r2] and r3, r0, #0xff @@ -1206,7 +1239,11 @@ _02335014: ldr r0, _02335040 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0xc000 +#ifdef JAPAN + ldrb r0, [r0, #0xc94] +#else ldrb r0, [r0, #0xd38] +#endif bl ov29_02338A4C ldr r1, _0233503C ; =ov29_02353562 ldr r0, [sp] @@ -1225,7 +1262,11 @@ ov29_02335044: ; 0x02335044 mov r5, r0 ldr r0, [r1] add r0, r0, #0x1a000 +#ifdef JAPAN + ldr r4, [r0, #0x188] +#else ldr r4, [r0, #0x22c] +#endif cmp r4, #0 bne _0233506C bl GetLeader @@ -1235,8 +1276,13 @@ _0233506C: beq _02335094 mov r0, #0 bl GetApparentWeather +#ifdef JAPAN + add r0, r0, #0x56 + add r0, r0, #0xc00 +#else add r0, r0, #0x45 add r0, r0, #0xa00 +#endif mov r1, r0, lsl #0x10 mov r0, r4 mov r1, r1, lsr #0x10 @@ -1248,7 +1294,11 @@ _0233509C: ldr r0, [r4] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r6, [r0, #0xad4] +#else ldr r6, [r0, #0xb78] +#endif mov r0, r6 bl EntityIsValid__023350D8 cmp r0, #0 diff --git a/asm/overlay_29_023350FC.s b/asm/overlay_29_023350FC.s index ef2bcf59..f9fee02d 100644 --- a/asm/overlay_29_023350FC.s +++ b/asm/overlay_29_023350FC.s @@ -254,7 +254,11 @@ ActivateSportCondition: ; 0x0233544C ldr r1, _023354B8 ; =DUNGEON_PTR ldr r1, [r1] add r1, r1, #0xc000 +#ifdef JAPAN + strb r0, [r1, #0xcb7] +#else strb r0, [r1, #0xd5b] +#endif bl GetLeader ldr r1, _023354BC ; =0x00000CDA bl LogMessageByIdWithPopupCheckUser @@ -266,7 +270,11 @@ _02335488: ldr r1, _023354B8 ; =DUNGEON_PTR ldr r1, [r1] add r1, r1, #0xc000 +#ifdef JAPAN + strb r0, [r1, #0xcb8] +#else strb r0, [r1, #0xd5c] +#endif bl GetLeader ldr r1, _023354C0 ; =0x00000CDB bl LogMessageByIdWithPopupCheckUser @@ -274,12 +282,22 @@ _02335488: .align 2, 0 _023354B4: .word SPORT_CONDITION_TURN_RANGE _023354B8: .word DUNGEON_PTR +#ifdef JAPAN +_023354BC: .word 0x00000A1A +_023354C0: .word 0x00000A1B +#else _023354BC: .word 0x00000CDA _023354C0: .word 0x00000CDB +#endif arm_func_end ActivateSportCondition arm_func_start TryActivateWeather TryActivateWeather: ; 0x023354C4 +#ifdef JAPAN +#define TRY_ACTIVATE_WEATHER_OFFSET -0xA4 +#else +#define TRY_ACTIVATE_WEATHER_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} mov r4, #0 mov sl, r0 @@ -294,6 +312,17 @@ TryActivateWeather: ; 0x023354C4 _023354F0: ldr r3, [fp] add r0, r3, r8, lsl #1 +#ifdef JAPAN + add r0, r0, #0xcc00 + ldrh r2, [r0, #0xa6] + ldrh r1, [r0, #0x96] + cmp r1, r2 + strloh r2, [r0, #0x96] + blo _02335524 + bls _02335524 + add r0, r3, #0x96 + add r0, r0, #0xcc00 +#else add r0, r0, #0xcd00 ldrh r2, [r0, #0x4a] ldrh r1, [r0, #0x3a] @@ -303,13 +332,19 @@ _023354F0: bls _02335524 add r0, r3, #0x3a add r0, r0, #0xcd00 +#endif add r0, r0, r8, lsl #1 bl ov29_022E9A6C _02335524: ldr r1, [fp] add r0, r1, r8, lsl #1 +#ifdef JAPAN + add r0, r0, #0xcc00 + ldrh r0, [r0, #0x96] +#else add r0, r0, #0xcd00 ldrh r0, [r0, #0x3a] +#endif cmp r4, r0 movlt r5, r8 add r8, r8, #1 @@ -318,21 +353,21 @@ _02335524: blt _023354F0 cmp r5, #0 addge r0, r1, #0xc000 - strgeb r5, [r0, #0xd38] + strgeb r5, [r0, #0xd38 + TRY_ACTIVATE_WEATHER_OFFSET] bge _02335570 ldr r0, _02335664 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0xc000 - ldrb r1, [r0, #0xd39] - strb r1, [r0, #0xd38] + ldrb r1, [r0, #0xd39 + TRY_ACTIVATE_WEATHER_OFFSET] + strb r1, [r0, #0xd38 + TRY_ACTIVATE_WEATHER_OFFSET] _02335570: ldr r0, _02335664 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0xc000 - ldrb r1, [r0, #0xd5d] + ldrb r1, [r0, #0xd5d + TRY_ACTIVATE_WEATHER_OFFSET] cmp r1, #0 movne r1, #0 - strneb r1, [r0, #0xd38] + strneb r1, [r0, #0xd38 + TRY_ACTIVATE_WEATHER_OFFSET] mov r0, #0 bl GetApparentWeather cmp r7, r0 @@ -345,24 +380,29 @@ _023355AC: ldr r0, _02335664 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0xc000 - ldrb r1, [r0, #0xd5a] + ldrb r1, [r0, #0xd5a + TRY_ACTIVATE_WEATHER_OFFSET] cmp r1, #0 subne r1, r1, #1 moveq r1, #9 - strb r1, [r0, #0xd5a] + strb r1, [r0, #0xd5a + TRY_ACTIVATE_WEATHER_OFFSET] ldr r0, _02335664 ; =DUNGEON_PTR ldr r1, [r0] add r0, r1, #0xc000 - ldrb r0, [r0, #0xd5b] + ldrb r0, [r0, #0xd5b + TRY_ACTIVATE_WEATHER_OFFSET] cmp r0, #0 beq _02335614 +#ifdef JAPAN + add r0, r1, #0xb7 + add r0, r0, #0xcc00 +#else add r0, r1, #0x5b add r0, r0, #0xcd00 +#endif bl TickStatusTurnCounter ldr r0, _02335664 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0xc000 - ldrb r0, [r0, #0xd5b] + ldrb r0, [r0, #0xd5b + TRY_ACTIVATE_WEATHER_OFFSET] cmp r0, #0 bne _02335614 bl GetLeader @@ -372,16 +412,16 @@ _02335614: ldr r0, _02335664 ; =DUNGEON_PTR ldr r1, [r0] add r0, r1, #0xc000 - ldrb r0, [r0, #0xd5c] + ldrb r0, [r0, #0xd5c + TRY_ACTIVATE_WEATHER_OFFSET] cmp r0, #0 beq _0233565C - add r0, r1, #0x15c + add r0, r1, #0x15c + TRY_ACTIVATE_WEATHER_OFFSET add r0, r0, #0xcc00 bl TickStatusTurnCounter ldr r0, _02335664 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0xc000 - ldrb r0, [r0, #0xd5c] + ldrb r0, [r0, #0xd5c + TRY_ACTIVATE_WEATHER_OFFSET] cmp r0, #0 bne _0233565C bl GetLeader @@ -392,8 +432,13 @@ _0233565C: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _02335664: .word DUNGEON_PTR +#ifdef JAPAN +_02335668: .word 0x000009D3 +_0233566C: .word 0x000009D2 +#else _02335668: .word 0x00000C93 _0233566C: .word 0x00000C92 +#endif arm_func_end TryActivateWeather arm_func_start DigitCount @@ -426,6 +471,17 @@ _023356B0: LoadTextureUi: ; 0x023356C0 stmdb sp!, {r3, lr} sub sp, sp, #8 +#ifdef JAPAN + ldr r1, _02335750 ; =ov29_02352B4C + add r0, sp, #0 + ldr r2, [r1, #0xc] + ldr ip, [r1, #8] + str r2, [sp, #4] + mov r1, #4 + mov r2, #0x3f0 + mov r3, #0x300 + str ip, [sp] +#else ldr r0, _02335750 ; =ov29_02352B4C #ifdef EUROPE ldr r1, [r0, #0xc] @@ -443,17 +499,23 @@ LoadTextureUi: ; 0x023356C0 add r0, sp, #0 mov r1, #4 mov r3, #0x300 +#endif bl LoadWteFromFileDirectory ldr r0, [sp, #4] mov r1, #0x1000 mov r2, #2 mov r3, #0 bl ProcessWte +#ifdef JAPAN + ldr r1, _02336B28 ; =0x000003F1 + mov r0, #4 +#else bl GetLanguage mov r3, r0, lsl #1 ldr r1, _02335758 ; =ov29_02353720 mov r0, #4 ldrh r1, [r1, r3] +#endif mov r2, #0 bl LoadWtuFromBin ldr r1, _0233575C ; =ov29_0237CA8C @@ -467,8 +529,12 @@ LoadTextureUi: ; 0x023356C0 ldmia sp!, {r3, pc} .align 2, 0 _02335750: .word ov29_02352B4C +#ifdef JAPAN +_02336B28: .word 0x000003F1 +#else _02335754: .word ov29_0235371C _02335758: .word ov29_02353720 +#endif _0233575C: .word ov29_0237CA8C arm_func_end LoadTextureUi @@ -486,7 +552,7 @@ _02335770: .word ov29_0237CA90 ov29_02335774: ; 0x02335774 stmdb sp!, {r3, lr} sub sp, sp, #8 -#ifdef EUROPE +#if defined(EUROPE) ldr r0, _023357F4 ; =ov29_02352B4C ldr r1, [r0, #4] ldr r0, [r0] @@ -496,6 +562,12 @@ ov29_02335774: ; 0x02335774 ldr r1, _02336244 ; =0x0235431C mov r0, r0, lsl #1 ldrh r2, [r1, r0] +#elif defined(JAPAN) + ldr r1, _023357F4 ; =ov29_02352B4C + ldr r2, _023357F8 ; =0x000003EF + ldr r3, [r1, #4] + ldr ip, [r1] + str r3, [sp, #4] #else ldr r1, _023357F4 ; =ov29_02352B4C ldr r2, _023357F8 ; =0x000003EF @@ -710,7 +782,11 @@ DisplayUi: ; 0x02335A10 sub sp, sp, #0x44 ldr r0, _02335F2C ; =DUNGEON_PTR ldr r0, [r0] +#ifdef JAPAN + add r0, r0, #0x178 +#else add r0, r0, #0x21c +#endif #ifdef EUROPE add r4, r0, #0x1a000 ldr r0, [r4, #0x10] @@ -1184,11 +1260,19 @@ _02335A4C: bl HasLowHealth cmp r0, #0 add r0, sl, #0x100 +#ifdef JAPAN + ldrh r1, [r0, #0x42] +#else ldrh r1, [r0, #0x46] +#endif sub r2, sp, #4 movne r6, #1 strh r1, [r2] +#ifdef JAPAN + ldrh r0, [r0, #0x44] +#else ldrh r0, [r0, #0x48] +#endif strh r0, [r2, #2] ldr r0, [r2] bl CeilFixedPoint @@ -1235,7 +1319,11 @@ _02335B5C: add r0, sp, #4 mov r1, #2 bl ov29_02335808 +#ifdef JAPAN + mov r6, #8 +#else mov r6, #0 +#endif bl IsCurrentFixedRoomBossFight cmp r0, #0 addne r0, r6, #0x18 @@ -1248,9 +1336,15 @@ _02335B5C: bl DungeonGoesUp cmp r0, #0 bne _02335BC0 +#ifdef JAPAN + add r0, sp, #4 + mov r1, r6 + mov r2, #0 +#else mov r1, r6 add r0, sp, #4 mov r2, r1 +#endif mov r3, #0x18 str sl, [sp] bl DisplayCharTextureUi @@ -1636,7 +1730,11 @@ GetTile: ; 0x023360FC mla r2, r1, r2, r3 add r0, r2, r0, lsl #2 add r0, r0, #0xd000 +#ifdef JAPAN + ldr r0, [r0, #0x240] +#else ldr r0, [r0, #0x2e4] +#endif bx lr .align 2, 0 _0233615C: .word DEFAULT_TILE @@ -1670,7 +1768,11 @@ _023361A8: mla r2, r1, r2, r3 add r0, r2, r0, lsl #2 add r0, r0, #0xd000 +#ifdef JAPAN + ldr r0, [r0, #0x240] +#else ldr r0, [r0, #0x2e4] +#endif ldmia sp!, {r4, pc} .align 2, 0 _023361C8: .word DEFAULT_TILE @@ -1683,7 +1785,11 @@ IsFullFloorFixedRoom: ; 0x023361D4 ldr r0, _02336200 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrb r0, [r0, #0x36] +#else ldrb r0, [r0, #0xda] +#endif cmp r0, #0 beq _023361F8 cmp r0, #0xa5 @@ -1702,7 +1808,11 @@ IsCurrentTilesetBackground: ; 0x02336204 ldr ip, _02336220 ; =IsBackgroundTileset ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrsh r0, [r0, #0x36] +#else ldrsh r0, [r0, #0xd4] +#endif bx ip .align 2, 0 _0233621C: .word DUNGEON_PTR @@ -1720,10 +1830,17 @@ TrySpawnGoldenChamber: ; 0x02336224 ldr r0, [r1] mov r2, #0x6f add r0, r0, #0x4000 +#ifdef JAPAN + strh r3, [r0, #0x30] + ldr r0, [r1] + add r0, r0, #0x4000 + strb r2, [r0, #0x36] +#else strh r3, [r0, #0xd4] ldr r0, [r1] add r0, r0, #0x4000 strb r2, [r0, #0xda] +#endif ldmia sp!, {r3, pc} .align 2, 0 _0233625C: .word DUNGEON_PTR @@ -1770,11 +1887,20 @@ _023362C0: ldmia sp!, {r3, r4, r5, r6, pc} .align 2, 0 _023362E4: .word DUNGEON_PTR +#ifdef JAPAN +_023362E8: .word 0x00012A54 +#else _023362E8: .word 0x00012AF8 +#endif arm_func_end CountItemsOnFloorForAcuteSniffer arm_func_start ov29_023362EC ov29_023362EC: ; 0x023362EC +#ifdef JAPAN +#define OV29_023362EC_OFFSET -0xA4 +#else +#define OV29_023362EC_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, lr} mov ip, #0 ldr r8, _023363BC ; =DUNGEON_PTR @@ -1788,7 +1914,7 @@ _02336308: mov r3, r2 _02336314: ldr r1, [r8] - add r0, r1, #0xe0 + add r0, r1, #0xe0 + OV29_023362EC_OFFSET add r0, r0, #0x4000 add r0, r0, lr mla r0, r3, r5, r0 @@ -1796,7 +1922,7 @@ _02336314: add r1, r1, r3, lsl #2 add r1, r1, #0xd000 add r3, r3, #1 - str r0, [r1, #0x2e4] + str r0, [r1, #0x2e4 + OV29_023362EC_OFFSET] cmp r3, #0x38 blt _02336314 add ip, ip, #1 @@ -1806,28 +1932,28 @@ _02336314: mov r2, #0 ldr r0, [r1] add r0, r0, #0x4000 - strh r2, [r0, #0xd4] + strh r2, [r0, #0xd4 + OV29_023362EC_OFFSET] ldr r0, [r1] add r0, r0, #0x4000 - strh r2, [r0, #0xd6] + strh r2, [r0, #0xd6 + OV29_023362EC_OFFSET] ldr r0, [r1] add r0, r0, #0x12000 - strb r2, [r0, #0xaa8] + strb r2, [r0, #0xaa8 + OV29_023362EC_OFFSET] bl ov29_023369F8 ldr r1, _023363BC ; =DUNGEON_PTR mov r2, #0 ldr r0, [r1] add r0, r0, #0x4000 - str r2, [r0, #0xd0] + str r2, [r0, #0xd0 + OV29_023362EC_OFFSET] ldr r0, [r1] add r0, r0, #0x4000 - strb r2, [r0, #0xc8] + strb r2, [r0, #0xc8 + OV29_023362EC_OFFSET] ldr r0, [r1] add r0, r0, #0x12000 - strb r2, [r0, #0xb24] + strb r2, [r0, #0xb24 + OV29_023362EC_OFFSET] ldr r0, [r1] add r0, r0, #0x12000 - strb r2, [r0, #0xb25] + strb r2, [r0, #0xb25 + OV29_023362EC_OFFSET] ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 _023363BC: .word DUNGEON_PTR @@ -1838,11 +1964,19 @@ GetStairsSpawnPosition: ; 0x023363C0 ldr r3, _023363E8 ; =DUNGEON_PTR ldr r2, [r3] add r2, r2, #0xcc00 +#ifdef JAPAN + ldrsh r2, [r2, #0x40] +#else ldrsh r2, [r2, #0xe4] +#endif strh r2, [r0] ldr r0, [r3] add r0, r0, #0xcc00 +#ifdef JAPAN + ldrsh r0, [r0, #0x42] +#else ldrsh r0, [r0, #0xe6] +#endif strh r0, [r1] bx lr .align 2, 0 @@ -1855,9 +1989,15 @@ PositionIsOnStairs: ; 0x023363EC mov ip, #0 ldr r2, [r2] add r2, r2, #0xcc00 +#ifdef JAPAN + ldrsh r3, [r2, #0x40] + cmp r3, r0 + ldreqsh r0, [r2, #0x42] +#else ldrsh r3, [r2, #0xe4] cmp r3, r0 ldreqsh r0, [r2, #0xe6] +#endif cmpeq r0, r1 moveq ip, #1 cmp ip, #0 @@ -1875,8 +2015,13 @@ GetStairsRoom: ; 0x02336428 ldr r0, _0233644C ; =DUNGEON_PTR ldr r0, [r0] add r1, r0, #0xcc00 +#ifdef JAPAN + ldrsh r0, [r1, #0x40] + ldrsh r1, [r1, #0x42] +#else ldrsh r0, [r1, #0xe4] ldrsh r1, [r1, #0xe6] +#endif bl GetTile ldrb r0, [r0, #7] ldmia sp!, {r3, pc} @@ -1895,13 +2040,18 @@ _0233645C: .word DEFAULT_TILE arm_func_start ov29_02336460 ov29_02336460: ; 0x02336460 +#ifdef JAPAN +#define OV29_02336460_OFFSET -0xA4 +#else +#define OV29_02336460_OFFSET 0 +#endif stmdb sp!, {r4, lr} ldr r1, _02336598 ; =DUNGEON_PTR ldr r0, _0233659C ; =ov29_0237CAAC ldr r1, [r1] mov r2, #0 add r1, r1, #0x4000 - ldrsh r4, [r1, #0xd4] + ldrsh r4, [r1, #0xd4 + OV29_02336460_OFFSET] mov r1, r4 bl ov10_022C25EC ldr r1, _023365A0 ; =ov29_0237CAA0 @@ -1919,15 +2069,24 @@ ov29_02336460: ; 0x02336460 mov r1, r4 ldr r0, [r0] mov r2, #0 - add r0, r0, #0x2a8 + add r0, r0, #0x2a8 + OV29_02336460_OFFSET add r0, r0, #0x10000 bl InitTilesetBuffer +#ifdef JAPAN + ldr r0, _02336598 ; =DUNGEON_PTR + mov r1, r4 + ldr r0, [r0] + mov r2, #0 + add r0, r0, #0xbe + add r0, r0, #0x12000 +#else ldr r1, _02336598 ; =DUNGEON_PTR ldr r0, _023365A8 ; =0x00012162 ldr r2, [r1] mov r1, r4 add r0, r2, r0 mov r2, #0 +#endif bl ov10_022C2720 mov r0, #0 mov r1, r0 @@ -1953,7 +2112,7 @@ ov29_02336460: ; 0x02336460 ldr r2, _023365B4 ; =SECONDARY_TERRAIN_TYPES ldr ip, [r0] add r0, ip, #0x4000 - ldrsh r0, [r0, #0xd4] + ldrsh r0, [r0, #0xd4 + OV29_02336460_OFFSET] ldrb r0, [r2, r0] cmp r0, #1 streqb r3, [r1, #4] @@ -1961,7 +2120,7 @@ ov29_02336460: ; 0x02336460 strneb r4, [r1, #4] strneb r3, [r1, #5] add r0, ip, #0x4000 - ldrsh r0, [r0, #0xd4] + ldrsh r0, [r0, #0xd4 + OV29_02336460_OFFSET] sub r0, r0, #0x1a mov r0, r0, lsl #0x10 mov r0, r0, asr #0x10 @@ -1978,7 +2137,9 @@ _02336598: .word DUNGEON_PTR _0233659C: .word ov29_0237CAAC _023365A0: .word ov29_0237CAA0 _023365A4: .word DEFAULT_TILE +#ifndef JAPAN _023365A8: .word 0x00012162 +#endif _023365AC: .word ov29_0237CAA0 _023365B0: .word ov29_0237C9B8 _023365B4: .word SECONDARY_TERRAIN_TYPES @@ -2007,7 +2168,11 @@ ov29_023365E8: ; 0x023365E8 ldr r0, _02336648 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrsh r0, [r0, #0x30] +#else ldrsh r0, [r0, #0xd4] +#endif sub r1, r0, #0x1a mov r1, r1, lsl #0x10 mov r1, r1, asr #0x10 @@ -2057,6 +2222,11 @@ _0233666C: arm_func_start ov29_02336694 ov29_02336694: ; 0x02336694 +#ifdef JAPAN +#define OV29_02336694_OFFSET -0xA4 +#else +#define OV29_02336694_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #8 movs sb, r0 @@ -2072,7 +2242,7 @@ ov29_02336694: ; 0x02336694 ldrh r2, [r0] ldr r4, [r1] add r0, r4, #0x4000 - ldrsh r1, [r0, #0xd4] + ldrsh r1, [r0, #0xd4 + OV29_02336694_OFFSET] and r0, r2, #3 str r0, [sp, #4] cmp r1, #0xaa @@ -2083,10 +2253,17 @@ ov29_02336694: ; 0x02336694 bge _02336714 mov r1, r8 bl GetTileSafe +#ifdef JAPAN + add r1, r4, r8, lsl #6 + add r1, r1, sb, lsl #1 + add r1, r1, #0x12000 + ldrh r1, [r1, #0xbe] +#else add r2, r4, r8, lsl #6 ldr r1, _023369F4 ; =0x00012162 add r2, r2, sb, lsl #1 ldrh r1, [r2, r1] +#endif strh r1, [r0, #4] b _023369E8 _02336714: @@ -2190,7 +2367,7 @@ _02336884: ldr r1, _023369F0 ; =DUNGEON_PTR ldr r1, [r1] add r1, r1, #0x4000 - ldrsh r1, [r1, #0xd4] + ldrsh r1, [r1, #0xd4 + OV29_02336694_OFFSET] sub r1, r1, #0x1a mov r1, r1, lsl #0x10 mov r1, r1, asr #0x10 @@ -2275,18 +2452,25 @@ _0233699C: add r1, r1, r2 add r1, r1, r4 add r1, r1, #0x12000 - ldrb r1, [r1, #0x162] + ldrb r1, [r1, #0x162 + OV29_02336694_OFFSET] strh r1, [r0, #4] _023369E8: add sp, sp, #8 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _023369F0: .word DUNGEON_PTR +#ifndef JAPAN _023369F4: .word 0x00012162 +#endif arm_func_end ov29_02336694 arm_func_start ov29_023369F8 ov29_023369F8: ; 0x023369F8 +#ifdef JAPAN +#define OV29_023369F8_OFFSET -0xA4 +#else +#define OV29_023369F8_OFFSET 0 +#endif ldr r1, _02336A48 ; =DUNGEON_PTR mov ip, #0 mvn r3, #0 @@ -2295,16 +2479,16 @@ _02336A08: ldr r0, [r1] add r0, r0, ip, lsl #2 add r0, r0, #0xcc00 - strh r3, [r0, #0xec] + strh r3, [r0, #0xec + OV29_023369F8_OFFSET] ldr r0, [r1] add r0, r0, ip, lsl #2 add r0, r0, #0xcc00 - strh r3, [r0, #0xee] + strh r3, [r0, #0xee + OV29_023369F8_OFFSET] ldr r0, [r1] add r0, r0, ip add r0, r0, #0xc000 add ip, ip, #1 - strb r2, [r0, #0xd0c] + strb r2, [r0, #0xd0c + OV29_023369F8_OFFSET] cmp ip, #8 blt _02336A08 bx lr @@ -2662,14 +2846,19 @@ _02336F48: .word ov29_02352F14 arm_func_start UpdateTrapsVisibility UpdateTrapsVisibility: ; 0x02336F4C +#ifdef JAPAN +#define UPDATE_TRAPS_VISIBILITY_OFFSET -0xA4 +#else +#define UPDATE_TRAPS_VISIBILITY_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x30 ldr r0, _02337108 ; =DUNGEON_PTR ldr sl, [r0] add r1, sl, #0x1a000 - ldrb r0, [r1, #0x245] + ldrb r0, [r1, #0x245 + UPDATE_TRAPS_VISIBILITY_OFFSET] str r0, [sp, #0x18] - ldrb fp, [r1, #0x244] + ldrb fp, [r1, #0x244 + UPDATE_TRAPS_VISIBILITY_OFFSET] bl IsSecretBazaar ldr r1, _0233710C ; =0x0001A224 ldr r2, _02337110 ; =ov29_02352B9C @@ -2685,7 +2874,7 @@ UpdateTrapsVisibility: ; 0x02336F4C str r0, [sp, #0x10] _02336FA0: ldr r0, _02337118 ; =0x0001A226 - add r1, sl, #0xc4 + add r1, sl, #0xc4 + UPDATE_TRAPS_VISIBILITY_OFFSET ldrsh r3, [sl, r0] ldr r0, _02337110 ; =ov29_02352B9C mov r2, r5, lsl #0x10 @@ -2717,7 +2906,7 @@ _02336FA0: mov r0, r5, lsl #0x10 mov r0, r0, asr #0x10 str r0, [sp, #0x24] - add r0, sl, #0xc4 + add r0, sl, #0xc4 + UPDATE_TRAPS_VISIBILITY_OFFSET str r0, [sp, #0x2c] mov r0, r7, lsl #0x10 mov r0, r0, asr #0x10 @@ -2778,14 +2967,19 @@ _023370B8: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _02337108: .word DUNGEON_PTR -_0233710C: .word 0x0001A224 +_0233710C: .word 0x0001A224 + UPDATE_TRAPS_VISIBILITY_OFFSET _02337110: .word ov29_02352B9C _02337114: .word ov29_02352D58 -_02337118: .word 0x0001A226 +_02337118: .word 0x0001A226 + UPDATE_TRAPS_VISIBILITY_OFFSET arm_func_end UpdateTrapsVisibility arm_func_start ov29_0233711C ov29_0233711C: ; 0x0233711C +#ifdef JAPAN +#define OV29_0233711C_OFFSET -0xA4 +#else +#define OV29_0233711C_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x1c ldr r2, _02337294 ; =DUNGEON_PTR @@ -2793,9 +2987,9 @@ ov29_0233711C: ; 0x0233711C ldr sl, [r2] mov r5, r0 add r1, sl, #0x1a000 - ldrb r0, [r1, #0x245] + ldrb r0, [r1, #0x245 + OV29_0233711C_OFFSET] str r0, [sp, #0x18] - ldrb fp, [r1, #0x244] + ldrb fp, [r1, #0x244 + OV29_0233711C_OFFSET] bl IsSecretBazaar ldr r2, _02337298 ; =0x0001A224 ldr r1, _0233729C ; =ov29_02352B9C @@ -2820,7 +3014,7 @@ ov29_0233711C: ; 0x0233711C mov r3, r0, lsl #1 ldrsh r6, [r1, r3] ldr r1, _023372A0 ; =ov29_02352D58 - add r0, sl, #0xc4 + add r0, sl, #0xc4 + OV29_0233711C_OFFSET ldrsh r4, [r1, r3] ldrsh r5, [r1, r2] add r3, r7, r7, lsl #1 @@ -2838,7 +3032,7 @@ ov29_0233711C: ; 0x0233711C str r0, [sp, #0xc] mov r0, r4, lsl #0x10 mov r1, r6, lsl #0x10 - add r4, sl, #0xc4 + add r4, sl, #0xc4 + OV29_0233711C_OFFSET mov r6, r0, asr #0x10 mov sl, r1, asr #0x10 _023371F8: @@ -2884,13 +3078,18 @@ _0233726C: ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _02337294: .word DUNGEON_PTR -_02337298: .word 0x0001A224 +_02337298: .word 0x0001A224 + OV29_0233711C_OFFSET _0233729C: .word ov29_02352B9C _023372A0: .word ov29_02352D58 arm_func_end ov29_0233711C arm_func_start ov29_023372A4 ov29_023372A4: ; 0x023372A4 +#ifdef JAPAN +#define OV29_023372A4_OFFSET -0xA4 +#else +#define OV29_023372A4_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x1c ldr r2, _02337418 ; =DUNGEON_PTR @@ -2898,9 +3097,9 @@ ov29_023372A4: ; 0x023372A4 ldr sl, [r2] mov r5, r0 add r1, sl, #0x1a000 - ldrb r0, [r1, #0x245] + ldrb r0, [r1, #0x245 + OV29_023372A4_OFFSET] str r0, [sp, #0x18] - ldrb fp, [r1, #0x244] + ldrb fp, [r1, #0x244 + OV29_023372A4_OFFSET] bl IsSecretBazaar ldr r2, _0233741C ; =0x0001A224 ldr r1, _02337420 ; =ov29_02352B9C @@ -2925,7 +3124,7 @@ ov29_023372A4: ; 0x023372A4 mov r4, r0, lsl #1 ldrsh r6, [r1, r4] ldrsh r1, [r1, r2] - add r0, sl, #0xc4 + add r0, sl, #0xc4 + OV29_023372A4_OFFSET mov r2, r5, lsl #0x10 ldrsh r4, [r3, r4] add sb, r1, r1, lsl #1 @@ -2942,7 +3141,7 @@ ov29_023372A4: ; 0x023372A4 str r0, [sp, #0xc] mov r0, r5, lsl #0x10 mov r1, sb, lsl #0x10 - add r5, sl, #0xc4 + add r5, sl, #0xc4 + OV29_023372A4_OFFSET mov sb, r0, asr #0x10 mov sl, r1, asr #0x10 _0233737C: @@ -2988,13 +3187,18 @@ _023373F0: ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _02337418: .word DUNGEON_PTR -_0233741C: .word 0x0001A224 +_0233741C: .word 0x0001A224 + OV29_023372A4_OFFSET _02337420: .word ov29_02352B9C _02337424: .word ov29_02352D58 arm_func_end ov29_023372A4 arm_func_start DrawTileGrid DrawTileGrid: ; 0x02337428 +#ifdef JAPAN +#define DRAW_TILE_GRID_OFFSET -0xA4 +#else +#define DRAW_TILE_GRID_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x44 ldr r5, _02337780 ; =DUNGEON_PTR @@ -3010,7 +3214,7 @@ DrawTileGrid: ; 0x02337428 ldr r1, [r2] ldr r2, _02337788 ; =DIRECTIONS_XY add r1, r1, #0x1a000 - strb r6, [r1, #0x251] + strb r6, [r1, #0x251 + DRAW_TILE_GRID_OFFSET] mov r3, r7, lsl #2 add r1, r2, r7, lsl #2 ldrsh r3, [r2, r3] @@ -3061,10 +3265,10 @@ _023374D4: cmp r6, r0 ldreqsh r0, [r4, #2] cmpeq r7, r0 - addeq r0, r5, #0x150 + addeq r0, r5, #0x150 + DRAW_TILE_GRID_OFFSET addeq r0, r0, #0x12000 addeq sl, r0, sl, lsl #1 - addne r0, r5, #0x12c + addne r0, r5, #0x12c + DRAW_TILE_GRID_OFFSET addne r0, r0, #0x12000 addne sl, r0, sl, lsl #1 b _023375E8 @@ -3099,26 +3303,44 @@ _023375A0: bne _023375CC bl sub_0204AED0 cmp r0, #0 +#ifdef JAPAN + addne r0, r5, #0x9a + addne r0, r0, #0x12000 +#else ldrne r0, _02337798 ; =0x0001213E addne r0, r5, r0 +#endif addne sl, r0, sl, lsl #1 - addeq r0, r5, #0x12c + addeq r0, r5, #0x12c + DRAW_TILE_GRID_OFFSET addeq r0, r0, #0x12000 addeq sl, r0, sl, lsl #1 b _023375E8 _023375CC: - add r0, r5, #0x150 + add r0, r5, #0x150 + DRAW_TILE_GRID_OFFSET add r0, r0, #0x12000 add sl, r0, sl, lsl #1 b _023375E8 _023375DC: - add r0, r5, #0x12c + add r0, r5, #0x12c + DRAW_TILE_GRID_OFFSET add r0, r0, #0x12000 add sl, r0, sl, lsl #1 _023375E8: - add r0, r5, #0x150 + add r0, r5, #0x150 + DRAW_TILE_GRID_OFFSET add r0, r0, #0x12000 add r0, r0, r8, lsl #1 +#ifdef JAPAN + add r1, r5, #0x88 + str r0, [sp, #0x18] + add r0, r1, #0x12000 + add r0, r0, r8, lsl #1 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #8] + add r0, r5, #0x9a + add r0, r0, #0x12000 + add r0, r0, r8, lsl #1 + str r0, [sp, #0x10] +#else ldr r1, _02337798 ; =0x0001213E str r0, [sp, #0x18] add r0, r5, r1 @@ -3130,6 +3352,7 @@ _023375E8: add r0, r0, #0x12000 add r0, r0, r8, lsl #1 str r0, [sp, #0x14] +#endif mov r0, r6, lsl #0x10 mov r0, r0, asr #0x10 str r0, [sp, #0x24] @@ -3228,12 +3451,14 @@ _02337730: ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _02337780: .word DUNGEON_PTR -_02337784: .word 0x0001A224 +_02337784: .word 0x0001A224 + DRAW_TILE_GRID_OFFSET _02337788: .word DIRECTIONS_XY _0233778C: .word ov29_02352B9C _02337790: .word ov29_02352D58 -_02337794: .word 0x0001A226 +_02337794: .word 0x0001A226 + DRAW_TILE_GRID_OFFSET +#ifndef JAPAN _02337798: .word 0x0001213E +#endif arm_func_end DrawTileGrid arm_func_start HideTileGrid @@ -3268,7 +3493,11 @@ _023377BC: mov r1, #0 ldr r0, [r0] add r0, r0, #0x1a000 +#ifdef JAPAN + strb r1, [r0, #0x1ad] +#else strb r1, [r0, #0x251] +#endif add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} .align 2, 0 @@ -3299,6 +3528,11 @@ _02337830: arm_func_start ov29_0233785C ov29_0233785C: ; 0x0233785C +#ifdef JAPAN +#define OV29_0233785C_OFFSET -0xA4 +#else +#define OV29_0233785C_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} ldr r1, _02337A34 ; =0x0000270F mov r3, #0 @@ -3312,28 +3546,28 @@ _02337878: add r3, r3, #1 add r5, r5, r2 add r5, r5, #0xe000 - strb sb, [r5, #0xee8] + strb sb, [r5, #0xee8 + OV29_0233785C_OFFSET] ldr r5, [r6] cmp r3, #0x20 add r5, r5, r2 add r5, r5, #0xe000 - strb sb, [r5, #0xee9] + strb sb, [r5, #0xee9 + OV29_0233785C_OFFSET] ldr r5, [r6] add r5, r5, r2 add r5, r5, #0xee00 - strh r1, [r5, #0xea] + strh r1, [r5, #0xea + OV29_0233785C_OFFSET] ldr r5, [r6] add r5, r5, r2 add r5, r5, #0xee00 - strh r1, [r5, #0xec] + strh r1, [r5, #0xec + OV29_0233785C_OFFSET] ldr r5, [r6] add r5, r5, r2 add r5, r5, #0xee00 - strh r0, [r5, #0xee] + strh r0, [r5, #0xee + OV29_0233785C_OFFSET] ldr r5, [r6] add r2, r5, r2 add r2, r2, #0xee00 - strh r0, [r2, #0xf0] + strh r0, [r2, #0xf0 + OV29_0233785C_OFFSET] blt _02337878 mov sl, sb _023378EC: @@ -3355,7 +3589,7 @@ _0233790C: mov r0, #0x1c mul r2, r1, r0 ldr r0, [fp] - add r0, r0, #0x2e8 + add r0, r0, #0x2e8 + OV29_0233785C_OFFSET add r0, r0, #0xec00 strb r7, [r0, r2] add r0, r0, r2 @@ -3391,7 +3625,7 @@ _0233797C: _023379B0: mul sl, r1, r6 ldr r0, [r7] - add r0, r0, #0x2e8 + add r0, r0, #0x2e8 + OV29_0233785C_OFFSET add r0, r0, #0xec00 ldrb r8, [r0, sl] add r0, r0, sl @@ -3421,7 +3655,7 @@ _02337A10: add r1, sb, #1 ldr r0, [r0] add r0, r0, #0xe000 - strb r1, [r0, #0xee4] + strb r1, [r0, #0xee4 + OV29_0233785C_OFFSET] ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _02337A34: .word 0x0000270F @@ -3430,6 +3664,11 @@ _02337A38: .word DUNGEON_PTR arm_func_start DiscoverMinimap DiscoverMinimap: ; 0x02337A3C +#ifdef JAPAN +#define DISCOVER_MINIMAP_OFFSET -0xA4 +#else +#define DISCOVER_MINIMAP_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r5, r0 ldrsh r0, [r5] @@ -3440,10 +3679,10 @@ DiscoverMinimap: ; 0x02337A3C ldr r1, _02337B28 ; =DUNGEON_PTR ldr r3, [r1] add r1, r3, #0x1a000 - ldrb r2, [r1, #0x23e] + ldrb r2, [r1, #0x23e + DISCOVER_MINIMAP_OFFSET] cmp r2, #0 ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldrb r1, [r1, #0x250] + ldrb r1, [r1, #0x250 + DISCOVER_MINIMAP_OFFSET] cmp r1, #0 bne _02337A84 cmp r4, #0xff @@ -3457,7 +3696,7 @@ _02337A84: add r6, r1, r0 b _02337B1C _02337AA0: - add r0, r3, #0x2e8 + add r0, r3, #0x2e8 + DISCOVER_MINIMAP_OFFSET add r1, r0, #0xec00 mov r0, #0x1c mla r2, r4, r0, r1 @@ -3593,7 +3832,11 @@ _02337C5C: ldr r0, [r4] add r0, r0, r6, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r7, [r0, #0xad4] +#else ldr r7, [r0, #0xb78] +#endif mov r0, r7 bl EntityIsValid__02337CA8 cmp r0, #0 diff --git a/asm/overlay_29_02337CCC.s b/asm/overlay_29_02337CCC.s index ea2df29c..cdc2fcfc 100644 --- a/asm/overlay_29_02337CCC.s +++ b/asm/overlay_29_02337CCC.s @@ -88,7 +88,11 @@ _02337DE4: ldr r0, [r4] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 +#ifdef JAPAN + ldr r6, [r0, #0xad4] +#else ldr r6, [r0, #0xb78] +#endif mov r0, r6 bl EntityIsValid__02337CA8 cmp r0, #0 @@ -127,7 +131,11 @@ _02337E54: ldr r1, _02337E90 ; =SECONDARY_TERRAIN_TYPES ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrsh r0, [r0, #0x30] +#else ldrsh r0, [r0, #0xd4] +#endif ldrb r0, [r1, r0] cmp r0, #1 bne _02337E84 @@ -148,7 +156,11 @@ IsWaterTileset: ; 0x02337E94 ldr r0, [r0] ldr r2, _02337EBC ; =ov10_022C6327 add r0, r0, #0x4000 +#ifdef JAPAN + ldrsh r0, [r0, #0x30] +#else ldrsh r0, [r0, #0xd4] +#endif smulbb r0, r0, r1 ldrb r0, [r2, r0] bx lr @@ -179,8 +191,13 @@ ov29_02337EE8: ; 0x02337EE8 ldr r4, _02337F90 ; =0x0000022A ldr r0, [r0] ldr r6, _02337F94 ; =0x000003D7 +#ifdef JAPAN + add r0, r0, #0x20c + add r0, r0, #0x28400 +#else add r0, r0, #0x6b0 add r0, r0, #0x28000 +#endif mov sl, #0 add r0, r0, #0x2b4 mov sb, sl @@ -231,8 +248,13 @@ GetRandomSpawnMonsterID: ; 0x02337F98 ldr r4, _02338044 ; =0x0000022A ldr r0, [r0] ldr r6, _02338048 ; =0x000003D7 +#ifdef JAPAN + add r0, r0, #0x20c + add r0, r0, #0x28400 +#else add r0, r0, #0x6b0 add r0, r0, #0x28000 +#endif mov sl, #0 add r0, r0, #0x2b4 mov sb, sl @@ -323,7 +345,11 @@ _02338088: ldmia sp!, {r3, r4, r5, pc} .align 2, 0 _023380F4: .word DUNGEON_PTR +#ifdef JAPAN +_023380F8: .word 0x0002864E +#else _023380F8: .word 0x000286F2 +#endif arm_func_end ov29_0233804C arm_func_start ov29_023380FC @@ -522,7 +548,11 @@ ResetGravity: ; 0x0233836C ldr ip, _0233838C ; =MemZero ldr r0, [r0] mov r1, #2 +#ifdef JAPAN + add r0, r0, #0x258 +#else add r0, r0, #0x2fc +#endif add r0, r0, #0x12800 bx ip .align 2, 0 @@ -535,7 +565,11 @@ GravityIsActive: ; 0x02338390 ldr r0, _023383A4 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x12000 +#ifdef JAPAN + ldrb r0, [r0, #0xa58] +#else ldrb r0, [r0, #0xafc] +#endif bx lr .align 2, 0 _023383A4: .word DUNGEON_PTR @@ -548,7 +582,11 @@ ov29_023383A8: ; 0x023383A8 bx ip .align 2, 0 _023383B4: .word LogMessageByIdWithPopupCheckUser +#ifdef JAPAN +_023383B8: .word 0x00000ACD +#else _023383B8: .word 0x00000D8D +#endif arm_func_end ov29_023383A8 arm_func_start TryActivateGravity @@ -562,7 +600,11 @@ TryActivateGravity: ; 0x023383BC ldr r0, _02338424 ; =DUNGEON_PTR ldr r0, [r0] add r2, r0, #0x12000 +#ifdef JAPAN + ldrb r0, [r2, #0xa58] +#else ldrb r0, [r2, #0xafc] +#endif cmp r0, #0 beq _02338400 ldr r1, _02338428 ; =0x00000C06 @@ -574,7 +616,11 @@ _02338400: ldr r1, _0233842C ; =0x00000C05 mov r3, #1 mov r0, r4 +#ifdef JAPAN + strb r3, [r2, #0xa58] +#else strb r3, [r2, #0xafc] +#endif bl LogMessageByIdWithPopupCheckUser mov r0, r4 bl ov29_02306D54 @@ -582,8 +628,13 @@ _02338400: ldmia sp!, {r4, pc} .align 2, 0 _02338424: .word DUNGEON_PTR +#ifdef JAPAN +_02338428: .word 0x00000945 +_0233842C: .word 0x00000944 +#else _02338428: .word 0x00000C06 _0233842C: .word 0x00000C05 +#endif arm_func_end TryActivateGravity arm_func_start ov29_02338430 @@ -611,7 +662,11 @@ ov29_0233845C: ; 0x0233845C bx lr .align 2, 0 _02338474: .word DUNGEON_PTR +#ifdef JAPAN +_02338478: .word 0x00012A5A +#else _02338478: .word 0x00012AFE +#endif arm_func_end ov29_0233845C arm_func_start ov29_0233847C @@ -633,7 +688,11 @@ ov29_0233847C: ; 0x0233847C ldmia sp!, {r4, pc} .align 2, 0 _023384B8: .word DUNGEON_PTR +#ifdef JAPAN +_023384BC: .word 0x00012A5A +#else _023384BC: .word 0x00012AFE +#endif arm_func_end ov29_0233847C arm_func_start ShouldBoostKecleonShopSpawnChance @@ -641,7 +700,11 @@ ShouldBoostKecleonShopSpawnChance: ; 0x023384C0 ldr r0, _023384D4 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x12000 +#ifdef JAPAN + ldrb r0, [r0, #0xa80] +#else ldrb r0, [r0, #0xb24] +#endif bx lr .align 2, 0 _023384D4: .word DUNGEON_PTR @@ -652,7 +715,11 @@ SetShouldBoostKecleonShopSpawnChance: ; 0x023384D8 ldr r1, _023384EC ; =DUNGEON_PTR ldr r1, [r1] add r1, r1, #0x12000 +#ifdef JAPAN + strb r0, [r1, #0xa80] +#else strb r0, [r1, #0xb24] +#endif bx lr .align 2, 0 _023384EC: .word DUNGEON_PTR @@ -666,14 +733,22 @@ UpdateShouldBoostKecleonShopSpawnChance: ; 0x023384F0 ldr r1, [r0] mov r0, #0x5e add r1, r1, #0x12000 +#ifdef JAPAN + strb r2, [r1, #0xa80] +#else strb r2, [r1, #0xb24] +#endif bl TeamMemberHasExclusiveItemEffectActive cmp r0, #0 ldrne r0, _0233852C ; =DUNGEON_PTR movne r1, #1 ldrne r0, [r0] addne r0, r0, #0x12000 +#ifdef JAPAN + strneb r1, [r0, #0xa80] +#else strneb r1, [r0, #0xb24] +#endif ldmia sp!, {r3, pc} .align 2, 0 _0233852C: .word DUNGEON_PTR @@ -684,7 +759,11 @@ ov29_02338530: ; 0x02338530 ldr r0, _02338544 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrb r0, [r0, #0x24] +#else ldrb r0, [r0, #0xc8] +#endif bx lr .align 2, 0 _02338544: .word DUNGEON_PTR @@ -695,7 +774,11 @@ SetDoughSeedFlag: ; 0x02338548 ldr r1, _0233855C ; =DUNGEON_PTR ldr r1, [r1] add r1, r1, #0x4000 +#ifdef JAPAN + strb r0, [r1, #0x24] +#else strb r0, [r1, #0xc8] +#endif bx lr .align 2, 0 _0233855C: .word DUNGEON_PTR @@ -707,7 +790,11 @@ TrySpawnDoughSeedPoke: ; 0x02338560 ldr r0, _023385BC ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrb r0, [r0, #0x24] +#else ldrb r0, [r0, #0xc8] +#endif cmp r0, #0 ldmeqia sp!, {r3, pc} bl IsFullFloorFixedRoom @@ -725,7 +812,11 @@ _023385A4: mov r1, #0 ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + strb r1, [r0, #0x24] +#else strb r1, [r0, #0xc8] +#endif ldmia sp!, {r3, pc} .align 2, 0 _023385BC: .word DUNGEON_PTR @@ -737,7 +828,11 @@ IsSecretBazaar: ; 0x023385C4 ldr r0, _023385E8 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrb r0, [r0, #0x36] +#else ldrb r0, [r0, #0xda] +#endif cmp r0, #0x70 moveq r0, #1 movne r0, #0 @@ -752,7 +847,11 @@ ShouldBoostHiddenStairsSpawnChance: ; 0x023385EC ldr r0, _02338600 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x12000 +#ifdef JAPAN + ldrb r0, [r0, #0xa81] +#else ldrb r0, [r0, #0xb25] +#endif bx lr .align 2, 0 _02338600: .word DUNGEON_PTR @@ -763,7 +862,11 @@ SetShouldBoostHiddenStairsSpawnChance: ; 0x02338604 ldr r1, _02338618 ; =DUNGEON_PTR ldr r1, [r1] add r1, r1, #0x12000 +#ifdef JAPAN + strb r0, [r1, #0xa81] +#else strb r0, [r1, #0xb25] +#endif bx lr .align 2, 0 _02338618: .word DUNGEON_PTR @@ -777,14 +880,22 @@ UpdateShouldBoostHiddenStairsSpawnChance: ; 0x0233861C ldr r1, [r0] mov r0, #0x5f add r1, r1, #0x12000 +#ifdef JAPAN + strb r2, [r1, #0xa81] +#else strb r2, [r1, #0xb25] +#endif bl TeamMemberHasExclusiveItemEffectActive cmp r0, #0 ldrne r0, _02338658 ; =DUNGEON_PTR movne r1, #1 ldrne r0, [r0] addne r0, r0, #0x12000 +#ifdef JAPAN + strneb r1, [r0, #0xa81] +#else strneb r1, [r0, #0xb25] +#endif ldmia sp!, {r3, pc} .align 2, 0 _02338658: .word DUNGEON_PTR @@ -795,7 +906,11 @@ IsSecretRoom: ; 0x0233865C ldr r0, _02338680 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrb r0, [r0, #0x36] +#else ldrb r0, [r0, #0xda] +#endif cmp r0, #0x71 moveq r0, #1 movne r0, #0 @@ -842,9 +957,15 @@ HiddenStairsPresent: ; 0x023386D8 mvn r1, #0 ldr r0, [r0] add r0, r0, #0xcc00 +#ifdef JAPAN + ldrsh r2, [r0, #0x44] + cmp r2, r1 + ldrnesh r0, [r0, #0x46] +#else ldrsh r2, [r0, #0xe8] cmp r2, r1 ldrnesh r0, [r0, #0xea] +#endif cmpne r0, r1 moveq r0, #0 movne r0, #1 @@ -859,9 +980,15 @@ ov29_02338708: ; 0x02338708 ldrsh r2, [r0] ldr r1, [r1] add r1, r1, #0xcc00 +#ifdef JAPAN + ldrsh r3, [r1, #0x44] + cmp r3, r2 + ldreqsh r1, [r1, #0x46] +#else ldrsh r3, [r1, #0xe8] cmp r3, r2 ldreqsh r1, [r1, #0xea] +#endif ldreqsh r0, [r0, #2] cmpeq r1, r0 moveq r0, #1 @@ -879,7 +1006,11 @@ ov29_0233873C: ; 0x0233873C ldmeqia sp!, {r3, pc} ldr r0, _02338764 ; =DUNGEON_PTR ldr r0, [r0] +#ifdef JAPAN + add r0, r0, #0x44 +#else add r0, r0, #0xe8 +#endif add r0, r0, #0xcc00 bl ov29_02338768 ldmia sp!, {r3, pc} @@ -904,6 +1035,11 @@ ov29_02338768: ; 0x02338768 arm_func_start HiddenStairsTrigger HiddenStairsTrigger: ; 0x02338794 +#ifdef JAPAN +#define HIDDEN_STAIRS_TRIGGER_OFFSET -0xA4 +#else +#define HIDDEN_STAIRS_TRIGGER_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, lr} mov r5, r0 bl HiddenStairsPresent @@ -912,8 +1048,8 @@ HiddenStairsTrigger: ; 0x02338794 ldr r0, _02338848 ; =DUNGEON_PTR ldr r0, [r0] add r1, r0, #0xcc00 - ldrsh r0, [r1, #0xe8] - ldrsh r1, [r1, #0xea] + ldrsh r0, [r1, #0xe8 + HIDDEN_STAIRS_TRIGGER_OFFSET] + ldrsh r1, [r1, #0xea + HIDDEN_STAIRS_TRIGGER_OFFSET] bl GetTileSafe mov r4, r0 ldr r0, [r4, #0x10] @@ -923,14 +1059,14 @@ HiddenStairsTrigger: ; 0x02338794 ldr r0, _02338848 ; =DUNGEON_PTR ldr r2, [r0] add r0, r2, #0x1a000 - ldrb r1, [r0, #0x246] + ldrb r1, [r0, #0x246 + HIDDEN_STAIRS_TRIGGER_OFFSET] cmp r1, #0 - ldreqb r0, [r0, #0x244] + ldreqb r0, [r0, #0x244 + HIDDEN_STAIRS_TRIGGER_OFFSET] cmpeq r0, #0 bne _0233881C cmp r5, #0 beq _0233881C - add r0, r2, #0xe8 + add r0, r2, #0xe8 + HIDDEN_STAIRS_TRIGGER_OFFSET add r0, r0, #0xcc00 mov r1, #0x41 mov r2, #1 @@ -945,14 +1081,18 @@ _0233881C: strb r2, [r1, #0x20] ldr r0, [r0] add r1, r0, #0xcc00 - ldrsh r0, [r1, #0xe8] - ldrsh r1, [r1, #0xea] + ldrsh r0, [r1, #0xe8 + HIDDEN_STAIRS_TRIGGER_OFFSET] + ldrsh r1, [r1, #0xea + HIDDEN_STAIRS_TRIGGER_OFFSET] bl DrawMinimapTile bl UpdateTrapsVisibility ldmia sp!, {r3, r4, r5, pc} .align 2, 0 _02338848: .word DUNGEON_PTR +#ifdef JAPAN +_0233884C: .word 0x000008A8 +#else _0233884C: .word 0x00000F31 +#endif arm_func_end HiddenStairsTrigger arm_func_start ov29_02338850 @@ -960,7 +1100,11 @@ ov29_02338850: ; 0x02338850 ldr r0, _02338864 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldr r0, [r0, #0x28] +#else ldr r0, [r0, #0xcc] +#endif bx lr .align 2, 0 _02338864: .word DUNGEON_PTR @@ -971,7 +1115,11 @@ ov29_02338868: ; 0x02338868 ldr r1, _0233887C ; =DUNGEON_PTR ldr r1, [r1] add r1, r1, #0x4000 +#ifdef JAPAN + str r0, [r1, #0x28] +#else str r0, [r1, #0xcc] +#endif bx lr .align 2, 0 _0233887C: .word DUNGEON_PTR @@ -982,7 +1130,11 @@ GetDungeonGenInfoUnk0C: ; 0x02338880 ldr r0, _02338894 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldr r0, [r0, #0x2c] +#else ldr r0, [r0, #0xd0] +#endif bx lr .align 2, 0 _02338894: .word DUNGEON_PTR @@ -993,7 +1145,11 @@ ov29_02338898: ; 0x02338898 ldr r1, _023388AC ; =DUNGEON_PTR ldr r1, [r1] add r1, r1, #0x4000 +#ifdef JAPAN + str r0, [r1, #0x2c] +#else str r0, [r1, #0xd0] +#endif bx lr .align 2, 0 _023388AC: .word DUNGEON_PTR @@ -1550,7 +1706,11 @@ ov29_02338F68: ; 0x02338F68 strb r2, [r1] ldmia sp!, {r3, pc} .align 2, 0 +#ifdef JAPAN +_02338FBC: .word 0x000003FF +#else _02338FBC: .word 0x0000040B +#endif _02338FC0: .word ov29_02353784 _02338FC4: .word ov29_0235376C arm_func_end ov29_02338F68 @@ -1662,8 +1822,13 @@ GetMinimapData: ; 0x02339118 ldr r0, _02339134 ; =DUNGEON_PTR ldr r0, [r0] cmp r0, #0 +#ifdef JAPAN + addne r0, r0, #0x21c0 + addne r0, r0, #0x18000 +#else addne r0, r0, #0x264 addne r0, r0, #0x1a000 +#endif moveq r0, #0 bx lr .align 2, 0 @@ -1686,7 +1851,11 @@ ov29_02339148: ; 0x02339148 ldr r0, [r0] ldr r3, _0233918C ; =TILESET_PROPERTIES add r0, r0, #0x4000 +#ifdef JAPAN + ldrsh r0, [r0, #0x30] +#else ldrsh r0, [r0, #0xd4] +#endif mov r1, #0 smulbb r0, r0, r2 ldr r4, [r3, r0] @@ -1725,7 +1894,11 @@ ov29_023391C0: ; 0x023391C0 ldr r0, [r0] ldr r2, _023391E8 ; =TILESET_PROPERTIES add r0, r0, #0x4000 +#ifdef JAPAN + ldrsh r0, [r0, #0x30] +#else ldrsh r0, [r0, #0xd4] +#endif smulbb r0, r0, r1 ldr r0, [r2, r0] bx lr @@ -1754,7 +1927,11 @@ DrawMinimapTile: ; 0x023391EC ldrne r0, _023398D0 ; =ov29_0237CFB8 str r7, [sp, #0x14] ldrneb r0, [r0, #2] +#ifdef JAPAN + add r1, r5, #0x178 +#else add r1, r5, #0x21c +#endif strh r4, [sp, #0x2c] strh r3, [sp, #0x2e] add r4, r1, #0x1a000 @@ -2323,7 +2500,11 @@ ov29_02339A24: ; 0x02339A24 mov r4, r0 ldr r0, [r1] add r0, r0, #0x1a000 +#ifdef JAPAN + ldrb r0, [r0, #0x1a5] +#else ldrb r0, [r0, #0x249] +#endif cmp r0, #0 bne _02339CB0 ldr r0, _02339CBC ; =ov29_0235376C @@ -3246,7 +3427,11 @@ UnloadFixedRoomData: ; 0x0233A630 mov r1, #0 ldr r0, [r0] add r0, r0, #0x12000 +#ifdef JAPAN + str r1, [r0, #0xa00] +#else str r1, [r0, #0xaa4] +#endif ldmia sp!, {r3, pc} .align 2, 0 _0233A650: .word DUNGEON_PTR @@ -3277,7 +3462,11 @@ IsNormalFloor: ; 0x0233A654 ldr r0, _0233A6D4 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 +#ifdef JAPAN + ldrb r0, [r0, #0x36] +#else ldrb r0, [r0, #0xda] +#endif cmp r0, #0 beq _0233A6CC cmp r0, #0xa5 @@ -3294,6 +3483,11 @@ _0233A6D4: .word DUNGEON_PTR arm_func_start GenerateFloor GenerateFloor: ; 0x0233A6D8 +#ifdef JAPAN +#define GENERATE_FLOOR_OFFSET -0xA4 +#else +#define GENERATE_FLOOR_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x54 ldr r2, _0233AE64 ; =DUNGEON_PTR @@ -3301,11 +3495,11 @@ GenerateFloor: ; 0x0233A6D8 ldr r3, [r2] ldr r0, _0233AE68 ; =0x000286B2 add r1, r3, #0x12000 - str r8, [r1, #0xaa4] + str r8, [r1, #0xaa4 + GENERATE_FLOOR_OFFSET] ldr r1, [r2] add sb, r3, r0 add r0, r1, #0x3f00 - strh r8, [r0, #0xc2] + strh r8, [r0, #0xc2 + GENERATE_FLOOR_OFFSET] bl LoadFixedRoomDataVeneer bl ov29_02343DC4 ldr r1, _0233AE64 ; =DUNGEON_PTR @@ -3313,7 +3507,7 @@ GenerateFloor: ; 0x0233A6D8 ldr r1, [r1] mov r3, r8 add r1, r1, #0x12000 - str r0, [r1, #0xaa4] + str r0, [r1, #0xaa4 + GENERATE_FLOOR_OFFSET] strb r3, [r2, #3] strb r3, [r2, #1] strb r3, [r2, #7] @@ -3323,7 +3517,7 @@ GenerateFloor: ; 0x0233A6D8 ldr r3, _0233AE6C ; =ov29_0237CFBC ldr r2, [r1] mov r1, sb - add r2, r2, #0xc4 + add r2, r2, #0xc4 + GENERATE_FLOOR_OFFSET strb r0, [r3, #8] add r0, r2, #0x4000 bl GetHiddenStairsType @@ -3332,7 +3526,7 @@ GenerateFloor: ; 0x0233A6D8 ldr r1, [r1] str r0, [r2, #0x2c] add r0, r1, #0x4000 - ldrsh r1, [r0, #0xd4] + ldrsh r1, [r0, #0xd4 + GENERATE_FLOOR_OFFSET] ldr r0, _0233AE70 ; =SECONDARY_TERRAIN_TYPES ldrb r0, [r0, r1] mov r1, #0xff @@ -3385,16 +3579,16 @@ _0233A828: ldr r0, [r3] ldr r1, _0233AE74 ; =0x00012AFA add r0, r0, #0x4000 - strb r7, [r0, #0xc5] + strb r7, [r0, #0xc5 + GENERATE_FLOOR_OFFSET] ldr r0, [r3] ldr r2, _0233AE6C ; =ov29_0237CFBC add r0, r0, #0x4000 - strb r7, [r0, #0xc6] + strb r7, [r0, #0xc6 + GENERATE_FLOOR_OFFSET] ldr r0, [r3] strh r7, [r0, r1] ldr r0, [r3] add r0, r0, #0x4000 - str r7, [r0, #0xcc] + str r7, [r0, #0xcc + GENERATE_FLOOR_OFFSET] ldrb r0, [sb, #0xc] str r0, [r2, #0x18] b _0233AD3C @@ -3403,7 +3597,7 @@ _0233A870: mov r0, #0 str r0, [sp] ldr r0, [r1] - add r0, r0, #0xc4 + add r0, r0, #0xc4 + GENERATE_FLOOR_OFFSET add r0, r0, #0x4000 bl ResetImportantSpawnPositions mov r6, #0 @@ -3416,7 +3610,7 @@ _0233A89C: beq _0233A8C8 ldr r0, [r4] add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] + ldrb r0, [r0, #0xda + GENERATE_FLOOR_OFFSET] bl IsNotFullFloorFixedRoom cmp r0, #0 beq _0233AC58 @@ -3426,7 +3620,7 @@ _0233A8C8: ldr r0, [r4] cmp r6, #1 add r0, r0, #0x4000 - strh r6, [r0, #0xde] + strh r6, [r0, #0xde + GENERATE_FLOOR_OFFSET] ldrge r0, _0233AE6C ; =ov29_0237CFBC movge r1, #0 strge r1, [r0, #0x18] @@ -3438,17 +3632,17 @@ _0233A8C8: bl ResetFloor ldr r0, [r4] add r0, r0, #0xcc00 - strh r5, [r0, #0xe0] + strh r5, [r0, #0xe0 + GENERATE_FLOOR_OFFSET] ldr r0, [r4] add r0, r0, #0xcc00 - strh r5, [r0, #0xe2] + strh r5, [r0, #0xe2 + GENERATE_FLOOR_OFFSET] ldr r0, [r4] add r1, r0, #0x4000 mov r0, #0 - strb r0, [r1, #0xc4] + strb r0, [r1, #0xc4 + GENERATE_FLOOR_OFFSET] ldr r0, [r4] add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] + ldrb r0, [r0, #0xda + GENERATE_FLOOR_OFFSET] cmp r0, #0 beq _0233A954 mov r1, sb @@ -3513,12 +3707,12 @@ _0233A9E4: cmp r0, #7 add r2, r1, #0x4000 mov r1, #0 - strb r1, [r2, #0xc4] + strb r1, [r2, #0xc4 + GENERATE_FLOOR_OFFSET] ldr r1, [r4] movle r0, #1 add r2, r1, #0x4000 mov r1, #0xff - strb r1, [r2, #0xc9] + strb r1, [r2, #0xc9 + GENERATE_FLOOR_OFFSET] ldr r1, _0233AE6C ; =ov29_0237CFBC strle r0, [sp, #4] and r0, sl, #0xf @@ -3575,7 +3769,7 @@ _0233AAEC: ldr r0, [r4] add r1, r0, #0x4000 mov r0, #1 - strb r0, [r1, #0xc4] + strb r0, [r1, #0xc4 + GENERATE_FLOOR_OFFSET] b _0233AB78 _0233AB04: mov r0, sb @@ -3592,7 +3786,7 @@ _0233AB24: ldr r0, [r4] add r1, r0, #0x4000 mov r0, #1 - strb r0, [r1, #0xc4] + strb r0, [r1, #0xc4 + GENERATE_FLOOR_OFFSET] b _0233AB78 _0233AB3C: mov r0, sb @@ -3689,7 +3883,7 @@ _0233AC58: mov r1, #1 ldr r0, [r0] add r0, r0, #0x4000 - strb r1, [r0, #0xc4] + strb r1, [r0, #0xc4 + GENERATE_FLOOR_OFFSET] _0233AC88: bl FinalizeJunctions cmp r8, #0 @@ -3715,9 +3909,9 @@ _0233ACA0: mvn r1, #0 ldr r0, [r0] add r0, r0, #0xcc00 - ldrsh r2, [r0, #0xe0] + ldrsh r2, [r0, #0xe0 + GENERATE_FLOOR_OFFSET] cmp r2, r1 - ldrnesh r0, [r0, #0xe2] + ldrnesh r0, [r0, #0xe2 + GENERATE_FLOOR_OFFSET] cmpne r0, r1 beq _0233AD38 bl GetFloorType @@ -3727,9 +3921,9 @@ _0233ACA0: mvn r2, #0 ldr r0, [r0] add r1, r0, #0xcc00 - ldrsh r0, [r1, #0xe4] + ldrsh r0, [r1, #0xe4 + GENERATE_FLOOR_OFFSET] cmp r0, r2 - ldrnesh r1, [r1, #0xe6] + ldrnesh r1, [r1, #0xe6 + GENERATE_FLOOR_OFFSET] cmpne r1, r2 beq _0233AD38 mov r2, #0 @@ -3754,7 +3948,7 @@ _0233AD44: mov r1, #1 ldr r0, [r0] add r0, r0, #0x4000 - strb r1, [r0, #0xc4] + strb r1, [r0, #0xc4 + GENERATE_FLOOR_OFFSET] bl FinalizeJunctions mov r0, sb mov r1, #0 @@ -3792,7 +3986,7 @@ _0233ADF4: ldr r0, [r0] mov r2, #0x38 add r0, r0, #0x4000 - strb r1, [r0, #0xc6] + strb r1, [r0, #0xc6 + GENERATE_FLOOR_OFFSET] mov r0, #0 mov r1, r0 mov r3, #0x20 @@ -3806,7 +4000,7 @@ _0233AE28: ldr r0, _0233AE64 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 - ldrsh r0, [r0, #0xd4] + ldrsh r0, [r0, #0xd4 + GENERATE_FLOOR_OFFSET] sub r0, r0, #0x1a mov r0, r0, lsl #0x10 mov r0, r0, asr #0x10 @@ -3821,10 +4015,10 @@ _0233AE58: ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _0233AE64: .word DUNGEON_PTR -_0233AE68: .word 0x000286B2 +_0233AE68: .word 0x000286B2 + GENERATE_FLOOR_OFFSET _0233AE6C: .word ov29_0237CFBC _0233AE70: .word SECONDARY_TERRAIN_TYPES -_0233AE74: .word 0x00012AFA +_0233AE74: .word 0x00012AFA + GENERATE_FLOOR_OFFSET arm_func_end GenerateFloor arm_func_start GetTileTerrain @@ -5283,7 +5477,11 @@ GenerateFixedRoom: ; 0x0233C32C ldr r2, [r2] mov sl, r0 add r1, r2, #0x12000 +#ifdef JAPAN + ldr r1, [r1, #0xa00] +#else ldr r1, [r1, #0xaa4] +#endif ldr r1, [r1, sl, lsl #2] ldrh r4, [r1] ldrh r5, [r1, #2] @@ -5298,6 +5496,29 @@ _0233C374: cmp r0, #0 bne _0233C590 ldr r0, _0233C764 ; =DUNGEON_PTR +#ifdef JAPAN + ldr r2, _0233C768 ; =HIDDEN_STAIRS_SPAWN_BLOCKED + ldr r4, [r0] + ldr r1, _0233C76C ; =ov29_0237CFBC + add r0, r4, #0x12000 + ldr r3, [r0, #0xa00] + add r4, r4, #0xcc00 + ldr r5, [r3, sl, lsl #2] + mov r3, #0 + ldrh r7, [r5] + ldrh r6, [r5, #2] + mov sb, #5 + add fp, r7, #5 + strh r7, [r4, #0x90] + strh r6, [r4, #0x92] + ldr r0, [r0, #0xa00] + ldr r0, [r0, sl, lsl #2] + add r0, r0, #6 + str r0, [r2, #4] + add r0, r6, #5 + strh r3, [r1, #0xa] + str r0, [sp, #0x1c] +#else ldr r4, _0233C768 ; =HIDDEN_STAIRS_SPAWN_BLOCKED ldr r0, [r0] ldr r3, _0233C76C ; =ov29_0237CFBC @@ -5320,6 +5541,7 @@ _0233C374: str r1, [r4, #4] strh r5, [r3, #0xa] add r4, r7, #5 +#endif b _0233C450 _0233C3E0: mov r0, sb, lsl #0x10 @@ -5344,16 +5566,30 @@ _0233C3F0: str ip, [sp] bl PlaceFixedRoomTile cmp r0, #0 +#ifdef JAPAN + strneh r8, [r4, #0x40] + strneh r5, [r4, #0x42] +#else ldrne r0, [sp, #0x1c] strneh r8, [r0, #0xe4] strneh r5, [r0, #0xe6] +#endif add r8, r8, #1 _0233C444: +#ifdef JAPAN + cmp r8, fp +#else cmp r8, r4 +#endif blt _0233C3F0 add sb, sb, #1 _0233C450: +#ifdef JAPAN + ldr r0, [sp, #0x1c] + cmp sb, r0 +#else cmp sb, fp +#endif blt _0233C3E0 mov r8, #0 add r4, r6, #5 @@ -9248,6 +9484,11 @@ _0233FAFC: arm_func_start ov29_0233FB1C ov29_0233FB1C: ; 0x0233FB1C +#ifdef JAPAN +#define OV29_0233FB1C_OFFSET 0x5C +#else +#define OV29_0233FB1C_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, lr} ldr r0, _0233FBE4 ; =DUNGEON_PTR mov r1, #0 @@ -9255,9 +9496,13 @@ ov29_0233FB1C: ; 0x0233FB1C mov r7, r1 _0233FB30: add r0, r6, r1, lsl #1 +#ifdef JAPAN + add r0, r0, #0xf100 +#else add r0, r0, #0xf200 +#endif add r1, r1, #1 - strh r7, [r0, #0x68] + strh r7, [r0, #0x68 + OV29_0233FB1C_OFFSET] cmp r1, #0x20 blt _0233FB30 _0233FB48: @@ -9279,21 +9524,33 @@ _0233FB54: blt _0233FBC8 cmp r2, #0x20 addlt r0, r6, r2, lsl #1 +#ifdef JAPAN + addlt r1, r0, #0xf100 +#else addlt r1, r0, #0xf200 - ldrltsh r0, [r1, #0x68] +#endif + ldrltsh r0, [r1, #0x68 + OV29_0233FB1C_OFFSET] cmplt r0, #0x20 bge _0233FBC8 add r2, r6, r2, lsl #7 add r0, r2, r0, lsl #2 add r0, r0, #0xf200 +#ifdef JAPAN + strh r4, [r0, #4] +#else strh r4, [r0, #0xa8] - ldrsh r0, [r1, #0x68] +#endif + ldrsh r0, [r1, #0x68 + OV29_0233FB1C_OFFSET] add r0, r2, r0, lsl #2 add r0, r0, #0xf200 +#ifdef JAPAN + strh r5, [r0, #6] +#else strh r5, [r0, #0xaa] - ldrsh r0, [r1, #0x68] +#endif + ldrsh r0, [r1, #0x68 + OV29_0233FB1C_OFFSET] add r0, r0, #1 - strh r0, [r1, #0x68] + strh r0, [r1, #0x68 + OV29_0233FB1C_OFFSET] _0233FBC8: add r5, r5, #1 cmp r5, #0x20 @@ -9308,6 +9565,11 @@ _0233FBE4: .word DUNGEON_PTR arm_func_start GenerateKecleonShop GenerateKecleonShop: ; 0x0233FBE8 +#ifdef JAPAN +#define GENERATE_KECLEON_SHOP_OFFSET -0xA4 +#else +#define GENERATE_KECLEON_SHOP_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x44 ldr r5, _0233FF8C ; =DUNGEON_PTR @@ -9460,12 +9722,12 @@ _0233FD34: strlt r1, [r0, #0x3c] ldr r1, _0233FF98 ; =0x0000270F add r0, r6, #0xc000 - str r1, [r0, #0xd14] - str r1, [r0, #0xd18] + str r1, [r0, #0xd14 + GENERATE_KECLEON_SHOP_OFFSET] + str r1, [r0, #0xd18 + GENERATE_KECLEON_SHOP_OFFSET] rsb r2, r1, #0 - str r2, [r0, #0xd1c] + str r2, [r0, #0xd1c + GENERATE_KECLEON_SHOP_OFFSET] ldr r1, _0233FF90 ; =ov29_0237CFBC - str r2, [r0, #0xd20] + str r2, [r0, #0xd20 + GENERATE_KECLEON_SHOP_OFFSET] ldr r4, [r1, #0x30] b _0233FED8 _0233FE54: @@ -9486,18 +9748,18 @@ _0233FE64: ldrh r1, [r0, #2] bic r1, r1, #1 strh r1, [r0, #2] - ldr r0, [r8, #0xd14] + ldr r0, [r8, #0xd14 + GENERATE_KECLEON_SHOP_OFFSET] cmp r0, r4 - strgt r4, [r8, #0xd14] + strgt r4, [r8, #0xd14 + GENERATE_KECLEON_SHOP_OFFSET] ldr r0, [r8, #0xd18] cmp r0, r5 - strgt r5, [r8, #0xd18] + strgt r5, [r8, #0xd18 + GENERATE_KECLEON_SHOP_OFFSET] ldr r0, [r8, #0xd1c] cmp r0, r4 - strlt r4, [r8, #0xd1c] + strlt r4, [r8, #0xd1c + GENERATE_KECLEON_SHOP_OFFSET] ldr r0, [r8, #0xd20] cmp r0, r5 - strlt r5, [r8, #0xd20] + strlt r5, [r8, #0xd20 + GENERATE_KECLEON_SHOP_OFFSET] add r5, r5, #1 _0233FEC8: ldr r0, [sl, #0x3c] @@ -9721,7 +9983,11 @@ _023401A4: bl GetTile ldrb r0, [r0, #7] add r4, r4, #1 +#ifdef JAPAN + strb r0, [r6, #0x25] +#else strb r0, [r6, #0xc9] +#endif _023401D4: ldrsh r0, [r7, #6] cmp r4, r0 @@ -9768,7 +10034,11 @@ GenerateMazeRoom: ; 0x02340224 cmp r8, r0 ble _02340448 add r0, r7, #0x4000 +#ifdef JAPAN + ldrsh r0, [r0, #0x3a] +#else ldrsh r0, [r0, #0xde] +#endif cmp r0, #0 bge _02340448 mov sb, #0 @@ -10432,6 +10702,11 @@ InitializeTile: ; 0x02340AD4 arm_func_start ResetFloor ResetFloor: ; 0x02340B0C +#ifdef JAPAN +#define RESET_FLOOR_OFFSET -0xA4 +#else +#define RESET_FLOOR_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} mov r6, #0 mov r4, r6 @@ -10503,11 +10778,11 @@ _02340BEC: ldr r0, [r6] mvn r1, #0 add r0, r0, #0xcc00 - strh r1, [r0, #0xe4] + strh r1, [r0, #0xe4 + RESET_FLOOR_OFFSET] ldr r0, [r6] mov r7, sb add r0, r0, #0xcc00 - strh r1, [r0, #0xe6] + strh r1, [r0, #0xe6 + RESET_FLOOR_OFFSET] mov r4, #0x14 mov r5, #0xa0 _02340C34: @@ -10515,8 +10790,13 @@ _02340C34: mov sl, r7 _02340C3C: ldr r0, [r6] +#ifdef JAPAN + add r0, r0, #0xbc + add r0, r0, #0xcc00 +#else add r0, r0, #0xd60 add r0, r0, #0xc000 +#endif add r0, r0, r8 mla r0, sl, r4, r0 bl InitializeTile @@ -10531,12 +10811,12 @@ _02340C3C: ldr r0, [r1] mov r2, r3 add r0, r0, #0x3f00 - strh r3, [r0, #0xc0] + strh r3, [r0, #0xc0 + RESET_FLOOR_OFFSET] _02340C84: ldr r0, [r1] add r0, r0, r3, lsl #2 add r0, r0, #0x12000 - ldr r0, [r0, #0xcc8] + ldr r0, [r0, #0xcc8 + RESET_FLOOR_OFFSET] add r3, r3, #1 str r2, [r0] cmp r3, #0x40 @@ -10598,6 +10878,11 @@ _02340D40: arm_func_start MarkNonEnemySpawns MarkNonEnemySpawns: ; 0x02340D4C +#ifdef JAPAN +#define MARK_NON_ENEMY_SPAWNS_OFFSET -0xA4 +#else +#define MARK_NON_ENEMY_SPAWNS_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0xe00 ldr r3, _02341458 ; =DUNGEON_PTR @@ -10605,10 +10890,10 @@ MarkNonEnemySpawns: ; 0x02340D4C ldr r5, [r3] mvn r2, #0 add r0, r5, #0xcc00 - ldrsh r3, [r0, #0xe4] + ldrsh r3, [r0, #0xe4 + MARK_NON_ENEMY_SPAWNS_OFFSET] mov sb, r1 cmp r3, r2 - ldrnesh r0, [r0, #0xe6] + ldrnesh r0, [r0, #0xe6 + MARK_NON_ENEMY_SPAWNS_OFFSET] cmpne r0, r2 bne _02340EC8 mov r6, #0 @@ -10653,7 +10938,7 @@ _02340DF4: beq _02340EC8 mov r0, r6 bl DungeonRandInt - add r1, r5, #0xc4 + add r1, r5, #0xc4 + MARK_NON_ENEMY_SPAWNS_OFFSET add r2, sp, #0 mov r4, r0 add r0, r2, r4, lsl #1 @@ -10683,7 +10968,7 @@ _02340E6C: ldr r4, [r1, #0x2c] add r0, r2, #0x2c000 ldrb r1, [r2, #0x749] - ldrb r0, [r0, #0xaf4] + ldrb r0, [r0, #0xaf4 + MARK_NON_ENEMY_SPAWNS_OFFSET] add r1, r1, #1 cmp r1, r0 bge _02340EC8 @@ -10692,7 +10977,7 @@ _02340E6C: sub r0, r6, #1 bl DungeonRandInt add r3, sp, #0 - add r1, r5, #0xc4 + add r1, r5, #0xc4 + MARK_NON_ENEMY_SPAWNS_OFFSET mov r2, r4 add r0, r3, r0, lsl #1 add r1, r1, #0x4000 @@ -11015,11 +11300,11 @@ _02341334: add r0, r5, #0xcc00 moveq r3, #1 movne r3, #0 - ldrsh r2, [r0, #0xe0] + ldrsh r2, [r0, #0xe0 + MARK_NON_ENEMY_SPAWNS_OFFSET] mvn r1, #0 and r7, r3, #0xff cmp r2, r1 - ldrnesh r0, [r0, #0xe2] + ldrnesh r0, [r0, #0xe2 + MARK_NON_ENEMY_SPAWNS_OFFSET] cmpne r0, r1 bne _02341450 mov r8, #0 @@ -11061,7 +11346,7 @@ _023413E8: ldr r0, _0234145C ; =ov29_0237CFBC ldrb r0, [r0, #8] cmp r0, #0 - ldrneb r0, [r4, #0xc9] + ldrneb r0, [r4, #0xc9 + MARK_NON_ENEMY_SPAWNS_OFFSET] cmpne r0, r1 streqb r6, [fp, r8, lsl #1] addeq r0, fp, r8, lsl #1 @@ -11082,23 +11367,28 @@ _0234140C: ldrb r3, [r2, r0, lsl #1] add r1, r5, #0xcc00 add r2, sp, #1 - strh r3, [r1, #0xe0] + strh r3, [r1, #0xe0 + MARK_NON_ENEMY_SPAWNS_OFFSET] ldrb r0, [r2, r0, lsl #1] - strh r0, [r1, #0xe2] + strh r0, [r1, #0xe2 + MARK_NON_ENEMY_SPAWNS_OFFSET] _02341450: add sp, sp, #0xe00 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _02341458: .word DUNGEON_PTR _0234145C: .word ov29_0237CFBC -_02341460: .word 0x0002C9E8 -_02341464: .word 0x00012AFA +_02341460: .word 0x0002C9E8 + MARK_NON_ENEMY_SPAWNS_OFFSET +_02341464: .word 0x00012AFA + MARK_NON_ENEMY_SPAWNS_OFFSET _02341468: .word MONSTER_HOUSE_MAX_NON_MONSTER_SPAWNS _0234146C: .word FIRST_DUNGEON_WITH_MONSTER_HOUSE_TRAPS arm_func_end MarkNonEnemySpawns arm_func_start MarkEnemySpawns MarkEnemySpawns: ; 0x02341470 +#ifdef JAPAN +#define MARK_ENEMY_SPAWNS_OFFSET -0xA4 +#else +#define MARK_ENEMY_SPAWNS_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x204 sub sp, sp, #0xc00 @@ -11149,16 +11439,16 @@ _023414D4: bne _0234156C tst r2, #0x100 bne _0234156C - ldrsh r0, [r4, #0xe0] + ldrsh r0, [r4, #0xe0 + MARK_ENEMY_SPAWNS_OFFSET] cmp sl, r0 - ldreqsh r0, [r4, #0xe2] + ldreqsh r0, [r4, #0xe2 + MARK_ENEMY_SPAWNS_OFFSET] cmpeq r7, r0 beq _0234156C ldr r0, _02341764 ; =ov29_0237CFBC ldrb r0, [r0, #8] cmp r0, #0 beq _02341558 - ldrb r0, [fp, #0xc9] + ldrb r0, [fp, #0xc9 + MARK_ENEMY_SPAWNS_OFFSET] cmp r0, r1 beq _0234156C _02341558: @@ -11206,7 +11496,7 @@ _023415EC: blt _023415C0 _023415F4: add r0, sb, #0x4000 - ldrb r2, [r0, #0xc4] + ldrb r2, [r0, #0xc4 + MARK_ENEMY_SPAWNS_OFFSET] cmp r2, #0 beq _02341754 ldr r1, _02341768 ; =MONSTER_HOUSE_MAX_MONSTER_SPAWNS @@ -11242,9 +11532,9 @@ _02341640: bne _023416A0 tst r2, #0x40 beq _023416A0 - ldrsh r0, [r4, #0xe0] + ldrsh r0, [r4, #0xe0 + MARK_ENEMY_SPAWNS_OFFSET] cmp r8, r0 - ldreqsh r0, [r4, #0xe2] + ldreqsh r0, [r4, #0xe2 + MARK_ENEMY_SPAWNS_OFFSET] cmpeq sl, r0 strneb r5, [fp, r7, lsl #1] addne r0, fp, r7, lsl #1 @@ -11856,9 +12146,15 @@ _02341EF4: orr r1, r1, #0x50 add r0, r0, #0xcc00 strb r1, [r2, r6] +#ifdef JAPAN + ldrsh r1, [r0, #0x40] + cmp r1, r7 + ldreqsh r0, [r0, #0x42] +#else ldrsh r1, [r0, #0xe4] cmp r1, r7 ldreqsh r0, [r0, #0xe6] +#endif cmpeq r0, r6 movne r0, #0 bne _0234216C @@ -12321,6 +12617,11 @@ _02342558: arm_func_start ov29_02342594 ov29_02342594: ; 0x02342594 +#ifdef JAPAN +#define OV29_02342594_OFFSET -0xA4 +#else +#define OV29_02342594_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x18 ldr r2, _023427D8 ; =DUNGEON_PTR @@ -12328,27 +12629,27 @@ ov29_02342594: ; 0x02342594 ldr sb, [r2] ldr r3, _023427E0 ; =ov29_0237CFBC add r2, sb, #0x12000 - ldr r5, [r2, #0xaa4] + ldr r5, [r2, #0xaa4 + OV29_02342594_OFFSET] mov r6, #0 ldr r5, [r5, r1, lsl #2] mov sl, r0 add r0, r5, #6 str r0, [r4, #4] strh r6, [r3, #0xa] - ldr r0, [r2, #0xaa4] + ldr r0, [r2, #0xaa4 + OV29_02342594_OFFSET] ldr r0, [r0, r1, lsl #2] ldrh r0, [r0, #4] tst r0, #1 beq _0234274C ldrsh r1, [sl] add r0, sb, #0xc000 - str r1, [r0, #0xd24] + str r1, [r0, #0xd24 + OV29_02342594_OFFSET] ldrsh r1, [sl, #2] - str r1, [r0, #0xd28] + str r1, [r0, #0xd28 + OV29_02342594_OFFSET] ldrsh r1, [sl, #4] - str r1, [r0, #0xd2c] + str r1, [r0, #0xd2c + OV29_02342594_OFFSET] ldrsh r1, [sl, #6] - str r1, [r0, #0xd30] + str r1, [r0, #0xd30 + OV29_02342594_OFFSET] ldrsh r8, [sl, #2] b _0234273C _0234260C: @@ -12358,9 +12659,15 @@ _0234260C: add r0, sb, r0 str r0, [sp, #8] add r0, sb, r6, lsl #1 +#ifdef JAPAN + add r1, sb, #0xbc + str r0, [sp, #0xc] + add r0, r1, #0xcc00 +#else add r1, sb, #0xd60 str r0, [sp, #0xc] add r0, r1, #0xc000 +#endif str r0, [sp, #0x10] add r0, sb, #0xd000 ldrsh r4, [sl] @@ -12377,8 +12684,13 @@ _02342648: ldr r0, [sp, #0xc] mov r1, fp add r0, r0, r5, lsl #4 +#ifdef JAPAN + add r0, r0, #0xd100 + strh fp, [r0, #0xbc] +#else add r0, r0, #0xd200 strh fp, [r0, #0x60] +#endif mov r0, #0 str r0, [sp] mov r0, #0xa0 @@ -12393,8 +12705,13 @@ _02342648: ldr r0, [sp, #8] ldrb ip, [r7, #7] add r0, r0, fp +#ifdef JAPAN + add r0, r0, #0xbc + add fp, r0, #0xcc00 +#else add r0, r0, #0xd60 add fp, r0, #0xc000 +#endif ldmia fp!, {r0, r1, r2, r3} mov lr, r7 stmia lr!, {r0, r1, r2, r3} @@ -12463,7 +12780,7 @@ _02342768: str fp, [sp] bl PlaceFixedRoomTile strb r7, [r6, #7] - strb r7, [r4, #0x2e0] + strb r7, [r4, #0x2e0 + OV29_02342594_OFFSET] add sb, sb, #1 _023427B4: ldrsh r0, [sl, #4] @@ -12924,9 +13241,16 @@ GetHiddenStairsType: ; 0x02342D9C mov r6, r1 ldr r0, [r0, #0x7cc] mov r4, #0 +#ifdef JAPAN + sub r0, r0, #1 + cmp r0, #1 + movls r0, r4 + ldmlsia sp!, {r4, r5, r6, pc} +#else cmp r0, #1 cmpne r0, #2 beq _02342EA8 +#endif mov r0, #4 bl DungeonRngSetSecondary ldrb r0, [r5, #0x16] @@ -13041,6 +13365,11 @@ _02342F2C: .word HIDDEN_STAIRS_SPAWN_BLOCKED arm_func_start PlaceFixedRoomTile PlaceFixedRoomTile: ; 0x02342F30 +#ifdef JAPAN +#define PLACE_FIXED_ROOM_TILE_OFFSET -0xA4 +#else +#define PLACE_FIXED_ROOM_TILE_OFFSET 0 +#endif stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x34 ldr r4, _02343928 ; =0x00000FFF @@ -13162,24 +13491,24 @@ _023430B8: ldr r4, [r2] mov r5, r0, asr #0x10 add r0, r4, #0xcc00 - strh r5, [r0, #0xe0] + strh r5, [r0, #0xe0 + PLACE_FIXED_ROOM_TILE_OFFSET] ldr r0, [r2] mov r4, r1, asr #0x10 add r0, r0, #0xcc00 - strh r4, [r0, #0xe2] + strh r4, [r0, #0xe2 + PLACE_FIXED_ROOM_TILE_OFFSET] ldr r1, [r2] and r0, r3, #0xff add r1, r1, #0xcc00 - strh r5, [r1, #0xec] + strh r5, [r1, #0xec + PLACE_FIXED_ROOM_TILE_OFFSET] ldr r1, [r2] add r1, r1, #0xcc00 - strh r4, [r1, #0xee] + strh r4, [r1, #0xee + PLACE_FIXED_ROOM_TILE_OFFSET] bl FixedRoomActionParamToDirection ldr r1, _0234392C ; =DUNGEON_PTR mov r2, #0 ldr r1, [r1] add r1, r1, #0xc000 - strb r0, [r1, #0xd0c] + strb r0, [r1, #0xd0c + PLACE_FIXED_ROOM_TILE_OFFSET] strb r2, [r6, #7] b _0234391C _0234313C: @@ -13233,10 +13562,10 @@ _023431B8: strb r0, [r6, #7] ldr r0, [r1] add r0, r0, #0xcc00 - strh r5, [r0, #0xe4] + strh r5, [r0, #0xe4 + PLACE_FIXED_ROOM_TILE_OFFSET] ldr r0, [r1] add r0, r0, #0xcc00 - strh r4, [r0, #0xe6] + strh r4, [r0, #0xe6 + PLACE_FIXED_ROOM_TILE_OFFSET] b _0234391C _02343208: ldrh r1, [r6] @@ -13332,19 +13661,19 @@ _0234334C: sub r7, r1, #0x5f add r0, r0, r7, lsl #2 add r0, r0, #0xcc00 - strh r5, [r0, #0xec] + strh r5, [r0, #0xec + PLACE_FIXED_ROOM_TILE_OFFSET] ldr r1, [r2] and r0, r3, #0xff add r1, r1, r7, lsl #2 add r1, r1, #0xcc00 - strh r4, [r1, #0xee] + strh r4, [r1, #0xee + PLACE_FIXED_ROOM_TILE_OFFSET] bl FixedRoomActionParamToDirection ldr r1, _0234392C ; =DUNGEON_PTR mov r2, #0 ldr r1, [r1] add r1, r1, r7 add r1, r1, #0xc000 - strb r0, [r1, #0xd0c] + strb r0, [r1, #0xd0c + PLACE_FIXED_ROOM_TILE_OFFSET] ldrh r0, [r6] bic r0, r0, #3 strh r0, [r6] @@ -13744,7 +14073,7 @@ _02343958: .word ov29_023534F0 _0234395C: .word TREASURE_BOX_1_ITEM_IDS _02343960: .word 0x00000229 _02343964: .word FIXED_ROOM_MONSTER_SPAWN_STATS_TABLE -_02343968: .word 0x0002C9E6 +_02343968: .word 0x0002C9E6 + PLACE_FIXED_ROOM_TILE_OFFSET arm_func_end PlaceFixedRoomTile arm_func_start FixedRoomActionParamToDirection @@ -13787,6 +14116,11 @@ _023439BC: arm_func_start ov29_023439D8 ov29_023439D8: ; 0x023439D8 +#ifdef JAPAN +#define OV29_023439D8_OFFSET -0xA4 +#else +#define OV29_023439D8_OFFSET 0 +#endif stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x10 ldr r4, _02343CD0 ; =DUNGEON_PTR @@ -13794,7 +14128,7 @@ ov29_023439D8: ; 0x023439D8 ldr r4, [r4] mov sl, r0 add r1, r4, #0x4000 - ldrb r1, [r1, #0xc5] + ldrb r1, [r1, #0xc5 + OV29_023439D8_OFFSET] str r2, [sp, #4] cmp r1, #0 bne _02343CC0 @@ -13819,8 +14153,8 @@ _02343A44: ldr r0, _02343CD0 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0xc000 - ldr r1, [r0, #0xd24] - ldr r2, [r0, #0xd28] + ldr r1, [r0, #0xd24 + OV29_023439D8_OFFSET] + ldr r2, [r0, #0xd28 + OV29_023439D8_OFFSET] subs r5, r4, r1 sub r6, r8, r2 bmi _02343B50 @@ -13834,10 +14168,10 @@ _02343A44: addge r1, r2, #1 cmpge r8, r1 blt _02343B50 - ldr r1, [r0, #0xd2c] + ldr r1, [r0, #0xd2c + OV29_023439D8_OFFSET] sub r1, r1, #1 cmp r4, r1 - ldrlt r0, [r0, #0xd30] + ldrlt r0, [r0, #0xd30 + OV29_023439D8_OFFSET] sublt r0, r0, #1 cmplt r8, r0 bge _02343B50 @@ -13856,15 +14190,25 @@ _02343A44: ldr r2, [r2] add r2, r2, r1 add r2, r0, r2 +#ifdef JAPAN + add r2, r2, #0xcc00 + ldrh r2, [r2, #0xbc] +#else add r2, r2, #0xcd00 ldrh r2, [r2, #0x60] +#endif strh r2, [r7] ldr r2, _02343CD0 ; =DUNGEON_PTR ldr r2, [r2] add r1, r2, r1 add r0, r0, r1 +#ifdef JAPAN + add r0, r0, #0xcc00 + ldrh r0, [r0, #0xbe] +#else add r0, r0, #0xcd00 ldrh r0, [r0, #0x62] +#endif strh r0, [r7, #2] _02343B0C: mov r0, #1 @@ -13875,8 +14219,13 @@ _02343B0C: mov r2, r4 add r1, r1, r5, lsl #4 add r1, r1, r6, lsl #1 +#ifdef JAPAN + add r1, r1, #0xd100 + ldrh r1, [r1, #0xbc] +#else add r1, r1, #0xd200 ldrh r1, [r1, #0x60] +#endif mov r3, r8 bl PlaceFixedRoomTile ldrh r0, [r7, #2] @@ -13907,8 +14256,8 @@ _02343B80: _02343B90: ldr r0, [r6] add r0, r0, #0xc000 - ldr r7, [r0, #0xd24] - ldr r2, [r0, #0xd28] + ldr r7, [r0, #0xd24 + OV29_023439D8_OFFSET] + ldr r2, [r0, #0xd28 + OV29_023439D8_OFFSET] subs r3, r5, r7 sub r1, r4, r2 bmi _02343BFC @@ -13922,10 +14271,10 @@ _02343B90: addge r1, r2, #1 cmpge r4, r1 blt _02343BFC - ldr r1, [r0, #0xd2c] + ldr r1, [r0, #0xd2c + OV29_023439D8_OFFSET] sub r1, r1, #1 cmp r5, r1 - ldrlt r0, [r0, #0xd30] + ldrlt r0, [r0, #0xd30 + OV29_023439D8_OFFSET] sublt r0, r0, #1 cmplt r4, r0 bge _02343BFC @@ -13951,7 +14300,7 @@ _02343C24: ldr r0, [r0] ldr r1, _02343CD4 ; =0xFFFFCFEF add r0, r0, #0x4000 - strb r2, [r0, #0xc5] + strb r2, [r0, #0xc5 + OV29_023439D8_OFFSET] ldr r0, [sp, #8] ldrh r2, [sb] cmp r0, #0 @@ -14021,8 +14370,13 @@ _02343D10: bl UpdateMinimap ldmia sp!, {r4, pc} .align 2, 0 +#ifdef JAPAN +_02343D28: .word 0x000008A6 +_02343D2C: .word 0x000008A5 +#else _02343D28: .word 0x00000B94 _02343D2C: .word 0x00000B93 +#endif arm_func_end ApplyKeyEffect arm_func_start ov29_02343D30 @@ -14051,8 +14405,13 @@ _02343D68: bl UpdateMinimap ldmia sp!, {r3, r4, r5, pc} .align 2, 0 +#ifdef JAPAN +_02343D88: .word 0x000008A7 +_02343D8C: .word 0x000008A5 +#else _02343D88: .word 0x00000B95 _02343D8C: .word 0x00000B93 +#endif arm_func_end ov29_02343D30 arm_func_start LoadFixedRoomData @@ -14636,9 +14995,15 @@ _023444A0: ldr r0, _023444D0 ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x3f00 +#ifdef JAPAN + ldrsh r1, [r0, #0x1e] + add r1, r1, #1 + strh r1, [r0, #0x1e] +#else ldrsh r1, [r0, #0xc2] add r1, r1, #1 strh r1, [r0, #0xc2] +#endif add sp, sp, #0xc ldmia sp!, {r4, r5, pc} .align 2, 0 @@ -14808,7 +15173,11 @@ _02344690: bl ov29_022F0780 mov r3, #1 ldr r1, _02344A68 ; =DUNGEON_PTR +#ifdef JAPAN + ldr r0, _02345E54 ; =0x000008C7 +#else mov r0, #0xf50 +#endif ldr r2, [r1] mov r1, r4 strb r3, [r2, #0x77e] @@ -14895,7 +15264,11 @@ _023447FC: bl ov29_022F0780 ldr r0, _02344AB0 ; =0x00000F3C bl ov29_022F0780 +#ifdef JAPAN + mov r0, #0x8b0 +#else ldr r0, _02344AB4 ; =0x00000F39 +#endif mov r1, r4 mov r2, #0 bl ov29_022F0604 @@ -14948,8 +15321,13 @@ _023448E4: _02344904: mov r0, #0x64 bl ov29_022F07BC +#ifdef JAPAN + mov r1, r4 + mov r0, #0x8d0 +#else ldr r0, _02344ACC ; =0x00000F59 mov r1, r4 +#endif mov r2, #0 bl ov29_022F0604 bl ov29_022F05E4 @@ -14979,7 +15357,11 @@ _02344950: mov r1, r4 mov r2, #0 bl ov29_022F0604 +#ifdef JAPAN + ldr r0, _02345EA0 ; =0x000008B7 +#else mov r0, #0xf40 +#endif mov r1, r4 mov r2, #0 ldr r3, _02344A74 ; =ov29_02353798 @@ -15040,42 +15422,57 @@ _02344A58: add sp, sp, #8 ldmia sp!, {r4, r5, r6, pc} .align 2, 0 +#ifdef JAPAN +#define OV29_02344544_OFFSET -0x689 +#else +#define OV29_02344544_OFFSET 0 +#endif _02344A60: .word ov29_0237CFFC -_02344A64: .word 0x00000F32 +_02344A64: .word 0x00000F32 + OV29_02344544_OFFSET _02344A68: .word DUNGEON_PTR -_02344A6C: .word 0x00000F4C -_02344A70: .word 0x00000F4A +_02344A6C: .word 0x00000F4C + OV29_02344544_OFFSET +_02344A70: .word 0x00000F4A + OV29_02344544_OFFSET _02344A74: .word ov29_02353798 -_02344A78: .word 0x00000F4B -_02344A7C: .word 0x00000F4D -_02344A80: .word 0x00000F4E -_02344A84: .word 0x00000F4F +_02344A78: .word 0x00000F4B + OV29_02344544_OFFSET +_02344A7C: .word 0x00000F4D + OV29_02344544_OFFSET +_02344A80: .word 0x00000F4E + OV29_02344544_OFFSET +_02344A84: .word 0x00000F4F + OV29_02344544_OFFSET _02344A88: .word 0x000001A7 -_02344A8C: .word 0x00000F51 -_02344A90: .word 0x00000F33 -_02344A94: .word 0x00000F34 -_02344A98: .word 0x00000F35 -_02344A9C: .word 0x00000F37 -_02344AA0: .word 0x00000F36 -_02344AA4: .word 0x00000F38 -_02344AA8: .word 0x00000F3A -_02344AAC: .word 0x00000F3B -_02344AB0: .word 0x00000F3C +_02344A8C: .word 0x00000F51 + OV29_02344544_OFFSET +#ifdef JAPAN +_02345E54: .word 0x000008C7 +#endif +_02344A90: .word 0x00000F33 + OV29_02344544_OFFSET +_02344A94: .word 0x00000F34 + OV29_02344544_OFFSET +_02344A98: .word 0x00000F35 + OV29_02344544_OFFSET +_02344A9C: .word 0x00000F37 + OV29_02344544_OFFSET +_02344AA0: .word 0x00000F36 + OV29_02344544_OFFSET +_02344AA4: .word 0x00000F38 + OV29_02344544_OFFSET +_02344AA8: .word 0x00000F3A + OV29_02344544_OFFSET +_02344AAC: .word 0x00000F3B + OV29_02344544_OFFSET +_02344AB0: .word 0x00000F3C + OV29_02344544_OFFSET +#ifndef JAPAN _02344AB4: .word 0x00000F39 -_02344AB8: .word 0x00000F54 -_02344ABC: .word 0x00000F55 -_02344AC0: .word 0x00000F56 -_02344AC4: .word 0x00000F58 -_02344AC8: .word 0x00000F57 +#endif +_02344AB8: .word 0x00000F54 + OV29_02344544_OFFSET +_02344ABC: .word 0x00000F55 + OV29_02344544_OFFSET +_02344AC0: .word 0x00000F56 + OV29_02344544_OFFSET +_02344AC4: .word 0x00000F58 + OV29_02344544_OFFSET +_02344AC8: .word 0x00000F57 + OV29_02344544_OFFSET +#ifndef JAPAN _02344ACC: .word 0x00000F59 +#endif _02344AD0: .word 0x000001A6 -_02344AD4: .word 0x00000F5D -_02344AD8: .word 0x00000F5A -_02344ADC: .word 0x00000F3F -_02344AE0: .word 0x00000F41 -_02344AE4: .word 0x00000F42 -_02344AE8: .word 0x00000F43 -_02344AEC: .word 0x00000F44 -_02344AF0: .word 0x00000F45 +_02344AD4: .word 0x00000F5D + OV29_02344544_OFFSET +_02344AD8: .word 0x00000F5A + OV29_02344544_OFFSET +_02344ADC: .word 0x00000F3F + OV29_02344544_OFFSET +#ifdef JAPAN +_02345EA0: .word 0x000008B7 +#endif +_02344AE0: .word 0x00000F41 + OV29_02344544_OFFSET +_02344AE4: .word 0x00000F42 + OV29_02344544_OFFSET +_02344AE8: .word 0x00000F43 + OV29_02344544_OFFSET +_02344AEC: .word 0x00000F44 + OV29_02344544_OFFSET +_02344AF0: .word 0x00000F45 + OV29_02344544_OFFSET _02344AF4: .word 0x000001A5 arm_func_end ov29_02344544