pmd-red/asm/event_flag.s
Mateusz Naściszewski ae3c563713
Mega rename
2024-09-15 20:29:02 +02:00

665 lines
10 KiB
ArmAsm

#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start ResetScriptVarArray
ResetScriptVarArray:
push {r4-r7,lr}
adds r7, r0, 0
lsls r1, 16
asrs r6, r1, 16
ldr r0, _08001584
cmp r6, r0
bgt _0800158C
lsls r1, r6, 4
ldr r0, _08001588
b _08001590
.align 2, 0
_08001584: .4byte 0x000003ff
_08001588: .4byte gScriptVarInfo
_0800158C:
lsls r1, r6, 4
ldr r0, _08001598
_08001590:
adds r5, r1, r0
movs r4, 0
b _080015B0
.align 2, 0
_08001598: .4byte 0x080b2d30
_0800159C:
movs r0, 0xA
ldrsh r3, [r5, r0]
adds r0, r7, 0
adds r1, r6, 0
adds r2, r4, 0
bl SetScriptVarArrayValue
adds r0, r4, 0x1
lsls r0, 16
lsrs r4, r0, 16
_080015B0:
movs r1, 0x8
ldrsh r0, [r5, r1]
cmp r4, r0
blt _0800159C
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end ResetScriptVarArray
thumb_func_start ClearScriptVarArray
ClearScriptVarArray:
push {r4-r7,lr}
adds r7, r0, 0
lsls r1, 16
asrs r6, r1, 16
ldr r0, _080015D4
cmp r6, r0
bgt _080015DC
lsls r1, r6, 4
ldr r0, _080015D8
b _080015E0
.align 2, 0
_080015D4: .4byte 0x000003ff
_080015D8: .4byte gScriptVarInfo
_080015DC:
lsls r1, r6, 4
ldr r0, _080015E8
_080015E0:
adds r5, r1, r0
movs r4, 0
b _080015FE
.align 2, 0
_080015E8: .4byte 0x080b2d30
_080015EC:
adds r0, r7, 0
adds r1, r6, 0
adds r2, r4, 0
movs r3, 0
bl SetScriptVarArrayValue
adds r0, r4, 0x1
lsls r0, 16
lsrs r4, r0, 16
_080015FE:
movs r1, 0x8
ldrsh r0, [r5, r1]
cmp r4, r0
blt _080015EC
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end ClearScriptVarArray
thumb_func_start GetScriptVarRef
GetScriptVarRef:
push {r4,lr}
adds r3, r0, 0
adds r4, r1, 0
lsls r2, 16
asrs r1, r2, 16
ldr r0, _08001630
cmp r1, r0
bgt _0800163C
lsls r1, 4
ldr r0, _08001634
adds r1, r0
str r1, [r3]
movs r2, 0x4
ldrsh r0, [r1, r2]
ldr r1, _08001638
adds r0, r1
b _0800164C
.align 2, 0
_08001630: .4byte 0x000003ff
_08001634: .4byte gScriptVarInfo
_08001638: .4byte gScriptVarBuffer
_0800163C:
lsls r1, 4
ldr r0, _08001654
adds r1, r0
str r1, [r3]
movs r2, 0x4
ldrsh r0, [r1, r2]
lsls r0, 2
adds r0, r4, r0
_0800164C:
str r0, [r3, 0x4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08001654: .4byte 0x080b2d30
thumb_func_end GetScriptVarRef
thumb_func_start GetScriptVarValue
GetScriptVarValue:
push {r4,lr}
sub sp, 0x8
adds r2, r0, 0
lsls r1, 16
asrs r4, r1, 16
mov r0, sp
adds r1, r2, 0
adds r2, r4, 0
bl GetScriptVarRef
ldr r0, [sp]
ldrh r0, [r0]
subs r0, 0x1
lsls r0, 16
asrs r0, 16
cmp r0, 0x7
bls _0800167C
b _08001778
_0800167C:
lsls r0, 2
ldr r1, _08001688
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08001688: .4byte _0800168C
.align 2, 0
_0800168C:
.4byte _080016AC
.4byte _080016C2
.4byte _080016C8
.4byte _080016D2
.4byte _080016D8
.4byte _080016E0
.4byte _080016C2
.4byte _080016E6
_080016AC:
ldr r0, [sp]
movs r1, 0x6
ldrsh r0, [r0, r1]
movs r1, 0x80
lsls r1, 17
lsls r1, r0
lsrs r1, 24
ldr r0, [sp, 0x4]
ldrb r0, [r0]
ands r1, r0
b _0800173E
_080016C2:
ldr r0, [sp, 0x4]
ldrb r0, [r0]
b _0800177A
_080016C8:
ldr r0, [sp, 0x4]
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
b _0800177A
_080016D2:
ldr r0, [sp, 0x4]
ldrh r0, [r0]
b _0800177A
_080016D8:
ldr r0, [sp, 0x4]
movs r1, 0
ldrsh r0, [r0, r1]
b _0800177A
_080016E0:
ldr r0, [sp, 0x4]
ldr r0, [r0]
b _0800177A
_080016E6:
adds r0, r4, 0
subs r0, 0x17
lsls r0, 16
asrs r0, 16
cmp r0, 0xC
bhi _08001778
lsls r0, 2
ldr r1, _080016FC
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080016FC: .4byte _08001700
.align 2, 0
_08001700:
.4byte _08001734
.4byte _08001778
.4byte _08001778
.4byte _08001778
.4byte _08001778
.4byte _08001778
.4byte _08001778
.4byte _08001778
.4byte _08001778
.4byte _08001746
.4byte _0800174C
.4byte _08001754
.4byte _08001764
_08001734:
bl GetScriptMode
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
_0800173E:
negs r0, r1
orrs r0, r1
lsrs r0, 31
b _0800177A
_08001746:
bl GetFriendSum_808D480
b _0800177A
_0800174C:
movs r0, 0
bl GetUnitSum_808D544
b _0800177A
_08001754:
ldr r0, _08001760
ldr r0, [r0]
movs r1, 0x98
lsls r1, 2
b _0800176C
.align 2, 0
_08001760: .4byte gTeamInventoryRef
_08001764:
ldr r0, _08001774
ldr r0, [r0]
movs r1, 0x99
lsls r1, 2
_0800176C:
adds r0, r1
ldr r0, [r0]
b _0800177A
.align 2, 0
_08001774: .4byte gTeamInventoryRef
_08001778:
movs r0, 0
_0800177A:
add sp, 0x8
pop {r4}
pop {r1}
bx r1
thumb_func_end GetScriptVarValue
@ https://decomp.me/scratch/xF3HH
thumb_func_start GetScriptVarArrayValue
GetScriptVarArrayValue:
push {r4,r5,lr}
sub sp, 0x8
adds r3, r0, 0
lsls r1, 16
asrs r5, r1, 16
lsls r2, 16
lsrs r4, r2, 16
mov r0, sp
adds r1, r3, 0
adds r2, r5, 0
bl GetScriptVarRef
ldr r0, [sp]
ldrh r0, [r0]
subs r0, 0x1
lsls r0, 16
asrs r0, 16
cmp r0, 0x7
bls _080017AC
b _080018CC
_080017AC:
lsls r0, 2
ldr r1, _080017B8
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080017B8: .4byte _080017BC
.align 2, 0
_080017BC:
.4byte _080017DC
.4byte _08001800
.4byte _08001808
.4byte _08001814
.4byte _0800181E
.4byte _0800182A
.4byte _08001800
.4byte _08001834
_080017DC:
ldr r0, [sp]
ldrh r1, [r0, 0x6]
adds r1, r4, r1
lsls r1, 16
lsrs r0, r1, 19
ldr r2, [sp, 0x4]
adds r2, r0
movs r0, 0xE0
lsls r0, 11
ands r0, r1
lsrs r0, 16
movs r1, 0x80
lsls r1, 17
lsls r1, r0
lsrs r1, 24
ldrb r0, [r2]
ands r1, r0
b _0800188E
_08001800:
ldr r0, [sp, 0x4]
adds r0, r4
ldrb r0, [r0]
b _080018CE
_08001808:
ldr r0, [sp, 0x4]
adds r0, r4
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
b _080018CE
_08001814:
ldr r0, [sp, 0x4]
lsls r1, r4, 1
adds r1, r0
ldrh r0, [r1]
b _080018CE
_0800181E:
ldr r0, [sp, 0x4]
lsls r1, r4, 1
adds r1, r0
movs r2, 0
ldrsh r0, [r1, r2]
b _080018CE
_0800182A:
ldr r0, [sp, 0x4]
lsls r1, r4, 2
adds r1, r0
ldr r0, [r1]
b _080018CE
_08001834:
adds r0, r5, 0
subs r0, 0x17
lsls r0, 16
asrs r0, 16
cmp r0, 0xC
bhi _080018CC
lsls r0, 2
ldr r1, _0800184C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0800184C: .4byte _08001850
.align 2, 0
_08001850:
.4byte _08001884
.4byte _080018CC
.4byte _080018CC
.4byte _080018CC
.4byte _080018CC
.4byte _080018CC
.4byte _080018CC
.4byte _080018CC
.4byte _080018CC
.4byte _08001896
.4byte _0800189C
.4byte _080018A4
.4byte _080018B8
_08001884:
bl GetScriptMode
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
_0800188E:
negs r0, r1
orrs r0, r1
lsrs r0, 31
b _080018CE
_08001896:
bl GetFriendSum_808D480
b _080018CE
_0800189C:
movs r0, 0
bl GetUnitSum_808D544
b _080018CE
_080018A4:
ldr r0, _080018B4
ldr r0, [r0]
movs r1, 0x98
lsls r1, 2
adds r0, r1
ldr r0, [r0]
b _080018CE
.align 2, 0
_080018B4: .4byte gTeamInventoryRef
_080018B8:
ldr r0, _080018C8
ldr r0, [r0]
movs r2, 0x99
lsls r2, 2
adds r0, r2
ldr r0, [r0]
b _080018CE
.align 2, 0
_080018C8: .4byte gTeamInventoryRef
_080018CC:
movs r0, 0
_080018CE:
add sp, 0x8
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end GetScriptVarArrayValue
thumb_func_start SetScriptVarValue
SetScriptVarValue:
push {r4,r5,lr}
sub sp, 0x8
adds r3, r0, 0
adds r4, r2, 0
lsls r1, 16
asrs r5, r1, 16
mov r0, sp
adds r1, r3, 0
adds r2, r5, 0
bl GetScriptVarRef
ldr r0, [sp]
ldrh r0, [r0]
subs r0, 0x1
lsls r0, 16
asrs r0, 16
cmp r0, 0x7
bhi _08001990
lsls r0, 2
ldr r1, _08001908
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08001908: .4byte _0800190C
.align 2, 0
_0800190C:
.4byte _0800192C
.4byte _08001958
.4byte _08001958
.4byte _0800195E
.4byte _0800195E
.4byte _08001964
.4byte _08001958
.4byte _08001968
_0800192C:
ldr r0, [sp]
movs r2, 0x6
ldrsh r1, [r0, r2]
movs r0, 0x80
lsls r0, 17
lsls r0, r1
lsrs r3, r0, 24
cmp r4, 0
beq _0800194A
ldr r2, [sp, 0x4]
ldrb r1, [r2]
adds r0, r3, 0
orrs r0, r1
strb r0, [r2]
b _08001990
_0800194A:
ldr r2, [sp, 0x4]
ldrb r1, [r2]
adds r0, r3, 0
orrs r0, r1
eors r0, r3
strb r0, [r2]
b _08001990
_08001958:
ldr r0, [sp, 0x4]
strb r4, [r0]
b _08001990
_0800195E:
ldr r0, [sp, 0x4]
strh r4, [r0]
b _08001990
_08001964:
ldr r0, [sp, 0x4]
b _0800198E
_08001968:
cmp r5, 0x22
beq _08001972
cmp r5, 0x23
beq _08001984
b _08001990
_08001972:
ldr r0, _08001980
ldr r0, [r0]
movs r1, 0x98
lsls r1, 2
adds r0, r1
b _0800198E
.align 2, 0
_08001980: .4byte gTeamInventoryRef
_08001984:
ldr r0, _08001998
ldr r0, [r0]
movs r2, 0x99
lsls r2, 2
adds r0, r2
_0800198E:
str r4, [r0]
_08001990:
add sp, 0x8
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08001998: .4byte gTeamInventoryRef
thumb_func_end SetScriptVarValue
thumb_func_start SetScriptVarArrayValue
SetScriptVarArrayValue:
push {r4-r7,lr}
sub sp, 0x8
adds r4, r0, 0
adds r6, r3, 0
lsls r1, 16
asrs r7, r1, 16
lsls r2, 16
lsrs r5, r2, 16
mov r0, sp
adds r1, r4, 0
adds r2, r7, 0
bl GetScriptVarRef
ldr r0, [sp]
ldrh r0, [r0]
subs r0, 0x1
lsls r0, 16
asrs r0, 16
cmp r0, 0x7
bhi _08001A68
lsls r0, 2
ldr r1, _080019D0
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080019D0: .4byte _080019D4
.align 2, 0
_080019D4:
.4byte _080019F4
.4byte _08001A2C
.4byte _08001A2C
.4byte _08001A34
.4byte _08001A34
.4byte _08001A3E
.4byte _08001A2C
.4byte _08001A44
_080019F4:
ldr r0, [sp]
ldrh r0, [r0, 0x6]
adds r0, r5, r0
lsls r0, 16
lsrs r2, r0, 19
ldr r1, [sp, 0x4]
adds r3, r1, r2
movs r1, 0xE0
lsls r1, 11
ands r1, r0
lsrs r1, 16
movs r0, 0x80
lsls r0, 17
lsls r0, r1
lsrs r2, r0, 24
cmp r6, 0
beq _08001A20
ldrb r1, [r3]
adds r0, r2, 0
orrs r0, r1
strb r0, [r3]
b _08001A68
_08001A20:
ldrb r1, [r3]
adds r0, r2, 0
orrs r0, r1
eors r0, r2
strb r0, [r3]
b _08001A68
_08001A2C:
ldr r0, [sp, 0x4]
adds r0, r5
strb r6, [r0]
b _08001A68
_08001A34:
ldr r1, [sp, 0x4]
lsls r0, r5, 1
adds r0, r1
strh r6, [r0]
b _08001A68
_08001A3E:
ldr r1, [sp, 0x4]
lsls r0, r5, 2
b _08001A64
_08001A44:
cmp r7, 0x22
beq _08001A4E
cmp r7, 0x23
beq _08001A5C
b _08001A68
_08001A4E:
ldr r0, _08001A58
ldr r0, [r0]
movs r1, 0x98
lsls r1, 2
b _08001A64
.align 2, 0
_08001A58: .4byte gTeamInventoryRef
_08001A5C:
ldr r0, _08001A70
ldr r0, [r0]
movs r1, 0x99
lsls r1, 2
_08001A64:
adds r0, r1
str r6, [r0]
_08001A68:
add sp, 0x8
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08001A70: .4byte gTeamInventoryRef
thumb_func_end SetScriptVarArrayValue
.align 2, 0 @ Don't pad with nop.