code: function _getCelFrameDecoder(celName, frameData, frameNum) {
      var frameSize = frameData.length;
  
      switch (celName) {
      case 'l1': case 'l2': case 'l3': case 'l4': case 'town':
          // Some regular (type 1) CEL images just happen to have a frame size of
  		// exactly 0x220, 0x320 or 0x400. Therefore the isType* functions are
  		// required to figure out the appropriate decoding function.
          switch (frameSize) {
          case 0x400:
              if (isType0(celName, frameNum)) {
                  return DecodeFrameType0;
              }
              break;
          case 0x220:
              if (isType2or4(frameData)) {
                  return DecodeFrameType2;
              } else if (isType3or5(frameData)) {
                  return DecodeFrameType3;
              }
              break;
          case 0x320:
              if (isType2or4(frameData)) {
                  return DecodeFrameType4;
              } else if (isType3or5(frameData)) {
                  return DecodeFrameType5;
              }
          }
      }
  
      return DecodeFrameType1;
  }
docs: Gets the appropriate frame decoder for the particular frame.