Path: blob/master/libsnes/bsnes/snes/alt/ppu-compatibility/mmio/mmio.hpp
2 views
struct {1//open bus support2uint8 ppu1_mdr, ppu2_mdr;34//bg line counters5uint16 bg_y[4];67//internal state8uint16 ioamaddr;9uint16 icgramaddr;1011//$210012bool display_disabled;13uint8 display_brightness;1415//$210116uint8 oam_basesize;17uint8 oam_nameselect;18uint16 oam_tdaddr;1920//$2102-$210321uint16 oam_baseaddr;22uint16 oam_addr;23bool oam_priority;24uint8 oam_firstsprite;2526//$210427uint8 oam_latchdata;2829//$210530bool bg_tilesize[4];31bool bg3_priority;32uint8 bg_mode;3334//$210635uint8 mosaic_size;36bool mosaic_enabled[4];37uint16 mosaic_countdown;3839//$2107-$210a40uint16 bg_scaddr[4];41uint8 bg_scsize[4];4243//$210b-$210c44uint16 bg_tdaddr[4];4546//$210d-$211447uint8 bg_ofslatch;48uint16 m7_hofs, m7_vofs;49uint16 bg_hofs[4];50uint16 bg_vofs[4];5152//$211553bool vram_incmode;54uint8 vram_mapping;55uint8 vram_incsize;5657//$2116-$211758uint16 vram_addr;5960//$211a61uint8 mode7_repeat;62bool mode7_vflip;63bool mode7_hflip;6465//$211b-$212066uint8 m7_latch;67uint16 m7a, m7b, m7c, m7d, m7x, m7y;6869//$212170uint16 cgram_addr;7172//$212273uint8 cgram_latchdata;7475//$2123-$212576bool window1_enabled[6];77bool window1_invert [6];78bool window2_enabled[6];79bool window2_invert [6];8081//$2126-$212982uint8 window1_left, window1_right;83uint8 window2_left, window2_right;8485//$212a-$212b86uint8 window_mask[6];8788//$212c-$212d89bool bg_enabled[5], bgsub_enabled[5];9091//$212e-$212f92bool window_enabled[5], sub_window_enabled[5];9394//$213095uint8 color_mask, colorsub_mask;96bool addsub_mode;97bool direct_color;9899//$2131100bool color_mode, color_halve;101bool color_enabled[6];102103//$2132104uint8 color_r, color_g, color_b;105uint16 color_rgb;106107//$2133108//overscan and interlace are checked once per frame to109//determine if entire frame should be interlaced/non-interlace110//and overscan adjusted. therefore, the variables act sort of111//like a buffer, but they do still affect internal rendering112bool mode7_extbg;113bool pseudo_hires;114bool overscan;115uint16 scanlines;116bool oam_interlace;117bool interlace;118119//$2137120uint16 hcounter, vcounter;121bool latch_hcounter, latch_vcounter;122bool counters_latched;123124//$2139-$213a125uint16 vram_readbuffer;126127//$213e128bool time_over, range_over;129uint16 oam_itemcount, oam_tilecount;130} regs;131132void mmio_w2100(uint8 value); //INIDISP133void mmio_w2101(uint8 value); //OBSEL134void mmio_w2102(uint8 value); //OAMADDL135void mmio_w2103(uint8 value); //OAMADDH136void mmio_w2104(uint8 value); //OAMDATA137void mmio_w2105(uint8 value); //BGMODE138void mmio_w2106(uint8 value); //MOSAIC139void mmio_w2107(uint8 value); //BG1SC140void mmio_w2108(uint8 value); //BG2SC141void mmio_w2109(uint8 value); //BG3SC142void mmio_w210a(uint8 value); //BG4SC143void mmio_w210b(uint8 value); //BG12NBA144void mmio_w210c(uint8 value); //BG34NBA145void mmio_w210d(uint8 value); //BG1HOFS146void mmio_w210e(uint8 value); //BG1VOFS147void mmio_w210f(uint8 value); //BG2HOFS148void mmio_w2110(uint8 value); //BG2VOFS149void mmio_w2111(uint8 value); //BG3HOFS150void mmio_w2112(uint8 value); //BG3VOFS151void mmio_w2113(uint8 value); //BG4HOFS152void mmio_w2114(uint8 value); //BG4VOFS153void mmio_w2115(uint8 value); //VMAIN154void mmio_w2116(uint8 value); //VMADDL155void mmio_w2117(uint8 value); //VMADDH156void mmio_w2118(uint8 value); //VMDATAL157void mmio_w2119(uint8 value); //VMDATAH158void mmio_w211a(uint8 value); //M7SEL159void mmio_w211b(uint8 value); //M7A160void mmio_w211c(uint8 value); //M7B161void mmio_w211d(uint8 value); //M7C162void mmio_w211e(uint8 value); //M7D163void mmio_w211f(uint8 value); //M7X164void mmio_w2120(uint8 value); //M7Y165void mmio_w2121(uint8 value); //CGADD166void mmio_w2122(uint8 value); //CGDATA167void mmio_w2123(uint8 value); //W12SEL168void mmio_w2124(uint8 value); //W34SEL169void mmio_w2125(uint8 value); //WOBJSEL170void mmio_w2126(uint8 value); //WH0171void mmio_w2127(uint8 value); //WH1172void mmio_w2128(uint8 value); //WH2173void mmio_w2129(uint8 value); //WH3174void mmio_w212a(uint8 value); //WBGLOG175void mmio_w212b(uint8 value); //WOBJLOG176void mmio_w212c(uint8 value); //TM177void mmio_w212d(uint8 value); //TS178void mmio_w212e(uint8 value); //TMW179void mmio_w212f(uint8 value); //TSW180void mmio_w2130(uint8 value); //CGWSEL181void mmio_w2131(uint8 value); //CGADDSUB182void mmio_w2132(uint8 value); //COLDATA183void mmio_w2133(uint8 value); //SETINI184185uint8 mmio_r2134(); //MPYL186uint8 mmio_r2135(); //MPYM187uint8 mmio_r2136(); //MPYH188uint8 mmio_r2137(); //SLHV189uint8 mmio_r2138(); //OAMDATAREAD190uint8 mmio_r2139(); //VMDATALREAD191uint8 mmio_r213a(); //VMDATAHREAD192uint8 mmio_r213b(); //CGDATAREAD193uint8 mmio_r213c(); //OPHCT194uint8 mmio_r213d(); //OPVCT195uint8 mmio_r213e(); //STAT77196uint8 mmio_r213f(); //STAT78197198uint8 mmio_read(unsigned addr);199void mmio_write(unsigned addr, uint8 data);200201void latch_counters();202203204