PHOENIX

2 versions exist!  The first machine produced (serial # 01- 0101) has a white cabinet instead of the normal wood grain, and the game has different start-up music as well as a different tune every 4 stages.

BUG: On any boards with small birds, shoot 3 birds when they are flying away from you (diagonally) within 2-3 seconds.  The score will jump to around 204,000 points, no matter what your current score is.  Don Hodges explains the bug in detail on his SITE.

BUG: The bonus you get for destroying the mothership depends on the height it's at when killed, often leading to "0000" instead of "8200" on the first level if you time things wrong.  The explanation and actual bonus values for levels 1-5 depending on the height of the mothership are detailed below.  It's actually dependent on the height of the mothership when you kill it, and the level you're on (it adds 1000 points for the 2nd level, 2000 for the 3rd, etc. but tries its best never to go over 9000 - it fails on one occasion)

The height of the mothership is stored in location #43b9 - this starts at #f8 when the mothership is at the top of the screen, and counts down to #9f when at the lowest point. The programme ignores the lowest 3 bits when performing the calculation, so the values that can be used in the calculation (although not all are possible as you can't kill the mothership until you've done a fair amount of damage) are (mothership at top of screen->bottom of screen) #f8,#f0,#e8,#e0,#d8,#d0,#c8,#c0,#b8,#b0,#a8,#a0,#9 8

Now for the code (which appears at #2525) and explanation {Phil Murr}

ldax #43b9........;LSB of mothership height on kill (at lowest point it is #9f)
adi #60.............;add #60
rrc...................;shift right (b0->b7 i.e. halve it)
mov b,a............;store a in b
ldax #43b8........;get level number (1st=#0b, 2nd=#1b, 3rd=#2b etc...)
ani #f0.............;mask off upper 4 bits
add b...............;add to existing calculation (1st adds 0 points, 2nd adds 1000, 3rd adds 2000 etc.)
mvi b,#90.........;load b with #90 (max for 9000 points)
jc #253d..........;is bonus calc >#ff, jump if so to reset to #90
cpi #90............;is bonus calc <#90?
jnc #253d.........;jump if not to reset to #90
mov b,a ...........;otherwise calc is a valid bonus amount so store it
xra a................;clear flags
mov a,b ...........;restore a (a=a if valid bonus amount, a becomes max #90 if not)
daa.................;decimal adjust - slight bug, if ls-nybble>9, it can make the bonus>9000! (see level 2 maximum bonus below)
lxi h,#439d
mov m,a...........;save bonus msb
inr l 
mvi m,#00........;save bonus lsb (always #00)

And the bonuses you get

Height..Lev1....Lev2.....Lev3....Lev4....Lev5
F8(H)...3200....4200....5200....6200....7200
F0.......2800....3800....4800....5800....6800
E8.......2400....3400....4400....5400....6400
E0.......2000....3000....4000....5000....6000
D8.......2200....3200....4200....5200....6200
D0.......1800....2800....3800....4800....5800
C8.......1400....2400....3400....4400....5400
C0.......1000....2000....3000....4000....5000
B8.......1200....2200....3200....4200....5200
B0.......0800....1800....2800....3800....4800
A8.......0400....1400....2400....3400....4400
A0.......0000....1000....2000....3000....4000
98(L)...8200....9200....9000....9000....9000

 


Return to main menu