I have finished my program and I found out a few things in the process.
It turns out that there is a bug in the original tetris code where it is impossible for there to be a garbage tile in the upper left corner in mode B.
It is not possible to use every seed after the first available one. This is because the code does not call its random function evenly. To solve this I ran a lua script that found all possible seeds waiting a maximum of 100 frames.
I then took these seeds and put them in a java program to generate the garbage pattern. I took all the seeds where (tiles % 4 == 2) and analyzed them for how many line clears it would take to clear the garbage pattern. My algorithm is not perfect (I didn't spend much time on it) and will not generate totally accurate numbers, but they usually are correct. Here are my results:
Seed=8e2d wait frames=0 # of tiles=46 clear anim=11
Seed=21eb wait frames=10 # of tiles=58 clear anim=11
Seed=9948 wait frames=12 # of tiles=54 clear anim=10
Seed=2652 wait frames=13 # of tiles=54 clear anim=10
Seed=a265 wait frames=14 # of tiles=54 clear anim=11
Seed=3a26 wait frames=15 # of tiles=54 clear anim=10
Seed=c744 wait frames=16 # of tiles=50 clear anim=10
Seed=1a0e wait frames=19 # of tiles=54 clear anim=11
Seed=4341 wait frames=20 # of tiles=54 clear anim=10
Seed=2028 wait frames=23 # of tiles=50 clear anim=10
Seed=840 wait frames=25 # of tiles=54 clear anim=10
Seed=9021 wait frames=27 # of tiles=54 clear anim=10
Seed=1e64 wait frames=34 # of tiles=50 clear anim=10
Seed=8f32 wait frames=35 # of tiles=54 clear anim=10
Seed=4b4f wait frames=42 # of tiles=54 clear anim=10
Seed=bdc4 wait frames=53 # of tiles=50 clear anim=9
Seed=2f71 wait frames=54 # of tiles=50 clear anim=9
Seed=e00b wait frames=57 # of tiles=58 clear anim=11
Seed=bd78 wait frames=60 # of tiles=62 clear anim=12
Seed=fe2b wait frames=62 # of tiles=54 clear anim=10
Seed=6773 wait frames=74 # of tiles=62 clear anim=12
Seed=14ce wait frames=75 # of tiles=50 clear anim=12
Seed=d14c wait frames=76 # of tiles=50 clear anim=12
Seed=e768 wait frames=79 # of tiles=58 clear anim=12
Seed=8c37 wait frames=86 # of tiles=50 clear anim=11
Seed=a376 wait frames=90 # of tiles=50 clear anim=11
Seed=d546 wait frames=91 # of tiles=54 clear anim=12
Seed=724e wait frames=94 # of tiles=54 clear anim=11
Seed=ce49 wait frames=95 # of tiles=54 clear anim=12
Seed=79c9 wait frames=96 # of tiles=50 clear anim=11
Seed=c3ce wait frames=97 # of tiles=54 clear anim=11
Note that the 2652 seed was that seed that baxter used for his TAS.
Seed=8e2d wait frames=0 # of tiles=46 clear anim=11 benefits=Has zero wait frames
Seed=21eb wait frames=10 # of tiles=58 clear anim=11 benefits=Starts with 58 garbage tiles
Seed=9948 wait frames=12 # of tiles=54 clear anim=10 benefits=Has 10 line animations and low wait frames
Seed=2652 wait frames=13 # of tiles=54 clear anim=10 benefits=Has 10 line animations and low wait frames
Seed=bdc4 wait frames=53 # of tiles=50 clear anim=9 benefits=Has 9 line animations but more wait frames
Seed=2f71 wait frames=54 # of tiles=50 clear anim=9 benefits=Has 9 line animations but more wait frames
These are probably the fastest six.
I have also made the java program display an image of what it would look like. Here are the six seeds above with the lowest wait frames first:
EDIT: Here is my java code for generating the garbage pattern. It isn't written the best but it works.
void generateSeed() {
for(curRow = 0x0C; curRow!=0; curRow--){
rowOffsetIndex = (byte) (0x0C - curRow);
for(curColumn = 0x09; curColumn>=0; curColumn--){
rand();
wellMem[10*rowOffsetIndex + curColumn] = (byte) tileArray[rand17 & 0x07];
}
do{
rand();
}while((rand17 & 0x0F) >= 0x0A);
wellMem[10*rowOffsetIndex + (rand17 & 0x0F)] = 0;
rand();
}
wellMem[0] = 0;
}
void rand() {
rand = ((((rand >> 9) & 1) ^ ((rand >> 1) & 1)) << 15) | (rand >> 1);
rand17 = (byte) (rand >> 8);
}