diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-09-09 15:30:11 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-09-09 15:30:11 -0400 |
commit | 0ab00afabb9b494432306267e6af2520a89cdffa (patch) | |
tree | 936a26b181272bde207ed710fc4fd0e50912380f /src | |
parent | 791f5a4451033421bdcf81543c744cf2ca981348 (diff) |
sub_81269E0
Diffstat (limited to 'src')
-rw-r--r-- | src/field_effect_helpers.c | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 3771d24e4..63f3caa91 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -16,7 +16,7 @@ // Static RAM declarations // Static ROM declarations -/*static*/ void sub_81269E0(struct Sprite *); +static void sub_81269E0(struct Sprite *); static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite); static void npc_pal_op_A(struct MapObject *, u8); static void npc_pal_op_B(struct MapObject *, u8); @@ -157,3 +157,42 @@ static void npc_pal_op_A(struct MapObject *mapObject, u8 paletteNum) sub_807D78C(paletteNum); } } + +static void sub_81269E0(struct Sprite *sprite) +{ + struct MapObject *mapObject; + struct Sprite *oldSprite; + + mapObject = &gMapObjects[sprite->data0]; + oldSprite = &gSprites[mapObject->spriteId]; + if (!mapObject->active || !mapObject->mapobj_bit_17 || mapObject->localId != sprite->data1) + { + sprite->inUse = FALSE; + } + else + { + sprite->oam.paletteNum = gUnknown_0830FD14[oldSprite->oam.paletteNum]; + sprite->oam.shape = oldSprite->oam.shape; + sprite->oam.size = oldSprite->oam.size; + sprite->oam.matrixNum = oldSprite->oam.matrixNum | 0x10; + sprite->oam.tileNum = oldSprite->oam.tileNum; + sprite->subspriteTables = oldSprite->subspriteTables; + sprite->subspriteTableNum = oldSprite->subspriteTableNum; + sprite->invisible = oldSprite->invisible; + sprite->pos1.x = oldSprite->pos1.x; + sprite->pos1.y = oldSprite->pos1.y + sub_81268D0(mapObject) + sprite->data2; + sprite->centerToCornerVecX = oldSprite->centerToCornerVecX; + sprite->centerToCornerVecY = oldSprite->centerToCornerVecY; + sprite->pos2.x = oldSprite->pos2.x; + sprite->pos2.y = -oldSprite->pos2.y; + sprite->coordOffsetEnabled = oldSprite->coordOffsetEnabled; + if (sprite->data7 == FALSE) + { + sprite->oam.matrixNum = 0; + if (oldSprite->oam.matrixNum & 0x8) + { + sprite->oam.matrixNum = 1; + } + } + } +} |