Jump to content

Photo

Midnight Magic for Atari 800

pinball 2600 800 port

82 replies to this topic

#26 Heaven/TQA OFFLINE  

Heaven/TQA

    Quadrunner

  • 10,391 posts
  • Location:Baden-Württemberg, Germany

Posted Fri Jun 8, 2012 8:58 AM

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

#27 Rybags OFFLINE  

Rybags

    Quadrunner

  • 15,268 posts
  • Location:Australia

Posted Fri Jun 8, 2012 9:03 AM

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

#28 phaeron OFFLINE  

phaeron

    River Patroller

  • Topic Starter
  • 2,299 posts
  • Location:USA

Posted Fri Jun 8, 2012 9:34 AM

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.

#29 Rybags OFFLINE  

Rybags

    Quadrunner

  • 15,268 posts
  • Location:Australia

Posted Fri Jun 8, 2012 9:38 AM

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

#30 Sikor OFFLINE  

Sikor

    Stargunner

  • 1,320 posts
  • Location:Warsaw/Poland

Posted Fri Jun 8, 2012 12:53 PM

Great port. Thanx.

#31 FujiSkunk OFFLINE  

FujiSkunk

    Quadrunner

  • 7,456 posts
  • Behold the Fuji!
  • Location:Planet Houston

Posted Fri Jun 8, 2012 1:25 PM

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, Fri Jun 8, 2012 1:28 PM.


#32 Rybags OFFLINE  

Rybags

    Quadrunner

  • 15,268 posts
  • Location:Australia

Posted Fri Jun 8, 2012 1:35 PM

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.

#33 FujiSkunk OFFLINE  

FujiSkunk

    Quadrunner

  • 7,456 posts
  • Behold the Fuji!
  • Location:Planet Houston

Posted Fri Jun 8, 2012 1:37 PM

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.

#34 phaeron OFFLINE  

phaeron

    River Patroller

  • Topic Starter
  • 2,299 posts
  • Location:USA

Posted Fri Jun 8, 2012 11:10 PM

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.

#35 Thelen OFFLINE  

Thelen

    Dragonstomper

  • 546 posts
  • Location:Holland

Posted Sat Jun 9, 2012 3:08 AM

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 !

#36 ProWizard OFFLINE  

ProWizard

    River Patroller

  • 4,540 posts
  • Into Stampede
  • Location:In the cattle!

Posted Sat Jun 9, 2012 3:28 AM

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!

#37 Master Phruby OFFLINE  

Master Phruby

    Quadrunner

  • 8,138 posts
  • Location:Right behind you.

Posted Sat Jun 9, 2012 10:11 AM

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.

#38 Irgendwer OFFLINE  

Irgendwer

    Stargunner

  • 1,268 posts
  • Location:Germany

Posted Sat Jun 9, 2012 2:59 PM

Very nice effort. Thank you!
Unfortunately it plays - due to the slowness - in PAL like a different, not so entertaining game...

#39 Fox-1 / mnx OFFLINE  

Fox-1 / mnx

    Stargunner

  • 1,300 posts
  • What is your Alternate Reality?
  • Location:NL, Earth 2.0

Posted Sat Jun 9, 2012 3:50 PM

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.

#40 esplonky OFFLINE  

esplonky

    Moonsweeper

  • 440 posts
  • Kinetic, Not synthetic.
  • Location:Canyon Lake, TX

Posted Sat Jun 9, 2012 6:46 PM

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?

#41 Fox-1 / mnx OFFLINE  

Fox-1 / mnx

    Stargunner

  • 1,300 posts
  • What is your Alternate Reality?
  • Location:NL, Earth 2.0

Posted Sat Jun 9, 2012 7:49 PM

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.

#42 esplonky OFFLINE  

esplonky

    Moonsweeper

  • 440 posts
  • Kinetic, Not synthetic.
  • Location:Canyon Lake, TX

Posted Sat Jun 9, 2012 8:57 PM

i could add a second button on each side that connects to the down control.

#43 Rybags OFFLINE  

Rybags

    Quadrunner

  • 15,268 posts
  • Location:Australia

Posted Sat Jun 9, 2012 9:08 PM

Joystick down activates both flippers at once.

#44 ProWizard OFFLINE  

ProWizard

    River Patroller

  • 4,540 posts
  • Into Stampede
  • Location:In the cattle!

Posted Sun Jun 10, 2012 5:06 AM

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.

#45 Rybags OFFLINE  

Rybags

    Quadrunner

  • 15,268 posts
  • Location:Australia

Posted Sun Jun 10, 2012 5:14 AM

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.

#46 urborg OFFLINE  

urborg

    Chopper Commander

  • 149 posts
  • Location:Poland

Posted Sun Jun 10, 2012 5:23 AM

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?

#47 Tin_Lunchbox OFFLINE  

Tin_Lunchbox

    Chopper Commander

  • 234 posts

Posted Sun Jun 10, 2012 5:56 AM

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...

#48 Rybags OFFLINE  

Rybags

    Quadrunner

  • 15,268 posts
  • Location:Australia

Posted Sun Jun 10, 2012 5:57 AM

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

#49 Tin_Lunchbox OFFLINE  

Tin_Lunchbox

    Chopper Commander

  • 234 posts

Posted Sun Jun 10, 2012 6:02 AM

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.

#50 phaeron OFFLINE  

phaeron

    River Patroller

  • Topic Starter
  • 2,299 posts
  • Location:USA

Posted Sun Jun 10, 2012 6:22 PM

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.





Also tagged with one or more of these keywords: pinball, 2600, 800, port

0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users