Merge pull request #355 from DizzyEggg/code_8041AD0

sub_804225C in code_8041AD0
This commit is contained in:
Seth Barberee
2025-03-09 09:29:56 -07:00
committed by GitHub
3 changed files with 54 additions and 163 deletions

View File

@@ -1,162 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_804225C
sub_804225C:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x4
mov r8, r0
adds r5, r1, 0
lsls r2, 24
lsrs r4, r2, 24
adds r7, r4, 0
cmp r4, 0x11
bne _08042274
b _08042384
_08042274:
adds r0, r5, 0
bl sub_803F428
lsls r0, 24
cmp r0, 0
bne _08042282
b _08042384
_08042282:
adds r0, r4, 0
bl sub_800EF28
bl sub_800EF64
movs r0, 0x4
movs r1, 0x42
bl sub_803E708
movs r0, 0
ldrsh r1, [r5, r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 11
movs r1, 0xC0
lsls r1, 4
adds r0, r1
cmp r0, 0
bge _080422AA
adds r0, 0xFF
_080422AA:
lsls r0, 8
lsrs r0, 16
ldr r1, _080422FC
ldr r2, [sp]
ands r2, r1
orrs r2, r0
str r2, [sp]
movs r0, 0x2
ldrsh r1, [r5, r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 11
movs r1, 0x80
lsls r1, 5
adds r0, r1
cmp r0, 0
bge _080422CE
adds r0, 0xFF
_080422CE:
lsls r0, 8
lsrs r0, 16
lsls r0, 16
ldr r1, _08042300
ands r2, r1
orrs r2, r0
str r2, [sp]
adds r0, r4, 0
mov r1, sp
bl sub_800E448
adds r6, r0, 0
cmp r4, 0x4
bne _08042308
ldr r1, _08042304
movs r0, 0
bl sub_80421C0
movs r0, 0x28
movs r1, 0x33
bl sub_803E708
b _08042360
.align 2, 0
_080422FC: .4byte 0xffff0000
_08042300: .4byte 0x0000ffff
_08042304: .4byte 0x00000193
_08042308:
cmp r7, 0x8
bne _08042358
mov r0, r8
ldr r7, [r0, 0x70]
adds r0, r7, 0
adds r0, 0x46
ldrb r4, [r0]
movs r5, 0
b _0804231C
_0804231A:
adds r5, 0x2
_0804231C:
ldr r0, _08042354
cmp r5, r0
bgt _08042346
subs r4, 0x1
movs r0, 0x7
ands r4, r0
mov r0, r8
movs r1, 0
adds r2, r4, 0
bl sub_806CDD4
movs r0, 0x2
movs r1, 0x33
bl sub_803E708
adds r0, r6, 0
bl sub_800E9A8
lsls r0, 24
cmp r0, 0
bne _0804231A
_08042346:
movs r0, 0x7
ands r4, r0
adds r0, r7, 0
adds r0, 0x46
strb r4, [r0]
b _08042360
.align 2, 0
_08042354: .4byte 0x000003e7
_08042358:
movs r0, 0x28
movs r1, 0x33
bl sub_803E708
_08042360:
movs r5, 0
ldr r4, _08042368
b _0804236E
.align 2, 0
_08042368: .4byte 0x000003e7
_0804236C:
adds r5, 0x1
_0804236E:
cmp r5, r4
bgt _08042384
movs r0, 0x42
bl sub_803E46C
adds r0, r6, 0
bl sub_800E9A8
lsls r0, 24
cmp r0, 0
bne _0804236C
_08042384:
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_804225C
.align 2,0

View File

@@ -201,7 +201,6 @@ SECTIONS {
src/code_8040094.o(.text);
asm/code_8040094.o(.text);
src/code_8041AD0.o(.text);
asm/code_8041AD0.o(.text);
src/code_804267C.o(.text);
src/code_8042B34.o(.text);
src/dungeon_engine.o(.text);

View File

@@ -893,3 +893,57 @@ void sub_8042238(Entity *pokemon, Entity *target)
else
PlaySoundEffect(0x156);
}
extern void sub_800EF28(u8);
extern void sub_803E708(u32, u32);
extern u32 sub_800E448(u8, DungeonPos *);
void sub_804225C(Entity *entity, DungeonPos *pos, u8 trapId)
{
s32 uVar6;
DungeonPos newPos;
s32 i, x, y;
if (trapId == TRAP_WONDER_TILE)
return;
if (!sub_803F428(pos))
return;
sub_800EF28(trapId);
sub_800EF64();
sub_803E708(4,0x42);
x = X_POS_TO_PIXELPOS(pos->x);
newPos.x = x / 256;
y = Y_POS_TO_PIXELPOS(pos->y);
newPos.y = y / 256;
uVar6 = sub_800E448(trapId,&newPos);
if (trapId == TRAP_SUMMON_TRAP) {
sub_80421C0(0,0x193);
sub_803E708(0x28,0x33);
}
else if (trapId == TRAP_SPIN_TRAP) {
EntityInfo *info = GetEntInfo(entity);
s32 direction = info->action.direction;
for (i = 0; i < 1000; i += 2) {
direction--;
direction &= DIRECTION_MASK;
sub_806CDD4(entity,0,direction);
sub_803E708(2,0x33);
if (!sub_800E9A8(uVar6))
break;
}
info->action.direction = direction & DIRECTION_MASK;
}
else {
sub_803E708(0x28,0x33);
}
for (i = 0; i < 1000; i++) {
sub_803E46C(0x42);
if (!sub_800E9A8(uVar6))
break;
}
}