Path: blob/master/libsnes/bsnes/snes/alt/ppu-compatibility/ppu.hpp
2 views
class PPU : public Processor, public PPUcounter {1public:2uint8* vram; //[128 * 1024]3uint8* oam; //[544]4uint8* cgram; //[512]56enum : bool { Threaded = true };7alwaysinline void step(unsigned clocks);8alwaysinline void synchronize_cpu();910#include "memory/memory.hpp"11#include "mmio/mmio.hpp"12#include "render/render.hpp"1314int uindex;1516uint32 *surface;17uint32 *output;1819uint8 ppu1_version;20uint8 ppu2_version;2122static void Enter();23void add_clocks(unsigned clocks);2425uint8 region;26unsigned line;2728enum { NTSC = 0, PAL = 1 };29enum { BG1 = 0, BG2 = 1, BG3 = 2, BG4 = 3, OAM = 4, BACK = 5, COL = 5 };30enum { SC_32x32 = 0, SC_64x32 = 1, SC_32x64 = 2, SC_64x64 = 3 };3132struct {33bool interlace;34bool overscan;35} display;3637struct {38//$210139uint8 oam_basesize;40uint8 oam_nameselect;41uint16 oam_tdaddr;4243//$210d-$210e44uint16 m7_hofs, m7_vofs;4546//$211b-$212047uint16 m7a, m7b, m7c, m7d, m7x, m7y;48} cache;4950alwaysinline bool interlace() const { return display.interlace; }51alwaysinline bool overscan() const { return display.overscan; }52alwaysinline bool hires() const { return (regs.pseudo_hires || regs.bg_mode == 5 || regs.bg_mode == 6); }5354uint16 mosaic_table[16][4096];55void render_line();5657void update_oam_status();58//required functions59void scanline();60void render_scanline();61void frame();62void enter();63void enter1();64void enter2();65void enter3();66void enter4();67void enable();68void power();69void reset();7071bool layer_enabled[5][4];72void layer_enable(unsigned layer, unsigned priority, bool enable);73unsigned frameskip;74unsigned framecounter;75void set_frameskip(unsigned frameskip);7677void serialize(serializer&);78void initialize();79PPU();80~PPU();81};8283extern PPU ppu;848586