It's been about 3 months since the release and there was several weeks of testing before that so minutiae about how the walker walks is not top of my mind all the time, but luckily it's one of the things that I documented really well in the code.
First off, when I say detected vs. not detected, there's a backend routine that handles looking at closed switches and adding them to a queue. This is the same in stern stock code as well as the modified code for the way that *any* switch is detected. There is NO code on a bally/stern game that waits for a switch to open before reacting - it's just not the way the backend is coded on these games. The switch gets added to a list of closed switches (by column) for eventual processing on the front end (which I call a main loop).
Now, a permanently closed switch being held down should activate ONCE (when it initially closes and stays closed) - but if it stays closed, it will not activate again until it is open again. The detection pattern is open, closed, closed, closed, add to switch queue for that column. The columns are processed in order 0-4 - the spinners are on column 0 and the walker is in column 4. The timed switches which are tripped virtually are columns 5-7, so they run AFTER all the other switches process. The startup code in the game (original and modified) has code to artificially set all switches to closed, that way they will NOT be processed at all until they are clear - which they will all do if they are in fact, not closed.
The above is just background material as to how the switches are detected. The below would refer specifically to what happens to those detected switches in the foreground of the program.
I just doubled checked how the reaction to closed switches is operating, and it truly is one switch at a time per run through the main loop. Spinners almost always seem to be on column 0 probably for the reason that they need to be serviced quickly. None of this should change a valid switch hit in other columns, unless the background routines that reset certain switches have reset one of the switches in question. The stock software as well as the new software resets the ball kickbigs, all drop targets, the walker, the outhole, and the trough switches (I thought I'd removed the walker from this, but I didn't).
I think that Stern used the half switch wireform on the walker entry for a reason, I think it's mainly there so that the ball passes over it, it pops back up, and helps to prevent a ball from going backwards in the walker, which it can do (if it pulses too short). It can be argued, perhaps successfully, that anything modified code does that original code does not would indeed be a bug in the modified code, since obviously it worked one way with the original code and another way with modified code.
I think what's happening in the modified code with a held down walker entry switch is that it's getting cleared, but the first thing the walker routine does is set up a re-entrant pause, which also includes goosing the timer for the spinner (which is why it doesn't come off the display). Since the switch is still closed, but has been reset, it just resets the timer again. This seems like it will repeat if the switch is held down.
Someone previous did have this issue as well, but it went away once he adjusted the entry switch to come up after activation. I had put up a changed version at https://sites.google.com/site/allentownpinball/galaxy-asm/F2K-test.zip?attredirects=0&d=1 so you can try that to see if it makes the issue better, I have not tested this version in my machine at all, it merely changes the walker behavior to only react ONCE to the spinner vs. waiting for sure that it's over, by skipping the test for it the second time through. (It's technically a differing entry point).
There has to be a quick reaction time to the walker routine initial run because otherwise 2 balls shot up into the walker during multiball in quick succession will not be detected as 2 separate balls and one would get stuck in the walker because the game just wouldn't realize it was there.
Try out the test version and see if you get different results. I think only U1 is changed because the change was an ifclearbranch vs. branch (same length instruction) - but you can double check the files u2, u5, and u6 against your existing eproms to verify that.
I don't think I can modify the software successfully and keep the changes with the spinner not timing out nor the multiball situation to be able to handle all situations that can occur with the ball walker held down, and that was the main crux of why I even started doing this project in the first place. The entry switch has to come up for the fast reaction to catch the possible added balls in multiball. Were there more switches up there or in the walker none of this software tracking of the virtual balls would be needed.
The stock code works because it doesn't care about 2 switches in a row during multiball for instance, because it's only walking each down once (and ending the multiball). The modified code has to have a counter to walk the balls down the correct # of times. Ditto during the regular game play, if you're in single ball it just walks it down one (causing the loss of spinner points....)
It's unfortunately that the loss of points can also be solved a different way, which I did with the option to change the walker to a continuous solenoid path instead of the momentary. Still doesn't help the switch entry being down, though.
I suppose another way to fix it that can be tried would be to NOT re-trigger the switch entry, but that might break multiball multiple balls.
LMK how the test version fares.