diff --git a/source/games/sw/src/_polymost.cpp b/source/games/sw/src/_polymost.cpp index 3c8a04dca..b838b1aeb 100644 --- a/source/games/sw/src/_polymost.cpp +++ b/source/games/sw/src/_polymost.cpp @@ -106,24 +106,25 @@ void FAF_DrawRooms(int x, int y, int z, fixed_t q16ang, fixed_t q16horiz, short StatIterator it(STAT_CEILING_FLOOR_PIC_OVERRIDE); while ((i = it.NextIndex()) >= 0) { - if (SPRITE_TAG3(i) == 0) + auto sp = &sprite[i]; + if (SP_TAG3(sp) == 0) { // back up ceilingpicnum and ceilingstat - SPRITE_TAG5(i) = sector[sprite[i].sectnum].ceilingpicnum; - sector[sprite[i].sectnum].ceilingpicnum = SPRITE_TAG2(i); - SPRITE_TAG4(i) = sector[sprite[i].sectnum].ceilingstat; - //SET(sector[sprite[i].sectnum].ceilingstat, ((int)SPRITE_TAG7(i))<<7); - SET(sector[sprite[i].sectnum].ceilingstat, SPRITE_TAG6(i)); - RESET(sector[sprite[i].sectnum].ceilingstat, CEILING_STAT_PLAX); + SP_TAG5(sp) = sector[sp->sectnum].ceilingpicnum; + sector[sp->sectnum].ceilingpicnum = SP_TAG2(sp); + SP_TAG4(sp) = sector[sprite[i].sectnum].ceilingstat; + //SET(sp->sectnum].ceilingstat, ((int)SP_TAG7(sp))<<7); + SET(sector[sp->sectnum].ceilingstat, SP_TAG6(sp)); + RESET(sector[sp->sectnum].ceilingstat, CEILING_STAT_PLAX); } - else if (SPRITE_TAG3(i) == 1) + else if (SP_TAG3(sp) == 1) { - SPRITE_TAG5(i) = sector[sprite[i].sectnum].floorpicnum; - sector[sprite[i].sectnum].floorpicnum = SPRITE_TAG2(i); - SPRITE_TAG4(i) = sector[sprite[i].sectnum].floorstat; - //SET(sector[sprite[i].sectnum].floorstat, ((int)SPRITE_TAG7(i))<<7); - SET(sector[sprite[i].sectnum].floorstat, SPRITE_TAG6(i)); - RESET(sector[sprite[i].sectnum].floorstat, FLOOR_STAT_PLAX); + SP_TAG5(sp) = sector[sp->sectnum].floorpicnum; + sector[sp->sectnum].floorpicnum = SP_TAG2(sp); + SP_TAG4(sp) = sector[sp->sectnum].floorstat; + //SET(sector[sp->sectnum].floorstat, ((int)SP_TAG7(sp))<<7); + SET(sector[sp->sectnum].floorstat, SP_TAG6(sp)); + RESET(sector[sp->sectnum].floorstat, FLOOR_STAT_PLAX); } } @@ -132,26 +133,27 @@ void FAF_DrawRooms(int x, int y, int z, fixed_t q16ang, fixed_t q16horiz, short it.Reset(STAT_CEILING_FLOOR_PIC_OVERRIDE); while ((i = it.NextIndex()) >= 0) { + auto sp = &sprite[i]; // manually set gotpic - if (gotsector[sprite[i].sectnum]) + if (gotsector[sp->sectnum]) { setgotpic(FAF_MIRROR_PIC); } - if (SPRITE_TAG3(i) == 0) + if (SP_TAG3(sp) == 0) { // restore ceilingpicnum and ceilingstat - sector[sprite[i].sectnum].ceilingpicnum = SPRITE_TAG5(i); - sector[sprite[i].sectnum].ceilingstat = SPRITE_TAG4(i); - //RESET(sector[sprite[i].sectnum].ceilingstat, CEILING_STAT_TYPE_MASK); - RESET(sector[sprite[i].sectnum].ceilingstat, CEILING_STAT_PLAX); + sector[sp->sectnum].ceilingpicnum = SP_TAG5(sp); + sector[sp->sectnum].ceilingstat = SP_TAG4(sp); + //RESET(sector[sp->sectnum].ceilingstat, CEILING_STAT_TYPE_MASK); + RESET(sector[sp->sectnum].ceilingstat, CEILING_STAT_PLAX); } - else if (SPRITE_TAG3(i) == 1) + else if (SP_TAG3(sp) == 1) { - sector[sprite[i].sectnum].floorpicnum = SPRITE_TAG5(i); - sector[sprite[i].sectnum].floorstat = SPRITE_TAG4(i); - //RESET(sector[sprite[i].sectnum].floorstat, FLOOR_STAT_TYPE_MASK); - RESET(sector[sprite[i].sectnum].floorstat, FLOOR_STAT_PLAX); + sector[sp->sectnum].floorpicnum = SP_TAG5(sp); + sector[sp->sectnum].floorstat = SP_TAG4(sp); + //RESET(sector[sp->sectnum].floorstat, FLOOR_STAT_TYPE_MASK); + RESET(sector[sp->sectnum].floorstat, FLOOR_STAT_PLAX); } } } diff --git a/source/games/sw/src/break.cpp b/source/games/sw/src/break.cpp index 852abb034..a38ea510f 100644 --- a/source/games/sw/src/break.cpp +++ b/source/games/sw/src/break.cpp @@ -540,7 +540,8 @@ short FindBreakSpriteMatch(short match) StatIterator it(STAT_BREAKABLE); while ((i = it.NextIndex()) >= 0) { - if (SPRITE_TAG2(i) == match && sprite[i].picnum == ST1) + auto sp = &sprite[i]; + if (SP_TAG2(sp) == match && sp->picnum == ST1) { return i; } diff --git a/source/games/sw/src/cache.cpp b/source/games/sw/src/cache.cpp index 9c384204e..84a05fda1 100644 --- a/source/games/sw/src/cache.cpp +++ b/source/games/sw/src/cache.cpp @@ -63,7 +63,8 @@ void PreCacheOverride(void) StatIterator it(STAT_CEILING_FLOOR_PIC_OVERRIDE); while ((i = it.NextIndex()) >= 0) { - int j = SPRITE_TAG2(i); + auto sp = &sprite[i]; + int j = SP_TAG2(sp); if(j >= 0 && j <= MAXTILES) markTileForPrecache(j, 0); } diff --git a/source/games/sw/src/copysect.cpp b/source/games/sw/src/copysect.cpp index 907fc6eda..822140ed5 100644 --- a/source/games/sw/src/copysect.cpp +++ b/source/games/sw/src/copysect.cpp @@ -128,8 +128,8 @@ void CopySectorMatch(short match) { src_sp = &sprite[ss]; - if (SP_TAG2(src_sp) == SPRITE_TAG2(ed) && - SP_TAG3(src_sp) == SPRITE_TAG3(ed)) + if (SP_TAG2(src_sp) == SP_TAG2(dest_sp) && + SP_TAG3(src_sp) == SP_TAG3(dest_sp)) { int src_move; ssectp = §or[src_sp->sectnum]; diff --git a/source/games/sw/src/draw.cpp b/source/games/sw/src/draw.cpp index 9e2a74bc0..83b234eba 100644 --- a/source/games/sw/src/draw.cpp +++ b/source/games/sw/src/draw.cpp @@ -1404,24 +1404,25 @@ void UpdateWallPortalState() StatIterator it(STAT_CEILING_FLOOR_PIC_OVERRIDE); while ((i = it.NextIndex()) >= 0) { - if (SPRITE_TAG3(i) == 0) + auto sp = &sprite[i]; + if (SP_TAG3(sp) == 0) { // back up ceilingpicnum and ceilingstat - SPRITE_TAG5(i) = sector[sprite[i].sectnum].ceilingpicnum; - sector[sprite[i].sectnum].ceilingpicnum = SPRITE_TAG2(i); - SPRITE_TAG4(i) = sector[sprite[i].sectnum].ceilingstat; - //SET(sector[sprite[i].sectnum].ceilingstat, ((int)SPRITE_TAG7(i))<<7); - SET(sector[sprite[i].sectnum].ceilingstat, SPRITE_TAG6(i)); - RESET(sector[sprite[i].sectnum].ceilingstat, CEILING_STAT_PLAX); + SP_TAG5(sp) = sector[sp->sectnum].ceilingpicnum; + sector[sp->sectnum].ceilingpicnum = SP_TAG2(sp); + SP_TAG4(sp) = sector[sp->sectnum].ceilingstat; + //SET(sector[sp->sectnum].ceilingstat, ((int)SP_TAG7(sp))<<7); + SET(sector[sp->sectnum].ceilingstat, SP_TAG6(sp)); + RESET(sector[sp->sectnum].ceilingstat, CEILING_STAT_PLAX); } - else if (SPRITE_TAG3(i) == 1) + else if (SP_TAG3(sp) == 1) { - SPRITE_TAG5(i) = sector[sprite[i].sectnum].floorpicnum; - sector[sprite[i].sectnum].floorpicnum = SPRITE_TAG2(i); - SPRITE_TAG4(i) = sector[sprite[i].sectnum].floorstat; - //SET(sector[sprite[i].sectnum].floorstat, ((int)SPRITE_TAG7(i))<<7); - SET(sector[sprite[i].sectnum].floorstat, SPRITE_TAG6(i)); - RESET(sector[sprite[i].sectnum].floorstat, FLOOR_STAT_PLAX); + SP_TAG5(sp) = sector[sp->sectnum].floorpicnum; + sector[sp->sectnum].floorpicnum = SP_TAG2(sp); + SP_TAG4(sp) = sector[sp->sectnum].floorstat; + //SET(sector[sp->sectnum].floorstat, ((int)SP_TAG7(sp))<<7); + SET(sector[sp->sectnum].floorstat, SP_TAG6(sp)); + RESET(sector[sp->sectnum].floorstat, FLOOR_STAT_PLAX); } } @@ -1433,20 +1434,21 @@ void RestorePortalState() StatIterator it(STAT_CEILING_FLOOR_PIC_OVERRIDE); while ((i = it.NextIndex()) >= 0) { - if (SPRITE_TAG3(i) == 0) + auto sp = &sprite[i]; + if (SP_TAG3(sp) == 0) { // restore ceilingpicnum and ceilingstat - sector[sprite[i].sectnum].ceilingpicnum = SPRITE_TAG5(i); - sector[sprite[i].sectnum].ceilingstat = SPRITE_TAG4(i); - //RESET(sector[sprite[i].sectnum].ceilingstat, CEILING_STAT_TYPE_MASK); - RESET(sector[sprite[i].sectnum].ceilingstat, CEILING_STAT_PLAX); + sector[sp->sectnum].ceilingpicnum = SP_TAG5(sp); + sector[sp->sectnum].ceilingstat = SP_TAG4(sp); + //RESET(sector[sp->sectnum].ceilingstat, CEILING_STAT_TYPE_MASK); + RESET(sector[sp->sectnum].ceilingstat, CEILING_STAT_PLAX); } - else if (SPRITE_TAG3(i) == 1) + else if (SP_TAG3(sp) == 1) { - sector[sprite[i].sectnum].floorpicnum = SPRITE_TAG5(i); - sector[sprite[i].sectnum].floorstat = SPRITE_TAG4(i); - //RESET(sector[sprite[i].sectnum].floorstat, FLOOR_STAT_TYPE_MASK); - RESET(sector[sprite[i].sectnum].floorstat, FLOOR_STAT_PLAX); + sector[sp->sectnum].floorpicnum = SP_TAG5(sp); + sector[sp->sectnum].floorstat = SP_TAG4(sp); + //RESET(sector[sp->sectnum].floorstat, FLOOR_STAT_TYPE_MASK); + RESET(sector[sp->sectnum].floorstat, FLOOR_STAT_PLAX); } } } diff --git a/source/games/sw/src/game.h b/source/games/sw/src/game.h index d514499fb..4d5d12539 100644 --- a/source/games/sw/src/game.h +++ b/source/games/sw/src/game.h @@ -198,23 +198,6 @@ inline int32_t FIXED(int32_t msw, int32_t lsw) #define SET_SP_TAG13(sp,val) (*((short*)&(sp)->xoffset)) = LittleShort((short)val) #define SET_SP_TAG14(sp,val) (*((short*)&(sp)->xrepeat)) = LittleShort((short)val) -#define SPRITE_TAG2(sp) (sprite[sp].lotag) -#define SPRITE_TAG3(sp) (sprite[sp].clipdist) -#define SPRITE_TAG4(sp) (sprite[sp].ang) -#define SPRITE_TAG5(sp) (sprite[sp].xvel) -#define SPRITE_TAG6(sp) (sprite[sp].yvel) -#define SPRITE_TAG7(sp) (MSB_VAR(sprite[sp].zvel)) -#define SPRITE_TAG8(sp) (LSB_VAR(sprite[sp].zvel)) -#define SPRITE_TAG9(sp) (MSB_VAR(sprite[sp].owner)) -#define SPRITE_TAG10(sp) (LSB_VAR(sprite[sp].owner)) -#define SPRITE_TAG11(sp) (sprite[sp].shade) -#define SPRITE_TAG12(sp) (sprite[sp].pal) -#define SPRITE_TAG13(sp) LittleShort(*((short*)&sprite[sp].xoffset)) -#define SPRITE_TAG14(sp) LittleShort(*((short*)&sprite[sp].xrepeat)) -#define SPRITE_TAG15(sp) (sprite[sp].z) -#define SET_SPRITE_TAG13(sp,val) (*((short*)&sprite[sp].xoffset)) = LittleShort((short)val) -#define SET_SPRITE_TAG14(sp,val) (*((short*)&sprite[sp].xrepeat)) = LittleShort((short)val) - // OVER and UNDER water macros #define SpriteInDiveArea(sp) (TEST(sector[(sp)->sectnum].extra, SECTFX_DIVE_AREA) ? true : false) #define SpriteInUnderwaterArea(sp) (TEST(sector[(sp)->sectnum].extra, SECTFX_UNDERWATER|SECTFX_UNDERWATER2) ? true : false) diff --git a/source/games/sw/src/sector.cpp b/source/games/sw/src/sector.cpp index 92340554e..e97be92eb 100644 --- a/source/games/sw/src/sector.cpp +++ b/source/games/sw/src/sector.cpp @@ -1506,19 +1506,20 @@ void DoDeleteSpriteMatch(short match) StatIterator it(StatList[stat]); while ((i = it.NextIndex()) >= 0) { - if (del_x == sprite[i].x && del_y == sprite[i].y) + auto sp = &sprite[i]; + if (del_x == sp->x && del_y == sp->y) { // special case lighting delete of Fade On/off after fades if (StatList[stat] == STAT_LIGHTING) { // set shade to darkest and then kill it - sprite[i].shade = int8_t(SPRITE_TAG6(i)); - sprite[i].pal = 0; - SectorLightShade(&sprite[i], sprite[i].shade); + sp->shade = int8_t(SP_TAG6(sp)); + sp->pal = 0; + SectorLightShade(&sprite[i], sp->shade); DiffuseLighting(&sprite[i]); } - ////DSPRINTF(ds,"Delete Sprite stat %d, x %d, y %d",sprite[i].statnum, sprite[i].x, sprite[i].y); + ////DSPRINTF(ds,"Delete Sprite stat %d, x %d, y %d",sp->statnum, sp->x, sp->y); //MONO_PRINT(ds); SpriteQueueDelete(i); KillSprite(i);