In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: forked from: WORLD 1-2 Interactive + Sounds

Using sounds from: http://wonderfl.net/code/9d89bb207b020e15e3fa88bd6125dbc2e83a950b
Controls: Arrow Keys
/**
 * Copyright runo ( http://wonderfl.net/user/runo )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/b1zY
 */

// forked from runouw's forked from: WORLD 1-2 Interactive
// forked from quqjp's WORLD 1-2
// Using sounds from: http://wonderfl.net/code/9d89bb207b020e15e3fa88bd6125dbc2e83a950b
// Controls: Arrow Keys
package 
{
	
       /*
       * おなじみ 
       *
       * スーパー○リオ WORLD:1-2 のブルブルきのこ
       *
       * ただ、それだけですw
       *
       * http://blog.quq.jp/
       * http://twitter.com/quqjp
       *
       * あとで 上のコイン、?ボック をキラキラアニメするようにする
       * 音が付いたら最高なんだけどなぁ。。。
       */

	import flash.display.Sprite;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.StageQuality;
	import flash.events.*;
	import flash.geom.Matrix;
	import caurina.transitions.Tweener;
	import flash.display.StageScaleMode;
    import flash.ui.*;
    //
    import org.si.sion.*;
    //
	
	[SWF(width = "465", height = "465", backgroundColor = "0xCCCCCC", frameRate = "30")]
	public class  FlashTest extends Sprite
	{
		public var driver:SiONDriver = new SiONDriver();
		
 		public var sounds:SuperMarioSound = new SuperMarioSound();   
		
		private var canvasBitmapData:BitmapData;
		private var canvasBitmap:Bitmap;
		private var layerlist:Array = [];

                private var MERIO:MyBitmap;
                private var CharXspeed:Number = 0;
                private var CharYspeed:Number = 0;
				private var CharX:Number = 0;
                private var CharY:Number = 0;
                private var CharGround:Boolean = true;
				private var CharDirection:int = 1;
                
                private var map:Array = [
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,5,5,5,5,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                1,0,0,4,3,3,3,4,3,0,0,0,0,0,0,
                1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,
                1,1,0,0,0,0,0,0,0,0,0,0,2,0,2,
                1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
                1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
                ];
                private var mapWidth:uint = 14;
                private var mapHeight:uint = 15;
                private var mapData:Array = new Array();
		
		public function FlashTest() {
		    this.stage.scaleMode = StageScaleMode.NO_SCALE;
			this.stage.quality = StageQuality.LOW;
			build();
			
			driver.bpm = 200;
			driver.play(sounds.mario2);
		}
		
		public function build():void {
			
			canvasBitmapData = new BitmapData(256, 224, false, 0x000000);
    			canvasBitmap = new Bitmap(canvasBitmapData); 
			canvasBitmap.scaleX = canvasBitmap.scaleY = 2;
			this.addChild(canvasBitmap);

                layerlist = [];
			

/*
		var YUKA:MyTilingBitmap	= new MyTilingBitmap(XX.yuka.w, XX.yuka.h, XX.yuka.cl, XX.yuka.map, new Matrix(1, 0, 0, 1, 0, 200), 16, 2);
		var ASSET0:MyBitmap = new MyBitmap(XX.asset0.w, XX.asset0.h, XX.asset0.cl, XX.asset0.map, new Matrix(1, 0, 0, 1, 24, 8));
		var COIN:MyBitmap = new MyBitmap(XX.coin_f0.w, XX.coin_f0.h, XX.coin_f0.cl, XX.coin_f0.map, new Matrix(1, 0, 0, 1, 90, 16));
		var QRYBO:MyBitmap = new MyBitmap(XX.tn_f0.w, XX.tn_f0.h, XX.tn_f0.cl, XX.tn_f0.map, new Matrix(1, 0, 0, 1, 90, 185));
		var BLOCKA:MyBitmap = new MyBitmap(XX.block.w, XX.block.h, XX.block.cl, XX.block.map, new Matrix(1, 0, 0, 1, 181, 184));
		var BLOCKB:MyTilingBitmap = new MyTilingBitmap(XX.block.w, XX.block.h, XX.block.cl, XX.block.map, new Matrix(1, 0, 0, 1, 213, 168), 1, 2);
		var BLOCKC:MyTilingBitmap = new MyTilingBitmap(XX.block.w, XX.block.h, XX.block.cl, XX.block.map, new Matrix(1, 0, 0, 1, 245, 152), 1, 3);
		var BLOCK2:MyTilingBitmap = new MyTilingBitmap(XX.block2.w, XX.block2.h, XX.block2.cl, XX.block2.map, new Matrix(1, 0, 0, 1, 16, 24), 15, 1);
		var BLOCK3:MyTilingBitmap = new MyTilingBitmap(XX.hb_f0.w, XX.hb_f0.h, XX.hb_f0.cl, XX.hb_f0.map, new Matrix(1, 0, 0, 1, 69, 144), 4, 1);
		var BLOCK4:MyBitmap = new MyBitmap(XX.empblock.w, XX.empblock.h, XX.empblock.cl, XX.empblock.map, new Matrix(1, 0, 0, 1, 53, 144));
		var BLOCK5:MyBitmap = new MyBitmap(XX.empblock.w, XX.empblock.h, XX.empblock.cl, XX.empblock.map, new Matrix(1, 0, 0, 1, 117, 144));
		var BLOCK6:MyBitmap = new MyBitmap(XX.hb_f0.w, XX.hb_f0.h, XX.hb_f0.cl, XX.hb_f0.map, new Matrix(1, 0, 0, 1, 133, 144));
		var KINOKO:MyBitmap = new MyBitmap(XX.kinoko.w, XX.kinoko.h, XX.kinoko.cl, XX.kinoko.map, new Matrix(1, 0, 0, 1, 196, 185));
*/
              
                        
                        
		    MERIO = new MyBitmap(XX.merio.w, XX.merio.h, XX.meriojump.cl, XX.merio.map, new Matrix(1, 0, 0, 1, 101, 128));
                        layerlist.push(MERIO);
						
			CharX = 0;
            CharY = 0;
                        
                        
			/*
			layerlist.push(YUKA);
			layerlist.push(ASSET0);
			layerlist.push(COIN);
			layerlist.push(QRYBO);
			layerlist.push(BLOCKA);
			layerlist.push(BLOCKB);
			layerlist.push(BLOCKC);
			layerlist.push(BLOCK2);
			layerlist.push(BLOCK3);
			layerlist.push(BLOCK4);
			layerlist.push(BLOCK5);
			layerlist.push(BLOCK6);
			layerlist.push(KINOKO);
                        */
                        var tileNum:int;
                        var j:int = 0;
			for(var i:int = 0;i<mapWidth;i++){
                            for(var h:int = 0;h<mapHeight;h++){
                                
                                tileNum = map[j];
                                if(tileNum == 1){
                                    mapData[j] = new MyBitmap(XX.yuka.w, XX.yuka.h, XX.yuka.cl, XX.yuka.map, new Matrix(1, 0, 0, 1, h*16, i*16));
                                
                                    layerlist.push(mapData[j]);
                                }
                                if(tileNum == 2){
                                     mapData[j] = new MyBitmap(XX.block.w, XX.block.h, XX.block.cl, XX.block.map, new Matrix(1, 0, 0, 1, h*16, i*16));
                                    
                                    layerlist.push(mapData[j]);
                                }
                                if(tileNum == 3){
                                     mapData[j] = new MyBitmap(XX.hb_f0.w, XX.hb_f0.h, XX.hb_f0.cl, XX.hb_f0.map, new Matrix(1, 0, 0, 1, h*16, i*16));
                                    
                                    layerlist.push(mapData[j]);
                                    
                                }
                                if(tileNum == 4){
                                     mapData[j] = new MyBitmap(XX.empblock.w, XX.empblock.h, XX.empblock.cl, XX.empblock.map, new Matrix(1, 0, 0, 1, h*16, i*16));
                                     
                                    layerlist.push(mapData[j]);
                                    
                                }
                                if(tileNum == 5){
                                     mapData[j] = new MyBitmap(XX.block2.w, XX.block2.h, XX.block2.cl, XX.block2.map, new Matrix(1, 0, 0, 1, h*16, i*16));
                                    
                                     layerlist.push(mapData[j]);
                                    
                                }
                                
                                j++;
                            }
                        }
                var ASSET0:MyBitmap = new MyBitmap(XX.asset0.w, XX.asset0.h, XX.asset0.cl, XX.asset0.map, new Matrix(1, 0, 0, 1, 24, 8));
                    layerlist.push(ASSET0);
                        
                        
                var COIN:MyBitmap = new MyBitmap(XX.coin_f0.w, XX.coin_f0.h, XX.coin_f0.cl, XX.coin_f0.map, new Matrix(1, 0, 0, 1, 90, 16));
                    layerlist.push(COIN);
			
			startRender()
		}
		
		
		public function startRender():void {
                        stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
                        stage.addEventListener(KeyboardEvent.KEY_UP, keyReleased);
    
			this.addEventListener(Event.ENTER_FRAME, enterFrame);

                              
                }
		
		public function stopRender():void {
			
		}
		public function enterFrame(e:Event):void {
                    CharXspeed *= 0.7;
                    if(isDown(Keyboard.RIGHT)){
                        CharXspeed += (10-CharXspeed)/5;
                        CharDirection = 1;
                    }
                    if(isDown(Keyboard.LEFT)){
                        CharXspeed += (-10-CharXspeed)/5;
                        CharDirection = -1;
                    }
                    if(isDown(Keyboard.UP)){
                        if(CharGround == true && CharYspeed >= 0){
                        	   driver.sequenceOn(sounds.jump, null, 0, 0, 0)
                        	
                            CharYspeed = -7;
                        }else if(CharYspeed < 0){
                            CharYspeed -= 0.5;
                        }
                    }
                    var tilex:int = Math.round(CharX/16);
                    var tilex2:int = Math.round((CharX-5)/16);
                    var tilex3:int = Math.round((CharX+5)/16);
                    var tiley:int = Math.round((CharY-8)/16);
                    if(map[tilex+(tiley+1)*mapHeight] !== 0 || map[tilex2+(tiley+1)*mapHeight] !== 0 || map[tilex3+(tiley+1)*mapHeight] !== 0){
                        CharGround = true;
                        CharY = Math.min(CharY,int(CharY/16)*16);
                        CharYspeed=Math.min(0,CharYspeed);
                    }else{
                        CharGround = false;
                        CharYspeed++
                        CharYspeed = Math.min(CharYspeed,7);
                    }
                    
                    
                    tiley = Math.round((CharY-8+CharYspeed)/16);
                    if(map[tilex+(tiley)*mapHeight] !== 0){
                        //CharY = Math.max(CharY,int(CharY/16)*16+16);
                        CharYspeed = Math.max(CharYspeed,0);
                         if(map[tilex+(tiley)*mapHeight] == 2 || map[tilex+(tiley)*mapHeight] == 3 || map[tilex+(tiley)*mapHeight] == 4){
                        	  driver.sequenceOn(sounds.dom, null, 0, 0, 0);
                        }
                        if(map[tilex+(tiley)*mapHeight] == 5){
                            map[tilex+(tiley)*mapHeight] = 0;
                            
                            mapData[tilex+(tiley)*mapHeight].map = XX.blank.map;
                            mapData[tilex+(tiley)*mapHeight].colorlist = XX.blank.cl;
                            mapData[tilex+(tiley)*mapHeight].build();
                            // XX.empblock.w, XX.empblock.h, XX.empblock.cl, XX.empblock.map
                            driver.sequenceOn(sounds.block, null, 0, 0, 0);
                            
                        }
                        if(map[tilex+(tiley)*mapHeight] == 3){
                            map[tilex+(tiley)*mapHeight] = 4;
                            
                            mapData[tilex+(tiley)*mapHeight].map = XX.empblock.map;
                            mapData[tilex+(tiley)*mapHeight].colorlist = XX.empblock.cl;
                            mapData[tilex+(tiley)*mapHeight].build();
                            // XX.empblock.w, XX.empblock.h, XX.empblock.cl, XX.empblock.map
                        	   driver.sequenceOn(sounds.cion, null, 0, 0, 0);
                        
                        }
                    }
                    tiley = Math.round((CharY-8)/16);
                    tilex = Math.floor(CharX/16);
                    if(map[tilex+1+tiley*mapHeight] !== 0){
                        CharX = Math.min(CharX,int(CharX/16)*16+3);
                        CharXspeed = Math.min(CharXspeed,0);
                        
                    }
                    tilex = Math.ceil(CharX/16);
                    if(map[tilex-1+tiley*mapHeight] !== 0){
                        CharX = Math.max(CharX,int(CharX/16)*16+13);
                        CharXspeed = Math.max(CharXspeed,0);
                        
                    }
                    if(CharGround == false){
                        MERIO.map = XX.meriojump.map;
                        MERIO.colorlist = XX.meriojump.cl;
                        MERIO.makeBitmapData();
                        MERIO.build();
                    
                    }else{
                        MERIO.map = XX.merio.map;
                        MERIO.colorlist = XX.merio.cl;
                        MERIO.makeBitmapData();
                        MERIO.build();
                    }
                    CharX += CharXspeed;
                    CharY += CharYspeed;
					if(CharDirection > 0){
						MERIO.matrix.tx=CharX;
					}else{
						MERIO.matrix.tx=CharX+16;
					}
                     MERIO.matrix.ty=CharY;
				    MERIO.matrix.a = CharDirection
                    //
                    render();
                }
		public function render():void {
			
			canvasBitmapData.fillRect(canvasBitmapData.rect, 0x000000);
			
			var li:Array = layerlist;
			var l:uint = li.length;
			for (var i:uint = 0; i < l; i++) {
				li[i].render();
				canvasBitmapData.draw(li[i],li[i].matrix)
			}
			
		}


                

		
	}
	
}

import flash.display.Bitmap;
import flash.display.BitmapData;
import adobe.utils.CustomActions;
import flash.display.Graphics;
import flash.display.Sprite;
import flash.events.*;
import flash.ui.*;
import flash.geom.Matrix;


var keysDown:Object = new Object();
function isDown(keyCode:uint):Boolean {
    return Boolean(keyCode in keysDown);
}
function keyPressed(event:KeyboardEvent):void {
    keysDown[event.keyCode] = true;
}
function keyReleased(event:KeyboardEvent):void {
    if (event.keyCode in keysDown) {
        delete keysDown[event.keyCode];
    }
}

//基本Bitmap
class MyBitmap extends Bitmap
{
			
	public var sizew:uint;
	public var sizeh:uint;
	public var colorlist:Array;
	public var map:Array;
	public var matrix:Matrix;
        public var id:int;
			
	public function MyBitmap(sizew:uint, sizeh:uint, colorlist:Array, map:Array, matrix:Matrix) {
		this.sizew = sizew;
		this.sizeh = sizeh;
		this.colorlist = colorlist;
		this.map = map;
		this.matrix = matrix;
		makeBitmapData();
		this.build();
	}
			
	public function makeBitmapData():void {
		this.bitmapData = new BitmapData(this.sizew, this.sizeh, true, 0x00000000);		
	}		
			
	public function build():void {
		this.bitmapData.unlock();
		var cli:Array = this.colorlist;
		var li:Array = this.map;
		var l:uint = li.length;
		for (var i:uint = 0; i < l; i++) {
			var x:uint = i - (Math.floor(i / sizew) * sizew);
			var y:uint = Math.floor(i / sizew);
			if (li[i] != 0) this.bitmapData.setPixel32(x, y, cli[li[i]]);
		}
		this.bitmapData.lock();
	}
		
	public function render():void {
			
	}
		
}
/*
//ぶるるBitmap
class MyBuru2Bitmap extends MyBitmap
{
	public function MyBuru2Bitmap(sizew:uint, sizeh:uint, colorlist:Array, map:Array , matrix:Matrix) {
		super(sizew, sizeh, colorlist, map, matrix);
	}
	
	private var flg:Boolean = false;
	
	public override function render():void {
		flg ? this.matrix.tx -= 2 : this.matrix.tx += 2;
		flg = !flg;
	}
	
}
*/
//タイリングBitmap
class MyTilingBitmap extends MyBitmap
{
	private var tilewc:uint;
	private var tilehc:uint;
	
	public function MyTilingBitmap(sizew:uint, sizeh:uint, colorlist:Array, map:Array , matrix:Matrix, tilewc:uint = 1, tilehc:uint = 1) {
		this.tilewc = tilewc;
		this.tilehc = tilehc;
		super(sizew, sizeh, colorlist, map, matrix);
	}
	
	public override function makeBitmapData():void {
		this.bitmapData = new BitmapData(this.sizew * tilewc, this.sizeh * tilehc, true, 0x00000000);
	}

	public override function build():void{
		super.build();
		
		if(tilewc>1){
			var ma:Matrix = new Matrix();
			ma.translate(this.sizew,0)
			this.bitmapData.draw(this, ma)	//?
		}
		
		if(tilehc>1){
			ma = new Matrix();
			ma.translate(0,this.sizeh)
			this.bitmapData.draw(this, ma)	//?
		}
	}
}

//アニメBitmap
//未完成
/*class MyAnimBitmap extends Bitmap
{
	public var sizew:uint;
	public var sizeh:uint;
	public var matrix:Matrix;
	
	private var framlist:Array;
	private var frmcnt:uint = 0;
	private var frmcntmax:uint = 0;
		
	public function MyAnimBitmap(sizew:uint, sizeh:uint, matrix:Matrix) {
		this.sizew = sizew;
		this.sizeh = sizeh;
		this.matrix = matrix;
		framlist = [];
		makeBitmapData();
		this.build();
	}
		
	public function makeBitmapData() {
		this.bitmapData = new BitmapData(this.sizew, this.sizeh, true, 0x00000000);		
	}
	
	public function addFrame(param:MyBitmap) {
		framlist.push(param);
		frmcntmax = framlist.length;
	}
		
	public function build() {
		this.bitmapData.unlock();
		this.bitmapData.lock();
	}
		
	public function render() {
	}
}*/


//data
class XX 
{

static public var kinoko:Object = {
w:16,
h:16,
map:[0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,0,0,0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,0,0,0,0,0,1,1,1,1,1,1,1,2,2,2,1,1,0,0,0,1,1,2,2,2,1,1,1,1,1,1,1,1,1,0,0,1,2,2,2,2,2,1,1,1,1,1,1,1,1,0,1,1,2,2,2,2,2,1,1,1,1,1,2,2,1,1,1,1,2,2,2,2,2,1,1,1,1,1,2,2,2,1,1,1,1,2,2,2,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,2,2,2,3,3,3,3,3,3,2,2,2,1,0,0,0,0,0,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,3,3,3,3,3,3,1,3,0,0,0,0,0,0,0,0,3,3,3,3,3,3,1,3,0,0,0,0,0,0,0,0,0,3,3,3,3,1,3,0,0,0,0,0],
cl:[0xFFff0000, 0xFFffa000, 0xFFe05000, 0xFFffffff]
};

static public var merio:Object = {
w:16,
h:16,
map:[0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,2,2,2,3,3,2,3,0,0,0,0,0,0,0,0,2,3,2,3,3,3,2,3,3,3,0,0,0,0,0,0,2,3,2,2,3,3,3,2,3,3,3,0,0,0,0,0,2,2,3,3,3,3,2,2,2,2,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,2,2,1,2,2,2,0,0,0,0,0,0,0,0,0,2,2,2,1,2,2,1,2,2,2,0,0,0,0,0,2,2,2,2,1,1,1,1,2,2,2,2,0,0,0,0,3,3,2,1,3,1,1,3,1,2,3,3,0,0,0,0,3,3,3,1,1,1,1,1,1,3,3,3,0,0,0,0,3,3,1,1,1,1,1,1,1,1,3,3,0,0,0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,0,0,0,2,2,2,0,0,0,0,2,2,2,0,0,0,0,0,2,2,2,2,0,0,0,0,2,2,2,2,0,0,0],
cl:[0xFFff0000, 0xFFe05000, 0xFF888800, 0xFFffa000]
};

static public var meriojump:Object = {
w:16,
h:16,
map:[
0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,
0,0,0,0,0,1,1,1,1,1,1,0,3,3,3,3,
0,0,0,0,1,1,1,1,1,1,1,1,1,1,3,3,
0,0,0,0,2,2,2,2,3,3,2,3,2,2,2,2,
0,0,0,2,2,3,2,3,3,3,2,3,3,2,2,2,
0,0,0,2,2,3,3,3,3,3,3,2,3,3,3,2,
0,0,0,2,2,3,3,3,3,3,2,2,2,2,2,0,
0,0,0,0,0,3,3,3,3,3,3,3,3,2,0,0,
0,0,2,2,2,2,2,1,2,2,2,1,2,0,0,0,
0,2,2,2,2,2,2,2,1,2,2,2,1,0,2,2,
3,3,3,2,2,2,2,2,1,1,1,1,1,0,2,2,
3,3,3,3,1,1,1,2,1,3,1,1,3,1,2,2,
0,3,3,2,1,1,1,1,1,1,1,1,1,1,2,2,
0,0,2,2,2,1,1,1,1,1,1,1,1,1,2,2,
0,2,2,2,1,1,1,1,1,1,1,0,0,0,0,0,
0,2,2,1,1,1,1,1,0,0,0,0,0,0,0,0,],
cl:[0xFFff0000, 0xFFe05000, 0xFF888800, 0xFFffa000]
};

static public var coin_f0:Object = {
w:5,
h:8,
map:[0,1,1,2,0,1,1,1,1,2,1,1,1,1,2,1,1,1,1,2,1,1,1,1,2,1,1,1,1,2,2,1,1,2,3,0,2,2,3,0],
cl:[0xFFff0000, 0xFFffa000, 0xFF0, 0xFFc07000]
};

static public var coin_f1:Object = {
w:5,
h:8,
map:[0,1,1,2,0,1,1,1,1,2,1,1,1,1,2,1,1,1,1,2,1,1,1,1,2,1,1,1,1,2,2,1,1,2,1,0,2,2,1,0],
cl:[0xFFff0000, 0xFFc07000, 0xFF0]
};

static public var coin_f2:Object = {
w:5,
h:8,
map:[0,1,1,2,0,1,1,1,1,2,1,1,1,1,2,1,1,1,1,2,1,1,1,1,2,1,1,1,1,2,2,1,1,2,3,0,2,2,3,0],
cl:[0xFFff0000,0xFF784000,0xFF0,0xFFc07000]
};

static public var block:Object = {
w:16,
h:16,
map:[1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,2,1,2,2,2,2,2,2,2,2,2,2,2,2,3,3,2,2,1,2,2,2,2,2,2,2,2,2,2,3,3,3,2,2,2,1,2,2,2,2,2,2,2,2,3,3,3,3,2,2,2,2,1,1,1,1,1,1,1,1,3,3,3,3,2,2,2,2,1,1,1,1,1,1,1,1,3,3,3,3,2,2,2,2,1,1,1,1,1,1,1,1,3,3,3,3,2,2,2,2,1,1,1,1,1,1,1,1,3,3,3,3,2,2,2,2,1,1,1,1,1,1,1,1,3,3,3,3,2,2,2,2,1,1,1,1,1,1,1,1,3,3,3,3,2,2,2,2,1,1,1,1,1,1,1,1,3,3,3,3,2,2,2,2,1,1,1,1,1,1,1,1,3,3,3,3,2,2,2,3,3,3,3,3,3,3,3,3,1,3,3,3,2,2,3,3,3,3,3,3,3,3,3,3,3,1,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1],
cl:[0xFFff0000, 0xFF4090c0, 0xFFa0fff0, 0xFF000000]
};

static public var block2:Object = {
w:16,
h:15,
map:[1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1],
cl:[0xFFff0000,0xFF4090c0,0xFF000000]
};

static public var empblock:Object = {
w:16,
h:16,
map:[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,1,2,2,2,2,2,2,2,2,2,2,1,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,1,2,2,2,2,2,2,2,2,2,2,1,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
cl:[0xFFff0000, 0xFF4090c0, 0xFFc07000]
};

static public var yuka:Object = {
w:16,
h:16,
map:[1,2,2,2,2,1,1,2,2,2,2,2,2,2,2,3,2,1,1,1,1,3,2,1,1,1,1,1,1,1,1,3,2,1,1,1,1,3,2,1,1,1,1,1,1,1,1,3,2,1,1,1,1,3,2,1,1,1,1,1,1,1,1,3,2,3,1,1,1,3,2,1,1,1,1,1,1,1,1,3,1,3,3,3,3,1,2,1,1,1,1,1,1,1,1,3,2,2,2,2,2,3,2,1,1,1,1,1,1,1,1,3,2,1,1,1,1,3,2,1,1,1,1,1,1,1,1,3,2,1,1,1,1,3,2,1,1,1,1,1,1,1,1,3,2,1,1,1,1,3,2,1,1,1,1,1,1,1,1,3,1,1,1,1,1,3,3,3,1,1,1,1,1,1,3,2,1,1,1,1,1,3,2,2,3,3,1,1,1,1,3,2,1,1,1,1,1,3,2,1,2,2,3,3,3,3,2,1,1,1,1,1,1,3,2,1,1,1,2,2,2,3,2,1,1,1,1,1,3,3,2,1,1,1,1,1,1,3,2,1,3,3,3,3,3,1,1,3,3,3,3,3,3,1,2,3],
cl:[0xFFff0000, 0xFF4090c0, 0xFFa0fff0, 0xFF000000]
};

static public var asset0:Object = {
w:207,
h:15,
map:[1,1,0,0,0,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,1,1,0,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,0,0,1,1,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,1,1,1,0,1,1,1,0,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0,1,1,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,0,0,1,1,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,1,1,1,1,1,1,1,0,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,0,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,0,1,0,1,1,0,1,1,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1,1,0,0,0,1,1,0,1,1,1,1,1,0,0,0,0,1,1,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,1,1,0,1,0,1,1,0,1,1,0,0,0,0,0,1,1,0,0,0,1,1,0,1,1,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,0,1,1,0,0,0,1,1,0,1,1,0,1,1,1,0,0,0,1,1,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,1,1,0,0,0,0,0,1,1,0,0,0,1,1,0,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,1,1,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,1,1,1,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,1,1,0,1,1,0,0,0,1,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,0,0,0,1,1,1,0,0,1,0,0,1,1,0,0,0,1,0,0,1,1,0,0,0,1,0,0,1,1,0,0,0,1,0,0,1,1,0,0,0,1,0,0,1,1,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,0,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,0,1,1,0,0,1,0,0,0,1,1,0,0,1,0,0,0,1,1,0,0,1,0,0,0,1,1,0,0,1,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,1,0,0,1,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0],
cl:[0xFFff0000, 0xFFffffff]
};

static public var tn_f0:Object = {
w:33,
h:16,
map:[0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,2,2,1,1,1,1,1,1,2,2,1,0,0,0,0,0,1,2,2,1,1,1,1,1,1,2,2,1,0,0,0,1,1,1,3,2,1,1,1,1,2,3,1,1,1,0,0,0,1,1,1,3,2,1,1,1,1,2,3,1,1,1,0,0,1,1,1,3,2,2,2,2,2,2,3,1,1,1,0,0,0,1,1,1,3,2,2,2,2,2,2,3,1,1,1,0,1,1,1,1,3,2,3,1,1,3,2,3,1,1,1,1,0,1,1,1,1,3,2,3,1,1,3,2,3,1,1,1,1,1,1,1,1,3,3,3,1,1,3,3,3,1,1,1,1,0,1,1,1,1,3,3,3,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,3,3,3,3,3,3,1,1,1,1,0,0,0,1,1,1,1,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,0,0,0,0,0,0,2,2,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,2,2,3,3,3,3,3,3,3,3,0,0,0,0,0,2,2,2,2,2,3,3,3,3,3,2,2,0,0,0,0,0,2,2,2,2,2,3,3,3,3,3,2,2,0,0,0,0,2,2,2,2,2,2,3,3,3,2,2,2,0,0,0,0,0,2,2,2,2,2,2,3,3,3,2,2,2,0,0,0,0,0,2,2,2,2,2,1,3,2,2,2,0,0,0,0,0,0,0,2,2,2,2,2,3,3,2,2,2,0,0,0,0],
cl:[0xFFff0000, 0xFF4090c0, 0xFF305080, 0xFFa0fff0]
};

static public var tn_f1:Object = {
w:33,
h:16,
map:[0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,2,2,1,1,1,1,1,1,2,2,1,0,0,0,0,1,2,2,1,1,1,1,1,1,2,2,1,0,0,0,0,1,1,1,3,2,1,1,1,1,2,3,1,1,1,0,0,1,1,1,3,2,1,1,1,1,2,3,1,1,1,0,0,0,1,1,1,3,2,2,2,2,2,2,3,1,1,1,0,0,1,1,1,3,2,2,2,2,2,2,3,1,1,1,0,0,1,1,1,1,3,2,3,1,1,3,2,3,1,1,1,1,1,1,1,1,3,2,3,1,1,3,2,3,1,1,1,1,0,1,1,1,1,3,3,3,1,1,3,3,3,1,1,1,1,1,1,1,1,3,3,3,1,1,3,3,3,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,3,3,3,3,3,3,1,1,1,1,0,0,1,1,1,1,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,2,2,0,0,0,0,0,0,3,3,3,3,3,3,3,3,2,2,0,0,0,0,0,0,2,2,3,3,3,3,3,2,2,2,2,2,0,0,0,0,2,2,3,3,3,3,3,2,2,2,2,2,0,0,0,0,0,2,2,2,3,3,3,2,2,2,2,2,2,0,0,0,0,2,2,2,3,3,3,2,2,2,2,2,2,0,0,0,0,0,0,2,2,2,3,3,2,2,2,2,2,0,0,0,0,0,0,2,2,2,3,3,2,2,2,2,2,0,0,0],
cl:[0xFFff0000,0xFF4090c0,0xFF305080,0xFFa0fff0]
};

static public var hb_f0:Object = {
w:16,
h:16,
map:[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,1,2,3,2,2,2,2,2,2,2,2,2,2,3,2,3,1,2,2,2,2,1,1,1,1,1,2,2,2,2,2,3,1,2,2,2,1,1,3,3,3,1,1,2,2,2,2,3,1,2,2,2,1,1,3,2,2,1,1,3,2,2,2,3,1,2,2,2,1,1,3,2,2,1,1,3,2,2,2,3,1,2,2,2,2,3,3,2,1,1,1,3,2,2,2,3,1,2,2,2,2,2,2,1,1,3,3,3,2,2,2,3,1,2,2,2,2,2,2,1,1,3,2,2,2,2,2,3,1,2,2,2,2,2,2,2,3,3,2,2,2,2,2,3,1,2,2,2,2,2,2,1,1,2,2,2,2,2,2,3,1,2,2,2,2,2,2,1,1,3,2,2,2,2,2,3,1,2,3,2,2,2,2,2,3,3,2,2,2,3,2,3,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3],
cl:[0xFFff0000, 0xFFc07000, 0xFFffa000, 0xFF4090c0]
};

static public var hb:Object = {
w:16,
h:16,
map:[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,2,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,1,1,2,1,1,1,1,1,2,2,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2],
cl:[0xFFff0000,0xFFc07000,0xFF4090c0]
};

static public var hb_f2:Object = {
w:16,
h:16,
map:[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,1,2,3,2,2,2,2,2,2,2,2,2,2,3,2,3,1,2,2,2,2,1,1,1,1,1,2,2,2,2,2,3,1,2,2,2,1,1,3,3,3,1,1,2,2,2,2,3,1,2,2,2,1,1,3,2,2,1,1,3,2,2,2,3,1,2,2,2,1,1,3,2,2,1,1,3,2,2,2,3,1,2,2,2,2,3,3,2,1,1,1,3,2,2,2,3,1,2,2,2,2,2,2,1,1,3,3,3,2,2,2,3,1,2,2,2,2,2,2,1,1,3,2,2,2,2,2,3,1,2,2,2,2,2,2,2,3,3,2,2,2,2,2,3,1,2,2,2,2,2,2,1,1,2,2,2,2,2,2,3,1,2,2,2,2,2,2,1,1,3,2,2,2,2,2,3,1,2,3,2,2,2,2,2,3,3,2,2,2,3,2,3,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3],
cl:[0xFFff0000, 0xFFc07000, 0xFF784000, 0xFF4090c0]
};
static public var blank:Object = {
w:16,
h:16,
map:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
cl:[0x00000000, 0x00000000, 0x00000000, 0x00000000]
};

}

import org.si.sion.*;

// this instanse have to be created after creating SiONDrivers instance.
// All SiONData are in bpm of 200.
class SuperMarioSound {
    public var nosound:SiONData;
    // bgm
    public var mario1:SiONData;
    public var mario2:SiONData;
    public var mario2start:SiONData;
    public var mario4:SiONData;
    public var mario22:SiONData;
    public var star:SiONData;
    public var areaclear:SiONData;
    public var allclear:SiONData;
    public var hurryup:SiONData;
    public var stageclear:SiONData;
    public var miss:SiONData;
    public var gameover:SiONData;
    
    // sound effect
    public var block:SiONData;
    public var item:SiONData;
    public var iteml:SiONData;
    public var powerup:SiONData;
    public var jump:SiONData;
    public var jumpl:SiONData;
    public var poke:SiONData;
    public var fumi:SiONData;
    public var dom:SiONData;
    public var fire:SiONData;
    public var cion:SiONData;
    public var extend:SiONData;
    public var warp:SiONData;
    public var goal:SiONData;
    public var bonus:SiONData;
    public var firework:SiONData;
    
    
    function SuperMarioSound() {
        var driver:SiONDriver = SiONDriver.mutex;
        var header:String, mml:String;
        header = "t200;#EFFECT0{speaker20};";
        
        // The following 4 lines are avoiding bugs in curren version. 
        // In this version, the sequenceOn() function cannot refer tables in the SiONData, 
        // so we have to define all tables on main SiONData played by SiONDriver.play().
        // In new version(0.57), the sequenceOn() function can refer the tables in SiONData and following mmls are not requeired.
        header += "#TABLE0{(0,128)8};#TABLE1{(0,384)8};#TABLE2{(128,0)12,0};#TABLE3{(90,934)12};";
        header += "#TABLE4{(0,-1280)4};#TABLE5{(0,-1280)6};#TABLE6{(0,-2560)6};#TABLE7{(0,36)36};";
        header += "#TABLE8{14,0,13,0,13,0,12,0,12,,11,0,9,0,9,0,8,0,8,0,7,0,6,0,6,0,5,0,5}*8+31;";
        header += "#TABLE9{12,6,13,8,13,3,9,10,15,12,6,11,13,14};";
        
        nosound = driver.compile(header);
        
        // MML from TSSCP thread dtm 1-564 modifyed
        mml = header;
        mml += "#A=o6eerercer grrr>grrr;";
        mml += "#B=o6[2crr>grrer rarbra+ar gr24<er24gr24arfg rercd>brr];";
        mml += "#C=o6[2[2rrgf+fd+re r>g+a<cr>a<cd |rrgf+fd+re r<crccrrr]>rrd+rrdrr crr2.];";
        mml += "#D=o6[2ccrcrcdr ecr>agrrr |<ccrcrcde r1];";
        mml += "#E=o6[2ecr>grrg+r a<frf>arrr |br24<ar24ar24ar24gr24fr24 ecr>agrrr]b<frffr24er24dr24 crr2.;";
        mml += "#F=o5f+f+rf+rf+f+r brr2.;";
        mml += "#G=o5[2errcrr>gr r<crdrc+cr cr24gr24br24<cr>ab rarefdrr];";
        mml += "#H=o6[2[2rred+d>br<c r>efgrcef |<rred+d>br<c rfrffrrr]>rrg+rrfrr err2.<];";
        mml += "#I=o5[2g+g+rg+rg+a+r gerecrrr |g+g+rg+rg+a+g r1];";
        mml += "#J=o6[2c>arerrer f<crc>frrr |gr24<fr24fr24fr24er24dr24 c>arferrr]g<drddr24cr24>br24 gerecrrr;";
        mml += "#K=o4ddrdrddr <grrr>grrr;";
        mml += "#L=o4[2grrerrcr rfrgrf+fr er24<cr24er24frde rcr>abgrr];"
        mml += "#M=o4[2[2crrgrr<cr >frr<ccr>fr |crrerrg<c r<grggr>>gr]crg+rra+rr <crr>ggrcr];";
        mml += "#N=o3[3g+rr<d+rrg+r grrcrr>gr];";
        mml += "#O=o4[2crrf+gr<cr >frfr<cc>fr |drrfgrbr grgr<cc>gr]grrggr24ar24br24 <cr>grcrrr;";
        mml += "#X=v15o1q1s38g16r8.;#Y=v10o5q1s36c16;#Z=v8o5q5s34c8r8;";
        mml += "#P=ZYrZYrZZrrZYrYrYr;#Q=XYrrYZYrrY;#R=Yr4rYrZYr8.;";
        mml += "t200;%0@0l8v10q5s34A$BCDABEEDAE;%0@0l8v10q5s34F$GHIFGJJIFJ;%5@3l8v12q8s63K$LMNKLOONKO;";
        mml += "%2@0l16P$[Q]24[P]4[Q]8[R]16[P]4[R]8;";
        mario1 = driver.compile(mml);
        
        // MML from TSSCP thread dtm 1-115 modifyed
        mml = header;
        mml += "#A=[2c<c>>a<a>a+<a+r2.][2>f<f>d<d>d+<d+r2|r4]d+12d12c+12crd+rdr>g+rgr<c+rl12cf+fea+ag+.Rd+.R>b.Ra+.Ra.Rg+.Rr1.;";
        mml += "%1@4v10q5s34l8o5$A;%1@8v12q8s63l8o4$A;";
        mario2 = driver.compile(mml);

        // MML from TSSCP thread dtm 1-115 modifyed
        mml = header;
        mml += "#Y=v10q1s36c16r16; #Z=v8q5s38o5c8;";
        mml += "%1@4v10q5s34l8o6 eerercergrrr>g r2. s63q8l64o7[e>ad<e>ad>gc>f>a+r16]3;";
        mml += "%1@4v10q5s34l8o5 f+f+rf+rf+f+rb;";
        mml += "%1@8v12q8s63l8o4 ddrdrddr<grrr>g;";
        mml += "%2l8o5 ZrYZrYZrZrrZrYYY;";
        mario2start = driver.compile(mml);
        
        // MML from TSSCP thread dtm 1-115 modifyed
        mml = header;
        mml += "o6l8q1s29r64$r16[2dd-cd-de-dd-][2d-cd-dd-dd-c][2fg-fefee-|e]e16;";
        mml += "o5l16q1s31r64$[2gb-gaga-gagb-gbgb-ga][2f+af+a-f+af+b-f+af+b-f+af+a-]";
        mml += "[2a+<d>a+<e->a+<d>a+<d->a+<d>a+<d->a+<c>a+<d->];%5@0q8s63l2o4$e-1dg-f1eb-aee-e";
        mario4 = driver.compile(mml);
        
        // MML from TSSCP thread dtm 1-864 modifyed
        mml = header;
        mml += "%0s63o6l8c>ge<c>ge<c2.c+>g+f<c+>g+f<c+2.d+>a+g<d+>a+g<d+4.l6fffg1.;";
        mml += "%0s63o5l8ec>g<ec>g<ee16e16eeeefc+>g+<fc+>g+<ff16f16ffffgd+>a+<gd+>a+<gg16g16gl6aaab1.;";
        mml += "%5@3s63q6o4l8c2.cc16c16ccccc+2.c+c+16c+16c+c+c+c+a+gd+a+gd+a+a+16a+16a+<l6cccd1.;";
        areaclear = driver.compile(mml);
        
        // MML from MDX data convert
        mml = header;
        mml += "#REV;t113;#TABLE10{0,32,64,80,104,128};";
        mml += "%1@4s39na10o4v14l16q7$o5d8e8f+8g8a8a+8bbbrbrb4g8>e4r8d+4r8e4r8r<gab>cde4r8d+4f8e4r8r4r<g>d4r8c+4r8d4r8r<gab>cc+d4r8<g4>f8e4r8r4r<g>g4r8g4r8g4r8g8ar8gf4r8f4 r8f4r8f8gr8fe4r8<a8b8>f8eee8.<b>c4r8;";
        mml += "%1@4s63na10o4v14l16q7$o5d8c+8c8<b8>c8c+8dddrerf4.g4r8f+4r8g4r8r4r8g4r8f+4a8g4r8r4r8f4r8e4r8f4r8r4r8f4r8<b4>a8g4r8r4r8>e4r8d4r8c+4r8r4r8d4r8c+4r8c4r8r4r8<c4r8f8g8b8bbb8.fe4r8;";
        mml += "%5@3s63q8o4v16l8$r1g16r16g4.q4cg>c<<b>gbcg>c<eg>c<cg>c<<b>gbcg>c<eg>c<dgbc+f+a+dgb<b>gbdgb<b>gbcg>c<<g>g>c<cg>e<<b>g>d<<a+>g>c+<c+g>e<da>f<c+a>f<ca>f<<b>g>f<<c>g>e<<g>ggqf16f16f.<b16>c4.;";
        mml +="%2@0s60q2v13$o7r8q1c8q3o6c8o7q2r8c16c16q3o6c8;";
        mario22 = driver.compile(mml);
        
        // MML from MDX data convert
        mml = header;
        mml += "#REV;t152;";
        mml += "%0@0s32o6v10l8$q3cccq7<d16q3>ccq7<d16q3>c16q3<d16q3>c<bbbq7c16q3bbq7c16q3b16q7c16q3b;";
        mml += "%0@0s32o5v10l8$q3fffq7d16q3ffq7d16q3f16q7d16q3feeeq7c16q3eeq7c16q3e16q7c16q3e;";
        mml += "%5@3s40o4v16l8$q6drar16>drr16<a>dcrgr16>crr16<g>c;";
        mml += "%2@0$o5q4s60c24r24r24o6q2c24r24c24o6q7c24r24r24q2c24r24c24;";
        star = driver.compile(mml);
        
        // MML from TSSCP thread dtm 2-805 modifyed
        mml = header;
        mml += "l12%0v8s63q7o5 e<drddr> f<d+rd+d+r> f+<ereer fr f2>;";
        mml += "l12%0v8s63q7o5 >e<g+6g+g+6 >f<a6aa6 >f+<a+6a+a+6 br b2;";
        mml += "l12%3v8s63q6o5 >b<b6bb6 c<c6cc6> c+<c+6c+c+6> >g6 g2 <;";
        hurryup = driver.compile(mml);
        
        // MML from MDX data convert
        mml = header;
        mml += "#REV;#TABLE10{0,32,64,80,104,128};";
        mml += "%1@4s39na10o4v14l8q8g>ceg>ceg4.e4.<<g+>cd+g+>cd+g+4.d+4.<<a+>dfa+>dfa+4.a+a+a+>c2;";
        mml += "%1@4s63na10o4v14l8q8ceg>ceg>c4.<g4.<cd+g+>cd+g+>c4.<g+4.<dfa+>dfa+>d4.ddde2;";
        mml += "%5@3s63q8o4v16l8gegceg>e4.cr4<g+d+g+cd+g+>d+4.cr4<a+fa+dfa+>f4.dddc2;";
        stageclear = driver.compile(mml);
        
        // MML from MDX data convert
        mml = header;
        mml += "#REV;t203;#TABLE10{0,32,64,80,104,128};";
        mml += "%1@4s39na10o5v14l8q8$gf+ge2r4f4.f+4.g2r4>c4.e4ed4.e4.f4.<b4.>d2r4c4.<;";
        mml += "%1@4s63na10o4v14l8q8$r4.g2r4a4.a+4.b2r4>e4.g4gf4.g4.a4.d4.f4.r4.e4.<;";
        mml += "%5@3s63q8o3v16l8$b4.>c2.d4.d+4.e4.c4.a4.g4.f4.e4.d4.f4.g4.<g4.>c4.<;";
        allclear = driver.compile(mml);
        
        mml = header;
        mml += "%1@4s39v14q6l8r^2 b<frff6e6d6cr1;";
        mml += "%1@4s27,-45v14q0l8 o4<b16b16b16r16r^4g<drdd6c6>b6gerecr2;";
        mml += "%1@8s41v16q7l8r^2 o4gr4gg6a6b6<c>grgcr2;";
        miss = driver.compile(mml);
        
        mml = header + "#TABLE10{0,32,64,80,104,128};";
        mml += "%1@4s39v14q7l4na10,1o5e8rc8ro4go5f2f^2e8d8e2;";
        mml += "%1@4s63v14q8l4na10,1o6c8ro5g8rea8.b8a8.g+a+g+g2.;";
        mml += "%5@3s38v16q7l4o4g8re8rcs25f2c+2.c2..;";
        gameover = driver.compile(mml);

        mml = "t200;#TABLE8{14,0,13,0,13,0,12,0,12,,11,0,9,0,9,0,8,0,8,0,7,0,6,0,6,0,5,0,5}*8+31;";
        mml += "#TABLE9{12,6,13,8,13,3,9,10,15,12,6,11,13,14};";
        mml += "%1@9s63q8o0na8,1nt9,2c4.^32nantx128";
        block = driver.compile(mml);
        item = driver.compile("t200;#A=cggg+g+c+;%1@4s63q8l64o5A(0)A(1)A(2)A(3)");
        iteml = driver.compile("t200;#A=cggg+g+c+;%1@4s63q8l64o5A(0)A(1)A(2)A(3)A(4)A(5)A(6)A(7)");
        powerup = driver.compile("t200;%1@2s63q8l32o6c>g<ceg<c>g>g+<cd+g+d+g+b+<d+g+d+>>a+<dfa+fa+<dfa+f64");
        jump = driver.compile("t200;#TABLE2{(128,0)12,0};#TABLE3{(90,934)12};%1@4s63q8o5a32@2na2,2np3,2g2");
        jumpl = driver.compile("t200;#TABLE2{(128,0)12,0};#TABLE3{(90,934)12};%1@4s63q8o5d32@2na2,2np3,2c2");
        poke = driver.compile("t200;%1@4s63l128o5b-<cr16f64");
        fumi = driver.compile("t200;#TABLE0{(0,128)8};#TABLE1{(0,384)8};%1@4s63q8l10na0np1o5a<gnanp");
        dom = driver.compile("t200;#TABLE4{(0,-1280)4};%1@4s63q8l64np4,2o4a-16npc+&d+&f&f+");
        fire = driver.compile("t200;%1@4s63q8l64o4g<g<g<g<g");
        cion = driver.compile("t200;%1@4s63q8l16q0s22o6b<e");
        extend = driver.compile("t200;%1@4s63q0s24l9o7eg<ecdq8s63g");
        warp = driver.compile("t200;%1@4s63q8l64o7[e>ad<e>ad>gc>f>a+r16]3");
        goal = driver.compile("t200;#TABLE7{(0,36)36};%1@4s63q8o4nt7,2b-1");
        bonus = driver.compile("t200;%1@4s63q7l64o6[b]80");
        firework = driver.compile("t200;#TABLE5{(0,-1280)6};#TABLE6{(0,-2560)6};%1@4s63q8l64np5,2o4c+8<np6,2c+6np");
    }
}