Fixed some ARM9 JP mismatches

This commit is contained in:
AnonymousRandomPerson
2024-01-04 00:46:51 -06:00
parent bbd4f1b178
commit 9450eca1c3
57 changed files with 8878 additions and 1793 deletions

View File

@@ -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

View File

@@ -5,6 +5,7 @@
.public ApplyDamageAndEffectsWrapper
.public ATK_STAT_IDX
.public BoostOffensiveStat
.public CanSeeTarget
.public CanTargetEntity
.public CategoryIsNotPhysical
.public ChooseAiMove

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

File diff suppressed because it is too large Load Diff

View File

@@ -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]

View File

@@ -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

View File

@@ -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

File diff suppressed because it is too large Load Diff

View File

@@ -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]

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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]

File diff suppressed because it is too large Load Diff

View File

@@ -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

View File

@@ -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

View File

@@ -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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

File diff suppressed because it is too large Load Diff

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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}

View File

@@ -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

View File

@@ -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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff