예제 #1
0
 public SpriteHandler(
     IPPUMemoryMap ppuMemoryMap,
     PPURegisters registers,
     PaletteHandler paletteHandler)
 {
     this.registers      = registers;
     this.ppuMemoryMap   = ppuMemoryMap;
     this.paletteHandler = paletteHandler;
 }
예제 #2
0
        public PaletteHandler(IPPUMemoryMap memoryMap)
        {
            this.memoryMap = (PPURawMemoryMap)memoryMap;

            var memorySegments = this.memoryMap.GetSegmentsInRange(0x3F00, 0x3FFF);

            this.backgroundPalette0 = this.memoryMap.GetMemorySegment <Palette>("Background palette 0");
            this.backgroundPalette1 = this.memoryMap.GetMemorySegment <Palette>("Background palette 1");
            this.backgroundPalette2 = this.memoryMap.GetMemorySegment <Palette>("Background palette 2");
            this.backgroundPalette3 = this.memoryMap.GetMemorySegment <Palette>("Background palette 3");

            this.spritePalette0 = this.memoryMap.GetMemorySegment <Palette>("Sprite palette 0");
            this.spritePalette1 = this.memoryMap.GetMemorySegment <Palette>("Sprite palette 1");
            this.spritePalette2 = this.memoryMap.GetMemorySegment <Palette>("Sprite palette 2");
            this.spritePalette3 = this.memoryMap.GetMemorySegment <Palette>("Sprite palette 3");
        }
예제 #3
0
        public BackgroundHandler(
            IPPUMemoryMap ppuMemoryMap,
            PPURegisters registers,
            PPUInternalRegisters internalRegisters,
            ScrollHandler scrollHandler,
            PaletteHandler paletteHandler)
        {
            this.registers         = registers;
            this.ppuMemoryMap      = ppuMemoryMap;
            this.scrollHandler     = scrollHandler;
            this.paletteHandler    = paletteHandler;
            this.internalRegisters = internalRegisters;

            foreach (var patternTable in this.ppuMemoryMap.GetMemorySegments <PatternTable>())
            {
                if (patternTable.Range.Min == 0x0000)
                {
                    this.patternTable0 = patternTable;
                }
                else if (patternTable.Range.Min == 0x1000)
                {
                    this.patternTable1 = patternTable;
                }
            }

            foreach (var nameTable in this.ppuMemoryMap.GetMemorySegments <Nametable>())
            {
                if (nameTable.Range.Min == 0x2000)
                {
                    this.nameTable0 = nameTable;
                }
                else if (nameTable.Range.Min == 0x2400)
                {
                    this.nameTable1 = nameTable;
                }
                else if (nameTable.Range.Min == 0x2800)
                {
                    this.nameTable2 = nameTable;
                }
                else if (nameTable.Range.Min == 0x2C00)
                {
                    this.nameTable3 = nameTable;
                }
            }
        }
예제 #4
0
        public RicohRP2C02(
            IPPUMemoryMap memoryMap,
            PPURegisters registers,
            PPUInternalRegisters internalRegisters,
            ScrollHandler scrollHandler,
            PaletteHandler paletteHandler,
            BackgroundHandler backgroundHandler,
            PixelMuxer pixelMuxer,
            SpriteHandler spriteHandler)
        {
            this.InternalRegisters = internalRegisters;

            this.Registers     = registers;
            this.MemoryMap     = (PPURawMemoryMap)memoryMap;
            this.ScrollHandler = scrollHandler;

            this.PaletteHandler    = paletteHandler;
            this.BackgroundHandler = backgroundHandler;
            this.SpriteHandler     = spriteHandler;
            this.PixelMuxer        = pixelMuxer;
        }