InitFieldObjectStateFromTemplate (nonmatching, same as ruby)

This commit is contained in:
scnorton
2017-09-06 14:25:17 -04:00
parent 1087d1c822
commit 9498dfa71c
5 changed files with 233 additions and 194 deletions

View File

@@ -5,198 +5,6 @@
.text
thumb_func_start GetFieldObjectIdByLocalId
@ u8 GetFieldObjectIdByLocalId(u8 localId)
GetFieldObjectIdByLocalId: @ 808D608
push {r4,lr}
lsls r0, 24
lsrs r3, r0, 24
movs r2, 0
ldr r4, =gMapObjects
_0808D612:
lsls r0, r2, 3
adds r0, r2
lsls r0, 2
adds r1, r0, r4
ldrb r0, [r1]
lsls r0, 31
cmp r0, 0
beq _0808D630
ldrb r0, [r1, 0x8]
cmp r0, r3
bne _0808D630
adds r0, r2, 0
b _0808D63C
.pool
_0808D630:
adds r0, r2, 0x1
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0xF
bls _0808D612
movs r0, 0x10
_0808D63C:
pop {r4}
pop {r1}
bx r1
thumb_func_end GetFieldObjectIdByLocalId
thumb_func_start InitFieldObjectStateFromTemplate
@ u8 InitFieldObjectStateFromTemplate(struct FieldObjectTemplate *fieldObjectTemplate, u8 mapId, u8 mapGroupId)
InitFieldObjectStateFromTemplate: @ 808D644
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x4
adds r5, r0, 0
lsls r1, 24
lsrs r6, r1, 24
lsls r2, 24
lsrs r7, r2, 24
ldrb r0, [r5]
adds r1, r6, 0
adds r2, r7, 0
mov r3, sp
bl GetAvailableFieldObjectSlot
lsls r0, 24
cmp r0, 0
beq _0808D66E
movs r0, 0x10
b _0808D762
_0808D66E:
mov r0, sp
ldrb r1, [r0]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, =gMapObjects
adds r4, r0, r1
adds r0, r4, 0
bl npc_clear_ids_and_state
ldrh r3, [r5, 0x4]
adds r3, 0x7
lsls r3, 16
lsrs r3, 16
ldrh r2, [r5, 0x6]
adds r2, 0x7
lsls r2, 16
lsrs r2, 16
ldrb r0, [r4]
movs r1, 0x1
orrs r0, r1
movs r1, 0x4
orrs r0, r1
strb r0, [r4]
ldrb r0, [r5, 0x1]
strb r0, [r4, 0x5]
ldrb r0, [r5, 0x9]
strb r0, [r4, 0x6]
ldrb r0, [r5]
strb r0, [r4, 0x8]
strb r6, [r4, 0x9]
strb r7, [r4, 0xA]
strh r3, [r4, 0xC]
strh r2, [r4, 0xE]
strh r3, [r4, 0x10]
strh r2, [r4, 0x12]
strh r3, [r4, 0x14]
strh r2, [r4, 0x16]
ldrb r0, [r5, 0x8]
movs r7, 0xF
adds r1, r7, 0
ands r1, r0
ldrb r2, [r4, 0xB]
movs r0, 0x10
negs r0, r0
mov r8, r0
ands r0, r2
orrs r0, r1
strb r0, [r4, 0xB]
ldrb r1, [r5, 0x8]
lsls r1, 4
ands r0, r7
orrs r0, r1
strb r0, [r4, 0xB]
ldrb r1, [r5, 0xA]
lsls r1, 28
movs r0, 0xF
mov r9, r0
lsrs r1, 28
ldrb r2, [r4, 0x19]
mov r0, r8
ands r0, r2
orrs r0, r1
strb r0, [r4, 0x19]
ldrb r1, [r5, 0xA]
lsrs r1, 4
lsls r1, 4
ands r0, r7
orrs r0, r1
strb r0, [r4, 0x19]
ldrh r0, [r5, 0xC]
strb r0, [r4, 0x7]
ldrh r0, [r5, 0xE]
strb r0, [r4, 0x1D]
ldr r1, =gUnknown_085055CD
ldrb r0, [r5, 0x9]
adds r0, r1
ldrb r1, [r0]
adds r0, r4, 0
adds r0, 0x20
strb r1, [r0]
ldrb r1, [r0]
adds r0, r4, 0
bl FieldObjectSetDirection
adds r0, r4, 0
bl FieldObjectHandleDynamicGraphicsId
ldr r1, =gUnknown_0850557C
ldrb r0, [r4, 0x6]
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
beq _0808D75E
ldrb r2, [r4, 0x19]
adds r0, r7, 0
ands r0, r2
cmp r0, 0
bne _0808D746
lsls r0, r2, 28
lsrs r0, 28
adds r0, 0x1
mov r1, r9
ands r0, r1
mov r1, r8
ands r1, r2
orrs r1, r0
strb r1, [r4, 0x19]
_0808D746:
ldrb r2, [r4, 0x19]
movs r0, 0xF0
ands r0, r2
cmp r0, 0
bne _0808D75E
lsrs r1, r2, 4
adds r1, 0x1
lsls r1, 4
adds r0, r7, 0
ands r0, r2
orrs r0, r1
strb r0, [r4, 0x19]
_0808D75E:
mov r0, sp
ldrb r0, [r0]
_0808D762:
add sp, 0x4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
.pool
thumb_func_end InitFieldObjectStateFromTemplate
thumb_func_start sub_808D77C
sub_808D77C: @ 808D77C
push {r4-r7,lr}