diff --git a/src/ric/26C84.c b/src/ric/26C84.c index e896ab9451..53a02d14fc 100644 --- a/src/ric/26C84.c +++ b/src/ric/26C84.c @@ -487,18 +487,20 @@ void EntityShrinkingPowerUpRing(Entity* self) { Primitive* prim2; s32 baseAngle; s32 i; - s16* loadedParams; s32 constE0 = 0xE0; - u32 upperparams = self->params & 0x7F00; - loadedParams = &D_8015519C[(upperparams >> 8) * 3]; + s16* loadedParams = &D_8015519C[upperparams >> 8]; + rScale = loadedParams[2]; gScale = loadedParams[3]; bScale = loadedParams[4]; + gOffset = loadedParams[0]; bOffset = loadedParams[1]; + self->posX.i.hi = PLAYER.posX.i.hi; self->posY.i.hi = PLAYER.posY.i.hi; + switch (self->step) { case 0: self->primIndex = g_api.AllocPrimitives(PRIM_GT4, 32); @@ -506,12 +508,14 @@ void EntityShrinkingPowerUpRing(Entity* self) { DestroyEntity(self); return; } + self->flags = FLAG_UNK_04000000 | FLAG_HAS_PRIMS | FLAG_UNK_40000 | FLAG_UNK_10000; prim2 = prim1 = &g_PrimBuf[self->primIndex]; for (i = 0; i < 16; i++) { prim1 = prim1->next; } + for (i = 0; i < 16; i++) { prim2->u0 = ((rcos((s16)(i << 8)) * 2) >> 8) + 0x20; prim2->v0 = -((rsin((s16)(i << 8)) * 2) >> 8) - 0x21; @@ -534,28 +538,31 @@ void EntityShrinkingPowerUpRing(Entity* self) { self->ext.ricPowerRing.unk84 = self->ext.ricPowerRing.unk86 = 0x240; self->ext.ricPowerRing.unk8A = loadedParams[5]; self->ext.ricPowerRing.unk88 = 0xC0; - self->step += 1; + self->step++; break; + case 1: self->ext.ricPowerRing.unk7E += 0x40; self->ext.ricPowerRing.unk86 -= 10; if (self->ext.ricPowerRing.unk86 < 0) { self->ext.ricPowerRing.unk86 = 0; self->ext.ricPowerRing.unk7C = 0x20; - self->step += 1; + self->step++; } self->ext.ricPowerRing.unk84 = self->ext.ricPowerRing.unk86; self->ext.ricPowerRing.unk82 -= 5; self->ext.ricPowerRing.unk80 -= 5; break; + case 2: self->ext.ricPowerRing.unk7E += 0x40; self->ext.ricPowerRing.unk82 -= 3; self->ext.ricPowerRing.unk80 -= 6; if (--self->ext.ricPowerRing.unk7C == 0) { - self->step += 1; + self->step++; } break; + case 3: self->ext.ricPowerRing.unk7E = self->ext.ricPowerRing.unk7E + 0x40; self->ext.ricPowerRing.unk82 = self->ext.ricPowerRing.unk82 - 3; @@ -567,9 +574,11 @@ void EntityShrinkingPowerUpRing(Entity* self) { } break; } + sp38 = self->ext.ricPowerRing.unk8A; selfX = self->posX.i.hi; selfY = self->posY.i.hi; + prim2 = prim1 = &g_PrimBuf[self->primIndex]; for (i = 0; i < 16; i++) { prim1 = prim1->next; @@ -656,7 +665,6 @@ void EntityShrinkingPowerUpRing(Entity* self) { // Entity ID #40. Created by blueprint 47. That factory comes from // RichterHandleDamage. - void EntityHitByIce(Entity* self) { s32 i; Primitive* prim; diff --git a/src/ric/d_18C40.c b/src/ric/d_18C40.c index 4dbd2a44f1..aca0aa8060 100644 --- a/src/ric/d_18C40.c +++ b/src/ric/d_18C40.c @@ -197,90 +197,162 @@ s16 D_80154FBC[][10] = { 0x7100, 0x7100, 0x0200, 0x7007, 0x0031, 0x0200, }; -Point16 D_8015519C[] = { - {0, 0}, {256, 256}, {256, 256}, {1280, 2560}, {256, 256}, - {256, 0}, {0, 0}, {256, 28672}, {28672, 512}, {0, 0}, - {28928, 28928}, {256, 4096}, {0, 0}, {28928, 256}, {28672, 2048}, - {0, 0}, {256, 28928}, {256, 1024}, {1280, 2560}, {256, 256}, - {256, 256}, {1280, 2560}, {256, 512}, {28928, 256}, {-2, -24}, - {0, -8}, {2, 8}, {0, 24}, {6, -12}, {8, 0}, - {7, 12}, {-8, -12}, {-9, 0}, {-7, 12}, {-14, -6}, - {-15, 7}, {13, -7}, {16, 8}, {-7, -22}, {6, -21}, - {-8, 21}, {7, 22}}; +s16 D_8015519C[][6] = { + 0x0000, 0x0000, + + 0x0100, 0x0100, + + 0x0100, 0x0100, + + 0x0500, 0x0A00, + + 0x0100, 0x0100, + + 0x0100, 0x0000, + + 0x0000, 0x0000, + + 0x0100, 0x7000, + + 0x7000, 0x0200, + + 0x0000, 0x0000, + + 0x7100, 0x7100, + + 0x0100, 0x1000, + + 0x0000, 0x0000, + + 0x7100, 0x0100, + + 0x7000, 0x0800, + + 0x0000, 0x0000, + + 0x0100, 0x7100, + + 0x0100, 0x0400, + + 0x0500, 0x0A00, + + 0x0100, 0x0100, + + 0x0100, 0x0100, + + 0x0500, 0x0A00, + + 0x0100, 0x0200, + + 0x7100, 0x0100, +}; + +Point16 D_801551FC = { + 0xFFFE, + 0xFFE8, +}; + +Point16 D_80155200 = { + 0x0000, + 0xFFF8, +}; + +Point16 D_80155204 = { + 0x0002, + 0x0008, +}; + +Point16 D_80155208 = { + 0x0000, + 0x0018, +}; + +Point16 D_8015520C = { + 0x0006, + 0xFFF4, +}; + +Point16 D_80155210 = { + 0x0008, + 0x0000, +}; + +Point16 D_80155214 = { + 0x0007, + 0x000C, +}; + +Point16 D_80155218 = { + 0xFFF8, + 0xFFF4, +}; + +Point16 D_8015521C = { + 0xFFF7, + 0x0000, +}; + +Point16 D_80155220 = { + 0xFFF9, + 0x000C, +}; + +Point16 D_80155224 = { + 0xFFF2, + 0xFFFA, +}; + +Point16 D_80155228 = { + 0xFFF1, + 0x0007, +}; + +Point16 D_8015522C = { + 0x000D, + 0xFFF9, +}; + +Point16 D_80155230 = { + 0x0010, + 0x0008, +}; + +Point16 D_80155234 = { + 0xFFF9, + 0xFFEA, +}; + +Point16 D_80155238 = { + 0x0006, + 0xFFEB, +}; + +Point16 D_8015523C = { + 0xFFF8, + 0x0015, +}; + +Point16 D_80155240 = { + 0x0007, + 0x0016, +}; Point16* D_80155244[] = { - &D_8015519C[0x18], // + 0x60 - &D_8015519C[0x1C], // + 0x70 - &D_8015519C[0x19], // + 0x64 - &D_8015519C[0x1C], // + 0x70 - &D_8015519C[0x1D], // + 0x74 - &D_8015519C[0x19], // + 0x64 - &D_8015519C[0x1D], // + 0x74 - &D_8015519C[0x1A], // + 0x68 - &D_8015519C[0x19], // + 0x64 - &D_8015519C[0x1D], // + 0x74 - &D_8015519C[0x1E], // + 0x78 - &D_8015519C[0x1A], // + 0x68 - &D_8015519C[0x1E], // + 0x78 - &D_8015519C[0x1B], // + 0x6C - &D_8015519C[0x1A], // + 0x68 - &D_8015519C[0x1A], // + 0x68 - &D_8015519C[0x1B], // + 0x6C - &D_8015519C[0x21], // + 0x84 - &D_8015519C[0x1A], // + 0x68 - &D_8015519C[0x21], // + 0x84 - &D_8015519C[0x20], // + 0x80 - &D_8015519C[0x19], // + 0x64 - &D_8015519C[0x1A], // + 0x68 - &D_8015519C[0x20], // + 0x80 - &D_8015519C[0x19], // + 0x64 - &D_8015519C[0x20], // + 0x80 - &D_8015519C[0x1F], // + 0x7C - &D_8015519C[0x19], // + 0x64 - &D_8015519C[0x1F], // + 0x7C - &D_8015519C[0x18], // + 0x60 - &D_8015519C[0x1C], // + 0x70 - &D_8015519C[0x24], // + 0x90 - &D_8015519C[0x1D], // + 0x74 - &D_8015519C[0x24], // + 0x90 - &D_8015519C[0x25], // + 0x94 - &D_8015519C[0x1D], // + 0x74 - &D_8015519C[0x25], // + 0x94 - &D_8015519C[0x1E], // + 0x78 - &D_8015519C[0x1D], // + 0x74 - &D_8015519C[0x1F], // + 0x7C - &D_8015519C[0x20], // + 0x80 - &D_8015519C[0x22], // + 0x88 - &D_8015519C[0x20], // + 0x80 - &D_8015519C[0x23], // + 0x8C - &D_8015519C[0x22], // + 0x88 - &D_8015519C[0x20], // + 0x80 - &D_8015519C[0x21], // + 0x84 - &D_8015519C[0x23], // + 0x8C - &D_8015519C[0x18], // + 0x60 - &D_8015519C[0x1F], // + 0x7C - &D_8015519C[0x26], // + 0x98 - &D_8015519C[0x18], // + 0x60 - &D_8015519C[0x27], // + 0x9C - &D_8015519C[0x1C], // + 0x70 - &D_8015519C[0x1B], // + 0x6C - &D_8015519C[0x28], // + 0xA0 - &D_8015519C[0x21], // + 0x84 - &D_8015519C[0x1E], // + 0x78 - &D_8015519C[0x29], // + 0xA4 - &D_8015519C[0x1B], // + 0x6C - &D_8015519C[0x26], // + 0x98 - &D_8015519C[0x1F], // + 0x7C - &D_8015519C[0x22], // + 0x88 - &D_8015519C[0x27], // + 0x9C - &D_8015519C[0x24], // + 0x90 - &D_8015519C[0x1C], // + 0x70 - &D_8015519C[0x23], // + 0x8C - &D_8015519C[0x21], // + 0x84 - &D_8015519C[0x28], // + 0xA0 - &D_8015519C[0x25], // + 0x94 - &D_8015519C[0x29], // + 0xA4 - &D_8015519C[0x1E], // + 0x78 + &D_801551FC, &D_8015520C, &D_80155200, &D_8015520C, &D_80155210, + &D_80155200, &D_80155210, &D_80155204, &D_80155200, &D_80155210, + &D_80155214, &D_80155204, &D_80155214, &D_80155208, &D_80155204, + &D_80155204, &D_80155208, &D_80155220, &D_80155204, &D_80155220, + &D_8015521C, &D_80155200, &D_80155204, &D_8015521C, &D_80155200, + &D_8015521C, &D_80155218, &D_80155200, &D_80155218, &D_801551FC, + &D_8015520C, &D_8015522C, &D_80155210, &D_8015522C, &D_80155230, + &D_80155210, &D_80155230, &D_80155214, &D_80155210, &D_80155218, + &D_8015521C, &D_80155224, &D_8015521C, &D_80155228, &D_80155224, + &D_8015521C, &D_80155220, &D_80155228, &D_801551FC, &D_80155218, + &D_80155234, &D_801551FC, &D_80155238, &D_8015520C, &D_80155208, + &D_8015523C, &D_80155220, &D_80155214, &D_80155240, &D_80155208, + &D_80155234, &D_80155218, &D_80155224, &D_80155238, &D_8015522C, + &D_8015520C, &D_80155228, &D_80155220, &D_8015523C, &D_80155230, + &D_80155240, &D_80155214, }; s16 D_80155364[] = { diff --git a/src/ric/ric.h b/src/ric/ric.h index 62fec9109f..060826a30c 100644 --- a/src/ric/ric.h +++ b/src/ric/ric.h @@ -157,7 +157,7 @@ extern s16 D_80154EAC[]; extern s32 D_80154EB4[]; extern s32 D_80154EC4[]; extern unkStr80154E5C D_80154E5C[]; -extern Point16 D_8015519C[]; +extern s16 D_8015519C[][6]; extern s16 D_80155364[]; extern AnimationFrame* D_8015538C[]; extern AnimationFrame D_80155394[];