[Since 2.2.0] A_CheckForReload is acting weird for my case

Is there something that doesn't work right in the latest GZDoom? Post about it here.

Moderator: GZDoom Developers

Forum rules
Please construct and post a simple demo whenever possible for all bug reports. Please provide links to everything.

If you can include a wad demonstrating the problem, please do so. Bug reports that include fully-constructed demos have a much better chance of being investigated in a timely manner than those that don't.

Please make a new topic for every bug. Don't combine multiple bugs into a single topic. Thanks!

[Since 2.2.0] A_CheckForReload is acting weird for my case

Postby Dark-Assassin » Fri Jun 19, 2020 6:55 pm

Seems A_CheckForReload is a little bit broken in GZDoom under certain circumstances.
I have a weapon that has sequential fire frames but may be canceled at any time.
Due to Zandronum compatibility (hurr durr I know...) my choices are limited and if I don't want the weapon animations to be ping delayed I can't use ACS calls.
I choose the next frame by using this:
Code: Select allExpand view
ChooseFireFrame:
    QSNG # 0 A_CheckForReload(8,1)
    Goto FireFrame7
    QSNG # 0 A_CheckForReload(7,1,1)
    Goto FireFrame6
    QSNG # 0 A_CheckForReload(6,1,1)
    Goto FireFrame5
    QSNG # 0 A_CheckForReload(5,1,1)
    Goto FireFrame4
    QSNG # 0 A_CheckForReload(4,1,1)
    Goto FireFrame3
    QSNG # 0 A_CheckForReload(3,1,1)
    Goto FireFrame2
    QSNG # 0 A_CheckForReload(2,1,1)
    Goto FireFrame1
    QSNG # 0 A_ResetReloadCounter
    Goto FireFrame0

In Zandronum and GZDoom versions up to 2.1.0, the frames go 0, 1, 2, 3, 4, 5, 6, 7 as they should, but in GZDoom 2.2.0 and later it goes 1, 2, 3, 4, 5, 6, 3, 7 which isn't right. Note it starting at 1 instead of 0 and the 2nd 3 before the 7.

I've spoken to phantombeta on Discord about it and after a bit of back and fourth, they said:
phantombeta wrote:Congrats, either you've found a very old bug that no one else has been affected by, or your code was accidentally relying on undefined behaviour
You should report it on the forums now
Attachments
A_CheckForReload Test.pk3
Test weapon is a pistol in slot 0. Numbers will be printed to the console and message area when firing.
(448 Bytes) Downloaded 4 times
Last edited by Dark-Assassin on Mon Jun 22, 2020 5:48 pm, edited 2 times in total.
User avatar
Dark-Assassin
 
Joined: 19 Mar 2009
Location: South Australia

Re: [Since 2.2.0] A_CheckForReload is acting weird for my ca

Postby _mental_ » Fri Jun 19, 2020 11:46 pm

Post a runnable sample please.
_mental_
 
 
 
Joined: 07 Aug 2011

Re: [Since 2.2.0] A_CheckForReload is acting weird for my ca

Postby Dark-Assassin » Mon Jun 22, 2020 4:33 pm

Attached to OP
User avatar
Dark-Assassin
 
Joined: 19 Mar 2009
Location: South Australia


Return to Bugs

Who is online

Users browsing this forum: No registered users and 5 guests