Jump to content
  • entries
    658
  • comments
    2,707
  • views
    907,055

About this blog

Atari projects, Mac mini DVR, and other things

Entries in this blog

Reposition Player 1 routines done

The Reposition Player 1 routines have been rewritten. It now takes 4 scanlines to reposition player 1, plus an additional scan line to get back into sync with the main kernel loop. The player 1 graphics can start on the additional scan line, but a reposition of player 0 cannot be triggered on it as the BMI KernelEvent is what was dropped to get back in sync.   The new kernels take up a bit more ROM than before as I had to move the jmp() outside of the horizontal retrace time, which mea

SpiceWare

SpiceWare in Frantic

Frantic reboot?!?

I was reviewing the source for Frantic this weekend and while I was going over the time-critical kernel loop: KernelLoop: ; 70 lda #<DS_COLUP0 ; 2 72 sta WSYNC KernelLoopNoWSYNC: beq RepositionP0 ; 2 2 sta COLUP0 ; 3 5 - before 25 lda #<DS_COLUP1 ; 2 7 beq RepositionP1 ; 2 9 sta COLUP1 ; 3 12 - before 25 stx ENAM0 ; 3 15 - before 25 lda #<DS_GRP0 ; 2 17 sta GRP0 ; 3 20 - before 25 sty ENAM1 ; 3 23 - before 25 lda #<DS_PF2L ; 2 25 sta PF2 ; 3 28 - before 38 ld

SpiceWare

SpiceWare in Frantic

Special Room Objects

Special images are in place. All they do at the moment is animate.         Humanoid shifts with room   Can shoot out walls     There's also updated humanoid and explosion animations.     This will most likely be the last Frantic update until January.     ROMs frantic_harmony_20111104_ntsc.bin frantic_harmony_20111104_pal.bin frantic_stella_20111104.bin   So

SpiceWare

SpiceWare in Frantic

a couple optimizations

The sprite collision routine is called a lot, and I do mean a lot. it's used to check if a robot can safely move (Wall Avoidance in Berzerk and Wall + Robot Avoidance in Frenzy), figure out if a robot collided with something, figure out if the humanoid collided with something, and so on. So my first optimization was to look it over and see what I could do to make it faster. I ended up replacing a number of things with pre-calculated values that are stored in the space freed up by dropping the di

SpiceWare

SpiceWare in Frantic

bye bye digital audio

hello 2 channel sound   The bug in the ARM chip had me >this close< to cancelling Frantic. Thanks to the help of GroovyBee, I'm now using the bug workaround which is to set the ARM's MAM to Mode 1. That partially disables the ARM's cache, which introduces a performance hit in the ARM code.   To make the drop in performance easier to address, I've turned off the random selection of where robots appear - instead robots appear in every slot they can so I can test worst cas

SpiceWare

SpiceWare in Frantic

frenzy variation playable

Frenzy variation playable Traditional Tanks in place, they won the votes Hitting GAME SELECT will bypass the end-of-game score screen door routines revamped, if you die the room's entry door will reopen for testing purposes, the room number shows during the room-shift sequence     ROM frantic_harmony_20110927.bin   Source Frantic20110927.zip

SpiceWare

SpiceWare in Frantic

6507 all in bank 5

Finished merging 6507 banks 4 & 5 into bank 5. Saved 377 bytes by doing this! updated robot up/down graphics (no more sliding leg) revised sprite routines to offset the Right-Robot images by 1 pixel revised wall avoidance routines to work better with animated sprites new screen which shows last score for a bit, with continue countdown if enabled. Hitting fire on this screen will start a new game, starting level depends on the continue setting    

SpiceWare

SpiceWare in Frantic

walk robot walk

Robot animation frames are in place. They have thrown off the wall avoidance routines though, so no need to let me know that the robots are walking into walls more frequently than they should!   Also no need to let me know the Frenzy variation doesn't look right! That's because the Tank robots aren't in place yet.   Speaking of Tanks, which do you prefer? Traditional Tank   Scorpion Tank   Both Tanks look cool. The main tradeof

SpiceWare

SpiceWare in Frantic

run humanoid run

espire8's been quite busy churning out the graphics, so I decided it was time to work on how to implement the animation sequences. First up, the humanoid's now using a 4 frame run sequence.   When I initially got it working, I thought the the speed was a bit to fast, so I did another build where each frame is used twice in succession.   ROMs frantic_harmony_20110917fast.bin frantic_harmony_20110917slow.bin   Source Frantic20110917.zip

SpiceWare

SpiceWare in Frantic

menu is finished

though I might end up redoing it in 6507 code as I think it'll take less ROM space and processing time is not an issue when displaying the menu. Up/Down to select option to change. Left/Right/Fire to change an option. Only Fire works on the Start option, and it starts the game when Fire is released.   The options are: Maze Type (berzerk style on the left, frenzy style on the right) Homing - tank robots shoot homing missiles (frenzy only) Wa

SpiceWare

SpiceWare in Frantic

menu beginnings

I decided to take advantage of the 2 color kernel for the menu options as well. The menu is not functional yet, I just finished working out how to display it.   The options that are displayed are going to be: Maze Style - berzerk is currently selected Homing Missiles Yes/No. Frenzy only(will be greyed out if berzerk maze selected) Wall Flicker Rate 1/2/3/4. Frenzy only. Maze sample at top will flicker at the selected rate for user feedback. Max Robot Sh

SpiceWare

SpiceWare in Frantic

2x collisions and smarter robots

Updated the collision routines to handle the 2x players. To do this I needed to double-up the pixels of the sprites so that a 2x image of _X__X_X_ would be tested as __XX____XX__XX__ const unsigned char double_nybble[] = { 0x00, 0x03, 0x0C, 0x0F, 0x30, 0x33, 0x3C, 0x3F, 0xC0, 0xC3, 0xCC, 0xCF, 0xF0, 0xF3, 0xFC, 0xFF}; int DoubleBits(int bits) { return (double_nybble[(bits &

SpiceWare

SpiceWare in Frantic

big otto

Was trying to figure out how to show the special objects* in the Frenzy variation when I realized a 2x player would just about fill the width of the smaller room sections. I checked the kernel and discovered I had enough time to change the size of Player 1 during it's reposition routines. I also had an unused color data stream value, due to Player 1's reposition routine taking 1 scanline longer than player 0's routine, where I could store the NUSIZ1 value. So I've updated the kernel and the spri

SpiceWare

SpiceWare in Frantic

the bouncing ball follows you

fixed the shoot-off-screen bug Evil Otto now bounces Evil Otto using a different Direction-To-Humanoid routine than the robots (so he'll do angles unless he's perfectly lined up horizontally or vertically) extra lives ever 1000 points ROM frantic_harmony_20110902.bin   Source Frantic20110902.zip

SpiceWare

SpiceWare in Frantic

trigger phrases

added a function to trigger the phrases (before phrases were hardcoded to the direction you exited the room). It's used to say: "Intruder Alert! Intruder Alert" when Evil Otto shows up "Chicken" if you leave a room without killing all the robots "Get the Humanoid" if you leave a room after killing all the robots. [*]made changes to the sound effects [*]revised the wall avoidance routines   ROM frantic_harmony_20110830.bin

SpiceWare

SpiceWare in Frantic

sound effects

Added the sound routines along with a few cheesy sound effects. Will revise those later. I'm using only channel 1 due to the digitized sample support, which requires AUDV0 to be updated on just about every scan line (it's using a variation of DPC+'s 3-voice music routine). I have some ideas on how to work around this for users with an AtariVox plugged in. I might even be able to make it work when there's no speech being played back.   Tweaked the WallAvoidance routines, in the prior ro

SpiceWare

SpiceWare in Frantic

wall avoidance

The robots now try to avoid the walls.   Shots now take out other shots. Sometimes a robot will shoot too quickly, causing both shots to disappear. This will be fixed later when I add a "gun cool down" routine.   This change took a bit longer than I expected - a shift in the compiled code triggered the MAM1 bug in the ARM chip and it took me a few hours of reordering the functions until it cleared up. Not fun.   ROM frantic_harmony_20110827.bin   Sour

SpiceWare

SpiceWare in Frantic

stealth mode, activated

fixed the bug where the explosions were sometimes half invisible. fixed bug where bonuses won't be added if explosions were still onscreen shrank explosion width by 1 pixel as if the robot ran into the wall on his right side the explosion would go thru the wall and hit robots/human on the other side. added new stealth mode. Set Right Difficult to A to activate it. Here's a screen recording of stealth mode in Stella http://www.spiceware.org/movies/FranticStealth.mov

SpiceWare

SpiceWare in Frantic

did more than I expected

Robot speed ramp up redone to take twice as many levels to hit max speed. Slow robot shots now move at 1/4 humanoid shot speed. Fast robot shots now move at 1/2 humanoid shot speed. Max shots per level now ramps up from 0 shots to 3 slow shots, then 1 to 3 fast shots. Death sequence for humanoid Robots explode when hit. Shrapnel can take out other robots and the humanoid. Preliminary Evil Otto routines. Implemented 3 reserved lives Robots a

SpiceWare

SpiceWare in Frantic

moving bodies

I decided to worry about the homing missiles later, so here's the initial version with moving and shooting robots!     ROM frantic_harmony20110824.bin   Source Frantic20110824.zip

SpiceWare

SpiceWare in Frantic

target acquired

The robots now know if they'll hit you when they shoot. To visually show this, I change their shots from the homing missiles(squares) to the normal shots (lines). In the screen shot the top and bottom row robots have acquired target lock, the middle row robot has not.   The test them, I made it so that holding up on the right joystick (Y key in Stella) will cause the robots to shoot. Let go and the shots will reset. If you can line things up correctly, the robots will shoot other

SpiceWare

SpiceWare in Frantic

where's the humanoid?

In order for the Robots to move or shoot, they need to know where the Humanoid is in relation to themselves. If we're only looking at 4 directions it fairly straightforward - horizontal vs vertical is determined by seeing if the difference between Robot X and Humanoid X bigger or smaller than the difference between Robot Y and Humanoid Y. Once horizontal/vertical is decided then if the difference is negative the direction is left or up, while if it's positive it's right or down.   For

SpiceWare

SpiceWare in Frantic

shot collisions

Shot collisions are in place. Use Left Joystick to move shot (hold fire for slo-mo), use Right Joystick to select shot style (horizontal, vertical, homing missile).   Note: selecting "no missile" (Right Joystick Up) turns off the missile, but in the test routines I didn't skip the collision detect. As such, you'll still see collisions occur (for the curious, it's using the Tank robot shape).   No collision   Colliding with wall   Colliding with

SpiceWare

SpiceWare in Frantic

playfield collisions and more

Playfield collision logic is now in place. When moving the humanoid the score will change from white to red. When moving Otto the score will change from green to blue.   Humanoid not touching the wall   Humanoid touching the wall   Otto not touching the wall   Otto touching the wall   As you might have noticed, the robots can now appear in different colors. The current colors are just tests, so let me know if you really li

SpiceWare

SpiceWare in Frantic

×
×
  • Create New...