Jump to content
phaeron

Midnight Magic for Atari 800

Recommended Posts

ok. my fault, having looked at Wikipedia where it says that both games have nothing in common except for the name.

Share this post


Link to post
Share on other sites

Yeah, the playfields look way different. Probably just a case of making good use of a well known name to help sales.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
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?

Share this post


Link to post
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

Share this post


Link to post
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.

Share this post


Link to post
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.

Share this post


Link to post
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

Share this post


Link to post
Share on other sites

Wow ! What a great port. Great work to see someony doing so much effort by disassembling the 2600 code and translate it to working 800 code !

Share this post


Link to post
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!

Share this post


Link to post
Share on other sites

I could have sworn I had David's midnight magic on my XE. I think it was on disk orginally anx then in cart later.

 

This is a great port of the 2600 version. Congrats.

Share this post


Link to post
Share on other sites

Very nice effort. Thank you!

Unfortunately it plays - due to the slowness - in PAL like a different, not so entertaining game...

Share this post


Link to post
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.

Share this post


Link to post
Share on other sites

I'm going to make a controller made for this game, Im going to have two buttons on top that pull and release the arm for the ball, and then two buttons on the side for the flippers.

Thoughts?

Share this post


Link to post
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.

Share this post


Link to post
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.

Share this post


Link to post
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.

Share this post


Link to post
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?

Share this post


Link to post
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...

Share this post


Link to post
Share on other sites

Shift keys can't be distinguished between, but keyboard control would be a good idea.

 

Ah, well, shift (both for left) and inverse video (for right) would work well on an XL kb.

Share this post


Link to post
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

Share this post


Link to post
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...