Jump to content





Star Castle Developments

Posted by Thomas Jentzsch, in Atari 17 September 2012 · 11,012 views

Atari 2600 Programming Star Castle

Since Chris is busy with his RL, I will continue his blog entry about Star Castle Developments here.
 
Source code can be found here.
 
Note: There are still some occasional glitches which I have to sort out. And maybe even a crash. So if you find one, please let me know. Especially if you can reproduce it.
 
Attached is the final build from October 2015 and here the (never ending) DONE and TODO list:

; Explanation:
; - = open
; o = partially
; + = done
; ? = debatable
; x = cancelled

; Arcade Differences:
; - 3..6 lives via dip switches
; x extra lives > 100
; + game speed increases with score, segments, time...?
;.. + gamespeed (0..7) now based on score (increases every 2000 points)
; + ring rotation
;.. + not in sync
;.. + direction moves with ring (TODO: check mines on rings, gun gaps)
;.. + speed moves with the ring
;.. + speeds
;.... + increases with score (not castle)
;.... + reverse rotation at constant speed: 4.7s/loop, (1st castle: middle)
;.... + others: 0..1250 pts: 4.7 (outside)/3.2s (inside); ..2500 pts: 3.2/2.35s; then: 2.4/1.9s
;...... own speed range defined
;.. + offsets are transfered with the expanding rings
;.. o hit sparks (TODO: graphics)
; + killing gun and getting killed costs one life
; + shield kick
;.. + ignores previous speed
;.. + gives new speed
;.. + doesn't reposition
; o ships
;.. + facing left at life start
;.. + start position moves up with each new life? (10 positions, 1st one seems random, 2nd one is bottom + 1?)
;.. ? X and Y speed are NOT linked together
;.. o deceleration is linear and lower
;.. + ship decelerates differently in left/down (100%) than in right/up (~50%) direction!!!
;.. + after castle completed, ship continues at current spot in next castle
;.. + ship bounces during explosion
; o mines
;.. + immediate respawn
;.. + spawn position depends on gun direction (dir - 90°)
;.. + spawn independent from ship direction
;.. o hop back and forth on the rings
;.. + higher homing speed at higher scores (as fast as player's ship)
;.. + homing mine movement has some randomness to prevent mine grouping
;.. + homing mine lifetime varies (lifetime counted on ring too, but only 50%)
;.. + slower turning speed in lower castles
;.. o mines hop much faster in arcade in higher levels
;.. - max. one mine per ring segment
;.. + disappear when they hit a ship
;.. + mines on ring do not kill ship
;.. o hit sparks (TODO: graphics)
; + gun
;.. + shots immediately when there is a gap
;.. x projectile moves a bit faster
;.. + projectile disappears when ship is hit
;.. x starts new gun life at last direction
;.. + starts next ship at last direction
;.. + shots whenever there is space, no matter where the player's ship is
;.. + is turning slower, especially initially
; + bullets
;.. + max. 3 at a time
; o sounds
;.. o siren frequency depending on segments (~65..260Hz):
;.... + intermediate screen (highest pitch, slightly higher than 3)
;.... + 36..28: 0 (lowest pitch)
;.... + 27..24: 1 (slightly higher)
;.... + 23..20: 2
;.... + 19..16: 3 (high pitch)
;.... + 15..12: 4 (reset to between 1 and 2)
;.... + 11.. 8..5 (slightly higher, still lower than 2)
;.... +..7.. 4..6 (slightly higher than 3)
;.... +..3......7 (slightly higher = intermediate)
;.. - homing mines sound
;.. + no sound when hitting segment first time
;.. + thrust sound very low
;.. - projectile sound starts with fire sound
;.. - better sound mapping
;.... - channel 0:
;...... + 2. ship explosion (channel 1?)
;...... + 8. siren
;.... - channel 1:
;...... + 1. gun explosion
;...... + 3. projectile
;...... + 6. bullet fire
;...... + 7. ship ring bounce
;...... + 9. thrust
;.... - both:
;...... + 4. mine hits
;...... + 5. sector hits (channel 0?)
;.... - homing mine sound
; + scoring: 10/20/30 points per segment hit (not per segment destroyed)
; + no leading zeroes
;.. + score
;.. + castle
;.. + ships
;.. + highscore
; ? scores are centered
; + digits are slightly wider
; - ...

; Bugs/TODOs:
; + it seems that the gun is correcting direction after finding a gap but before fireing
;.. this leads to shots going through intact sectors
; + increase vertical screen size (TODO: use gained time)
;.. + define extra stars data
;.. + adjust stars in various screens
;.. + center/resize other screens
; + make ring 1 data ordered like ring 0 + 2 data
; + gun needs gaps in all three rings
; o General task management
;.. + allow individual tasks with priority and order
;.. o adjust parameters of tasks (check if they could be skipped)
; + regenerate if middle ring is empty (test arcade).
; + homing mines broken at higher castles (>=6)
; + explosion too slow (check again when CPU time is reduced!)
; + vector angle gives too coarse results
; + occasional glitch when mine is shot
; - bullet sometimes glitches when it hits (could be same problem as with initial mine?)
; + DIR_SEARCH
;.. x gap found a bit too early (counter clockwise)
;.. + no gap found when GUNDIR = 17
; + occasional reversed intermediate castle/ship graphics
; + first mine glitch (only if thrusting or fireing!?)
;.. resulted from following order: 1. x-pos mine; 2. create mine; 3. display mine
; + thrust sound corrupted
; + thrust sound set to lowest possible frequency and made 50% louder
; + siren twice as loud
; ? bullet/ring check may have flaws
; + occasional single pixel glitch on empty ring segments
; + another occasional single pixel glitch at start of new life (reason: odd without even rotate)
; + empty high score initials ... (instead of aaa)
; + difficulty switches fixed at start of game (4 different high score tables)
;.. o make different high socre tables identifialble (colors only so far)
; + stop gun shooting when ship is exploding
; o more ring colors
;.. + 8 different sets
;.. o define colors
; o mine graphics (maybe slower?)
; + thrust sound broken after gun explosion
; + occasional crash!!! (X used in CheckRegenerate)
; + fixed last color mode remembered
; o check PAL colors on real hardware
; o mine explosion graphics? (code done, graphics todo)
; + add "arcade" to the title graphics
; o pulse red part of the title graphics in sync with music
; + (c) 201*3* (fixed "3" font)
; x new ship must not start at blind gun spot (but arcade does too)
; + highlights in small letters M and W and score 4
; + adjusted flashing text on/off ratio
; x vary ship's thrust display frames %10 -> e.g. %101
; + white vertical line before highscore
; - more gun explosion animations
;.. o gain space
;.. o optimize overlapping
;.. - implement new data
; - ...

; Ideas:
; + transfer colors with rings too
;.. + gun changes color too, is that OK?
; - PAL50 timing option
; + smaller ship to allow better manouvering?
;.. + data (ship, ship + flames)
;.. + offset
;.. + reflection
;.. + projectile collision
; + use direction search for mine/bullet ring hits
; x using VDELP0 to move ship smoother vertically (not possible)
; ? reverse display of double hit segments (dotted = complete, full = hit once)
;.. o done, but is it a good idea?
; + increase some difficulties 1000 points earlier (kick chance, gun turning)
; x better do 16 difficulties for those?
; - reduce maximum ring rotatation speed (saves CPU time)
; + rename "Wave" into "Castle"
; ! adjust scanlines
;.. + AA logo
;.. + title
;.. - Melody load
;.. - hishscores
;.. + game
;.. + messages

Attached Files






I think a not animated spark played by 3 frames, I mean, due flicker, frame 1 = spark, 2 = ship, 3 = spark, 4 = ship and 5 = spark.

You are right, the spark would flicker with 30Hz, not 20Hz.

How about setting p0 as double wide (can be made outside of kernel) and using missiles and balls for debris? The kernel support up to 6 dots, just setting the mines as single pixel wide going down the player explosion and make the player shoot 3 missiles to up.

The bullets cannot be used, because they are still valid at that point. You even can destroy the gun while your own ship is exploding. We could use the mines. But that's just one extra dot.
  • Report
BTW: If anyone is interested, I have updated the bug/todo list.
  • Report
To keep using the big ship, collisions are made by software right? Is it possible to reduce the ship "hit area"? Then the cannon/mines need to hit the center of the ship in order to destroy it. Like ghosts in pac-man arcade, doesn't kill you just touching a single pixel.

Edit:
+ regenerate if middle ring is empty (test arcade).

Nope, desn't regenerate destoying all the middle ring sections.
  • Report
Only the gun projectile/ring vs ship collision is checked via software. The mines are done in hardware.

And the latter ones are the really annoying enemies. :)
  • Report
Oh nevermind about the middle ring... + means done :P (I can't to edit the post anymore)

BTW if you reduce the cannon hit tolerance, I think it will help to keep using big ship.
  • Report
The projectile is 8x8 and the hit area is only 6x6. And IMO the projectile is not main the problem (see above :)).
  • Report
I like the new "shoot" sound!

I like the mines as "dots." (Would be good for high difficulty) Looks great on RF television!
Changes made in: bank2.asm
"In KernelSetup":
; Set Missile Size ; (Shouldn't it be BALL size?)
lda #%00000010 ; [35] + 2
sta CTRLPF ; [37] + 3

; -----------------------------------------------------------------------------

ALIGN_FREE 256

; Mine Data
StartMineData
DS.B YSTART, %10000000
MineData
DS.B 1, %10000010 ; Change 2 to 1
DS.B YSTART-2, %10000000
PAGE_ERROR StartMineData, "MineData"
  • Report
Actually we plan something even better for the mines and give them some animation. :)
  • Report
Nice job on the sparks! I knew you could make it happen. Suggestion: Maybe a spark with a hollow center? Like seeing the end of an explosion / pop?
I didn't even realize the flicker with the player's ship when the Castle fires until I turned on Stella's colors. When you hear that sound and see the fireball the last thing you are looking at is your ship flickering!
  • Report

Nice job on the sparks! I knew you could make it happen. Suggestion: Maybe a spark with a hollow center? Like seeing the end of an explosion / pop?

Nathan is at it already. :)

I will post a new ROM when he is done.
  • Report
I must admit I am liking the new ship now that I'm used to it. :thumbsup:
Good thing: The ship reminds me of a house fly.
  • Report
Updated the ROMs to revision 88
  • the mine and ring sparks are there (graphics will be improved)
  • better sound driver, should utilize both channels better
  • the siren is (basically) in place.
  • removed leading zeros on all numbers
  • lots of smaller stuff
I think I am going to make the siren a bit louder in the end. But currently, because it is interrupted very often, that doesn't sound good. Trying to improve on that...
  • Report
I have added new ROMs with experimental mine animations (Note: because it is experimental code, bullets are invisible for now).

Please LMK know if the new mine animation works for you.

BTW: Feedback for the siren in place is welcome too. :)
  • Report
The new mines work for me. As with the smaller ship, it took a few games to become accustomed to them, but I like them better. They're more dynamic and just a little harder to shoot.

I like the siren - I need to hook up a real 2600 to really give it a good listen.
  • Report
Glad you like the mines and siren.

I wonder if I should let the mines rotate at half speed? :ponder:
  • Report
I think it works well at the current speed. They shimmer quite fast in the arcade game.
  • Report
Rotating mines looks great!
  • Report
Hey TJ - just wanted to chime in and say the mines look great! Also the siren really adds a nice touch too - very much like the arcade.

Thanks for taking the time to finish this one - can't wait!
  • Report
The rotating mines look good - much better than I was expecting! The updated siren also sounds great - nice work Ivan.

Chris
  • Report

The updated siren also sounds great - nice work Ivan.

That was me. :)
  • Report

Search My Blog

Recent Entries

Recent Comments

May 2019

S M T W T F S
   1234
567891011
12131415161718
19202122232425
26 27 28293031 

Categories

0 user(s) viewing

0 members, 0 guests, 0 anonymous users

Latest Visitors