Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - infval

Pages: [1]
1
Famicom/NES / Re: Zudu Go ROM Fix
« on: July 15, 2020, 01:04:45 PM »
I've fixed the ROM. I changed the order of the registers (e.g. STA $2016 > STA $2015). The ROM works in the original NintendulatorNRS, EmuVT. All title screens and first levels are tested.

All changes are in Python 3 script: https://gist.github.com/infval/baf4261878d88f93c0b4f3ab1f977c66.
Drag'n'Drop zudugo.bin or run script via command prompt:
Code: [Select]
zudugo_fixer.py zudugo.bin

2
Famicom/NES / Re: Zudu Go ROM Fix
« on: July 14, 2020, 02:09:15 PM »
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:
Code: [Select]
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:
Code: [Select]
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.

3
Famicom/NES / Re: Zudu Go ROM Fix
« on: July 14, 2020, 01:07:46 AM »
It works in MAME.

Pages: [1]