RickyDean Posted November 6, 2023 Share Posted November 6, 2023 (edited) 30 minutes ago, OLD CS1 said: Trying to play on Classic99 I just get "THE MOLE" and a never-ending screech. Works on the both the 32 bit and 64 bit version for me? Also on JS99er, though the words were garbled a bit it seemed. Edited November 6, 2023 by RickyDean Quote Link to comment Share on other sites More sharing options...
+OLD CS1 Posted November 6, 2023 Share Posted November 6, 2023 Just now, RickyDean said: Works on the both the 32 bit and 64 bit version for me? You asking me? I was not there, so I cannot answer. I just wiped my classic99.ini and it is working. No idea what is causing that. 1 Quote Link to comment Share on other sites More sharing options...
+OLD CS1 Posted November 6, 2023 Share Posted November 6, 2023 16 hours ago, TheMole said: So if anyone wants to come up with some nice ghost designs, please do let me know (a ghost needs to fit in a 2-color/layer 16x16 sprite). Outside my ability right now. I do think in the spirit of Thanksgiving, a ghost of turkeys past would be funny Took a few minutes to play. I ran into one strange and one show-stopper. The strange was there are instances when vacuuming ghosts conflicts with the periodic noise in the BGM, the periodic noise channel stays on and does not shut off until the song restarts. The shop-stopper happened after I missed a ghost, it slimed me but I just laid there on the ground and the game hung. It did not freeze, as the BGM kept running and I can call up my stats with SPACE. Oh, interesting... after several minutes the ghost re-appeared at the top of the screen, fled, Venkman lamented, and the game continued. Marshmallow man is a bastard. After I lost the game, the karaoke restarted with the first line of "ABCDEFGHIJKLMNOPQRSTUVWXYZ!" something or other. The ball does not bounce on the words, sneaky Gotta go to bed, now. My first class is tomorrow at 7am. Quote Link to comment Share on other sites More sharing options...
TheMole Posted November 6, 2023 Author Share Posted November 6, 2023 1 hour ago, RickyDean said: Works on the both the 32 bit and 64 bit version for me? Also on JS99er, though the words were garbled a bit it seemed. You mean the speech sample? Yeah, it doesn't play as nicely in js99er as it does in Mame for me either. Assuming that's due to the slightly more limited resources available in the browser. Quote Link to comment Share on other sites More sharing options...
TheMole Posted November 6, 2023 Author Share Posted November 6, 2023 52 minutes ago, OLD CS1 said: The strange was there are instances when vacuuming ghosts conflicts with the periodic noise in the BGM, the periodic noise channel stays on and does not shut off until the song restarts. The shop-stopper happened after I missed a ghost, it slimed me but I just laid there on the ground and the game hung. It did not freeze, as the BGM kept running and I can call up my stats with SPACE. Oh, interesting... after several minutes the ghost re-appeared at the top of the screen, fled, Venkman lamented, and the game continued. Marshmallow man is a bastard. After I lost the game, the karaoke restarted with the first line of "ABCDEFGHIJKLMNOPQRSTUVWXYZ!" something or other. The ball does not bounce on the words, sneaky Ah, crap, I thought I had fixed the sfx keeps playing over the music when changing screens thing... back to the drawing board on that one. I'll look at why the show-stopper you mentioned occured, haven't seen that myself but I have an idea. Which marshmallow man? The one on the map, or the big one at the end? I'll look at the karaoke restart thing as well, seems some variables aren't properly reset when restarting the game... Yeah, I litterly spent all of Sunday trying to get the ball to align somewhat with the words and this is the best I could get. I'll tweak it some more before I start thinking about burning roms, but in my defence, the SMS version does the same: it just bounces the ball quickly over the lyric roughly approximating how many syllables there are in that line . Quote Link to comment Share on other sites More sharing options...
TheMole Posted November 6, 2023 Author Share Posted November 6, 2023 I should probably add something about the controls for those that don't know the original: On the map, press up/down on the joystick and 'FIRE' to go to a building When the marshmallow warning appears, quickly press 'B' to drop some bait to lure the the marshmallow man to your position and keep it from destroying a building Press 'SPACE' to show your stats (battery, traps and men left) On the 'catching' screen: after positioning your men, when firing the beams, your men can only come closer to each other. Keep that in mind when positioning them In the store: press up/down to move your little forklift to the item you want to buy press 'FIRE' to pick it up/put it down press right/left to move to/from the car. Control schemes of these old games were a bit weird... I remember struggling quite a bit with some of this when I was a kid, not having a manual and all... 4 Quote Link to comment Share on other sites More sharing options...
HOME AUTOMATION Posted November 6, 2023 Share Posted November 6, 2023 3 hours ago, OLD CS1 said: You asking me? I was not there, so I cannot answer. I just wiped my classic99.ini and it is working. No idea what is causing that. Enable flicker. Quote Link to comment Share on other sites More sharing options...
JasonACT Posted November 6, 2023 Share Posted November 6, 2023 7 hours ago, TheMole said: here are the roms: It may be more consistent with other distributions, if both the single .bin and .bin file within the .rpk was an "8.bin". I was using it on a real NTSC console, seems ok. I'm not sure what happened in the shop at the start - I was pressing 1, 2 & 3 to view things to buy and the game started by itself, maybe I pressed the wrong key? I had a car but no traps and it kept telling me to return to HQ when trying to get to the ghosts/buildings, and it was a long drive each time, though I don't think I ever got to leave HQ, since I had no traps. 1 Quote Link to comment Share on other sites More sharing options...
+OLD CS1 Posted November 6, 2023 Share Posted November 6, 2023 Not gonna lie (or "ngl fam" as the kids would say,) I imagine the NeoGeo startup music when watching the splash screen 9 hours ago, HOME AUTOMATION said: Enable flicker. This fixed it. Tah donkeys. 1 2 Quote Link to comment Share on other sites More sharing options...
HOME AUTOMATION Posted November 6, 2023 Share Posted November 6, 2023 1 hour ago, OLD CS1 said: Tah donkeys. ...you know that I don't understand all that fancy web-talk? 2 Quote Link to comment Share on other sites More sharing options...
OX. Posted November 6, 2023 Share Posted November 6, 2023 (edited) The music momentarily gets faster between screens, using MAME 252. It's excellent btw and becoming the best version out there imho. Edited November 6, 2023 by OX. 1 Quote Link to comment Share on other sites More sharing options...
+OLD CS1 Posted November 7, 2023 Share Posted November 7, 2023 6 hours ago, HOME AUTOMATION said: ...you know that I don't understand all that fancy web-talk? Fricken Boomers... Quote Link to comment Share on other sites More sharing options...
HOME AUTOMATION Posted November 7, 2023 Share Posted November 7, 2023 I know what you mean... 1 Quote Link to comment Share on other sites More sharing options...
TheMole Posted November 7, 2023 Author Share Posted November 7, 2023 (edited) Spent some time looking at the bug reports today. Thanks all for testing! Here's what I have so far: On 11/6/2023 at 1:18 PM, OLD CS1 said: The strange was there are instances when vacuuming ghosts conflicts with the periodic noise in the BGM, the periodic noise channel stays on and does not shut off until the song restarts. The shop-stopper happened after I missed a ghost, it slimed me but I just laid there on the ground and the game hung. It did not freeze, as the BGM kept running and I can call up my stats with SPACE. Oh, interesting... after several minutes the ghost re-appeared at the top of the screen, fled, Venkman lamented, and the game continued. After I lost the game, the karaoke restarted with the first line of "ABCDEFGHIJKLMNOPQRSTUVWXYZ!" something or other. I think I've managed to fix the issue with the hanging sound effects and the karaoke restart issue. The first was probably a misunderstanding of how Tursi's player works, the second a variable that wasn't properly reset. I did not manage to reproduce the bigger bug though, I spent a few games intentionally missing all ghosts in all sorts of ways and didn't run into the problem you described once. Are there more details you can share to help me reproduce this, eg: I assume you were playing on Classic99? Did it happen just once, or multiple times? Did you miss any other ghosts during that game? What was your equipment list (car, number of traps, etc...) and status (batteries, men, traps...)? ... 20 hours ago, JasonACT said: I'm not sure what happened in the shop at the start - I was pressing 1, 2 & 3 to view things to buy and the game started by itself, maybe I pressed the wrong key? I had a car but no traps and it kept telling me to return to HQ when trying to get to the ghosts/buildings, and it was a long drive each time, though I don't think I ever got to leave HQ, since I had no traps. I tried it in mame, js99er and Bulwip (don't have real hardware or a way to run windows apps here), and I couldn't reproduce this one either. In fact, you're not supposed to be able to leave the shop without at least one trap, so even if you accidentally pressed enter (or my keyscan code isn't working as expected) this still shouldn't be possible. If you manage to get into the game without traps, the symptoms you describe all make sense though. With zero empty traps, it won't let you go into any buildings except for GHQ. When going to GHQ it will "empty" all your traps, but in this case that would still leave you with zero empty traps (because you have zero traps to begin with, nothing to empty...). Did you manage to buy anything at all, except for the car in the shop? How long were you 'browsing' when it happened? Was it quite quick, or did you manage to see some the items? Did it happen just the one time, or is it consistent? Sorry for the barage of questions, but since you are the only one that I can confirm tested on real iron, I'm really eager to learn more about this one. Anyway, here's a video of me trying to reproduce this bug in mame. Note the message near the bottom of the screen when I try to leave the shop without having purchased a trap: 9 hours ago, OX. said: The music momentarily gets faster between screens, using MAME 252. It's excellent btw and becoming the best version out there imho. Thanks, that's very high praise! Yes, the music speeding up is tricky... the game is copying data from ROM to VRAM when the screen is black, and I'm basically guessing how many bytes I can transfer before needing to tend to the music playback, which depends on how the data is laid out across the banks. I tweaked the byte counter a bit, maybe the next build is a bit more accurate... I should probably try to use the ISR hook instead though, or at least enable wait for VBLANK when copying stuff over and things go faster than expected (I tried to avoid this to minimize the amount of time the screen blanks in between segments of the game). Porting this over to the Geneve is going to be a nightmare otherwise... New versions with the few fixes mentioned above are attached below for those that want to give it another spin. ghostbusters.rpk ghostbusters8.bin Edited November 7, 2023 by TheMole 7 1 Quote Link to comment Share on other sites More sharing options...
JasonACT Posted November 7, 2023 Share Posted November 7, 2023 1 hour ago, TheMole said: or my keyscan code isn't working as expected Ah, I don't think it is working quite right. I was in the shop for ages the first time too, like a really long time, because I only ever played this game once at a mate's grandparents place who had it on the C64 there. They wouldn't give me a copy. So I was really taking my time, switching between screens thinking what to buy. I've also been using my latest Pi Pico board, but I've gone back to my prototype for the moment, because I'm seeing other issues with the new board (very sad, I have to say). And I can't reproduce this on the prototype board.... But, with your keyscan routine, in both my old board and Classic99, if you wait long enough in the shop, the screen goes blank (black) and pressing a key does not bring the screen back (you are stuck in screen-saver mode, I assume). I guess if you're using scratchpad ram for various things, the screen saver counter bytes being changed might be doing something bad to the game? Anyway, sorry for the bad report. I'll make sure I do more testing next time. 1 Quote Link to comment Share on other sites More sharing options...
TheMole Posted November 7, 2023 Author Share Posted November 7, 2023 26 minutes ago, JasonACT said: But, with your keyscan routine, in both my old board and Classic99, if you wait long enough in the shop, the screen goes blank (black) and pressing a key does not bring the screen back (you are stuck in screen-saver mode, I assume). I guess if you're using scratchpad ram for various things, the screen saver counter bytes being changed might be doing something bad to the game? Anyway, sorry for the bad report. I'll make sure I do more testing next time. No, no worries, you're supposed to play the game, making sure it works right is my responsibility But this update is great, I have a lead now! I'll look at the screensaver thing, I normally set the counter to an odd number, since the ISR increase it by 2 it should never hit zero and enable the screensaver... BUT, I think I'm doing it at the wrong place, I didn't have the shop early on and might be setting the counter much later in the game since those screens needed it early on. 4 Quote Link to comment Share on other sites More sharing options...
Tursi Posted November 7, 2023 Share Posted November 7, 2023 (edited) 2 hours ago, TheMole said: I should probably try to use the ISR hook instead though, or at least enable wait for VBLANK when copying stuff over and things go faster than expected (I tried to avoid this to minimize the amount of time the screen blanks in between segments of the game). What I do is check the interrupt more often than I need to - leave interrupts off, and every so often you can just poll the VDP interrupt, and if it's pending, then play music and clear it, otherwise go back to work. The current version of libti99 doesn't make this easy, since it only has the wait function, but what you can do is run VDP_INT_POLL and then check the interrupt counter to see if it ran - if it did, play music too. You would need to track the previous interrupt counter to do that. Something like: void handleMusicSync() { static unsigned char oldIntCounter = 0; VDP_INT_POLL; if (oldIntCounter != VDP_INT_COUNTER) { oldIntCounter = VDP_INT_COUNTER; playMusic(); // whatever function you are running music through } } Then you can just call handleMusicSync() in your work loop every so often, and if the music is due then it will play, and if it's not it won't. This /will/ let the console interrupt run, too, which means QUIT works... but if you don't want that, you can just check the CRU bit with a little inline assembly (check VDP_WAIT_VBLANK_CRU_STATUS - adapt it not to loop), or read VDPST directly (which has a very small chance of missing an interrupt). That way you don't need to guess, anyway. Edited November 7, 2023 by Tursi 3 Quote Link to comment Share on other sites More sharing options...
Tursi Posted November 7, 2023 Share Posted November 7, 2023 42 minutes ago, JasonACT said: But, with your keyscan routine, in both my old board and Classic99, if you wait long enough in the shop, the screen goes blank (black) and pressing a key does not bring the screen back (you are stuck in screen-saver mode, I assume). I guess if you're using scratchpad ram for various things, the screen saver counter bytes being changed might be doing something bad to the game? Ah, this one hits me all the time. It means you are using a custom KSCAN but still letting the VDP interrupt run. The custom KSCAN will never reset the screen blank counter or VDP R1, but the console interrupt will still blank. If you want to allow the screen to blank, then you need to manually restore VDP R1 on keypress and reset the counter. If you don't care, then just set the counter to an odd number and it will never clear. That's a 16-bit word at >83D6 - set it to 1 or -1 and it'll loop forever without the screen blanking. 4 Quote Link to comment Share on other sites More sharing options...
+OLD CS1 Posted November 7, 2023 Share Posted November 7, 2023 5 hours ago, TheMole said: I assume you were playing on Classic99? Did it happen just once, or multiple times? Did you miss any other ghosts during that game? What was your equipment list (car, number of traps, etc...) and status (batteries, men, traps...)? ... Classic99, only happened once, I had missed other ghosts, using the hearse with spooky vision, bait, vacuum, three traps. I had two men remaining, 94% charge, city PKE was between 3,000 and 4,000. That is all I have. The next time I play it will be on a real machine and it will be recorded. Maybe I will run into issues which can be captured. 4 Quote Link to comment Share on other sites More sharing options...
TheMole Posted November 7, 2023 Author Share Posted November 7, 2023 3 minutes ago, OLD CS1 said: Classic99, only happened once, I had missed other ghosts, using the hearse with spooky vision, bait, vacuum, three traps. I had two men remaining, 94% charge, city PKE was between 3,000 and 4,000. That is all I have. The next time I play it will be on a real machine and it will be recorded. Maybe I will run into issues which can be captured. Thanks, that is incredibly close to my typical equipment setup... Smells like a timing issue with the many counters that control the game's progression, this is going to be a nightmare to reproduce. I'll sanitize the logic a bit and we'll see how it goes. Please do share the recording, would love to see how it looks running on the real thing! Quote Link to comment Share on other sites More sharing options...
TheMole Posted November 7, 2023 Author Share Posted November 7, 2023 (edited) 2 hours ago, Tursi said: What I do is check the interrupt more often than I need to - leave interrupts off, and every so often you can just poll the VDP interrupt, and if it's pending, then play music and clear it, otherwise go back to work. The current version of libti99 doesn't make this easy, since it only has the wait function, but what you can do is run VDP_INT_POLL and then check the interrupt counter to see if it ran - if it did, play music too. You would need to track the previous interrupt counter to do that. Something like: void handleMusicSync() { static unsigned char oldIntCounter = 0; VDP_INT_POLL; if (oldIntCounter != VDP_INT_COUNTER) { oldIntCounter = VDP_INT_COUNTER; playMusic(); // whatever function you are running music through } } Then you can just call handleMusicSync() in your work loop every so often, and if the music is due then it will play, and if it's not it won't. This /will/ let the console interrupt run, too, which means QUIT works... but if you don't want that, you can just check the CRU bit with a little inline assembly (check VDP_WAIT_VBLANK_CRU_STATUS - adapt it not to loop), or read VDPST directly (which has a very small chance of missing an interrupt). That way you don't need to guess, anyway. Indeed, I ended up doing exactly this! I tried it in the past and it didn't work, I couldn't figure out why at he time... Turns out, when I blank the screen, I /only/ set the blanking bit in R1, ergo: the interrupt bit was /not/ set... no interrupts! D'oh! Simple fix though *edit* just to be clear, this is not in the latest build available in this thread... I made this change right after posting the previous update and before having to rush to the airport (priorities, right?). I'll upload a new version once I've had a chance to get over my jetlag... Edited November 7, 2023 by TheMole 4 Quote Link to comment Share on other sites More sharing options...
TheMole Posted November 7, 2023 Author Share Posted November 7, 2023 2 hours ago, Tursi said: Ah, this one hits me all the time. It means you are using a custom KSCAN but still letting the VDP interrupt run. The custom KSCAN will never reset the screen blank counter or VDP R1, but the console interrupt will still blank. Setting the counter to an odd number should work though, right? I remember reading about that trick somewhere... Quote Link to comment Share on other sites More sharing options...
+Lee Stewart Posted November 7, 2023 Share Posted November 7, 2023 7 hours ago, TheMole said: Setting the counter to an odd number should work though, right? I remember reading about that trick somewhere... Yes, as long as the console KSCAN is not used for getting a keystroke. KSCAN resets the counter to 0 upon detecting a keystroke. The reason setting the counter to an odd number works is that the counter is incremented by 2, so never rolls over to 0. ...lee 3 Quote Link to comment Share on other sites More sharing options...
Tursi Posted November 8, 2023 Share Posted November 8, 2023 20 hours ago, TheMole said: Setting the counter to an odd number should work though, right? I remember reading about that trick somewhere... Yeah, I've used it myself. BUT, if you call the console KSCAN, the console will reset that counter on every keypress. Quote Link to comment Share on other sites More sharing options...
TheMole Posted December 2, 2023 Author Share Posted December 2, 2023 I can't believe it's been almost a month since the last release! Anyway, below is the latest (and hopefully final) release candidate of the game. I think I managed to fix all the bugs you all have found, except the two below, which I never managed to reproduce: OLD_CS1: Ghostbusters didn't leave building after missing a ghost, stuck there until the next ghost showed up JasonACT: Managed to leave shop without buying traps I did make a bunch of other changes and cleaned up some code which has hopefully fixed these two bugs in the process. Fingers crossed. There might still be some minor fluctuations in the speed of the music playback while switching screens, but it did get much better and is about the best it's going to get without a complete rewrite of some very tricky parts of the code. If feedback on this version is good, I'll start looking at what it's going to take to turn this into a physical, boxed, release, if there's enough intrest in that. I also still want to finish the Geneve version... If anyone plays it on real hardware and doesn't mind recording their session, please let me know. Dying to know what it looks and sounds like on real hardware! ghostbusters8.bin ghostbusters.rpk 10 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.