Donkey Kong Spooky Remix in Retropie?
-
@SpudsMcToole i spent time answering to your "capsed" questions in https://retropie.org.uk/forum/post/200689 :
- i explained why your previous replacement of dkongx11 with an unsupported rom wouldn't work anymore, in the simplest way possible.
- i explained what you need to have valid romsets, what's important in their content, in the simplest way possible.
- i told you i would add this hack next
- i pointed you to some guidelines on how you can port a hbmame driver to fbneo, in case you were interested (i thought you would be, considering your request for hacks support, you think you don't have what it takes, fair enough, i wasn't expecting anything about this, i'll be mentioning a fact though : until a few years ago when i started working on fbalpha, the most i could do with C/C++ was reading a documentation on how to print "hello world" in a terminal)
Your answer ? More caps and complaints about not understanding, especially not knowing anything about concepts clearly explained in the retropie documentation, while you claim you search documentation before posting anything. I think i was totally right to be pissed off by this.
@SpudsMcToole said in Donkey Kong Spooky Remix in Retropie?:
it appears that the "correct" ROMs change on literally a daily basis
Nope, a given romset for a specific game might change every few years at most, people who say maintaining romsets is time-consuming are wrong, for a given game to stop working in fbneo, since detection of files inside a romset is crc-based instead of name-based, it would mean someone in the world opened a cabinet and desoldered stuff on the pcb to dump it and the result of his dump was different (and more correct !) than known dumps, it doesn't happen everyday.
-
@barbudreadmon - Nice, that's great to have CRC matching in FBNeo. I have been exploiting it for a few years now using it to merge 3 different Neo-Geo BIOS file sets. Those being mame2003, mame2003-plus and FBNeo. A single file to run them all. I would leave FBNeo with native names but rename mame2003 and mame2003-plus conflicts. Now I can name FBNeo files to whatever too! ;)
-
@barbudreadmon "Nope, a given romset for a specific game might change every few years at most, people who say maintaining romsets is time-consuming are wrong"
Ah, so the docs you're so angry at me for supposedly not reading are in fact a load of rubbish?
-
@barbudreadmon Hi. I think I understand the changes to DK's .cpp file you've made for Spooky.
Two questions I have please: Is the 0x01000 (for example) a reference to the size of the bin file? If so, how do you calculate or find this from the bin file?
-
@barbudreadmon said in Donkey Kong Spooky Remix in Retropie?:
@SpudsMcToole said in Donkey Kong Spooky Remix in Retropie?:
People say "there's a dat", as if we have a clue what that is, where it's located or what we're meant to do to what with it.
Which means you never read retropie's arcade documentation, neither forum rules that says to search documentation before asking stuff, should i congratulate you or something ? Or should i pity you ? "poor poor guy, he doesn't have a few minutes to spend reading a documentation people spent hours writing".
Are you serious there ?
no need to be little a user acting like your better because you think your a better coder it really in bad taste imho. The user was asking for help no need for insults it doesnt reflect well on the community. Pointing to a link to read would be more helpful in this case
-
@spud11 said in Donkey Kong Spooky Remix in Retropie?:
Two questions I have please: Is the 0x01000 (for example) a reference to the size of the bin file?
Exactly, to get the right value you just have to get the file size (
4096
here) and convert it to hexadecimal (1000
, which you then pad with0x0
at the left,0x
is to tell C/C++ it's an hexadecimal, and the zeros are for driver cosmetics), but in this case you don't even need to do that, see https://github.com/Robbbert/hbmame/blob/0d44f5dfa936c820507bc1408c6c246ce513e238/src/hbmame/drivers/dkong.cpp#L306-L335 , the size are already in there (3rd argument in theROM_LOAD
calls).Another example, for
dkchrmx
the fbneo driver will look like this :// Donkey Kong Christmas Remix (Hack) static struct BurnRomInfo dkchrmxRomDesc[] = { { "c_5et_g.bin", 0x01000, 0xba70b88b, 1 }, // 0 maincpu { "c_5ct_g.bin", 0x01000, 0x5ec461ec, 1 }, // 1 { "c_5bt_g.bin", 0x01000, 0x1c97d324, 1 }, // 2 { "c_5at_g.bin", 0x01000, 0xb9005ac0, 1 }, // 3 { "dkchrmx.bin", 0x10000, 0xe5273cee, 2 }, // 4 braze { "s_3i_b.bin", 0x00800, 0x45a4ed06, 3 }, // 5 soundcpu { "s_3j_b.bin", 0x00800, 0x4743fe92, 3 }, // 6 { "v_5h_b.ch", 0x00800, 0x0b92cc7a, 4 }, // 7 gfx1 { "v_3pt.ch", 0x00800, 0x6a04f93f, 4 }, // 8 { "l_4m_b.ch", 0x00800, 0xc6ddc85f, 5 }, // 9 gfx2 { "l_4n_b.ch", 0x00800, 0x2cd9cfdf, 5 }, // 10 { "l_4r_b.ch", 0x00800, 0xc1ea6688, 5 }, // 11 { "l_4s_b.ch", 0x00800, 0x9473d658, 5 }, // 12 { "c-2k.ch", 0x00100, 0xc6cee97e, 6 }, // 13 proms { "c-2j.ch", 0x00100, 0x1f64ac3d, 6 }, // 14 { "v-5e.ch", 0x00100, 0x5a8ca805, 6 }, // 15 { "diag.bin", 0x1000, 0x00000000, 0 | BRF_OPT }, }; STD_ROM_PICK(dkchrmx) STD_ROM_FN(dkchrmx) struct BurnDriver BurnDrvDkchrmx = { "dkchrmx", "dkong", NULL, "dkong", "2017", "Donkey Kong Christmas Remix (Hack)\0", NULL, "Sock Master", "Miscellaneous", NULL, NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE | BDF_ORIENTATION_VERTICAL | BDF_ORIENTATION_FLIPPED | BDF_HISCORE_SUPPORTED, 2, HARDWARE_MISC_PRE90S, GBF_PLATFORM | GBF_ACTION, 0, NULL, dkchrmxRomInfo, dkchrmxRomName, NULL, NULL, DkongSampleInfo, DkongSampleName, DkongInputInfo, NULL, dkongxInit, DrvExit, DrvFrame, dkongDraw, DrvScan, &DrvRecalc, 0x100, 224, 256, 3, 4 };
Just a copy/paste and replacing a few values.
@SpudsMcToole said in Donkey Kong Spooky Remix in Retropie?:
Ah, so the docs you're so angry at me for supposedly not reading are in fact a load of rubbish?
No, "Note: the process of verifying and rebuilding ROMs is complex and requires a substantial investment of time and effort in order to master. If your goal is to have working ROMs, it is almost always simpler to download a full ROM collection that has already been verified to match the emulator you chose." is certainly true (if you never did it), the only rubbish here is the fact you are using it as an excuse for not knowing anything from the arcade documentation, while you admitted above that you don't know where to get the "simpler to download full ROM collection" in the first place.
@grant2258 As i already said ignore me and i'll ignore you, i still hold you responsible for barry harris getting the easy way out after scamming the fbneo team.
-
@barbudreadmon Thank you so much. That's brilliant. Learnt something new today.
-
@spud11 No problem, and i just added
dkchrmx
to fbneo (sorry i was busy yesterday). -
I dont even know barry harris i will agree to ignore you on this subject. Its nice to not be rude to people even ones learning the ropes :).
-
@barbudreadmon Thank you. I appreciate it.
-
@mitu said in Donkey Kong Spooky Remix in Retropie?:
You've done that exact same thing with lr-fbneo, where @barbudreadmon is the main developer.
Wait, when? Is this all about a comedy caps line that was directed at a log file, not a person? Sheesh.
Anyway, I'm delighted that both games work now, so my sincere and genuine thanks to barbudreadmon, even if s/he is a grump.
-
While we're talking about Kong variants, is kong2600 supported by fbneo or anything else?
-
@JimNeatface Not previously but using the same method i explained above, you would convert https://github.com/Robbbert/hbmame/blob/0d44f5dfa936c820507bc1408c6c246ce513e238/src/hbmame/drivers/dkong.cpp#L135-L161 to this :
// Donkey Kong (2600 graphics, hack) static struct BurnRomInfo kong2600RomDesc[] = { { "c_5et_g.bin", 0x1000, 0xba70b88b, 1 }, // 0 maincpu { "c_5ct_g.bin", 0x1000, 0x5ec461ec, 1 }, // 1 { "c_5bt_g.bin", 0x1000, 0x1c97d324, 1 }, // 2 { "c_5at_g.bin", 0x1000, 0xb9005ac0, 1 }, // 3 { "s_3i_b.bin", 0x0800, 0x45a4ed06, 2 }, // 4 soundcpu { "s_3j_b.bin", 0x0800, 0x4743fe92, 2 }, // 5 { "k2600.3n", 0x0800, 0x0e6a2a6d, 3 }, // 6 gfx1 { "k2600.3p", 0x0800, 0xca57e0f4, 3 }, // 7 { "k2600.7c", 0x0800, 0xcf450a43, 4 }, // 8 gfx2 { "k2600.7d", 0x0800, 0xd5046907, 4 }, // 9 { "k2600.7e", 0x0800, 0x1539fe2a, 4 }, // 10 { "k2600.7f", 0x0800, 0x77cc00ab, 4 }, // 11 { "k2600.2k", 0x0100, 0x1e82d375, 5 }, // 12 proms { "k2600.2j", 0x0100, 0x2ab01dc8, 5 }, // 13 { "k2600.5f", 0x0100, 0x44988665, 5 }, // 14 }; STD_ROM_PICK(kong2600) STD_ROM_FN(kong2600) struct BurnDriver BurnDrvKong2600 = { "kong2600", "dkong", NULL, "dkong", "1999", "Donkey Kong (2600 graphics, hack)\0", NULL, "Vic Twenty George", "Miscellaneous", NULL, NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE | BDF_ORIENTATION_VERTICAL | BDF_ORIENTATION_FLIPPED | BDF_HISCORE_SUPPORTED, 2, HARDWARE_MISC_PRE90S, GBF_PLATFORM | GBF_ACTION, 0, NULL, kong2600RomInfo, kong2600RomName, NULL, NULL, DkongSampleInfo, DkongSampleName, DkongInputInfo, DkongfDIPInfo, dkongInit, DrvExit, DrvFrame, dkongDraw, DrvScan, &DrvRecalc, 0x100, 224, 256, 3, 4 };
There is an additional trick here, see the
dkongInit
? In the first 2 hacks we were usingdkongxInit
(because that's whatdkongx11
is using, and those 2 hacks seem to run exactly the same way considering you are supposed to replace this romset), it is the function used to initialize the emulated hardware.The reason we won't be using the same is actually quite simple, see https://github.com/Robbbert/hbmame/blob/0d44f5dfa936c820507bc1408c6c246ce513e238/src/hbmame/drivers/dkong.cpp#L518-L519, if you look at args 4 & 7 you'll notice they (
dk_braze
/init_dkongx
) are different from this hack (dkong2b
/empty_init
), those are the initialization functions in hbmame (afaik mame/hbmame uses 2 args instead of 1 for modularity purpose).In hbmame
kong2600
uses the same initialization thandkrainbow
(btw it is actually the same initialization than "standard" dkong hardware),dkrainbow
is already supported by fbneo and usesdkongInit
for initialization, so we'll also use this function forkong2600
.PS :
kong2600
is now available in fbneo if you rebuild from sources.
PS2 : if someone else want another variant, i hope some people will try applying what i tried to explain, contributors are always welcome. -
@barbudreadmon Thanks very much! it runs perfectly.
I wanted to ask, why is the rivets screen on the spooky remix a differnt colour to HBmame? (HBmame on the left)
-
@barbudreadmon Thanks for including
kong2600
too.I noticed with
hbmame
it's got several other DK variants such asDonkey Kong Reverse
. Adding the drivers doesn't look too difficult based on the excellent advice you've provided, so I'd like to try to add these variants to the drivers list and recompile, if possible.I've successfully compiled FB Neo's source by downloading it from your github repository to my Pi , going to the
FBNeo-master/src/burner/libretro
folder and compiling it on my Pi withmake -j5 -f Makefile platform=rpi3
.However, it takes some time to compile. I've had a look at deleting some of the drivers and so forth, but that looks quite challenging, and so I was wondering whether FBNeo has a
SUBTARGET
flag or, even better yet, an ability just to target one driver liked_dkong.cpp
which I note is in theFBNeo-master/src/burn/drv/pre90s/
folder.Thank you for any advice.
-
@JimNeatface Oops, you are right, it seems we overlooked the
dkongx
based clones when we fixeddkong
's palette last year, it should be ok now.@spud11 No, there is no parameter to build only subtargets in FBNeo.
-
@spud11 Donkey Kong Reverse? What's that one? This is what I get in HBmame -
-
@JimNeatface I think it may have just been added about half way down the list:
GAME( 2013, dkong2m, dkong, dkong2b, dkong, dkong_state, empty_init, ROT270, "hack", "Donkey Kong (2 marios)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, dkongbcc, dkong, dkong2b, dkong, dkong_state, empty_init, ROT270, "Jeff Kulczycki", "Donkey Kong (US set 1 with barrel control coloring)", MACHINE_SUPPORTS_SAVE ) GAME( 2005, dkongex, dkong, dkong2b, dkongex, dkong_state, empty_init, ROT270, "Jeff Kulczycki", "Donkey Kong Foundry", MACHINE_SUPPORTS_SAVE ) GAME( 2019, dkfreerun, dkong, dkong2b, dkong, dkong_state, empty_init, ROT270, "PaulGoes", "Donkey Kong Freerun Edition", MACHINE_SUPPORTS_SAVE ) GAME( 2019, dkcbarrel, dkong, dkong2b, dkong, dkong_state, empty_init, ROT270, "PaulGoes", "Donkey Kong Crazy Barrels Edition", MACHINE_SUPPORTS_SAVE ) GAME( 2007, dkongp, dkong, dkong2b, dkong, dkong_state, empty_init, ROT270, "Don Hodges", "Donkey Kong (patched)", MACHINE_SUPPORTS_SAVE ) GAME( 2001, dkongpac, dkong, dkong2b, dkong, dkong_state, empty_init, ROT270, "Tim Appleton", "Donkey Kong (Pacman graphics)", MACHINE_SUPPORTS_SAVE ) GAME( 2019, dkongrev, dkong, dkong2b, dkong, dkong_state, empty_init, ROT270, "PaulGoes", "Donkey Kong Reverse", MACHINE_SUPPORTS_SAVE ) GAME( 2015, dkrainbow, dkong, dkong2b, dkong, dkong_state, empty_init, ROT270, "Sock Master", "Rainbow Donkey Kong", MACHINE_SUPPORTS_SAVE ) GAME( 2015, dkrdemo, dkong, dkong2b, dkrdemo, dkong_state, empty_init, ROT270, "Sock Master", "Donkey Kong Remix demo 1.8", MACHINE_SUPPORTS_SAVE ) GAME( 2016, dktrainer, dkong, dkong2b, dkong, dkong_state, empty_init, ROT270, "Sock Master", "Donkey Kong Trainer 1.01", MACHINE_SUPPORTS_SAVE ) GAME( 2016, dkpace, dkong, dkong2b, dkong, dkong_state, empty_init, ROT270, "Sock Master", "Donkey Kong Pace", MACHINE_SUPPORTS_SAVE ) GAME( 2017, dkchrmx, dkong, dk_braze, dkongx, dkong_state, init_dkongx, ROT270, "Sock Master", "Donkey Kong Christmas Remix", MACHINE_SUPPORTS_SAVE ) GAME( 2018, dkspkyrmx, dkong, dk_braze, dkongx, dkong_state, init_dkongx, ROT270, "Sock Master", "Donkey Kong Spooky Remix", MACHINE_SUPPORTS_SAVE ) GAME( 1999, kong2600, dkong, dkong2b, dkong, dkong_state, empty_init, ROT270, "Vic Twenty George", "Donkey Kong (2600 graphics)", MACHINE_SUPPORTS_SAVE ) GAME( 2004, nadkong, dkong, dkong2b, dkong, dkong_state, empty_init, ROT270, "hack", "Naked Donkey Kong", MACHINE_SUPPORTS_SAVE )
See:
-
@barbudreadmon That's no problem. I added the
-j5
and things sped up a bit.I added the following to the
d_dkong.cpp
, extracting the basics from thehbmame
equivalent file, and recompiled:// Donkey Kong Reverse // Hack by Paul Goes (2019) static struct BurnRomInfo dkongrevRomDesc[] = { { "dkongrev.5et", 0x1000, 0xee02057e, 1 }, // 0 maincpu { "dkongrev.5ct", 0x1000, 0xe6fabd0f, 1 }, // 1 { "dkongrev.5bt", 0x1000, 0x31c5bea3, 1 }, // 2 { "dkongrev.5at", 0x1000, 0xc7d04ef3, 1 }, // 3 { "s_3i_b.bin", 0x0800, 0x45a4ed06, 2 }, // 4 soundcpu { "s_3j_b.bin", 0x0800, 0x4743fe92, 2 }, // 5 { "v_5h_b.bin", 0x0800, 0x12c8c95d, 3 }, // 6 gfx1 { "v_3pt.bin", 0x0800, 0x15e9c5e9, 3 }, // 7 { "l_4m_b.bin", 0x0800, 0x59f8054d, 4 }, // 8 gfx2 { "l_4n_b.bin", 0x0800, 0x672e4714, 4 }, // 9 { "l_4r_b.bin", 0x0800, 0xfeaa59ee, 4 }, // 10 { "l_4s_b.bin", 0x0800, 0x20f2ef7e, 4 }, // 11 { "c-2k.bpr", 0x0100, 0xe273ede5, 5 }, // 12 proms { "c-2j.bpr", 0x0100, 0xd6412358, 5 }, // 13 { "v-5e.bpr", 0x0100, 0xb869b8f5, 5 }, // 14 }; STD_ROM_PICK(dkongrev) STD_ROM_FN(dkongrev) struct BurnDriver BurnDrvDkongrev = { "dkongrev", "dkong", NULL, "dkong", "2019", "Donkey Kong Reverse (Hack)\0", NULL, "Hack (Paul Goes)", "Miscellaneous", NULL, NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE | BDF_ORIENTATION_VERTICAL | BDF_ORIENTATION_FLIPPED | BDF_HISCORE_SUPPORTED, 2, HARDWARE_MISC_PRE90S, GBF_PLATFORM | GBF_ACTION, 0, NULL, dkongrevRomInfo, dkongrevRomName, NULL, NULL, DkongSampleInfo, DkongSampleName, DkongInputInfo, DkongDIPInfo, dkongInit, DrvExit, DrvFrame, dkongDraw, DrvScan, &DrvRecalc, 0x100, 224, 256, 3, 4 };
However, I wound up with an error:
[INFO] Environ GET_LOG_INTERFACE. [INFO] Environ UNSUPPORTED (#65587). [INFO] Content loading skipped. Implementation will load it on its own.
I noticed that some of the roms (eg
Donkey Kong Foundry
) had the following line:{ "diag.bin", 0x1000, 0x00000000, 0 | BRF_OPT },
I didn't include this line. Could that be the problem? Thanks.
-
@spud11 i copy/pasted your code here and
dkongrev
ran totally fine, good job, not sure why it won't load on your side though.[INFO] Environ UNSUPPORTED (#65587).
can be safely ignored, you'll get that kind of warning with probably any core as long as Retropie's RA will be stuck at 1.7.6, but that's just a warning.{ "diag.bin", 0x1000, 0x00000000, 0 | BRF_OPT }
can be safely ommited too, any file with theBRF_OPT
flag is basically not used by FBNeo anyway.Maybe i could figure out something if you posted full logs ?
Edit: btw, i commited your work
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.