I fixed
iNES.dll (NintendulatorNRS) for the
Zudu Go. Put
iNES.dll in
NintendulatorNRS\Mappers. Other OneBus roms will be broken.
I substituted the registers based on the
MAME code (
default,
Zudu Go): 2016 > 2015, 2017 > 2014, 2012 > 2013, 2013 > 2012, 2014 > 2017, 2015 > 2016. I don’t know if the correct mapper can fix this.
What I've done:
1. Downloaded the source code of NintendulatorNRS:
http://masterdisk.byethost15.com/blog/libg/static.php?page=NintendulatorNRS.
2. Opened
src/Hardware/h_OneBus.cpp and changed:
if (extended) {
multiCHRStart <<=3;
if (bank ==0x20) *EMU->multiCHRSize <<=3;
EMU->SetCHR_Ptr1(bank |0x0 ^flip, &base[((((reg2000[0x16] &~1)&chrAND |chrOR) <<3 |EVA |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x1 ^flip, &base[((((reg2000[0x16] | 1)&chrAND |chrOR) <<3 |EVA |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x2 ^flip, &base[((((reg2000[0x17] &~1)&chrAND |chrOR) <<3 |EVA |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x3 ^flip, &base[((((reg2000[0x17] | 1)&chrAND |chrOR) <<3 |EVA |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x4 ^flip, &base[((( reg2000[0x12] &chrAND |chrOR) <<3 |EVA |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x5 ^flip, &base[((( reg2000[0x13] &chrAND |chrOR) <<3 |EVA |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x6 ^flip, &base[((( reg2000[0x14] &chrAND |chrOR) <<3 |EVA |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x7 ^flip, &base[((( reg2000[0x15] &chrAND |chrOR) <<3 |EVA |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
} else {
chrOR |=VA18 <<8;
multiCHRStart |=VA18 <<(bit4pp? 9: 8);
EMU->SetCHR_Ptr1(bank |0x0 ^flip, &base[ (((reg2000[0x16] &~1)&chrAND |chrOR |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x1 ^flip, &base[ (((reg2000[0x16] | 1)&chrAND |chrOR |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x2 ^flip, &base[ (((reg2000[0x17] &~1)&chrAND |chrOR |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x3 ^flip, &base[ (((reg2000[0x17] | 1)&chrAND |chrOR |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x4 ^flip, &base[ (( reg2000[0x12] &chrAND |chrOR |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x5 ^flip, &base[ (( reg2000[0x13] &chrAND |chrOR |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x6 ^flip, &base[ (( reg2000[0x14] &chrAND |chrOR |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x7 ^flip, &base[ (( reg2000[0x15] &chrAND |chrOR |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
}
to:
if (extended) {
multiCHRStart <<=3;
if (bank ==0x20) *EMU->multiCHRSize <<=3;
EMU->SetCHR_Ptr1(bank |0x0 ^flip, &base[((((reg2000[0x15] &~1)&chrAND |chrOR) <<3 |EVA |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x1 ^flip, &base[((((reg2000[0x15] | 1)&chrAND |chrOR) <<3 |EVA |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x2 ^flip, &base[((((reg2000[0x14] &~1)&chrAND |chrOR) <<3 |EVA |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x3 ^flip, &base[((((reg2000[0x14] | 1)&chrAND |chrOR) <<3 |EVA |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x4 ^flip, &base[((( reg2000[0x13] &chrAND |chrOR) <<3 |EVA |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x5 ^flip, &base[((( reg2000[0x12] &chrAND |chrOR) <<3 |EVA |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x6 ^flip, &base[((( reg2000[0x17] &chrAND |chrOR) <<3 |EVA |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x7 ^flip, &base[((( reg2000[0x16] &chrAND |chrOR) <<3 |EVA |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
} else {
chrOR |=VA18 <<8;
multiCHRStart |=VA18 <<(bit4pp? 9: 8);
EMU->SetCHR_Ptr1(bank |0x0 ^flip, &base[ (((reg2000[0x15] &~1)&chrAND |chrOR |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x1 ^flip, &base[ (((reg2000[0x15] | 1)&chrAND |chrOR |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x2 ^flip, &base[ (((reg2000[0x14] &~1)&chrAND |chrOR |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x3 ^flip, &base[ (((reg2000[0x14] | 1)&chrAND |chrOR |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x4 ^flip, &base[ (( reg2000[0x13] &chrAND |chrOR |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x5 ^flip, &base[ (( reg2000[0x12] &chrAND |chrOR |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x6 ^flip, &base[ (( reg2000[0x17] &chrAND |chrOR |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
EMU->SetCHR_Ptr1(bank |0x7 ^flip, &base[ (( reg2000[0x16] &chrAND |chrOR |VA21 <<11) &AND |OR) <<10 &chrMask], FALSE);
}
3. Deleted the code (left empty functions) in
src/Hardware/Sound/s_VRC7.cpp because
emu2413.cpp was not found.
4. Added Winmm.lib to INES Project: Properties > Linker > Input > Additional Dependencies.
5. Compiled INES.