mirror of https://github.com/zeldaret/tmc.git
matched sub_0807DB98
This commit is contained in:
parent
7ce43b9a69
commit
f2855ee21a
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue