Giter Club home page Giter Club logo

Comments (13)

aredfan avatar aredfan commented on July 19, 2024 2

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.

walkawayy avatar walkawayy commented on July 19, 2024 2

@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.

lahm86 avatar lahm86 commented on July 19, 2024 1

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.

Richard-L avatar Richard-L commented on July 19, 2024 1

Impressive find @aredfan

from tr1x.

walkawayy avatar walkawayy commented on July 19, 2024 1

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.

walkawayy avatar walkawayy commented on July 19, 2024 1

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.

lahm86 avatar lahm86 commented on July 19, 2024

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.

walkawayy avatar walkawayy commented on July 19, 2024

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.

image

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.

aredfan avatar aredfan commented on July 19, 2024

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.

walkawayy avatar walkawayy commented on July 19, 2024

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.

aredfan avatar aredfan commented on July 19, 2024

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.

walkawayy avatar walkawayy commented on July 19, 2024

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.

aredfan avatar aredfan commented on July 19, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.