Comments (13)
I'll show you what I mean, I made a comparison video to help illustrate the issue.
Left is TombATI, right is TR1X
Project.1.mov
There is a little discrepancy between the two videos even if I tried to sync them up. At the end of the passport opening animation, the shift is more evident in TR1X.
from tr1x.
@lahm86 I looked through 2.15 and hotfix patches and nothing stood out. Debug prints look fine. Idk.
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 0; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 1; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 1; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 2; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 2; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 3; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 3; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 4; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 4; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 5; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 5; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 6; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 6; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 7; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 7; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 8; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 8; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 9; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 9; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 10; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 10; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 11; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 11; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 12; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 12; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 13; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 13; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 14; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
from tr1x.
Thanks, I do see it now. I managed to get a similar recording with the animation lined up - you can see in TR1X at 0:25 that it pauses for an extra frame for some reason.
https://youtu.be/7saXw3s3il4
Nothing is jumping out at me in the code so far. Any ideas @rr, @walkawayy?
from tr1x.
Impressive find @aredfan
from tr1x.
Ah ok. My post above was a test from the main menu. So maybe it's limited to something with quick load / quick save.
from tr1x.
Idk what's causing this but I think I'm done hunting. Inv_ConstructAndDisplay
seems fine, so the delay must be coming from somewhere else?
../../src/game/inventory/inventory.c 759 Inv_ConstructAndDisplay current_frame: 0; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 759 Inv_ConstructAndDisplay current_frame: 1; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 759 Inv_ConstructAndDisplay current_frame: 2; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 759 Inv_ConstructAndDisplay current_frame: 3; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 759 Inv_ConstructAndDisplay current_frame: 4; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 759 Inv_ConstructAndDisplay current_frame: 5; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 759 Inv_ConstructAndDisplay current_frame: 6; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 759 Inv_ConstructAndDisplay current_frame: 7; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 759 Inv_ConstructAndDisplay current_frame: 8; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 759 Inv_ConstructAndDisplay current_frame: 9; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 759 Inv_ConstructAndDisplay current_frame: 10; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 759 Inv_ConstructAndDisplay current_frame: 11; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 759 Inv_ConstructAndDisplay current_frame: 12; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 759 Inv_ConstructAndDisplay current_frame: 13; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/option/option_passport.c 614 Option_Passport current_frame: 14; frames_total: 30; goal_frame: 14; open_frame: 14;
../../src/game/inventory/inventory.c 759 Inv_ConstructAndDisplay current_frame: 14; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
from tr1x.
It seems to be the same for me in TombATI, but I could be looking at it wrongly. If you open a level in WadTool and go into object 71's animations, you'll see the slight shift between frames 13 and 14. Frame 14 is where the passport animation stops initially. Is this the shift you mean?
from tr1x.
Hm I thought maybe OG ended one frame early. But the frame timings are synced until this divergence. It's like TR1X is stuck for a frame and holds this frame for one extra. After this frame, their timings are synced again but TR1X is a frame behind. Then it skips the last movement frame to reach the end of the animation.
Definitely a bug, but it could be long, ugly debugging for a tiny one frame bug. Unless it is affecting more. I'd guess it's something slightly different in the new passport ordering code.
from tr1x.
I made recordings of the quickload animation from previous builds, if applicable, and inspected the videos frame-by-frame. I also slowed down the speed of my videos to 25%. I put my findings in this spreadsheet:
https://docs.google.com/spreadsheets/d/18tZeBMZdNwWeVJGlIiVvZ6FPAphES8Vli1mpwKYjFks/edit?usp=sharing
It seems the first and second animation frames appear for twice as long when compared to TombATI. This could be the cause of the passport getting stuck/shifting.
from tr1x.
Just to clarify, is that from 2.15, or 2.15.3?
So your chart is saying it's actually the first two frames that are displayed longer? And is this only a problem for quick load, or normal passport opening too like title screen?
from tr1x.
Yep 2.15, from here: https://github.com/LostArtefacts/TR1X/releases/tag/2.15
The first two animation frames last longer when compared to TombATI but I'm not sure if it's related. One thing that is consistent is the quickload passport seem to get stuck on animation frame 37.
I've not seen the passport shifting in other cases like the main menu.
from tr1x.
Hm quick load seems to look the same:
3.1:
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 0; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 1; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 1; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 2; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 2; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 3; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 3; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 4; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 4; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 5; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 5; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 6; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 6; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 7; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 7; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 8; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 8; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 9; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 9; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 10; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 10; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 11; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 11; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 12; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 12; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 13; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 13; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../../src/game/inventory/inventory.c 224 Inv_AnimateItem current_frame: 14; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
2.15:
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 0; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 1; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 1; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 2; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 2; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 3; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 3; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 4; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 4; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 5; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 5; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 6; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 6; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 7; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 7; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 8; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 8; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 9; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 9; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 10; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 10; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 11; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 11; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 12; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 12; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 13; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 13; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 0
../src/game/inventory/inventory.c 219 Inv_AnimateItem current_frame: 14; frames_total: 30; goal_frame: 14; open_frame: 14; anim_count: 1
from tr1x.
I just checked and apparently this issue is fixed in a recent snapshot build after #1315. The bug was still present in 4.0.3 when playing in 30 FPS mode. I'm not sure what's changed in the code that fixed this issue but it's good news. Thank you.
from tr1x.
Related Issues (20)
- Slow performance on Apple Silicon, draw distance related? (M2 Pro Macbook Pro) HOT 1
- Include PS1 FMVs in installer? HOT 2
- Feature request: Add option for faster pickup animation from TR4+
- Please add support for older MacOS versions HOT 1
- TR1X bug: Console command to enable 30/60 FPS on Main Menu, also triggers Demo Mode
- TR1X bug: FPS counter overlaps with the health bar when in Demo Mode
- TR1X bug: Demo 1 desync if fix bear AI enabled HOT 5
- Troubles when building TR1X HOT 2
- Game can crash with more than 16 savegame slots HOT 2
- Feature request: Add TR4+ ability to shimmy around corners HOT 2
- TR1X bug: Blinking text discrepancy - 30/60 FPS HOT 3
- Add unobtainable secrets gameflow property
- OG bug: shooting the scion with the shotgun is difficult
- TR1X bug: Lightning transparency issue HOT 1
- TR1X bug: First backdrop flicker during fade-in when starting up the game HOT 5
- Add Backflip 180 ("Arabian") from early demos
- TR1X bug: Small lightning bolts is absent
- Savegame slots over 64 are unusable
- TR1X bug: game crashes with large rooms
- TR1X bug: Issue with console command to load specific levels HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tr1x.