Exemple #1
0
    public void Update()
    {
        switch (m_state)
        {
        case FLASHSTATE.UP:
            if (m_timer.UpdateAndTest())
            {
                m_state = FLASHSTATE.HOLD;
                m_timer = new Timer(Mathf.Clamp(m_holdTime - Random.Range(0f, m_holdTime * m_chanceForFLash), 0f, m_holdTime));
            }
            break;

        case FLASHSTATE.HOLD:
            if (m_timer.UpdateAndTest())
            {
                m_state = FLASHSTATE.DOWN;
                m_timer = new Timer(Mathf.Clamp(m_rampDownTime - Random.Range(0f, m_holdTime * m_chanceForFLash), 0f, m_rampDownTime));
            }
            break;

        case FLASHSTATE.DOWN:
            if (m_timer.UpdateAndTest())
            {
                m_state = FLASHSTATE.OFF;
                m_timer = null;
            }
            break;
        }
    }
Exemple #2
0
    public void Update()
    {
        switch (state)
        {
        case FLASHSTATE.UP:
            if (timer.UpdateAndTest())
            {
                state = FLASHSTATE.HOLD;
                timer = new Timer(holdTime);
            }
            break;

        case FLASHSTATE.HOLD:
            if (timer.UpdateAndTest())
            {
                state = FLASHSTATE.DOWN;
                timer = new Timer(rampDownTime);
            }
            break;

        case FLASHSTATE.DOWN:
            if (timer.UpdateAndTest())
            {
                state = FLASHSTATE.OFF;
                timer = null;
            }
            break;
        }
    }
Exemple #3
0
        public static byte flashRead(UInt32 address)
        {
            address &= 0xFFFF;

            switch (flashReadState)
            {
            case FLASHSTATE.FLASH_READ_ARRAY:
                return(flashSaveMemory[(flashBank << 16) + address]);

            case FLASHSTATE.FLASH_AUTOSELECT:
                switch (address & 0xFF)
                {
                case 0:
                    return(flashManufacturerID);

                case 1:
                    return(flashDeviceID);
                }
                break;

            case FLASHSTATE.FLASH_ERASE_COMPLETE:
                flashState     = FLASHSTATE.FLASH_READ_ARRAY;
                flashReadState = FLASHSTATE.FLASH_READ_ARRAY;
                return(0xFF);
            }
            ;
            return(0);
        }
 public void Update()
 {
     switch (state)
     {
         case FLASHSTATE.UP:
             if (timer.UpdateAndTest())
             {
                 state = FLASHSTATE.HOLD;
                 timer = new Timer(holdTime);
             }
             break;
         case FLASHSTATE.HOLD:
             if (timer.UpdateAndTest())
             {
                 state = FLASHSTATE.DOWN;
                 timer = new Timer(rampDownTime);
             }
             break;
         case FLASHSTATE.DOWN:
             if (timer.UpdateAndTest())
             {
                 state = FLASHSTATE.OFF;
                 timer = null;
             }
             break;
     }
 }
Exemple #5
0
        public static void reset()
        {
            //SRAM = new Byte[65536];

            flashSaveMemory = new byte[SIZE_FLASH1M];
            for (int i = 0; i < flashSaveMemory.Length; i++)
            {
                flashSaveMemory[i] = 0xFF;
            }

            flashState          = FLASHSTATE.FLASH_READ_ARRAY;
            flashReadState      = FLASHSTATE.FLASH_READ_ARRAY;
            flashSize           = SIZE_FLASH512;
            flashDeviceID       = 0x1b;
            flashManufacturerID = 0x32;
            flashBank           = 0;
        }
Exemple #6
0
 public void ClashFlash()
 {
     m_timer = new Timer(Mathf.Clamp(m_rampUpTime - Random.Range(0f, m_rampUpTime * m_chanceForFLash), 0f, m_rampUpTime));
     m_state = FLASHSTATE.UP;
     //Debug.Log("Flash Called from Clash");
 }
Exemple #7
0
        public static object flashWrite(UInt32 address, byte data)
        {
            address &= 0xFFFF;
            switch (flashState)
            {
            case FLASHSTATE.FLASH_READ_ARRAY:
                if (address == 0x5555 && data == 0xAA)
                {
                    flashState = FLASHSTATE.FLASH_CMD_1;
                }
                break;

            case FLASHSTATE.FLASH_CMD_1:
                if (address == 0x2AAA && data == 0x55)
                {
                    flashState = FLASHSTATE.FLASH_CMD_2;
                }
                else
                {
                    flashState = FLASHSTATE.FLASH_READ_ARRAY;
                }
                break;

            case FLASHSTATE.FLASH_CMD_2:
                if (address == 0x5555)
                {
                    if (data == 0x90)
                    {
                        flashState     = FLASHSTATE.FLASH_AUTOSELECT;
                        flashReadState = FLASHSTATE.FLASH_AUTOSELECT;
                    }
                    else if (data == 0x80)
                    {
                        flashState = FLASHSTATE.FLASH_CMD_3;
                    }
                    else if (data == 0xF0)
                    {
                        flashState     = FLASHSTATE.FLASH_READ_ARRAY;
                        flashReadState = FLASHSTATE.FLASH_READ_ARRAY;
                    }
                    else if (data == 0xA0)
                    {
                        flashState = FLASHSTATE.FLASH_PROGRAM;
                    }
                    else if (data == 0xB0 && flashSize == SIZE_FLASH1M)
                    {
                        flashState = FLASHSTATE.FLASH_SETBANK;
                    }
                    else
                    {
                        flashState     = FLASHSTATE.FLASH_READ_ARRAY;
                        flashReadState = FLASHSTATE.FLASH_READ_ARRAY;
                    }
                }
                else
                {
                    flashState     = FLASHSTATE.FLASH_READ_ARRAY;
                    flashReadState = FLASHSTATE.FLASH_READ_ARRAY;
                }
                break;

            case FLASHSTATE.FLASH_CMD_3:
                if (address == 0x5555 && data == 0xAA)
                {
                    flashState = FLASHSTATE.FLASH_CMD_4;
                }
                else
                {
                    flashState     = FLASHSTATE.FLASH_READ_ARRAY;
                    flashReadState = FLASHSTATE.FLASH_READ_ARRAY;
                }
                break;

            case FLASHSTATE.FLASH_CMD_4:
                if (address == 0x2AAA && data == 0x55)
                {
                    flashState = FLASHSTATE.FLASH_CMD_5;
                }
                else
                {
                    flashState     = FLASHSTATE.FLASH_READ_ARRAY;
                    flashReadState = FLASHSTATE.FLASH_READ_ARRAY;
                }
                break;

            case FLASHSTATE.FLASH_CMD_5:     // SECTOR ERASE
                if (data == 0x30)
                {
                    for (int i = 0; i < 0x1000; i++)
                    {
                        flashSaveMemory[(flashBank << 16) + (address & 0xF000) + i] = 0xFF;
                    }
                    flashReadState = FLASHSTATE.FLASH_ERASE_COMPLETE;
                }
                else if (data == 0x10)     // CHIP ERASE
                {
                    for (int i = 0; i < flashSaveMemory.Length; i++)
                    {
                        flashSaveMemory[i] = 0xFF;
                    }
                    flashReadState = FLASHSTATE.FLASH_ERASE_COMPLETE;
                }
                else
                {
                    flashState     = FLASHSTATE.FLASH_READ_ARRAY;
                    flashReadState = FLASHSTATE.FLASH_READ_ARRAY;
                }
                break;

            case FLASHSTATE.FLASH_AUTOSELECT:
                if (data == 0xF0)
                {
                    flashState     = FLASHSTATE.FLASH_READ_ARRAY;
                    flashReadState = FLASHSTATE.FLASH_READ_ARRAY;
                }
                else if (address == 0x5555 && data == 0xAA)
                {
                    flashState = FLASHSTATE.FLASH_CMD_1;
                }
                else
                {
                    flashState     = FLASHSTATE.FLASH_READ_ARRAY;
                    flashReadState = FLASHSTATE.FLASH_READ_ARRAY;
                }
                break;

            case FLASHSTATE.FLASH_PROGRAM:
                flashSaveMemory[(flashBank << 16) + address] = data;
                flashState     = FLASHSTATE.FLASH_READ_ARRAY;
                flashReadState = FLASHSTATE.FLASH_READ_ARRAY;
                break;

            case FLASHSTATE.FLASH_SETBANK:
                if (address == 0)
                {
                    flashBank = (byte)(data & 1);
                }
                flashState     = FLASHSTATE.FLASH_READ_ARRAY;
                flashReadState = FLASHSTATE.FLASH_READ_ARRAY;
                break;
            }

            return(0);
        }