Been a busy couple weeks, sadly not much of it's been spent on Medieval Mayhem. A puppy, for my folks, was dropped off at my place on the 4th. Cute dog, but not-potty-trained teething puppies are a handful. My Grandma Lavota, who lives near San Antonio, got quite sick and was in the hospital for a week. She's been released and is currently in a nursing home for rehab. We're hoping she'll be able to return home in a few weeks. I headed out there to see her Thursday(which was also my 40th). My fol
Title Screen/Attract Mode Music, Druid Chip by moderntimes99.
Easter Egg(works, but is not finished)
Minor fix to prevent captured fireballs from wrapping around the screen
I'm using Paul Slocum's Music Kit 2.0 for the background music. To get it to work, I stripped out the visual display from songmain.asm(attached) to figure out the RAM requirements. Only 3 bytes are required to be preserved between calls to the music routines. Another 4 bytes are used as temp variables and c
Added a DEMO message that blinks during Attract mode. I had to also flicker the message due to fireballs disappearing when they travelled beneath the HMOVE lines.
I also reviewed the AI routines and don't see anything that would cause the game to be easier than before. Has anybody else noticed this, or is Jacob just getting really good at dishing out some Mayhem?
If nobody sees anything issues tonight then I'll give this version to Al as the version fo
Attract Mode is now in place. I've set it to start after 20 seconds of idle time on the menu(button not pressed, mouse not moving). It currently returns to the menu after 75 seconds(utilitizing the 2nd fireball's launch timer). You can also return by hitting Game Select or by pressing and then releasing Paddle Button 1(the button release is required else options will inadvertently be modified). Hitting Game Reset during attract mode will start a new game. I'm debating making it play a full round
I had two issues with the original brick pattern:
the impact on game play - While I liked the "jagged edge" appearance, it was causing an increase in "double brick bounces"(taking out 2 bricks at the same time)
it looked too busy
I've done the upper castles using a different texture that addresses both of these issues.
Any feedback on the revision?
Medieval_Mayhem.zip mm20061021NTSC.bin mm20061021PAL.bin
While testing Attract Mode I decided the jagged edge wasn't impacting the game play as much as I'd initially thought. So here's take 3 of the castle texture.
Medieval_Mayhem.zip mm20061021bNTSC.bin mm20061021bPAL.bin
I'm sure some of you were wondering about Chris' suggestion - I've added a brick texture, inspired by the arcade version, for the lower castles. I'd like some feedback on appearance and impact to game play before I spend the time to add it to the upper castles.
Just a few changes.
Fixed the reset-game bug.
The menu routines expanded into a 2nd bank of ROM so we now have descriptive labels of Kids, Slow, Fast and Medieval instead of 1 thru 4 for the values of Speed.
AI players on the Kids level are slower than before.
AI speeds swapped - player 1(grey) is now fastest AI and player 4(purple) is the slowest. This makes it so 1 player games can be made more difficult by picking a corner other than grey.
The To Do List (in no
I was playing a round after splitting the menu into 2 ROM banks to make room for extra graphics and the game reset to the main menu with all the options initialized to the power-up values. It doesn't happen all the time. I just check the version from 10-14 and it did the same thing. Anybody notice this on a version prior to 10-14?
The IRQ vector points to the same place the RESET vector does, so I suspect a BRK is being hit. I haven't coded a BRK, so this would imply data is being tr
Made a few changes
fixed problem where players 1 and 3 could move too far up the screen causing the graphics to be corrupted.
Maxed out the fireball speeds when all human players have died so the current round will end quicker.
fixed AI Catch to release the fireball if an AI player is killed while holding the fireball.
Redid the AI Catch Button routine. Old routine used ROL to shift the Catch Bit State of AI player 1 to AI player 2(and so on). New routine uses AND and
Just a quick post with the new scrolling menus. I ran out of ROM for text labels for the speeds, will try to make room for them in the next update.
The biggest change is the AI players' speeds now vary depending on the game speed and the number of fireballs in play. When I redo the menu I'll relabel the Speed settings as follows:
1 = Childrens
2 = Slow
3 = Fast
4 = Wicked
The speeds are controlled by the following table which tell each player how far they can move each frame. The values are looked up using FRAMECOUNT AND 7.
; where GameSpeed = 1(slowest) thru 4(fasest)
; Speed = GameSpeed -
Per supercat's request - catch now has a new option. Besides Yes and No there's now Limited. Limited catch will only let you catch a fireball if it did not hit the back of your shield.
Also added back in the overshoot-compensation that removes the jitter from the faster AI players.
I didn't like how the the 1 corner checking was working out, so I added back checking of all 4 corners. To make sure the screen doesn't roll/jitter, I added a "time remaining" check before processing collisions for the 2nd fireball.
I also did something that I hope addresses the problem where a fireball would get past your shield then bounce around inside the castle wall and take out a large number of bricks. I changed it so that after the fireball's new direction is calculated, it's
Turns out the lack of time was also occuring during the overscan when processing fireball collisions.
The fireballs are 2 pixels wide and 4 pixels tall; but, because I'm using a 2 line kernel, I can consider it 2 pixels tall.
in the original routines, the process for fireball collisions on the grey castle was:
if BrickHit(x,y) then
elseif BrickHit(x,y+1) then
elseif Brick(x+1,y) then
else BrickHit(x+1,y+1) then
I believe I solved the time issue by revamping the routines that figure out which fireball to track. The routines use a^2 + b^2 = x^2 to determine how far each fireball is. I used tables with precalced ^2 values and 16 bit math to sum the results because the values went up to 25600(160^2). To save time I didn't worry about calculating the square root of the sum as it doesn't matter.
There's up to 9 additions(3 AI players * 3 fireballs) and 6 compares (3 AI players and 2 compares - M0
I added the beginnings of the AI catch routines. The AI players can catch the fireball, but don't really know what to do with it yet. It works out OK when there's multiple fireballs, as they'll ignore the position of the held fireball and track the others, but not so good when there's just one fireball.
I also made a change in display priority so the ball is visible over the shields. This makes the fireball flareups visible over the shields, which I think looks much better than befor
Fireball Flareups are now in place. You'll take out your own castle walls if you hold onto a fireball for too long.
I redid the fireball/shield collision routines again. Side bounces are now redirected forwards.
Before the fix, when three AI players were alive, INTIM would have 1 +/- remaining at the end of VB when one fireball was in the air. When the second fireball was released there would often be insufficient time and the screen would jitter.
After the fix, with three AI players alive, INTIM has 7 +/- remaining when one fireball is in the air, 5 +/- when two are in the air and 3 +/- when three are in the air.
What's amazing is this was accomplished by commenting out a single
I've redone the fireball collisions so the fireballs won't bounce-thru when the fireball hits the left/right* side of the shield. Font Consistancy from the To Do List has also been taken care of.
I've noticed a timing issue - the screen will start to jitter if the 2nd fireball comes out while 3 AI players are still alive. You can see this by catching the fireball and holding on to it until the 2nd fireball gets released(about 1 minute, 15 seconds into the round). I think this will be
The AI players can now handle multiple fireballs.
I've also added english to the shield bounce - this should prevent the infinite bounce cycles that occured in the past.
The move out of the way routines are now working for when the fireball gets past a computer player. The current AI players are pretty fast(at least for NTSC games). I'll tweek the performance over time. Each player can have their own performance, plus I plan to make it change depending on the max-speed of the fireball.
I plan to start the "which fireball to track" routines next so the AI players will stop freaking out when the 2nd fireball comes into play.
I've also fixed
Fireball that is. Very primitive AI routines are in place. Currently they only know how to track 1 fireball, so they act a bit strange when 2 or 3 fireballs are flying around. They don't know how to catch the ball, and they don't know how to get out of the way if the ball gets past them so they often kill themselves off. Also the fireball can get stuck in a pattern. This will be fixed when I add english to the shield bounce routines.
Also a 2nd fireball* will be launched about 1 minu