From 90fbe97e7ddb50e7b59b5e99b7c79913fc15ccb1 Mon Sep 17 00:00:00 2001 From: idefix02 <237103031+idefix02@users.noreply.github.com> Date: Mon, 21 Sep 2026 21:51:15 +0200 Subject: [PATCH] Match sub_80136DC --- .../game/stage/player__sub_80136DC.inc | 472 ------------------ src/game/sa3/stage/player.c | 181 +++---- 2 files changed, 72 insertions(+), 581 deletions(-) delete mode 100644 asm/non_matching/game/stage/player__sub_80136DC.inc diff --git a/asm/non_matching/game/stage/player__sub_80136DC.inc b/asm/non_matching/game/stage/player__sub_80136DC.inc deleted file mode 100644 index 43f78eaef..000000000 --- a/asm/non_matching/game/stage/player__sub_80136DC.inc +++ /dev/null @@ -1,472 +0,0 @@ - -.syntax unified -.text - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - lsls r0, r0, #0x10 - lsrs r1, r0, #0x10 - mov r8, r1 - asrs r3, r0, #0x10 - lsls r0, r3, #2 - adds r0, r0, r3 - lsls r0, r0, #2 - adds r0, r0, r3 - lsls r0, r0, #4 - ldr r1, _08013750 @ =gPlayers - adds r6, r0, r1 - adds r0, r6, #0 - adds r0, #0xe0 - ldr r0, [r0] - adds r5, r0, #0 - adds r5, #0xc - adds r4, r0, #0 - ldr r2, _08013754 @ =gCamera - ldrh r1, [r2, #4] - movs r7, #0 - mov ip, r7 - ldr r0, [r6, #0x10] - asrs r0, r0, #8 - movs r7, #0 - ldrsh r2, [r2, r7] - subs r0, r0, r2 - strh r0, [r5, #0x10] - ldr r0, [r6, #0x14] - asrs r0, r0, #8 - lsls r1, r1, #0x10 - asrs r1, r1, #0x10 - subs r0, r0, r1 - strh r0, [r5, #0x12] - ldr r0, [r6, #0x10] - asrs r0, r0, #8 - subs r0, r0, r2 - strh r0, [r4, #6] - ldr r0, [r6, #0x14] - asrs r0, r0, #8 - subs r0, r0, r1 - strh r0, [r4, #8] - ldr r1, _08013758 @ =gStageData - ldrb r0, [r1, #3] - cmp r0, #7 - bne _08013764 - ldrb r0, [r1, #6] - cmp r0, r3 - beq _0801375C - ldr r0, [r5, #8] - movs r1, #0x80 - lsls r1, r1, #2 - orrs r0, r1 - b _08013762 - .align 2, 0 -_08013750: .4byte gPlayers -_08013754: .4byte gCamera -_08013758: .4byte gStageData -_0801375C: - ldr r0, [r5, #8] - ldr r1, _080137C8 @ =0xFFFFFDFF - ands r0, r1 -_08013762: - str r0, [r5, #8] -_08013764: - adds r0, r6, #0 - adds r0, #0x2b - ldrb r1, [r0] - movs r0, #0x1c - ands r0, r1 - cmp r0, #0xc - bne _080137D8 - ldrh r1, [r6, #0x34] - ldrh r0, [r6, #0x36] - mov sb, r0 - ldr r3, _080137CC @ =gPlayerCharacterIdleAnims - adds r0, r6, #0 - adds r0, #0x2a - ldrb r0, [r0] - lsls r2, r0, #0x1c - lsrs r0, r2, #0x1b - adds r0, r0, r3 - movs r7, #0 - ldrsh r0, [r0, r7] - subs r0, r1, r0 - cmp r0, #0xa4 - bgt _0801379C - lsrs r0, r2, #0x1b - adds r0, r0, r3 - ldrh r0, [r0] - subs r0, r1, r0 - lsls r0, r0, #0x10 - lsrs r1, r0, #0x10 -_0801379C: - cmp r1, #8 - beq _08013808 - cmp r1, #0x6f - beq _08013808 - cmp r1, #0x8c - beq _08013808 - cmp r1, #0x8d - beq _08013808 - ldr r0, _080137D0 @ =0x000002BD - cmp r1, r0 - beq _08013808 - cmp r1, #0x73 - beq _08013808 - cmp r1, r0 - beq _08013808 - ldr r0, _080137D4 @ =0x00000519 - cmp r1, r0 - bne _08013802 - mov r0, sb - cmp r0, #0 - bne _08013802 - b _08013808 - .align 2, 0 -_080137C8: .4byte 0xFFFFFDFF -_080137CC: .4byte gPlayerCharacterIdleAnims -_080137D0: .4byte 0x000002BD -_080137D4: .4byte 0x00000519 -_080137D8: - movs r2, #0x30 - ldrsh r1, [r6, r2] - cmp r1, #8 - beq _080137FE - cmp r1, #0x6f - beq _080137FE - cmp r1, #0x8c - beq _080137FE - cmp r1, #0x8d - beq _080137FE - cmp r1, #0xfa - beq _080137FE - cmp r1, #0xb1 - beq _080137FE - cmp r1, #0xb2 - beq _080137FE - ldr r0, _0801383C @ =0x00000111 - cmp r1, r0 - bne _08013802 -_080137FE: - movs r3, #1 - mov ip, r3 -_08013802: - mov r7, ip - cmp r7, #0 - beq _080138F4 -_08013808: - adds r0, r6, #0 - adds r0, #0x26 - ldrb r0, [r0] - lsls r0, r0, #2 - strh r0, [r4] - ldr r1, [r5, #8] - ldr r0, _08013840 @ =0xFFFFF3FF - ands r1, r0 - movs r0, #0x20 - rsbs r0, r0, #0 - ands r1, r0 - movs r2, #0x20 - mov r3, r8 - lsls r0, r3, #0x10 - asrs r0, r0, #0x10 - orrs r0, r2 - orrs r1, r0 - str r1, [r5, #8] - ldr r0, [r6, #4] - movs r1, #1 - ands r0, r1 - cmp r0, #0 - bne _08013844 - movs r0, #0xff - lsls r0, r0, #8 - b _08013848 - .align 2, 0 -_0801383C: .4byte 0x00000111 -_08013840: .4byte 0xFFFFF3FF -_08013844: - movs r0, #0x80 - lsls r0, r0, #1 -_08013848: - strh r0, [r4, #2] - ldr r0, [r6, #4] - movs r1, #0x80 - lsls r1, r1, #9 - ands r0, r1 - cmp r0, #0 - beq _0801385C - ldrh r0, [r4, #2] - rsbs r0, r0, #0 - strh r0, [r4, #2] -_0801385C: - movs r7, #2 - ldrsh r0, [r4, r7] - cmp r0, #0 - bge _0801386A - ldrh r0, [r4, #6] - subs r0, #1 - strh r0, [r4, #6] -_0801386A: - ldr r0, [r6, #4] - ands r0, r1 - cmp r0, #0 - beq _08013894 - movs r0, #0x80 - lsls r0, r0, #1 - strh r0, [r4, #4] - ldrh r1, [r4] - adds r1, r1, r0 - ldr r2, _0801388C @ =0xFFFFFF00 - adds r0, r2, #0 - subs r0, r0, r1 - ldr r1, _08013890 @ =0x000003FF - ands r0, r1 - strh r0, [r4] - b _0801389A - .align 2, 0 -_0801388C: .4byte 0xFFFFFF00 -_08013890: .4byte 0x000003FF -_08013894: - movs r0, #0x80 - lsls r0, r0, #1 - strh r0, [r4, #4] -_0801389A: - movs r3, #2 - ldrsh r1, [r4, r3] - adds r0, r6, #0 - adds r0, #0xa0 - movs r7, #0 - ldrsh r0, [r0, r7] - muls r1, r0, r1 - asrs r1, r1, #8 - movs r0, #4 - ldrsh r2, [r4, r0] - adds r0, r6, #0 - adds r0, #0xa2 - movs r3, #0 - ldrsh r0, [r0, r3] - muls r0, r2, r0 - asrs r0, r0, #8 - strh r1, [r4, #2] - strh r0, [r4, #4] - ldr r1, [r5, #8] - ldr r0, _080138F0 @ =0xFFFFCFFF - ands r1, r0 - str r1, [r5, #8] - movs r7, #0x30 - ldrsh r0, [r6, r7] - cmp r0, #0x6f - beq _080138DE - cmp r0, #0xb1 - beq _080138DE - cmp r0, #0xb2 - beq _080138DE - movs r0, #0x80 - lsls r0, r0, #5 - orrs r1, r0 - str r1, [r5, #8] -_080138DE: - adds r0, r5, #0 - bl UpdateSpriteAnimation - adds r0, r5, #0 - adds r1, r4, #0 - bl TransformSprite - b _0801398A - .align 2, 0 -_080138F0: .4byte 0xFFFFCFFF -_080138F4: - mov r0, ip - strh r0, [r4] - ldr r2, [r5, #8] - movs r0, #0x40 - rsbs r0, r0, #0 - ands r2, r0 - str r2, [r5, #8] - ldr r0, [r6, #4] - movs r1, #1 - ands r0, r1 - cmp r0, #0 - bne _08013916 - movs r0, #0x80 - lsls r0, r0, #3 - orrs r2, r0 - str r2, [r5, #8] - b _08013922 -_08013916: - ldr r0, _08013938 @ =0xFFFFFBFF - ands r2, r0 - str r2, [r5, #8] - ldrh r0, [r5, #0x10] - adds r0, #1 - strh r0, [r5, #0x10] -_08013922: - ldr r0, [r6, #4] - movs r1, #0x80 - lsls r1, r1, #9 - ands r0, r1 - cmp r0, #0 - beq _0801393C - ldr r0, [r5, #8] - movs r1, #0x80 - lsls r1, r1, #4 - orrs r0, r1 - b _08013942 - .align 2, 0 -_08013938: .4byte 0xFFFFFBFF -_0801393C: - ldr r0, [r5, #8] - ldr r1, _08013954 @ =0xFFFFF7FF - ands r0, r1 -_08013942: - str r0, [r5, #8] - movs r1, #0x30 - ldrsh r0, [r6, r1] - cmp r0, #0x67 - bne _0801395C - ldr r0, [r5, #8] - ldr r1, _08013958 @ =0xFFFFCFFF - ands r0, r1 - b _08013982 - .align 2, 0 -_08013954: .4byte 0xFFFFF7FF -_08013958: .4byte 0xFFFFCFFF -_0801395C: - ldrh r1, [r6, #0x34] - ldr r2, _080139BC @ =gPlayerCharacterIdleAnims - adds r0, r6, #0 - adds r0, #0x2a - ldrb r0, [r0] - lsls r0, r0, #0x1c - lsrs r0, r0, #0x1b - adds r0, r0, r2 - movs r2, #0 - ldrsh r0, [r0, r2] - subs r1, r1, r0 - cmp r1, #0x8e - beq _08013984 - ldr r0, [r5, #8] - ldr r1, _080139C0 @ =0xFFFFCFFF - ands r0, r1 - movs r1, #0x80 - lsls r1, r1, #5 - orrs r0, r1 -_08013982: - str r0, [r5, #8] -_08013984: - adds r0, r5, #0 - bl UpdateSpriteAnimation -_0801398A: - movs r7, #1 - ldr r2, [r6, #4] - movs r0, #0x80 - lsls r0, r0, #1 - ands r0, r2 - adds r3, r2, #0 - cmp r0, #0 - bne _08013A20 - ldr r0, _080139C4 @ =gStageData - ldrb r1, [r0, #3] - adds r4, r0, #0 - cmp r1, #7 - bne _080139AC - adds r0, #0xae - ldrh r0, [r0] - cmp r0, #0 - beq _08013A20 -_080139AC: - movs r0, #0x80 - lsls r0, r0, #0x13 - ands r3, r0 - cmp r3, #0 - beq _080139C8 - movs r7, #0 - b _08013A2A - .align 2, 0 -_080139BC: .4byte gPlayerCharacterIdleAnims -_080139C0: .4byte 0xFFFFCFFF -_080139C4: .4byte gStageData -_080139C8: - movs r0, #0x80 - lsls r0, r0, #2 - ands r2, r0 - cmp r2, #0 - bne _08013A16 - adds r0, r6, #0 - adds r0, #0x4a - movs r3, #0 - ldrsh r0, [r0, r3] - cmp r0, #0 - beq _080139EA - ldr r0, [r4, #0x1c] - movs r1, #2 - ands r0, r1 - cmp r0, #0 - beq _080139EA - movs r7, #0 -_080139EA: - adds r0, r6, #0 - adds r0, #0x66 - movs r1, #0 - ldrsh r0, [r0, r1] - cmp r0, #0 - beq _08013A16 - ldrb r0, [r4, #6] - lsls r1, r0, #2 - adds r1, r1, r0 - lsls r1, r1, #2 - adds r1, r1, r0 - lsls r1, r1, #4 - ldr r0, _08013A60 @ =gPlayers - adds r1, r1, r0 - cmp r6, r1 - bne _08013A14 - ldr r0, [r4, #0x1c] - movs r1, #2 - ands r0, r1 - cmp r0, #0 - beq _08013A16 -_08013A14: - movs r7, #0 -_08013A16: - ldr r0, _08013A64 @ =gStageData - ldrb r0, [r0, #4] - cmp r0, #5 - bne _08013A20 - movs r7, #1 -_08013A20: - cmp r7, #0 - beq _08013A2A - adds r0, r5, #0 - bl DisplaySprite -_08013A2A: - ldr r1, _08013A64 @ =gStageData - ldrb r0, [r1, #3] - cmp r0, #7 - beq _08013A52 - mov r2, r8 - lsls r0, r2, #0x10 - asrs r0, r0, #0x10 - ldrb r2, [r1, #9] - ldrb r1, [r1, #6] - cmp r0, r1 - bne _08013A44 - cmp r2, #8 - bne _08013A4C -_08013A44: - cmp r2, #8 - bne _08013A52 - cmp r0, #0 - bne _08013A52 -_08013A4C: - adds r0, r6, #0 - bl Player_8019858 -_08013A52: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_08013A60: .4byte gPlayers -_08013A64: .4byte gStageData - -.syntax divided diff --git a/src/game/sa3/stage/player.c b/src/game/sa3/stage/player.c index 151a3c4a0..d9d073e6e 100644 --- a/src/game/sa3/stage/player.c +++ b/src/game/sa3/stage/player.c @@ -106,7 +106,7 @@ void TaskDestructor_80194C8(struct Task *t); void TaskDestructor_8019504(struct Task *t); void sub_801320C(Player *p, PlayerSpriteInfo *spriteInfoBody); -void sub_80136DC(s16 param0); +void Player_AnimateAndDisplay(s16 playerID); void sub_8013A68(s16 param0); bool16 sub_8014A60(Player *p); bool16 sub_8014D70(Player *p); @@ -1095,7 +1095,7 @@ void Task_8005068(void) if (p->charFlags.someIndex != 5) { sub_801320C(p, p->spriteInfoBody); - sub_80136DC(temp_r1->playerId); + Player_AnimateAndDisplay(temp_r1->playerId); if (gStageData.gameMode != GAME_MODE_MP_SINGLE_PACK) { sub_8013A68(temp_r1->playerId); } @@ -12774,177 +12774,141 @@ void sub_801350C(Player *p) } } -// (99.81%) https://decomp.me/scratch/7XgDy -NONMATCH("asm/non_matching/game/stage/player__sub_80136DC.inc", void sub_80136DC(s16 playerId)) +void Player_AnimateAndDisplay(s16 playerId) { Player *p; - PlayerSpriteInfo *temp_r0; - Sprite2 *s; - s16 temp_r0_3; - s16 temp_r1_2; - s16 var_r0_2; -#ifndef NON_MATCHING - register s32 r0 asm("r0"); - register u32 temp_r2 asm("r2"); - register u32 temp_r3 asm("r3"); - register s32 var_r7 asm("r7"); -#else - s32 r0; - u32 temp_r2; - u32 temp_r3; - s32 var_r7; -#endif - u16 var_ip; - u16 var_r1; - u32 temp_r1_4; - u32 temp_r2_2; - u32 var_r0; - u32 var_r0_3; - u32 var_r0_4; - u16 var_sb; + Sprite *s; + s8 display; + bool32 transform; SpriteTransform *tf; - CamCoord camX, camY; + s16 camX, camY; + s32 moveState; + bool32 playerDead; p = &gPlayers[playerId]; - temp_r0 = p->spriteInfoBody; - s = &temp_r0->s; - tf = &temp_r0->tf; + s = (Sprite *)&p->spriteInfoBody->s; + tf = &p->spriteInfoBody->tf; camX = gCamera.x; camY = gCamera.y; - var_ip = 0; + transform = FALSE; s->x = I(p->qWorldX) - camX; s->y = I(p->qWorldY) - camY; tf->x = I(p->qWorldX) - camX; tf->y = I(p->qWorldY) - camY; if (gStageData.gameMode == 7) { if (gStageData.playerIndex != playerId) { - s->frameFlags = s->frameFlags | 0x200; + SPRITE_FLAG_SET(s, MOSAIC); } else { - s->frameFlags = s->frameFlags & 0xFFFFFDFF; + SPRITE_FLAG_CLEAR(s, MOSAIC); } } if (p->charFlags.someIndex == 3) { - var_r1 = p->charFlags.anim2; - var_sb = p->charFlags.state1; - if (var_r1 - gPlayerCharacterIdleAnims[p->charFlags.character] <= 0xA4) { - var_r1 -= gPlayerCharacterIdleAnims[p->charFlags.character]; + u16 anim = p->charFlags.anim2; + u16 state = p->charFlags.state1; + if (anim - gPlayerCharacterIdleAnims[p->charFlags.character] <= 0xA4) { + anim -= gPlayerCharacterIdleAnims[p->charFlags.character]; } - if ((var_r1 != 8) && (var_r1 != 0x6F) && (var_r1 != 0x8C) && (var_r1 != 0x8D) && (var_r1 != 0x2BD) && (var_r1 != 0x73) - && (var_r1 != 0x2BD)) { - if ((var_r1 == 0x519) && (var_sb == 0)) { - var_ip = 1; + if ((anim != 8) && (anim != 0x6F) && (anim != 0x8C) && (anim != 0x8D) && (anim != 0x2BD) && (anim != 0x73) && (anim != 0x2BD)) { + if ((anim == 0x519) && (state == 0)) { + transform = TRUE; } } else { - var_ip = 1; + transform = TRUE; } } else if ((p->charFlags.anim0 == 8) || (p->charFlags.anim0 == 0x6F) || (p->charFlags.anim0 == 0x8C) || (p->charFlags.anim0 == 0x8D) || (p->charFlags.anim0 == 0xFA) || (p->charFlags.anim0 == 0xB1) || (p->charFlags.anim0 == 0xB2) || (p->charFlags.anim0 == 0x111)) { - var_ip = 1; + transform = TRUE; } - if (var_ip != 0) { - s32 tfX, tfY; + if (transform) { + s32 qScaleX, qScaleY; tf->rotation = p->unk26 * 4; - s->frameFlags &= ~(0xC00); - s->frameFlags &= ~0x1F; - s->frameFlags |= ((s16)playerId | 0x20); + s->frameFlags &= ~(SPRITE_FLAG_MASK_X_FLIP | SPRITE_FLAG_MASK_Y_FLIP); + SPRITE_FLAG_CLEAR(s, ROT_SCALE); + s->frameFlags |= (playerId | SPRITE_FLAG_MASK_ROT_SCALE_ENABLE); if (!(p->moveState & MOVESTATE_FACING_LEFT)) { - tf->qScaleX = -Q(1); + tf->qScaleX = Q(-1); } else { - tf->qScaleX = +Q(1); + tf->qScaleX = Q(+1); } if (p->moveState & MOVESTATE_GRAVITY_SWITCHED) { - tf->qScaleX = 0 - (u16)tf->qScaleX; + tf->qScaleX = Q(0) - (u16)tf->qScaleX; } - if (tf->qScaleX < 0) { + if (tf->qScaleX < Q(0)) { tf->x--; } if (p->moveState & MOVESTATE_GRAVITY_SWITCHED) { - s32 rot; tf->qScaleY = Q(1); - rot = tf->rotation; - rot += 0x100; - temp_r2 = -0x100; -#ifndef NON_MATCHING - asm("mov %0, %1\n" : "=r"(r0) : "r"(temp_r2)); -#else - r0 = temp_r2; -#endif - r0 -= rot; - r0 &= 0x3FF; - tf->rotation = r0; + tf->rotation = (-(tf->rotation + DEG_TO_SIN(90)) - DEG_TO_SIN(90)); + tf->rotation = CLAMP_SIN_PERIOD(tf->rotation); } else { tf->qScaleY = Q(1); } - tfX = I(tf->qScaleX * p->unkA0); - tfY = I(tf->qScaleY * p->unkA2); - tf->qScaleX = tfX; - tf->qScaleY = tfY; - s->frameFlags &= 0xFFFFCFFF; + qScaleX = Q_MUL(tf->qScaleX, p->unkA0); + qScaleY = Q_MUL(tf->qScaleY, p->unkA2); + tf->qScaleX = qScaleX; + tf->qScaleY = qScaleY; + SPRITE_FLAG_CLEAR(s, PRIORITY); if ((p->charFlags.anim0 != 0x6F) && (p->charFlags.anim0 != 0xB1) && (p->charFlags.anim0 != 0xB2)) { - s->frameFlags |= 0x1000; + SPRITE_FLAG_SET_VALUE(s, PRIORITY, 1); } - UpdateSpriteAnimation((Sprite *)s); - TransformSprite((Sprite *)s, tf); + UpdateSpriteAnimation(s); + TransformSprite(s, tf); } else { tf->rotation = 0; - s->frameFlags &= ~0x3F; + s->frameFlags &= ~(SPRITE_FLAG_MASK_ROT_SCALE | SPRITE_FLAG_MASK_ROT_SCALE_ENABLE); if (!(p->moveState & MOVESTATE_FACING_LEFT)) { - s->frameFlags |= Q(4); + SPRITE_FLAG_SET(s, X_FLIP); } else { - s->frameFlags &= ~Q(4); + SPRITE_FLAG_CLEAR(s, X_FLIP); s->x++; } if (p->moveState & MOVESTATE_GRAVITY_SWITCHED) { - s->frameFlags |= 0x800; + SPRITE_FLAG_SET(s, Y_FLIP); } else { - s->frameFlags &= ~0x800; + SPRITE_FLAG_CLEAR(s, Y_FLIP); } if (p->charFlags.anim0 == 0x67) { - s->frameFlags &= 0xFFFFCFFF; + SPRITE_FLAG_CLEAR(s, PRIORITY); } else if ((p->charFlags.anim2 - gPlayerCharacterIdleAnims[p->charFlags.character]) != 0x8E) { - s->frameFlags &= 0xFFFFCFFF; - s->frameFlags |= 0x1000; + SPRITE_FLAG_CLEAR(s, PRIORITY); + SPRITE_FLAG_SET_VALUE(s, PRIORITY, 1); } - UpdateSpriteAnimation((Sprite *)s); + UpdateSpriteAnimation(s); } - var_r7 = 1; - { - u32 ms_r2 = p->moveState; - u32 ms = (0x100 & ms_r2); - temp_r3 = ms_r2; - if (!ms) { - if ((gStageData.gameMode != 7) || (gStageData.levelTimer != 0)) { - temp_r3 &= MOVESTATE_4000000; - if ((temp_r3)) { - var_r7 = 0; - } else { - ms_r2 &= 0x200; - if (!ms_r2) { - if ((p->framesInvulnerable != 0) && (gStageData.timer & 2)) { - var_r7 = 0; - } + display = TRUE; + playerDead = p->moveState & MOVESTATE_DEAD; + moveState = p->moveState; + if (!playerDead) { + if ((gStageData.gameMode != 7) || (gStageData.levelTimer != 0)) { + if (moveState & MOVESTATE_4000000) { + display = FALSE; + } else { + moveState = p->moveState; + if (!(moveState & MOVESTATE_200)) { + if ((p->framesInvulnerable != 0) && (gStageData.timer & 2)) { + display = FALSE; + } - if (p->unk66 != 0) { - if ((p != &gPlayers[gStageData.playerIndex]) || (gStageData.timer & 2)) { - var_r7 = 0; - } + if (p->unk66 != 0) { + if ((p != &gPlayers[gStageData.playerIndex]) || (gStageData.timer & 2)) { + display = FALSE; } } - if (gStageData.unk4 == 5) { - var_r7 = 1; - } + } + if (gStageData.unk4 == 5) { + display = TRUE; } } } } - if (var_r7 != 0) { - DisplaySprite((Sprite *)s); + if (display) { + DisplaySprite(s); } if (gStageData.gameMode != 7) { @@ -12953,7 +12917,6 @@ NONMATCH("asm/non_matching/game/stage/player__sub_80136DC.inc", void sub_80136DC } } } -END_NONMATCH // (98.49%) https://decomp.me/scratch/wyHoT NONMATCH("asm/non_matching/game/stage/player__sub_8013A68.inc", void sub_8013A68(s16 arg0))