. - .
 
Hively Tracker
News ::  About ::  Forum ::  Download ::  Tunes ::  Screenshots ::  Competition ::  Links
 
. - .
. - .
 
User 
Password 
Create new account
 
. - .

. - .
 
Cool Sites
 
. - .

. - .
 
Link to us
 
. - .

. - .
  Forums > Hively Tracker Support > Hively replay bugs

Page: 1 2 3 4

Hively replay bugs

pieknyman
Posted: 2007-01-19 09:10:52
Occasional visitor
Posts: 27

Member since:
2007-01-13 11:33:20
Simple example: Let's go to very beginning of a song. What if first track doesn't have a note in the first row? No note -> no plantperiod -> no delta = crash. :) If you check sources for the winamp plugin and windows player you'll see a check for delta != 0 too! :)
http://dhost.info/pieknyman
Xeron
Posted: 2007-01-19 10:08:04
Supreme Being
Posts: 448

Member since:
2006-12-13 11:34:00
@pieknyman
The check for "Delta != 0" is not needed if the "reset_some_stuff" routine sets the delta to 1 by default. This is the better way to do it, IMHO, so that is how the new player source will work.

AHX forever!
m0d
Posted: 2007-01-19 11:06:19
Occasional visitor
Posts: 28

Member since:
2006-12-22 09:27:17
hey pieknyman :) i see you're working hard on getting the xmp-plugin AND getting some bugs out of the way, nice one :) Hope the info we provided over at xmplay forum has helped aswell.
http://m0d.untergrund.net/
Xeron
Posted: 2007-01-19 11:19:00
Supreme Being
Posts: 448

Member since:
2006-12-13 11:34:00
@pieknyman
OK, i've fixed all the bugs you mentioned for the next version of hively. If you want to apply the fixes before HivelyTracker 1.3 is out:

1) In "reset_some_stuff", remove the reference to "ht->ht_Voices[ i ].vc_Delta", and insert a line above there containing:

ht->ht_Voices[i].vc_Delta = 1;


2) Replace:

for( i=0; i<(1<<voice->vc_WaveLength)*4; i++ )
{
  // THX.draft-hawk fucks this up, ATM
  if( SquarePtr >= &waves[WO_WHITENOISE] )
    SquarePtr = &waves[WO_SQUARES];
  if( SquarePtr < &waves[0] )
    SquarePtr = &waves[WO_WHITENOISE-1];
  if( i>=0x80 ) break;
  voice->vc_SquareTempBuffer[i] = *SquarePtr;
  SquarePtr += Delta;
}


With:

for( i=0; i<(1<<voice->vc_WaveLength)*4; i++ )
{
  voice->vc_SquareTempBuffer[i] = *SquarePtr;
  SquarePtr += Delta;
}


The extra code was a work around for a bug which has long since been fixed (it was fixed before the 1.0 release, but I forgot to remove the work around).

AHX forever!
pieknyman
Posted: 2007-01-19 11:23:58
Occasional visitor
Posts: 27

Member since:
2007-01-13 11:33:20
Funny, I've just found it myself literally a minute ago... :)
Your vc_delta solution works fine, too.

http://dhost.info/pieknyman
spotUP
Posted: 2007-01-19 22:47:04
Moderator
Posts: 197

Member since:
2006-12-15 18:06:32
Keep going guys!
http://www.uprough.net
Xeron
Posted: 2007-01-19 23:08:18
Supreme Being
Posts: 448

Member since:
2006-12-13 11:34:00
We'll keep going if you do. How are those skins going, btw? :)
AHX forever!
spotUP
Posted: 2007-01-20 01:53:11
Moderator
Posts: 197

Member since:
2006-12-15 18:06:32
i was meaning to get back to you on that one.
don't you think it's too soon to release 1.3?
1.2 is still on the front page on the news sites.
and i _know_ you sneaky coders will add more fresh
stuff for me to change, so i will have to go through
all skins again. :P so, i'll wait untill the 1.3 release
is really close.

http://www.uprough.net
Xeron
Posted: 2007-01-20 09:25:24
Supreme Being
Posts: 448

Member since:
2006-12-13 11:34:00
The thing is, in 1.2, instruments using filtered square waves are pretty much broken, so I'm dead keen to get another version out there.
AHX forever!
pieknyman
Posted: 2007-01-20 10:58:08
Occasional visitor
Posts: 27

Member since:
2007-01-13 11:33:20
Hi,

In hvl_load_ahx():

Change this:

  // Subsongs
  for( i=0; i<ht->ht_SubsongNr; i++ )
  {
    ht->ht_Subsongs[i] = (bptr[0]<<8)|bptr[1];
    bptr += 2;
  }


to this:

  // Subsongs
  for( i=0; i<ht->ht_SubsongNr; i++ )
  {
    ht->ht_Subsongs[i] = (bptr[0]<<8)|bptr[1];
    if (ht->ht_Subsongs[i] > ht->ht_PositionNr)
      ht->ht_Subsongs[i] = 0;
    bptr += 2;
  }


to prevent subsong start beyond position number.

this one crashes without this. It's subsongs are obviously invalid.

http://dhost.info/pieknyman
Xeron
Posted: 2007-01-20 11:05:46
Supreme Being
Posts: 448

Member since:
2006-12-13 11:34:00
Ahh well spotted. It wouldn't crash the tracker since it always has 1000 positions (for obvious reasons).
AHX forever!
Xeron
Posted: 2007-01-20 11:47:49
Supreme Being
Posts: 448

Member since:
2006-12-13 11:34:00
Actually, that should be:

if (ht->ht_Subsongs[i] >= ht->ht_PositionNr)


since the pattern buffer is 0 to PositioNr-1.

AHX forever!
spotUP
Posted: 2007-01-20 18:00:41
Moderator
Posts: 197

Member since:
2006-12-15 18:06:32
Xeron, aaah, I didn't realize that. I will try to update the skins as soon as possible!

http://www.uprough.net
m0d
Posted: 2007-01-21 23:26:43
Occasional visitor
Posts: 28

Member since:
2006-12-22 09:27:17
hahaha, gotta love my AHX bug-abusing tunes. :-)
http://m0d.untergrund.net/
pieknyman
Posted: 2007-01-22 13:08:33
Occasional visitor
Posts: 27

Member since:
2007-01-13 11:33:20
Again with the squares:

replace this loop's content:


for( i=0; i<(1<<voice->vc_WaveLength)*4; i++ ) 

  voice->vc_SquareTempBuffer[i] = *SquarePtr; 
  SquarePtr += Delta; 
}


with this:


if (X < 0)
{
  voice->vc_SquareTempBuffer[i] = squarehacksamples;
}
else
{
  voice->vc_SquareTempBuffer[i] = *SquarePtr;
  SquarePtr += Delta;
}


where "squarehacksamples" is an 32 byte array of 0x80's. This is how the orignal amiga ahx replay code behaves.

This will take care of out-of-bounds effect 9xx.

http://dhost.info/pieknyman
Xeron
Posted: 2007-01-22 20:40:26
Supreme Being
Posts: 448

Member since:
2006-12-13 11:34:00
Shouldn't that just be:

if (X < 0)
{
  voice->vc_SquareTempBuffer[i] = 0x80;


?

AHX forever!
pieknyman
Posted: 2007-01-22 20:50:05
Occasional visitor
Posts: 27

Member since:
2007-01-13 11:33:20
Doh!... Yes of course. I had to be out of my mind, when I was writing this...
http://dhost.info/pieknyman
Xeron
Posted: 2007-01-22 20:52:21
Supreme Being
Posts: 448

Member since:
2006-12-13 11:34:00
OK, well, its merged in for next version :)
AHX forever!
pieknyman
Posted: 2007-01-25 11:15:03
Occasional visitor
Posts: 27

Member since:
2007-01-13 11:33:20
Cancel that merge! :)

I've came up with a better solution.

Change this:

// OkDownSquare
if( --X )
  SquarePtr += X << 7;


To this:

if( X > 0 )
  SquarePtr += (X-1) << 7;


The former code makes command 900 invalid, what generates an awful odd sound in Pink's "klisje paa klisje" around 0:20, which is there since the first WinAHX release. This fixes 9xx command's out of bounds parameters too, so my last suggestion isn't needed anymore and actually shouldn't be there for this fix to work correctly.

(I'm also wondering if X should really be decremented.)

Sorry for all the fuzz.

http://dhost.info/pieknyman
Xeron
Posted: 2007-01-25 11:30:37
Supreme Being
Posts: 448

Member since:
2006-12-13 11:34:00
Since X is not used after that point, it seems that the "--X" was an attempt at optimising the code you came up with; however it doesn't work since if X is zero, it becomes negative, and SquarePtr is decremented by 128.

I've unmerged the old fix and merged in the new :)

AHX forever!

Page: 1 2 3 4
 
. - .