*\r
* You should have received a copy of the GNU General Public License\r
* along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
+ *\r
+ * FDS Conversion\r
+ *\r
*/\r
\r
#include "mapinc.h"\r
\r
-static uint8 reg[8], cmd, IRQa;\r
+static uint8 reg[8], cmd, IRQa = 0, isirqused = 0;\r
static int32 IRQCount;\r
\r
static SFORMAT StateRegs[]=\r
static DECLFW(UNLKS7032Write)\r
{\r
// FCEU_printf("bs %04x %02x\n",A,V);\r
- switch(A)\r
+ switch(A&0xF000)\r
{\r
// case 0x8FFF: reg[4]=V; Sync(); break;\r
- case 0x8000: X6502_IRQEnd(FCEU_IQEXT); IRQCount=(IRQCount&0x000F)|(V&0x0F); break;\r
- case 0x9000: X6502_IRQEnd(FCEU_IQEXT); IRQCount=(IRQCount&0x00F0)|((V&0x0F)<<4); break;\r
- case 0xA000: X6502_IRQEnd(FCEU_IQEXT); IRQCount=(IRQCount&0x0F00)|((V&0x0F)<<8); break;\r
- case 0xB000: X6502_IRQEnd(FCEU_IQEXT); IRQCount=(IRQCount&0xF000)|(V<<12); break;\r
- case 0xC000: X6502_IRQEnd(FCEU_IQEXT); IRQa=1; break;\r
+ case 0x8000: X6502_IRQEnd(FCEU_IQEXT); IRQCount=(IRQCount&0x000F)|(V&0x0F); isirqused = 1; break;\r
+ case 0x9000: X6502_IRQEnd(FCEU_IQEXT); IRQCount=(IRQCount&0x00F0)|((V&0x0F)<<4); isirqused = 1; break;\r
+ case 0xA000: X6502_IRQEnd(FCEU_IQEXT); IRQCount=(IRQCount&0x0F00)|((V&0x0F)<<8); isirqused = 1; break;\r
+ case 0xB000: X6502_IRQEnd(FCEU_IQEXT); IRQCount=(IRQCount&0xF000)|(V<<12); isirqused = 1; break;\r
+ case 0xC000: if(isirqused) { X6502_IRQEnd(FCEU_IQEXT); IRQa=1; } break;\r
case 0xE000: cmd=V&7; break;\r
case 0xF000: reg[cmd]=V; Sync(); break;\r
}\r
}\r
\r
-static void UNLSMB2JIRQHook(int a)\r
+static void FP_FASTAPASS(1) UNLSMB2JIRQHook(int a)\r
{\r
if(IRQa)\r
{\r