more work on ground_object

This commit is contained in:
Seth Barberee
2025-05-25 15:58:58 -07:00
parent 4cdd58b7ed
commit f7fc91d8af
3 changed files with 747 additions and 994 deletions

View File

@@ -5,978 +5,6 @@
.text
thumb_func_start GroundObject_Add
GroundObject_Add:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x14
mov r8, r1
lsls r0, 16
asrs r7, r0, 16
lsls r2, 16
asrs r2, 16
mov r10, r2
lsls r3, 24
asrs r3, 24
mov r9, r3
ldrb r4, [r1]
cmp r4, 0x1A
bne _080ABDDA
movs r0, 0
movs r1, 0x28
bl GetScriptVarValue
cmp r0, 0x1
bgt _080ABDBC
movs r4, 0x1B
b _080ABDDA
_080ABDBC:
movs r0, 0
movs r1, 0x29
bl GetScriptVarValue
cmp r0, 0
bne _080ABDD4
movs r0, 0
movs r1, 0x27
bl GetScriptVarValue
adds r0, 0x1C
b _080ABDD6
_080ABDD4:
adds r0, 0x2B
_080ABDD6:
lsls r0, 16
asrs r4, r0, 16
_080ABDDA:
lsls r1, r4, 2
ldr r0, _080ABE10
adds r6, r1, r0
cmp r7, 0
bge _080ABE40
cmp r4, 0xE
bgt _080ABDF4
cmp r4, 0xD
blt _080ABDF4
adds r0, r4, 0
bl sub_80ABD48
adds r7, r0, 0
_080ABDF4:
cmp r7, 0
bge _080ABE40
movs r3, 0
ldr r0, _080ABE14
ldr r5, [r0]
movs r0, 0x6
ldrsh r1, [r5, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _080ABE18
movs r7, 0
b _080ABE40
.align 2, 0
_080ABE10: .4byte gGroundObjectTypes
_080ABE14: .4byte gGroundObjects
_080ABE18:
adds r0, r3, 0x1
lsls r0, 16
asrs r3, r0, 16
movs r1, 0xE2
lsls r1, 1
adds r5, r1
cmp r3, 0xF
bgt _080ABE36
movs r2, 0x6
ldrsh r1, [r5, r2]
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _080ABE18
adds r7, r3, 0
_080ABE36:
cmp r7, 0
bge _080ABE40
movs r0, 0x1
negs r0, r0
b _080AC142
_080ABE40:
ldr r1, _080ABEA8
lsls r0, r7, 3
subs r0, r7
lsls r0, 4
adds r0, r7
lsls r0, 2
ldr r1, [r1]
adds r5, r1, r0
ldr r1, _080ABEAC
mov r3, r8
ldrb r0, [r3]
str r0, [sp]
movs r2, 0
ldrsh r0, [r6, r2]
str r0, [sp, 0x4]
mov r3, r10
str r3, [sp, 0x8]
mov r0, r9
str r0, [sp, 0xC]
movs r0, 0
adds r2, r7, 0
adds r3, r4, 0
bl Log
movs r2, 0
movs r3, 0x6
ldrsh r1, [r5, r3]
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _080ABE80
movs r2, 0x1
_080ABE80:
str r2, [sp, 0x10]
strh r7, [r5, 0x4]
strh r4, [r5, 0x6]
mov r0, r10
strh r0, [r5, 0x8]
mov r1, r9
strb r1, [r5, 0xA]
ldrh r0, [r6]
subs r0, 0x1
lsls r0, 16
asrs r0, 16
cmp r0, 0xE
bls _080ABE9C
b _080ABF8C
_080ABE9C:
lsls r0, 2
ldr r1, _080ABEB0
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080ABEA8: .4byte gGroundObjects
_080ABEAC: .4byte gUnknown_8118448
_080ABEB0: .4byte _080ABEB4
.align 2, 0
_080ABEB4:
.4byte _080ABEF0
.4byte _080ABF7C
.4byte _080ABF46
.4byte _080ABF54
.4byte _080ABF54
.4byte _080ABF5E
.4byte _080ABF68
.4byte _080ABF72
.4byte _080ABF3C
.4byte _080ABEFA
.4byte _080ABEF0
.4byte _080ABF06
.4byte _080ABF2C
.4byte _080ABF1E
.4byte _080ABF12
_080ABEF0:
movs r2, 0x8E
lsls r2, 1
adds r1, r5, r2
movs r0, 0
b _080ABF94
_080ABEFA:
movs r3, 0x8E
lsls r3, 1
adds r1, r5, r3
movs r0, 0x80
lsls r0, 10
b _080ABF94
_080ABF06:
movs r0, 0x8E
lsls r0, 1
adds r1, r5, r0
movs r0, 0x80
lsls r0, 11
b _080ABF94
_080ABF12:
movs r2, 0x8E
lsls r2, 1
adds r1, r5, r2
movs r0, 0x83
lsls r0, 18
b _080ABF94
_080ABF1E:
movs r3, 0x8E
lsls r3, 1
adds r1, r5, r3
ldr r0, _080ABF28
b _080ABF94
.align 2, 0
_080ABF28: .4byte 0x220c0000
_080ABF2C:
movs r0, 0x8E
lsls r0, 1
adds r1, r5, r0
ldr r0, _080ABF38
b _080ABF94
.align 2, 0
_080ABF38: .4byte 0x20010000
_080ABF3C:
movs r2, 0x8E
lsls r2, 1
adds r1, r5, r2
movs r0, 0x5
b _080ABF94
_080ABF46:
movs r3, 0x8E
lsls r3, 1
adds r1, r5, r3
ldr r0, _080ABF50
b _080ABF94
.align 2, 0
_080ABF50: .4byte 0x22000184
_080ABF54:
movs r0, 0x8E
lsls r0, 1
adds r1, r5, r0
adds r0, 0x68
b _080ABF94
_080ABF5E:
movs r2, 0x8E
lsls r2, 1
adds r1, r5, r2
movs r0, 0x44
b _080ABF94
_080ABF68:
movs r3, 0x8E
lsls r3, 1
adds r1, r5, r3
movs r0, 0x84
b _080ABF94
_080ABF72:
movs r0, 0x8E
lsls r0, 1
adds r1, r5, r0
adds r0, 0x64
b _080ABF94
_080ABF7C:
movs r2, 0x8E
lsls r2, 1
adds r1, r5, r2
ldr r0, _080ABF88
b _080ABF94
.align 2, 0
_080ABF88: .4byte 0x020000c4
_080ABF8C:
movs r3, 0x8E
lsls r3, 1
adds r1, r5, r3
ldr r0, _080ABFA8
_080ABF94:
str r0, [r1]
ldrb r0, [r6, 0x2]
cmp r0, 0
bne _080ABFAC
mov r1, r8
ldrb r0, [r1, 0x2]
lsls r0, 11
str r0, [r5, 0xC]
ldrb r0, [r1, 0x3]
b _080ABFB4
.align 2, 0
_080ABFA8: .4byte 0x02000185
_080ABFAC:
ldrb r0, [r6, 0x2]
lsls r0, 11
str r0, [r5, 0xC]
ldrb r0, [r6, 0x3]
_080ABFB4:
lsls r0, 11
str r0, [r5, 0x10]
ldr r0, [r5, 0xC]
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
str r0, [r5, 0x14]
ldr r0, [r5, 0x10]
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
str r0, [r5, 0x18]
mov r2, r8
ldrb r0, [r2, 0x1]
strb r0, [r5, 0x1C]
adds r2, 0x4
adds r4, r5, 0
adds r4, 0x20
ldrb r1, [r2, 0x2]
movs r0, 0x4
ands r0, r1
cmp r0, 0
bne _080ABFFC
mov r3, r8
ldrb r0, [r3, 0x4]
lsls r3, r0, 11
str r3, [r5, 0x20]
ldrb r1, [r2, 0x2]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _080ABFFC
movs r1, 0x80
lsls r1, 3
adds r0, r3, r1
str r0, [r5, 0x20]
_080ABFFC:
ldrb r1, [r2, 0x3]
movs r0, 0x4
ands r0, r1
cmp r0, 0
bne _080AC01E
ldrb r0, [r2, 0x1]
lsls r3, r0, 11
str r3, [r4, 0x4]
ldrb r1, [r2, 0x3]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _080AC01E
movs r2, 0x80
lsls r2, 3
adds r0, r3, r2
str r0, [r4, 0x4]
_080AC01E:
ldr r3, [sp, 0x10]
cmp r3, 0
beq _080AC076
ldrb r1, [r5, 0x1C]
movs r2, 0x90
lsls r2, 1
adds r0, r5, r2
movs r3, 0
strb r1, [r0]
movs r0, 0x92
lsls r0, 1
adds r2, r5, r0
ldr r0, [r5, 0x20]
ldr r1, [r5, 0x14]
subs r0, r1
str r0, [r2]
movs r1, 0x96
lsls r1, 1
adds r2, r5, r1
ldr r0, [r5, 0x20]
ldr r1, [r5, 0x14]
adds r0, r1
str r0, [r2]
movs r0, 0x94
lsls r0, 1
adds r2, r5, r0
ldr r0, [r5, 0x24]
ldr r1, [r5, 0x18]
subs r0, r1
str r0, [r2]
movs r1, 0x98
lsls r1, 1
adds r2, r5, r1
ldr r0, [r5, 0x24]
ldr r1, [r5, 0x18]
adds r0, r1
str r0, [r2]
movs r2, 0x9A
lsls r2, 1
adds r1, r5, r2
adds r2, 0x4
adds r0, r5, r2
str r3, [r0]
str r3, [r1]
_080AC076:
adds r0, r5, 0
adds r0, 0x28
adds r1, r5, 0
adds r1, 0x30
bl GetCurrentDungeonBounds
ldr r3, [sp, 0x10]
cmp r3, 0
beq _080AC0C0
movs r0, 0x9F
lsls r0, 1
adds r1, r5, r0
movs r2, 0
movs r0, 0x80
lsls r0, 4
strh r0, [r1]
movs r3, 0x9E
lsls r3, 1
adds r1, r5, r3
movs r0, 0x1
strb r0, [r1]
movs r1, 0xA0
lsls r1, 1
adds r0, r5, r1
strh r2, [r0]
movs r2, 0xA2
lsls r2, 1
adds r0, r5, r2
movs r3, 0x6
ldrsh r2, [r5, r3]
movs r3, 0x8E
lsls r3, 1
adds r1, r5, r3
ldr r3, [r1]
adds r1, r7, 0
bl sub_80A75CC
_080AC0C0:
adds r4, r5, 0
adds r4, 0x38
ldr r1, _080AC154
mov r0, r9
str r0, [sp]
adds r0, r4, 0
adds r2, r5, 0
mov r3, r10
bl InitActionWithParams
adds r6, r4, 0
mov r1, r8
ldr r2, [r1, 0xC]
cmp r2, 0
bne _080AC0F2
movs r2, 0xA2
lsls r2, 1
adds r0, r5, r2
bl SpriteHasPokemonSize_80A66A4
lsls r0, 24
ldr r2, _080AC158
cmp r0, 0
beq _080AC0F2
ldr r2, _080AC15C
_080AC0F2:
adds r0, r6, 0
movs r1, 0x1
bl SetPredefinedScript
adds r1, r4, 0
mov r3, r8
ldr r2, [r3, 0x10]
cmp r2, 0
bne _080AC108
ldr r0, _080AC160
ldr r2, [r0, 0x38]
_080AC108:
adds r0, r1, 0
movs r1, 0x2
bl SetPredefinedScript
mov r0, r8
ldr r2, [r0, 0x14]
cmp r2, 0
bne _080AC11C
ldr r0, _080AC160
ldr r2, [r0, 0x68]
_080AC11C:
adds r0, r4, 0
movs r1, 0x3
bl SetPredefinedScript
mov r1, r8
ldr r2, [r1, 0x8]
cmp r2, 0
beq _080AC140
adds r0, r4, 0
movs r1, 0
bl SetPredefinedScript
ldr r3, _080AC164
adds r0, r4, 0
movs r1, 0
movs r2, 0
bl ExecutePredefinedScript
_080AC140:
adds r0, r7, 0
_080AC142:
add sp, 0x14
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080AC154: .4byte gGroundObjectCallbacks
_080AC158: .4byte gUnknown_81182F4
_080AC15C: .4byte gUnknown_8118350
_080AC160: .4byte gFunctionScriptTable
_080AC164: .4byte gUnknown_81184A4
thumb_func_end GroundObject_Add
thumb_func_start GroundObject_Delete
GroundObject_Delete:
push {r4,lr}
adds r2, r0, 0
lsls r2, 16
asrs r2, 16
ldr r1, _080AC1A4
lsls r0, r2, 3
subs r0, r2
lsls r0, 4
adds r0, r2
lsls r0, 2
ldr r1, [r1]
adds r4, r1, r0
ldr r1, _080AC1A8
movs r0, 0
bl Log
movs r1, 0xA2
lsls r1, 1
adds r0, r4, r1
bl sub_80A7658
adds r0, r4, 0
adds r0, 0x38
bl InitAction2
ldr r0, _080AC1AC
strh r0, [r4, 0x6]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080AC1A4: .4byte gGroundObjects
_080AC1A8: .4byte gUnknown_81184B0
_080AC1AC: .4byte 0x0000ffff
thumb_func_end GroundObject_Delete
thumb_func_start sub_80AC1B0
sub_80AC1B0:
push {lr}
adds r3, r1, 0
lsls r0, 16
asrs r0, 16
ldr r2, _080AC1F0
lsls r1, r0, 3
subs r1, r0
lsls r1, 4
adds r1, r0
lsls r1, 2
ldr r0, [r2]
adds r2, r0, r1
movs r0, 0x6
ldrsh r1, [r2, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _080AC1EA
movs r1, 0x8E
lsls r1, 1
adds r0, r2, r1
ldr r1, [r0]
orrs r1, r3
str r1, [r0]
movs r3, 0xA2
lsls r3, 1
adds r0, r2, r3
bl sub_80A6688
_080AC1EA:
pop {r0}
bx r0
.align 2, 0
_080AC1F0: .4byte gGroundObjects
thumb_func_end sub_80AC1B0
thumb_func_start sub_80AC1F4
sub_80AC1F4:
push {r4,lr}
adds r4, r1, 0
lsls r0, 16
asrs r0, 16
ldr r2, _080AC238
lsls r1, r0, 3
subs r1, r0
lsls r1, 4
adds r1, r0
lsls r1, 2
ldr r0, [r2]
adds r3, r0, r1
movs r0, 0x6
ldrsh r1, [r3, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _080AC232
movs r0, 0x8E
lsls r0, 1
adds r2, r3, r0
ldr r0, _080AC23C
eors r0, r4
ldr r1, [r2]
ands r1, r0
str r1, [r2]
movs r2, 0xA2
lsls r2, 1
adds r0, r3, r2
bl sub_80A6688
_080AC232:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080AC238: .4byte gGroundObjects
_080AC23C: .4byte 0x337fffff
thumb_func_end sub_80AC1F4
thumb_func_start sub_80AC240
sub_80AC240:
push {lr}
lsls r0, 16
asrs r0, 16
ldr r2, _080AC268
lsls r1, r0, 3
subs r1, r0
lsls r1, 4
adds r1, r0
lsls r1, 2
ldr r0, [r2]
adds r2, r0, r1
movs r0, 0x6
ldrsh r1, [r2, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _080AC26C
movs r0, 0
b _080AC270
.align 2, 0
_080AC268: .4byte gGroundObjects
_080AC26C:
adds r0, r2, 0
adds r0, 0x38
_080AC270:
pop {r1}
bx r1
thumb_func_end sub_80AC240
thumb_func_start sub_80AC274
sub_80AC274:
push {r4,lr}
adds r4, r1, 0
lsls r0, 16
asrs r0, 16
lsls r2, 16
asrs r3, r2, 16
ldr r2, _080AC2A0
lsls r1, r0, 3
subs r1, r0
lsls r1, 4
adds r1, r0
lsls r1, 2
ldr r0, [r2]
adds r2, r0, r1
movs r0, 0x6
ldrsh r1, [r2, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _080AC2A4
movs r0, 0
b _080AC2B4
.align 2, 0
_080AC2A0: .4byte gGroundObjects
_080AC2A4:
adds r0, r2, 0
adds r0, 0x38
adds r1, r4, 0
adds r2, r3, 0
bl GetPredefinedScript
lsls r0, 24
lsrs r0, 24
_080AC2B4:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80AC274
thumb_func_start GroundObject_ExecuteScript
GroundObject_ExecuteScript:
push {r4-r6,lr}
adds r3, r0, 0
adds r5, r1, 0
adds r6, r2, 0
lsls r3, 16
asrs r3, 16
ldr r1, _080AC2F4
lsls r0, r3, 3
subs r0, r3
lsls r0, 4
adds r0, r3
lsls r0, 2
ldr r1, [r1]
adds r4, r1, r0
ldr r1, _080AC2F8
movs r0, 0
adds r2, r3, 0
bl Log
movs r0, 0x6
ldrsh r1, [r4, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _080AC2FC
movs r0, 0
b _080AC314
.align 2, 0
_080AC2F4: .4byte gGroundObjects
_080AC2F8: .4byte gUnknown_81184CC
_080AC2FC:
adds r0, r4, 0
adds r0, 0x38
ldr r3, _080AC31C
adds r1, r5, 0
adds r2, r6, 0
bl GroundScript_ExecutePP
movs r0, 0x9E
lsls r0, 1
adds r1, r4, r0
movs r0, 0x1
strb r0, [r1]
_080AC314:
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_080AC31C: .4byte gUnknown_8118504
thumb_func_end GroundObject_ExecuteScript
thumb_func_start GroundObjectsNotifyAll
GroundObjectsNotifyAll:
push {r4-r7,lr}
mov r7, r8
push {r7}
lsls r0, 16
asrs r7, r0, 16
ldr r0, _080AC374
ldr r4, [r0]
movs r5, 0
movs r0, 0x1
negs r0, r0
mov r8, r0
movs r6, 0x80
lsls r6, 9
_080AC33A:
movs r1, 0x6
ldrsh r0, [r4, r1]
cmp r0, r8
beq _080AC352
adds r0, r4, 0
adds r0, 0x38
adds r1, r7, 0
bl GroundScriptNotify
orrs r5, r0
lsls r0, r5, 24
lsrs r5, r0, 24
_080AC352:
adds r0, r6, 0
movs r1, 0x80
lsls r1, 9
adds r6, r1
asrs r0, 16
movs r1, 0xE2
lsls r1, 1
adds r4, r1
cmp r0, 0xF
ble _080AC33A
adds r0, r5, 0
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080AC374: .4byte gGroundObjects
thumb_func_end GroundObjectsNotifyAll
thumb_func_start GroundObjectsCancellAll
GroundObjectsCancellAll:
push {r4-r7,lr}
ldr r0, _080AC3BC
ldr r4, [r0]
movs r5, 0
movs r7, 0x1
negs r7, r7
movs r6, 0x80
lsls r6, 9
_080AC388:
movs r1, 0x6
ldrsh r0, [r4, r1]
cmp r0, r7
beq _080AC39E
adds r0, r4, 0
adds r0, 0x38
bl GroundScript_Cancel
orrs r5, r0
lsls r0, r5, 24
lsrs r5, r0, 24
_080AC39E:
adds r0, r6, 0
movs r1, 0x80
lsls r1, 9
adds r6, r1
asrs r0, 16
movs r1, 0xE2
lsls r1, 1
adds r4, r1
cmp r0, 0xF
ble _080AC388
adds r0, r5, 0
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080AC3BC: .4byte gGroundObjects
thumb_func_end GroundObjectsCancellAll
thumb_func_start sub_80AC3C0
sub_80AC3C0:
lsls r0, 16
asrs r0, 16
ldr r2, _080AC3DC
lsls r1, r0, 3
subs r1, r0
lsls r1, 4
adds r1, r0
lsls r1, 2
ldr r0, [r2]
adds r0, r1
movs r1, 0x6
ldrsh r0, [r0, r1]
bx lr
.align 2, 0
_080AC3DC: .4byte gGroundObjects
thumb_func_end sub_80AC3C0
thumb_func_start sub_80AC3E0
sub_80AC3E0:
lsls r0, 16
asrs r0, 16
ldr r3, _080AC404
lsls r2, r0, 3
subs r2, r0
lsls r2, 4
adds r2, r0
lsls r2, 2
ldr r0, [r3]
adds r0, r2
movs r3, 0x8E
lsls r3, 1
adds r2, r0, r3
ldr r2, [r2]
str r2, [r1]
movs r1, 0x6
ldrsh r0, [r0, r1]
bx lr
.align 2, 0
_080AC404: .4byte gGroundObjects
thumb_func_end sub_80AC3E0
thumb_func_start sub_80AC408
sub_80AC408:
push {lr}
adds r3, r1, 0
lsls r0, 16
asrs r0, 16
ldr r2, _080AC434
lsls r1, r0, 3
subs r1, r0
lsls r1, 4
adds r1, r0
lsls r1, 2
ldr r0, [r2]
adds r2, r0, r1
movs r0, 0x6
ldrsh r1, [r2, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _080AC438
movs r0, 0
str r0, [r3]
str r0, [r3, 0x4]
b _080AC440
.align 2, 0
_080AC434: .4byte gGroundObjects
_080AC438:
ldr r0, [r2, 0xC]
ldr r1, [r2, 0x10]
str r0, [r3]
str r1, [r3, 0x4]
_080AC440:
movs r1, 0x6
ldrsh r0, [r2, r1]
pop {r1}
bx r1
thumb_func_end sub_80AC408
thumb_func_start sub_80AC448
sub_80AC448:
push {lr}
adds r3, r1, 0
lsls r0, 16
asrs r0, 16
ldr r2, _080AC474
lsls r1, r0, 3
subs r1, r0
lsls r1, 4
adds r1, r0
lsls r1, 2
ldr r0, [r2]
adds r2, r0, r1
movs r0, 0x6
ldrsh r1, [r2, r0]
movs r0, 0x1
negs r0, r0
cmp r1, r0
bne _080AC478
movs r0, 0
str r0, [r3]
b _080AC492
.align 2, 0
_080AC474: .4byte gGroundObjects
_080AC478:
movs r1, 0x92
lsls r1, 1
adds r0, r2, r1
ldr r0, [r0]
ldr r1, [r2, 0x14]
adds r0, r1
str r0, [r3]
movs r1, 0x94
lsls r1, 1
adds r0, r2, r1
ldr r0, [r0]
ldr r1, [r2, 0x18]
adds r0, r1
_080AC492:
str r0, [r3, 0x4]
movs r1, 0x6
ldrsh r0, [r2, r1]
pop {r1}
bx r1
thumb_func_end sub_80AC448
thumb_func_start sub_80AC49C
sub_80AC49C:
push {r4,lr}
lsls r0, 16
asrs r0, 16
ldr r3, _080AC4C4
lsls r2, r0, 3
subs r2, r0
lsls r2, 4
adds r2, r0
lsls r2, 2
ldr r4, [r3]
adds r4, r2
adds r0, r4, 0
bl TryMoveObjectRelative_80AC6AC
movs r1, 0x6
ldrsh r0, [r4, r1]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080AC4C4: .4byte gGroundObjects
thumb_func_end sub_80AC49C
thumb_func_start sub_80AC4C8
sub_80AC4C8:
push {r4-r7,lr}

View File

@@ -1,7 +1,15 @@
#include "gba/types.h"
#include "global.h"
#include "structs/str_ground_script.h"
#include "ground_script.h"
#include "ground_sprite.h"
#include "memory.h"
// TODO: figure out if this is used anywhere else
struct GroundObjectSub {
s32 a0[2];
};
typedef struct GroundObject {
// size: 0x1C4
u8 unk0[4];
@@ -9,15 +17,26 @@ typedef struct GroundObject {
s16 unk6; // kind
s16 unk8; // scriptID / group
s8 unkA; // sector
u8 fillB[0x14 - 0xB];
u32 unk14;
u32 unk18;
u8 fill1C[0x38 - 0x1C];
u8 unkB;
struct GroundObjectSub unkC;
PixelPos unk14;
//s32 unk18;
u8 unk1C;
PixelPos unk20;
s32 unk28[2];
s32 unk30[2];
Action unk38;
u8 unk11C[0x124 - 0x11C];
u32 unk124[2];
u8 unk12C[0x144 - 0x12C];
u8 unk144[0x1C4 - 0x144];
u32 flags;
u8 unk120;
PixelPos unk124;
u32 unk12C;
u32 unk130;
PixelPos unk134;
//u32 unk138;
u8 unk13C;
u16 unk13E;
u16 unk140;
struct UnkGroundSpriteStruct unk144;
} GroundObject;
IWRAM_INIT GroundObject *gGroundObjects = NULL;
@@ -25,13 +44,19 @@ IWRAM_INIT GroundObject *gGroundObjects = NULL;
void DeleteGroundObjects(void);
void GroundObject_Delete(s32);
extern u8 gUnknown_811842C[];
extern u8 gUnknown_8118414[];
extern u8 gUnknown_81183F0[];
s16 GroundObject_Add(s32 id, const GroundObjectData*, s32 group, s32 sector);
extern DebugLocation gUnknown_81183E4;
extern u8 gUnknown_81183F0[];
extern u8 gUnknown_8118414[];
extern u8 gUnknown_811842C[];
extern u8 gUnknown_81184B0[];
const struct GroundScriptHeader *GetGroundScript(s16 a0, DebugLocation *);
bool8 IsOnscreen_80A675C(u8 *, u32 *);
void sub_80A7658(struct UnkGroundSpriteStruct *);
extern bool8 GroundScriptNotify(Action*, s32);
extern bool8 GroundScript_Cancel(Action *r0);
s16 GroundObject_Add(s32 id, const GroundObjectData*, s32 group, s32 sector);
void AllocGroundObjects(void)
{
@@ -125,7 +150,7 @@ void GroundObject_CancelBlank(void)
{
s32 index;
GroundObject *ptr;
u32 stack[2];
PixelPos stack;
Log('\0',gUnknown_811842C);
@@ -135,9 +160,9 @@ void GroundObject_CancelBlank(void)
{
if(ptr->unk6 != -1)
{
stack[0] = ptr->unk124[0] + ptr->unk14;
stack[1] = ptr->unk124[1] + ptr->unk18;
if(!IsOnscreen_80A675C(ptr->unk144, stack))
stack.x = ptr->unk124.x + ptr->unk14.x;
stack.y = ptr->unk124.y + ptr->unk14.y;
if(!IsOnscreen_80A675C(&ptr->unk144, &stack))
GroundObject_Delete(index);
}
}
@@ -159,3 +184,678 @@ s32 sub_80ABD48(s32 r0)
return -1;
}
NAKED
s16 GroundObject_Add(s32 id, const GroundObjectData *objectData, s32 group, s32 sector)
{
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, 0x14 \n"
" mov r8, r1 \n"
" lsls r0, 16 \n"
" asrs r7, r0, 16 \n"
" lsls r2, 16 \n"
" asrs r2, 16 \n"
" mov r10, r2 \n"
" lsls r3, 24 \n"
" asrs r3, 24 \n"
" mov r9, r3 \n"
" ldrb r4, [r1] \n"
" cmp r4, 0x1A \n"
" bne _080ABDDA \n"
" movs r0, 0 \n"
" movs r1, 0x28 \n"
" bl GetScriptVarValue \n"
" cmp r0, 0x1 \n"
" bgt _080ABDBC \n"
" movs r4, 0x1B \n"
" b _080ABDDA \n"
"_080ABDBC: \n"
" movs r0, 0 \n"
" movs r1, 0x29 \n"
" bl GetScriptVarValue \n"
" cmp r0, 0 \n"
" bne _080ABDD4 \n"
" movs r0, 0 \n"
" movs r1, 0x27 \n"
" bl GetScriptVarValue \n"
" adds r0, 0x1C \n"
" b _080ABDD6 \n"
"_080ABDD4: \n"
" adds r0, 0x2B \n"
"_080ABDD6: \n"
" lsls r0, 16 \n"
" asrs r4, r0, 16 \n"
"_080ABDDA: \n"
" lsls r1, r4, 2 \n"
" ldr r0, _080ABE10 \n"
" adds r6, r1, r0 \n"
" cmp r7, 0 \n"
" bge _080ABE40 \n"
" cmp r4, 0xE \n"
" bgt _080ABDF4 \n"
" cmp r4, 0xD \n"
" blt _080ABDF4 \n"
" adds r0, r4, 0 \n"
" bl sub_80ABD48 \n"
" adds r7, r0, 0 \n"
"_080ABDF4: \n"
" cmp r7, 0 \n"
" bge _080ABE40 \n"
" movs r3, 0 \n"
" ldr r0, _080ABE14 \n"
" ldr r5, [r0] \n"
" movs r0, 0x6 \n"
" ldrsh r1, [r5, r0] \n"
" movs r0, 0x1 \n"
" negs r0, r0 \n"
" cmp r1, r0 \n"
" bne _080ABE18 \n"
" movs r7, 0 \n"
" b _080ABE40 \n"
" .align 2, 0 \n"
"_080ABE10: .4byte gGroundObjectTypes\n"
"_080ABE14: .4byte gGroundObjects \n"
"_080ABE18: \n"
" adds r0, r3, 0x1 \n"
" lsls r0, 16 \n"
" asrs r3, r0, 16 \n"
" movs r1, 0xE2 \n"
" lsls r1, 1 \n"
" adds r5, r1 \n"
" cmp r3, 0xF \n"
" bgt _080ABE36 \n"
" movs r2, 0x6 \n"
" ldrsh r1, [r5, r2] \n"
" movs r0, 0x1 \n"
" negs r0, r0 \n"
" cmp r1, r0 \n"
" bne _080ABE18 \n"
" adds r7, r3, 0 \n"
"_080ABE36: \n"
" cmp r7, 0 \n"
" bge _080ABE40 \n"
" movs r0, 0x1 \n"
" negs r0, r0 \n"
" b _080AC142 \n"
"_080ABE40: \n"
" ldr r1, _080ABEA8 \n"
" lsls r0, r7, 3 \n"
" subs r0, r7 \n"
" lsls r0, 4 \n"
" adds r0, r7 \n"
" lsls r0, 2 \n"
" ldr r1, [r1] \n"
" adds r5, r1, r0 \n"
" ldr r1, _080ABEAC \n"
" mov r3, r8 \n"
" ldrb r0, [r3] \n"
" str r0, [sp] \n"
" movs r2, 0 \n"
" ldrsh r0, [r6, r2] \n"
" str r0, [sp, 0x4] \n"
" mov r3, r10 \n"
" str r3, [sp, 0x8] \n"
" mov r0, r9 \n"
" str r0, [sp, 0xC] \n"
" movs r0, 0 \n"
" adds r2, r7, 0 \n"
" adds r3, r4, 0 \n"
" bl Log \n"
" movs r2, 0 \n"
" movs r3, 0x6 \n"
" ldrsh r1, [r5, r3] \n"
" movs r0, 0x1 \n"
" negs r0, r0 \n"
" cmp r1, r0 \n"
" bne _080ABE80 \n"
" movs r2, 0x1 \n"
"_080ABE80: \n"
" str r2, [sp, 0x10] \n"
" strh r7, [r5, 0x4] \n"
" strh r4, [r5, 0x6] \n"
" mov r0, r10 \n"
" strh r0, [r5, 0x8] \n"
" mov r1, r9 \n"
" strb r1, [r5, 0xA] \n"
" ldrh r0, [r6] \n"
" subs r0, 0x1 \n"
" lsls r0, 16 \n"
" asrs r0, 16 \n"
" cmp r0, 0xE \n"
" bls _080ABE9C \n"
" b _080ABF8C \n"
"_080ABE9C: \n"
" lsls r0, 2 \n"
" ldr r1, _080ABEB0 \n"
" adds r0, r1 \n"
" ldr r0, [r0] \n"
" mov pc, r0 \n"
" .align 2, 0 \n"
"_080ABEA8: .4byte gGroundObjects \n"
"_080ABEAC: .4byte gUnknown_8118448\n"
"_080ABEB0: .4byte _080ABEB4 \n"
" .align 2, 0 \n"
"_080ABEB4: \n"
" .4byte _080ABEF0 \n"
" .4byte _080ABF7C \n"
" .4byte _080ABF46 \n"
" .4byte _080ABF54 \n"
" .4byte _080ABF54 \n"
" .4byte _080ABF5E \n"
" .4byte _080ABF68 \n"
" .4byte _080ABF72 \n"
" .4byte _080ABF3C \n"
" .4byte _080ABEFA \n"
" .4byte _080ABEF0 \n"
" .4byte _080ABF06 \n"
" .4byte _080ABF2C \n"
" .4byte _080ABF1E \n"
" .4byte _080ABF12 \n"
"_080ABEF0: \n"
" movs r2, 0x8E \n"
" lsls r2, 1 \n"
" adds r1, r5, r2 \n"
" movs r0, 0 \n"
" b _080ABF94 \n"
"_080ABEFA: \n"
" movs r3, 0x8E \n"
" lsls r3, 1 \n"
" adds r1, r5, r3 \n"
" movs r0, 0x80 \n"
" lsls r0, 10 \n"
" b _080ABF94 \n"
"_080ABF06: \n"
" movs r0, 0x8E \n"
" lsls r0, 1 \n"
" adds r1, r5, r0 \n"
" movs r0, 0x80 \n"
" lsls r0, 11 \n"
" b _080ABF94 \n"
"_080ABF12: \n"
" movs r2, 0x8E \n"
" lsls r2, 1 \n"
" adds r1, r5, r2 \n"
" movs r0, 0x83 \n"
" lsls r0, 18 \n"
" b _080ABF94 \n"
"_080ABF1E: \n"
" movs r3, 0x8E \n"
" lsls r3, 1 \n"
" adds r1, r5, r3 \n"
" ldr r0, _080ABF28 \n"
" b _080ABF94 \n"
" .align 2, 0 \n"
"_080ABF28: .4byte 0x220c0000 \n"
"_080ABF2C: \n"
" movs r0, 0x8E \n"
" lsls r0, 1 \n"
" adds r1, r5, r0 \n"
" ldr r0, _080ABF38 \n"
" b _080ABF94 \n"
" .align 2, 0 \n"
"_080ABF38: .4byte 0x20010000 \n"
"_080ABF3C: \n"
" movs r2, 0x8E \n"
" lsls r2, 1 \n"
" adds r1, r5, r2 \n"
" movs r0, 0x5 \n"
" b _080ABF94 \n"
"_080ABF46: \n"
" movs r3, 0x8E \n"
" lsls r3, 1 \n"
" adds r1, r5, r3 \n"
" ldr r0, _080ABF50 \n"
" b _080ABF94 \n"
" .align 2, 0 \n"
"_080ABF50: .4byte 0x22000184 \n"
"_080ABF54: \n"
" movs r0, 0x8E \n"
" lsls r0, 1 \n"
" adds r1, r5, r0 \n"
" adds r0, 0x68 \n"
" b _080ABF94 \n"
"_080ABF5E: \n"
" movs r2, 0x8E \n"
" lsls r2, 1 \n"
" adds r1, r5, r2 \n"
" movs r0, 0x44 \n"
" b _080ABF94 \n"
"_080ABF68: \n"
" movs r3, 0x8E \n"
" lsls r3, 1 \n"
" adds r1, r5, r3 \n"
" movs r0, 0x84 \n"
" b _080ABF94 \n"
"_080ABF72: \n"
" movs r0, 0x8E \n"
" lsls r0, 1 \n"
" adds r1, r5, r0 \n"
" adds r0, 0x64 \n"
" b _080ABF94 \n"
"_080ABF7C: \n"
" movs r2, 0x8E \n"
" lsls r2, 1 \n"
" adds r1, r5, r2 \n"
" ldr r0, _080ABF88 \n"
" b _080ABF94 \n"
" .align 2, 0 \n"
"_080ABF88: .4byte 0x020000c4 \n"
"_080ABF8C: \n"
" movs r3, 0x8E \n"
" lsls r3, 1 \n"
" adds r1, r5, r3 \n"
" ldr r0, _080ABFA8 \n"
"_080ABF94: \n"
" str r0, [r1] \n"
" ldrb r0, [r6, 0x2] \n"
" cmp r0, 0 \n"
" bne _080ABFAC \n"
" mov r1, r8 \n"
" ldrb r0, [r1, 0x2] \n"
" lsls r0, 11 \n"
" str r0, [r5, 0xC] \n"
" ldrb r0, [r1, 0x3] \n"
" b _080ABFB4 \n"
" .align 2, 0 \n"
"_080ABFA8: .4byte 0x02000185 \n"
"_080ABFAC: \n"
" ldrb r0, [r6, 0x2] \n"
" lsls r0, 11 \n"
" str r0, [r5, 0xC] \n"
" ldrb r0, [r6, 0x3] \n"
"_080ABFB4: \n"
" lsls r0, 11 \n"
" str r0, [r5, 0x10] \n"
" ldr r0, [r5, 0xC] \n"
" lsrs r1, r0, 31 \n"
" adds r0, r1 \n"
" asrs r0, 1 \n"
" str r0, [r5, 0x14] \n"
" ldr r0, [r5, 0x10] \n"
" lsrs r1, r0, 31 \n"
" adds r0, r1 \n"
" asrs r0, 1 \n"
" str r0, [r5, 0x18] \n"
" mov r2, r8 \n"
" ldrb r0, [r2, 0x1] \n"
" strb r0, [r5, 0x1C] \n"
" adds r2, 0x4 \n"
" adds r4, r5, 0 \n"
" adds r4, 0x20 \n"
" ldrb r1, [r2, 0x2] \n"
" movs r0, 0x4 \n"
" ands r0, r1 \n"
" cmp r0, 0 \n"
" bne _080ABFFC \n"
" mov r3, r8 \n"
" ldrb r0, [r3, 0x4] \n"
" lsls r3, r0, 11 \n"
" str r3, [r5, 0x20] \n"
" ldrb r1, [r2, 0x2] \n"
" movs r0, 0x2 \n"
" ands r0, r1 \n"
" cmp r0, 0 \n"
" beq _080ABFFC \n"
" movs r1, 0x80 \n"
" lsls r1, 3 \n"
" adds r0, r3, r1 \n"
" str r0, [r5, 0x20] \n"
"_080ABFFC: \n"
" ldrb r1, [r2, 0x3] \n"
" movs r0, 0x4 \n"
" ands r0, r1 \n"
" cmp r0, 0 \n"
" bne _080AC01E \n"
" ldrb r0, [r2, 0x1] \n"
" lsls r3, r0, 11 \n"
" str r3, [r4, 0x4] \n"
" ldrb r1, [r2, 0x3] \n"
" movs r0, 0x2 \n"
" ands r0, r1 \n"
" cmp r0, 0 \n"
" beq _080AC01E \n"
" movs r2, 0x80 \n"
" lsls r2, 3 \n"
" adds r0, r3, r2 \n"
" str r0, [r4, 0x4] \n"
"_080AC01E: \n"
" ldr r3, [sp, 0x10] \n"
" cmp r3, 0 \n"
" beq _080AC076 \n"
" ldrb r1, [r5, 0x1C] \n"
" movs r2, 0x90 \n"
" lsls r2, 1 \n"
" adds r0, r5, r2 \n"
" movs r3, 0 \n"
" strb r1, [r0] \n"
" movs r0, 0x92 \n"
" lsls r0, 1 \n"
" adds r2, r5, r0 \n"
" ldr r0, [r5, 0x20] \n"
" ldr r1, [r5, 0x14] \n"
" subs r0, r1 \n"
" str r0, [r2] \n"
" movs r1, 0x96 \n"
" lsls r1, 1 \n"
" adds r2, r5, r1 \n"
" ldr r0, [r5, 0x20] \n"
" ldr r1, [r5, 0x14] \n"
" adds r0, r1 \n"
" str r0, [r2] \n"
" movs r0, 0x94 \n"
" lsls r0, 1 \n"
" adds r2, r5, r0 \n"
" ldr r0, [r5, 0x24] \n"
" ldr r1, [r5, 0x18] \n"
" subs r0, r1 \n"
" str r0, [r2] \n"
" movs r1, 0x98 \n"
" lsls r1, 1 \n"
" adds r2, r5, r1 \n"
" ldr r0, [r5, 0x24] \n"
" ldr r1, [r5, 0x18] \n"
" adds r0, r1 \n"
" str r0, [r2] \n"
" movs r2, 0x9A \n"
" lsls r2, 1 \n"
" adds r1, r5, r2 \n"
" adds r2, 0x4 \n"
" adds r0, r5, r2 \n"
" str r3, [r0] \n"
" str r3, [r1] \n"
"_080AC076: \n"
" adds r0, r5, 0 \n"
" adds r0, 0x28 \n"
" adds r1, r5, 0 \n"
" adds r1, 0x30 \n"
" bl GetCurrentDungeonBounds \n"
" ldr r3, [sp, 0x10] \n"
" cmp r3, 0 \n"
" beq _080AC0C0 \n"
" movs r0, 0x9F \n"
" lsls r0, 1 \n"
" adds r1, r5, r0 \n"
" movs r2, 0 \n"
" movs r0, 0x80 \n"
" lsls r0, 4 \n"
" strh r0, [r1] \n"
" movs r3, 0x9E \n"
" lsls r3, 1 \n"
" adds r1, r5, r3 \n"
" movs r0, 0x1 \n"
" strb r0, [r1] \n"
" movs r1, 0xA0 \n"
" lsls r1, 1 \n"
" adds r0, r5, r1 \n"
" strh r2, [r0] \n"
" movs r2, 0xA2 \n"
" lsls r2, 1 \n"
" adds r0, r5, r2 \n"
" movs r3, 0x6 \n"
" ldrsh r2, [r5, r3] \n"
" movs r3, 0x8E \n"
" lsls r3, 1 \n"
" adds r1, r5, r3 \n"
" ldr r3, [r1] \n"
" adds r1, r7, 0 \n"
" bl sub_80A75CC \n"
"_080AC0C0: \n"
" adds r4, r5, 0 \n"
" adds r4, 0x38 \n"
" ldr r1, _080AC154 \n"
" mov r0, r9 \n"
" str r0, [sp] \n"
" adds r0, r4, 0 \n"
" adds r2, r5, 0 \n"
" mov r3, r10 \n"
" bl InitActionWithParams \n"
" adds r6, r4, 0 \n"
" mov r1, r8 \n"
" ldr r2, [r1, 0xC] \n"
" cmp r2, 0 \n"
" bne _080AC0F2 \n"
" movs r2, 0xA2 \n"
" lsls r2, 1 \n"
" adds r0, r5, r2 \n"
" bl SpriteHasPokemonSize_80A66A4\n"
" lsls r0, 24 \n"
" ldr r2, _080AC158 \n"
" cmp r0, 0 \n"
" beq _080AC0F2 \n"
" ldr r2, _080AC15C \n"
"_080AC0F2: \n"
" adds r0, r6, 0 \n"
" movs r1, 0x1 \n"
" bl SetPredefinedScript \n"
" adds r1, r4, 0 \n"
" mov r3, r8 \n"
" ldr r2, [r3, 0x10] \n"
" cmp r2, 0 \n"
" bne _080AC108 \n"
" ldr r0, _080AC160 \n"
" ldr r2, [r0, 0x38] \n"
"_080AC108: \n"
" adds r0, r1, 0 \n"
" movs r1, 0x2 \n"
" bl SetPredefinedScript \n"
" mov r0, r8 \n"
" ldr r2, [r0, 0x14] \n"
" cmp r2, 0 \n"
" bne _080AC11C \n"
" ldr r0, _080AC160 \n"
" ldr r2, [r0, 0x68] \n"
"_080AC11C: \n"
" adds r0, r4, 0 \n"
" movs r1, 0x3 \n"
" bl SetPredefinedScript \n"
" mov r1, r8 \n"
" ldr r2, [r1, 0x8] \n"
" cmp r2, 0 \n"
" beq _080AC140 \n"
" adds r0, r4, 0 \n"
" movs r1, 0 \n"
" bl SetPredefinedScript \n"
" ldr r3, _080AC164 \n"
" adds r0, r4, 0 \n"
" movs r1, 0 \n"
" movs r2, 0 \n"
" bl ExecutePredefinedScript \n"
"_080AC140: \n"
" adds r0, r7, 0 \n"
"_080AC142: \n"
" add sp, 0x14 \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 \n"
" .align 2, 0 \n"
"_080AC154: .4byte gGroundObjectCallbacks\n"
"_080AC158: .4byte gUnknown_81182F4\n"
"_080AC15C: .4byte gUnknown_8118350\n"
"_080AC160: .4byte gFunctionScriptTable\n"
"_080AC164: .4byte gUnknown_81184A4");
}
void sub_80A6688(struct UnkGroundSpriteStruct *, s32);
void GroundObject_Delete(s32 index_) {
s32 index = (s16)index_;
GroundObject *parent = &gGroundObjects[index];
Log(0, gUnknown_81184B0, index);
sub_80A7658(&parent->unk144);
InitAction2(&parent->unk38);
parent->unk6 = -1;
}
void sub_80AC1B0(s32 index_, s32 flag)
{
s32 index = (s16)index_;
GroundObject *parent = &gGroundObjects[index];
if(parent->unk6 != -1)
{
parent->flags |= flag;
sub_80A6688(&parent->unk144, parent->flags);
}
}
void sub_80AC1F4(s32 index_, s32 flag)
{
s32 index = (s16)index_;
GroundObject *parent = &gGroundObjects[index];
if(parent->unk6 != -1)
{
parent->flags &= (0x337fffff ^ flag);
sub_80A6688(&parent->unk144, parent->flags);
}
}
Action *sub_80AC240(s32 index_)
{
s32 index = (s16)index_;
GroundObject *parent = &gGroundObjects[index];
if(parent->unk6 != -1)
return &parent->unk38;
else
return NULL;
}
extern bool8 GetPredefinedScript(Action *param_1, ScriptInfoSmall *script, s32 _index);
bool8 sub_80AC274(s32 index_, ScriptInfoSmall *scriptInfo, s32 a2_)
{
s32 index = (s16)index_;
s32 a2 = (s16)a2_;
GroundObject *parent = &gGroundObjects[index];
if(parent->unk6 != -1)
return GetPredefinedScript(&parent->unk38, scriptInfo, a2);
else
return FALSE;
}
extern u8 gUnknown_81184CC[];
extern DebugLocation gUnknown_8118504;
bool8 GroundObject_ExecuteScript(s32 index_, void *a1, ScriptInfoSmall *script)
{
s32 index = (s16)index_;
GroundObject *parent = &gGroundObjects[index];
Log(0, gUnknown_81184CC, index);
if(parent->unk6 != -1)
{
GroundScript_ExecutePP(&parent->unk38, (ActionUnkIds *)a1, script, &gUnknown_8118504);
parent->unk13C = 1;
return 1;
}
else {
return 0;
}
}
bool8 GroundObjectsNotifyAll(s32 index_)
{
s32 index = (s16)index_;
s32 counter;
GroundObject *parent = &gGroundObjects[0];
bool8 flag = FALSE;
for(counter = 0; counter < 0x10; counter = (s16)(counter + 1), parent++)
{
if(parent->unk6 != -1)
flag |= GroundScriptNotify(&parent->unk38, index);
}
return flag;
}
bool8 GroundObjectsCancelAll(void)
{
s32 counter;
GroundObject *parent = &gGroundObjects[0];
bool8 flag = FALSE;
for(counter = 0; counter < 0x10; counter = (s16)(counter + 1), parent++)
{
if(parent->unk6 != -1)
flag |= GroundScript_Cancel(&parent->unk38);
}
return flag;
}
static UNUSED s16 sub_80AC3C0(s32 index_)
{
s32 index = (s16)index_;
GroundObject *parent = &gGroundObjects[index];
return parent->unk6;
}
s16 sub_80AC3E0(s32 index_, s32 *a1)
{
s32 index = (s16)index_;
GroundObject *parent = &gGroundObjects[index];
*a1 = parent->flags;
return parent->unk6;
}
static UNUSED s16 sub_80AC408(s32 index_, struct GroundObjectSub *a1)
{
s32 index = (s16)index_;
GroundObject *parent = &gGroundObjects[index];
if(parent->unk6 == -1)
{
a1->a0[0] = 0;
a1->a0[1] = 0;
}
else
{
*a1 = parent->unkC;
}
return parent->unk6;
}
s16 sub_80AC448(s32 index_, PixelPos *pos)
{
s32 index = (s16)index_;
GroundObject *parent = &gGroundObjects[index];
if(parent->unk6 == -1)
{
pos->x = 0;
pos->y = 0;
}
else {
pos->x = parent->unk124.x + parent->unk14.x;
pos->y = parent->unk124.y + parent->unk14.y;
}
return parent->unk6;
}
extern void TryMoveObjectRelative_80AC6AC(void *, PixelPos *);
s16 sub_80AC49C(s32 index_, PixelPos *pos)
{
s32 index = (s16)index_;
GroundObject *parent = &gGroundObjects[index];
TryMoveObjectRelative_80AC6AC(parent, pos);
return parent->unk6;
}

View File

@@ -128,17 +128,42 @@ bool8 sub_809D234(void);
s32 sub_80A14E8(Action *, u8, u32, s32);
u8 sub_80990EC(struct DungeonSetupInfo *param_1, s32 param_2);
extern u8 GroundObjectsCancellAll(void);
extern u8 GroundObjectsCancelAll(void);
extern u8 GroundEffectsCancelAll(void);
extern u8 GroundLivesCancelAll(void);
extern u8 IsTextboxOpen_809A750(void);
extern Action *sub_80A882C(s16);
extern Action *sub_80AC240(s16);
extern Action *sub_80AD158(s16);
extern Action *sub_80A882C(s32);
extern Action *sub_80AC240(s32);
extern Action *sub_80AD158(s32);
extern void sub_809AB4C(s32, s32);
extern void sub_809ABB4(s32, s32);
extern void sub_809AC18(s32, s32);
extern s16 sub_80A8BBC(s32 id_);
extern char gUnknown_81165D4[];
extern char gUnknown_81165F4[];
extern char gUnknown_811660C[];
extern char gUnknown_8116628[];
extern char gUnknown_8116644[];
extern char gUnknown_8116664[];
extern char gUnknown_8116684[];
extern char gUnknown_81166C0[];
extern char gUnknown_81166D8[];
extern const CallbackData gGroundScriptTriggerCallbacks;
extern DebugLocation gUnknown_81166B4;
extern DebugLocation gUnknown_81166F8;
extern DebugLocation gUnknown_8116704;
extern const DebugLocation gUnknown_8116588;
extern const DebugLocation gUnknown_8116538;
extern const DebugLocation gUnknown_8116560;
extern u8 gUnknown_8116594[];
extern u8 gUnknown_8116544[];
extern u8 gUnknown_811656C[];
extern DebugLocation gUnknown_81165C8;
extern u8 gUnknown_8116848[];
bool8 GroundLivesNotifyAll(s16);
bool8 GroundObjectsNotifyAll(s16);
@@ -528,7 +553,7 @@ u8 GroundCancelAllEntities(void)
u8 ret;
ret = GroundLivesCancelAll();
ret |= GroundObjectsCancellAll();
ret |= GroundObjectsCancelAll();
ret |= GroundEffectsCancelAll();
return ret;
}