示例#1
0
        private void PiratePB()
        {
            Location loc = locations[Location.PiratePB];

            if (loc.NewItem == ItemType.Power)
            {
                return;
            }

            // copy new gfx onto base gfx
            Gfx baseGfx = new Gfx(new byte[0x800], 32);
            Gfx itemGfx = loc.NewItem.AbilityGraphics();

            baseGfx.AddGfx(itemGfx, 0, 0);
            // draw 4th block
            Rectangle rect = new Rectangle(0, 0, 2, 2);

            baseGfx.AddGfx(itemGfx, rect, 6, 0);

            // write new gfx to rom
            int gfxPtr = Rom.GetSpriteGfxPtr(Rom.PiratePBSpriteID);

            baseGfx.WriteToEnd(rom, gfxPtr);

            // write new palette
            Palette newPal = loc.NewItem.AbilityPalette();
            int     palPtr = Rom.GetSpritePalettePtr(Rom.PiratePBSpriteID);

            newPal.Write(rom, palPtr);
        }
示例#2
0
        private void ItemToAbility(Location loc)
        {
            // replace BehaviorType
            int offset = abilityOffsets[loc.OrigItem];

            rom.Write8(offset, loc.NewItem.BehaviorType());

            // get base gfx
            byte[] baseData;
            int    x, y;

            switch (loc.OrigItem)
            {
            case ItemType.Morph:
            case ItemType.Charge:
                baseData = new byte[0x800];
                x        = 0;
                y        = 0;
                break;

            case ItemType.Grip:
                baseData = new byte[0x1000];
                x        = 0;
                y        = 0;
                break;

            default:
                baseData = Properties.Resources.gfxChozoStatue;
                x        = 4;
                y        = 4;
                break;
            }

            // copy new gfx onto base gfx
            Gfx baseGfx = new Gfx(baseData, 32);
            Gfx itemGfx = loc.NewItem.AbilityGraphics();

            baseGfx.AddGfx(itemGfx, x, y);

            // write new gfx to rom
            byte spriteID = loc.OrigItem.SpriteID();
            int  gfxPtr   = Rom.GetSpriteGfxPtr(spriteID);

            baseGfx.WriteToEnd(rom, gfxPtr);

            // write new palette
            Palette newPal = loc.NewItem.AbilityPalette();
            int     palPtr = Rom.GetSpritePalettePtr(spriteID);

            newPal.Write(rom, palPtr);
        }
示例#3
0
文件: ROMTests.cs 项目: biosp4rk/mzmr
 public void GetSpriteGfxPtrTest()
 {
     Assert.AreEqual(0x75EC00, Rom.GetSpriteGfxPtr(0x12));
 }