Jump to content

Magical Fairy Force Release Thread

Ryan Witmer

Recommended Posts

Looks like it's time for my bi-annual game release thread.


This will be your one-stop shop for everything leading up to the release of Magical Fairy Force.  Let's start with what I'm going to call alpha version 1.


Attached to this thread is the first playable release, alpha 1.  This is a complete game with a couple of minor issues that I know about, and possibly a few I don't.  Feel welcome to test this on whatever set-up you have.  I would greatly appreciate some input and testing from trak-ball owners.  I have two of these, and I think the game feels great, but I'd like to know what other people think.


On the subject of trak-balls, I've just created this thread which may be of interest to any other 5200 programmers:



  • There is a version identification string 256 bytes from the end of the ROM.  This string says "Alpha 1, 5/29/2020"
  • The joystick and the trak-ball are supported for both players.  Trak-ball games need to detect which type of controller is being used so that the values can be interpreted correctly.  This game does the detection after you select a 1 or 2 player game from the title screen.  At that point, consider your choice of controller locked-in until you return to the title screen.  This means that you can freely change between controller types, as long as you do it on the title screen.  This is also convenient for AtariMax users, since navigating the AtariMax menus can be difficult with a trak-ball.  You can use the joystick to get the game going, then switch to the trak-ball on the title screen.
  • This game is unapologetically analog.  This is important for emulator users.  Keyboards and digital controllers are not recommended.
  • There are two fairy-shattering issues that I'd like people to watch out for:
    • There is (was?) an issue that will end up inadvertently disabling all keypad input.  This includes the Start/Pause/Reset buttons.  I've noticed this in two places.  The first is on the single player game over screen, and the second is after the game is paused.  In both cases, none of the keypad buttons work so you end up either stuck at the game over screen or permanently paused.  I believe I've fixed this issue, but it only happened under very specific circumstances that I could not reliably reproduce, so I may be wrong.  I just got done with over two hours of testing and did not see the issue.  If this does happen to anybody, please let me know.
    • Issue the second is an obvious and explosive crash after selecting your game type from the title screen.  I've never seen this issue in the emulator I use for development, only on real hardware.  This makes it extremely difficult to debug.  It never came up during my most recent round of testing, so maybe it's fixed.
  • There are a few other minor issues that I'm aware of, mostly small graphics bug.  None of them should be major deterrents to gameplay, but feel free to report anything that seems off.
  • Parts of the game may seem rather spartan, and that's because I'm basically out of cartridge space.  I have a little bit of room left that I'm saving just in case I need code space for late bug fixes.  Once I'm satisfied with the bug level, I'm going to try to add what pizazz I can in the remaining space.
  • The source code will be released once the game is finalized.  I don't want earlier versions of the code hanging around to confuse people.


So that's about all I have to say about this build.  Have fun!


  • Like 9
Link to comment
Share on other sites

On 5/31/2020 at 11:59 PM, gambler172 said:


realky good game... as i own your other games,i

will buy this for sure ?

Hope it will be available soon.

greetings Walter

Thanks, glad you're enjoying it!  The final game will indeed be available very soon!

Link to comment
Share on other sites

Alpha 2, it's not just my second favorite Street Fighter game, it's also this build!





  • The new identification string is "Alpha 2, 6/3/2020"
  • One major thing in this build.  While investigating the mysterious crash issue, I found what Sherlock Holmes would call "An explanation that fits the facts."  I had to move some of my interrupt handlers around and I thought I had updated all the code that referenced them, but it turns out I missed some places.  Depending on the specific timing, the game might have ended up using a bad interrupt vector and jumping into random code.  This fits the behavior I had been seeing.  I fixed this problem, and haven't seen the issue since, but since it was relatively rare I need to do a lot more testing.
  • I ended up rewriting a few of the character endings.  While I was putting together the character biographies for the manual I got some new ideas.  No gameplay impact from these changes.



  • Like 3
Link to comment
Share on other sites

Alright, I'm calling this build beta 1.



  • The identification string is now "Beta 1, 6/5/2020"
  • The only changes here are a little of bit clean up on the screen transitions.  Sometimes the sprites would be caught onscreen in a sort of half-drawn fashion and it just looked ugly.  I think I've fixed all the places where this happened.
  • I like bulleted lists.
  • I'm going to do some heavy testing on this build over the weekend, and if it survives it's going to become a release candidate.  Unfortunately, I just don't have the cartridge space left to fancy this up.  My main goal was to get eight characters into the game and I'm super happy that I pulled that off.



  • Like 3
Link to comment
Share on other sites

40 minutes ago, Sauron said:

This game is making me want a 5200...




27 minutes ago, TrekMD said:

Oh, I'm getting this! :)


10 minutes ago, sramirez2008 said:

Me too! Just have to figure out a way for Ryan to sign this one too.:-D


  • Like 2
Link to comment
Share on other sites

39 minutes ago, AverageSoftware said:

Sadly, found a bug in this build after about 20 minutes of testing.  Working on fixing it now.  I would expect a beta 2 build on Monday with this fix and anything else I find over the weekend.

Not sad at all, as you found it now and not after the game is released.  :)  Good job!



  • Like 3
Link to comment
Share on other sites

Well, that was an adventure.  (Not to be confused with Adventure)

Here's beta 2:



  • The identification string is now "Beta 2, 6/8/2020"
  • This game uses its own random number algorithm.  I found a very short, fast, and reasonable one somewhere that I coded into the game.  The reason I do this is so that both players can start the game with the same random number seed and get the same results.  If you pay attention, both players get the exact same pattern of objects, but flipped on the X axis.  This means both players start on equal footing.  Once the special attacks start to fly, this whole pattern gets broken, but if two players always did the exact same things, you'd get the same results.  Early in development I realized that if the algorithm I was using was seeded with 0, it would break and you would only get 0 out of the algorithm for all eternity.  I put a check in the code that would keep drawing seeds from RANDOM until a non-0 one was found.  For some reason, in a fit of madness, at some point I convinced myself that 0 was actually OK and removed this check to save a little space.  While testing, I finally got the 0 seed and it was bad, causing the game to lock up at a particular section that was trying to find random numbers that didn't match.  I put the check back in.
  • The computer player has a general algorithm that it follows for most of the game.  When you launch your character's special attack against the CPU, it heads into a character-specific reaction algorithm that deals with that attack.  There was a glitch in the Frooty algorithm that could cause graphical corruption of the two player characters, at the extreme causing them both to disappear leaving only pairs of detached wings.  Funny, but not good considering I'm relying on the hardware collision detection.  I fixed this.
  • Kitty's special attack had a glitch when used against the lower player.  It turns out some of my memory areas overlapped, and the descending cat paws would occasionally "grab" data out of a different screen area and drag it in streaks down the screen.  This wasn't just ugly, but also game breaking since the collision detection would react to this corruption.  I moved some things around in memory to prevent this issue.
  • I also decreased the rate of fire on Kitty's special attack.  It was a bit too dense and difficult to avoid.


At this point, there are no known bugs.  Two of the bugs fixed in this build (not the random number thing) were things that I had seen happen once each but had never seen since, so I wasn't sure if they had accidentally been fixed.  They were the only two things on my "unconfirmed bug" list. I was extremely lucky to have both of these happen again in such a short time and in a fashion that made it obvious to me what had happened.   I'm planning to do a few more days of testing to see if anything else happens, and if it's all clear, this will be the release build.


  • Like 3
Link to comment
Share on other sites

Alright, here she is:



  • The identification string is now "Release 1.0, 6/11/2020"
  • The only change from beta 2 is a couple of minor adjustments to the CPU player behavior.
  • I've been playing this thing for hours and hours and hours and hours and hours...
  • Everything seems cool.
  • I'm making cookies to celebrate.
  • The attached download includes the 1.0 ROM and the complete source code.  If anyone wants to attempt a conversion to the 8-bit computers, I'd be happy to answer any questions about the code.  Everything is licensed under the GPLv3, so any derived works must also release source code.


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

4 minutes ago, Albert said:

Maybe, but you might have a tough time getting the chocolate and crumbs out of the box, manual and cart. :D



Nah..that is part of the fun! With the cart it would be like getting the last bit of crumbs in a bag of chips (Or crisps for you EU folks).


  • Haha 1
Link to comment
Share on other sites

1 hour ago, Albert said:

How were the cookies?

Great!  I made Reese's pieces cookies.  They didn't last long.


1 hour ago, sramirez2008 said:

Do we get a cookie with the CIB?

You get one of those pink sticks of gum they used to put in baseball card packs.

  • Like 1
Link to comment
Share on other sites

Not sure this qualifies as a bug report as such, but whatever display list you're using throws my RetroTink 2X-Pro into a tizzy and then my TV (2013 Samsung 1080p LED) gets grumpy and tells me "Unsupported Resolution." I get a very brief flash of the text title screen and then nada. Works fine on an analog CRT of course.


This particular LED TV does have a legacy composite input so I could try my 5200 straight into it bypassing the RetroTink, but I've not run into the same problem with other 5200, 7800 or 2600 games, or my A8 computers, through the same setup.


EDIT: More info. This is directly into the LED TV’s composite input. Looks like too many vertical scan lines but interestingly, it’s only the text mode title screen. If I start a game, the character selection screen and game screens are fine. So I tried the RetroTink again and same thing: if I press “1” or “2” in the blind, the screen display settles down once it goes to the character selection screen. 


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.

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.

  • Recently Browsing   0 members

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