mirror of
https://github.com/pret/pmd-red.git
synced 2026-09-13 11:35:57 -05:00
more decomping
This commit is contained in:
@@ -167,7 +167,7 @@ sub_8075CFC:
|
||||
adds r0, r6, 0
|
||||
adds r1, r4, 0
|
||||
adds r2, r5, 0
|
||||
bl sub_80716E8
|
||||
bl HasSafeguardStatus
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08075DAA
|
||||
@@ -633,7 +633,7 @@ sub_8076090:
|
||||
adds r0, r6, 0
|
||||
adds r1, r4, 0
|
||||
mov r2, r9
|
||||
bl sub_80716E8
|
||||
bl HasSafeguardStatus
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0807613A
|
||||
@@ -715,7 +715,7 @@ sub_807614C:
|
||||
adds r0, r6, 0
|
||||
adds r1, r4, 0
|
||||
adds r2, r7, 0
|
||||
bl sub_80716E8
|
||||
bl HasSafeguardStatus
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08076206
|
||||
@@ -814,7 +814,7 @@ _08076238:
|
||||
adds r0, r7, 0
|
||||
adds r1, r5, 0
|
||||
mov r2, r10
|
||||
bl sub_80716E8
|
||||
bl HasSafeguardStatus
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807624A
|
||||
@@ -1045,7 +1045,7 @@ _0807641A:
|
||||
adds r0, r7, 0
|
||||
adds r1, r5, 0
|
||||
mov r2, r10
|
||||
bl sub_80716E8
|
||||
bl HasSafeguardStatus
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807642C
|
||||
@@ -1279,7 +1279,7 @@ _08076602:
|
||||
adds r0, r7, 0
|
||||
adds r1, r5, 0
|
||||
mov r2, r10
|
||||
bl sub_80716E8
|
||||
bl HasSafeguardStatus
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08076614
|
||||
@@ -1510,7 +1510,7 @@ _080767CE:
|
||||
mov r0, r8
|
||||
adds r1, r5, 0
|
||||
adds r2, r4, 0
|
||||
bl sub_80716E8
|
||||
bl HasSafeguardStatus
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _080768C8
|
||||
@@ -1641,7 +1641,7 @@ sub_80768DC:
|
||||
adds r0, r7, 0
|
||||
adds r1, r5, 0
|
||||
adds r2, r4, 0
|
||||
bl sub_80716E8
|
||||
bl HasSafeguardStatus
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _080769BE
|
||||
@@ -1748,7 +1748,7 @@ sub_80769CC:
|
||||
adds r0, r7, 0
|
||||
adds r1, r5, 0
|
||||
movs r2, 0x1
|
||||
bl sub_80716E8
|
||||
bl HasSafeguardStatus
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08076A9A
|
||||
@@ -1933,7 +1933,7 @@ _08076B60:
|
||||
adds r0, r6, 0
|
||||
adds r1, r4, 0
|
||||
movs r2, 0x1
|
||||
bl sub_80716E8
|
||||
bl HasSafeguardStatus
|
||||
lsls r0, 24
|
||||
lsrs r7, r0, 24
|
||||
cmp r7, 0
|
||||
@@ -2150,7 +2150,7 @@ sub_8076D10:
|
||||
adds r0, r7, 0
|
||||
adds r1, r6, 0
|
||||
movs r2, 0x1
|
||||
bl sub_80716E8
|
||||
bl HasSafeguardStatus
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08076E0E
|
||||
|
||||
1234
asm/code_8077274.s
1234
asm/code_8077274.s
File diff suppressed because it is too large
Load Diff
@@ -1425,7 +1425,7 @@ sub_80807C0:
|
||||
beq _08080870
|
||||
mov r0, r8
|
||||
movs r2, 0x1
|
||||
bl sub_80716E8
|
||||
bl HasSafeguardStatus
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08080870
|
||||
|
||||
@@ -139,661 +139,4 @@ _08030F50: .4byte gUnknown_203B324
|
||||
_08030F54: .4byte gUnknown_80E0938
|
||||
thumb_func_end sub_8030E48
|
||||
|
||||
thumb_func_start sub_8030F58
|
||||
sub_8030F58:
|
||||
push {r4-r6,lr}
|
||||
adds r6, r0, 0
|
||||
bl ResetUnusedInputStruct
|
||||
movs r0, 0
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
ldr r5, _08030FF4
|
||||
ldr r0, [r5]
|
||||
cmp r0, 0
|
||||
bne _08030F88
|
||||
movs r4, 0x8E
|
||||
lsls r4, 1
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x8
|
||||
bl MemoryAlloc
|
||||
str r0, [r5]
|
||||
movs r1, 0
|
||||
adds r2, r4, 0
|
||||
bl MemoryFill8
|
||||
_08030F88:
|
||||
ldr r0, [r5]
|
||||
movs r1, 0x8C
|
||||
lsls r1, 1
|
||||
adds r0, r1
|
||||
str r6, [r0]
|
||||
movs r0, 0x98
|
||||
lsls r0, 1
|
||||
bl GetDialogueSpriteDataPtr
|
||||
ldr r2, [r5]
|
||||
movs r4, 0x84
|
||||
lsls r4, 1
|
||||
adds r1, r2, r4
|
||||
str r0, [r1]
|
||||
movs r3, 0x86
|
||||
lsls r3, 1
|
||||
adds r1, r2, r3
|
||||
ldr r0, [r0, 0x4]
|
||||
str r0, [r1]
|
||||
movs r0, 0x8A
|
||||
lsls r0, 1
|
||||
adds r2, r0
|
||||
movs r1, 0
|
||||
strb r1, [r2]
|
||||
ldr r0, [r5]
|
||||
ldr r2, _08030FF8
|
||||
adds r0, r2
|
||||
strb r1, [r0]
|
||||
ldr r0, [r5]
|
||||
adds r3, 0xA
|
||||
adds r0, r3
|
||||
strb r1, [r0]
|
||||
ldr r2, [r5]
|
||||
movs r0, 0x88
|
||||
lsls r0, 1
|
||||
adds r1, r2, r0
|
||||
movs r0, 0x2
|
||||
strh r0, [r1]
|
||||
subs r3, 0x4
|
||||
adds r1, r2, r3
|
||||
movs r0, 0x8
|
||||
strh r0, [r1]
|
||||
adds r0, r6, 0
|
||||
bl sub_8030C20
|
||||
lsls r0, 24
|
||||
lsrs r1, r0, 24
|
||||
cmp r1, 0
|
||||
beq _08031038
|
||||
cmp r6, 0x2
|
||||
beq _08030FFC
|
||||
cmp r6, 0x4
|
||||
beq _08031014
|
||||
b _08031022
|
||||
.align 2, 0
|
||||
_08030FF4: .4byte gUnknown_203B328
|
||||
_08030FF8: .4byte 0x00000115
|
||||
_08030FFC:
|
||||
ldr r0, _0803100C
|
||||
ldr r2, [r5]
|
||||
adds r2, r4
|
||||
ldr r3, _08031010
|
||||
movs r1, 0
|
||||
bl sub_80141B4
|
||||
b _08031022
|
||||
.align 2, 0
|
||||
_0803100C: .4byte gUnknown_80E09D8
|
||||
_08031010: .4byte 0x00000101
|
||||
_08031014:
|
||||
ldr r0, _0803102C
|
||||
ldr r2, [r5]
|
||||
adds r2, r4
|
||||
ldr r3, _08031030
|
||||
movs r1, 0
|
||||
bl sub_80141B4
|
||||
_08031022:
|
||||
ldr r0, _08031034
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x5
|
||||
str r0, [r1]
|
||||
b _08031048
|
||||
.align 2, 0
|
||||
_0803102C: .4byte gUnknown_80E0A0C
|
||||
_08031030: .4byte 0x00000101
|
||||
_08031034: .4byte gUnknown_203B328
|
||||
_08031038:
|
||||
ldr r0, [r5]
|
||||
str r1, [r0]
|
||||
adds r0, r6, 0
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
movs r3, 0x8
|
||||
bl sub_80306A8
|
||||
_08031048:
|
||||
movs r0, 0x1
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8030F58
|
||||
|
||||
thumb_func_start sub_8031050
|
||||
sub_8031050:
|
||||
push {lr}
|
||||
ldr r1, _08031068
|
||||
ldr r0, [r1]
|
||||
ldr r0, [r0]
|
||||
adds r2, r1, 0
|
||||
cmp r0, 0x6
|
||||
bhi _080310AC
|
||||
lsls r0, 2
|
||||
ldr r1, _0803106C
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08031068: .4byte gUnknown_203B328
|
||||
_0803106C: .4byte _08031070
|
||||
.align 2, 0
|
||||
_08031070:
|
||||
.4byte _0803108C
|
||||
.4byte _08031092
|
||||
.4byte _08031098
|
||||
.4byte _08031098
|
||||
.4byte _080310A2
|
||||
.4byte _080310A8
|
||||
.4byte _080310A8
|
||||
_0803108C:
|
||||
bl sub_8031300
|
||||
b _080310AC
|
||||
_08031092:
|
||||
bl sub_803136C
|
||||
b _080310AC
|
||||
_08031098:
|
||||
ldr r0, [r2]
|
||||
ldr r0, [r0]
|
||||
bl sub_80313D8
|
||||
b _080310AC
|
||||
_080310A2:
|
||||
bl sub_8031498
|
||||
b _080310AC
|
||||
_080310A8:
|
||||
movs r0, 0x3
|
||||
b _080310AE
|
||||
_080310AC:
|
||||
movs r0, 0
|
||||
_080310AE:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8031050
|
||||
|
||||
thumb_func_start sub_80310B4
|
||||
sub_80310B4:
|
||||
push {r4,lr}
|
||||
bl sub_803084C
|
||||
ldr r4, _080310E0
|
||||
ldr r0, [r4]
|
||||
cmp r0, 0
|
||||
beq _080310D8
|
||||
movs r1, 0x84
|
||||
lsls r1, 1
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
bl CloseFile
|
||||
ldr r0, [r4]
|
||||
bl MemoryFree
|
||||
movs r0, 0
|
||||
str r0, [r4]
|
||||
_080310D8:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080310E0: .4byte gUnknown_203B328
|
||||
thumb_func_end sub_80310B4
|
||||
|
||||
thumb_func_start sub_80310E4
|
||||
sub_80310E4:
|
||||
push {lr}
|
||||
ldr r1, _080310F8
|
||||
ldr r1, [r1]
|
||||
str r0, [r1]
|
||||
bl sub_80310FC
|
||||
bl sub_8031258
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080310F8: .4byte gUnknown_203B328
|
||||
thumb_func_end sub_80310E4
|
||||
|
||||
thumb_func_start sub_80310FC
|
||||
sub_80310FC:
|
||||
push {r4-r6,lr}
|
||||
ldr r4, _0803111C
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xA8
|
||||
bl sub_8006518
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0x6
|
||||
bls _08031112
|
||||
b _0803122C
|
||||
_08031112:
|
||||
lsls r0, 2
|
||||
ldr r1, _08031120
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0803111C: .4byte gUnknown_203B328
|
||||
_08031120: .4byte _08031124
|
||||
.align 2, 0
|
||||
_08031124:
|
||||
.4byte _08031140
|
||||
.4byte _08031178
|
||||
.4byte _080311C0
|
||||
.4byte _080311C0
|
||||
.4byte _080311E8
|
||||
.4byte _0803122C
|
||||
.4byte _0803122C
|
||||
_08031140:
|
||||
ldr r3, _08031170
|
||||
ldr r1, [r3]
|
||||
ldr r2, _08031174
|
||||
adds r1, 0xC0
|
||||
adds r0, r2, 0
|
||||
ldm r0!, {r4-r6}
|
||||
stm r1!, {r4-r6}
|
||||
ldm r0!, {r4-r6}
|
||||
stm r1!, {r4-r6}
|
||||
ldr r1, [r3]
|
||||
adds r1, 0xD8
|
||||
adds r0, r2, 0
|
||||
ldm r0!, {r4-r6}
|
||||
stm r1!, {r4-r6}
|
||||
ldm r0!, {r4-r6}
|
||||
stm r1!, {r4-r6}
|
||||
ldr r0, [r3]
|
||||
adds r0, 0xF0
|
||||
ldm r2!, {r1,r3,r4}
|
||||
stm r0!, {r1,r3,r4}
|
||||
ldm r2!, {r1,r5,r6}
|
||||
stm r0!, {r1,r5,r6}
|
||||
b _0803123A
|
||||
.align 2, 0
|
||||
_08031170: .4byte gUnknown_203B328
|
||||
_08031174: .4byte gUnknown_80E0990
|
||||
_08031178:
|
||||
ldr r3, _080311B0
|
||||
ldr r1, [r3]
|
||||
adds r1, 0xC0
|
||||
ldr r0, _080311B4
|
||||
ldm r0!, {r2,r4,r5}
|
||||
stm r1!, {r2,r4,r5}
|
||||
ldm r0!, {r2,r4,r6}
|
||||
stm r1!, {r2,r4,r6}
|
||||
ldr r1, [r3]
|
||||
ldr r2, _080311B8
|
||||
adds r1, 0xD8
|
||||
adds r0, r2, 0
|
||||
ldm r0!, {r4-r6}
|
||||
stm r1!, {r4-r6}
|
||||
ldm r0!, {r4-r6}
|
||||
stm r1!, {r4-r6}
|
||||
ldr r0, [r3]
|
||||
adds r0, 0xF0
|
||||
ldm r2!, {r1,r5,r6}
|
||||
stm r0!, {r1,r5,r6}
|
||||
ldm r2!, {r4-r6}
|
||||
stm r0!, {r4-r6}
|
||||
ldr r0, [r3]
|
||||
adds r0, 0xC0
|
||||
ldr r1, _080311BC
|
||||
bl sub_8012CAC
|
||||
b _0803123A
|
||||
.align 2, 0
|
||||
_080311B0: .4byte gUnknown_203B328
|
||||
_080311B4: .4byte gUnknown_80E09A8
|
||||
_080311B8: .4byte gUnknown_80E0990
|
||||
_080311BC: .4byte gUnknown_80E0968
|
||||
_080311C0:
|
||||
ldr r2, _080311DC
|
||||
ldr r1, [r2]
|
||||
adds r1, 0xD8
|
||||
ldr r0, _080311E0
|
||||
ldm r0!, {r3-r5}
|
||||
stm r1!, {r3-r5}
|
||||
ldm r0!, {r3,r4,r6}
|
||||
stm r1!, {r3,r4,r6}
|
||||
ldr r0, [r2]
|
||||
adds r0, 0xD8
|
||||
ldr r1, _080311E4
|
||||
bl sub_8012CAC
|
||||
b _0803123A
|
||||
.align 2, 0
|
||||
_080311DC: .4byte gUnknown_203B328
|
||||
_080311E0: .4byte gUnknown_80E09C0
|
||||
_080311E4: .4byte gUnknown_80E0948
|
||||
_080311E8:
|
||||
ldr r3, _08031224
|
||||
ldr r1, [r3]
|
||||
ldr r2, _08031228
|
||||
adds r1, 0xA8
|
||||
adds r0, r2, 0
|
||||
ldm r0!, {r4-r6}
|
||||
stm r1!, {r4-r6}
|
||||
ldm r0!, {r4-r6}
|
||||
stm r1!, {r4-r6}
|
||||
ldr r1, [r3]
|
||||
adds r1, 0xC0
|
||||
adds r0, r2, 0
|
||||
ldm r0!, {r4-r6}
|
||||
stm r1!, {r4-r6}
|
||||
ldm r0!, {r4-r6}
|
||||
stm r1!, {r4-r6}
|
||||
ldr r1, [r3]
|
||||
adds r1, 0xD8
|
||||
adds r0, r2, 0
|
||||
ldm r0!, {r4-r6}
|
||||
stm r1!, {r4-r6}
|
||||
ldm r0!, {r4-r6}
|
||||
stm r1!, {r4-r6}
|
||||
ldr r0, [r3]
|
||||
adds r0, 0xF0
|
||||
ldm r2!, {r1,r5,r6}
|
||||
stm r0!, {r1,r5,r6}
|
||||
ldm r2!, {r3-r5}
|
||||
stm r0!, {r3-r5}
|
||||
b _0803123A
|
||||
.align 2, 0
|
||||
_08031224: .4byte gUnknown_203B328
|
||||
_08031228: .4byte gUnknown_80E0990
|
||||
_0803122C:
|
||||
bl ResetUnusedInputStruct
|
||||
movs r0, 0
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
_0803123A:
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, _08031254
|
||||
ldr r0, [r0]
|
||||
adds r0, 0xA8
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08031254: .4byte gUnknown_203B328
|
||||
thumb_func_end sub_80310FC
|
||||
|
||||
thumb_func_start sub_8031258
|
||||
sub_8031258:
|
||||
push {r4,lr}
|
||||
sub sp, 0x8
|
||||
ldr r1, _08031274
|
||||
ldr r0, [r1]
|
||||
ldr r0, [r0]
|
||||
adds r2, r1, 0
|
||||
cmp r0, 0x6
|
||||
bhi _080312F6
|
||||
lsls r0, 2
|
||||
ldr r1, _08031278
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08031274: .4byte gUnknown_203B328
|
||||
_08031278: .4byte _0803127C
|
||||
.align 2, 0
|
||||
_0803127C:
|
||||
.4byte _08031298
|
||||
.4byte _080312A0
|
||||
.4byte _080312BC
|
||||
.4byte _080312BC
|
||||
.4byte _080312EC
|
||||
.4byte _080312F6
|
||||
.4byte _080312F6
|
||||
_08031298:
|
||||
movs r0, 0x1
|
||||
bl sub_8030810
|
||||
b _080312F6
|
||||
_080312A0:
|
||||
bl sub_803092C
|
||||
ldr r0, _080312B4
|
||||
ldr r0, [r0]
|
||||
adds r0, 0x8
|
||||
ldr r1, _080312B8
|
||||
movs r2, 0x4
|
||||
str r2, [sp]
|
||||
movs r2, 0x1
|
||||
b _080312D8
|
||||
.align 2, 0
|
||||
_080312B4: .4byte gUnknown_203B328
|
||||
_080312B8: .4byte gUnknown_80E0968
|
||||
_080312BC:
|
||||
bl sub_803092C
|
||||
ldr r4, _080312E4
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x8
|
||||
movs r1, 0
|
||||
bl sub_8012EA4
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x58
|
||||
ldr r1, _080312E8
|
||||
movs r2, 0x3
|
||||
str r2, [sp]
|
||||
movs r2, 0x2
|
||||
_080312D8:
|
||||
str r2, [sp, 0x4]
|
||||
movs r2, 0
|
||||
movs r3, 0
|
||||
bl sub_8012D60
|
||||
b _080312F6
|
||||
.align 2, 0
|
||||
_080312E4: .4byte gUnknown_203B328
|
||||
_080312E8: .4byte gUnknown_80E0948
|
||||
_080312EC:
|
||||
ldr r0, [r2]
|
||||
ldrb r0, [r0, 0x4]
|
||||
movs r1, 0x3
|
||||
bl sub_8030D40
|
||||
_080312F6:
|
||||
add sp, 0x8
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8031258
|
||||
|
||||
thumb_func_start sub_8031300
|
||||
sub_8031300:
|
||||
push {lr}
|
||||
movs r0, 0x1
|
||||
bl sub_8030768
|
||||
cmp r0, 0x4
|
||||
bhi _08031366
|
||||
lsls r0, 2
|
||||
ldr r1, _08031318
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08031318: .4byte _0803131C
|
||||
.align 2, 0
|
||||
_0803131C:
|
||||
.4byte _08031366
|
||||
.4byte _08031366
|
||||
.4byte _08031360
|
||||
.4byte _08031330
|
||||
.4byte _08031348
|
||||
_08031330:
|
||||
bl sub_80307EC
|
||||
ldr r1, _08031344
|
||||
ldr r1, [r1]
|
||||
strb r0, [r1, 0x4]
|
||||
movs r0, 0x1
|
||||
bl sub_80310E4
|
||||
b _08031366
|
||||
.align 2, 0
|
||||
_08031344: .4byte gUnknown_203B328
|
||||
_08031348:
|
||||
bl sub_80307EC
|
||||
ldr r1, _0803135C
|
||||
ldr r1, [r1]
|
||||
strb r0, [r1, 0x4]
|
||||
movs r0, 0x4
|
||||
bl sub_80310E4
|
||||
b _08031366
|
||||
.align 2, 0
|
||||
_0803135C: .4byte gUnknown_203B328
|
||||
_08031360:
|
||||
movs r0, 0x6
|
||||
bl sub_80310E4
|
||||
_08031366:
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8031300
|
||||
|
||||
thumb_func_start sub_803136C
|
||||
sub_803136C:
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
bl sub_8030768
|
||||
ldr r4, _080313A4
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x8
|
||||
bl sub_8012FD8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08031392
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x8
|
||||
mov r1, sp
|
||||
bl sub_8013114
|
||||
_08031392:
|
||||
ldr r0, [sp]
|
||||
cmp r0, 0x4
|
||||
beq _080313C2
|
||||
cmp r0, 0x4
|
||||
bgt _080313A8
|
||||
cmp r0, 0x1
|
||||
beq _080313B2
|
||||
b _080313D0
|
||||
.align 2, 0
|
||||
_080313A4: .4byte gUnknown_203B328
|
||||
_080313A8:
|
||||
cmp r0, 0x5
|
||||
beq _080313CA
|
||||
cmp r0, 0x6
|
||||
beq _080313BA
|
||||
b _080313D0
|
||||
_080313B2:
|
||||
movs r0, 0
|
||||
bl sub_80310E4
|
||||
b _080313D0
|
||||
_080313BA:
|
||||
movs r0, 0x3
|
||||
bl sub_80310E4
|
||||
b _080313D0
|
||||
_080313C2:
|
||||
movs r0, 0x2
|
||||
bl sub_80310E4
|
||||
b _080313D0
|
||||
_080313CA:
|
||||
movs r0, 0x4
|
||||
bl sub_80310E4
|
||||
_080313D0:
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_803136C
|
||||
|
||||
thumb_func_start sub_80313D8
|
||||
sub_80313D8:
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x4
|
||||
adds r5, r0, 0
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
bl sub_8030768
|
||||
ldr r4, _08031418
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x8
|
||||
bl sub_8012FD8
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x58
|
||||
bl sub_8012FD8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08031408
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x58
|
||||
mov r1, sp
|
||||
bl sub_8013114
|
||||
_08031408:
|
||||
ldr r0, [sp]
|
||||
cmp r0, 0x2
|
||||
beq _08031428
|
||||
cmp r0, 0x2
|
||||
bgt _0803141C
|
||||
cmp r0, 0x1
|
||||
beq _08031420
|
||||
b _0803148E
|
||||
.align 2, 0
|
||||
_08031418: .4byte gUnknown_203B328
|
||||
_0803141C:
|
||||
cmp r0, 0x3
|
||||
bne _0803148E
|
||||
_08031420:
|
||||
movs r0, 0
|
||||
bl sub_80310E4
|
||||
b _0803148E
|
||||
_08031428:
|
||||
cmp r5, 0x2
|
||||
beq _08031432
|
||||
cmp r5, 0x3
|
||||
beq _0803143C
|
||||
b _0803145A
|
||||
_08031432:
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0x4]
|
||||
bl sub_8095240
|
||||
b _0803145A
|
||||
_0803143C:
|
||||
ldr r4, _08031480
|
||||
movs r3, 0
|
||||
movs r1, 0
|
||||
movs r2, 0x1F
|
||||
_08031444:
|
||||
ldr r0, [r4]
|
||||
adds r0, r1
|
||||
strb r3, [r0]
|
||||
ldr r0, [r4]
|
||||
adds r0, r1
|
||||
adds r0, 0x22
|
||||
strb r3, [r0]
|
||||
adds r1, 0x30
|
||||
subs r2, 0x1
|
||||
cmp r2, 0
|
||||
bge _08031444
|
||||
_0803145A:
|
||||
ldr r0, _08031484
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x8C
|
||||
lsls r1, 1
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0x2
|
||||
beq _0803146E
|
||||
cmp r0, 0x4
|
||||
bne _0803148E
|
||||
_0803146E:
|
||||
bl sub_8030C20
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08031488
|
||||
movs r0, 0x5
|
||||
bl sub_80310E4
|
||||
b _0803148E
|
||||
.align 2, 0
|
||||
_08031480: .4byte gUnknown_203B480
|
||||
_08031484: .4byte gUnknown_203B328
|
||||
_08031488:
|
||||
movs r0, 0
|
||||
bl sub_80310E4
|
||||
_0803148E:
|
||||
add sp, 0x4
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80313D8
|
||||
|
||||
.align 2,0
|
||||
|
||||
6
include/code_808417C.h
Normal file
6
include/code_808417C.h
Normal file
@@ -0,0 +1,6 @@
|
||||
#ifndef GUARD_808417C_H
|
||||
#define GUARD_808417C_H
|
||||
|
||||
s32 CalculateStatusTurns(struct DungeonEntity *target, s16 *turnRange, bool8 factorCurerSkills);
|
||||
|
||||
#endif // GUARD_808417C_H
|
||||
@@ -162,7 +162,8 @@ struct DungeonEntityData
|
||||
/* 0xF5 */ bool8 exposedStatus;
|
||||
/* 0xF6 */ bool8 isColorChanged;
|
||||
/* 0xF7 */ bool8 isBoss;
|
||||
u8 fillF8[0xFA - 0xF8];
|
||||
/* 0xF8 */ u8 unkF8;
|
||||
/* 0xF8 */ u8 unkF9;
|
||||
/* 0xFA */ u8 terrifiedTurnsLeft; // Doubles as a bool for whether the Pokémon is terrified.
|
||||
u8 unkFB;
|
||||
// Set to true if the player makes a teammate use their held item.
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
|
||||
#include "dungeon_entity.h"
|
||||
|
||||
bool8 HasSafeguardStatus(struct DungeonEntity * param_1, struct DungeonEntity * param_2, bool8 displayMessage);
|
||||
bool8 sub_80717A4(struct DungeonEntity *pokemon, u16 moveID);
|
||||
bool8 HasAbility(struct DungeonEntity *pokemon, u8 ability);
|
||||
bool8 HasType(struct DungeonEntity *pokemon, u8 type);
|
||||
bool8 CanSeeInvisible(struct DungeonEntity *pokemon);
|
||||
|
||||
@@ -142,7 +142,7 @@ SECTIONS {
|
||||
asm/wonder_mail_4.o(.text);
|
||||
src/wonder_mail_5.o(.text);
|
||||
asm/wonder_mail_5.o(.text);
|
||||
src/wonder_mail_4_1.o(.text);
|
||||
src/wonder_mail_6.o(.text);
|
||||
src/post_office_guide.o(.text);
|
||||
asm/code_8031D70.o(.text);
|
||||
src/adventure_log.o(.text);
|
||||
|
||||
@@ -34,7 +34,7 @@ enum ItemTargetFlag
|
||||
ITEM_TARGET_ALLY = 1 << 1
|
||||
};
|
||||
|
||||
extern void sub_8077274(struct DungeonEntity *, struct DungeonEntity *);
|
||||
extern void UpdateFlashFireBoost(struct DungeonEntity *, struct DungeonEntity *);
|
||||
|
||||
extern s32 gNumPotentialTargets;
|
||||
extern u32 gPotentialItemTargetWeights[NUM_DIRECTIONS];
|
||||
@@ -55,7 +55,7 @@ void sub_807360C(struct DungeonEntity *pokemon)
|
||||
if(entity->entityData->unk152 != 0)
|
||||
{
|
||||
entity->entityData->unk152 = 0;
|
||||
sub_8077274(entity, entity);
|
||||
UpdateFlashFireBoost(entity, entity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,32 +26,32 @@ extern bool8 sub_805744C(struct DungeonEntity *, struct PokemonMove *, u32);
|
||||
extern void SetMessageArgument(char[], struct DungeonEntity*, u32);
|
||||
extern void sub_80522F4(struct DungeonEntity *r1, struct DungeonEntity *r2, u32);
|
||||
|
||||
bool8 sub_80716E8(struct DungeonEntity * param_1, struct DungeonEntity * param_2, u8 param_3)
|
||||
bool8 HasSafeguardStatus(struct DungeonEntity * pokemon, struct DungeonEntity * target, bool8 displayMessage)
|
||||
{
|
||||
if (param_2->entityData->protectionStatus == PROTECTION_STATUS_SAFEGUARD) {
|
||||
if (param_3 != '\0') {
|
||||
SetMessageArgument(gAvailablePokemonNames,param_2,0);
|
||||
sub_80522F4(param_1,param_2,gUnknown_80FC2FC);
|
||||
if (target->entityData->protectionStatus == PROTECTION_STATUS_SAFEGUARD) {
|
||||
if (displayMessage) {
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
sub_80522F4(pokemon,target,gUnknown_80FC2FC);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8071728(struct DungeonEntity * param_1, struct DungeonEntity * param_2, u8 param_3)
|
||||
bool8 sub_8071728(struct DungeonEntity * pokemon, struct DungeonEntity * target, bool8 displayMessage)
|
||||
{
|
||||
if (param_2->entityData->protectionStatus == PROTECTION_STATUS_MIST) {
|
||||
if (param_3 != '\0') {
|
||||
SetMessageArgument(gAvailablePokemonNames, param_2, 0);
|
||||
sub_80522F4(param_1, param_2, gUnknown_80FC31C);
|
||||
if (target->entityData->protectionStatus == PROTECTION_STATUS_MIST) {
|
||||
if (displayMessage) {
|
||||
SetMessageArgument(gAvailablePokemonNames, target, 0);
|
||||
sub_80522F4(pokemon, target, gUnknown_80FC31C);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
else {
|
||||
if (HasAbility(param_2, ABILITY_CLEAR_BODY) || HasAbility(param_2, ABILITY_WHITE_SMOKE)) {
|
||||
if (param_3 != '\0') {
|
||||
SetMessageArgument(gAvailablePokemonNames, param_2, 0);
|
||||
sub_80522F4(param_1, param_2, gUnknown_80FCEFC);
|
||||
if (HasAbility(target, ABILITY_CLEAR_BODY) || HasAbility(target, ABILITY_WHITE_SMOKE)) {
|
||||
if (displayMessage) {
|
||||
SetMessageArgument(gAvailablePokemonNames, target, 0);
|
||||
sub_80522F4(pokemon, target, gUnknown_80FCEFC);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
@@ -59,12 +59,12 @@ bool8 sub_8071728(struct DungeonEntity * param_1, struct DungeonEntity * param_2
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_80717A4(struct DungeonEntity *param_1, u16 moveID)
|
||||
bool8 sub_80717A4(struct DungeonEntity *pokemon, u16 moveID)
|
||||
{
|
||||
struct DungeonEntityData * entityData;
|
||||
s32 iVar3;
|
||||
|
||||
entityData = param_1->entityData;
|
||||
entityData = pokemon->entityData;
|
||||
if ((entityData->sleepStatus != SLEEP_STATUS_SLEEP) && (entityData->sleepStatus != SLEEP_STATUS_NAPPING) && (entityData->sleepStatus != SLEEP_STATUS_NIGHTMARE)) {
|
||||
return FALSE;
|
||||
}
|
||||
@@ -78,7 +78,7 @@ bool8 sub_80717A4(struct DungeonEntity *param_1, u16 moveID)
|
||||
for(iVar3 = 0, pokeMove = entityData->moves, pokeMove2 = pokeMove; iVar3 < MAX_MON_MOVES; pokeMove++, pokeMove2++, iVar3++)
|
||||
{
|
||||
if (((pokeMove->moveFlags & MOVE_FLAG_EXISTS) != 0) && (entityData->isLeader || ((pokeMove->moveFlags & MOVE_FLAG_ENABLED) != 0)))
|
||||
if((sub_805744C(param_1, pokeMove2, 1) != '\0') && (pokeMove->PP != 0))
|
||||
if((sub_805744C(pokemon, pokeMove2, 1) != '\0') && (pokeMove->PP != 0))
|
||||
if(pokeMove->moveID == moveID)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
525
src/status.c
525
src/status.c
@@ -1,9 +1,85 @@
|
||||
#include "global.h"
|
||||
#include "status.h"
|
||||
|
||||
#include "constants/status.h"
|
||||
#include "constants/ability.h"
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
#include "dungeon_ai_targeting.h"
|
||||
#include "dungeon_map_access.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "dungeon_items.h"
|
||||
#include "code_808417C.h"
|
||||
#include "map.h"
|
||||
|
||||
extern u8 gAvailablePokemonNames[];
|
||||
extern u8 gUnknown_202DE58[];
|
||||
|
||||
extern u8 *gUnknown_80FC084[];
|
||||
extern u8 *gUnknown_80FC090[];
|
||||
extern u8 *gUnknown_80FC1C4[];
|
||||
extern u8 *gUnknown_80FC218[];
|
||||
extern u8 *gUnknown_80FD550[];
|
||||
extern u8 *gUnknown_80FCA60[];
|
||||
extern u8 *gUnknown_80FC184[];
|
||||
extern u8 *gUnknown_80FC0B8[];
|
||||
extern u8 *gUnknown_80FC0C8[];
|
||||
extern u8 *gUnknown_80FC118[];
|
||||
extern u8 *gUnknown_80FC11C[];
|
||||
extern u8 *gUnknown_80FC114[];
|
||||
extern u8 *gUnknown_80FC180[];
|
||||
extern u8 *gUnknown_80FC0FC[];
|
||||
extern u8 *gUnknown_80FC0AC[];
|
||||
extern u8 *gUnknown_80FC09C[];
|
||||
extern u8 *gUnknown_80FC1F0[];
|
||||
extern u8 *gUnknown_80FC1A4[];
|
||||
extern u8 *gUnknown_80FCA64[];
|
||||
extern s16 gUnknown_80F4E3C[];
|
||||
extern u8 *gUnknown_80FCC18[];
|
||||
extern u8 *gUnknown_80FB2E0[];
|
||||
extern u8 *gUnknown_80FB300[];
|
||||
extern s16 gUnknown_80F4E50[];
|
||||
extern u8 *gUnknown_80FB2CC[];
|
||||
extern u8 *gUnknown_80FB2AC[];
|
||||
extern u8 *gUnknown_80FF01C[];
|
||||
extern u8 *gUnknown_80FCBF8[];
|
||||
extern s16 gUnknown_80F4E40[];
|
||||
extern u8 *gUnknown_80FA124[];
|
||||
extern u8 *gUnknown_80FC2B8[];
|
||||
extern u8 *gUnknown_80FC298[];
|
||||
extern u8 *gUnknown_80FC2D8[];
|
||||
extern u8 *gUnknown_80FC298[];
|
||||
extern s16 gUnknown_80F4E48[];
|
||||
extern s16 gUnknown_80F4E4C[];
|
||||
extern u8 *gUnknown_80FB27C[];
|
||||
extern u8 *gUnknown_80FB25C[];
|
||||
extern u8 *gUnknown_80FCDB4[];
|
||||
extern u8 *gUnknown_80FD500[];
|
||||
extern s16 gUnknown_80F4ECC[];
|
||||
extern u8 *gUnknown_80FB960[];
|
||||
extern u8 *gUnknown_80FB940[];
|
||||
|
||||
extern void sub_8041BF8(struct DungeonEntity *);
|
||||
extern void sub_8041BE8(struct DungeonEntity *);
|
||||
extern void sub_8041CCC(struct DungeonEntity *);
|
||||
extern void sub_8041CB8(struct DungeonEntity *r0);
|
||||
extern void sub_8041C1C(struct DungeonEntity *r0);
|
||||
extern s32 GetMovementSpeed(struct DungeonEntity *);
|
||||
|
||||
extern void sub_8042060(struct DungeonEntity *, s32);
|
||||
extern bool8 sub_8071728(struct DungeonEntity * param_1, struct DungeonEntity * param_2, u8 param_3);
|
||||
extern void sub_8041FB4(struct DungeonEntity *r0, u32 r1);
|
||||
extern void sub_8041FD8(struct DungeonEntity *r0, u32 r1);
|
||||
extern void sub_80522F4(struct DungeonEntity *r1, struct DungeonEntity *r2, u8 *);
|
||||
extern s32 sub_8009DA4(s32, s32);
|
||||
|
||||
extern void sub_804201C(struct DungeonEntity *r0, u32 r1);
|
||||
extern void sub_8041FFC(struct DungeonEntity *r0, u32 r1);
|
||||
|
||||
extern void SetMessageArgument(char[], struct DungeonEntity*, u32);
|
||||
extern void SetMessageArgument_2(char[], struct DungeonEntityData*, u32);
|
||||
extern void sub_8041C58(struct DungeonEntity *r0);
|
||||
extern void DungeonEntityUpdateStatusSprites(struct DungeonEntity *);
|
||||
extern void sub_8042040(struct DungeonEntity *, s32);
|
||||
extern void sub_80420A0(struct DungeonEntity *);
|
||||
|
||||
u8 GetFlashFireStatus(struct DungeonEntity *pokemon)
|
||||
{
|
||||
@@ -17,3 +93,450 @@ u8 GetFlashFireStatus(struct DungeonEntity *pokemon)
|
||||
}
|
||||
return FLASH_FIRE_STATUS_NOT_MAXED;
|
||||
}
|
||||
|
||||
static inline s32 UpdateFlashFireBoost_sub(struct DungeonEntityData * entityData)
|
||||
{
|
||||
s32 flashFireBoost;
|
||||
|
||||
flashFireBoost = entityData->flashFireBoost;
|
||||
flashFireBoost++;
|
||||
if (FLASH_FIRE_STATUS_MAXED < flashFireBoost) {
|
||||
flashFireBoost = FLASH_FIRE_STATUS_NOT_MAXED;
|
||||
}
|
||||
return flashFireBoost;
|
||||
}
|
||||
|
||||
void UpdateFlashFireBoost(struct DungeonEntity * pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
struct DungeonEntityData * entityData;
|
||||
struct DungeonEntityData * entityData_1;
|
||||
s32 flashFireBoost;
|
||||
|
||||
if (EntityExists(target)) {
|
||||
entityData = target->entityData;
|
||||
entityData_1 = entityData;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
flashFireBoost = UpdateFlashFireBoost_sub(entityData);
|
||||
if (entityData_1->flashFireBoost != flashFireBoost) {
|
||||
entityData_1->flashFireBoost = flashFireBoost;
|
||||
sub_8041C58(target);
|
||||
}
|
||||
DungeonEntityUpdateStatusSprites(target);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80772C0(struct DungeonEntity *pokemon, struct DungeonEntity *target, u32 statStage, s32 param_4, bool8 displayMessage)
|
||||
{
|
||||
struct DungeonEntityData *entityData;
|
||||
s32 oldMulti;
|
||||
|
||||
if (!EntityExists(target)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (statStage != STAT_STAGE_ATTACK) {
|
||||
strcpy(gUnknown_202DE58,*gUnknown_80FC0C8);
|
||||
}
|
||||
else {
|
||||
strcpy(gUnknown_202DE58,*gUnknown_80FC0B8);
|
||||
}
|
||||
if ((param_4 < 0x100) && sub_8071728(pokemon,target,displayMessage)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ((HasItem(target,ITEM_ID_TWIST_BAND)) && (param_4 < 0x100)) {
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FD550);
|
||||
return;
|
||||
}
|
||||
|
||||
if (HasAbility(target, ABILITY_HYPER_CUTTER) && (statStage == STAT_STAGE_ATTACK) && (param_4 < 0x100)) {
|
||||
if (displayMessage) {
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FCA60);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
entityData = target->entityData;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
oldMulti = entityData->attackMultipliers[statStage];
|
||||
|
||||
if (param_4 < 0x100) {
|
||||
sub_8041FD8(target,statStage);
|
||||
}
|
||||
else {
|
||||
sub_8041FB4(target,statStage);
|
||||
}
|
||||
|
||||
entityData->attackMultipliers[statStage] = sub_8009DA4(entityData->attackMultipliers[statStage],param_4);
|
||||
|
||||
if (entityData->attackMultipliers[statStage] < 2) {
|
||||
entityData->attackMultipliers[statStage] = 2;
|
||||
}
|
||||
if (0x63fd < entityData->attackMultipliers[statStage]) {
|
||||
entityData->attackMultipliers[statStage] = 0x63fd; // 25597
|
||||
}
|
||||
if (oldMulti > entityData->attackMultipliers[statStage]) {
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FC11C);
|
||||
}
|
||||
else if (oldMulti < entityData->attackMultipliers[statStage]) {
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FC118);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FC184);
|
||||
}
|
||||
DungeonEntityUpdateStatusSprites(target);
|
||||
}
|
||||
|
||||
void sub_8077434(struct DungeonEntity *pokemon, struct DungeonEntity *target, u32 statStage, s32 param_4, bool8 displayMessage)
|
||||
{
|
||||
struct DungeonEntityData *entityData;
|
||||
s32 oldMulti;
|
||||
|
||||
if (!EntityExists(target)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (statStage != STAT_STAGE_DEFENSE) {
|
||||
strcpy(gUnknown_202DE58,*gUnknown_80FC0AC);
|
||||
}
|
||||
else {
|
||||
strcpy(gUnknown_202DE58,*gUnknown_80FC09C);
|
||||
}
|
||||
if ((param_4 < 0x100) && sub_8071728(pokemon,target,displayMessage)) {
|
||||
return;
|
||||
}
|
||||
|
||||
entityData = target->entityData;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
oldMulti = entityData->defenseMultipliers[statStage];
|
||||
|
||||
if (param_4 < 0x100) {
|
||||
sub_804201C(target,statStage);
|
||||
}
|
||||
else {
|
||||
sub_8041FFC(target,statStage);
|
||||
}
|
||||
|
||||
entityData->defenseMultipliers[statStage] = sub_8009DA4(entityData->defenseMultipliers[statStage],param_4);
|
||||
|
||||
if (entityData->defenseMultipliers[statStage] < 2) {
|
||||
entityData->defenseMultipliers[statStage] = 2;
|
||||
}
|
||||
if (0x63fd < entityData->defenseMultipliers[statStage]) {
|
||||
entityData->defenseMultipliers[statStage] = 0x63fd; // 25597
|
||||
}
|
||||
if (oldMulti > entityData->defenseMultipliers[statStage]) {
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FC114);
|
||||
}
|
||||
else if (oldMulti < entityData->defenseMultipliers[statStage]) {
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FC0FC);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FC180);
|
||||
}
|
||||
DungeonEntityUpdateStatusSprites(target);
|
||||
}
|
||||
|
||||
void sub_8077540(struct DungeonEntity * pokemon, struct DungeonEntity * target, s32 statStage)
|
||||
{
|
||||
struct DungeonEntityData *entityData;
|
||||
|
||||
if (EntityExists(target)) {
|
||||
entityData = target->entityData;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
sub_8042040(target,statStage);
|
||||
if (statStage != STAT_STAGE_ACCURACY) {
|
||||
strcpy(gUnknown_202DE58,*gUnknown_80FC090);
|
||||
}
|
||||
else {
|
||||
strcpy(gUnknown_202DE58,*gUnknown_80FC084);
|
||||
}
|
||||
if (entityData->accuracyStages[statStage] < MAX_STAT_STAGE) {
|
||||
entityData->accuracyStages[statStage]++;
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FC1C4);
|
||||
}
|
||||
else {
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FC218);
|
||||
}
|
||||
DungeonEntityUpdateStatusSprites(target);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80775DC(struct DungeonEntity * pokemon, struct DungeonEntity * target, s32 statStage, bool8 displayMessage)
|
||||
{
|
||||
struct DungeonEntityData *entityData;
|
||||
|
||||
if (EntityExists(target)) {
|
||||
if (statStage != STAT_STAGE_ACCURACY) {
|
||||
strcpy(gUnknown_202DE58,*gUnknown_80FC090);
|
||||
}
|
||||
else {
|
||||
strcpy(gUnknown_202DE58,*gUnknown_80FC084);
|
||||
}
|
||||
if (!sub_8071728(pokemon,target,displayMessage)) {
|
||||
if (HasAbility(target, ABILITY_KEEN_EYE) && (statStage == STAT_STAGE_ACCURACY)){
|
||||
if(displayMessage)
|
||||
{
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FCA64);
|
||||
}
|
||||
}
|
||||
else {
|
||||
entityData = target->entityData;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
sub_8042060(target,statStage);
|
||||
if (entityData->accuracyStages[statStage] != 0) {
|
||||
entityData->accuracyStages[statStage]--;
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FC1A4);
|
||||
}
|
||||
else {
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FC1F0);
|
||||
}
|
||||
DungeonEntityUpdateStatusSprites(target);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80776C0(struct DungeonEntity * pokemon,struct DungeonEntity * target, bool8 displayMessage)
|
||||
{
|
||||
struct DungeonEntityData *entityData;
|
||||
|
||||
if (EntityExists(target)) {
|
||||
if (!HasSafeguardStatus(pokemon, target, displayMessage)) {
|
||||
if (HasAbility(target, ABILITY_INNER_FOCUS)){
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
if(displayMessage)
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FCC18);
|
||||
}
|
||||
else {
|
||||
entityData = target->entityData;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
if(entityData->volatileStatus != VOLATILE_STATUS_CRINGING)
|
||||
{
|
||||
entityData->volatileStatus = VOLATILE_STATUS_CRINGING;
|
||||
entityData->volatileStatusTurnsLeft = CalculateStatusTurns(target, gUnknown_80F4E3C, TRUE) + 1;
|
||||
sub_80420A0(target);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB2E0);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB300);
|
||||
}
|
||||
DungeonEntityUpdateStatusSprites(target);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8077780(struct DungeonEntity * pokemon, struct DungeonEntity * target, bool8 displayMessage)
|
||||
{
|
||||
struct MapTile *mapTile;
|
||||
register struct DungeonEntityData *entityData;
|
||||
struct DungeonEntity *mapPokemonEntity;
|
||||
int index;
|
||||
bool8 bVar6;
|
||||
bool8 bVar7;
|
||||
|
||||
if ((EntityExists(target)) && (!HasSafeguardStatus(pokemon,target,displayMessage))) {
|
||||
if (HasAbility(target, ABILITY_LIMBER)) {
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
if (displayMessage) {
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FCBF8);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
bVar6 = TRUE;
|
||||
entityData = target->entityData;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
if (entityData->nonVolatileStatus != NON_VOLATILE_STATUS_PARALYZED) {
|
||||
entityData->nonVolatileStatus = NON_VOLATILE_STATUS_PARALYZED;
|
||||
entityData->nonVolatileStatusTurnsLeft = CalculateStatusTurns(target,gUnknown_80F4E50,1) + 1;
|
||||
entityData->nonVolatileStatusDamageTimer = 0;
|
||||
entityData->fillAF = 0;
|
||||
bVar6 = FALSE;
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB2AC);
|
||||
sub_8041C1C(target);
|
||||
GetMovementSpeed(target);
|
||||
}
|
||||
else {
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB2CC);
|
||||
}
|
||||
if ((HasAbility(target, ABILITY_SYNCHRONIZE)) && (!bVar6)) {
|
||||
bVar7 = FALSE;
|
||||
|
||||
for(index = 0; index < NUM_DIRECTIONS; index++)
|
||||
{
|
||||
mapTile = GetMapTile_1(target->posWorld.x + gAdjacentTileOffsets[index].x,target->posWorld.y + gAdjacentTileOffsets[index].y);
|
||||
mapPokemonEntity = mapTile->pokemon;
|
||||
if ((EntityExists(mapPokemonEntity)) && (GetEntityType(mapPokemonEntity) == ENTITY_POKEMON)) {
|
||||
if (!bVar7) {
|
||||
bVar7 = TRUE;
|
||||
SetMessageArgument_2(gAvailablePokemonNames,entityData,0);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FF01C);
|
||||
}
|
||||
if (sub_807167C(target,mapPokemonEntity) == 1) {
|
||||
sub_8077780(pokemon, mapPokemonEntity, displayMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
DungeonEntityUpdateStatusSprites(target);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8077910(struct DungeonEntity * pokemon, struct DungeonEntity * target, s32 turns, bool8 diplayMessage)
|
||||
{
|
||||
s32 movSpeed;
|
||||
s32 index;
|
||||
s32 movSpeed_1;
|
||||
struct DungeonEntityData *entityData;
|
||||
|
||||
if (!EntityExists(target)) {
|
||||
return;
|
||||
}
|
||||
if (turns == 0) {
|
||||
turns = CalculateStatusTurns(target,gUnknown_80F4E40,0) + 1;
|
||||
}
|
||||
entityData = target->entityData;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
movSpeed = GetMovementSpeed(target);
|
||||
if (movSpeed == 4) {
|
||||
if (diplayMessage)
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FC2B8);
|
||||
}
|
||||
else {
|
||||
for(index = 0; index < NUM_SPEED_TURN_COUNTERS; index++)
|
||||
{
|
||||
if(entityData->speedUpTurnsLeft[index] == 0)
|
||||
{
|
||||
entityData->speedUpTurnsLeft[index] = turns;
|
||||
break;
|
||||
}
|
||||
}
|
||||
movSpeed_1 = GetMovementSpeed(target);
|
||||
if (movSpeed == movSpeed_1) {
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FC298);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_8041CB8(target);
|
||||
sub_80522F4(pokemon,target,gUnknown_80FA124[movSpeed_1]);
|
||||
entityData->unkF8 = 1;
|
||||
entityData->attacking = FALSE;
|
||||
}
|
||||
}
|
||||
DungeonEntityUpdateStatusSprites(target);
|
||||
}
|
||||
|
||||
void sub_80779F0(struct DungeonEntity * pokemon, struct DungeonEntity * target, s32 param_3, bool8 displayMessage)
|
||||
{
|
||||
s32 movSpeed;
|
||||
s32 iVar4;
|
||||
s32 index;
|
||||
s32 movSpeed_1;
|
||||
struct DungeonEntityData *entityData;
|
||||
|
||||
if (!EntityExists(target)) {
|
||||
return;
|
||||
}
|
||||
if (HasSafeguardStatus(pokemon,target,displayMessage)) {
|
||||
return;
|
||||
}
|
||||
entityData = target->entityData;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
movSpeed = GetMovementSpeed(target);
|
||||
if (movSpeed == 0) {
|
||||
if (displayMessage)
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FC2D8);
|
||||
}
|
||||
else {
|
||||
for(iVar4 = 0; iVar4 < param_3; iVar4++)
|
||||
{
|
||||
for(index = 0; index < NUM_SPEED_TURN_COUNTERS; index++)
|
||||
{
|
||||
if (entityData->slowTurnsLeft[index]== 0) {
|
||||
entityData->slowTurnsLeft[index] = CalculateStatusTurns(target,gUnknown_80F4E48,1) + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
movSpeed_1 = GetMovementSpeed(target);
|
||||
if (movSpeed == movSpeed_1) {
|
||||
if (displayMessage)
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FC298);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_8041CCC(target);
|
||||
sub_80522F4(pokemon,target,gUnknown_80FA124[movSpeed_1]);
|
||||
}
|
||||
}
|
||||
DungeonEntityUpdateStatusSprites(target);
|
||||
}
|
||||
|
||||
void sub_8077AE4(struct DungeonEntity * pokemon, struct DungeonEntity * target, bool8 displayMessage)
|
||||
{
|
||||
struct DungeonEntityData *entityData;
|
||||
|
||||
if (!EntityExists(target)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (HasSafeguardStatus(pokemon,target,displayMessage)) {
|
||||
return;
|
||||
}
|
||||
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
if (HasItem(target,ITEM_ID_PERSIM_BAND)) {
|
||||
if (displayMessage)
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FD500);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (HasAbility(target, ABILITY_OWN_TEMPO)) {
|
||||
if (displayMessage)
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FCDB4);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_8041BE8(target);
|
||||
entityData = target->entityData;
|
||||
if (entityData->volatileStatus != VOLATILE_STATUS_CONFUSED) {
|
||||
entityData->volatileStatus = VOLATILE_STATUS_CONFUSED;
|
||||
entityData->volatileStatusTurnsLeft = CalculateStatusTurns(target,gUnknown_80F4E4C,1) + 1;
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB25C);
|
||||
}
|
||||
else {
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB27C);
|
||||
}
|
||||
DungeonEntityUpdateStatusSprites(target);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8077BB4(struct DungeonEntity * pokemon, struct DungeonEntity * target, bool8 displayMessage)
|
||||
{
|
||||
struct DungeonEntityData *iVar3;
|
||||
|
||||
if ((EntityExists(target)) && (!HasSafeguardStatus(pokemon,target,displayMessage))) {
|
||||
iVar3 = target->entityData;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
if (iVar3->volatileStatus != 4) {
|
||||
iVar3->volatileStatus = 4;
|
||||
iVar3->volatileStatusTurnsLeft = CalculateStatusTurns(target,gUnknown_80F4ECC,1) + 1;
|
||||
sub_8041BF8(target);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB940);
|
||||
}
|
||||
else {
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB960);
|
||||
}
|
||||
DungeonEntityUpdateStatusSprites(target);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ struct unkStruct_203B320
|
||||
// size: 0xC4
|
||||
u8 unk0[4];
|
||||
u8 fill4[0x20 - 4];
|
||||
u32 unk20;
|
||||
u32 wonderMailMode;
|
||||
u32 unk24;
|
||||
u8 fill28[0x3C - 0x28];
|
||||
s16 unk3C;
|
||||
@@ -67,12 +67,12 @@ extern void sub_80073B8(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern void CreateRescueTitle(void *);
|
||||
|
||||
u32 sub_80306A8(u32 r0, u32 r1, struct UnkTextStruct2_sub *r2, u32 r3)
|
||||
u32 sub_80306A8(u32 wonderMailMode, u32 r1, struct UnkTextStruct2_sub *r2, u32 r3)
|
||||
{
|
||||
if(sub_8030C20(r0))
|
||||
if(sub_8030C20(wonderMailMode))
|
||||
return 0;
|
||||
gUnknown_203B320 = MemoryAlloc(sizeof(struct unkStruct_203B320), 0x8);
|
||||
gUnknown_203B320->unk20 = r0;
|
||||
gUnknown_203B320->wonderMailMode = wonderMailMode;
|
||||
gUnknown_203B320->unk58 = r1;
|
||||
|
||||
gUnknown_203B320->unk5C = &gUnknown_203B320->unk60[gUnknown_203B320->unk58];
|
||||
@@ -246,7 +246,7 @@ void sub_803092C(void)
|
||||
r4 = gUnknown_203B320->unk42 * 8;
|
||||
r5 = r4;
|
||||
r5 += 10;
|
||||
xxx_call_draw_string(r5,0,gUnknown_80E086C[gUnknown_203B320->unk20],gUnknown_203B320->unk58,0);
|
||||
xxx_call_draw_string(r5,0,gUnknown_80E086C[gUnknown_203B320->wonderMailMode],gUnknown_203B320->unk58,0);
|
||||
r4 += 4;
|
||||
r5 = r4 + gUnknown_203B320->unkC0[2] * 8;
|
||||
sub_8012BC4(r5,0,gUnknown_203B320->unk42 + 1,1,7,gUnknown_203B320->unk58);
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
#include "global.h"
|
||||
|
||||
extern u32 sub_8030DA0(void);
|
||||
extern void sub_8030DE4();
|
||||
extern void sub_80310E4(u32);
|
||||
|
||||
|
||||
void sub_8031498(void)
|
||||
{
|
||||
switch(sub_8030DA0())
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
sub_8030DE4();
|
||||
sub_80310E4(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
struct unkStruct_203B324
|
||||
{
|
||||
// size: 0x78
|
||||
u8 fill0[0xC];
|
||||
u8 unkC;
|
||||
u32 unk10;
|
||||
@@ -26,7 +27,7 @@ void sub_8030E48(void);
|
||||
|
||||
bool8 sub_8030D40(u8 param_1, s32 param_2)
|
||||
{
|
||||
gUnknown_203B324 = MemoryAlloc(0x78,8);
|
||||
gUnknown_203B324 = MemoryAlloc(sizeof(struct unkStruct_203B324), 8);
|
||||
gUnknown_203B324->unkC = param_1;
|
||||
sub_801317C(gUnknown_203B324);
|
||||
gUnknown_203B324->unk10 = param_2;
|
||||
|
||||
427
src/wonder_mail_6.c
Normal file
427
src/wonder_mail_6.c
Normal file
@@ -0,0 +1,427 @@
|
||||
#include "global.h"
|
||||
#include "memory.h"
|
||||
#include "input.h"
|
||||
#include "file_system.h"
|
||||
#include "text.h"
|
||||
#include "pokemon.h"
|
||||
#include "menu.h"
|
||||
#include "code_8094F88.h"
|
||||
|
||||
extern bool8 sub_8030C20(u32);
|
||||
|
||||
struct unkStruct_203B328
|
||||
{
|
||||
// size: 0x11C
|
||||
u32 state;
|
||||
u8 unk4;
|
||||
u32 unk8;
|
||||
u8 fillC[0x58 - 0xC];
|
||||
u32 unk58;
|
||||
u8 fill5C[0xA8 - 0x5C];
|
||||
struct UnkTextStruct2 unkA8[4];
|
||||
/* 0x108 */ struct OpenedFile *faceFile;
|
||||
/* 0x10C */ u8 *faceData;
|
||||
u16 unk110;
|
||||
u16 unk112;
|
||||
/* 0x114 */ u8 unk114;
|
||||
/* 0x115 */ u8 unk115;
|
||||
/* 0x116 */ u8 unk116;
|
||||
u32 wonderMailMode;
|
||||
};
|
||||
extern struct unkStruct_203B328 *gUnknown_203B328;
|
||||
extern struct unkStruct_203B480 *gUnknown_203B480;
|
||||
|
||||
extern u8 gUnknown_80E0A0C[];
|
||||
extern u8 gUnknown_80E09D8[];
|
||||
|
||||
extern struct UnkTextStruct2 gUnknown_80E0990;
|
||||
extern struct UnkTextStruct2 gUnknown_80E09A8;
|
||||
extern struct MenuItem gUnknown_80E0968;
|
||||
extern struct UnkTextStruct2 gUnknown_80E09C0;
|
||||
extern struct MenuItem gUnknown_80E0948;
|
||||
|
||||
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
|
||||
extern void sub_80306A8(s32, u32, u32, u32);
|
||||
extern void sub_80141B4(char *r0, u32, struct OpenedFile **r1, u32);
|
||||
extern void sub_8031300(void);
|
||||
extern void sub_803136C(void);
|
||||
extern void sub_80313D8(u32);
|
||||
extern void sub_8031498(void);
|
||||
extern void sub_803084C(void);
|
||||
extern void sub_80310FC();
|
||||
extern void sub_8031258();
|
||||
extern u32 sub_8030768(u32);
|
||||
extern u8 sub_80307EC(void);
|
||||
extern u32 sub_8030DA0(void);
|
||||
extern void sub_8030DE4();
|
||||
|
||||
extern void sub_8030810(u32);
|
||||
extern void sub_803092C(void);
|
||||
extern void sub_8030D40(u8, u32);
|
||||
extern void sub_8012EA4(u32 *, u32);
|
||||
extern void sub_8012D60(u32 *, struct MenuItem *, u32, u32, u32, u32);
|
||||
extern u8 sub_8012FD8(u32 *);
|
||||
extern void sub_8013114(u32 *, s32 *);
|
||||
extern void sub_8095240(u8);
|
||||
|
||||
bool8 sub_8030F58(u32 wonderMailMode)
|
||||
{
|
||||
struct OpenedFile *iVar3;
|
||||
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0,1,1);
|
||||
if (gUnknown_203B328 == NULL) {
|
||||
gUnknown_203B328 = MemoryAlloc(sizeof(struct unkStruct_203B328),8);
|
||||
MemoryFill8((u8 *)gUnknown_203B328,0,sizeof(struct unkStruct_203B328));
|
||||
}
|
||||
gUnknown_203B328->wonderMailMode = wonderMailMode;
|
||||
iVar3 = GetDialogueSpriteDataPtr(0x130);
|
||||
gUnknown_203B328->faceFile = iVar3;
|
||||
gUnknown_203B328->faceData = iVar3->data;
|
||||
gUnknown_203B328->unk114 = 0;
|
||||
gUnknown_203B328->unk115 = 0;
|
||||
gUnknown_203B328->unk116 = 0;
|
||||
gUnknown_203B328->unk110 = 2;
|
||||
gUnknown_203B328->unk112 = 8;
|
||||
|
||||
if (sub_8030C20(wonderMailMode)) {
|
||||
switch(wonderMailMode)
|
||||
{
|
||||
case 2:
|
||||
// "You don{APOSTROPHE}t have any {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1}.\0"
|
||||
sub_80141B4(gUnknown_80E09D8,0,&gUnknown_203B328->faceFile,0x101);
|
||||
break;
|
||||
case 4:
|
||||
// "You don{APOSTROPHE}t have any {COLOR_1 LIGHT_BLUE_2}A-OK Mail{END_COLOR_TEXT_1}.\0"
|
||||
sub_80141B4(gUnknown_80E0A0C,0,&gUnknown_203B328->faceFile,0x101);
|
||||
break;
|
||||
}
|
||||
gUnknown_203B328->state = 5;
|
||||
}
|
||||
else {
|
||||
gUnknown_203B328->state = 0;
|
||||
sub_80306A8(wonderMailMode,0,0,8);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
s32 sub_8031050(void)
|
||||
{
|
||||
switch(gUnknown_203B328->state)
|
||||
{
|
||||
case 0:
|
||||
sub_8031300();
|
||||
break;
|
||||
case 1:
|
||||
sub_803136C();
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
sub_80313D8(gUnknown_203B328->state);
|
||||
break;
|
||||
case 4:
|
||||
sub_8031498();
|
||||
break;
|
||||
case 5:
|
||||
case 6:
|
||||
return 3;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_80310B4(void)
|
||||
{
|
||||
sub_803084C();
|
||||
if (gUnknown_203B328 != NULL) {
|
||||
CloseFile(gUnknown_203B328->faceFile);
|
||||
MemoryFree(gUnknown_203B328);
|
||||
gUnknown_203B328 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80310E4(u32 newState)
|
||||
{
|
||||
gUnknown_203B328->state = newState;
|
||||
sub_80310FC();
|
||||
sub_8031258();
|
||||
}
|
||||
|
||||
void sub_80310FC(void)
|
||||
{
|
||||
sub_8006518(gUnknown_203B328->unkA8);
|
||||
switch(gUnknown_203B328->state)
|
||||
{
|
||||
case 0:
|
||||
gUnknown_203B328->unkA8[1] = gUnknown_80E0990;
|
||||
gUnknown_203B328->unkA8[2] = gUnknown_80E0990;
|
||||
gUnknown_203B328->unkA8[3] = gUnknown_80E0990;
|
||||
break;
|
||||
case 1:
|
||||
gUnknown_203B328->unkA8[1] = gUnknown_80E09A8;
|
||||
gUnknown_203B328->unkA8[2] = gUnknown_80E0990;
|
||||
gUnknown_203B328->unkA8[3] = gUnknown_80E0990;
|
||||
sub_8012CAC(&gUnknown_203B328->unkA8[1], &gUnknown_80E0968);
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
gUnknown_203B328->unkA8[2] = gUnknown_80E09C0;
|
||||
sub_8012CAC(&gUnknown_203B328->unkA8[2], &gUnknown_80E0948);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B328->unkA8[0] = gUnknown_80E0990;
|
||||
gUnknown_203B328->unkA8[1] = gUnknown_80E0990;
|
||||
gUnknown_203B328->unkA8[2] = gUnknown_80E0990;
|
||||
gUnknown_203B328->unkA8[3] = gUnknown_80E0990;
|
||||
break;
|
||||
case 5:
|
||||
case 6:
|
||||
default:
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0, 1, 1);
|
||||
break;
|
||||
}
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B328->unkA8, 1, 1);
|
||||
}
|
||||
|
||||
void sub_8031258(void)
|
||||
{
|
||||
switch(gUnknown_203B328->state)
|
||||
{
|
||||
case 0:
|
||||
sub_8030810(1);
|
||||
break;
|
||||
case 1:
|
||||
sub_803092C();
|
||||
sub_8012D60(&gUnknown_203B328->unk8, &gUnknown_80E0968, 0, 0, 4, 1);
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
sub_803092C();
|
||||
sub_8012EA4(&gUnknown_203B328->unk8, 0);
|
||||
sub_8012D60(&gUnknown_203B328->unk58, &gUnknown_80E0948, 0, 0, 3, 2);
|
||||
break;
|
||||
case 4:
|
||||
sub_8030D40(gUnknown_203B328->unk4, 3);
|
||||
break;
|
||||
case 5:
|
||||
case 6:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8031300(void)
|
||||
{
|
||||
switch(sub_8030768(1))
|
||||
{
|
||||
case 3:
|
||||
gUnknown_203B328->unk4 = sub_80307EC();
|
||||
sub_80310E4(1);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B328->unk4 = sub_80307EC();
|
||||
sub_80310E4(4);
|
||||
break;
|
||||
case 2:
|
||||
sub_80310E4(6);
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_803136C(void)
|
||||
{
|
||||
s32 local_c;
|
||||
|
||||
local_c = 0;
|
||||
sub_8030768(0);
|
||||
if (sub_8012FD8(&gUnknown_203B328->unk8) == '\0') {
|
||||
sub_8013114(&gUnknown_203B328->unk8,&local_c);
|
||||
}
|
||||
|
||||
switch(local_c)
|
||||
{
|
||||
case 1:
|
||||
sub_80310E4(0);
|
||||
break;
|
||||
case 6:
|
||||
sub_80310E4(3);
|
||||
break;
|
||||
case 4:
|
||||
sub_80310E4(2);
|
||||
break;
|
||||
case 5:
|
||||
sub_80310E4(4);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
void sub_80313D8(u32 param_1)
|
||||
{
|
||||
s32 iVar2;
|
||||
s32 local_10;
|
||||
|
||||
local_10 = 0;
|
||||
sub_8030768(0);
|
||||
sub_8012FD8(&gUnknown_203B328->unk8);
|
||||
if (sub_8012FD8(&gUnknown_203B328->unk58) == '\0') {
|
||||
sub_8013114(&gUnknown_203B328->unk58,&local_10);
|
||||
}
|
||||
|
||||
switch(local_10)
|
||||
{
|
||||
case 1:
|
||||
case 3:
|
||||
sub_80310E4(0);
|
||||
break;
|
||||
case 2:
|
||||
switch(param_1)
|
||||
{
|
||||
case 2:
|
||||
sub_8095240(gUnknown_203B328->unk4);
|
||||
break;
|
||||
case 3:
|
||||
for(iVar2 = 0; iVar2 < 0x20; iVar2++)
|
||||
{
|
||||
gUnknown_203B480[iVar2].unk0 = 0;
|
||||
gUnknown_203B480[iVar2].unk22 = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if ((gUnknown_203B328->wonderMailMode == 2) || (gUnknown_203B328->wonderMailMode == 4)) {
|
||||
if (sub_8030C20(gUnknown_203B328->wonderMailMode) != '\0') {
|
||||
sub_80310E4(5);
|
||||
}
|
||||
else {
|
||||
sub_80310E4(0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void sub_80313D8(u32 param_1)
|
||||
{
|
||||
asm_unified(
|
||||
"\tpush {r4,r5,lr}\n"
|
||||
"\tsub sp, 0x4\n"
|
||||
"\tadds r5, r0, 0\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tstr r0, [sp]\n"
|
||||
"\tbl sub_8030768\n"
|
||||
"\tldr r4, _08031418\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x8\n"
|
||||
"\tbl sub_8012FD8\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x58\n"
|
||||
"\tbl sub_8012FD8\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbne _08031408\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x58\n"
|
||||
"\tmov r1, sp\n"
|
||||
"\tbl sub_8013114\n"
|
||||
"_08031408:\n"
|
||||
"\tldr r0, [sp]\n"
|
||||
"\tcmp r0, 0x2\n"
|
||||
"\tbeq _08031428\n"
|
||||
"\tcmp r0, 0x2\n"
|
||||
"\tbgt _0803141C\n"
|
||||
"\tcmp r0, 0x1\n"
|
||||
"\tbeq _08031420\n"
|
||||
"\tb _0803148E\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08031418: .4byte gUnknown_203B328\n"
|
||||
"_0803141C:\n"
|
||||
"\tcmp r0, 0x3\n"
|
||||
"\tbne _0803148E\n"
|
||||
"_08031420:\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tbl sub_80310E4\n"
|
||||
"\tb _0803148E\n"
|
||||
"_08031428:\n"
|
||||
"\tcmp r5, 0x2\n"
|
||||
"\tbeq _08031432\n"
|
||||
"\tcmp r5, 0x3\n"
|
||||
"\tbeq _0803143C\n"
|
||||
"\tb _0803145A\n"
|
||||
"_08031432:\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldrb r0, [r0, 0x4]\n"
|
||||
"\tbl sub_8095240\n"
|
||||
"\tb _0803145A\n"
|
||||
"_0803143C:\n"
|
||||
"\tldr r4, _08031480\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tmovs r2, 0x1F\n"
|
||||
"_08031444:\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tstrb r3, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tadds r0, 0x22\n"
|
||||
"\tstrb r3, [r0]\n"
|
||||
"\tadds r1, 0x30\n"
|
||||
"\tsubs r2, 0x1\n"
|
||||
"\tcmp r2, 0\n"
|
||||
"\tbge _08031444\n"
|
||||
"_0803145A:\n"
|
||||
"\tldr r0, _08031484\n"
|
||||
"\tldr r0, [r0]\n"
|
||||
"\tmovs r1, 0x8C\n"
|
||||
"\tlsls r1, 1\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tldr r0, [r0]\n"
|
||||
"\tcmp r0, 0x2\n"
|
||||
"\tbeq _0803146E\n"
|
||||
"\tcmp r0, 0x4\n"
|
||||
"\tbne _0803148E\n"
|
||||
"_0803146E:\n"
|
||||
"\tbl sub_8030C20\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _08031488\n"
|
||||
"\tmovs r0, 0x5\n"
|
||||
"\tbl sub_80310E4\n"
|
||||
"\tb _0803148E\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08031480: .4byte gUnknown_203B480\n"
|
||||
"_08031484: .4byte gUnknown_203B328\n"
|
||||
"_08031488:\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tbl sub_80310E4\n"
|
||||
"_0803148E:\n"
|
||||
"\tadd sp, 0x4\n"
|
||||
"\tpop {r4,r5}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0"
|
||||
);
|
||||
}
|
||||
#endif
|
||||
|
||||
void sub_8031498(void)
|
||||
{
|
||||
switch(sub_8030DA0())
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
sub_8030DE4();
|
||||
sub_80310E4(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user