Jump to content
IGNORED

Midnight Magic for Atari 800


phaeron

Recommended Posts

Unfortunately it is hard to picture a CRT due to the lights of the tube, so I had to picture this from the side, but it shows rather well the difference.

 

I'll take a look in the source to see where to change to color pallette...

 

Hmm... I'd chalk this up to the color generation in the PAL GTIA, because what you're seeing on the PAL 2600 is similar to what I was seeing on my NTSC 800XL and Stella 3.2a. The bad news is that changing the colors is not a trivial task because the colors also double as flags -- there are many places in the collision code where the colors are directly compared against immediates to check whether bumpers are lit up, etc. The base playfield colors come from the table at L9004.

Link to comment
Share on other sites

I'd put the name change down to marketing.

 

It was one of the most famous pinball games of the time. Chances are everyone just called it "Midnight Magic" by the time the 2600 version was started.

 

David's Midnight Magic has a different table lay-out than Midnight Magic.

 

It's true that Midnight Magic on the 2600 was implied to be at least some kind of representation of the original David's Midnight Magic, given that the box uses the same artwork and Broderbund still gets a copyright credit. But I don't think dropping "David's" from the title was merely a marketing decision. They really are two different pinball games. If it were merely a marketing decision then likely Atari would have dropped "David's" from the XEGS game cartridge release as well.

Edited by FujiSkunk
Link to comment
Share on other sites

Table layout would most likely be changed for technical reasons - the original DMM table would be harder to render on the 2600.

 

Although the original table is kinda lacking in imagination, Night Mission Pinball was much better than most of that era.

Link to comment
Share on other sites

Table layout would most likely be changed for technical reasons - the original DMM table would be harder to render on the 2600.

 

Agreed, but I believe it's because of that changed lay-out that they decided to change the name as well. I don't believe it was merely a marketing decision. And for that reason I would say they are two different games.

Link to comment
Share on other sites

They'd just be comparing shadow registers though - couldn't you just throw in a deferred VB routine with your own shadow regs?

 

That'd take more work than just tracking down the immediates. It isn't hard -- just a bit of searching for the zero page registers -- but it's tedious. If anyone wants to take a crack at it I've documented all of the zero page variables that hold the colors. The rewritten display kernel doesn't shadow the TIA registers, but just copies them directly from program zero page into GTIA. I only ended up keeping the shadows for the input and sound registers.

 

There was another problem, BTW, which is that I actually ran short on VBLANK time. The original game uses nearly all of it for physics, and when I added code to update the 800 playfield and the sprites it pushed the game way over even with the faster CPU. I fixed it by moving chunks of the updates into idle time within the display kernel. The source file still has the asserts I put in to trip the debugger whenever the VBI ran over. The game takes a tiny bit more time to update the score with each multiplier level so it's possible it might still go over, but one time I did manage to make it all the way to 5x without tripping the assert. The game currently does waste a bit of time shifting and unpacking message text and then re-converting it from 2600 format to playfield mode E, so reworking those tables would recover some VBI time. About another scanline could be recovered by removing the remaining register shadows.

 

Also, a change I forgot to mention is that I redid the message text that appears on the left and right sides of the playfield. In the original 2600 version, the game alternates between displaying text on the left and right sides. This creates a 30Hz flicker that is not too bad on NTSC hardware, but a bit more noticeable on PAL and really annoying on an emulator that isn't vsync locked. I rewrote it to display both at the same time, which is why it is brighter now. The annoying part was that this was done with four player images on each side, which would have been impossible to do simultaneously, so I moved two on each side into the playfield and left the remaining ones to keep image conversions down.

  • Like 2
Link to comment
Share on other sites

Played this yesterday on my NTSC 1200XL... that looked more like the 2600 PAL indeed.

 

I hope it can be changed once, but if not: it's ok... it is a FA BU LOUS port. Really. Have played it for hours now, and yes ... it IS 2600 Midnight Magic!

Link to comment
Share on other sites

Thoughts?

 

Just one. A small change in the code to make it possible to activate both flippers at the same time. As it is now only one at a time can be pushed but with a key pad left & right can be pressed simultaneously but the code doesn't allow it.

Link to comment
Share on other sites

It's indeed a bit slow (don't remember the speed of the original 2600 version) but what amazes me is that such a conversion can look so much better compared to other "native" attempts.

 

I have played Midnight Magic on my 2600 for months. From all my 2600 games, I loved this one the most. On atari 8bit I did not experience any difference in speed. For me the speed is great, since I don't know better. But.... when I played it an hour or two on my NTSC 1200XL, and then switched back to my PAL computers, I noticed that the game is a bit slow indeed.

 

NTSC feels more natural, although it is faster than my PAL 2600.

Link to comment
Share on other sites

Thanks Phaeron. Great port of an excellent game. Atari computers really lacks on pinball games so this one is really welcome. I played Midnight Magic a lot on 2600 and found it really entertaining. Always wondered why nobody had ever ported it to 8-bit computers.

 

Btw. would it be a big effort to change shape of the ball to more rounded?

Link to comment
Share on other sites

Phaeron, wow, this is a new thing in the Atari 8bit world I think: a pixel-perfect conversion of a 2600/Video Arcade game.

 

Coincidentally I had recently played the 2600 version. It really is exactly, or close enough to exactly, the same thing. It could be my imagination but I think your version on my NTSC 600XL w. 320K is a tiny bit slower (which is not a bad thing, in my case).

 

You've obviously worked hard and I don't know if you're entertaining modification suggestions, or if modifications defeat the purpose of an exact port, but it would be cool if you mapped the flipper buttons to left shift and right shift (and maybe right inverse video key too). And it would be majestic if you programmed a bump/tilt feature to the space bar.

 

You've opened a new area of possibilities really. What other 2600 games would be nice to have on the 8bit? Combat/Tanks Plus, Air Sea Battle/Target Fun, Casino/Blackjack Plus...

Link to comment
Share on other sites

I wonder, could the game be changed to run the physics loop an extra time in Pal.

 

The game runs four physics ticks per VBLANK.

 

That should give a speed boost of to 250 moves/second vs 240 instead of current 200 vs 240.

 

Could work, although I haven't looked at the details. PAL has more than enough VBL time, at least. The code that does the physics steps is at L90D6; in theory, adding another round of BMI/JSR L9312/JSR L90B6 would do the trick, if someone wanted to try it out. It'd certainly be more reliable than trying to boost the velocities, which would require a lot of code modification and increase the risk of tunneling.

 

Btw. would it be a big effort to change shape of the ball to more rounded?

 

Surprisingly difficult. Currently, the ball is two color clocks wide. The only way to round it is to go to hi-res mode, and only the playfield can operate in hi-res. This would require moving the ball from a sprite to the playfield. As GTIA can only change luminance in hi-res mode, the only way to preserve the look of the game would be to move the entire playfield back to sprites like the way the original game drew it on the 2600. This would be a monumental pain in the posterior given the number of elements on screen and GTIA's lack of support for HMOVE and repeated sprites, which is why I used the playfield for the port.

 

And it would be majestic if you programmed a bump/tilt feature to the space bar.

 

This is probably the thing I miss the most about Midnight Magic 2600, but it'd also be one of the trickier features to add. When you bump a pinball machine, you add additional relative velocity between the ball and the colliding surface to influence the ball's exit velocity. Problem is, while I dissected the code enough to find out how it determines collisions, I didn't get to the code that resolves them. The curves are tricky in this regard, and the flippers even more so.

  • Like 1
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...