/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
- * Copyright (C) 2002 Xodnizel
+ * Copyright (C) 2005 CaH4e3
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
*/
#include "mapinc.h"
+#include "mmc3.h"
-static DECLFW(M58Write)
+static DECLFW(UNLKOF97CMDWrite)
{
- //printf("$%04x:$%02x\n",A,V);
- if(A&0x40)
- {
- ROM_BANK16(0x8000,(A&0x07));
- ROM_BANK16(0xc000,(A&0x07));
- }
- else
- ROM_BANK32((A&0x06)>>1);
+ V=(V&0xD8)|((V&0x20)>>4)|((V&4)<<3)|((V&2)>>1)|((V&1)<<2); //76143502
+ if(A==0x9000) A=0x8001;
+ MMC3_CMDWrite(A,V);
+}
- VROM_BANK8((A&0x38)>>3);
- MIRROR_SET2((V&2)>>1);
+static DECLFW(UNLKOF97IRQWrite)
+{
+ V=(V&0xD8)|((V&0x20)>>4)|((V&4)<<3)|((V&2)>>1)|((V&1)<<2);
+ if(A==0xD000) A=0xC001;
+ else if(A==0xF000) A=0xE001;
+ MMC3_IRQWrite(A,V);
+}
+
+static void UNLKOF97Power(void)
+{
+ GenMMC3Power();
+ SetWriteHandler(0x8000,0xA000,UNLKOF97CMDWrite);
+ SetWriteHandler(0xC000,0xF000,UNLKOF97IRQWrite);
}
-void Mapper58_init(void)
+void UNLKOF97_Init(CartInfo *info)
{
- ROM_BANK32(0);
- VROM_BANK8(0);
- SetWriteHandler(0x8000,0xFFFF,M58Write);
+ GenMMC3_Init(info, 128, 256, 0, 0);
+ info->Power=UNLKOF97Power;
}