mirror of
https://github.com/zeldaret/tmc
synced 2026-08-17 13:30:12 -04:00
document tile asm functions
This commit is contained in:
+12
-10
@@ -931,8 +931,8 @@ _0800271A:
|
||||
bne _0800270A
|
||||
pop {r4, r5, r6, pc}
|
||||
|
||||
thumb_func_start sub_08002724
|
||||
sub_08002724: @ 0x08002724
|
||||
thumb_func_start UnpackTextNibbles
|
||||
UnpackTextNibbles: @ 0x08002724
|
||||
push {r4, r5, lr}
|
||||
movs r2, #0x10
|
||||
movs r3, #0xf
|
||||
@@ -1019,24 +1019,25 @@ _080027E6:
|
||||
movs r0, #4
|
||||
bx lr
|
||||
|
||||
// almost identical to LinearMoveDirection
|
||||
// r0 = Entity*
|
||||
// r1 = speed
|
||||
// r2 = direction
|
||||
non_word_aligned_thumb_func_start sub_080027EA
|
||||
sub_080027EA: @ 0x080027EA
|
||||
non_word_aligned_thumb_func_start LinearMoveDirectionOLD
|
||||
LinearMoveDirectionOLD: @ 0x080027EA
|
||||
push {r4, r5, r6, r7, lr}
|
||||
movs r3, #0x80
|
||||
tst r2, r3
|
||||
bne _08002860
|
||||
movs r4, #0x2a
|
||||
ldrh r3, [r0, r4]
|
||||
ldrh r3, [r0, r4] // collisions
|
||||
movs r4, #7
|
||||
tst r2, r4
|
||||
bne _08002812
|
||||
push {r0, r1, r2, r3}
|
||||
adds r0, r2, #0
|
||||
adds r1, r3, #0
|
||||
bl sub_08002864
|
||||
bl CalcCollisionDirectionOLD
|
||||
adds r4, r0, #0
|
||||
pop {r0, r1, r2, r3}
|
||||
cmp r2, r4
|
||||
@@ -1063,7 +1064,7 @@ _08002812:
|
||||
_08002834:
|
||||
adds r4, r0, #0
|
||||
pop {r0, r1, r2, r3}
|
||||
ldr r5, [r0, #0x2c]
|
||||
ldr r5, [r0, #0x2c] // x
|
||||
adds r5, r5, r4
|
||||
str r5, [r0, #0x2c]
|
||||
_0800283E:
|
||||
@@ -1081,15 +1082,16 @@ _0800283E:
|
||||
_08002856:
|
||||
adds r4, r0, #0
|
||||
pop {r0, r1, r2, r3}
|
||||
ldr r5, [r0, #0x30]
|
||||
ldr r5, [r0, #0x30] // y
|
||||
subs r5, r5, r4
|
||||
str r5, [r0, #0x30]
|
||||
_08002860:
|
||||
adds r1, r6, #0
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
|
||||
thumb_func_start sub_08002864
|
||||
sub_08002864: @ 0x08002864
|
||||
// collision related, probably leftover from FS
|
||||
thumb_func_start CalcCollisionDirectionOLD
|
||||
CalcCollisionDirectionOLD: @ 0x08002864
|
||||
adds r2, r0, #0
|
||||
lsrs r2, r2, #3
|
||||
cmp r2, #0
|
||||
|
||||
+20
-20
@@ -621,26 +621,26 @@ _0800439C: .4byte gSpritePtrs
|
||||
_080043A0: .4byte gSpritePtrs
|
||||
_080043A4: .4byte gGFXSlots+4
|
||||
|
||||
thumb_func_start sub_080043A8
|
||||
sub_080043A8: @ 0x080043A8
|
||||
movs r1, #0xb
|
||||
b _080043B6
|
||||
thumb_func_start CreateDrownFX
|
||||
CreateDrownFX: @ 0x080043A8
|
||||
movs r1, #0xb // FX_WATER_SPLASH
|
||||
b create_fx
|
||||
|
||||
thumb_func_start CreateChestSpawner
|
||||
CreateChestSpawner: @ 0x080043AC
|
||||
movs r1, #0xc
|
||||
b _080043B6
|
||||
thumb_func_start CreateLavaDrownFX
|
||||
CreateLavaDrownFX: @ 0x080043AC
|
||||
movs r1, #0xc // FX_LAVA_SPLASH
|
||||
b create_fx
|
||||
|
||||
thumb_func_start sub_080043B0
|
||||
sub_080043B0: @ 0x080043AC
|
||||
movs r1, #0x52
|
||||
b _080043B6
|
||||
thumb_func_start CreateSwampDrownFX
|
||||
CreateSwampDrownFX: @ 0x080043AC
|
||||
movs r1, #0x52 // FX_GREEN_SPLASH
|
||||
b create_fx
|
||||
|
||||
thumb_func_start CreateItemOnGround
|
||||
CreateItemOnGround: @ 0x080043B4
|
||||
movs r1, #0
|
||||
thumb_func_start CreatePitFallFX
|
||||
CreatePitFallFX: @ 0x080043B4
|
||||
movs r1, #0 // FX_FALL_DOWN
|
||||
|
||||
_080043B6:
|
||||
create_fx:
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
movs r0, #0xf
|
||||
@@ -648,10 +648,10 @@ _080043B6:
|
||||
bl CreateObject
|
||||
|
||||
cmp r0, #0
|
||||
beq _080043E0 @ Branch if entity could not be created
|
||||
beq _080043E0
|
||||
|
||||
movs r1, #0x48
|
||||
ldr r1, [r4, r1] @ Unused?
|
||||
ldr r1, [r4, r1] // load hitbox (unused)
|
||||
|
||||
ldrh r3, [r4, #0x2e]
|
||||
strh r3, [r0, #0x2e]
|
||||
@@ -664,11 +664,11 @@ _080043B6:
|
||||
|
||||
ldrb r3, [r4, #8]
|
||||
|
||||
cmp r3, #3 @ Is the spawner an enemy?
|
||||
cmp r3, #3 // is parent entity an enemy?
|
||||
bne _080043E0
|
||||
|
||||
movs r1, #1
|
||||
strb r1, [r0, #0xb] @ Set base parameter
|
||||
strb r1, [r0, #0xb] // copy entity.type2
|
||||
|
||||
_080043E0:
|
||||
adds r0, r4, #0
|
||||
|
||||
+38
-27
@@ -5,57 +5,67 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_080043E8
|
||||
sub_080043E8: @ 0x080043E8
|
||||
.macro hazard_tile tile:req, hazard_type:req
|
||||
.short \tile
|
||||
.short \hazard_type
|
||||
.endm
|
||||
|
||||
thumb_func_start GetTileHazardType
|
||||
GetTileHazardType: @ 0x080043E8
|
||||
push {r4, lr}
|
||||
ldrb r1, [r0, #0xc]
|
||||
cmp r1, #0
|
||||
beq _08004414
|
||||
beq no_hazard // action == 0
|
||||
adds r4, r0, #0
|
||||
bl sub_08016AD2
|
||||
bl UpdateCollisionLayer
|
||||
movs r3, #0x36
|
||||
ldrsh r2, [r4, r3]
|
||||
cmp r2, #0
|
||||
bmi _08004414
|
||||
cmp r0, #0
|
||||
beq _08004414
|
||||
add r3, pc, #0x10
|
||||
_08004404:
|
||||
bmi no_hazard // collisionLayer is negative
|
||||
cmp r0, #0 // are we on a tile?
|
||||
beq no_hazard
|
||||
adr r3, hazard_list-4
|
||||
loop:
|
||||
adds r3, #4
|
||||
ldrh r1, [r3]
|
||||
cmp r1, #0
|
||||
beq _08004414
|
||||
beq no_hazard
|
||||
cmp r0, r1
|
||||
bne _08004404
|
||||
bne loop
|
||||
ldrh r0, [r3, #2]
|
||||
pop {r4, pc}
|
||||
_08004414:
|
||||
no_hazard:
|
||||
movs r0, #0
|
||||
pop {r4, pc}
|
||||
_08004418:
|
||||
.byte 0x0D, 0x00, 0x01, 0x00, 0x10, 0x00, 0x02, 0x00
|
||||
.byte 0x11, 0x00, 0x02, 0x00, 0x5A, 0x00, 0x03, 0x00, 0x13, 0x00, 0x04, 0x00, 0x00, 0x00
|
||||
|
||||
hazard_list:
|
||||
hazard_tile 0xD, 0x1
|
||||
hazard_tile 0x10, 0x2
|
||||
hazard_tile 0x11, 0x2
|
||||
hazard_tile 0x5A, 0x3
|
||||
hazard_tile 0x13, 0x4
|
||||
.short 0x0000
|
||||
|
||||
non_word_aligned_thumb_func_start sub_0800442E
|
||||
sub_0800442E: @ 0x0800442E
|
||||
push {r0, lr}
|
||||
bl sub_080043E8
|
||||
bl GetTileHazardType
|
||||
cmp r0, #0
|
||||
beq _08004448
|
||||
lsls r0, r0, #2
|
||||
add r1, pc, #0xC
|
||||
beq not_hazard
|
||||
lsls r0, #2
|
||||
adr r1, _0800444C - 4
|
||||
ldr r1, [r1, r0]
|
||||
pop {r0}
|
||||
bl _call_via_r1
|
||||
movs r0, #1
|
||||
pop {pc}
|
||||
_08004448:
|
||||
not_hazard:
|
||||
movs r0, #0
|
||||
pop {r1, pc}
|
||||
_0800444C: .4byte CreateItemOnGround
|
||||
_08004450: .4byte sub_080043A8
|
||||
_08004454: .4byte CreateChestSpawner
|
||||
_08004458: .4byte sub_080043B0
|
||||
_0800444C: .4byte CreatePitFallFX
|
||||
_08004450: .4byte CreateDrownFX
|
||||
_08004454: .4byte CreateLavaDrownFX
|
||||
_08004458: .4byte CreateSwampDrownFX
|
||||
|
||||
thumb_func_start sub_0800445C
|
||||
sub_0800445C: @ 0x0800445C
|
||||
@@ -171,6 +181,7 @@ _08004516:
|
||||
adds r0, r2, #0
|
||||
bx lr
|
||||
|
||||
// r0 = Entity*
|
||||
thumb_func_start sub_0800451C
|
||||
sub_0800451C: @ 0x0800451C
|
||||
push {r0, lr}
|
||||
@@ -196,17 +207,17 @@ sub_0800451C: @ 0x0800451C
|
||||
sub_08004542: @ 0x08004542
|
||||
movs r1, #0x38
|
||||
movs r2, #2
|
||||
strb r2, [r0, r1]
|
||||
strb r2, [r0, r1] // entity->collisionLayer = 2
|
||||
movs r2, #0xc0
|
||||
ldrb r1, [r0, #0x1b]
|
||||
bics r1, r2
|
||||
adds r1, #0x40
|
||||
strb r1, [r0, #0x1b]
|
||||
strb r1, [r0, #0x1b] // update spriteOrientation
|
||||
movs r2, #0xc0
|
||||
ldrb r1, [r0, #0x19]
|
||||
bics r1, r2
|
||||
adds r1, #0x40
|
||||
strb r1, [r0, #0x19]
|
||||
strb r1, [r0, #0x19] // update spriteRendering
|
||||
bx lr
|
||||
|
||||
non_word_aligned_thumb_func_start ResetCollisionLayer
|
||||
|
||||
@@ -29,22 +29,22 @@ gUnk_08007CAC:: @ 08007CAC
|
||||
.endif
|
||||
.endif
|
||||
|
||||
non_word_aligned_thumb_func_start sub_08007DD6
|
||||
sub_08007DD6: @ 0x08007DD6
|
||||
non_word_aligned_thumb_func_start ActTileToTile
|
||||
ActTileToTile: @ 0x08007DD6
|
||||
push {lr}
|
||||
bl sub_08007DE0
|
||||
bl ActTileConv
|
||||
adds r0, r3, #0
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start sub_08007DE0
|
||||
sub_08007DE0: @ 0x08007DE0
|
||||
thumb_func_start ActTileConv
|
||||
ActTileConv: @ 0x08007DE0
|
||||
subs r1, #4
|
||||
_08007DE2:
|
||||
adds r1, #4
|
||||
ldrh r3, [r1]
|
||||
cmp r3, #0
|
||||
cmp r3, #0 // reached end
|
||||
beq _08007DF2
|
||||
cmp r0, r3
|
||||
cmp r0, r3 // equal
|
||||
bne _08007DE2
|
||||
ldrh r3, [r1, #2]
|
||||
movs r2, #1
|
||||
|
||||
+7
-7
@@ -71,7 +71,7 @@ _08001230:
|
||||
ldr r3, _0800135C @ =UpdateAnimationVariableFrames
|
||||
bx r3
|
||||
_0800123E:
|
||||
ldr r3, _08001360 @ =CreateItemOnGround
|
||||
ldr r3, _08001360 @ =CreatePitFallFX
|
||||
bx r3
|
||||
|
||||
non_word_aligned_thumb_func_start GenericConfused
|
||||
@@ -155,19 +155,19 @@ _080012BA:
|
||||
gUnk_080012C8::
|
||||
.4byte 0x00000000
|
||||
_080012CC: .4byte sub_08001214
|
||||
_080012D0: .4byte sub_080043A8
|
||||
_080012D4: .4byte CreateChestSpawner
|
||||
_080012D8: .4byte sub_080043B0
|
||||
_080012D0: .4byte CreateDrownFX
|
||||
_080012D4: .4byte CreateLavaDrownFX
|
||||
_080012D8: .4byte CreateSwampDrownFX
|
||||
|
||||
thumb_func_start sub_080012DC
|
||||
sub_080012DC: @ 0x080012DC
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
movs r5, #0x3a
|
||||
ldrb r1, [r4, r5]
|
||||
ldrb r1, [r4, r5] // gust jar state
|
||||
lsrs r1, r1, #3
|
||||
bhs _08001302
|
||||
bl sub_080043E8
|
||||
bl GetTileHazardType
|
||||
cmp r0, #4
|
||||
beq _08001302
|
||||
cmp r0, #0
|
||||
@@ -241,7 +241,7 @@ _08001352:
|
||||
.align 2, 0
|
||||
_08001358: .4byte gEnemyFunctions
|
||||
_0800135C: .4byte UpdateAnimationVariableFrames
|
||||
_08001360: .4byte CreateItemOnGround
|
||||
_08001360: .4byte CreatePitFallFX
|
||||
_08001364: .4byte 0x00001800
|
||||
_08001368: .4byte gUnk_080012C8
|
||||
_0800136C: .4byte gUnk_080012C8
|
||||
|
||||
+2
-2
@@ -120,8 +120,8 @@ _080B1A64:
|
||||
ldrh r0, [r1, r0]
|
||||
bx lr
|
||||
|
||||
arm_func_start arm_GetRelativeCollisionTile
|
||||
arm_GetRelativeCollisionTile: @ 0x080B1A8C
|
||||
arm_func_start arm_GetActTileRelative
|
||||
arm_GetActTileRelative: @ 0x080B1A8C
|
||||
ldrh r3, [r0, #0x2e]
|
||||
add r3, r3, r1
|
||||
ldrh r1, [r0, #0x32]
|
||||
|
||||
+82
-82
@@ -26,7 +26,7 @@ sub_0800857C: @ 0x0800857C
|
||||
_0800859C:
|
||||
ldrh r1, [r0, #0x24]
|
||||
ldrb r2, [r0, #0x15]
|
||||
bl sub_080027EA
|
||||
bl LinearMoveDirectionOLD
|
||||
|
||||
pop {r4 - r7}
|
||||
mov r8, r4
|
||||
@@ -57,11 +57,11 @@ sub_080085CC: @ 0x080085CC
|
||||
ldr r2, _0800888C @ =gPlayerState
|
||||
ldr r1, _08008890 @ =gUnk_080083FC
|
||||
movs r3, #0x26
|
||||
ldrb r3, [r2, r3]
|
||||
ldrb r3, [r2, r3] // swim_state
|
||||
orrs r3, r3
|
||||
beq _080085E6
|
||||
ldr r2, [r2, #0x30]
|
||||
movs r3, #0x80
|
||||
movs r3, #0x80 // flags & PL_MINISH
|
||||
ands r2, r3
|
||||
beq _0800861A
|
||||
ldr r1, _08008894 @ =gUnk_0800839C
|
||||
@@ -70,12 +70,12 @@ _080085E6:
|
||||
ldr r1, _08008898 @ =gUnk_0800845C
|
||||
ldrb r3, [r2, #2]
|
||||
orrs r3, r3
|
||||
bne _0800861A
|
||||
ldr r2, [r2, #0x30]
|
||||
bne _0800861A // jump_status != 0
|
||||
ldr r2, [r2, #0x30] // flags & PL_PARACHUTE
|
||||
ldr r3, _0800889C @ =0x01000000
|
||||
tst r2, r3
|
||||
bne _0800861A
|
||||
movs r3, #0x80
|
||||
movs r3, #0x80 // // flags & PL_MINISH
|
||||
ldr r1, _080088A0 @ =gUnk_0800833C
|
||||
ands r2, r3
|
||||
bne _0800861A
|
||||
@@ -83,15 +83,15 @@ _080085E6:
|
||||
ldr r3, _080088A8 @ =gPlayerState
|
||||
ldrb r2, [r3, #0x1c]
|
||||
orrs r2, r2
|
||||
bne _0800861A
|
||||
bne _0800861A // field_0x1c != 0
|
||||
ldrb r2, [r3, #5]
|
||||
orrs r2, r2
|
||||
bne _0800861A
|
||||
bne _0800861A // heldObject != 0
|
||||
ldr r1, _080088AC @ =gUnk_0800851C
|
||||
movs r2, #0xaa
|
||||
ldrb r2, [r3, r2]
|
||||
orrs r2, r2
|
||||
bne _0800861A
|
||||
bne _0800861A // attachedBeetleCount != 0
|
||||
ldr r1, _080088B0 @ =gUnk_080082DC
|
||||
_0800861A:
|
||||
mov r11, r1
|
||||
@@ -169,7 +169,7 @@ _08008684:
|
||||
_080086AC:
|
||||
mov r0, r8
|
||||
movs r2, #0x2a
|
||||
strh r7, [r0, r2]
|
||||
strh r7, [r0, r2] // collisions
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start sub_080086B4
|
||||
@@ -265,17 +265,17 @@ _08008754:
|
||||
ands r2, r3
|
||||
pop {pc}
|
||||
|
||||
non_word_aligned_thumb_func_start sub_0800875A
|
||||
sub_0800875A: @ 0x0800875A
|
||||
non_word_aligned_thumb_func_start DoItemTileInteraction
|
||||
DoItemTileInteraction: @ 0x0800875A
|
||||
push {r2, r4, lr}
|
||||
ldrb r3, [r0, #0x14]
|
||||
ldrb r3, [r0, #0x14] // item.animationState
|
||||
movs r2, #6
|
||||
ands r3, r2
|
||||
ldr r4, _080088D0 @ =gUnk_08007DF4
|
||||
ldrsb r2, [r4, r3]
|
||||
adds r3, #1
|
||||
ldrsb r3, [r4, r3]
|
||||
bl sub_08008782
|
||||
bl DoTileInteractionOffset
|
||||
pop {r2, r4}
|
||||
cmp r0, #0
|
||||
beq _08008780
|
||||
@@ -288,21 +288,21 @@ sub_0800875A: @ 0x0800875A
|
||||
_08008780:
|
||||
pop {pc}
|
||||
|
||||
non_word_aligned_thumb_func_start sub_08008782
|
||||
sub_08008782: @ 0x08008782
|
||||
non_word_aligned_thumb_func_start DoTileInteractionOffset
|
||||
DoTileInteractionOffset: @ 0x08008782
|
||||
push {r4}
|
||||
ldrh r4, [r0, #0x2e]
|
||||
adds r2, r2, r4
|
||||
ldrh r4, [r0, #0x32]
|
||||
adds r3, r3, r4
|
||||
pop {r4}
|
||||
b sub_08008796
|
||||
b DoTileInteraction
|
||||
|
||||
thumb_func_start sub_08008790
|
||||
sub_08008790: @ 0x08008790
|
||||
thumb_func_start DoTileInteractionHere
|
||||
DoTileInteractionHere: @ 0x08008790
|
||||
ldrh r2, [r0, #0x2e]
|
||||
ldrh r3, [r0, #0x32]
|
||||
b sub_08008796
|
||||
b DoTileInteraction
|
||||
|
||||
// r0: Entity*
|
||||
// r1: tile filter?
|
||||
@@ -310,8 +310,8 @@ sub_08008790: @ 0x08008790
|
||||
// r3: y
|
||||
|
||||
// Somehow involved in trampling tiles, digging with claws, picking up tiles..
|
||||
non_word_aligned_thumb_func_start sub_08008796
|
||||
sub_08008796: @ 0x08008796
|
||||
non_word_aligned_thumb_func_start DoTileInteraction
|
||||
DoTileInteraction: @ 0x08008796
|
||||
push {r4, r5, r6, r7, lr}
|
||||
push {r2, r3}
|
||||
ldr r2, _080088D4 @ =gRoomControls
|
||||
@@ -319,17 +319,17 @@ sub_08008796: @ 0x08008796
|
||||
movs r2, #1
|
||||
cmp r2, r3
|
||||
pop {r2, r3}
|
||||
beq _080087CE
|
||||
beq _080087CE_return0
|
||||
push {r0, r1, r2, r3}
|
||||
pop {r4, r5, r6, r7}
|
||||
adds r0, r6, #0
|
||||
adds r1, r7, #0
|
||||
movs r2, #0x38
|
||||
ldrb r2, [r4, r2]
|
||||
ldrb r2, [r4, r2] // collision layer
|
||||
bl GetTileTypeByPos
|
||||
ldr r1, _080088D8 @ =gUnk_080046A4
|
||||
bl sub_08007DE0
|
||||
beq _080087CE
|
||||
bl ActTileConv
|
||||
beq _080087CE_return0
|
||||
lsls r1, r3, #3
|
||||
adds r3, r5, #0
|
||||
ldr r0, _080088DC @ =gUnk_080047F6
|
||||
@@ -338,51 +338,51 @@ sub_08008796: @ 0x08008796
|
||||
lsrs r0, r3
|
||||
lsrs r0, r0, #1
|
||||
bhs _080087D2
|
||||
_080087CE:
|
||||
_080087CE_return0:
|
||||
movs r0, #0
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
_080087D2:
|
||||
ldrb r0, [r5, #2]
|
||||
ldrb r1, [r5, #3]
|
||||
ldrb r0, [r5, #2] // object id
|
||||
ldrb r1, [r5, #3] // object type
|
||||
cmp r0, #0xff
|
||||
beq _0800883A
|
||||
beq after_create_obj
|
||||
cmp r3, #6
|
||||
beq _0800883A
|
||||
beq after_create_obj
|
||||
cmp r3, #0xe
|
||||
beq _0800883A
|
||||
beq after_create_obj
|
||||
cmp r3, #0xa
|
||||
beq _0800883A
|
||||
beq after_create_obj
|
||||
cmp r3, #0xb
|
||||
beq _0800883A
|
||||
beq after_create_obj
|
||||
cmp r3, #0xd
|
||||
bne _080087F6
|
||||
cmp r0, #0xf
|
||||
bne _0800883A
|
||||
cmp r1, #0x17
|
||||
bne _0800883A
|
||||
cmp r0, #0xf // SPECIAL_FX
|
||||
bne after_create_obj
|
||||
cmp r1, #0x17 // FX_GRASS_CUT
|
||||
bne after_create_obj
|
||||
_080087F6:
|
||||
movs r2, #0
|
||||
cmp r0, #0xf
|
||||
cmp r0, #0xf // SPECIAL_FX
|
||||
bne _080087FE
|
||||
movs r2, #0x80
|
||||
_080087FE:
|
||||
bl CreateObject
|
||||
bl CreateObject // r0 = id, r1 = type, r2 = type2
|
||||
cmp r0, #0
|
||||
beq _0800883A
|
||||
ldrb r1, [r5, #2]
|
||||
beq after_create_obj
|
||||
ldrb r1, [r5, #2] // object id
|
||||
cmp r1, #0
|
||||
beq _08008820
|
||||
beq no_offset
|
||||
movs r2, #0xf
|
||||
adds r1, r6, #0
|
||||
bics r1, r2
|
||||
adds r1, #8
|
||||
strh r1, [r0, #0x2e]
|
||||
strh r1, [r0, #0x2e] // x
|
||||
adds r1, r7, #0
|
||||
bics r1, r2
|
||||
adds r1, #8
|
||||
strh r1, [r0, #0x32]
|
||||
strh r1, [r0, #0x32] // y
|
||||
b _0800882C
|
||||
_08008820:
|
||||
no_offset:
|
||||
ldrh r1, [r4, #0x2e]
|
||||
strh r1, [r0, #0x2e]
|
||||
ldrh r1, [r4, #0x32]
|
||||
@@ -391,12 +391,12 @@ _08008820:
|
||||
strh r1, [r1, #0x36]
|
||||
_0800882C:
|
||||
movs r3, #0x50
|
||||
str r4, [r1, r3]
|
||||
str r4, [r1, r3] // set parent to r4
|
||||
movs r3, #0x38
|
||||
ldrb r1, [r4, r3]
|
||||
ldrb r1, [r4, r3] // copy collision layer from parent
|
||||
strb r1, [r0, r3]
|
||||
bl UpdateSpriteForCollisionLayer
|
||||
_0800883A:
|
||||
after_create_obj:
|
||||
ldr r1, _080088E0 @ =gRoomControls
|
||||
ldrh r0, [r1, #6]
|
||||
subs r2, r6, r0
|
||||
@@ -417,7 +417,7 @@ _0800883A:
|
||||
beq _08008876
|
||||
push {r0, r1}
|
||||
adds r0, r2, #0
|
||||
bl GetLayerByIndex
|
||||
bl GetTileBuffer
|
||||
adds r3, r0, #4
|
||||
pop {r0, r1}
|
||||
lsls r1, r1, #1
|
||||
@@ -461,22 +461,22 @@ _080088DC: .4byte gUnk_080047F6
|
||||
_080088E0: .4byte gRoomControls
|
||||
_080088E4: .4byte 0x00004000
|
||||
_080088E8: .4byte 0x0000FFFF
|
||||
_080088EC:
|
||||
velocities1:
|
||||
.byte 0, -3, 3, -3
|
||||
.byte 3, 0, 3, 3
|
||||
.byte 0, 3, -3, 3
|
||||
.byte -3, 0, -3, -3
|
||||
_080088FC:
|
||||
ice_velocities:
|
||||
.byte 0, -10, 10, -10
|
||||
.byte 10, 0, 10, 10
|
||||
.byte 0, 10, -10, 10
|
||||
.byte -10, 0, -10, -10
|
||||
_0800890C:
|
||||
velocities3:
|
||||
.byte 0, 6, -6, 0
|
||||
.byte 0, -6, 6, 0
|
||||
.byte 19, 18, 18, 16
|
||||
.byte 16, 17, 17, 19
|
||||
_0800891C:
|
||||
reset_vel:
|
||||
push {r0}
|
||||
bl ResetPlayerVelocity
|
||||
pop {r0}
|
||||
@@ -497,7 +497,7 @@ UpdateIcePlayerVelocity: @ 0x0800892E
|
||||
|
||||
_UpdateIcePlayerVelocity:
|
||||
push {lr}
|
||||
ldrb r2, [r0, #0x14]
|
||||
ldrb r2, [r0, #0x14] // animationState
|
||||
lsrs r2, r2, #1
|
||||
lsls r2, r2, #3
|
||||
ldr r1, _08008A68 @ =gPlayerState
|
||||
@@ -522,20 +522,20 @@ _08008956:
|
||||
movs r3, #0x80
|
||||
tst r2, r3
|
||||
bne _080089C0
|
||||
_08008960:
|
||||
ldrb r3, [r1, #5]
|
||||
_08008960: // r1 = gPlayerState
|
||||
ldrb r3, [r1, #5] // heldObject
|
||||
cmp r3, #2
|
||||
beq _0800891C
|
||||
beq reset_vel
|
||||
cmp r3, #1
|
||||
beq _0800891C
|
||||
ldr r4, _08008A74 @ =_080088FC
|
||||
beq reset_vel
|
||||
ldr r4, _08008A74 @ =ice_velocities
|
||||
ldrb r3, [r1, #2]
|
||||
adds r1, r2, #0
|
||||
orrs r3, r3
|
||||
orrs r3, r3 // jump_status != 0
|
||||
beq _08008992
|
||||
push {r2}
|
||||
movs r3, #0x14
|
||||
ldrb r1, [r0, r3]
|
||||
ldrb r1, [r0, r3] // field_0x14
|
||||
lsrs r1, r1, #1
|
||||
lsls r1, r1, #1
|
||||
lsrs r2, r2, #2
|
||||
@@ -544,7 +544,7 @@ _08008960:
|
||||
adds r2, #2
|
||||
movs r4, #7
|
||||
ands r2, r4
|
||||
ldr r4, _08008A78 @ =_080088EC
|
||||
ldr r4, _08008A78 @ =velocities1
|
||||
cmp r2, #4
|
||||
beq _08008992
|
||||
bhs _080089A8
|
||||
@@ -557,25 +557,25 @@ _08008992:
|
||||
ldrsb r2, [r4, r3]
|
||||
adds r3, #1
|
||||
ldrsb r3, [r4, r3]
|
||||
bl sub_08008A46
|
||||
bl AddPlayerVelocity
|
||||
b _080089C0
|
||||
_080089A8:
|
||||
movs r3, #0x14
|
||||
ldrb r3, [r0, r3]
|
||||
lsrs r3, r3, #1
|
||||
lsls r3, r3, #1
|
||||
ldr r4, _08008A7C @ =_0800890C
|
||||
ldr r4, _08008A7C @ =velocities3
|
||||
adds r4, r4, r3
|
||||
movs r3, #0
|
||||
ldrsb r2, [r4, r3]
|
||||
adds r3, #1
|
||||
ldrsb r3, [r4, r3]
|
||||
bl sub_08008A46
|
||||
bl AddPlayerVelocity
|
||||
_080089C0:
|
||||
ldr r1, _08008A80 @ =gPlayerState
|
||||
movs r4, #0x8c
|
||||
movs r2, #8
|
||||
ldrsh r3, [r1, r4]
|
||||
ldrsh r3, [r1, r4] // vel_x
|
||||
orrs r3, r3
|
||||
beq _080089E4
|
||||
bpl _080089D2
|
||||
@@ -585,7 +585,7 @@ _080089D2:
|
||||
push {r0, r1}
|
||||
adds r1, r3, #0
|
||||
push {r2}
|
||||
bl sub_080027EA
|
||||
bl LinearMoveDirectionOLD
|
||||
pop {r0}
|
||||
bl sub_0807A5B8
|
||||
pop {r0, r1}
|
||||
@@ -602,7 +602,7 @@ _080089F4:
|
||||
push {r0, r1}
|
||||
adds r1, r3, #0
|
||||
push {r2}
|
||||
bl sub_080027EA
|
||||
bl LinearMoveDirectionOLD
|
||||
pop {r0}
|
||||
bl sub_0807A5B8
|
||||
pop {r0, r1}
|
||||
@@ -646,18 +646,18 @@ _08008A3E:
|
||||
beq _08008A3A
|
||||
b _08008A38
|
||||
|
||||
non_word_aligned_thumb_func_start sub_08008A46
|
||||
sub_08008A46: @ 0x08008A46
|
||||
non_word_aligned_thumb_func_start AddPlayerVelocity
|
||||
AddPlayerVelocity: @ 0x08008A46
|
||||
push {lr}
|
||||
ldr r1, _08008A84 @ =gPlayerState
|
||||
movs r4, #0x8c
|
||||
ldrsh r5, [r1, r4]
|
||||
ldrsh r5, [r1, r4] // vel_x
|
||||
adds r5, r5, r2
|
||||
bl sub_08008A88
|
||||
movs r4, #0x8e
|
||||
bl ClampPlayerVelocity
|
||||
movs r4, #0x8e // vel_y
|
||||
ldrsh r5, [r1, r4]
|
||||
adds r5, r5, r3
|
||||
bl sub_08008A88
|
||||
bl ClampPlayerVelocity
|
||||
pop {pc}
|
||||
_08008A60:
|
||||
eors r3, r3
|
||||
@@ -667,14 +667,14 @@ _08008A60:
|
||||
_08008A68: .4byte gPlayerState
|
||||
_08008A6C: .4byte gPlayerState
|
||||
_08008A70: .4byte gPlayerState
|
||||
_08008A74: .4byte _080088FC
|
||||
_08008A78: .4byte _080088EC
|
||||
_08008A7C: .4byte _0800890C
|
||||
_08008A74: .4byte ice_velocities
|
||||
_08008A78: .4byte velocities1
|
||||
_08008A7C: .4byte velocities3
|
||||
_08008A80: .4byte gPlayerState
|
||||
_08008A84: .4byte gPlayerState
|
||||
|
||||
thumb_func_start sub_08008A88
|
||||
sub_08008A88: @ 0x08008A88
|
||||
thumb_func_start ClampPlayerVelocity
|
||||
ClampPlayerVelocity: @ 0x08008A88
|
||||
orrs r5, r5
|
||||
bmi _08008A94
|
||||
ldr r6, _08008B38 @ =0x00000180
|
||||
@@ -758,13 +758,13 @@ CheckNEastTile: @ 0x08008B02
|
||||
push {r0, r1, lr}
|
||||
movs r1, #0
|
||||
movs r2, #0
|
||||
bl GetRelativeCollisionTile
|
||||
bl GetActTileRelative
|
||||
// check if north east collision?
|
||||
ldr r1, =0x4000
|
||||
tst r0, r1
|
||||
bne _08008B1E
|
||||
ldr r1, =gUnk_08007CAC
|
||||
bl sub_08007DE0
|
||||
bl ActTileConv
|
||||
movs r2, #1
|
||||
cmp r3, #1
|
||||
beq _08008B20
|
||||
|
||||
+55
-47
@@ -4,32 +4,33 @@
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
.thumb
|
||||
|
||||
.macro transition_tile tile:req, src_layer:req dest_layer:req
|
||||
.short \tile
|
||||
.byte \src_layer, \dest_layer
|
||||
.endm
|
||||
|
||||
|
||||
gUnk_08016984:: @ 08016984
|
||||
.incbin "code_08016984/gUnk_08016984.bin"
|
||||
|
||||
.text
|
||||
|
||||
non_word_aligned_thumb_func_start GetNextScriptCommandHalfword
|
||||
GetNextScriptCommandHalfword: @ 0x08016986
|
||||
GetNextScriptCommandHalfword::
|
||||
ldrh r0, [r0]
|
||||
bx lr
|
||||
|
||||
non_word_aligned_thumb_func_start GetNextScriptCommandHalfwordAfterCommandMetadata
|
||||
GetNextScriptCommandHalfwordAfterCommandMetadata: @ 0x0801698A
|
||||
GetNextScriptCommandHalfwordAfterCommandMetadata::
|
||||
ldrh r0, [r0, #2]
|
||||
bx lr
|
||||
|
||||
non_word_aligned_thumb_func_start GetNextScriptCommandWord
|
||||
GetNextScriptCommandWord: @ 0x0801698E
|
||||
GetNextScriptCommandWord::
|
||||
ldrh r1, [r0]
|
||||
ldrh r0, [r0, #2]
|
||||
lsls r0, r0, #0x10
|
||||
orrs r0, r1
|
||||
bx lr
|
||||
|
||||
thumb_func_start GetNextScriptCommandWordAfterCommandMetadata
|
||||
GetNextScriptCommandWordAfterCommandMetadata: @ 0x08016998
|
||||
GetNextScriptCommandWordAfterCommandMetadata::
|
||||
ldrh r1, [r0, #2]
|
||||
ldrh r0, [r0, #4]
|
||||
lsls r0, r0, #0x10
|
||||
@@ -37,17 +38,15 @@ GetNextScriptCommandWordAfterCommandMetadata: @ 0x08016998
|
||||
bx lr
|
||||
.align 2, 0
|
||||
|
||||
gUnk_080169A4::
|
||||
.byte 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x01, 0x00
|
||||
.byte 0xFF, 0x01, 0x00, 0x00, 0x02, 0xFF, 0x01, 0xFE, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x01, 0xFF, 0x02
|
||||
.byte 0x00, 0x00, 0x01, 0x01, 0x02, 0xFF, 0x02, 0xFE, 0xFE, 0x02, 0xFF, 0x03, 0xFD, 0xFF, 0xFE, 0x01
|
||||
.byte 0x01, 0xFD, 0xFF, 0xFF, 0x03, 0xFE, 0x02, 0x00, 0x00, 0xFF, 0xFE, 0x03, 0xFD, 0x02, 0xFF, 0x00
|
||||
.byte 0x00, 0xFD, 0x02, 0x00, 0x00, 0xFF, 0x00, 0xFE, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02
|
||||
.byte 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00
|
||||
.byte 0x00, 0x00, 0x01, 0x00
|
||||
gShakeOffsets::
|
||||
.byte 1, -1, 0, 1, 1, 0, 0, 1, -1, -1, 1, 0, -1, 1, 0, 0
|
||||
.byte 2, -1, 1, -2, 0, -1, -1, 0, -1, 1, -1, 2, 0, 0, 1, 1
|
||||
.byte 2, -1, 2, -2, -2, 2, -1, 3, -3, -1, -2, 1, 1, -3, -1, -1
|
||||
.byte 3, -2, 2, 0, 0, -1, -2, 3, -3, 2, -1, 0, 0, -3, 2, 0
|
||||
.byte 0, -1, 0, -2, 0, -1, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1
|
||||
.byte 2, 0, 1, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 1, 0
|
||||
|
||||
thumb_func_start UpdateSpriteForCollisionLayer
|
||||
UpdateSpriteForCollisionLayer: @ 0x08016A04
|
||||
UpdateSpriteForCollisionLayer::
|
||||
movs r1, #0x38
|
||||
ldrb r1, [r0, r1]
|
||||
lsls r1, r1, #1
|
||||
@@ -69,8 +68,7 @@ UpdateSpriteForCollisionLayer: @ 0x08016A04
|
||||
_08016A28:
|
||||
.byte 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40
|
||||
|
||||
thumb_func_start ResolveCollisionLayer
|
||||
ResolveCollisionLayer: @ 0x08016A30
|
||||
ResolveCollisionLayer::
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
movs r5, #0x38
|
||||
@@ -102,41 +100,51 @@ _08016A64:
|
||||
bl UpdateSpriteForCollisionLayer
|
||||
pop {r4, r5, pc}
|
||||
|
||||
thumb_func_start sub_08016A6C
|
||||
sub_08016A6C: @ 0x08016A6C
|
||||
CheckOnLayerTransition::
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
bl GetActTile
|
||||
add r1, pc, #0x38
|
||||
_08016A76:
|
||||
adds r1, #4
|
||||
ldrh r2, [r1]
|
||||
bl GetActTile // tile under me
|
||||
adr r1, gTransitionTiles-4
|
||||
loop:
|
||||
adds r1, #4 // p += 4
|
||||
ldrh r2, [r1] // *(u16*)(p)
|
||||
cmp r2, #0
|
||||
beq _08016A90
|
||||
beq not_found
|
||||
cmp r2, r0
|
||||
bne _08016A76
|
||||
bne loop // found the tile under me?
|
||||
movs r2, #0x38
|
||||
ldrb r3, [r4, r2]
|
||||
ldrb r5, [r1, #2]
|
||||
cmp r3, r5
|
||||
beq _08016A90
|
||||
ldrb r5, [r1, #3]
|
||||
strb r5, [r4, r2]
|
||||
_08016A90:
|
||||
ldrb r3, [r4, r2] // collision layer
|
||||
ldrb r5, [r1, #2] // *(u8*)(p + 2)
|
||||
cmp r3, r5 // am i on the right later?
|
||||
beq not_found
|
||||
ldrb r5, [r1, #3] // *(u8*)(p + 3)
|
||||
strb r5, [r4, r2] // move to a new layer
|
||||
not_found:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_08016A94:
|
||||
.byte 0x2A, 0x00, 0x03, 0x03, 0x2D, 0x00, 0x03, 0x03, 0x2B, 0x00, 0x03, 0x03
|
||||
.byte 0x2C, 0x00, 0x03, 0x03, 0x4C, 0x00, 0x03, 0x03, 0x4E, 0x00, 0x03, 0x03, 0x4D, 0x00, 0x03, 0x03
|
||||
.byte 0x4F, 0x00, 0x03, 0x03, 0x0A, 0x00, 0x02, 0x01, 0x09, 0x00, 0x02, 0x01, 0x0C, 0x00, 0x01, 0x02
|
||||
.byte 0x0B, 0x00, 0x01, 0x02, 0x52, 0x00, 0x03, 0x03, 0x27, 0x00, 0x03, 0x03, 0x26, 0x00, 0x03, 0x03
|
||||
.byte 0x00, 0x00
|
||||
|
||||
non_word_aligned_thumb_func_start sub_08016AD2
|
||||
sub_08016AD2: @ 0x08016AD2
|
||||
transition_tile 0x2A, 3, 3
|
||||
transition_tile 0x2D, 3, 3
|
||||
transition_tile 0x2B, 3, 3
|
||||
transition_tile 0x2C, 3, 3
|
||||
transition_tile 0x4C, 3, 3
|
||||
transition_tile 0x4E, 3, 3
|
||||
transition_tile 0x4D, 3, 3
|
||||
transition_tile 0x4F, 3, 3
|
||||
gTransitionTiles:
|
||||
transition_tile 0x0A, 2, 1
|
||||
transition_tile 0x09, 2, 1
|
||||
transition_tile 0x0C, 1, 2
|
||||
transition_tile 0x0B, 1, 2
|
||||
transition_tile 0x52, 3, 3
|
||||
transition_tile 0x27, 3, 3
|
||||
transition_tile 0x26, 3, 3
|
||||
.short 0x0000
|
||||
|
||||
UpdateCollisionLayer::
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_08016A6C
|
||||
bl CheckOnLayerTransition
|
||||
push {r0}
|
||||
adds r0, r4, #0
|
||||
bl UpdateSpriteForCollisionLayer
|
||||
|
||||
+11
-11
@@ -54,8 +54,8 @@ CloneTile: @ 0x08000152
|
||||
ldrh r0, [r3, r0]
|
||||
lsrs r2, r2, #2
|
||||
|
||||
non_word_aligned_thumb_func_start SetTile
|
||||
SetTile: @ r0 = tile type, r1, = tile position, r2 = layer
|
||||
non_word_aligned_thumb_func_start SetBottomTile
|
||||
SetBottomTile: @ r0 = tile type, r1, = tile position, r2 = layer
|
||||
push {r4-r7, lr}
|
||||
lsls r3, r2, #3
|
||||
ldr r4, _08000208 @ =gUnk_08000228
|
||||
@@ -65,7 +65,7 @@ SetTile: @ r0 = tile type, r1, = tile position, r2 = layer
|
||||
strh r0, [r5, r6]
|
||||
ldr r6, _0800020C @ =0x00004000
|
||||
cmp r0, r6
|
||||
blo _0800019A
|
||||
blo tile_wrong_type
|
||||
push {r1, r2}
|
||||
subs r4, r0, r6
|
||||
ldr r3, _08000210 @ =gUnk_080B7910
|
||||
@@ -77,12 +77,12 @@ SetTile: @ r0 = tile type, r1, = tile position, r2 = layer
|
||||
bl sub_08000148
|
||||
pop {r0, r1} @ tilepos, layer
|
||||
push {r0, r1}
|
||||
bl DeleteLoadedTileEntity
|
||||
bl UnregisterInteractTile
|
||||
adds r0, r7, #0
|
||||
pop {r1, r2}
|
||||
bl sub_0801AF48
|
||||
bl RegisterInteractTile
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
_0800019A:
|
||||
tile_wrong_type:
|
||||
adds r3, #4
|
||||
ldr r4, [r4, r3]
|
||||
lsls r0, r0, #1
|
||||
@@ -96,7 +96,7 @@ _0800019A:
|
||||
lsrs r2, r2, #2
|
||||
bl sub_08000148
|
||||
pop {r0, r1}
|
||||
bl DeleteLoadedTileEntity
|
||||
bl UnregisterInteractTile
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_080001C0: .4byte gMapBottom+0x6004
|
||||
@@ -265,9 +265,9 @@ GetTileType: @ 0x080002B0
|
||||
@ r0: Entity*
|
||||
@ r1: u32
|
||||
@ r2: u32
|
||||
thumb_func_start GetRelativeCollisionTile
|
||||
GetRelativeCollisionTile: @ 0x080002B4
|
||||
ldr r3, _08000320 @ =ram_GetRelativeCollisionTile
|
||||
thumb_func_start GetActTileRelative
|
||||
GetActTileRelative: @ 0x080002B4
|
||||
ldr r3, _08000320 @ =ram_GetActTileRelative
|
||||
bx r3
|
||||
|
||||
@ call 0x080B1AA8
|
||||
@@ -410,7 +410,7 @@ _08000310: .4byte ram_GetTileTypeByPos
|
||||
_08000314: .4byte ram_sub_080B1A48
|
||||
_08000318: .4byte ram_sub_080B1A58
|
||||
_0800031C: .4byte ram_GetTileType
|
||||
_08000320: .4byte ram_GetRelativeCollisionTile
|
||||
_08000320: .4byte ram_GetActTileRelative
|
||||
_08000324: .4byte ram_GetActTile
|
||||
_08000328: .4byte ram_sub_080B1AB4
|
||||
_0800032C: .4byte ram_sub_080B1AC8
|
||||
|
||||
Reference in New Issue
Block a user