Jump to content
IGNORED

VBXE Exercise - Popeye WIP


woj

Recommended Posts

6 hours ago, woj said:

And that does not even include the Python code. Statistically, I wonder how it all even loads and starts ;)

Well for one thing, there's over a 4x difference in representation cost on a simple AND instruction (between the assembler line and the bytes emitted). As for all the binary stuff, I guess that comes down to good job on your part!

Game is looking fantastic.

Link to comment
Share on other sites

  • 1 month later...

I composed myself to do an NTSC "scaled" version, wasn't planning to deeming it too much work (which I was not wrong about, the binary grew by almost 1K all of which is handcrafted animation sequences data and velocity vectors), but then I figured out it just has to be done! On the way I fixed a couple of minor things, identified a handful of bugs (one came back for the fourth time, persistent bastard!), and made the loading screen tiny bit less boring, below video of how the new one in NTSC mode looks like. Now I wait for an NTSC ANTIC chip that is in the mail to try it on my 800XL.

 

 

  • Like 17
  • Thanks 2
Link to comment
Share on other sites

Now that I have a VBXE for my NTSC Atari I can't wait to try this!

I'm not a huge fan of the game, but have some strong memories of it when as a child I was part of cohort in a University of Washington research study on learning and the researchers used "Speed of learning to play the arcade game Popeye" as a baseline test (I think because Popeye had just been released and there was nobody with prior experience of it.)

Edited by FastRobPlus
Link to comment
Share on other sites

A first problem that I so far have no clue about. The NTSC version is broken on the real hardware, more specifically, the attribute map colored original char mode Antic screen has garbage on, see the picture and the reference how it should look like (from Altirra). I also know from one of my beta testers this is not an isolated incident, he got the same exact problem (looking the same, with the same pattern of the garbage) with an earlier version of the code and I believe even slightly different HW setup (real GTIA on his vs. Sophia on mine, Sony PVM on his vs. cheap LCD on mine), but also NTSC (of course!). 

 

This is either some timing issue or offsetting issue that I do not understand and that Altirra does not (yet) emulate (the colored Antic screen uses horizontal and vertical scrolling for the screen shakes, the whole screen shakes consistently though, I mean the garbage moves nicely along with everything), or some offsetting difference with VBXE working in NTSC mode, or, I have to say it, a bug in VBXE... Anyhow, any feedback from the experienced ones is highly appreciated. @phaeron? @Rybags?

20240125_212249.jpg

l1.png

Edited by woj
Link to comment
Share on other sites

I checked much earlier versions of the code, they all have the same problem or at least very similar. Also, looking at the TV it may seem like the ANTIC underlay appears one or two scanlines earlier than what I would expect, also because the score line of the game (which is ANTIC text mode VBXE colored) is truncated at the top. If that gives any hint of what could be going on (my next suspect is to experiment with the DLI position where the DMA is switched on again).

Link to comment
Share on other sites

Hard for me to say looking at the screenshots alone. Definitely try the build in Altirra with memory randomization options on first to make sure there aren't uninitialized memory issues, then see if you can identify what the garbage is doing. If it's moving with other objects then it's most likely a memory aliasing issue.

 

Also, if you have been loading your executable directly in Altirra, throw it onto a disk image and load it through SDX instead -- this will expose if you have memory addressing or other issues that conflict with exe loaders.

 

Link to comment
Share on other sites

4 hours ago, phaeron said:

Hard for me to say looking at the screenshots alone. Definitely try the build in Altirra with memory randomization options on first to make sure there aren't uninitialized memory issues, then see if you can identify what the garbage is doing. If it's moving with other objects then it's most likely a memory aliasing issue.

 

Also, if you have been loading your executable directly in Altirra, throw it onto a disk image and load it through SDX instead -- this will expose if you have memory addressing or other issues that conflict with exe loaders.

 

No, I do not think it has anything to do with that, considering I interchangeably use all the different ways to load the game to Altirra, and also that the PAL version that works 100% fine on a PAL machine, when loaded onto the NTSC machine (the only difference being a different vcount constant for Rybag's interlace hack) has the same effect. Quoting myself:

 

9 hours ago, woj said:

Also, looking at the TV it may seem like the ANTIC underlay appears one or two scanlines earlier than what I would expect

 

This is exactly it, but needs more investigation. I added an empty scanline to the display list ($00) and everything fell into place on the real NTSC computer. I removed one scanline from the originally working display list and I emulated the effect I have on the real machine in Altirra, see the attached picture. So, bottom line, something eats a scanline on this setup on the real machine, and Altirra does not account for that. It can be either:

 

(a) some DMA timing issue - the code juggles with DMA on and off all the time to achieve the interlace hack

(b) it is a feature of the NTSC mode VBXE that we all missed

 

I can only check things in the evening again, but for (b) I want to check how does the stock non-VBXE output (it will show just the score line, but it should be enough) look like, if it is truncated too, it is about DMA turning on and off and related timing (the I have to see if moving my DLIs around can help). If it is not truncated, then it is the VBXE that eats this line.

 

Now, the biggest issue for me is that adding this empty scanline with $00 DL line is not a solution, or at least I am not yet sure it is, because with this the whole display list exceeds 240 scanlines leaving me no space for the last $F mode line to enable the interlace hack. 

 

Anyhow, once I know a bit more, I will send you the offending and non-offending files for you to have a look, I hope you have an NTSC VBXE machine handy ;) 

screen.png

  • Like 1
Link to comment
Share on other sites

50 minutes ago, Atari8guy said:

words of encouragement!  looking forward to your success with this project

Yeah, the more I try to finish it, the more tiny ugly details and problems pop up 😕 

Link to comment
Share on other sites

Crappy lighting and zoom, but here they are: PAL on the left (LCD TV direct) and NTSC on the right (RetroTink5). When stretched horizontally to 16:9 or similar (14:9 on the TV I think) they look indistinguishable from the original :D 

20240130_204412.jpg

  • Like 13
Link to comment
Share on other sites

  • 2 weeks later...

I am slowly getting to the finish line, the sound playing procedures are now fixed (this has been bugging me since November), discovered some heavy bugs in high score handling and score entering screen, otherwise the AtariMax cart version is now working (on the video), but still awaits the actual cartridges to try it in reality. I have also an A8PicoCart version in the works (I mean totally dedicated, and also with score saving!), the code is drafted, but here I need to wait even longer for the Pico boards to arrive from AliExpress. On the video below I got some totally mad luck in round 4 with avoiding stuff, had no idea I have it in me ;) 

 

 

  • Like 21
Link to comment
Share on other sites

The last bug I found today testing something totally different was hilarious. As it turns out it was possible to collect the last item to win the round and die at the same time. Classic race condition when two events happen in the same frame, but were assumed to be "sequential". 

 

I would not be saying this if I did not encounter an exactly the same kind of bug in the Bank Panic arcade some two years ago, then I thought how is that ever possible... Well, now I know.

  • Like 2
Link to comment
Share on other sites

I think I can call it, here is the release candidate . Doing this today is no coincidence, it has been exactly one year since this was started here. The CAS version is mostly for laughs and masochists, the UF2 files though are genuine A8 Pico Cart files that you can install natively (be careful though, it will remove anything you have on the Pico Cart, including the uploaded images / files), and it then also has the score saving function (it is something only tested today for some minutes, had big problems making it work at first, but it seems OK now). The following is the list of know issues that are not likely to ever get fixed:

 

If the NTSC version happens to have screen glitches (including on Altirra), press V at any time to rectify (this is due to recently discovered "feature" on NTSC VBXE installations). Once the consistency of this feature is confirmed, the support for the V key will be removed.

 

Saving scores to a very high speed SIO device causes the "Saving scores..." sign to only blink and otherwise the scoreline becomes uniform color of the last level's background for the duration of saving. Not fixable without rewriting larger parts of code. Also, this screen flick is likely to swap the interlace fields. So better not to use too high speed SIO ;)

 

Some sounds (most notably walking flat and on stairs) can have a "phasing" left/right sound effect to it on some occasions.

 

Not all game speeds, including music, are 100% match between PAL and NTSC systems, however, effort has been made for both versions to be similar enough.

 

The Rybag's interlace hack mode was not properly tested on NTSC machines, on PAL machines also moderately in fact. Generally, the interlace mode is a hit and miss situation depending on the particular setup. The most sure option to have it working is to have Sophia 2 installed along the VBXE.

 

Exiting the game through RESET will not restore the VBXE palettes or Sophia 2 settings in all situations (not fixable IMO due to system's architecture). Also, when ran on NTSC machine the colors are (if/when) restored to the recently introduced NTSC VBXE palette, even if the installed / active core has PAL colors (this is not detectable from the game code).

 

The mono mode of the sound was only moderately tested, stereo setup is advised.

 

Exiting the cartridge version to SpartaDosX (regardless of Ctrl-X or RESET way), or starting the cartridge for the second time with the CAR command takes considerable time due to SDX saving / restoring the memory contents (thinking this is a productivity cartridge whose RAM memory is worth saving ;)). Refer to the SDX manual on how to neutralize this to speed things up.

  • Like 7
  • Thanks 4
Link to comment
Share on other sites

13 minutes ago, woj said:

Exiting the cartridge version to SpartaDosX (regardless of Ctrl-X or RESET way), or starting the cartridge for the second time with the CAR command takes considerable time due to SDX saving / restoring the memory contents (thinking this is a productivity cartridge whose RAM memory is worth saving ;)). Refer to the SDX manual on how to neutralize this to speed things up.

Not that this is an issue if you have a HDD, since the process then takes no more than a couple of seconds.

 

Great to see this project reach completion after a year, anyway.

  • Like 1
Link to comment
Share on other sites

18 minutes ago, flashjazzcat said:

Not that this is an issue if you have a HDD, since the process then takes no more than a couple of seconds.

It takes annoyingly long if you ask me, especially compared to the speed of loading the whole thing with SIDE3 (which in itself is still slower, but I am talking about relativity here ;)). 

Link to comment
Share on other sites

Well it's fun, even though I suck at it, I can only get to the second screen.  I never played the arcade but I didn't notice anything unusual in the game play in terms of screen glitches over 4 games.  NTSC, U1MB here.

Edited by Atari8guy
  • Like 1
Link to comment
Share on other sites

21 minutes ago, Atari8guy said:

didn't notice anything unusual in the game play in terms of screen glitches over 4 games.  NTSC, U1MB here.

This is then one more case to confirm the consistency of the VBXE NTSC one scanline off "feature".

Link to comment
Share on other sites

That is probably the first game ever which behaves like a productivity application. It runs from a DOS (SDX here), then cleanly exits back. I am impressed.

 

I ran it on Rapidus - it worked without any problems. Display: PAL CRT here, no glitches, everything good. And it all looks beautifully. Congratulations.

  • Like 4
Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...