Пример #1
0
        public void DebugNametable(bool text)
        {
            for (var n = 0; n < 4; n++)
            {
                var startPos        = PPU.NAMETABLE + n * PPU.NAMETABLE_FULL_LENGTH;
                var offsetX         = (n % 2 == 0 ? 0 : 30 * 8);
                var offsetY         = n < 2 ? 0 : 240;
                var startAttributes = startPos + PPU.NAMETABLE_TILES_LENGTH;

                for (var j = 0; j < 30; j++)
                {
                    for (var i = 0; i < 32; i++)
                    {
                        var ind = _ppu.ReadPpu(startPos++);
                        if (!text)
                        {
                            DrawSprite(GetSprite(1, ind), i * 8 + offsetX, j * 8 + offsetY);
                        }
                        else
                        {
                            DrawText(i * 8 + offsetX, j * 8 + offsetY, ind.ToString("X2"), 12);
                        }
                    }
                }


                for (var j = 0; j < 30 / 4; j++)
                {
                    for (var i = 0; i < 32 / 4; i++)
                    {
                        var attr = _ppu.ReadPpu(startAttributes++);
                        if (text)
                        {
                            //DrawText(i * 32+16 + offsetX, j * 32+16 + offsetY, attr.ToString("X2"), 14, Color.Magenta);
                        }
                    }
                }
            }

            if (!text)
            {
                for (var i = 0; i < 32; i++)
                {
                    DrawHorzontalLine(0, i * 32, 1000);
                    if (i < 18)
                    {
                        DrawVerticalLine(0, i * 32, 1000);
                    }
                }
            }
        }