public static Bitmap DrawFont(uint image)
        {
            if (!ROM.isPointer(image))
            {
                return(ImageUtil.Blank(4 * 8, 4 * 8));
            }
            uint palette = Program.ROM.p32(Program.ROM.RomInfo.op_class_font_palette_pointer());

            byte[] imageUZ = LZ77.decompress(Program.ROM.Data, ROM.toOffset(image));

            return(ImageUtil.ByteToImage16Tile(4 * 8, 4 * 8
                                               , imageUZ, 0
                                               , Program.ROM.Data, (int)ROM.toOffset(palette)
                                               ));
        }
Exemple #2
0
        public static Bitmap DrawImage(uint table, uint tsa, uint palette)
        {
            if (!ROM.isPointer(table))
            {
                return(ImageUtil.Blank(8, 8));
            }
            if (!ROM.isPointer(tsa))
            {
                return(ImageUtil.Blank(8, 8));
            }
            if (!ROM.isPointer(palette))
            {
                return(ImageUtil.Blank(8, 8));
            }

            table = ROM.toOffset(table);

            List <byte> imageUZList = new List <byte>();

            for (int i = 0; i < 10; i++)
            {
                uint image = Program.ROM.u32((uint)(table + (i * 4)));
                if (!ROM.isPointer(image))
                {
                    return(ImageUtil.Blank(8, 8));
                }
                byte[] imageUZ = LZ77.decompress(Program.ROM.Data, ROM.toOffset(image));
                imageUZList.AddRange(imageUZ);
            }
            return(ImageUtil.ByteToImage16TileHeaderTSA(32 * 8, 20 * 8
                                                        , imageUZList.ToArray(), 0
                                                        , Program.ROM.Data, (int)ROM.toOffset(palette)
                                                        , Program.ROM.Data, (int)ROM.toOffset(tsa)
                                                        , 0x8000 //TSAに謎の係数を足しながら、最下層のラインから格納するらしい
                                                        , -0x80  //パレット番号が0x80シフトされるらしい
                                                        ));
        }