btarddd / nullpomino

Automatically exported from code.google.com/p/nullpomino
0 stars 0 forks source link

Engine problems with rules of TGM series, and probable reason imo #86

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
--- What steps will reproduce the problem?
1.use classic3 / standard-hard
2.play speed mania
3.play~play~play~

--- What is the expected output? What do you see instead?
sometimes IRS doesn't work!
although i'm one always killed by L/J Blocking of ARS..
this heppens to S/Z/T which can't be blocked on initial rotation (no so easily 
at least), also all of standard-hard, not restricted to S/Z lower corner 
blocking.
but this NEVER happened when i play original TGM series.
if i press a rotation key before the piece spawns, on the frame it spawns, it 
hould launch IRS. not on high stack which may block IRS.
else if i press a rotation key after the piece spawns, it should rotate on the 
land. not unable-to-kick places, i guarantee. 
else if i press it just on the frame it spawns.. shouldn't IRS work for now? 

--- What version of the product are you using? On what operating system?
tried on both v750 stable, v760d r905. win7 32bit, java 6u22 (well a bit old 
but i don't think related to this problem).

--- Please provide any additional information below.
continuing progress above..
so i checked the code (GameEngine.java:2216~), got:
            // rotation
            boolean onGroundBeforeRotate = nowPieceObject.checkCollision(nowPieceX, nowPieceY + 1, field);
            int move = 0;
            boolean rotated = false;

            if(initialRotateDirection != 0) {
                move = initialRotateDirection;
                initialRotateLastDirection = initialRotateDirection;
                initialRotateContinuousUse = true;
                playSE("initialrotate");
            } else if((statc[0] > 0) || (ruleopt.moveFirstFrame == true)) {
                if((itemRollRollEnable) && (replayTimer % itemRollRollInterval == 0)) move = 1; // Roll Roll

                //  button input
                if(ctrl.isPush(Controller.BUTTON_A) || ctrl.isPush(Controller.BUTTON_C)) move = -1;
                else if(ctrl.isPush(Controller.BUTTON_B)) move = 1;
                else if(ctrl.isPush(Controller.BUTTON_E)) move = 2;

                if(move != 0) {
                    initialRotateLastDirection = move;
                    initialRotateContinuousUse = true;
                }
            }
//---
moveFirstFrame is false for TGM series. so, it doesn't seem to launch IRS on 
this frame.

also, das charge on are last frame & das charge on first frame are both false. 
2 extra frames. might this also cause the DAS feeling too slow?
or when measuring DAS, it included these 2 frames delay, and being added into 
DAS again when npm does simulation?

i'm wondering how speed/DAS/etc. tables of TGM series are measured, also the 
rules of "allow * on specified one frame".
leaked version of TGM3 has fixed lag. if using high speed camera on real 
machine, it's not easy to get game moving status of it.

sorry for bad chinglish, and please correct me if i'm understanding something 
wrong.

Original issue reported on code.google.com by farter...@gmail.com on 20 Nov 2012 at 3:04

GoogleCodeExporter commented 8 years ago
// 先行rotation
            ////////////if(versionMajor < 7.5f)
                initialRotate(); //XXX: Weird active time IRS
            //if( (getARE() != 0) && ((getARELine() != 0) || (version < 6.3f)) ) initialRotate();

ok wrong spot. commenting out the condition, everything (for me) returns 
working fine..

(but initial das is still wrong.

Original comment by farter...@gmail.com on 9 Dec 2014 at 4:12