Ejemplo n.º 1
0
 public void FromBytesWorksAsExpected()
 {
     FloatNumber.FromBytes(new List <byte> {
         0x00, 0xFF, 0x0A, 0x00, 0x00
     }).ShouldBe(-10.0f);
     FloatNumber.FromBytes(new List <byte> {
         0x81, 0x49, 0x0F, 0xDA, 0xA2
     }).ShouldBe((float)Math.PI / 2);
 }
Ejemplo n.º 2
0
    public static FloatNumber CreateValue(float value)
    {
        FloatNumber n = new FloatNumber
        {
            value = value
        };

        return(n);
    }
Ejemplo n.º 3
0
    public static FloatNumber CreateSequence()
    {
        FloatNumber n = new FloatNumber
        {
            type     = NumberType.Sequence,
            sequence = new List <FloatNumber>()
        };

        return(n);
    }
Ejemplo n.º 4
0
    public static FloatNumber CreateRange(FloatNumber min, FloatNumber max)
    {
        FloatNumber n = new FloatNumber
        {
            type     = NumberType.Range,
            rangeMin = min,
            rangeMax = max
        };

        return(n);
    }
Ejemplo n.º 5
0
    public static FloatNumber CreateDelta(float initialValue, FloatNumber delta)
    {
        FloatNumber n = new FloatNumber
        {
            type  = NumberType.Delta,
            value = initialValue,
            delta = delta
        };

        return(n);
    }
Ejemplo n.º 6
0
    public FloatNumber Add(FloatNumber number)
    {
        if (type != NumberType.Sequence)
        {
            throw new InvalidOperationException("This method can only be used with a Sequence");
        }

        sequence.Add(number);

        return(this);
    }
Ejemplo n.º 7
0
 public ParticleGenerator(int sprite_pixel_row_, int sprite_pixel_col_, int sprite_h_, int sprite_w_, Color4 primary_color_, Color4 secondary_color_,
                          float origin_row_, float origin_col_, FloatNumber dist_from_origin_, FloatNumber delta_row_, FloatNumber delta_col_,
                          Number num_per_frame_, Number duration_of_particle_, int total_frames_)
 {
     sprite_pixel_row     = sprite_pixel_row_;
     sprite_pixel_col     = sprite_pixel_col_;
     sprite_h             = sprite_h_;
     sprite_w             = sprite_w_;
     primary_color        = primary_color_;
     secondary_color      = secondary_color_;
     origin_row           = origin_row_;
     origin_col           = origin_col_;
     dist_from_origin     = dist_from_origin_;
     delta_row            = delta_row_;
     delta_col            = delta_col_;
     num_per_frame        = num_per_frame_;
     duration_of_particle = duration_of_particle_;
     total_frames         = total_frames_;
 }
Ejemplo n.º 8
0
 public static FloatNumber CreateRange(float min, FloatNumber max) => CreateRange(CreateValue(min), max);
Ejemplo n.º 9
0
 public static FloatNumber CreateRange(FloatNumber min, float max) => CreateRange(min, CreateValue(max));
Ejemplo n.º 10
0
        /// <summary>
        /// Disassemble a calculator entry
        /// </summary>
        private DisassemblyItem DisassembleCalculatorEntry(ushort address, byte calcCode, out bool carryOn)
        {
            // --- Create the default disassembly item
            var item = new DisassemblyItem(address)
            {
                LastAddress = (ushort)(_offset - 1),
                Instruction = $".defb #{calcCode:X2}"
            };

            var opCodes = new List <byte> {
                calcCode
            };

            carryOn = true;

            // --- If we're in series mode, obtain the subsequent series value
            if (_seriesCount > 0)
            {
                var lenght = (calcCode >> 6) + 1;
                if ((calcCode & 0x3F) == 0)
                {
                    lenght++;
                }
                for (var i = 0; i < lenght; i++)
                {
                    var nextByte = Fetch();
                    opCodes.Add(nextByte);
                }
                item.Instruction = ".defb " + string.Join(", ", opCodes.Select(o => $"#{o:X2}"));
                item.HardComment = $"({FloatNumber.FromCompactBytes(opCodes)})";
                _seriesCount--;
                return(item);
            }

            // --- Generate the output according the calculation op code
            switch (calcCode)
            {
            case 0x00:
            case 0x33:
            case 0x35:
                var jump = Fetch();
                opCodes.Add(jump);
                var jumpAddr = (ushort)(_offset - 1 + (sbyte)jump);
                _output.CreateLabel(jumpAddr, null);
                item.Instruction = $".defb #{calcCode:X2}, #{jump:X2}";
                item.HardComment = $"({s_CalcOps[calcCode]}: {GetLabelName(jumpAddr)})";
                carryOn          = calcCode != 0x33;
                break;

            case 0x34:
                _seriesCount     = 1;
                item.HardComment = "(stk-data)";
                break;

            case 0x38:
                item.HardComment = "(end-calc)";
                carryOn          = false;
                break;

            case 0x86:
            case 0x88:
            case 0x8C:
                _seriesCount     = calcCode - 0x80;
                item.HardComment = $"(series-0{calcCode-0x80:X1})";
                break;

            case 0xA0:
            case 0xA1:
            case 0xA2:
            case 0xA3:
            case 0xA4:
                var constNo = calcCode - 0xA0;
                item.HardComment = GetIndexedCalcOp(0x3F, constNo);
                break;

            case 0xC0:
            case 0xC1:
            case 0xC2:
            case 0xC3:
            case 0xC4:
            case 0xC5:
                var stNo = calcCode - 0xC0;
                item.HardComment = GetIndexedCalcOp(0x40, stNo);
                break;

            case 0xE0:
            case 0xE1:
            case 0xE2:
            case 0xE3:
            case 0xE4:
            case 0xE5:
                var getNo = calcCode - 0xE0;
                item.HardComment = GetIndexedCalcOp(0x41, getNo);
                break;

            default:
                var comment = s_CalcOps.ContainsKey(calcCode)
                        ? s_CalcOps[calcCode]
                        : $"calc code: #{calcCode:X2}";
                item.HardComment = $"({comment})";
                break;
            }
            return(item);
        }
Ejemplo n.º 11
0
        private void TestFloat(List <byte> bytes, float value)
        {
            var convVal = FloatNumber.FromCompactBytes(bytes);

            Math.Abs(convVal - value).ShouldBeLessThanOrEqualTo((float)1.0e-12);
        }
Ejemplo n.º 12
0
        public ParticleGenerator(int sprite_pixel_row_,int sprite_pixel_col_,int sprite_h_,int sprite_w_,Color4 primary_color_,Color4 secondary_color_,
		                         float origin_row_,float origin_col_,FloatNumber dist_from_origin_,FloatNumber delta_row_,FloatNumber delta_col_,
		                         Number num_per_frame_,Number duration_of_particle_,int total_frames_)
        {
            sprite_pixel_row = sprite_pixel_row_;
            sprite_pixel_col = sprite_pixel_col_;
            sprite_h = sprite_h_;
            sprite_w = sprite_w_;
            primary_color = primary_color_;
            secondary_color = secondary_color_;
            origin_row = origin_row_;
            origin_col = origin_col_;
            dist_from_origin = dist_from_origin_;
            delta_row = delta_row_;
            delta_col = delta_col_;
            num_per_frame = num_per_frame_;
            duration_of_particle = duration_of_particle_;
            total_frames = total_frames_;
        }