Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nmk/nmk16.cpp: upgraded interrupts trigger system based on PROM contents #12562

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

sergiopolog
Copy link
Contributor

@sergiopolog sergiopolog commented Jul 10, 2024

  • Added a new system for triggering interrupts based on PROM contents: set_interrupt_timing() and nmk16_scanline.
  • Bootleg sets, Afega and Comad games, and other sets that PROMs are still undumped (or not exist), on which the new interrupt triggering system cannot be applied, remain using the old set_hacky_interrupt_timing() and nmk16_hacky_scanline handlers.
  • Added info about screen resolutions and timings.
  • Removed "hacky" denomination to set_screen_xxxxxx() functions as the screen sizes are confirmed for each available resolution
  • PROM dumps from hachamfp are added to hachamf and other clones, and marked as BAD_DUMP until they are properly dumped
  • PROM dumps from bjtwin are added to nouryoku and clones, and marked as BAD_DUMP until they are properly dumped
  • strahl and clones could benefit from the new interrupt system, but PROMs for them are undumped. They still use the old system until they are properly dumped
  • ssmissin and airattck "Comad" games could also benefit from the new interrupt system, but the V-Timing PROM on them is a 82S147 (512x8bit) in which only half of space is used and A5 address line is tied to ground. The nmk16_scanline code could be tweaked to support them, but more research is needed to apply that. They still use the old system.
  • Merged powerins.cpp into nmk16.cpp driver to make use the new interrupt system, too. New set_screen_midres() function is added to be used by powerins sets.
  • Sprite DMA process might be triggered using PROM contents aswell, but that needs more testing and it could be a future enhancement.

* added info about screen resolutions and timings
* merged powerins.cpp into nmk16.cpp driver to make use the new interrupt system
@sergiopolog sergiopolog marked this pull request as draft July 10, 2024 10:32
@sergiopolog
Copy link
Contributor Author

sergiopolog commented Jul 10, 2024

I marked the PR as draft because powerinsb and powerinsc bootleg sets are not working properly after powerins.cpp driver merge into nmk16.cpp. Needs further review.

Additionally: Is the flag MACHINE_SUPPORTS_SAVE present in powerins sets really needed? isn't that the default behaviour?

@Hammy1986
Copy link

Hammy1986 commented Jul 10, 2024

Powerins bootleg C never worked correctly anyway. It's the electronic devices italy bootleg.
Strahl and Mecha fighter proms will be dumped sometime , along with a bootleg set of mecha fighter with raiden sound.

The reason the old power instinct driver was based on the bootlegs as it took many years for the original dumps to turn up.

@rb6502
Copy link
Contributor

rb6502 commented Jul 10, 2024

MACHINE_SUPPORTS_SAVE isn't a default choice by the core, but it should be everyone's default choice when writing/updating a driver :-)

@cuavas
Copy link
Member

cuavas commented Jul 10, 2024

MACHINE_SUPPORTS_SAVE is supposed to be applied to systems that people have audited for proper save state support (including all the devices they use, etc.).

src/mame/nmk/nmk16.cpp Outdated Show resolved Hide resolved
src/mame/nmk/nmk16.cpp Outdated Show resolved Hide resolved
src/mame/nmk/nmk16.cpp Outdated Show resolved Hide resolved
src/mame/nmk/nmk16.cpp Outdated Show resolved Hide resolved
src/mame/nmk/nmk16.cpp Outdated Show resolved Hide resolved
@Osso13
Copy link
Member

Osso13 commented Jul 11, 2024

I marked the PR as draft because powerinsb and powerinsc bootleg sets are not working properly after powerins.cpp driver merge into nmk16.cpp. Needs further review.

As far as I can see they crash because they don't have the ROM_REGION "vtiming" that the set_interrupt_timing(config); call in their machine_config expects

@sergiopolog
Copy link
Contributor Author

I marked the PR as draft because powerinsb and powerinsc bootleg sets are not working properly after powerins.cpp driver merge into nmk16.cpp. Needs further review.

As far as I can see they crash because they don't have the ROM_REGION "vtiming" that the set_interrupt_timing(config); call in their machine_config expects

Thanks @Osso13 for pointing that. That was a copy/paste error and I wrongly included set_interrupt_timing() at maching_config for powerinsb and powerinsc, while they have their own interrupt config (via screen_vblank) as they don't have timing PROMs.

Fixed now and the PR promoted to Ready

@sergiopolog sergiopolog marked this pull request as ready for review July 11, 2024 10:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants