Crystalis Uses MMC3 scanline for a moving vertical split to wrap the playfield while accommodating the status bar. Cobra Triangle and Ironsword: Wizards and Warriors II They rely on the dummy read for the sta $4000,X instruction to acknowledge pending APU IRQs. Captain Planet, Dirty Harry, Infiltrator, Mad Max, Paperboy, The Last Starfighter Mindscape games which rely on the open bus behavior of controller reads and expects them to return exactly 0x40 or 0x41 see Standard controller. B-Wings, Fantasy Zone II, Demon Sword / Fudō Myōō Den, Fushigi no Umi no Nadia, Krusty's Fun House, Trolls in Crazyland, Over Horizon, Super Xevious: GAMP no Nazo, and Zippy Race They write to CHR ROM and expect the writes to have no effect. See the notes on accessing PPUDATA during rendering on the PPU scrolling page. Incorrect emulation clips the scorebar to half size. Burai Fighter (U) It accesses PPUDATA during rendering to draw the scorebar. Bill & Ted also turns off and re-enables rendering midframe to switch CHR banks (such as in the black border above dialog boxes). Bill & Ted's Excellent Adventure and some other MMC1 games These depend on the mapper ignoring successive writes see iNES Mapper 001 (the talk page for that page might be informative too). Bee 52 This needs accurate DMC timing and relies on PPUSTATUS bit 5 (sprite overflow) as well. If WRAM is present and enabled, some pre-loaded values will cause BT&DD to crash at the end of stage 1 when Abobo makes his first appearance and LGM to crash when playing boss music. Additionally, LGM disables WRAM through $A001, which some emulators disregard in order to kludge MMC6 games into working. Battletoads & Double Dragon and Low G Man They read from WRAM at $6000–$7FFF despite there being none on the cartridge, relying on the values produced by open bus behavior. This usually occurs immediately upon entering the first stage if the timing is off by enough, and might cause random hangs at other points otherwise. If the timing is off so that the background image appears too high or too low at this point, a sprite zero hit will fail to trigger, hanging the game. Because it continuously streams animation frames into CHR RAM, it leaves rendering disabled for a number of scanlines into the visible frame to gain extra VRAM upload time and then enables it. Battletoads Infamous among emulator developers for requiring fairly precise CPU and PPU timing (including the cycle penalty for crossing pages) and a fairly robust sprite 0 implementation. Batman: RotJ also executes code from PRG RAM. The $2007 read must take into account not only the 1-byte delay but also CHR bank switching. Batman: Return of the Joker and Dragon Quest These read level data and control logic from CHR ROM. Bases Loaded II The screen glitches after a pitch is thrown ( screenshot) if writing $00 then $80 to PPUCTRL during vertical blank does not cause an additional NMI. (The code is at $D603.) The scroll split in "Balloon Trip" also depends to an extent on the correct number of CPU cycles from the start of NMI to the start of display, but it's not particularly picky. Balloon Fight It reads the nametables through PPUDATA ($2007) to twinkle the stars in the background. (The North American version enables WRAM first.) Arkista's Ring Crashes after completing the first loop if a read from PPU open bus returns 1 on bit 6, which is 0 unless using a mod such as NESRGB or Hi-Def NES that uses EXT output. If RAM is not enabled is used and the RAM's power-up value is anything but $00, unwanted color emphasis gets applied until the reset button is pressed. If MMC1 powers up with RAM disabled, the values written in the init routine go nowhere. Air Fortress (J) Expects RAM to be enabled at power-up, as it clears WRAM before enabling it ($E000 D4). Pac-Man (Tengen), and Spelunker These rely on 1-cycle NMI delay when PPUSTATUS ($2002) bit 7 gets set inside vblank (if $2002 has not been read yet), in which PPUSTATUS bit 7 can be read as true. If you want to simulate that behaviour in emulator, increase CHR-ROM banks number in iNES header twice and paste zeros in the the CHR area. But if you are developing a flash-cart that just pre-programs its flash/SRAM memory with the CHR ROM data without address wrapping, graphical bugs will happen. A CHR ROM of the correct size will wrap the addresses correctly by discarding the most significant bits, as do most emulators. Abarenbou Tengu (J), Captain Tsubasa 2 (J), Noah's Ark (E), Rampart (U), Zombie Nation (U) These refer to CHR ROM banks outside their size.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |