Asure
Grand Master
Can someone explain this bug in detail? What happens, what are the requirements?机翻 · 通用领域
Is there a ROM that fixes the Kingpin dead bug?
Can someone explain this bug in detail? What happens, what are the requirements?机翻 · 通用领域
Is there a ROM that fixes the Kingpin dead bug?
Thanks for giving it a try!
Try searching "vasm mirror" - there are several copies up on Github.
You shouldn't need the exact commit, it is just referenced for documentation. That said once you have cloned the MAME repo with git, you can switch to the exact commit like this:
git fetch origin <commit-sha>
user@octane CPS15_to_CPS2$ ./tools/vasm -v
vasm 2.0f (c) in 2002-2026 Volker Barthelmann
vasm M68k/CPU32/ColdFire cpu backend 2.8c (c) 2002-2026 Frank Wille
vasm motorola syntax module 3.19f (c) 2002-2026 Frank Wille
vasm test output module 1.0 (c) 2002 Volker Barthelmann
user@octane CPS15_to_CPS2$
git fetch origin 017b8670f0ad3be2f64911bf587eb137e53f08bd
user@octane CPS15_to_CPS2$ python3 -m tools.coverage dino punisher
[1/6] cov_smoke1p_dino rc=255 0.1s
[2/6] cov_smoke_dino rc=255 0.1s
[3/6] cov_service_dino rc=255 0.1s
[4/6] cov_smoke_punisher rc=255 0.1s
[5/6] cov_smoke1p_punisher rc=255 0.1s
[6/6] cov_service_punisher rc=255 0.1s
FAILED cov_smoke1p_dino: 255
FAILED cov_smoke_dino: 255
FAILED cov_service_dino: 255
FAILED cov_smoke_punisher: 255
FAILED cov_smoke1p_punisher: 255
FAILED cov_service_punisher: 255
FAILED cov_smoke_dino: no coverage written
FAILED cov_smoke1p_dino: no coverage written
FAILED cov_service_dino: no coverage written
FAILED cov_smoke_punisher: no coverage written
FAILED cov_smoke1p_punisher: no coverage written
FAILED cov_service_punisher: no coverage written
user@octane CPS15_to_CPS2$
Thanks for the update! It looks like you are very close.Thanks for the help, just for reference, I did the following:
1. Found a mirror which seems to be up to date: https://github.com/StarWolf3000/vasm-mirror/tree/master, cloned it into the tools/build/ directory inside this project, renamed the clone directory to "vasm" and built it using your instructions. It built fine and it reports the right versions:
Code:user@octane CPS15_to_CPS2$ ./tools/vasm -v vasm 2.0f (c) in 2002-2026 Volker Barthelmann vasm M68k/CPU32/ColdFire cpu backend 2.8c (c) 2002-2026 Frank Wille vasm motorola syntax module 3.19f (c) 2002-2026 Frank Wille vasm test output module 1.0 (c) 2002 Volker Barthelmann user@octane CPS15_to_CPS2$
2. Cloned MAME tree to "~/mame" and used "git log" to get the full hash of the commit you suggested (dated August 31). After that, ran the command you suggested:
The patch seems to have applied correctly and right now I'm building MAME. I hope it works fine. If not, I'll report/ask here for help.Code:git fetch origin 017b8670f0ad3be2f64911bf587eb137e53f08bd
Thanks again.
Edit: After 93 minutes, MAME compiled with no issue. Yay!
Edit 2: Now I do not understand what to do: I verified the roms with MAME, put them in mame_roms, and then tried running the just-built MAME to create the coverage traces, but got this:
Code:user@octane CPS15_to_CPS2$ python3 -m tools.coverage dino punisher [1/6] cov_smoke1p_dino rc=255 0.1s [2/6] cov_smoke_dino rc=255 0.1s [3/6] cov_service_dino rc=255 0.1s [4/6] cov_smoke_punisher rc=255 0.1s [5/6] cov_smoke1p_punisher rc=255 0.1s [6/6] cov_service_punisher rc=255 0.1s FAILED cov_smoke1p_dino: 255 FAILED cov_smoke_dino: 255 FAILED cov_service_dino: 255 FAILED cov_smoke_punisher: 255 FAILED cov_smoke1p_punisher: 255 FAILED cov_service_punisher: 255 FAILED cov_smoke_dino: no coverage written FAILED cov_smoke1p_dino: no coverage written FAILED cov_service_dino: no coverage written FAILED cov_smoke_punisher: no coverage written FAILED cov_smoke1p_punisher: no coverage written FAILED cov_service_punisher: no coverage written user@octane CPS15_to_CPS2$
I'm not really sure what I did wrong or how to continue here.
Thanks again for the help, in fact I am running this on another machine, through SSH. Setting teh SDL_VIDEODRIVER variable to "dummy" fixed the error.Thanks for the update! It looks like you are very close.
Exit code 255 means MAME stopped before emulating anything: it couldn't start SDL video. SDL video is started even with -video none, which the runs use. This usually happens over SSH or on a machine without a desktop session. Could you post work/jobs/cov_smoke_dino/stdout.txt? It has MAME's own error message. Meanwhile, try SDL_VIDEODRIVER=dummy python3 -m tools.coverage dino punisher. Also check that ~/mame is on commit 017b8670f0a (git -C ~/mame log -1 --format=%h): git fetch alone doesn't switch to it, you need git checkout 017b8670f0a.
I'll also see about improving the build instructions/tools so that you don't have to specify this manually in the future (assuming it works).
user@octane CPS15_to_CPS2$ SDL_VIDEODRIVER=dummy python3 -m tools.coverage dino punisher
[1/6] cov_service_dino rc=0 8.0s
[2/6] cov_service_punisher rc=0 11.1s
[3/6] cov_smoke_punisher rc=0 29.2s
[4/6] cov_smoke1p_punisher rc=0 32.0s
[5/6] cov_smoke1p_dino rc=0 33.3s
[6/6] cov_smoke_dino rc=0 34.3s
user@octane CPS15_to_CPS2$
user@octane CPS15_to_CPS2$ SDL_VIDEODRIVER=dummy python3 -m cps15to2.convert dino punisher
dinoc2: cave 0x382e, 165 sites, 27996 overlay tiles
punisherc2: cave 0x3778, 270 sites, 18664 overlay tiles
user@octane CPS15_to_CPS2$

user@octane CPS15_to_CPS2$ export LC_ALL=C
for d in out/mame/*c2/ out/darksoft/*c2/; do
echo "$(cd "$d" && sha1sum * | sha1sum | cut -c1-40) $d"
done
b2899b9eed6608834dd7266ddfa37360e30025e7 out/mame/dinoc2/
28626132ab9b5fb8e34dedf269a7074db953f7ff out/mame/punisherc2/
4754527b13958b6beeccd6840c0383c2e39efa21 out/darksoft/dinoc2/
277e910df83dd0c29af3ffbd61e56a32b63ff8e7 out/darksoft/punisherc2/
user@octane CPS15_to_CPS2$
Nice! Those hashes are valid but just match an earlier commit of the repo (commit 3aac11e from a few days ago).Thanks again for the help, in fact I am running this on another machine, through SSH. Setting teh SDL_VIDEODRIVER variable to "dummy" fixed the error.
Code:user@octane CPS15_to_CPS2$ SDL_VIDEODRIVER=dummy python3 -m tools.coverage dino punisher [1/6] cov_service_dino rc=0 8.0s [2/6] cov_service_punisher rc=0 11.1s [3/6] cov_smoke_punisher rc=0 29.2s [4/6] cov_smoke1p_punisher rc=0 32.0s [5/6] cov_smoke1p_dino rc=0 33.3s [6/6] cov_smoke_dino rc=0 34.3s user@octane CPS15_to_CPS2$
Then generated the output files:
Code:user@octane CPS15_to_CPS2$ SDL_VIDEODRIVER=dummy python3 -m cps15to2.convert dino punisher dinoc2: cave 0x382e, 165 sites, 27996 overlay tiles punisherc2: cave 0x3778, 270 sites, 18664 overlay tiles user@octane CPS15_to_CPS2$
All of this seems to work fine, however I am getting different hashes on all directories
Code:user@octane CPS15_to_CPS2$ export LC_ALL=C for d in out/mame/*c2/ out/darksoft/*c2/; do echo "$(cd "$d" && sha1sum * | sha1sum | cut -c1-40) $d" done b2899b9eed6608834dd7266ddfa37360e30025e7 out/mame/dinoc2/ 28626132ab9b5fb8e34dedf269a7074db953f7ff out/mame/punisherc2/ 4754527b13958b6beeccd6840c0383c2e39efa21 out/darksoft/dinoc2/ 277e910df83dd0c29af3ffbd61e56a32b63ff8e7 out/darksoft/punisherc2/ user@octane CPS15_to_CPS2$
Nice! Those hashes are valid but just match an earlier commit of the repo (commit 3aac11e from a few days ago).
I'd suggest pulling down the latest changes (git pull origin master), then re-run the coverage traces (may not be needed but just to be sure), and re-run the last convert step.
In any case if you try out the builds from your output they should work, there's just been a few bugs squashed since.
No you should be good with MAME as-is (no need to update or rebuild). You just need to update your local copy of the CPS15_to_CPS2 repository, then run the conversion script and your output files should match the current hashes.So I should just download latest MAME revision (October 27th?), apply the patch to it, build it again and recreate the output files, correct?
Success! the hashes now match the repo ones. I will try the games and post here any findings. Thanks @kuze !No you should be good with MAME as-is (no need to update or rebuild). You just need to update your local copy of the CPS15_to_CPS2 repository, then run the conversion script and your output files should match the current hashes.
Excellent, let me know how it goes!Success! the hashes now match the repo ones. I will try the games and post here any findings. Thanks @kuze !
The original CPS 1.5 games (not talking about the conversions) do have some slowdown in spots occasionally. CPS2 has a higher 68000 clock (16 mhz versus 12 mhz) which gives some more wiggle room for the overlay engine and look up tables.Yeah i'm still tweaking a lot by hand to not have the object overlay active all the time and eat slots/cpu, even in its current fast implementation.
Dinos is a real 'offender' with its lush forest and the 'near cps1 limit' of the dang car driving scene.

Y postions where a fix was valid and where not. In this way, the game runs 99% 'original' with only minor extra sprite/obj tricks active where needed, and layer swaps where applicable. I just binged that work and got it done. There is exactly one little place you may see a layer overlap, if your screen position is right. But it takes special care to hide it.. It keeps the game at its original speed and routines the other 99% of the time.Yeah , the extra speed is also good for the mulu based protection, i remember the KOD B21 i did years ago ran like ass on the 10mhz board due to the extra maths but great on the 12mhz board.The original CPS 1.5 games (not talking about the conversions) do have some slowdown in spots occasionally. CPS2 has a higher 68000 clock (16 mhz versus 12 mhz) which gives some more wiggle room for the overlay engine and look up tables.
I agree though, the more things can be streamlined the better.![]()
WoF i didn't bother with, at all.
I have only tried C&D and The Punisher and the only thing I have found is that whenever the main character goes behind some object (like the first building entrance on C&D first level or the Final bus fight in The Punisher) the sprites go weird. The games seem to be completely playable though, however so far I have only player their first levels (and the beginning of The Punisher's second, where the palm trees go weird when the main character is behind them. Other than that, no issues that I can see. Just in case it matters, I am playing on CPS2 DarkSoft multi, one of the first ones with an older firmware, because it requires connecting some device to it in order to upgrade it and I do not have the required device.