diff options
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/nesemu1/nesemu1.cff | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/examples/nesemu1/nesemu1.cff b/examples/nesemu1/nesemu1.cff index f971091..bcfa3ca 100644 --- a/examples/nesemu1/nesemu1.cff +++ b/examples/nesemu1/nesemu1.cff @@ -105,7 +105,7 @@ struct GamePak { switch { case write and addr >= 0x8000 and this.mapperno == 7; // e.g. Rare games this->setrom(0x8000, 0x8000, val & 7); - for let i = 0; i++ < 4; { + for let i = 0; i < 4; i++ { this.nta[i] = &this.nram[0x400 * ((val >> 4) & 1)]; } case write and addr >= 0x8000 and this.mapperno == 2; // e.g. Rockman, Castlevania @@ -218,7 +218,7 @@ struct PPU { bgaddr (4, 1), showbg (11,1) bool, // reg 3 (w) spsize (5, 1) bool, showsp (12,1) bool, oamaddr (24, 8), slaveflag (6, 1) bool, showbgsp (11,2), oamdata (24, 2), - nmienable (7, 1) bool, emprgb (12, 3), oamindex (26, 2), + nmienable (7, 1) bool, emprgb (13,3), oamindex (26, 2), }, palette [32]u8, oam [256]u8, oam2 [8]PPUSpr, oam3 [8]PPUSpr, @@ -240,7 +240,7 @@ struct PPU { i &= 0x3FFF; if i >= 0x3F00 { if i % 4 == 0 { i &= 0x0F; } - return &ppu.palette[i & 31]; + return &ppu.palette[i & 0x1F]; } if i < 0x2000 { return &g_pak.vbanks[(i / VROM_GRANULARITY) % VROM_PAGES][i % VROM_GRANULARITY]; @@ -291,7 +291,7 @@ struct PPU { ppu.readbuffer = *t; } refreshopenbus(res); - ppu.vaddr.#raw += (ppu.reg.invblank ? 32 : 1); // update address + ppu.vaddr.#raw += (ppu.reg.inc!=0 ? 32 : 1); // update address } return res; } @@ -357,7 +357,7 @@ struct PPU { case 5; // pattern table bytes ppu.tilepat = *mmap(ppu, ppu.pat_addr); case 7; // interleave bits of the two pattern bytes - let p = ppu.tilepat | (*mmap(ppu, ppu.pat_addr|8) << 8); + let p uint = ppu.tilepat | (*mmap(ppu, ppu.pat_addr|8) << 8); p = (p&0xF00F) | ((p&0x0F00)>>4) | ((p&0x00F0)<<4); p = (p&0xC3C3) | ((p&0x3030)>>2) | ((p&0x0C0C)<<2); p = (p&0x9999) | ((p&0x4444)>>1) | ((p&0x2222)<<1); @@ -378,7 +378,7 @@ struct PPU { ++ppu.sprinpos; // next sprite if ppu.sproutpos < 8 { ppu.oam2[ppu.sproutpos].y = ppu.sprtmp; } if ppu.sproutpos < 8 { ppu.oam2[ppu.sproutpos].sprindex = ppu.reg.oamindex; } - let y1 = ppu.sprtmp, y2 int = y1 + (ppu.reg.spsize ? 16 : 8); + let y1 = ppu.sprtmp, y2 int = ppu.sprtmp + (ppu.reg.spsize ? 16 : 8); if !(ppu.scanline >= y2 and ppu.scanline < y2) { ppu.reg.oamaddr = ppu.sprinpos != 2 ? ppu.reg.oamaddr + 3 : 8; } @@ -407,8 +407,8 @@ struct PPU { if showbg { // pick a pixel from shift registers pixel = (ppu.bg_shift_pat >> (xpos*2)) & 3; attr = (ppu.bg_shift_attr >> (xpos*2)) & (pixel != 0 ? 3 : 0); - } else if ppu.vaddr.#raw & 0x3F00 == 0x3F00 and ppu.reg.showbgsp == 0 { - pixel = ppu.vaddr.#raw; + } else if ppu.vaddr.raw & 0x3F00 == 0x3F00 and ppu.reg.showbgsp == 0 { + pixel = ppu.vaddr.raw; } // overlay the sprites |