diff --git a/.gitignore b/.gitignore index 044c3a2..ee967fb 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,5 @@ nesdebug*.txt proguard4.7 /HalfNES.app /*.app +/battletoads double dragon.txt +/justbreedbug.txt \ No newline at end of file diff --git a/README.md b/README.md index ed6382b..6ba9cc0 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,11 @@ halfnes ======= -[![Join the chat at https://gitter.im/andrew-hoffman/halfnes](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/andrew-hoffman/halfnes?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) - An accurate NES/Famicom emulator +[![Join the chat at https://gitter.im/andrew-hoffman/halfnes](https://badges.gitter.im/Join%20Chat.svg)] +(https://gitter.im/andrew-hoffman/halfnes?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + Current Features ---------------- @@ -65,14 +66,16 @@ development, almost all US released games will start, but certain games still have graphics corruption or freezing problems. Please report any issues you encounter with the emulator or with games on the Github Issues page (https://github.com/andrew-hoffman/halfnes/issues). -PAL games are now supported as well but are likely to have more issues +PAL games are now supported as well but are likely to have more issues. Please change the system type to PAL in preferences to run these. Building instructions --------------------- The project requires two libraries to build: JInput (gamepad support) and The Happy Java Library 1.3 (parallel for loops). -Sorry there's no decent build script included with this package, at this point you might as well just create a new Netbeans project, import all the src files, and add those two libraries in the project properties. +Sorry there's no decent build script included with the source, just the +Netbeans auto-generated one. You might want to create a new Netbeans project, +import all the src files, and add those two libraries in the project properties. Do NOT ask me where to find ROM files of commercial games. Some public domain homebrew ROMs are available at www.pdroms.de for testing diff --git a/changelog.txt b/changelog.txt index 0bcae7a..8081774 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,4 +1,9 @@ HalfNES Version Notes: +060 (8/29/2015) +-Fixed Battletoads and Battletoads: Double Dragon freezes on certain levels +-Reduced jerkiness of scrolling in 50 fps games + (not eliminated entirely unless your monitor is also set to 50 FPS) +-Improved performance a bit, there was some slow cheat engine code constantly running 059 (7/28/2015) -Fixed certain FDS NSFs that wanted to write to bankswitched areas -Added PAL and Dendy (Hybrid PAL console that plays unmodified NTSC games) support diff --git a/src/com/grapeshot/halfnes/CPU.java b/src/com/grapeshot/halfnes/CPU.java index 559acf1..0bebe70 100644 --- a/src/com/grapeshot/halfnes/CPU.java +++ b/src/com/grapeshot/halfnes/CPU.java @@ -24,7 +24,7 @@ public final class CPU { //NES 6502 is missing decimal mode, but most other 6502s have it private boolean interruptDelay = false; private final static String[] opcodes = opcodes(); - + //Battletoads Hack until I get around to making a truly cycle accurate CPU core. //Delays the write of a STA, STX, or STY until the first cycle of the NEXT instruction //which is enough to move it a few PPU clocks after the scroll is changed @@ -136,7 +136,7 @@ public final void runcycle(final int scanline, final int pixel) { //this doesn't look right any more //who patched this in and when? (wasn't me, it was for some bug...) } - + if (dirtyBattletoadsHack && cycles == 1) { ram.write(hackAddr, hackData); dirtyBattletoadsHack = false; diff --git a/src/com/grapeshot/halfnes/NES.java b/src/com/grapeshot/halfnes/NES.java index a774a0b..932bb5d 100644 --- a/src/com/grapeshot/halfnes/NES.java +++ b/src/com/grapeshot/halfnes/NES.java @@ -19,7 +19,7 @@ public class NES { private CPURAM cpuram; private PPU ppu; private ControllerInterface controller1, controller2; - final public static String VERSION = "059"; + final public static String VERSION = "060"; public boolean runEmulation = false; private boolean dontSleep = false; public long frameStartTime, framecount, frameDoneTime; diff --git a/src/com/grapeshot/halfnes/mappers/MMC5Mapper.java b/src/com/grapeshot/halfnes/mappers/MMC5Mapper.java index fde147e..9045733 100644 --- a/src/com/grapeshot/halfnes/mappers/MMC5Mapper.java +++ b/src/com/grapeshot/halfnes/mappers/MMC5Mapper.java @@ -249,8 +249,6 @@ public final int cartRead(final int addr) { if (!ppu.renderingOn() || ppu.scanline > 241) { inFrame = false; } - // by default has wram at 0x6000 and cartridge at 0x8000-0xfff - // but some mappers have different so override for those if (addr >= 0x8000) { //rom or maybe wram