Add TROR rendering

# Conflicts:
#	source/blood/src/mapedit.cpp
#	source/build/include/editor.h
#	source/build/include/polymer.h
#	source/build/src/build.cpp
#	source/build/src/polymer.cpp
This commit is contained in:
nukeykt 2019-06-30 02:48:05 +09:00 committed by Christoph Oelckers
parent 1fe344d273
commit 107a630883
15 changed files with 91 additions and 50 deletions

View file

@ -1273,7 +1273,8 @@ int dbLoadMap(const char *pPath, int *pX, int *pY, int *pZ, short *pAngle, short
} }
#ifdef YAX_ENABLE #ifdef YAX_ENABLE
yax_update(numyaxbunches > 0 ? 2 : 1); // NUKE-TODO: Should be updated for new map format only
yax_update(0);
#endif #endif
g_loadedMapVersion = 7; g_loadedMapVersion = 7;

View file

@ -340,7 +340,7 @@ void sub_557C4(int x, int y, int interpolation)
} }
} }
void DrawMirrors(int x, int y, int z, fix16_t a, fix16_t horiz) void DrawMirrors(int x, int y, int z, fix16_t a, fix16_t horiz, int smooth)
{ {
if (videoGetRenderMode() == REND_POLYMER) if (videoGetRenderMode() == REND_POLYMER)
return; return;
@ -384,8 +384,14 @@ void DrawMirrors(int x, int y, int z, fix16_t a, fix16_t horiz)
{ {
renderPrepareMirror(x,y,z,a,horiz,nWall,&cx,&cy,&ca); renderPrepareMirror(x,y,z,a,horiz,nWall,&cx,&cy,&ca);
} }
renderDrawRoomsQ16(cx, cy, z, ca,horiz,mirrorsector|MAXSECTORS); #ifdef POLYMER
viewProcessSprites(cx,cy,z); if (videoGetRenderMode() == REND_POLYMER)
polymer_setanimatesprites(viewProcessSprites, cx, cy, z, fix16_to_int(ca), smooth);
#endif
yax_preparedrawrooms();
int32_t didmirror = renderDrawRoomsQ16(cx, cy, z, ca,horiz,mirrorsector|MAXSECTORS);
yax_drawrooms(viewProcessSprites, mirrorsector, didmirror, smooth);
viewProcessSprites(cx,cy,z,fix16_to_int(ca),smooth);
renderDrawMasks(); renderDrawMasks();
if (GetWallType(nWall) != 501) if (GetWallType(nWall) != 501)
renderCompleteMirror(); renderCompleteMirror();
@ -401,8 +407,14 @@ void DrawMirrors(int x, int y, int z, fix16_t a, fix16_t horiz)
r_rorphase = 1; r_rorphase = 1;
#endif #endif
int nSector = mirror[i].at4; int nSector = mirror[i].at4;
#ifdef POLYMER
if (videoGetRenderMode() == REND_POLYMER)
polymer_setanimatesprites(viewProcessSprites, x+mirror[i].at8, y+mirror[i].atc, z+mirror[i].at10, fix16_to_int(a), smooth);
#endif
yax_preparedrawrooms();
renderDrawRoomsQ16(x+mirror[i].at8, y+mirror[i].atc, z+mirror[i].at10, a, horiz, nSector|MAXSECTORS); renderDrawRoomsQ16(x+mirror[i].at8, y+mirror[i].atc, z+mirror[i].at10, a, horiz, nSector|MAXSECTORS);
viewProcessSprites(x+mirror[i].at8, y+mirror[i].atc, z+mirror[i].at10); yax_drawrooms(viewProcessSprites, nSector, 0, smooth);
viewProcessSprites(x+mirror[i].at8, y+mirror[i].atc, z+mirror[i].at10, fix16_to_int(a), smooth);
short fstat = sector[nSector].floorstat; short fstat = sector[nSector].floorstat;
sector[nSector].floorstat |= 1; sector[nSector].floorstat |= 1;
renderDrawMasks(); renderDrawMasks();
@ -420,8 +432,14 @@ void DrawMirrors(int x, int y, int z, fix16_t a, fix16_t horiz)
r_rorphase = 1; r_rorphase = 1;
#endif #endif
int nSector = mirror[i].at4; int nSector = mirror[i].at4;
#ifdef POLYMER
if (videoGetRenderMode() == REND_POLYMER)
polymer_setanimatesprites(viewProcessSprites, x+mirror[i].at8, y+mirror[i].atc, z+mirror[i].at10, fix16_to_int(a), smooth);
#endif
yax_preparedrawrooms();
renderDrawRoomsQ16(x+mirror[i].at8, y+mirror[i].atc, z+mirror[i].at10, a, horiz, nSector|MAXSECTORS); renderDrawRoomsQ16(x+mirror[i].at8, y+mirror[i].atc, z+mirror[i].at10, a, horiz, nSector|MAXSECTORS);
viewProcessSprites(x+mirror[i].at8, y+mirror[i].atc, z+mirror[i].at10); yax_drawrooms(viewProcessSprites, nSector, 0, smooth);
viewProcessSprites(x+mirror[i].at8, y+mirror[i].atc, z+mirror[i].at10, fix16_to_int(a), smooth);
short cstat = sector[nSector].ceilingstat; short cstat = sector[nSector].ceilingstat;
sector[nSector].ceilingstat |= 1; sector[nSector].ceilingstat |= 1;
renderDrawMasks(); renderDrawMasks();

View file

@ -25,4 +25,4 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
void InitMirrors(void); void InitMirrors(void);
void sub_5571C(char mode); void sub_5571C(char mode);
void sub_557C4(int x, int y, int interpolation); void sub_557C4(int x, int y, int interpolation);
void DrawMirrors(int x, int y, int z, fix16_t a, fix16_t horiz); void DrawMirrors(int x, int y, int z, fix16_t a, fix16_t horiz, int smooth);

View file

@ -2019,8 +2019,10 @@ uspritetype *viewAddEffect(int nTSprite, VIEW_EFFECT nViewEffect)
LOCATION gPrevSpriteLoc[kMaxSprites]; LOCATION gPrevSpriteLoc[kMaxSprites];
void viewProcessSprites(int cX, int cY, int cZ) void viewProcessSprites(int32_t cX, int32_t cY, int32_t cZ, int32_t cA, int32_t smooth)
{ {
UNREFERENCED_PARAMETER(cA);
UNREFERENCED_PARAMETER(smooth);
dassert(spritesortcnt <= kMaxViewSprites); dassert(spritesortcnt <= kMaxViewSprites);
int nViewSprites = spritesortcnt; int nViewSprites = spritesortcnt;
for (int nTSprite = nViewSprites-1; nTSprite >= 0; nTSprite--) for (int nTSprite = nViewSprites-1; nTSprite >= 0; nTSprite--)
@ -3169,21 +3171,27 @@ void viewDrawScreen(void)
vd0 = vc8+(8<<4); vd0 = vc8+(8<<4);
} }
v54 = ClipRange(v54, -200, 200); v54 = ClipRange(v54, -200, 200);
#if 0
RORHACKOTHER: RORHACKOTHER:
int ror_status[16]; int ror_status[16];
for (int i = 0; i < 16; i++) for (int i = 0; i < 16; i++)
ror_status[i] = TestBitString(gotpic, 4080 + i); ror_status[i] = TestBitString(gotpic, 4080 + i);
DrawMirrors(vd8, vd4, vd0, fix16_from_int(v50), fix16_from_int(v54 + defaultHoriz)); #endif
yax_preparedrawrooms();
DrawMirrors(vd8, vd4, vd0, fix16_from_int(v50), fix16_from_int(v54 + defaultHoriz), gInterpolate);
drawrooms(vd8, vd4, vd0, v50, v54 + defaultHoriz, vcc); drawrooms(vd8, vd4, vd0, v50, v54 + defaultHoriz, vcc);
yax_drawrooms(viewProcessSprites, vcc, 0, gInterpolate);
#if 0
bool do_ror_hack = false; bool do_ror_hack = false;
for (int i = 0; i < 16; i++) for (int i = 0; i < 16; i++)
if (!ror_status[i] && TestBitString(gotpic, 4080 + i)) if (!ror_status[i] && TestBitString(gotpic, 4080 + i))
do_ror_hack = true; do_ror_hack = true;
if (do_ror_hack) if (do_ror_hack)
goto RORHACKOTHER; goto RORHACKOTHER;
#endif
memcpy(otherMirrorGotpic, gotpic+510, 2); memcpy(otherMirrorGotpic, gotpic+510, 2);
memcpy(gotpic+510, bakMirrorGotpic, 2); memcpy(gotpic+510, bakMirrorGotpic, 2);
viewProcessSprites(vd8, vd4, vd0); viewProcessSprites(vd8, vd4, vd0, v50, gInterpolate);
renderDrawMasks(); renderDrawMasks();
renderRestoreTarget(); renderRestoreTarget();
} }
@ -3243,12 +3251,14 @@ RORHACKOTHER:
cZ = vfc+(8<<8); cZ = vfc+(8<<8);
} }
q16horiz = ClipRange(q16horiz, F16(-200), F16(200)); q16horiz = ClipRange(q16horiz, F16(-200), F16(200));
#if 0
RORHACK: RORHACK:
int ror_status[16]; int ror_status[16];
for (int i = 0; i < 16; i++) for (int i = 0; i < 16; i++)
ror_status[i] = TestBitString(gotpic, 4080+i); ror_status[i] = TestBitString(gotpic, 4080+i);
#endif
fix16_t deliriumPitchI = interpolate(fix16_from_int(deliriumPitchO), fix16_from_int(deliriumPitch), gInterpolate); fix16_t deliriumPitchI = interpolate(fix16_from_int(deliriumPitchO), fix16_from_int(deliriumPitch), gInterpolate);
DrawMirrors(cX, cY, cZ, cA, q16horiz + fix16_from_int(defaultHoriz) + deliriumPitchI); DrawMirrors(cX, cY, cZ, cA, q16horiz + fix16_from_int(defaultHoriz) + deliriumPitchI, gInterpolate);
int bakCstat = gView->pSprite->cstat; int bakCstat = gView->pSprite->cstat;
if (gViewPos == 0) if (gViewPos == 0)
{ {
@ -3258,7 +3268,15 @@ RORHACK:
{ {
gView->pSprite->cstat |= 514; gView->pSprite->cstat |= 514;
} }
#ifdef POLYMER
if (videoGetRenderMode() == REND_POLYMER)
polymer_setanimatesprites(viewProcessSprites, cX, cY, cZ, fix16_to_int(cA), gInterpolate);
#endif
yax_preparedrawrooms();
renderDrawRoomsQ16(cX, cY, cZ, cA, q16horiz + fix16_from_int(defaultHoriz) + deliriumPitchI, nSectnum); renderDrawRoomsQ16(cX, cY, cZ, cA, q16horiz + fix16_from_int(defaultHoriz) + deliriumPitchI, nSectnum);
yax_drawrooms(viewProcessSprites, nSectnum, 0, gInterpolate);
viewProcessSprites(cX, cY, cZ, fix16_to_int(cA), gInterpolate);
#if 0
bool do_ror_hack = false; bool do_ror_hack = false;
for (int i = 0; i < 16; i++) for (int i = 0; i < 16; i++)
if (!ror_status[i] && TestBitString(gotpic, 4080+i)) if (!ror_status[i] && TestBitString(gotpic, 4080+i))
@ -3268,11 +3286,13 @@ RORHACK:
gView->pSprite->cstat = bakCstat; gView->pSprite->cstat = bakCstat;
goto RORHACK; goto RORHACK;
} }
#endif
viewProcessSprites(cX, cY, cZ); if (videoGetRenderMode() == REND_CLASSIC)
sub_5571C(1); {
renderDrawMasks(); sub_5571C(1);
sub_5571C(0); renderDrawMasks();
sub_5571C(0);
}
sub_557C4(cX, cY, gInterpolate); sub_557C4(cX, cY, gInterpolate);
renderDrawMasks(); renderDrawMasks();
gView->pSprite->cstat = bakCstat; gView->pSprite->cstat = bakCstat;

View file

@ -138,7 +138,7 @@ void UpdateFrame(void);
void viewDrawInterface(int arg); void viewDrawInterface(int arg);
uspritetype *viewInsertTSprite(int nSector, int nStatnum, uspritetype *pSprite); uspritetype *viewInsertTSprite(int nSector, int nStatnum, uspritetype *pSprite);
uspritetype *viewAddEffect(int nTSprite, VIEW_EFFECT nViewEffect); uspritetype *viewAddEffect(int nTSprite, VIEW_EFFECT nViewEffect);
void viewProcessSprites(int cX, int cY, int cZ); void viewProcessSprites(int32_t cX, int32_t cY, int32_t cZ, int32_t cA, int32_t smooth);
void CalcOtherPosition(spritetype *pSprite, int *pX, int *pY, int *pZ, int *vsectnum, int nAng, int zm); void CalcOtherPosition(spritetype *pSprite, int *pX, int *pY, int *pZ, int *vsectnum, int nAng, int zm);
void CalcPosition(spritetype *pSprite, int *pX, int *pY, int *pZ, int *vsectnum, int nAng, int zm); void CalcPosition(spritetype *pSprite, int *pX, int *pY, int *pZ, int *vsectnum, int nAng, int zm);
void viewSetMessage(const char *pMessage); void viewSetMessage(const char *pMessage);

View file

@ -220,7 +220,7 @@ static FORCE_INLINE CONSTEXPR int32_t yax_waltosecmask(int32_t const walclipmask
return ((walclipmask&1)<<9) | ((walclipmask&64)<<5); return ((walclipmask&1)<<9) | ((walclipmask&64)<<5);
} }
void yax_preparedrawrooms(void); void yax_preparedrawrooms(void);
void yax_drawrooms(void (*SpriteAnimFunc)(int32_t,int32_t,int32_t,int32_t), void yax_drawrooms(void (*SpriteAnimFunc)(int32_t,int32_t,int32_t,int32_t,int32_t),
int16_t sectnum, int32_t didmirror, int32_t smoothr); int16_t sectnum, int32_t didmirror, int32_t smoothr);
# define YAX_SKIPSECTOR(i) if (graysectbitmap[(i)>>3]&pow2char[(i)&7]) continue # define YAX_SKIPSECTOR(i) if (graysectbitmap[(i)>>3]&pow2char[(i)&7]) continue
# define YAX_SKIPWALL(i) if (graywallbitmap[(i)>>3]&pow2char[(i)&7]) continue # define YAX_SKIPWALL(i) if (graywallbitmap[(i)>>3]&pow2char[(i)&7]) continue

View file

@ -864,7 +864,7 @@ void yax_preparedrawrooms(void)
} }
} }
void yax_drawrooms(void (*SpriteAnimFunc)(int32_t,int32_t,int32_t,int32_t), void yax_drawrooms(void (*SpriteAnimFunc)(int32_t,int32_t,int32_t,int32_t,int32_t),
int16_t sectnum, int32_t didmirror, int32_t smoothr) int16_t sectnum, int32_t didmirror, int32_t smoothr)
{ {
static uint8_t havebunch[(YAX_MAXBUNCHES+7)>>3]; static uint8_t havebunch[(YAX_MAXBUNCHES+7)>>3];
@ -1085,7 +1085,7 @@ void yax_drawrooms(void (*SpriteAnimFunc)(int32_t,int32_t,int32_t,int32_t),
yax_globallev-YAX_MAXDRAWS, j, k, spritesortcnt, yax_globallev-YAX_MAXDRAWS, j, k, spritesortcnt,
(double)(1000*(timerGetTicksU64()-t))/u64tickspersec); (double)(1000*(timerGetTicksU64()-t))/u64tickspersec);
SpriteAnimFunc(globalposx, globalposy, globalang, smoothr); SpriteAnimFunc(globalposx, globalposy, globalposz, globalang, smoothr);
renderDrawMasks(); renderDrawMasks();
} }

View file

@ -2225,7 +2225,7 @@ static void ExtSE40Draw(int32_t spnum,int32_t x,int32_t y,int32_t z,int16_t a,in
} }
drawrooms(x+offx,y+offy,z+offz,a,h,sprite[floor2].sectnum); drawrooms(x+offx,y+offy,z+offz,a,h,sprite[floor2].sectnum);
ExtAnalyzeSprites(0,0,0,0); ExtAnalyzeSprites(0,0,0,0,0);
renderDrawMasks(); renderDrawMasks();
M32_ResetFakeRORTiles(); M32_ResetFakeRORTiles();
@ -2251,7 +2251,7 @@ static void ExtSE40Draw(int32_t spnum,int32_t x,int32_t y,int32_t z,int16_t a,in
// Now re-draw // Now re-draw
drawrooms(x+offx,y+offy,z+offz,a,h,sprite[floor2].sectnum); drawrooms(x+offx,y+offy,z+offz,a,h,sprite[floor2].sectnum);
ExtAnalyzeSprites(0,0,0,0); ExtAnalyzeSprites(0,0,0,0,0);
renderDrawMasks(); renderDrawMasks();
M32_ResetFakeRORTiles(); M32_ResetFakeRORTiles();
} }
@ -10500,7 +10500,7 @@ void ExtPreCheckKeys(void) // just before drawrooms
videoEndDrawing(); //}}} videoEndDrawing(); //}}}
} }
void ExtAnalyzeSprites(int32_t ourx, int32_t oury, int32_t oura, int32_t smoothr) void ExtAnalyzeSprites(int32_t ourx, int32_t oury, int32_t ourz, int32_t oura, int32_t smoothr)
{ {
int32_t i, k; int32_t i, k;
uspritetype *tspr; uspritetype *tspr;

View file

@ -543,7 +543,7 @@ static void G_SE40(int32_t smoothratio)
#ifdef POLYMER #ifdef POLYMER
if (videoGetRenderMode() == REND_POLYMER) if (videoGetRenderMode() == REND_POLYMER)
polymer_setanimatesprites(G_DoSpriteAnimations, CAMERA(pos.x), CAMERA(pos.y), fix16_to_int(CAMERA(q16ang)), smoothratio); polymer_setanimatesprites(G_DoSpriteAnimations, CAMERA(pos.x), CAMERA(pos.y), CAMERA(pos.z), fix16_to_int(CAMERA(q16ang)), smoothratio);
#endif #endif
renderDrawRoomsQ16(sprite[sprite2].x + x, sprite[sprite2].y + y, renderDrawRoomsQ16(sprite[sprite2].x + x, sprite[sprite2].y + y,
z + renderz, CAMERA(q16ang), CAMERA(q16horiz), sect); z + renderz, CAMERA(q16ang), CAMERA(q16horiz), sect);
@ -552,7 +552,7 @@ static void G_SE40(int32_t smoothratio)
if (drawing_ror == 2) // viewing from top if (drawing_ror == 2) // viewing from top
G_OROR_DupeSprites(sp); G_OROR_DupeSprites(sp);
G_DoSpriteAnimations(CAMERA(pos.x),CAMERA(pos.y),fix16_to_int(CAMERA(q16ang)),smoothratio); G_DoSpriteAnimations(CAMERA(pos.x),CAMERA(pos.y),CAMERA(pos.z),fix16_to_int(CAMERA(q16ang)),smoothratio);
renderDrawMasks(); renderDrawMasks();
if (level) if (level)
@ -685,7 +685,7 @@ void G_HandleMirror(int32_t x, int32_t y, int32_t z, fix16_t a, fix16_t q16horiz
// XXX: Sprites don't get drawn with TROR/Polymost // XXX: Sprites don't get drawn with TROR/Polymost
#endif #endif
display_mirror = 1; display_mirror = 1;
G_DoSpriteAnimations(tposx,tposy,fix16_to_int(tang),smoothratio); G_DoSpriteAnimations(tposx,tposy,z,fix16_to_int(tang),smoothratio);
display_mirror = 0; display_mirror = 0;
renderDrawMasks(); renderDrawMasks();
@ -820,12 +820,12 @@ void G_DrawRooms(int32_t playerNum, int32_t smoothRatio)
#endif #endif
#ifdef POLYMER #ifdef POLYMER
if (videoGetRenderMode() == REND_POLYMER) if (videoGetRenderMode() == REND_POLYMER)
polymer_setanimatesprites(G_DoSpriteAnimations, pSprite->x, pSprite->y, fix16_to_int(CAMERA(q16ang)), smoothRatio); polymer_setanimatesprites(G_DoSpriteAnimations, pSprite->x, pSprite->y, pSprite->z, fix16_to_int(CAMERA(q16ang)), smoothRatio);
#endif #endif
yax_preparedrawrooms(); yax_preparedrawrooms();
renderDrawRoomsQ16(pSprite->x, pSprite->y, pSprite->z - ZOFFSET6, CAMERA(q16ang), fix16_from_int(pSprite->yvel), pSprite->sectnum); renderDrawRoomsQ16(pSprite->x, pSprite->y, pSprite->z - ZOFFSET6, CAMERA(q16ang), fix16_from_int(pSprite->yvel), pSprite->sectnum);
yax_drawrooms(G_DoSpriteAnimations, pSprite->sectnum, 0, smoothRatio); yax_drawrooms(G_DoSpriteAnimations, pSprite->sectnum, 0, smoothRatio);
G_DoSpriteAnimations(pSprite->x, pSprite->y, fix16_to_int(CAMERA(q16ang)), smoothRatio); G_DoSpriteAnimations(pSprite->x, pSprite->y, pSprite->z, fix16_to_int(CAMERA(q16ang)), smoothRatio);
renderDrawMasks(); renderDrawMasks();
} }
} }
@ -1083,7 +1083,7 @@ void G_DrawRooms(int32_t playerNum, int32_t smoothRatio)
#endif #endif
#ifdef POLYMER #ifdef POLYMER
if (videoGetRenderMode() == REND_POLYMER) if (videoGetRenderMode() == REND_POLYMER)
polymer_setanimatesprites(G_DoSpriteAnimations, CAMERA(pos.x),CAMERA(pos.y),fix16_to_int(CAMERA(q16ang)),smoothRatio); polymer_setanimatesprites(G_DoSpriteAnimations, CAMERA(pos.x),CAMERA(pos.y),CAMERA(pos.z),fix16_to_int(CAMERA(q16ang)),smoothRatio);
#endif #endif
// for G_PrintCoords // for G_PrintCoords
dr_viewingrange = viewingrange; dr_viewingrange = viewingrange;
@ -1098,7 +1098,7 @@ void G_DrawRooms(int32_t playerNum, int32_t smoothRatio)
if ((unsigned)ror_sprite < MAXSPRITES && drawing_ror == 1) // viewing from bottom if ((unsigned)ror_sprite < MAXSPRITES && drawing_ror == 1) // viewing from bottom
G_OROR_DupeSprites(&sprite[ror_sprite]); G_OROR_DupeSprites(&sprite[ror_sprite]);
#endif #endif
G_DoSpriteAnimations(CAMERA(pos.x),CAMERA(pos.y),fix16_to_int(CAMERA(q16ang)),smoothRatio); G_DoSpriteAnimations(CAMERA(pos.x),CAMERA(pos.y),CAMERA(pos.z),fix16_to_int(CAMERA(q16ang)),smoothRatio);
#ifdef LEGACY_ROR #ifdef LEGACY_ROR
drawing_ror = 0; drawing_ror = 0;
#endif #endif
@ -3604,8 +3604,9 @@ static inline void G_DoEventAnimSprites(int tspriteNum)
spriteext[tsprOwner].tspr = NULL; spriteext[tsprOwner].tspr = NULL;
} }
void G_DoSpriteAnimations(int32_t ourx, int32_t oury, int32_t oura, int32_t smoothratio) void G_DoSpriteAnimations(int32_t ourx, int32_t oury, int32_t ourz, int32_t oura, int32_t smoothratio)
{ {
UNREFERENCED_PARAMETER(ourz);
int32_t j, frameOffset, playerNum; int32_t j, frameOffset, playerNum;
intptr_t l; intptr_t l;

View file

@ -389,7 +389,7 @@ const char* G_PrintBestTime(void);
void G_BonusScreen(int32_t bonusonly); void G_BonusScreen(int32_t bonusonly);
//void G_CheatGetInv(void); //void G_CheatGetInv(void);
void G_DisplayRest(int32_t smoothratio); void G_DisplayRest(int32_t smoothratio);
void G_DoSpriteAnimations(int32_t ourx, int32_t oury, int32_t oura, int32_t smoothratio); void G_DoSpriteAnimations(int32_t ourx, int32_t oury, int32_t ourz, int32_t oura, int32_t smoothratio);
void G_DrawBackground(void); void G_DrawBackground(void);
void G_DrawFrags(void); void G_DrawFrags(void);
void G_HandleMirror(int32_t x, int32_t y, int32_t z, fix16_t a, fix16_t horiz, int32_t smoothratio); void G_HandleMirror(int32_t x, int32_t y, int32_t z, fix16_t a, fix16_t horiz, int32_t smoothratio);

View file

@ -1203,14 +1203,14 @@ LUNATIC_EXTERN void G_ShowView(vec3_t vec, fix16_t a, fix16_t horiz, int sect, i
G_HandleMirror(vec.x, vec.y, vec.z, a, horiz, smoothratio); G_HandleMirror(vec.x, vec.y, vec.z, a, horiz, smoothratio);
#ifdef POLYMER #ifdef POLYMER
if (videoGetRenderMode() == REND_POLYMER) if (videoGetRenderMode() == REND_POLYMER)
polymer_setanimatesprites(G_DoSpriteAnimations, vec.x, vec.y, fix16_to_int(a), smoothratio); polymer_setanimatesprites(G_DoSpriteAnimations, vec.x, vec.y, vec.z, fix16_to_int(a), smoothratio);
#endif #endif
yax_preparedrawrooms(); yax_preparedrawrooms();
renderDrawRoomsQ16(vec.x, vec.y, vec.z, a, horiz, sect); renderDrawRoomsQ16(vec.x, vec.y, vec.z, a, horiz, sect);
yax_drawrooms(G_DoSpriteAnimations, sect, 0, smoothratio); yax_drawrooms(G_DoSpriteAnimations, sect, 0, smoothratio);
display_mirror = 2; display_mirror = 2;
G_DoSpriteAnimations(vec.x, vec.y, fix16_to_int(a), smoothratio); G_DoSpriteAnimations(vec.x, vec.y, vec.z, fix16_to_int(a), smoothratio);
display_mirror = 0; display_mirror = 0;
renderDrawMasks(); renderDrawMasks();
G_RestoreInterpolations(); G_RestoreInterpolations();

View file

@ -399,7 +399,7 @@ static void G_SetupCamTile(int spriteNum, int tileNum, int smoothRatio)
yax_drawrooms(G_DoSpriteAnimations, SECT(spriteNum), 0, smoothRatio); yax_drawrooms(G_DoSpriteAnimations, SECT(spriteNum), 0, smoothRatio);
display_mirror = 3; display_mirror = 3;
G_DoSpriteAnimations(camera.x, camera.y, SA(spriteNum), smoothRatio); G_DoSpriteAnimations(camera.x, camera.y, camera.z, SA(spriteNum), smoothRatio);
display_mirror = saveMirror; display_mirror = saveMirror;
renderDrawMasks(); renderDrawMasks();

View file

@ -608,11 +608,11 @@ static void G_SE150_Draw(int32_t spnum, int32_t x, int32_t y, int32_t z, int32_t
i = floor2; i = floor2;
#ifdef POLYMER #ifdef POLYMER
if (videoGetRenderMode() == REND_POLYMER) if (videoGetRenderMode() == REND_POLYMER)
polymer_setanimatesprites(G_DoSpriteAnimations, offx + sprite[i].x, offy + sprite[i].y, fix16_to_int(a), smoothratio); polymer_setanimatesprites(G_DoSpriteAnimations, offx + sprite[i].x, offy + sprite[i].y, z, fix16_to_int(a), smoothratio);
#endif #endif
renderDrawRoomsQ16(offx + sprite[i].x, offy + sprite[i].y, z, a, h, sprite[i].sectnum); renderDrawRoomsQ16(offx + sprite[i].x, offy + sprite[i].y, z, a, h, sprite[i].sectnum);
G_DoSpriteAnimations(offx + sprite[i].x, offy + sprite[i].y, fix16_to_int(a), smoothratio); G_DoSpriteAnimations(offx + sprite[i].x, offy + sprite[i].y, z, fix16_to_int(a), smoothratio);
renderDrawMasks(); renderDrawMasks();
for (j = 0; j < MAXSPRITES; j++) // restore ceiling or floor for (j = 0; j < MAXSPRITES; j++) // restore ceiling or floor
@ -775,7 +775,7 @@ static void G_SE40(int32_t smoothratio)
#ifdef POLYMER #ifdef POLYMER
if (videoGetRenderMode() == REND_POLYMER) if (videoGetRenderMode() == REND_POLYMER)
polymer_setanimatesprites(G_DoSpriteAnimations, CAMERA(pos.x), CAMERA(pos.y), fix16_to_int(CAMERA(q16ang)), smoothratio); polymer_setanimatesprites(G_DoSpriteAnimations, CAMERA(pos.x), CAMERA(pos.y), CAMERA(pos.z), fix16_to_int(CAMERA(q16ang)), smoothratio);
#endif #endif
renderDrawRoomsQ16(sprite[sprite2].x + x, sprite[sprite2].y + y, renderDrawRoomsQ16(sprite[sprite2].x + x, sprite[sprite2].y + y,
z + renderz, CAMERA(q16ang), CAMERA(q16horiz), sect); z + renderz, CAMERA(q16ang), CAMERA(q16horiz), sect);
@ -784,7 +784,7 @@ static void G_SE40(int32_t smoothratio)
if (drawing_ror == 2) // viewing from top if (drawing_ror == 2) // viewing from top
G_OROR_DupeSprites(sp); G_OROR_DupeSprites(sp);
G_DoSpriteAnimations(CAMERA(pos.x),CAMERA(pos.y),fix16_to_int(CAMERA(q16ang)),smoothratio); G_DoSpriteAnimations(CAMERA(pos.x),CAMERA(pos.y),CAMERA(pos.z),fix16_to_int(CAMERA(q16ang)),smoothratio);
renderDrawMasks(); renderDrawMasks();
if (level) if (level)
@ -884,7 +884,7 @@ void G_HandleMirror(int32_t x, int32_t y, int32_t z, fix16_t a, fix16_t q16horiz
// XXX: Sprites don't get drawn with TROR/Polymost // XXX: Sprites don't get drawn with TROR/Polymost
#endif #endif
display_mirror = 1; display_mirror = 1;
G_DoSpriteAnimations(tposx,tposy,fix16_to_int(tang),smoothratio); G_DoSpriteAnimations(tposx,tposy,z,fix16_to_int(tang),smoothratio);
display_mirror = 0; display_mirror = 0;
renderDrawMasks(); renderDrawMasks();
@ -1009,12 +1009,12 @@ void G_DrawRooms(int32_t playerNum, int32_t smoothRatio)
#endif #endif
#ifdef POLYMER #ifdef POLYMER
if (videoGetRenderMode() == REND_POLYMER) if (videoGetRenderMode() == REND_POLYMER)
polymer_setanimatesprites(G_DoSpriteAnimations, pSprite->x, pSprite->y, fix16_to_int(CAMERA(q16ang)), smoothRatio); polymer_setanimatesprites(G_DoSpriteAnimations, pSprite->x, pSprite->y, pSprite->z, fix16_to_int(CAMERA(q16ang)), smoothRatio);
#endif #endif
yax_preparedrawrooms(); yax_preparedrawrooms();
renderDrawRoomsQ16(pSprite->x, pSprite->y, pSprite->z - ZOFFSET6, CAMERA(q16ang), fix16_from_int(pSprite->yvel), pSprite->sectnum); renderDrawRoomsQ16(pSprite->x, pSprite->y, pSprite->z - ZOFFSET6, CAMERA(q16ang), fix16_from_int(pSprite->yvel), pSprite->sectnum);
yax_drawrooms(G_DoSpriteAnimations, pSprite->sectnum, 0, smoothRatio); yax_drawrooms(G_DoSpriteAnimations, pSprite->sectnum, 0, smoothRatio);
G_DoSpriteAnimations(pSprite->x, pSprite->y, fix16_to_int(CAMERA(q16ang)), smoothRatio); G_DoSpriteAnimations(pSprite->x, pSprite->y, pSprite->z, fix16_to_int(CAMERA(q16ang)), smoothRatio);
renderDrawMasks(); renderDrawMasks();
} }
else else
@ -1363,7 +1363,7 @@ void G_DrawRooms(int32_t playerNum, int32_t smoothRatio)
G_SE150(CAMERA(pos.x), CAMERA(pos.y), CAMERA(pos.z), CAMERA(q16ang), CAMERA(q16horiz), smoothRatio); G_SE150(CAMERA(pos.x), CAMERA(pos.y), CAMERA(pos.z), CAMERA(q16ang), CAMERA(q16horiz), smoothRatio);
#ifdef POLYMER #ifdef POLYMER
if (videoGetRenderMode() == REND_POLYMER) if (videoGetRenderMode() == REND_POLYMER)
polymer_setanimatesprites(G_DoSpriteAnimations, CAMERA(pos.x),CAMERA(pos.y),fix16_to_int(CAMERA(q16ang)),smoothRatio); polymer_setanimatesprites(G_DoSpriteAnimations, CAMERA(pos.x),CAMERA(pos.y),CAMERA(pos.z),fix16_to_int(CAMERA(q16ang)),smoothRatio);
#endif #endif
// for G_PrintCoords // for G_PrintCoords
dr_viewingrange = viewingrange; dr_viewingrange = viewingrange;
@ -1377,7 +1377,7 @@ void G_DrawRooms(int32_t playerNum, int32_t smoothRatio)
renderDrawRoomsQ16(CAMERA(pos.x),CAMERA(pos.y),CAMERA(pos.z),CAMERA(q16ang),CAMERA(q16horiz),CAMERA(sect)); renderDrawRoomsQ16(CAMERA(pos.x),CAMERA(pos.y),CAMERA(pos.z),CAMERA(q16ang),CAMERA(q16horiz),CAMERA(sect));
yax_drawrooms(G_DoSpriteAnimations, CAMERA(sect), 0, smoothRatio); yax_drawrooms(G_DoSpriteAnimations, CAMERA(sect), 0, smoothRatio);
G_DoSpriteAnimations(CAMERA(pos.x),CAMERA(pos.y),fix16_to_int(CAMERA(q16ang)),smoothRatio); G_DoSpriteAnimations(CAMERA(pos.x),CAMERA(pos.y),CAMERA(pos.z),fix16_to_int(CAMERA(q16ang)),smoothRatio);
renderDrawMasks(); renderDrawMasks();
@ -1421,7 +1421,7 @@ void G_DrawRooms(int32_t playerNum, int32_t smoothRatio)
} }
} }
G_DoSpriteAnimations(CAMERA(pos.x),CAMERA(pos.y),fix16_to_int(CAMERA(q16ang)),smoothRatio); G_DoSpriteAnimations(CAMERA(pos.x),CAMERA(pos.y),CAMERA(pos.z),fix16_to_int(CAMERA(q16ang)),smoothRatio);
renderDrawMasks(); renderDrawMasks();
@ -1463,7 +1463,7 @@ void G_DrawRooms(int32_t playerNum, int32_t smoothRatio)
} }
} }
G_DoSpriteAnimations(CAMERA(pos.x),CAMERA(pos.y),fix16_to_int(CAMERA(q16ang)),smoothRatio); G_DoSpriteAnimations(CAMERA(pos.x),CAMERA(pos.y),CAMERA(pos.z),fix16_to_int(CAMERA(q16ang)),smoothRatio);
renderDrawMasks(); renderDrawMasks();
} }
@ -1476,7 +1476,7 @@ void G_DrawRooms(int32_t playerNum, int32_t smoothRatio)
if (!RR && (unsigned)ror_sprite < MAXSPRITES && drawing_ror == 1) // viewing from bottom if (!RR && (unsigned)ror_sprite < MAXSPRITES && drawing_ror == 1) // viewing from bottom
G_OROR_DupeSprites(&sprite[ror_sprite]); G_OROR_DupeSprites(&sprite[ror_sprite]);
#endif #endif
G_DoSpriteAnimations(CAMERA(pos.x),CAMERA(pos.y),fix16_to_int(CAMERA(q16ang)),smoothRatio); G_DoSpriteAnimations(CAMERA(pos.x),CAMERA(pos.y),CAMERA(pos.z),fix16_to_int(CAMERA(q16ang)),smoothRatio);
} }
#ifdef LEGACY_ROR #ifdef LEGACY_ROR
drawing_ror = 0; drawing_ror = 0;
@ -4736,8 +4736,9 @@ static int G_CheckAdultTile(int tileNum)
return 0; return 0;
} }
void G_DoSpriteAnimations(int32_t ourx, int32_t oury, int32_t oura, int32_t smoothratio) void G_DoSpriteAnimations(int32_t ourx, int32_t oury, int32_t ourz, int32_t oura, int32_t smoothratio)
{ {
UNREFERENCED_PARAMETER(ourz);
int32_t j, frameOffset, playerNum; int32_t j, frameOffset, playerNum;
intptr_t l; intptr_t l;

View file

@ -350,7 +350,7 @@ void G_BonusScreen(int32_t bonusonly);
void G_BonusScreenRRRA(int32_t bonusonly); void G_BonusScreenRRRA(int32_t bonusonly);
//void G_CheatGetInv(void); //void G_CheatGetInv(void);
void G_DisplayRest(int32_t smoothratio); void G_DisplayRest(int32_t smoothratio);
void G_DoSpriteAnimations(int32_t ourx, int32_t oury, int32_t oura, int32_t smoothratio); void G_DoSpriteAnimations(int32_t ourx, int32_t oury, int32_t ourz, int32_t oura, int32_t smoothratio);
void G_DrawBackground(void); void G_DrawBackground(void);
void G_DrawFrags(void); void G_DrawFrags(void);
void G_HandleMirror(int32_t x, int32_t y, int32_t z, fix16_t a, fix16_t horiz, int32_t smoothratio); void G_HandleMirror(int32_t x, int32_t y, int32_t z, fix16_t a, fix16_t horiz, int32_t smoothratio);

View file

@ -507,7 +507,7 @@ static void G_SetupCamTile(int spriteNum, int tileNum, int smoothRatio)
yax_drawrooms(G_DoSpriteAnimations, SECT(spriteNum), 0, smoothRatio); yax_drawrooms(G_DoSpriteAnimations, SECT(spriteNum), 0, smoothRatio);
display_mirror = 3; display_mirror = 3;
G_DoSpriteAnimations(camera.x, camera.y, SA(spriteNum), smoothRatio); G_DoSpriteAnimations(camera.x, camera.y, camera.z, SA(spriteNum), smoothRatio);
display_mirror = saveMirror; display_mirror = saveMirror;
renderDrawMasks(); renderDrawMasks();