Ejemplo n.º 1
0
        /// <summary>
        /// Patch object data for new color values.
        /// </summary>
        public void PatchObjects()
        {
            var playerActor = RomData.MMFileList[38];

            PatchHumanEnergyColors(ObjUtils.GetObjectData(1));
            PatchDekuEnergyColors(playerActor.Data);
            PatchGoronEnergyColors(ObjUtils.GetObjectData(0x14C));
            PatchZoraEnergyColors(ObjUtils.GetObjectData(0x14D));
            PatchFierceDeityEnergyColors(playerActor.Data);
        }
Ejemplo n.º 2
0
        private Character DeterminePlayerModel()
        {
            var data = ObjUtils.GetObjectData(0x11);

            if (data[0x107] == 0x05)
            {
                return(Character.LinkMM);
            }
            if (data[0x107] == 0x07)
            {
                return(Character.LinkOOT);
            }
            if (data[0xC6] == 0x02)
            {
                return(Character.AdultLink);
            }
            if (data[0xC5] == 0x15)
            {
                return(Character.Kafei);
            }
            throw new InvalidOperationException("Unable to determine player's model.");
        }
Ejemplo n.º 3
0
        private void WriteTunicColor()
        {
            Color t = _settings.TunicColor;

            byte[] color = { t.R, t.G, t.B };

            var otherTunics = ResourceUtils.GetAddresses(Values.AddrsDirectory + "tunic-forms");

            TunicUtils.UpdateFormTunics(otherTunics, _settings.TunicColor);

            var playerModel    = DeterminePlayerModel();
            var characterIndex = (int)playerModel;
            var locations      = ResourceUtils.GetAddresses($"{Values.AddrsDirectory}tunic-{characterIndex}");
            var objectIndex    = playerModel == Character.Kafei ? 0x1C : 0x11;
            var objectData     = ObjUtils.GetObjectData(objectIndex);

            for (int j = 0; j < locations.Count; j++)
            {
                ReadWriteUtils.WriteFileAddr(locations[j], color, objectData);
            }
            ObjUtils.InsertObj(objectData, objectIndex);
        }