mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-26 18:55:56 -05:00
axObject info union
This commit is contained in:
@@ -5,650 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_80453AC
|
||||
sub_80453AC:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
mov r8, r0
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
mov r9, r0
|
||||
mov r0, r8
|
||||
bl GetBodySize
|
||||
lsls r0, 24
|
||||
lsrs r6, r0, 24
|
||||
movs r5, 0
|
||||
movs r0, 0x6
|
||||
subs r3, r0, r6
|
||||
ldr r4, _080453D8
|
||||
b _080453DE
|
||||
.align 2, 0
|
||||
_080453D8: .4byte gUnknown_202EE70
|
||||
_080453DC:
|
||||
adds r5, 0x1
|
||||
_080453DE:
|
||||
cmp r5, r3
|
||||
bgt _08045400
|
||||
movs r2, 0
|
||||
cmp r2, r6
|
||||
bge _080453FA
|
||||
adds r1, r5, r4
|
||||
b _080453F4
|
||||
_080453EC:
|
||||
adds r1, 0x1
|
||||
adds r2, 0x1
|
||||
cmp r2, r6
|
||||
bge _080453FA
|
||||
_080453F4:
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0
|
||||
beq _080453EC
|
||||
_080453FA:
|
||||
cmp r2, r6
|
||||
bne _080453DC
|
||||
mov r9, r5
|
||||
_08045400:
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
cmp r9, r0
|
||||
beq _080454FC
|
||||
movs r5, 0
|
||||
ldr r7, _080454DC
|
||||
_0804540C:
|
||||
ldr r1, _080454E0
|
||||
ldr r0, [r1]
|
||||
lsls r1, r5, 2
|
||||
ldr r2, _080454E4
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
mov r10, r0
|
||||
cmp r0, 0
|
||||
bne _080454F0
|
||||
movs r0, 0x1
|
||||
str r0, [r4]
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x24
|
||||
strb r5, [r0]
|
||||
ldr r1, _080454E0
|
||||
ldr r0, [r1]
|
||||
adds r0, r7
|
||||
str r0, [r4, 0x70]
|
||||
mov r2, r8
|
||||
strh r2, [r0, 0x2]
|
||||
movs r0, 0
|
||||
mov r1, r8
|
||||
bl GetMonsterApparentID
|
||||
ldr r1, [r4, 0x70]
|
||||
strh r0, [r1, 0x4]
|
||||
ldr r0, [r4, 0x70]
|
||||
movs r5, 0
|
||||
strb r5, [r0, 0x6]
|
||||
movs r0, 0
|
||||
mov r1, r8
|
||||
bl GetMonsterApparentID
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
bl GetSpriteData
|
||||
str r0, [r4, 0x64]
|
||||
mov r1, r9
|
||||
lsls r0, r1, 4
|
||||
adds r0, 0x40
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x68
|
||||
strh r0, [r1]
|
||||
adds r1, 0x2
|
||||
movs r0, 0x7
|
||||
strb r0, [r1]
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x6C
|
||||
movs r2, 0
|
||||
strb r2, [r0]
|
||||
adds r1, 0x1
|
||||
movs r0, 0xFF
|
||||
strb r0, [r1]
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x6D
|
||||
movs r5, 0x1
|
||||
strb r5, [r0]
|
||||
adds r0, 0x2
|
||||
strb r5, [r0]
|
||||
mov r0, r10
|
||||
str r0, [r4, 0x1C]
|
||||
bl sub_8045ACC
|
||||
ldr r0, [r4, 0x70]
|
||||
ldr r1, _080454E8
|
||||
adds r0, r1
|
||||
mov r2, r9
|
||||
strb r2, [r0]
|
||||
ldr r0, [r4, 0x70]
|
||||
movs r5, 0xB4
|
||||
lsls r5, 1
|
||||
adds r0, r5
|
||||
strb r6, [r0]
|
||||
cmp r6, 0
|
||||
beq _080454C6
|
||||
ldr r3, _080454EC
|
||||
movs r2, 0x1
|
||||
adds r1, r6, 0
|
||||
_080454B6:
|
||||
mov r5, r9
|
||||
adds r0, r5, r3
|
||||
strb r2, [r0]
|
||||
movs r0, 0x1
|
||||
add r9, r0
|
||||
subs r1, 0x1
|
||||
cmp r1, 0
|
||||
bne _080454B6
|
||||
_080454C6:
|
||||
ldr r1, _080454E0
|
||||
ldr r0, [r1]
|
||||
movs r2, 0xCD
|
||||
lsls r2, 3
|
||||
adds r0, r2
|
||||
ldrh r2, [r0]
|
||||
adds r1, r2, 0x1
|
||||
strh r1, [r0]
|
||||
strh r2, [r4, 0x26]
|
||||
adds r0, r4, 0
|
||||
b _080454FE
|
||||
.align 2, 0
|
||||
_080454DC: .4byte 0x0000069c
|
||||
_080454E0: .4byte gDungeon
|
||||
_080454E4: .4byte 0x0001357c
|
||||
_080454E8: .4byte 0x00000167
|
||||
_080454EC: .4byte gUnknown_202EE70
|
||||
_080454F0:
|
||||
movs r0, 0x82
|
||||
lsls r0, 2
|
||||
adds r7, r0
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x3
|
||||
ble _0804540C
|
||||
_080454FC:
|
||||
movs r0, 0
|
||||
_080454FE:
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80453AC
|
||||
|
||||
thumb_func_start sub_804550C
|
||||
sub_804550C:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x8
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
mov r8, r0
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
mov r9, r0
|
||||
mov r0, r8
|
||||
bl GetBodySize
|
||||
lsls r0, 24
|
||||
lsrs r7, r0, 24
|
||||
movs r5, 0
|
||||
movs r0, 0x10
|
||||
subs r3, r0, r7
|
||||
ldr r4, _08045538
|
||||
b _0804553E
|
||||
.align 2, 0
|
||||
_08045538: .4byte gUnknown_202EE76
|
||||
_0804553C:
|
||||
adds r5, 0x1
|
||||
_0804553E:
|
||||
cmp r5, r3
|
||||
bgt _08045560
|
||||
movs r2, 0
|
||||
cmp r2, r7
|
||||
bge _0804555A
|
||||
adds r1, r5, r4
|
||||
b _08045554
|
||||
_0804554C:
|
||||
adds r1, 0x1
|
||||
adds r2, 0x1
|
||||
cmp r2, r7
|
||||
bge _0804555A
|
||||
_08045554:
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0
|
||||
beq _0804554C
|
||||
_0804555A:
|
||||
cmp r2, r7
|
||||
bne _0804553C
|
||||
mov r9, r5
|
||||
_08045560:
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
cmp r9, r0
|
||||
bne _0804556A
|
||||
b _08045670
|
||||
_0804556A:
|
||||
movs r5, 0
|
||||
movs r1, 0x1
|
||||
mov r10, r1
|
||||
ldr r2, _08045650
|
||||
mov r3, r9
|
||||
lsls r0, r3, 4
|
||||
adds r0, 0xA0
|
||||
str r0, [sp]
|
||||
_0804557A:
|
||||
ldr r1, _08045654
|
||||
ldr r0, [r1]
|
||||
lsls r1, r5, 2
|
||||
ldr r3, _08045658
|
||||
adds r0, r3
|
||||
adds r0, r1
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, 0
|
||||
str r2, [sp, 0x4]
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
lsrs r6, r0, 24
|
||||
ldr r2, [sp, 0x4]
|
||||
cmp r6, 0
|
||||
bne _08045664
|
||||
mov r0, r10
|
||||
str r0, [r4]
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x24
|
||||
strb r5, [r0]
|
||||
subs r0, 0x2
|
||||
strb r6, [r0]
|
||||
ldr r1, _08045654
|
||||
ldr r0, [r1]
|
||||
adds r0, r2
|
||||
str r0, [r4, 0x70]
|
||||
mov r2, r8
|
||||
strh r2, [r0, 0x2]
|
||||
movs r0, 0
|
||||
mov r1, r8
|
||||
bl GetMonsterApparentID
|
||||
ldr r1, [r4, 0x70]
|
||||
strh r0, [r1, 0x4]
|
||||
ldr r0, [r4, 0x70]
|
||||
mov r3, r10
|
||||
strb r3, [r0, 0x6]
|
||||
movs r0, 0
|
||||
mov r1, r8
|
||||
bl GetMonsterApparentID
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
bl GetSpriteData
|
||||
str r0, [r4, 0x64]
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x68
|
||||
mov r5, sp
|
||||
ldrh r5, [r5]
|
||||
strh r5, [r0]
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x6A
|
||||
movs r0, 0x7
|
||||
strb r0, [r1]
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x6C
|
||||
movs r1, 0
|
||||
strb r1, [r0]
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x6B
|
||||
movs r0, 0xFF
|
||||
strb r0, [r1]
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x6D
|
||||
mov r2, r10
|
||||
strb r2, [r0]
|
||||
adds r0, 0x2
|
||||
strb r2, [r0]
|
||||
str r6, [r4, 0x1C]
|
||||
ldr r0, [r4, 0x70]
|
||||
ldr r3, _0804565C
|
||||
adds r0, r3
|
||||
mov r5, r9
|
||||
strb r5, [r0]
|
||||
ldr r0, [r4, 0x70]
|
||||
movs r1, 0xB4
|
||||
lsls r1, 1
|
||||
adds r0, r1
|
||||
strb r7, [r0]
|
||||
cmp r7, 0
|
||||
beq _08045636
|
||||
ldr r3, _08045660
|
||||
movs r2, 0x1
|
||||
adds r1, r7, 0
|
||||
_08045626:
|
||||
mov r5, r9
|
||||
adds r0, r5, r3
|
||||
strb r2, [r0]
|
||||
movs r0, 0x1
|
||||
add r9, r0
|
||||
subs r1, 0x1
|
||||
cmp r1, 0
|
||||
bne _08045626
|
||||
_08045636:
|
||||
bl sub_8045ACC
|
||||
ldr r1, _08045654
|
||||
ldr r0, [r1]
|
||||
movs r2, 0xCD
|
||||
lsls r2, 3
|
||||
adds r0, r2
|
||||
ldrh r2, [r0]
|
||||
adds r1, r2, 0x1
|
||||
strh r1, [r0]
|
||||
strh r2, [r4, 0x26]
|
||||
adds r0, r4, 0
|
||||
b _08045672
|
||||
.align 2, 0
|
||||
_08045650: .4byte 0x00000ebc
|
||||
_08045654: .4byte gDungeon
|
||||
_08045658: .4byte 0x0001358c
|
||||
_0804565C: .4byte 0x00000167
|
||||
_08045660: .4byte gUnknown_202EE76
|
||||
_08045664:
|
||||
movs r3, 0x82
|
||||
lsls r3, 2
|
||||
adds r2, r3
|
||||
adds r5, 0x1
|
||||
cmp r5, 0xF
|
||||
ble _0804557A
|
||||
_08045670:
|
||||
movs r0, 0
|
||||
_08045672:
|
||||
add sp, 0x8
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_804550C
|
||||
|
||||
thumb_func_start sub_8045684
|
||||
sub_8045684:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
mov r10, r1
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
mov r8, r0
|
||||
lsls r2, 24
|
||||
lsrs r2, 24
|
||||
mov r9, r2
|
||||
movs r5, 0
|
||||
ldr r7, _080456E4
|
||||
ldr r6, _080456E8
|
||||
_080456A2:
|
||||
ldr r0, [r7]
|
||||
lsls r1, r5, 2
|
||||
ldr r2, _080456EC
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
lsrs r1, r0, 24
|
||||
cmp r1, 0
|
||||
bne _080456F0
|
||||
movs r0, 0x2
|
||||
str r0, [r4]
|
||||
ldr r0, [r7]
|
||||
adds r0, r6
|
||||
str r0, [r4, 0x70]
|
||||
mov r2, r8
|
||||
strb r2, [r0]
|
||||
ldr r0, [r4, 0x70]
|
||||
mov r2, r9
|
||||
strb r2, [r0, 0x1]
|
||||
str r1, [r4, 0x1C]
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x22
|
||||
strb r1, [r0]
|
||||
mov r2, r10
|
||||
ldr r0, [r2]
|
||||
str r0, [r4, 0x4]
|
||||
strh r1, [r4, 0x26]
|
||||
adds r0, r4, 0
|
||||
b _080456FA
|
||||
.align 2, 0
|
||||
_080456E4: .4byte gDungeon
|
||||
_080456E8: .4byte 0x00003908
|
||||
_080456EC: .4byte 0x0001371c
|
||||
_080456F0:
|
||||
adds r6, 0x4
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x3F
|
||||
ble _080456A2
|
||||
movs r0, 0
|
||||
_080456FA:
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8045684
|
||||
|
||||
thumb_func_start sub_8045708
|
||||
sub_8045708:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
mov r8, r0
|
||||
ldr r1, _08045744
|
||||
ldr r0, _08045748
|
||||
ldr r0, [r0]
|
||||
ldr r2, _0804574C
|
||||
adds r0, r2
|
||||
movs r3, 0
|
||||
ldrsh r0, [r0, r3]
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
bne _0804579C
|
||||
mov r1, r8
|
||||
movs r2, 0
|
||||
ldrsh r0, [r1, r2]
|
||||
movs r3, 0x2
|
||||
ldrsh r1, [r1, r3]
|
||||
bl GetTileSafe
|
||||
ldrh r1, [r0]
|
||||
movs r0, 0x3
|
||||
ands r0, r1
|
||||
cmp r0, 0x2
|
||||
bne _0804579C
|
||||
b _080457C4
|
||||
.align 2, 0
|
||||
_08045744: .4byte gDungeonWaterType
|
||||
_08045748: .4byte gDungeon
|
||||
_0804574C: .4byte 0x00003a0e
|
||||
_08045750:
|
||||
movs r0, 0x3
|
||||
str r0, [r4]
|
||||
ldr r0, _08045798
|
||||
adds r1, r6, r0
|
||||
mov r2, r9
|
||||
ldr r0, [r2]
|
||||
adds r0, r1
|
||||
str r0, [r4, 0x70]
|
||||
mov r3, r8
|
||||
ldr r0, [r3]
|
||||
str r0, [r4, 0x4]
|
||||
movs r1, 0
|
||||
ldrsh r0, [r3, r1]
|
||||
lsls r1, r0, 1
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, 0x4
|
||||
lsls r1, 8
|
||||
movs r2, 0x2
|
||||
ldrsh r0, [r3, r2]
|
||||
lsls r2, r0, 1
|
||||
adds r2, r0
|
||||
lsls r2, 3
|
||||
adds r2, 0x4
|
||||
lsls r2, 8
|
||||
adds r0, r4, 0
|
||||
bl SetEntityPixelPos
|
||||
movs r0, 0
|
||||
strh r7, [r4, 0x26]
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x22
|
||||
strb r0, [r1]
|
||||
str r7, [r4, 0x1C]
|
||||
adds r0, r4, 0
|
||||
b _080457C6
|
||||
.align 2, 0
|
||||
_08045798: .4byte 0x00003804
|
||||
_0804579C:
|
||||
movs r5, 0
|
||||
ldr r3, _080457D4
|
||||
mov r9, r3
|
||||
_080457A2:
|
||||
mov r1, r9
|
||||
ldr r0, [r1]
|
||||
lsls r6, r5, 2
|
||||
ldr r2, _080457D8
|
||||
adds r0, r2
|
||||
adds r0, r6
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
lsrs r7, r0, 24
|
||||
cmp r7, 0
|
||||
beq _08045750
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x3F
|
||||
ble _080457A2
|
||||
_080457C4:
|
||||
movs r0, 0
|
||||
_080457C6:
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080457D4: .4byte gDungeon
|
||||
_080457D8: .4byte 0x0001361c
|
||||
thumb_func_end sub_8045708
|
||||
|
||||
thumb_func_start sub_80457DC
|
||||
sub_80457DC:
|
||||
push {r4-r6,lr}
|
||||
adds r4, r0, 0
|
||||
movs r0, 0x5
|
||||
str r0, [r4]
|
||||
movs r6, 0
|
||||
movs r5, 0
|
||||
strh r5, [r4, 0x4]
|
||||
strh r5, [r4, 0x6]
|
||||
adds r0, r4, 0
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
bl SetEntityPixelPos
|
||||
strh r5, [r4, 0x26]
|
||||
adds r4, 0x22
|
||||
strb r6, [r4]
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80457DC
|
||||
|
||||
thumb_func_start sub_8045804
|
||||
sub_8045804:
|
||||
push {r4-r6,lr}
|
||||
adds r4, r0, 0
|
||||
bl GetEntityType
|
||||
cmp r0, 0x1
|
||||
beq _0804581C
|
||||
cmp r0, 0x1
|
||||
bcc _08045880
|
||||
cmp r0, 0x5
|
||||
beq _08045880
|
||||
_08045818:
|
||||
movs r0, 0x1
|
||||
b _08045882
|
||||
_0804581C:
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x20
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _08045880
|
||||
ldr r0, _08045874
|
||||
ldr r1, [r0]
|
||||
ldr r0, _08045878
|
||||
adds r2, r1, r0
|
||||
ldr r5, [r2, 0x10]
|
||||
ldr r3, [r4, 0x70]
|
||||
ldrb r0, [r3, 0x6]
|
||||
cmp r0, 0
|
||||
beq _08045818
|
||||
ldr r6, _0804587C
|
||||
adds r0, r1, r6
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0804584C
|
||||
adds r0, r3, 0
|
||||
adds r0, 0xE4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
beq _08045880
|
||||
_0804584C:
|
||||
adds r0, r2, 0
|
||||
adds r0, 0x23
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _08045818
|
||||
adds r0, r2, 0
|
||||
adds r0, 0x25
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _08045818
|
||||
cmp r5, 0
|
||||
beq _08045880
|
||||
adds r1, r4, 0x4
|
||||
adds r0, r2, 0
|
||||
bl IsPositionActuallyInSight
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
b _08045882
|
||||
.align 2, 0
|
||||
_08045874: .4byte gDungeon
|
||||
_08045878: .4byte 0x000181e8
|
||||
_0804587C: .4byte 0x0001820f
|
||||
_08045880:
|
||||
movs r0, 0
|
||||
_08045882:
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8045804
|
||||
|
||||
thumb_func_start sub_8045888
|
||||
sub_8045888:
|
||||
push {r4,r5,lr}
|
||||
|
||||
10
include/code_80450F8.h
Normal file
10
include/code_80450F8.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef GUARD_CODE_80227B8_H
|
||||
#define GUARD_CODE_80227B8_H
|
||||
|
||||
#include "structs/dungeon_entity.h"
|
||||
|
||||
Entity *sub_8045684(u8 a, Position *pos, u8 c);
|
||||
Entity *sub_8045708(Position *pos);
|
||||
void sub_80457DC(Entity* ent);
|
||||
|
||||
#endif // GUARD_CODE_80227B8_H
|
||||
@@ -84,7 +84,12 @@ struct axObject
|
||||
u8 unk45_orientation;
|
||||
u8 unk46;
|
||||
u8 unk47;
|
||||
/* 0x48 */ struct EntityInfo* info;
|
||||
/* 0x48 */ union
|
||||
{
|
||||
struct Item* item;
|
||||
struct EntityInfo* monster;
|
||||
struct EntTrapInfo* trap;
|
||||
} info;
|
||||
};
|
||||
|
||||
// size: 0x80? (assuming it's the last sub-struct of GroundLives)
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
#ifndef GUARD_DUNGEON_ENTITY_H
|
||||
#define GUARD_DUNGEON_ENTITY_H
|
||||
|
||||
#include "constants/global.h"
|
||||
#include "constants/dungeon_action.h"
|
||||
#include "structs/str_position.h"
|
||||
#include "sprite.h"
|
||||
#include "constants/global.h"
|
||||
#include "constants/status.h"
|
||||
#include "structs/axdata.h"
|
||||
#include "structs/str_items.h"
|
||||
#include "structs/str_moves.h"
|
||||
#include "structs/axdata.h"
|
||||
|
||||
#include "structs/str_position.h"
|
||||
#include "number_util.h"
|
||||
#include "sprite.h"
|
||||
|
||||
#define MAX_STAT_STAGE 20
|
||||
#define STAT_MULTIPLIER_THRESHOLD 63
|
||||
@@ -352,6 +352,13 @@ typedef struct EntityInfo
|
||||
u8 unk204;
|
||||
} EntityInfo;
|
||||
|
||||
// size: 0x4
|
||||
typedef struct EntTrapInfo
|
||||
{
|
||||
/* 0x0 */ u8 unk0;
|
||||
/* 0x0 */ u8 unk1;
|
||||
} EntTrapInfo;
|
||||
|
||||
// size: 0x74 | Used for Pokémon, items, and traps.
|
||||
typedef struct Entity
|
||||
{
|
||||
@@ -472,7 +479,7 @@ static inline void SetExpMultplier(EntityInfo *info)
|
||||
|
||||
static inline EntityInfo *GetEntInfo(Entity *ent)
|
||||
{
|
||||
return ent->axObj.info;
|
||||
return ent->axObj.info.monster;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -354,9 +354,9 @@ typedef struct Dungeon
|
||||
/* 0x37FE */ bool8 unk37FF;
|
||||
// dungeon_serializer.c refers to this as a u16 but elsewhere it's handled as a s16
|
||||
/* 0x3800 */ s16 deoxysForm;
|
||||
EntityInfo *unk3804[DUNGEON_MAX_ITEMS]; // TODO: ItemInfo[DUNGEON_MAX_ITEMS]
|
||||
Item unk3804[DUNGEON_MAX_ITEMS];
|
||||
/* 0x3904 */ s16 unk3904;
|
||||
EntityInfo *unk3908[DUNGEON_MAX_TRAPS]; // TODO: TrapInfo[DUNGEON_MAX_TRAPS]
|
||||
EntTrapInfo unk3908[DUNGEON_MAX_TRAPS];
|
||||
/* 0x3A08 */ bool8 unk3A08;
|
||||
/* 0x3A09 */ bool8 unk3A09;
|
||||
/* 0x3A0A */ bool8 unk3A0A;
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
#define DUNGEON_WATER_TYPE_LAVA 1
|
||||
#define DUNGEON_WATER_TYPE_WATER 2
|
||||
|
||||
extern const u8 gDungeonWaterType[];
|
||||
extern const u8 gDungeonWaterType[76];
|
||||
|
||||
void sub_804AE84(Position *pos);
|
||||
bool8 IsTileGround(Tile *tile);
|
||||
bool8 IsWaterTileset();
|
||||
|
||||
#endif
|
||||
#endif // GUARD_TILE_TYPES_H
|
||||
@@ -216,6 +216,7 @@ SECTIONS {
|
||||
src/dungeon_action.o(.text);
|
||||
src/code_8044CC8.o(.text);
|
||||
src/dungeon_util.o(.text);
|
||||
src/code_80450F8.o(.text);
|
||||
asm/code_80450F8.o(.text);
|
||||
src/dungeon_visibility.o(.text);
|
||||
src/code_8045A00.o(.text);
|
||||
|
||||
491
src/code_80450F8.c
Normal file
491
src/code_80450F8.c
Normal file
@@ -0,0 +1,491 @@
|
||||
#include "global.h"
|
||||
#include "structs/str_dungeon.h"
|
||||
#include "code_80450F8.h"
|
||||
#include "dungeon_map_access.h"
|
||||
#include "dungeon_range.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "tile_types.h"
|
||||
|
||||
// Related to sub_80828E0
|
||||
// 93.08% https://decomp.me/scratch/AYGBN
|
||||
NAKED
|
||||
Entity *sub_80453AC(s16 id)
|
||||
{
|
||||
asm_unified(
|
||||
" push {r4-r7,lr}\n"
|
||||
" mov r7, r10\n"
|
||||
" mov r6, r9\n"
|
||||
" mov r5, r8\n"
|
||||
" push {r5-r7}\n"
|
||||
" lsls r0, 16\n"
|
||||
" asrs r0, 16\n"
|
||||
" mov r8, r0\n"
|
||||
" movs r0, 0x1\n"
|
||||
" negs r0, r0\n"
|
||||
" mov r9, r0\n"
|
||||
" mov r0, r8\n"
|
||||
" bl GetBodySize\n"
|
||||
" lsls r0, 24\n"
|
||||
" lsrs r6, r0, 24\n"
|
||||
" movs r5, 0\n"
|
||||
" movs r0, 0x6\n"
|
||||
" subs r3, r0, r6\n"
|
||||
" ldr r4, _080453D8\n"
|
||||
" b _080453DE\n"
|
||||
" .align 2, 0\n"
|
||||
"_080453D8: .4byte gUnknown_202EE70\n"
|
||||
"_080453DC:\n"
|
||||
" adds r5, 0x1\n"
|
||||
"_080453DE:\n"
|
||||
" cmp r5, r3\n"
|
||||
" bgt _08045400\n"
|
||||
" movs r2, 0\n"
|
||||
" cmp r2, r6\n"
|
||||
" bge _080453FA\n"
|
||||
" adds r1, r5, r4\n"
|
||||
" b _080453F4\n"
|
||||
"_080453EC:\n"
|
||||
" adds r1, 0x1\n"
|
||||
" adds r2, 0x1\n"
|
||||
" cmp r2, r6\n"
|
||||
" bge _080453FA\n"
|
||||
"_080453F4:\n"
|
||||
" ldrb r0, [r1]\n"
|
||||
" cmp r0, 0\n"
|
||||
" beq _080453EC\n"
|
||||
"_080453FA:\n"
|
||||
" cmp r2, r6\n"
|
||||
" bne _080453DC\n"
|
||||
" mov r9, r5\n"
|
||||
"_08045400:\n"
|
||||
" movs r0, 0x1\n"
|
||||
" negs r0, r0\n"
|
||||
" cmp r9, r0\n"
|
||||
" beq _080454FC\n"
|
||||
" movs r5, 0\n"
|
||||
" ldr r7, _080454DC\n"
|
||||
"_0804540C:\n"
|
||||
" ldr r1, _080454E0\n"
|
||||
" ldr r0, [r1]\n"
|
||||
" lsls r1, r5, 2\n"
|
||||
" ldr r2, _080454E4\n"
|
||||
" adds r0, r2\n"
|
||||
" adds r0, r1\n"
|
||||
" ldr r4, [r0]\n"
|
||||
" adds r0, r4, 0\n"
|
||||
" bl EntityExists\n"
|
||||
" lsls r0, 24\n"
|
||||
" lsrs r0, 24\n"
|
||||
" mov r10, r0\n"
|
||||
" cmp r0, 0\n"
|
||||
" bne _080454F0\n"
|
||||
" movs r0, 0x1\n"
|
||||
" str r0, [r4]\n"
|
||||
" adds r0, r4, 0\n"
|
||||
" adds r0, 0x24\n"
|
||||
" strb r5, [r0]\n"
|
||||
" ldr r1, _080454E0\n"
|
||||
" ldr r0, [r1]\n"
|
||||
" adds r0, r7\n"
|
||||
" str r0, [r4, 0x70]\n"
|
||||
" mov r2, r8\n"
|
||||
" strh r2, [r0, 0x2]\n"
|
||||
" movs r0, 0\n"
|
||||
" mov r1, r8\n"
|
||||
" bl GetMonsterApparentID\n"
|
||||
" ldr r1, [r4, 0x70]\n"
|
||||
" strh r0, [r1, 0x4]\n"
|
||||
" ldr r0, [r4, 0x70]\n"
|
||||
" movs r5, 0\n"
|
||||
" strb r5, [r0, 0x6]\n"
|
||||
" movs r0, 0\n"
|
||||
" mov r1, r8\n"
|
||||
" bl GetMonsterApparentID\n"
|
||||
" lsls r0, 16\n"
|
||||
" asrs r0, 16\n"
|
||||
" bl GetSpriteData\n"
|
||||
" str r0, [r4, 0x64]\n"
|
||||
" mov r1, r9\n"
|
||||
" lsls r0, r1, 4\n"
|
||||
" adds r0, 0x40\n"
|
||||
" adds r1, r4, 0\n"
|
||||
" adds r1, 0x68\n"
|
||||
" strh r0, [r1]\n"
|
||||
" adds r1, 0x2\n"
|
||||
" movs r0, 0x7\n"
|
||||
" strb r0, [r1]\n"
|
||||
" adds r0, r4, 0\n"
|
||||
" adds r0, 0x6C\n"
|
||||
" movs r2, 0\n"
|
||||
" strb r2, [r0]\n"
|
||||
" adds r1, 0x1\n"
|
||||
" movs r0, 0xFF\n"
|
||||
" strb r0, [r1]\n"
|
||||
" adds r0, r4, 0\n"
|
||||
" adds r0, 0x6D\n"
|
||||
" movs r5, 0x1\n"
|
||||
" strb r5, [r0]\n"
|
||||
" adds r0, 0x2\n"
|
||||
" strb r5, [r0]\n"
|
||||
" mov r0, r10\n"
|
||||
" str r0, [r4, 0x1C]\n"
|
||||
" bl sub_8045ACC\n"
|
||||
" ldr r0, [r4, 0x70]\n"
|
||||
" ldr r1, _080454E8\n"
|
||||
" adds r0, r1\n"
|
||||
" mov r2, r9\n"
|
||||
" strb r2, [r0]\n"
|
||||
" ldr r0, [r4, 0x70]\n"
|
||||
" movs r5, 0xB4\n"
|
||||
" lsls r5, 1\n"
|
||||
" adds r0, r5\n"
|
||||
" strb r6, [r0]\n"
|
||||
" cmp r6, 0\n"
|
||||
" beq _080454C6\n"
|
||||
" ldr r3, _080454EC\n"
|
||||
" movs r2, 0x1\n"
|
||||
" adds r1, r6, 0\n"
|
||||
"_080454B6:\n"
|
||||
" mov r5, r9\n"
|
||||
" adds r0, r5, r3\n"
|
||||
" strb r2, [r0]\n"
|
||||
" movs r0, 0x1\n"
|
||||
" add r9, r0\n"
|
||||
" subs r1, 0x1\n"
|
||||
" cmp r1, 0\n"
|
||||
" bne _080454B6\n"
|
||||
"_080454C6:\n"
|
||||
" ldr r1, _080454E0\n"
|
||||
" ldr r0, [r1]\n"
|
||||
" movs r2, 0xCD\n"
|
||||
" lsls r2, 3\n"
|
||||
" adds r0, r2\n"
|
||||
" ldrh r2, [r0]\n"
|
||||
" adds r1, r2, 0x1\n"
|
||||
" strh r1, [r0]\n"
|
||||
" strh r2, [r4, 0x26]\n"
|
||||
" adds r0, r4, 0\n"
|
||||
" b _080454FE\n"
|
||||
" .align 2, 0\n"
|
||||
"_080454DC: .4byte 0x0000069c\n"
|
||||
"_080454E0: .4byte gDungeon\n"
|
||||
"_080454E4: .4byte 0x0001357c\n"
|
||||
"_080454E8: .4byte 0x00000167\n"
|
||||
"_080454EC: .4byte gUnknown_202EE70\n"
|
||||
"_080454F0:\n"
|
||||
" movs r0, 0x82\n"
|
||||
" lsls r0, 2\n"
|
||||
" adds r7, r0\n"
|
||||
" adds r5, 0x1\n"
|
||||
" cmp r5, 0x3\n"
|
||||
" ble _0804540C\n"
|
||||
"_080454FC:\n"
|
||||
" movs r0, 0\n"
|
||||
"_080454FE:\n"
|
||||
" pop {r3-r5}\n"
|
||||
" mov r8, r3\n"
|
||||
" mov r9, r4\n"
|
||||
" mov r10, r5\n"
|
||||
" pop {r4-r7}\n"
|
||||
" pop {r1}\n"
|
||||
" bx r1"
|
||||
);
|
||||
}
|
||||
|
||||
// Related to sub_8082A08
|
||||
// 91.51% https://decomp.me/scratch/Fp0Kw
|
||||
NAKED
|
||||
Entity *sub_804550C(s16 a)
|
||||
{
|
||||
asm_unified(
|
||||
" push {r4-r7,lr}\n"
|
||||
" mov r7, r10\n"
|
||||
" mov r6, r9\n"
|
||||
" mov r5, r8\n"
|
||||
" push {r5-r7}\n"
|
||||
" sub sp, 0x8\n"
|
||||
" lsls r0, 16\n"
|
||||
" asrs r0, 16\n"
|
||||
" mov r8, r0\n"
|
||||
" movs r0, 0x1\n"
|
||||
" negs r0, r0\n"
|
||||
" mov r9, r0\n"
|
||||
" mov r0, r8\n"
|
||||
" bl GetBodySize\n"
|
||||
" lsls r0, 24\n"
|
||||
" lsrs r7, r0, 24\n"
|
||||
" movs r5, 0\n"
|
||||
" movs r0, 0x10\n"
|
||||
" subs r3, r0, r7\n"
|
||||
" ldr r4, _08045538\n"
|
||||
" b _0804553E\n"
|
||||
" .align 2, 0\n"
|
||||
"_08045538: .4byte gUnknown_202EE76\n"
|
||||
"_0804553C:\n"
|
||||
" adds r5, 0x1\n"
|
||||
"_0804553E:\n"
|
||||
" cmp r5, r3\n"
|
||||
" bgt _08045560\n"
|
||||
" movs r2, 0\n"
|
||||
" cmp r2, r7\n"
|
||||
" bge _0804555A\n"
|
||||
" adds r1, r5, r4\n"
|
||||
" b _08045554\n"
|
||||
"_0804554C:\n"
|
||||
" adds r1, 0x1\n"
|
||||
" adds r2, 0x1\n"
|
||||
" cmp r2, r7\n"
|
||||
" bge _0804555A\n"
|
||||
"_08045554:\n"
|
||||
" ldrb r0, [r1]\n"
|
||||
" cmp r0, 0\n"
|
||||
" beq _0804554C\n"
|
||||
"_0804555A:\n"
|
||||
" cmp r2, r7\n"
|
||||
" bne _0804553C\n"
|
||||
" mov r9, r5\n"
|
||||
"_08045560:\n"
|
||||
" movs r0, 0x1\n"
|
||||
" negs r0, r0\n"
|
||||
" cmp r9, r0\n"
|
||||
" bne _0804556A\n"
|
||||
" b _08045670\n"
|
||||
"_0804556A:\n"
|
||||
" movs r5, 0\n"
|
||||
" movs r1, 0x1\n"
|
||||
" mov r10, r1\n"
|
||||
" ldr r2, _08045650\n"
|
||||
" mov r3, r9\n"
|
||||
" lsls r0, r3, 4\n"
|
||||
" adds r0, 0xA0\n"
|
||||
" str r0, [sp]\n"
|
||||
"_0804557A:\n"
|
||||
" ldr r1, _08045654\n"
|
||||
" ldr r0, [r1]\n"
|
||||
" lsls r1, r5, 2\n"
|
||||
" ldr r3, _08045658\n"
|
||||
" adds r0, r3\n"
|
||||
" adds r0, r1\n"
|
||||
" ldr r4, [r0]\n"
|
||||
" adds r0, r4, 0\n"
|
||||
" str r2, [sp, 0x4]\n"
|
||||
" bl EntityExists\n"
|
||||
" lsls r0, 24\n"
|
||||
" lsrs r6, r0, 24\n"
|
||||
" ldr r2, [sp, 0x4]\n"
|
||||
" cmp r6, 0\n"
|
||||
" bne _08045664\n"
|
||||
" mov r0, r10\n"
|
||||
" str r0, [r4]\n"
|
||||
" adds r0, r4, 0\n"
|
||||
" adds r0, 0x24\n"
|
||||
" strb r5, [r0]\n"
|
||||
" subs r0, 0x2\n"
|
||||
" strb r6, [r0]\n"
|
||||
" ldr r1, _08045654\n"
|
||||
" ldr r0, [r1]\n"
|
||||
" adds r0, r2\n"
|
||||
" str r0, [r4, 0x70]\n"
|
||||
" mov r2, r8\n"
|
||||
" strh r2, [r0, 0x2]\n"
|
||||
" movs r0, 0\n"
|
||||
" mov r1, r8\n"
|
||||
" bl GetMonsterApparentID\n"
|
||||
" ldr r1, [r4, 0x70]\n"
|
||||
" strh r0, [r1, 0x4]\n"
|
||||
" ldr r0, [r4, 0x70]\n"
|
||||
" mov r3, r10\n"
|
||||
" strb r3, [r0, 0x6]\n"
|
||||
" movs r0, 0\n"
|
||||
" mov r1, r8\n"
|
||||
" bl GetMonsterApparentID\n"
|
||||
" lsls r0, 16\n"
|
||||
" asrs r0, 16\n"
|
||||
" bl GetSpriteData\n"
|
||||
" str r0, [r4, 0x64]\n"
|
||||
" adds r0, r4, 0\n"
|
||||
" adds r0, 0x68\n"
|
||||
" mov r5, sp\n"
|
||||
" ldrh r5, [r5]\n"
|
||||
" strh r5, [r0]\n"
|
||||
" adds r1, r4, 0\n"
|
||||
" adds r1, 0x6A\n"
|
||||
" movs r0, 0x7\n"
|
||||
" strb r0, [r1]\n"
|
||||
" adds r0, r4, 0\n"
|
||||
" adds r0, 0x6C\n"
|
||||
" movs r1, 0\n"
|
||||
" strb r1, [r0]\n"
|
||||
" adds r1, r4, 0\n"
|
||||
" adds r1, 0x6B\n"
|
||||
" movs r0, 0xFF\n"
|
||||
" strb r0, [r1]\n"
|
||||
" adds r0, r4, 0\n"
|
||||
" adds r0, 0x6D\n"
|
||||
" mov r2, r10\n"
|
||||
" strb r2, [r0]\n"
|
||||
" adds r0, 0x2\n"
|
||||
" strb r2, [r0]\n"
|
||||
" str r6, [r4, 0x1C]\n"
|
||||
" ldr r0, [r4, 0x70]\n"
|
||||
" ldr r3, _0804565C\n"
|
||||
" adds r0, r3\n"
|
||||
" mov r5, r9\n"
|
||||
" strb r5, [r0]\n"
|
||||
" ldr r0, [r4, 0x70]\n"
|
||||
" movs r1, 0xB4\n"
|
||||
" lsls r1, 1\n"
|
||||
" adds r0, r1\n"
|
||||
" strb r7, [r0]\n"
|
||||
" cmp r7, 0\n"
|
||||
" beq _08045636\n"
|
||||
" ldr r3, _08045660\n"
|
||||
" movs r2, 0x1\n"
|
||||
" adds r1, r7, 0\n"
|
||||
"_08045626:\n"
|
||||
" mov r5, r9\n"
|
||||
" adds r0, r5, r3\n"
|
||||
" strb r2, [r0]\n"
|
||||
" movs r0, 0x1\n"
|
||||
" add r9, r0\n"
|
||||
" subs r1, 0x1\n"
|
||||
" cmp r1, 0\n"
|
||||
" bne _08045626\n"
|
||||
"_08045636:\n"
|
||||
" bl sub_8045ACC\n"
|
||||
" ldr r1, _08045654\n"
|
||||
" ldr r0, [r1]\n"
|
||||
" movs r2, 0xCD\n"
|
||||
" lsls r2, 3\n"
|
||||
" adds r0, r2\n"
|
||||
" ldrh r2, [r0]\n"
|
||||
" adds r1, r2, 0x1\n"
|
||||
" strh r1, [r0]\n"
|
||||
" strh r2, [r4, 0x26]\n"
|
||||
" adds r0, r4, 0\n"
|
||||
" b _08045672\n"
|
||||
" .align 2, 0\n"
|
||||
"_08045650: .4byte 0x00000ebc\n"
|
||||
"_08045654: .4byte gDungeon\n"
|
||||
"_08045658: .4byte 0x0001358c\n"
|
||||
"_0804565C: .4byte 0x00000167\n"
|
||||
"_08045660: .4byte gUnknown_202EE76\n"
|
||||
"_08045664:\n"
|
||||
" movs r3, 0x82\n"
|
||||
" lsls r3, 2\n"
|
||||
" adds r2, r3\n"
|
||||
" adds r5, 0x1\n"
|
||||
" cmp r5, 0xF\n"
|
||||
" ble _0804557A\n"
|
||||
"_08045670:\n"
|
||||
" movs r0, 0\n"
|
||||
"_08045672:\n"
|
||||
" add sp, 0x8\n"
|
||||
" pop {r3-r5}\n"
|
||||
" mov r8, r3\n"
|
||||
" mov r9, r4\n"
|
||||
" mov r10, r5\n"
|
||||
" pop {r4-r7}\n"
|
||||
" pop {r1}\n"
|
||||
" bx r1"
|
||||
);
|
||||
}
|
||||
|
||||
Entity *sub_8045684(u8 a, Position *pos, u8 c)
|
||||
{
|
||||
Entity *entity;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < DUNGEON_MAX_TRAPS; i++) {
|
||||
entity = gDungeon->traps[i];
|
||||
if (!EntityExists(entity)) {
|
||||
entity->type = ENTITY_TRAP;
|
||||
entity->axObj.info.trap = &gDungeon->unk3908[i];
|
||||
entity->axObj.info.trap->unk0 = a;
|
||||
entity->axObj.info.trap->unk1 = c;
|
||||
|
||||
entity->unk1C = 0;
|
||||
entity->unk22 = 0;
|
||||
entity->pos = *pos;
|
||||
entity->spawnGenID = 0;
|
||||
return entity;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Entity *sub_8045708(Position *pos)
|
||||
{
|
||||
s32 i;
|
||||
Entity *ent;
|
||||
|
||||
if (gDungeonWaterType[gDungeon->tileset] == DUNGEON_WATER_TYPE_LAVA
|
||||
&& (GetTileSafe(pos->x, pos->y)->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY)) == TERRAIN_TYPE_SECONDARY) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (i = 0; i < DUNGEON_MAX_ITEMS; i++) {
|
||||
ent = gDungeon->items[i];
|
||||
if (!EntityExists(ent)) {
|
||||
ent->type = ENTITY_ITEM;
|
||||
ent->axObj.info.item = &gDungeon->unk3804[i];
|
||||
|
||||
ent->pos = *pos;
|
||||
SetEntityPixelPos(ent, ((pos->x * 24) + 4) * 0x100, ((pos->y * 24) + 4) * 0x100);
|
||||
ent->spawnGenID = 0;
|
||||
ent->unk22 = 0;
|
||||
ent->unk1C = 0;
|
||||
return ent;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void sub_80457DC(Entity* ent)
|
||||
{
|
||||
ent->type = ENTITY_UNK_5;
|
||||
ent->pos.x = 0;
|
||||
ent->pos.y = 0;
|
||||
SetEntityPixelPos(ent, 0, 0);
|
||||
ent->spawnGenID = 0;
|
||||
ent->unk22 = 0;
|
||||
}
|
||||
|
||||
bool8 sub_8045804(Entity *ent)
|
||||
{
|
||||
UnkDungeonGlobal_unk181E8_sub* saveTyping;
|
||||
Entity* camTarget;
|
||||
EntityInfo *entInfo;
|
||||
|
||||
switch (GetEntityType(ent)) {
|
||||
case ENTITY_MONSTER: {
|
||||
if (ent->isVisible) {
|
||||
saveTyping = &gDungeon->unk181e8;
|
||||
camTarget = saveTyping->cameraTarget;
|
||||
entInfo = GetEntInfo(ent);
|
||||
|
||||
if (!entInfo->isNotTeamMember)
|
||||
return TRUE;
|
||||
|
||||
if (!saveTyping->unk1820F && entInfo->transformStatus.transformStatus == STATUS_INVISIBLE)
|
||||
return FALSE;
|
||||
|
||||
if (saveTyping->unk1820B || saveTyping->unk1820D)
|
||||
return TRUE;
|
||||
|
||||
if (camTarget != NULL)
|
||||
return IsPositionActuallyInSight(&saveTyping->cameraPos, &ent->pos);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
default: {
|
||||
return TRUE;
|
||||
}
|
||||
case ENTITY_NOTHING:
|
||||
case ENTITY_UNK_5: {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2297,7 +2297,7 @@ typedef struct UnkTextStruct3 {
|
||||
} UnkTextStruct3;
|
||||
|
||||
extern void sub_803ECB4(UnkTextStruct3 *a0, u8 a1);
|
||||
void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3 *a4, UnkTextStruct2_sub2 *a5);
|
||||
static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3 *a4, UnkTextStruct2_sub2 *a5);
|
||||
|
||||
// Inline needed to (fake?)match.
|
||||
static inline void sub_805FC30_SetUpTxtStruct(UnkTextStruct3 *src)
|
||||
@@ -2660,7 +2660,7 @@ bool8 sub_805FD74(Entity * a0, struct UnkMenuBitsStruct *a1)
|
||||
extern const struct UnkTextStruct2 gUnknown_8106B6C;
|
||||
extern const struct unkStruct_8090F58 gUnknown_8106B60;
|
||||
|
||||
void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3 *a4, UnkTextStruct2_sub2 *a5)
|
||||
static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3 *a4, UnkTextStruct2_sub2 *a5)
|
||||
{
|
||||
s32 i, x, y;
|
||||
s32 r10;
|
||||
@@ -2785,8 +2785,9 @@ void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3
|
||||
default: {
|
||||
Entity *chosenTeamMember = gDungeon->teamPokemon[sUnknown_202F248[a0] - MAX_TEAM_MEMBERS];
|
||||
if (EntityExists(chosenTeamMember)) {
|
||||
Item *item = &GetEntInfo(chosenTeamMember)->heldItem;
|
||||
SetMessageArgument_2(gFormatBuffer_Monsters[0], chosenTeamMember->axObj.info, 0);
|
||||
EntityInfo *monInfo = GetEntInfo(chosenTeamMember);
|
||||
Item *item = &monInfo->heldItem;
|
||||
SetMessageArgument_2(gFormatBuffer_Monsters[0], monInfo, 0);
|
||||
PrintFormattedStringOnWindow(x, 0, gUnknown_80FE940, 0, 0);
|
||||
if (item->flags & ITEM_FLAG_EXISTS) {
|
||||
gUnknown_202EE10.unk1A++;
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "status.h"
|
||||
#include "type_chart.h"
|
||||
#include "dungeon_random.h"
|
||||
#include "code_80450F8.h"
|
||||
#include "code_8045A00.h"
|
||||
#include "dungeon_items.h"
|
||||
#include "structs/str_damage.h"
|
||||
@@ -30,7 +31,6 @@ extern bool8 sub_806E100(struct unkStruct_80943A8 *param_1, Entity *pokemon, Ent
|
||||
extern void sub_8041B74(Entity *pokemon);
|
||||
extern void sub_8041B5C(Entity *pokemon);
|
||||
extern void HandleDealingDamage(Entity *attacker, Entity *target, struct DamageStruct *dmgStruct, bool32 isFalseSwipe, bool32 giveExp, s16 arg4, bool32 arg8, s32 argC);
|
||||
extern void sub_80457DC(Entity *);
|
||||
|
||||
extern const s32 gUnknown_80F54B4[NUM_EFFECTIVENESS][NUM_EFFECTIVENESS];
|
||||
extern const s32 gUnknown_80F504C[];
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "dungeon_leader.h"
|
||||
#include "dungeon_message.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_80450F8.h"
|
||||
#include "code_8045A00.h"
|
||||
#include "code_8077274_1.h"
|
||||
#include "constants/dungeon.h"
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800F958.h"
|
||||
#include "code_80450F8.h"
|
||||
#include "code_8045A00.h"
|
||||
#include "code_805D8C8.h"
|
||||
#include "code_806CD90.h"
|
||||
@@ -133,7 +134,6 @@ static Entity* sub_8082A08(s16 id, s16 apparentID, s32 index);
|
||||
|
||||
// These externs are from other files
|
||||
extern u8 GetBodySize(s16 index);
|
||||
extern Entity *sub_8045684(u8, Position *, u8);
|
||||
extern void sub_80460F8(Position *, Item *, u32);
|
||||
|
||||
void SaveDungeonState(u8 *buffer, u32 bufLen)
|
||||
@@ -1145,10 +1145,10 @@ static Entity* sub_80828E0(s16 id, s16 apparentID, s32 index)
|
||||
entity = gDungeon->teamPokemon[index];
|
||||
entity->type = ENTITY_MONSTER;
|
||||
entity->unk24 = index;
|
||||
entity->axObj.info = &gDungeon->unk69C[index];
|
||||
entity->axObj.info->id = id_;
|
||||
entity->axObj.info->apparentID = appID;
|
||||
entity->axObj.info->isNotTeamMember = FALSE;
|
||||
entity->axObj.info.monster = &gDungeon->unk69C[index];
|
||||
entity->axObj.info.monster->id = id_;
|
||||
entity->axObj.info.monster->apparentID = appID;
|
||||
entity->axObj.info.monster->isNotTeamMember = FALSE;
|
||||
|
||||
entity->axObj.spriteFile = GetSpriteData(appID);
|
||||
entity->axObj.unk40_maybeAnimTimer = (r4 * 0x10) + 0x40;
|
||||
@@ -1160,8 +1160,8 @@ static Entity* sub_80828E0(s16 id, s16 apparentID, s32 index)
|
||||
|
||||
entity->unk1C = 0;
|
||||
sub_8045ACC();
|
||||
entity->axObj.info->unk167 = r4;
|
||||
entity->axObj.info->unk168 = apparentBodySize;
|
||||
entity->axObj.info.monster->unk167 = r4;
|
||||
entity->axObj.info.monster->unk168 = apparentBodySize;
|
||||
|
||||
for (r1 = 0; r1 < apparentBodySize; r1++) {
|
||||
gUnknown_202EE70[r4] = 1;
|
||||
@@ -1213,10 +1213,10 @@ static Entity* sub_8082A08(s16 id, s16 apparentID, s32 index)
|
||||
entity->type = ENTITY_MONSTER;
|
||||
entity->unk24 = index;
|
||||
entity->unk22 = 0;
|
||||
entity->axObj.info = &gDungeon->unkEBC[index];
|
||||
entity->axObj.info->id = id_;
|
||||
entity->axObj.info->apparentID = appID;
|
||||
entity->axObj.info->isNotTeamMember = TRUE;
|
||||
entity->axObj.info.monster = &gDungeon->unkEBC[index];
|
||||
entity->axObj.info.monster->id = id_;
|
||||
entity->axObj.info.monster->apparentID = appID;
|
||||
entity->axObj.info.monster->isNotTeamMember = TRUE;
|
||||
|
||||
entity->axObj.spriteFile = GetSpriteData(appID);
|
||||
entity->axObj.unk40_maybeAnimTimer = (r8 * 0x10) + 0xA0;
|
||||
@@ -1227,8 +1227,8 @@ static Entity* sub_8082A08(s16 id, s16 apparentID, s32 index)
|
||||
entity->axObj.unk47 = 1;
|
||||
|
||||
entity->unk1C = 0;
|
||||
entity->axObj.info->unk167 = r8;
|
||||
entity->axObj.info->unk168 = apparentBodySize;
|
||||
entity->axObj.info.monster->unk167 = r8;
|
||||
entity->axObj.info.monster->unk168 = apparentBodySize;
|
||||
|
||||
for (r1 = 0; r1 < apparentBodySize; r1++) {
|
||||
gUnknown_202EE76[r8] = 1;
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include "code_803E46C.h"
|
||||
#include "code_803E668.h"
|
||||
#include "code_80450F8.h"
|
||||
#include "code_806CD90.h"
|
||||
#include "constants/direction.h"
|
||||
#include "constants/dungeon.h"
|
||||
@@ -21,7 +22,6 @@ extern void sub_803F4A0(u32);
|
||||
extern void sub_803F878(s32, s32);
|
||||
|
||||
extern void sub_8068FE0(Entity *, u32, Entity*);
|
||||
extern void sub_80457DC(Entity *);
|
||||
extern void sub_80694C0(Entity *, s32, s32, u32);
|
||||
|
||||
|
||||
|
||||
@@ -186,7 +186,7 @@ extern void sub_806F370(Entity *r0, Entity *r1, u32, u32, u8 *, u8, s32, u32, u3
|
||||
extern void sub_804652C(Entity *, Entity *, Item *, u32, Position *);
|
||||
extern void CalcDamage(Entity *, Entity *, u8, u32, u32, s32 *, u32, u16, u32);
|
||||
extern void sub_8045C28(Item *, u8 , u8);
|
||||
extern void sub_805A7D4(Entity *, Entity *, Item *, Position *);
|
||||
static void sub_805A7D4(Entity *, Entity *, Item *, Position *);
|
||||
extern void MudWaterSportEffect(u32);
|
||||
extern void CalcDamage(Entity *, Entity *, u8, u32, u32, s32 *, u32, u16, u32);
|
||||
extern void sub_806A6E8(Entity *);
|
||||
@@ -2632,7 +2632,7 @@ bool8 KnockOffMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_
|
||||
}
|
||||
}
|
||||
|
||||
void sub_805A7D4(Entity * pokemon, Entity * target, Item *item, Position *pos)
|
||||
static void sub_805A7D4(Entity * pokemon, Entity * target, Item *item, Position *pos)
|
||||
{
|
||||
Entity stackEntity;
|
||||
|
||||
@@ -2640,7 +2640,7 @@ void sub_805A7D4(Entity * pokemon, Entity * target, Item *item, Position *pos)
|
||||
stackEntity.unk24 = 0;
|
||||
stackEntity.isVisible = TRUE;
|
||||
stackEntity.unk22 = 0;
|
||||
stackEntity.axObj.info = (EntityInfo*) item;
|
||||
stackEntity.axObj.info.item = item;
|
||||
stackEntity.pos.x = target->pos.x + pos->x;
|
||||
stackEntity.pos.y = target->pos.y + pos->y;
|
||||
SetEntityPixelPos(&stackEntity,(target->pos.x * 0x18 + 4) * 0x100,
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#include "dungeon_map_access.h"
|
||||
#include "dungeon_util.h"
|
||||
|
||||
const u8 gDungeonWaterType[] = {
|
||||
const u8 gDungeonWaterType[76] = {
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include "trap.h"
|
||||
|
||||
#include "code_803E668.h"
|
||||
#include "code_80450F8.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_8045A00.h"
|
||||
#include "dungeon_message.h"
|
||||
@@ -85,7 +86,6 @@ void sub_8071DA4(Entity *);
|
||||
extern u8 sub_803F428(Position *pos);
|
||||
void sub_806A1E8(Entity *pokemon);
|
||||
u8 sub_803D6FC(void);
|
||||
Entity *sub_8045684(u8, Position *, u8);
|
||||
extern void sub_807DF38(Entity *pokemon, Entity *target, Position *pos, u32, u8 moveType, s16);
|
||||
|
||||
void sub_807FC3C(Position *pos, u32 trapID, u32 param_3)
|
||||
|
||||
Reference in New Issue
Block a user