public static string GetBattleAnimeHint(uint search_animeindex)
        {
            InputFormRef InputFormRef = Init(null);

            for (int id = 0; id < InputFormRef.DataCount; id++)
            {
                uint addr = InputFormRef.IDToAddr((uint)id);
                if (!U.isSafetyOffset(addr))
                {
                    continue;
                }
                for (int i = 0; true; i += 4)
                {
                    uint item  = Program.ROM.u8((uint)(addr + i + 0));
                    uint sp    = Program.ROM.u8((uint)(addr + i + 1));
                    uint anime = Program.ROM.u16((uint)(addr + i + 2));
                    if (item == 0 && sp == 0 && anime == 0)
                    {
                        break;
                    }
                    if (anime != search_animeindex)
                    {
                        continue;
                    }

                    //発見!
                    string name = UnitForm.GetNameWhereCustomBattleAnime((uint)id);
                    return(name + " " + ImageBattleAnimeForm.getSPTypeName(item, sp));
                }
            }

            //ない
            return("");
        }
 static InputFormRef Init(Form self)
 {
     return(new InputFormRef(self
                             , ""
                             , 0
                             , 4
                             , (int i, uint addr) =>
     {    //読込最大値検索
         //00まで検索
         return Program.ROM.u32(addr + 0) != 0;
     }
                             , (int i, uint addr) =>
     {
         uint b0 = Program.ROM.u8(addr + 0);
         uint b1 = Program.ROM.u8(addr + 1);
         uint w2 = Program.ROM.u16(addr + 2);
         return U.ToHexString(w2) + " " + ImageBattleAnimeForm.getSPTypeName(b0, b1);
     }
                             ));
 }