Example #1
0
        private void RenderBgFrame(ChrAnimationFrame frame)
        {
            bgGfxLoader.BeginWrite();

            LoadGfxSlot(bgGfxLoader, 0, frame.Bank0);
            LoadGfxSlot(bgGfxLoader, 1, frame.Bank1);
            LoadGfxSlot(bgGfxLoader, 2, frame.Bank2);
            LoadGfxSlot(bgGfxLoader, 3, frame.Bank3);

            bgGfxLoader.EndWrite();

            bgGfxLoader.LoadColors((SelectedLevel ?? rom.Brinstar).BgPalette, 0);
            BgImage = bgGfxLoader.PatternImage;
        }
Example #2
0
        private void ApplyPalette(LevelIndex level)
        {
            NesPalette bgPal  = rom.Levels[LevelIndex.Brinstar].BgPalette;
            NesPalette sprPal = rom.Levels[LevelIndex.Brinstar].SpritePalette;

            if (level != LevelIndex.None)
            {
                bgPal  = rom.Levels[level].BgPalette;
                sprPal = rom.Levels[level].SpritePalette;
            }

            spritePatterns.LoadColors(sprPal, 2);
            bgPatterns.LoadColors(bgPal, 1);
        }
Example #3
0
        private void RenderSprites()
        {
            UpdateJustinBaileyLabel();

            sprGfxLoader.BeginWrite();

            int justinBaileyAdjust = chkJustinBailey.Checked ? 4 : 0;

            LoadGfxSlot(sprGfxLoader, 0, justinBaileyAdjust + SelectedLevelData.SprBank0 & 0xFE);
            LoadGfxSlot(sprGfxLoader, 1, 1 + justinBaileyAdjust + (SelectedLevelData.SprBank0 & 0xFE));
            LoadGfxSlot(sprGfxLoader, 2, SelectedLevelData.SprBank1 & 0xFE);
            LoadGfxSlot(sprGfxLoader, 3, 1 + (SelectedLevelData.SprBank1 & 0xFE));

            sprGfxLoader.EndWrite();

            sprGfxLoader.LoadColors((SelectedLevel ?? rom.Brinstar).SpritePalette, 0);
            SprImage = sprGfxLoader.PatternImage;
        }
Example #4
0
        private void picTiles_Paint(object sender, PaintEventArgs e)
        {
            int firstRow = e.ClipRectangle.Top / RowHeight;
            int lastRow  = e.ClipRectangle.Bottom / RowHeight;

            if (lastRow >= _RowCount)
            {
                lastRow = _RowCount - 1;
            }

            int RenderY = firstRow * RowHeight;

            gfxLoader.LoadColors(_Palette, 0);
            e.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
            e.Graphics.PixelOffsetMode   = System.Drawing.Drawing2D.PixelOffsetMode.Half;

            for (int i = firstRow; i <= lastRow; i += RowsPerPage)
            {
                // Draw up to 16 rows
                int rowCount = Math.Min(RowsPerPage, lastRow - i + 1);

                int dataStart = i * bytesPerRow + _DataStart;
                int dataEnd   = dataStart + bytesPerRow * rowCount - 1;

                if (dataEnd >= tileData.Length)
                {
                    System.Diagnostics.Debug.Fail("Attempted to draw tiles beyond end of ROM");
                }
                else
                {
                    gfxLoader.BeginWrite();
                    gfxLoader.LoadTiles(tileData, dataStart, 0, rowCount * TilePerRow);
                    gfxLoader.EndWrite();

                    Rectangle source = new Rectangle(0, 0, RawTileSheetSize, RawTileSize * rowCount);
                    Rectangle dest   = new Rectangle(0, RenderY, RowWidth, RowHeight * rowCount);
                    e.Graphics.DrawImage(gfxLoader.PatternImage, dest, source, GraphicsUnit.Pixel);

                    RenderY += rowCount * RowHeight;
                }
            }

            DrawSelection(e.Graphics);
        }