Secret Bonus Number 01
Finding the long-lost secret bonus in Astro Blaster
By Don Hodges
A few years back I compiled a list of the known secret bonuses in Astro Blaster. Here is what I came up with:
Number 03, bonus 1000 points.
Shoot all enemies without
After creating the list, I added it to the arcade-history website's entry for Astro Blaster. As we can see, the list is missing entries for bonuses 01, 02, 05-08, 10, 11, 20, 21, 23, and 24 I posted a question to a mameworld message board, asking for more info. None came. Internet searches, then and now, come up with no new information on these missing secret bonuses.
So I decided to examine the game's code to see if I could find the remaining bonuses. Here is what I found.
Let's look at the setup for a typical known, existing bonus, the one for bonus #04:
2C37: 3A 56 CD LD A,($CD56) ; Load A with exit screen counter 2C3A: B7 OR A ; Is this award to be given? 2C3B: C2 45 2C JP NZ,$2C45 ; No, do next test 2C3E: 06 07 LD B,$07 ; Set points at 700 2C40: 0E 04 LD C,$04 ; Set bonus number #04 2C42: CD 4D 31 CALL $314D ; Display secret bonus #04 for shooting all before exiting
Comparing all the calls to the subroutine at $314D, which displays the secret bonuses, we discover a call for a secret bonus numbered 01.
3A64: 3A 60 CD LD A,($CD60) ; Load A with the bonus #01 indicator 3A67: B7 OR A ; Is there a bonus #01? 3A68: C2 72 3A JP NZ,$3A72 ; No, jump ahead 3A6B: 06 14 LD B,$14 ; Yes, load B with #14 (20 decimal) for 2,000 points 3A6D: 0E 01 LD C,$01 ; Set bonus number #01 3A6F: CD 4D 31 CALL $314D ; Display secret bonus #01 for doing something.
The highlighted line of code is the important one that shows us a bonus that is unknown, number 01. Next, we must find out what will trigger this bonus. Running a watch point on memory location #CD60 during play reveals the answer. It turns out this bonus is given for not missing any fireballs, during the final wave of each sector in the asteroid field.
At first this appears to be an extremely difficult task, if not near impossible, to accomplish. This may explain the fact that there is nothing on the Internet anywhere [according to my latest searches anyway - maybe I just missed it?] about any secret bonus #01 for Astro Blaster.
After some experimenting we discover that the counter which checks for this bonus is reset each time the player's ship is destroyed. So, an easy way to achieve the bonus can be done by sacrificing a life at the very end of the asteroid field, and then using the warp on the rest of the shortened sector. I have uploaded a youtube video showing the feat:
Also, there is a strange quirk in the following segment that I can't seem to account for. It is in the subroutine that checks for secret bonuses 13 through 19, awarded for shooting enemies in the proper order. It also checks for secret bonus number 20.
2C53: 3A 59 CD LD A,($CD59) ; Load A with check for shooting enemies in proper order 2C56: B7 OR A ; Check for match 2C57: C2 7D 2C JP NZ,$2C7D ; No, jump out 2C5A: 3A 7B C9 LD A,($C97B) ; Yes, load A with 2nd check for shooting enemies in proper order 2C5D: E6 81 AND $81 ; Check for match 2C5F: CA 7D 2C JP Z,$2C7D ; No, jump out 2C62: 3A 7C C9 LD A,($C97C) ; Yes, load A with sector number 2C65: 0E 20 LD C,$20 ; Load C with #20 for bonus number 20 2C67: FE 08 CP $08 ; Compare sector number with 8 2C69: CA 70 2C JP Z,$2C70 ; If equal skip next 3 steps 2C6C: 0E 12 LD C,$12 ; Else load C with 12 2C6E: 81 ADD A,C ; Add wave number. C is now between 13 and 19 2C6F: 4F LD C,A ; Store C as bonus number based on wave 2C70: 3A 7C C9 LD A,($C97C) ; Load A with sector number 2C73: 47 LD B,A ; Copy to B 2C74: CB 27 SLA A 2C76: CB 27 SLA A ; Multiply A by 4 2C78: 80 ADD A,B ; Add one. Now A is 5 times the level 2C79: 47 LD B,A ; Set bonus score based on wave 2C7A: CD 4D 31 CALL $314D ; Add score for secret bonus #13 through #20
After looking closely at the code (refer to the highlighted lines), we see it loads the bonus number with 20 (one of the missing bonuses) and checks to see if its on sector number 8, in order to award it.
Wait, this game doesn't have 8 sectors, it has 7.
When playing this game, when a player completes sector 7, the game repeats itself again starting at sector 1. However, during the attract mode, the game cycles through 8 sectors instead of just 7.
There does not appear to be any way for a player to reach sector 8 during a regular game. Using a MAME cheat, we can force to 8 the memory location that is used for the sector and observe what happens when playing in sector 8. The following MAME cheat can be used to access sector 8:
:astrob:00000000:C97C:00000008:FFFFFFFF:Play Sector 8
Learn about MAME cheats at http://cheat.retrogames.com
Sector 8 is playable; it is programmed to play the last six waves of sector 5, and during this sector, players can achieve secret bonus #20 for 4,000 points. This is the highest scoring secret bonus of the lot. It is awarded the same way as bonuses 13 through 19, by destroying all the enemies of a wave in a certain order.
Here is a screen shot of secret bonus number 20:
Comments and Conclusions
It would be cool if there was something the player could do to get to sector 8 without hacking. However, close analysis of the code does not show anything to indicate that this is possible.
Further analysis of the game code does not seem to reveal any other unknown secret bonuses. My guess is that the other secret bonuses existed at some point in the game's development, but were taken out before the game was released. Also, it appears that initially there were 8 sectors to play through, and this was changed to 7 at some point before release. The code which plays sector 8 is still there and is easily seen during the attract mode.
So, we can add the following two bonuses to the list, making the secret bonus list for Astro Blaster complete, at least as far as I can tell:
Number 01, bonus
2000 points. Shoot all fireballs
in the asteroid belt.
|In accordance with Title 17 U.S.C. Section 107, some of the material on this site is distributed without profit to those who have expressed a prior interest in receiving the included information for research and educational purposes. For more information go to: http://www.law.cornell.edu/uscode/17/107.shtml. If you wish to use copyrighted material from this site for purposes of your own that go beyond 'fair use', you must obtain permission from the copyright owner.|