shithub: dumb

Download patch

ref: cfb81dff3e9a09bd943bec1a814f35c41432c356
parent: 4f9a59e413f0cf404b136a7a1696968ecddd8372
author: Chris Moeller <[email protected]>
date: Mon Jan 11 04:00:26 EST 2010

{11/29/2006 6:00:28 AM}2006-11-01 00:50 UTC - kode54
- IT renderer now cuts existing notes when it reaches a note where the instrument
  references an invalid sample. (jumping under trees.it)

2006-10-14 08:33 UTC - kode54
- IT renderer pattern loop processor now resets the rows played to clear table
  per channel regardless of whether order changed since last loop start was
  initiated. This is correct, since two pattern loop starts in a row means that
  a loop will never jump to the first loop point.


git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C136

--- a/dumb/src/it/itrender.c
+++ b/dumb/src/it/itrender.c
@@ -1225,7 +1225,7 @@
 									if (!channel->played_patjump)
 										channel->played_patjump = bit_array_create(256);
 									else {
-										if (channel->played_patjump_order != sigrenderer->order)
+										//if (channel->played_patjump_order != sigrenderer->order)
 											bit_array_reset(channel->played_patjump);
 									}
 									channel->played_patjump_order = sigrenderer->order;
@@ -1318,7 +1318,7 @@
 		channel->sample = channel->instrument;
 		channel->truenote = channel->note;
 	}
-	if (!(channel->sample >= 1 && channel->sample <= sigdata->n_samples && (sigdata->sample[channel->sample-1].flags & IT_SAMPLE_EXISTS) /* && sigdata->sample[channel->sample-1].C5_speed*/))
+	if (!(channel->sample >= 1 && channel->sample <= sigdata->n_samples && (sigdata->sample[channel->sample-1].flags & IT_SAMPLE_EXISTS) && sigdata->sample[channel->sample-1].C5_speed))
 		channel->sample = 0;
 }
 
@@ -2673,7 +2673,7 @@
 		instrument_to_sample(sigdata, channel);
 		if (channel->note < 120) {
 			if ((sigdata->flags & IT_USE_INSTRUMENTS) && channel->sample == 0)
-				return 1;
+				it_retrigger_note(sigrenderer, channel); /* Stop the note */ /*return 1;*/
 			if (entry->mask & IT_ENTRY_INSTRUMENT)
 				get_default_volpan(sigdata, channel);
 		} else