예제 #1
0
파일: DisplayTests.cs 프로젝트: perfp/Chip8
        public void CanSetSpriteAtByteBorderBit()
        {
            var sprite = new byte[5];
            sprite[0] = 0xff;

            var display = new TestDisplay();

            var cpu = new CPU(new Memory(), display, null);
            cpu.SetSprite(8, 0, sprite, 1);

            // 0      1       2       3
            // 0000000011111110000000000000000
            // 0x0    0xff   0x0     0x0
            Assert.AreEqual(0xff, display.Screen[1]);
        }
예제 #2
0
파일: DisplayTests.cs 프로젝트: perfp/Chip8
        public void CanSetSprite1()
        {
            var sprite = new byte[5];
            sprite[0] = 0x20;
            sprite[1] = 0x60;
            sprite[2] = 0x20;
            sprite[3] = 0x20;
            sprite[4] = 0x70;

            var display = new TestDisplay();

            var cpu = new CPU(new Memory(), display, null);
            cpu.SetSprite(4, 4, sprite, 5);

            display.Print();
        }
예제 #3
0
파일: DisplayTests.cs 프로젝트: perfp/Chip8
        public void CanSetSpriteAtOddBit()
        {
            var sprite = new byte[5];
            sprite[0] = 0xff;

            var display = new TestDisplay();

            var cpu = new CPU(new Memory(), display, null);
            cpu.SetSprite(10, 0, sprite, 1);
            display.Print();
            // 0      1       2       3
            // 0000000000111111100000000000000
            // 0000000011111110000000011000000 msb -> lsb
            // 0x0    0x3f   0xc0     0x0

            Assert.AreEqual(0xfc, display.Screen[1]);
            Assert.AreEqual(0x03, display.Screen[2]);
        }
예제 #4
0
파일: DisplayTests.cs 프로젝트: perfp/Chip8
        public void CanWrapSpriteAtY()
        {
            var sprite = new byte[5];
            sprite[0] = 0xff;
            sprite[1] = 0xff;

            var display = new TestDisplay();

            var cpu = new CPU(new Memory(), display, null);
            cpu.SetSprite(0, 31, sprite, 2);

            Assert.AreEqual(0xff, display.Screen[31*8]);
            Assert.AreEqual(0xff, display.Screen[0]);
        }
예제 #5
0
파일: DisplayTests.cs 프로젝트: perfp/Chip8
        public void CanWrapSpriteAtX()
        {
            var sprite = new byte[5];
            sprite[0] = 0xff;

            var display = new TestDisplay();

            var cpu = new CPU(new Memory(), display, null);
            cpu.SetSprite(62, 0, sprite, 1);

            // 62        63      |64       65
            // 11111100 00000000 |00000000 00000011
            // 00111111 00000000 |00000000 11000000 lsb
            // 0xfc   0x0     0x0      0x3
            display.Print();
            Assert.AreEqual(0xc0, display.Screen[7]);
            Assert.AreEqual(0x3f, display.Screen[0]);
        }