collect_rings: match rings_scatter

This commit is contained in:
Oliver Bell committed 2025-06-11 20:09:38 +01:00
1 parent ef15f06c32
commit b3ff6aea72
7 files changed
+687 -941

No files matched your search

+2 -1
View File
@@ -124,7 +124,8 @@ SA2_C_FILES := \
sa2/game/multiplayer/mp_attack_2_effect.c \
sa2/game/stage/camera.c \
sa2/game/stage/terrain_collision.c \
sa2/game/stage/player.c
sa2/game/stage/player.c \
sa2/game/stage/rings_scatter.c
SA2_C_ASM_FILES := \
sa2/lib/m4a/m4a0.s \
+2 -921
View File
@@ -4,925 +4,6 @@
.syntax unified
.arm
thumb_func_start InitPlayerHitRingsScatter
InitPlayerHitRingsScatter: @ 0x02011B44
push {r4, r5, lr}
sub sp, #8
ldr r4, _02011BD8 @ =gUnknown_030057C4
ldr r0, _02011BDC @ =sub_02012260
movs r1, #0xae
lsls r1, r1, #2
ldr r2, _02011BE0 @ =0x00002001
ldr r3, _02011BE4 @ =sub_0201226C
str r3, [sp]
movs r3, #0
bl TaskCreate
str r0, [r4]
ldrh r3, [r0, #6]
movs r1, #0xc0
lsls r1, r1, #0x12
adds r1, r3, r1
movs r5, #0
movs r4, #0
strh r4, [r1, #0x16]
strh r4, [r1, #0x18]
ldr r0, _02011BE8 @ =0x06012E40
str r0, [r1, #4]
movs r0, #0xa0
lsls r0, r0, #3
strh r0, [r1, #0x1a]
strh r4, [r1, #8]
movs r0, #0x6a
strh r0, [r1, #0xa]
ldr r2, _02011BEC @ =gUnknown_03000020
adds r0, r3, r2
strb r5, [r0]
strh r4, [r1, #0x14]
strh r4, [r1, #0x1c]
ldr r0, _02011BF0 @ =gUnknown_03000021
adds r2, r3, r0
movs r0, #0xff
strb r0, [r2]
ldr r0, _02011BF4 @ =gUnknown_03000022
adds r2, r3, r0
movs r0, #0x20
strb r0, [r2]
ldr r2, _02011BF8 @ =gUnknown_03000025
adds r0, r3, r2
strb r5, [r0]
ldr r0, _02011BFC @ =0x00042200
str r0, [r1, #0x10]
ldr r1, _02011C00 @ =gUnknown_030002B6
adds r0, r3, r1
strh r4, [r0]
ldr r2, _02011C04 @ =gUnknown_030002B4
adds r1, r3, r2
movs r0, #0x94
strh r0, [r1]
ldr r0, _02011C08 @ =gUnknown_030002B0
adds r1, r3, r0
movs r0, #0x12
str r0, [r1]
ldr r1, _02011C0C @ =gUnknown_03000030
adds r3, r3, r1
add r0, sp, #4
strh r4, [r0]
ldr r0, _02011C10 @ =0x040000D4
add r2, sp, #4
str r2, [r0]
str r3, [r0, #4]
ldr r1, _02011C14 @ =0x81000140
str r1, [r0, #8]
ldr r0, [r0, #8]
add sp, #8
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_02011BD8: .4byte gUnknown_030057C4
_02011BDC: .4byte sub_02012260
_02011BE0: .4byte 0x00002001
_02011BE4: .4byte sub_0201226C
_02011BE8: .4byte 0x06012E40
_02011BEC: .4byte gUnknown_03000020
_02011BF0: .4byte gUnknown_03000021
_02011BF4: .4byte gUnknown_03000022
_02011BF8: .4byte gUnknown_03000025
_02011BFC: .4byte 0x00042200
_02011C00: .4byte gUnknown_030002B6
_02011C04: .4byte gUnknown_030002B4
_02011C08: .4byte gUnknown_030002B0
_02011C0C: .4byte gUnknown_03000030
_02011C10: .4byte 0x040000D4
_02011C14: .4byte 0x81000140
thumb_func_start InitScatteringRings
InitScatteringRings: @ 0x02011C18
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0xc
str r0, [sp]
str r1, [sp, #4]
adds r7, r2, #0
ldr r0, _02011C9C @ =gUnknown_030057C4
ldr r0, [r0]
ldrh r0, [r0, #6]
ldr r1, _02011CA0 @ =gUnknown_03000030
adds r4, r0, r1
ldr r6, _02011CA4 @ =gPlayer
str r6, [sp, #8]
movs r5, #0
movs r6, #0
cmp r7, #0
beq _02011D2E
cmp r7, #0x20
ble _02011C46
movs r7, #0x20
_02011C46:
ldr r0, _02011CA8 @ =gGameMode
ldrb r0, [r0]
cmp r0, #2
bls _02011C54
cmp r7, #0x10
ble _02011C54
movs r7, #0x10
_02011C54:
movs r0, #0x10
bl m4aSongNumStart
movs r3, #0x91
lsls r3, r3, #3
movs r0, #0
mov r8, r0
mov ip, r0
ldr r1, _02011CAC @ =gSineTable
mov sl, r1
ldr r0, _02011CB0 @ =gPseudoRandom
mov sb, r0
_02011C6C:
ldrh r0, [r4, #0xc]
cmp r0, #0
bne _02011D22
movs r0, #0xb4
strh r0, [r4, #0xc]
ldr r0, [sp, #8]
adds r0, #0x38
ldrb r0, [r0]
strh r0, [r4, #0xe]
ldr r1, [sp]
lsls r0, r1, #8
str r0, [r4]
ldr r1, [sp, #4]
lsls r0, r1, #8
str r0, [r4, #4]
cmp r3, #0
blt _02011CE4
asrs r2, r3, #8
cmp r2, #5
ble _02011CB4
rsbs r0, r2, #0
adds r0, #9
b _02011CB6
.align 2, 0
_02011C9C: .4byte gUnknown_030057C4
_02011CA0: .4byte gUnknown_03000030
_02011CA4: .4byte gPlayer
_02011CA8: .4byte gGameMode
_02011CAC: .4byte gSineTable
_02011CB0: .4byte gPseudoRandom
_02011CB4:
adds r0, r2, #0
_02011CB6:
adds r2, r0, #0
movs r1, #0xff
ands r1, r3
lsls r0, r1, #3
add r0, sl
movs r6, #0
ldrsh r5, [r0, r6]
asrs r5, r2
lsls r1, r1, #3
movs r0, #0x80
lsls r0, r0, #2
adds r1, r1, r0
add r1, sl
movs r0, #0
ldrsh r6, [r1, r0]
asrs r6, r2
asrs r0, r5, #2
subs r5, r5, r0
asrs r0, r6, #2
subs r6, r6, r0
adds r3, #0x10
movs r0, #0x80
orrs r3, r0
_02011CE4:
strh r5, [r4, #8]
strh r6, [r4, #0xa]
rsbs r3, r3, #0
rsbs r5, r5, #0
movs r1, #0
strh r1, [r4, #0x10]
mov r0, sb
ldr r1, [r0]
ldr r0, _02011D40 @ =0x00196225
muls r0, r1, r0
ldr r1, _02011D44 @ =0x3C6EF35F
adds r0, r0, r1
mov r1, sb
str r0, [r1]
movs r1, #0x80
lsls r1, r1, #9
ands r0, r1
cmp r0, #0
bne _02011D0E
movs r0, #4
strh r0, [r4, #0x10]
_02011D0E:
movs r0, #3
mov r1, ip
ands r1, r0
ldrh r0, [r4, #0x10]
orrs r1, r0
strh r1, [r4, #0x10]
movs r0, #1
add ip, r0
cmp ip, r7
bge _02011D2E
_02011D22:
adds r4, #0x14
movs r1, #1
add r8, r1
mov r0, r8
cmp r0, #0x1f
ble _02011C6C
_02011D2E:
add sp, #0xc
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_02011D40: .4byte 0x00196225
_02011D44: .4byte 0x3C6EF35F
thumb_func_start sub_02011D48
sub_02011D48: @ 0x02011D48
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0x28
ldr r0, _02011D98 @ =gCurTask
ldr r0, [r0]
ldrh r1, [r0, #6]
movs r0, #0xc0
lsls r0, r0, #0x12
adds r0, r1, r0
str r0, [sp, #4]
ldr r0, _02011D9C @ =gUnknown_03000030
adds r5, r1, r0
ldr r2, [sp, #4]
str r2, [sp, #8]
ldr r3, _02011DA0 @ =gUnknown_030002B0
adds r0, r1, r3
ldr r0, [r0]
str r0, [sp, #0xc]
ldr r4, _02011DA4 @ =gUnknown_030002B4
adds r1, r1, r4
ldrh r1, [r1]
str r1, [sp, #0x10]
movs r0, #0
str r0, [sp, #0x14]
adds r0, r2, #0
bl UpdateSpriteAnimation
movs r1, #0
str r1, [sp, #0x18]
_02011D88:
ldrh r0, [r5, #0xc]
cmp r0, #0
bne _02011DA8
adds r5, #0x14
ldr r2, [sp, #0x18]
adds r2, #1
str r2, [sp, #0x20]
b _02012216
.align 2, 0
_02011D98: .4byte gCurTask
_02011D9C: .4byte gUnknown_03000030
_02011DA0: .4byte gUnknown_030002B0
_02011DA4: .4byte gUnknown_030002B4
_02011DA8:
movs r3, #8
ldrsh r1, [r5, r3]
ldr r0, [r5]
adds r2, r0, r1
str r2, [r5]
movs r4, #0xa
ldrsh r1, [r5, r4]
ldr r0, [r5, #4]
adds r3, r0, r1
str r3, [r5, #4]
movs r0, #0x80
lsls r0, r0, #5
adds r1, r2, r0
movs r0, #0xf4
lsls r0, r0, #0xb
cmp r1, r0
bls _02011DD6
movs r0, #0
strh r0, [r5, #0xc]
ldr r1, [sp, #0x18]
adds r1, #1
str r1, [sp, #0x20]
b _02012216
_02011DD6:
ldr r0, _02011DF4 @ =0x0000EFFF
cmp r2, r0
bgt _02011DFC
ldr r0, _02011DF8 @ =0x00011FFF
cmp r3, r0
bgt _02011DFC
movs r4, #0xb4
lsls r4, r4, #0xb
adds r0, r2, r4
str r0, [r5]
movs r1, #0xd8
lsls r1, r1, #0xa
adds r0, r3, r1
b _02011E1A
.align 2, 0
_02011DF4: .4byte 0x0000EFFF
_02011DF8: .4byte 0x00011FFF
_02011DFC:
ldr r2, [r5]
movs r0, #0xd2
lsls r0, r0, #0xb
cmp r2, r0
ble _02011E1C
ldr r1, [r5, #4]
movs r0, #0xd8
lsls r0, r0, #0xa
cmp r1, r0
ble _02011E1C
ldr r3, _02011F40 @ =0xFFFA6000
adds r0, r2, r3
str r0, [r5]
ldr r4, _02011F44 @ =0xFFFCA000
adds r0, r1, r4
_02011E1A:
str r0, [r5, #4]
_02011E1C:
ldr r0, [r5]
asrs r0, r0, #8
str r0, [sp, #0x1c]
mov sb, r0
ldr r0, [r5, #4]
asrs r7, r0, #8
ldr r1, _02011F48 @ =gCamera
ldr r0, [r1]
ldr r2, [sp, #0x1c]
subs r2, r2, r0
mov sl, r2
ldr r0, [r1, #4]
subs r0, r7, r0
mov r8, r0
ldr r3, _02011F4C @ =gPlayer
mov ip, r3
mov r0, ip
adds r0, #0x90
ldr r2, [r0]
adds r4, r5, #0
adds r4, #0x14
str r4, [sp, #0x24]
ldrh r6, [r5, #0xc]
ldr r0, [sp, #0x18]
adds r0, #1
str r0, [sp, #0x20]
ldr r1, [sp, #0x10]
cmp r6, r1
ble _02011E58
b _0201205E
_02011E58:
mov r0, ip
adds r0, #0x64
movs r3, #0
ldrsh r0, [r0, r3]
cmp r0, #0x14
bne _02011E6E
mov r4, ip
movs r1, #0x2c
ldrsh r0, [r4, r1]
cmp r0, #0
bne _02011F60
_02011E6E:
mov r3, ip
ldr r0, [r3, #0x20]
movs r1, #0x80
ands r0, r1
cmp r0, #0
bne _02011F60
adds r4, r2, #0
adds r4, #0x38
ldr r2, [sp, #0x1c]
subs r2, #8
ldr r0, [r3, #8]
asrs r0, r0, #8
movs r3, #0
ldrsb r3, [r4, r3]
adds r1, r0, r3
cmp r2, r1
bgt _02011E9C
ldr r0, [sp, #0x1c]
adds r0, #8
cmp r0, r1
bge _02011EA8
cmp r2, r1
blt _02011F60
_02011E9C:
movs r0, #2
ldrsb r0, [r4, r0]
subs r0, r0, r3
adds r0, r1, r0
cmp r0, r2
blt _02011F60
_02011EA8:
adds r2, r7, #0
subs r2, #0x10
mov r1, ip
ldr r0, [r1, #0xc]
asrs r0, r0, #8
movs r3, #1
ldrsb r3, [r4, r3]
adds r1, r0, r3
cmp r2, r1
bgt _02011EC4
cmp r7, r1
bge _02011ED0
cmp r2, r1
blt _02011F60
_02011EC4:
movs r0, #3
ldrsb r0, [r4, r0]
subs r0, r0, r3
adds r0, r1, r0
cmp r0, r2
blt _02011F60
_02011ED0:
mov r2, sb
lsls r0, r2, #0x10
asrs r0, r0, #0x10
lsls r1, r7, #0x10
asrs r1, r1, #0x10
bl CreateCollectRingEffect
ldr r1, _02011F50 @ =gRingCount
ldrh r6, [r1]
adds r0, r6, #1
strh r0, [r1]
ldr r0, _02011F54 @ =gCurrentLevel
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0x1d
beq _02011F1C
ldrh r0, [r1]
movs r1, #0x64
bl Div
adds r4, r0, #0
adds r0, r6, #0
movs r1, #0x64
bl Div
cmp r4, r0
beq _02011F1C
ldr r0, _02011F58 @ =gGameMode
ldrb r0, [r0]
cmp r0, #0
bne _02011F1C
ldr r1, _02011F5C @ =gNumLives
ldrb r0, [r1]
cmp r0, #0xfe
bhi _02011F1C
adds r0, #1
strb r0, [r1]
_02011F1C:
ldr r0, _02011F58 @ =gGameMode
ldrb r0, [r0]
cmp r0, #5
bne _02011F30
ldr r1, _02011F50 @ =gRingCount
ldrh r0, [r1]
cmp r0, #0xff
bls _02011F30
movs r0, #0xff
strh r0, [r1]
_02011F30:
movs r0, #0
strh r0, [r5, #0xc]
adds r5, #0x14
ldr r3, [sp, #0x18]
adds r3, #1
str r3, [sp, #0x20]
b _02012216
.align 2, 0
_02011F40: .4byte 0xFFFA6000
_02011F44: .4byte 0xFFFCA000
_02011F48: .4byte gCamera
_02011F4C: .4byte gPlayer
_02011F50: .4byte gRingCount
_02011F54: .4byte gCurrentLevel
_02011F58: .4byte gGameMode
_02011F5C: .4byte gNumLives
_02011F60:
adds r4, r5, #0
adds r4, #0x14
str r4, [sp, #0x24]
ldr r0, [sp, #0x18]
adds r0, #1
str r0, [sp, #0x20]
ldr r1, [sp, #0x10]
cmp r6, r1
bgt _0201205E
movs r2, #0
mov ip, r2
_02011F76:
ldr r0, _02012034 @ =0x04000128
ldr r0, [r0]
lsls r0, r0, #0x1a
lsrs r0, r0, #0x1e
cmp ip, r0
beq _02012050
ldr r1, _02012038 @ =gMultiplayerPlayerTasks
mov r3, ip
lsls r0, r3, #2
adds r0, r0, r1
ldr r0, [r0]
cmp r0, #0
beq _02012050
ldrh r2, [r0, #6]
movs r4, #0xc0
lsls r4, r4, #0x12
adds r6, r2, r4
ldr r1, _0201203C @ =gUnknown_0300006A
adds r0, r2, r1
ldrb r0, [r0]
subs r0, #0x1c
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bhi _02011FB6
ldr r3, _02012040 @ =gUnknown_03000054
adds r0, r2, r3
ldrh r1, [r0]
movs r0, #4
ands r0, r1
cmp r0, #0
bne _02012050
_02011FB6:
mov r4, sb
subs r4, #8
ldr r1, _02012044 @ =gUnknown_03000050
adds r0, r2, r1
movs r3, #0
ldrsh r1, [r0, r3]
ldr r3, _02012048 @ =gUnknown_0300002C
adds r0, r2, r3
movs r3, #0
ldrsb r3, [r0, r3]
adds r1, r1, r3
cmp r4, r1
bgt _02011FDC
mov r0, sb
adds r0, #8
cmp r0, r1
bge _02011FEC
cmp r4, r1
blt _02012050
_02011FDC:
ldr r0, _0201204C @ =gUnknown_0300002E
adds r2, r2, r0
movs r0, #0
ldrsb r0, [r2, r0]
subs r0, r0, r3
adds r0, r1, r0
cmp r0, r4
blt _02012050
_02011FEC:
adds r3, r7, #0
subs r3, #0x10
adds r0, r6, #0
adds r0, #0x52
movs r1, #0
ldrsh r0, [r0, r1]
adds r1, r6, #0
adds r1, #0x2d
movs r2, #0
ldrsb r2, [r1, r2]
adds r1, r0, r2
cmp r3, r1
bgt _0201200E
cmp r7, r1
bge _02012020
cmp r3, r1
blt _02012050
_0201200E:
adds r0, r6, #0
adds r0, #0x2f
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
subs r0, r0, r2
adds r0, r1, r0
cmp r0, r3
blt _02012050
_02012020:
mov r2, sb
lsls r0, r2, #0x10
lsls r1, r7, #0x10
asrs r0, r0, #0x10
asrs r1, r1, #0x10
bl CreateCollectRingEffect
movs r0, #0
b _02012212
.align 2, 0
_02012034: .4byte 0x04000128
_02012038: .4byte gMultiplayerPlayerTasks
_0201203C: .4byte gUnknown_0300006A
_02012040: .4byte gUnknown_03000054
_02012044: .4byte gUnknown_03000050
_02012048: .4byte gUnknown_0300002C
_0201204C: .4byte gUnknown_0300002E
_02012050:
mov r0, ip
adds r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov ip, r0
cmp r0, #3
bls _02011F76
_0201205E:
movs r3, #0xa
ldrsh r0, [r5, r3]
cmp r0, #0
ble _02012098
ldrh r1, [r5, #0x10]
movs r0, #7
ands r0, r1
cmp r0, #0
bne _02012098
movs r4, #0xe
ldrsh r2, [r5, r4]
ldr r0, _02012118 @ =sub_801EC3C
str r0, [sp]
adds r0, r7, #0
ldr r1, [sp, #0x1c]
movs r3, #8
bl sub_801F100
cmp r0, #0
bgt _02012098
lsls r1, r0, #8
ldr r0, [r5, #4]
adds r0, r0, r1
str r0, [r5, #4]
ldrh r1, [r5, #0xa]
lsls r0, r1, #0x10
asrs r0, r0, #0x12
subs r0, r0, r1
strh r0, [r5, #0xa]
_02012098:
ldr r1, [sp, #4]
ldr r2, _0201211C @ =0x000002B6
adds r0, r1, r2
ldrh r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _020120E6
movs r3, #0xa
ldrsh r0, [r5, r3]
cmp r0, #0
bge _020120E6
ldrh r1, [r5, #0x10]
movs r0, #7
ands r0, r1
cmp r0, #0
bne _020120E6
adds r0, r7, #0
subs r0, #0x10
movs r4, #0xe
ldrsh r2, [r5, r4]
ldr r1, _02012118 @ =sub_801EC3C
str r1, [sp]
ldr r1, [sp, #0x1c]
movs r3, #8
rsbs r3, r3, #0
bl sub_801F100
cmp r0, #0
bgt _020120E6
lsls r1, r0, #8
ldr r0, [r5, #4]
subs r0, r0, r1
str r0, [r5, #4]
ldrh r1, [r5, #0xa]
lsls r0, r1, #0x10
asrs r0, r0, #0x12
subs r0, r0, r1
strh r0, [r5, #0xa]
_020120E6:
ldrh r0, [r5, #0xa]
ldr r1, [sp, #0xc]
adds r0, r0, r1
strh r0, [r5, #0xa]
mov r0, sl
adds r0, #7
cmp r0, #0xfe
bhi _02012104
movs r0, #8
rsbs r0, r0, #0
cmp r8, r0
ble _02012104
mov r2, r8
cmp r2, #0xa7
ble _02012134
_02012104:
ldr r1, [r5]
movs r0, #0xf0
lsls r0, r0, #0xa
cmp r1, r0
ble _02012128
ldr r3, _02012120 @ =0xFFFFFA60
add sl, r3
ldr r4, _02012124 @ =0xFFFFFCA0
add r8, r4
b _02012134
.align 2, 0
_02012118: .4byte sub_801EC3C
_0201211C: .4byte 0x000002B6
_02012120: .4byte 0xFFFFFA60
_02012124: .4byte 0xFFFFFCA0
_02012128:
movs r0, #0xb4
lsls r0, r0, #3
add sl, r0
movs r1, #0xd8
lsls r1, r1, #2
add r8, r1
_02012134:
mov r0, sl
adds r0, #7
cmp r0, #0xfe
bhi _020121FA
movs r0, #8
rsbs r0, r0, #0
cmp r8, r0
ble _020121FA
mov r2, r8
cmp r2, #0xa7
bgt _020121FA
ldrh r0, [r5, #0xc]
cmp r0, #0x1f
bhi _0201215C
ldr r0, _02012188 @ =gStageTime
ldr r0, [r0]
movs r1, #2
ands r0, r1
cmp r0, #0
bne _020121FA
_0201215C:
ldr r2, [sp, #8]
adds r2, #0x23
ldr r3, [sp, #0x14]
cmp r3, #0
beq _0201216E
adds r1, r2, #0
ldrb r0, [r1]
cmp r0, #0xff
bne _0201218C
_0201216E:
movs r0, #0xff
strb r0, [r2]
mov r0, sl
ldr r4, [sp, #8]
strh r0, [r4, #0x16]
mov r1, r8
strh r1, [r4, #0x18]
ldr r0, [sp, #8]
bl DisplaySprite
movs r2, #1
str r2, [sp, #0x14]
b _020121FA
.align 2, 0
_02012188: .4byte gStageTime
_0201218C:
ldrb r0, [r1]
lsls r0, r0, #3
ldr r1, _02012230 @ =gOamBuffer2
adds r4, r0, r1
ldr r3, [sp, #8]
ldrh r0, [r3, #0x1a]
movs r2, #0xf8
lsls r2, r2, #3
adds r1, r2, #0
ands r0, r1
lsrs r0, r0, #6
bl OamMalloc
adds r3, r0, #0
ldr r0, _02012234 @ =iwram_end
ldr r0, [r0]
cmp r0, r3
beq _020121FA
ldr r1, _02012238 @ =0x040000D4
str r4, [r1]
str r3, [r1, #4]
ldr r0, _0201223C @ =0x80000003
str r0, [r1, #8]
ldr r0, [r1, #8]
ldrh r2, [r3]
movs r4, #0xff
lsls r4, r4, #8
adds r0, r4, #0
ands r2, r0
strh r2, [r3]
ldr r1, [sp, #8]
ldr r0, [r1, #0xc]
ldrh r0, [r0, #0xa]
mov r4, r8
subs r0, r4, r0
movs r1, #0xff
ands r0, r1
adds r2, r2, r0
strh r2, [r3]
ldrh r2, [r3, #2]
movs r1, #0xfe
lsls r1, r1, #8
adds r0, r1, #0
ands r2, r0
strh r2, [r3, #2]
ldr r4, [sp, #8]
ldr r0, [r4, #0xc]
ldrh r0, [r0, #8]
mov r1, sl
subs r0, r1, r0
ldr r4, _02012240 @ =0x000001FF
adds r1, r4, #0
ands r0, r1
adds r2, r2, r0
strh r2, [r3, #2]
_020121FA:
ldrh r1, [r5, #0x10]
ldr r2, _02012244 @ =0x0000FFFC
adds r0, r2, #0
adds r2, r1, #0
ands r2, r0
adds r1, #1
movs r0, #3
ands r1, r0
orrs r2, r1
strh r2, [r5, #0x10]
ldrh r0, [r5, #0xc]
subs r0, #1
_02012212:
strh r0, [r5, #0xc]
ldr r5, [sp, #0x24]
_02012216:
ldr r3, [sp, #0x20]
str r3, [sp, #0x18]
cmp r3, #0x1f
bgt _02012220
b _02011D88
_02012220:
add sp, #0x28
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_02012230: .4byte gOamBuffer2
_02012234: .4byte iwram_end
_02012238: .4byte 0x040000D4
_0201223C: .4byte 0x80000003
_02012240: .4byte 0x000001FF
_02012244: .4byte 0x0000FFFC
thumb_func_start DestroyRingsScatterTask
DestroyRingsScatterTask: @ 0x02012248
push {r4, lr}
ldr r4, _0201225C @ =gUnknown_030057C4
ldr r0, [r4]
bl TaskDestroy
movs r0, #0
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0201225C: .4byte gUnknown_030057C4
thumb_func_start sub_02012260
sub_02012260: @ 0x02012260
push {lr}
bl sub_02011D48
pop {r0}
bx r0
.align 2, 0
thumb_func_start sub_0201226C
sub_0201226C: @ 0x0201226C
ldr r1, _02012274 @ =gUnknown_030057C4
movs r0, #0
str r0, [r1]
bx lr
.align 2, 0
_02012274: .4byte gUnknown_030057C4
thumb_func_start sub_02012278
sub_02012278: @ 0x02012278
push {r4, r5, r6, lr}
@@ -1780,7 +861,7 @@ sub_8081200: @ 0x020129A0
ldr r1, _020129F8 @ =gGameMode
movs r0, #5
strb r0, [r1]
ldr r0, _020129FC @ =gUnknown_030057C4
ldr r0, _020129FC @ =gRingsScatterTask
movs r1, #0
str r1, [r0]
ldr r0, _02012A00 @ =gUnknown_030057D4
@@ -1821,7 +902,7 @@ _020129CC:
bx r0
.align 2, 0
_020129F8: .4byte gGameMode
_020129FC: .4byte gUnknown_030057C4
_020129FC: .4byte gRingsScatterTask
_02012A00: .4byte gUnknown_030057D4
_02012A04: .4byte gUnknown_030057D0
_02012A08: .4byte gPlayer
@@ -48,6 +48,7 @@ SECTIONS {
build/collect_rings/src/sa2/game/stage/camera.o(.text);
build/collect_rings/src/sa2/game/stage/terrain_collision.o(.text);
build/collect_rings/src/sa2/game/stage/player.o(.text);
build/collect_rings/src/sa2/game/stage/rings_scatter.o(.text);
build/collect_rings/asm/code.o(.text);
build/collect_rings/src/sa2/lib/m4a/m4a0.o(.text);
build/collect_rings/src/sa2/lib/m4a/m4a.o(.text);
+1 -1
View File
@@ -102,7 +102,7 @@ build/collect_rings/src/sa2/core.o(.data);
. = 0x000056B8; gRefCollision = .;
. = 0x000056C0; gPlayer = .;
. = 0x00005780; gPlayerBodyPSI = .;
. = 0x000057C4; gUnknown_030057C4 = .;
. = 0x000057C4; gRingsScatterTask = .;
. = 0x000057C8; gPlayerControls = .;
. = 0x000057D0; gUnknown_030057D0 = .;
. = 0x000057D4; gUnknown_030057D4 = .;