matched sub_0807DB98

This commit is contained in:
Henny022p 2021-02-16 01:23:57 +01:00
parent 7ce43b9a69
commit f2855ee21a
2 changed files with 78 additions and 253 deletions

View File

@ -1667,256 +1667,3 @@ sub_0807DB88: @ 0x0807DB88
bl _DmaZero
str r5, [r4]
pop {r4, r5, pc}
thumb_func_start sub_0807DB98
sub_0807DB98: @ 0x0807DB98
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
adds r6, r1, #0
ldr r0, [r6, #8]
cmp r0, #0
bne _0807DBA6
b _0807DD48
_0807DBA6:
movs r7, #0
adds r4, r5, #0
adds r4, #0x82
_0807DBAC:
ldr r1, [r6, #8]
mvns r0, r1
adds r2, r0, #1
ands r2, r1
eors r1, r2
str r1, [r6, #8]
movs r0, #0x80
lsls r0, r0, #2
cmp r2, r0
bne _0807DBC2
b _0807DCC8
_0807DBC2:
cmp r2, r0
bhi _0807DC04
cmp r2, #0x10
beq _0807DC82
cmp r2, #0x10
bhi _0807DBE8
cmp r2, #2
beq _0807DC70
cmp r2, #2
bhi _0807DBDC
cmp r2, #1
beq _0807DC68
b _0807DD40
_0807DBDC:
cmp r2, #4
bne _0807DBE2
b _0807DD40
_0807DBE2:
cmp r2, #8
beq _0807DC7A
b _0807DD40
_0807DBE8:
cmp r2, #0x40
beq _0807DC9E
cmp r2, #0x40
bhi _0807DBF6
cmp r2, #0x20
beq _0807DC90
b _0807DD40
_0807DBF6:
cmp r2, #0x80
beq _0807DCA8
movs r0, #0x80
lsls r0, r0, #1
cmp r2, r0
beq _0807DCBA
b _0807DD40
_0807DC04:
movs r0, #0x80
lsls r0, r0, #7
cmp r2, r0
beq _0807DCFC
cmp r2, r0
bhi _0807DC38
movs r0, #0x80
lsls r0, r0, #4
cmp r2, r0
beq _0807DCDE
cmp r2, r0
bhi _0807DC26
movs r0, #0x80
lsls r0, r0, #3
cmp r2, r0
beq _0807DCD6
b _0807DD40
_0807DC26:
movs r0, #0x80
lsls r0, r0, #5
cmp r2, r0
beq _0807DCE8
movs r0, #0x80
lsls r0, r0, #6
cmp r2, r0
beq _0807DCF4
b _0807DD40
_0807DC38:
movs r0, #0x80
lsls r0, r0, #0xa
cmp r2, r0
beq _0807DD14
cmp r2, r0
bhi _0807DC56
movs r0, #0x80
lsls r0, r0, #8
cmp r2, r0
beq _0807DD04
movs r0, #0x80
lsls r0, r0, #9
cmp r2, r0
beq _0807DD0C
b _0807DD40
_0807DC56:
movs r0, #0x80
lsls r0, r0, #0xb
cmp r2, r0
beq _0807DD2E
movs r0, #0x80
lsls r0, r0, #0xc
cmp r2, r0
beq _0807DD36
b _0807DD40
_0807DC68:
adds r0, r5, #0
adds r0, #0x80
strh r7, [r0]
b _0807DD40
_0807DC70:
adds r1, r5, #0
adds r1, #0x80
movs r0, #4
strh r0, [r1]
b _0807DD40
_0807DC7A:
movs r0, #0xc0
lsls r0, r0, #9
str r0, [r5, #0x20]
b _0807DD40
_0807DC82:
adds r0, r5, #0
movs r1, #8
movs r2, #0x18
rsbs r2, r2, #0
bl CreateSpeechBubbleExclamationMark
b _0807DD40
_0807DC90:
adds r0, r5, #0
movs r1, #8
movs r2, #0x18
rsbs r2, r2, #0
bl CreateSpeechBubbleQuestionMark
b _0807DD40
_0807DC9E:
adds r0, r6, #0
bl sub_0807DAC4
bl DeleteThisEntity
_0807DCA8:
ldrb r0, [r5, #0x18]
movs r2, #4
rsbs r2, r2, #0
adds r1, r2, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r5, #0x18]
b _0807DD40
_0807DCBA:
ldrb r0, [r5, #0x18]
movs r3, #4
rsbs r3, r3, #0
adds r1, r3, #0
ands r0, r1
strb r0, [r5, #0x18]
b _0807DD40
_0807DCC8:
adds r0, r5, #0
adds r0, #0x63
strb r7, [r0]
subs r0, #1
strb r7, [r0]
strh r7, [r4]
b _0807DD40
_0807DCD6:
ldrh r0, [r4]
movs r1, #2
orrs r0, r1
b _0807DD3E
_0807DCDE:
ldrh r0, [r4]
ldr r2, _0807DCE4 @ =0x0000FFFD
b _0807DD3A
.align 2, 0
_0807DCE4: .4byte 0x0000FFFD
_0807DCE8:
ldrh r0, [r4]
ldr r3, _0807DCF0 @ =0x0000FFFE
adds r1, r3, #0
b _0807DD3C
.align 2, 0
_0807DCF0: .4byte 0x0000FFFE
_0807DCF4:
ldrh r0, [r4]
movs r1, #1
orrs r0, r1
b _0807DD3E
_0807DCFC:
ldrh r0, [r4]
movs r1, #8
orrs r0, r1
b _0807DD3E
_0807DD04:
ldrh r0, [r4]
movs r1, #4
eors r0, r1
b _0807DD3E
_0807DD0C:
ldrh r0, [r4]
movs r1, #0x10
eors r0, r1
b _0807DD3E
_0807DD14:
ldrb r2, [r5, #0x18]
lsls r0, r2, #0x19
lsrs r0, r0, #0x1f
movs r1, #1
eors r0, r1
lsls r0, r0, #6
movs r3, #0x41
rsbs r3, r3, #0
adds r1, r3, #0
ands r2, r1
orrs r2, r0
strb r2, [r5, #0x18]
b _0807DD40
_0807DD2E:
ldrh r0, [r4]
movs r1, #0x20
orrs r0, r1
b _0807DD3E
_0807DD36:
ldrh r0, [r4]
ldr r2, _0807DD4C @ =0x0000FFDF
_0807DD3A:
adds r1, r2, #0
_0807DD3C:
ands r0, r1
_0807DD3E:
strh r0, [r4]
_0807DD40:
ldr r0, [r6, #8]
cmp r0, #0
beq _0807DD48
b _0807DBAC
_0807DD48:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807DD4C: .4byte 0x0000FFDF

View File

@ -7,11 +7,89 @@
extern u8 gUnk_0811E514[];
extern u8 gUnk_0811E510[];
extern void CreateSpeechBubbleExclamationMark(Entity*, u32, u32);
extern void CreateSpeechBubbleQuestionMark(Entity*, u32, u32);
extern void sub_0807DAC4(ScriptExecutionContext*);
extern void DeleteThisEntity(void);
extern void sub_0807DB88(Entity*);
extern void sub_0801C4A0(u32);
extern void sub_0807DB98(Entity*, ScriptExecutionContext*);
extern void _call_via_r6(Entity*, ScriptExecutionContext*);
void sub_0807DB98(Entity* entity, ScriptExecutionContext* context) {
u32 switchVar;
while (context->unk_08) {
switchVar = (~context->unk_08 + 1) & context->unk_08;
context->unk_08 ^= switchVar;
switch (switchVar) {
case 1:
entity->field_0x80.HWORD = 0;
break;
case 2:
entity->field_0x80.HWORD = 4;
break;
case 4:
break;
case 8:
entity->field_0x20 = 0x18000;
break;
case 0x10:
CreateSpeechBubbleExclamationMark(entity, 8, -0x18);
break;
case 0x20:
CreateSpeechBubbleQuestionMark(entity, 8, -0x18);
break;
case 0x40:
sub_0807DAC4(context);
DeleteThisEntity();
case 0x80:
entity->spriteSettings.b.draw = 1;
break;
case 0x100:
entity->spriteSettings.b.draw = 0;
break;
case 0x200:
entity->spriteOffsetY = 0;
entity->spriteOffsetX = 0;
entity->field_0x82.HWORD = 0;
break;
case 0x400:
entity->field_0x82.HWORD |= 2;
break;
case 0x800:
entity->field_0x82.HWORD &= 0xfffd;
break;
case 0x1000:
entity->field_0x82.HWORD &= 0xfffe;
break;
case 0x2000:
entity->field_0x82.HWORD |= 1;
break;
case 0x4000:
entity->field_0x82.HWORD |= 8;
break;
case 0x8000:
entity->field_0x82.HWORD ^= 4;
break;
case 0x10000:
entity->field_0x82.HWORD ^= 0x10;
break;
case 0x20000:
entity->spriteSettings.b.flipX ^= 1;
break;
case 0x40000:
entity->field_0x82.HWORD |= 0x20;
break;
case 0x80000:
entity->field_0x82.HWORD &= 0xffdf;
break;
default:
break;
}
}
}
void sub_0807DF38(void);
void sub_0807DE80(Entity* entity);