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); }
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); }
public void GetSpritePalettePtrTest() { Assert.AreEqual(0x75EEF8, Rom.GetSpritePalettePtr(0x12)); }