Jump to content
Sign in to follow this  
Blue Azure

GALAGA-14 - new game & disassy

Recommended Posts

BAM!BAM!BAM!

BAM!

BAM! BLUE AZURE MONDAY BAM!

BAM!

BAM!BAM!BAM!BAM!

 

GALAGA is next in the series of about 10 originals on the Atari 7800. It was a huge hit when it burst into arcades in 1981. It was a sequel to 1979's GALAXIAN, which also spawned several sequels of its own, is an intense space shooter. In 1984 this was to be the 7800's answer to the 5200's GALAXIAN.

 

DISASSEMBLY NOTES (true for all disassemblies)…

Thus far, not a single Atari 7800 .asm file has matched the corresponding released binary 100%. This isn't a surprise, nor a bad reflection of the engineers involved. We know there was a gap between the original designs of ca.1983-1984 and the eventual release of ca.1986. This was a period of unknown potential design changes at Atari, and the changes aren't documented as far as we know. The carts were released and they work, as they work. The original cart designs have been frozen for decades, never-ever reviewed in detail as they are now. To locate the differences between the released source list and the released binary, simply open the disassembly .rtf file and do a text search for "source" (without the quotes) and you'll see red text highlighting the differences. The green text is program comments and disassembly comments are in black. It's that simple. And whenever I see a typo error I clean those up as well. "Missle" should be spelled Missile, and now it is.

 

GALAGA Disassembly…

GalagaDisassembly6.rtf

(CAUTION: This is over 200 pages).

 

DEVELOPMENT OF GALAGA-14…

GALAGA was another fave of mine in the late 1980s. At first I was avoiding the macro-beams deployed by the Galagan Flagships, only to find out this is the way to get dual ships, but you have to follow the instructions (see the user's manual). Before developing my custom GALAGA game, I was thinking of naming my custom game GALAGAGA, but then I thought of Lady Gaga, which immediately changed my mind. To retain the look & feel of the original GALAGA game, I tended avoid creating invincibility for this game. Results of testing the changing of the start # of lives count with the ProSystem Emulator 1.3 (and confirmed on the 7800 hardware):

 

If the game starts with over 36 (24 hex) lives, the game crashes. If the game starts with over 20 (14 hex) lives, the game won't display the level number. The game will display up to 14 (0E hex) ships, so that's what we start with. This way, at the first death you will see a ship lost. Hence the name GALAGA-14. At first it may be disconcerning to see all these ships along the bottom, but this means more lives and more game time to achieve higher levels. Without more modification, no 99 lives or invincibility is immediately available. The game does offer some amazing opportunities for modifications I hope to build later, when more time is available.

 

HOW IT WAS DONE...

Looking at the disassembled code:

 

ATITOUT:

8290 A9 04 LDA #$04

8292 85 B1 STA LIVES

8294 AE 23 27 LDX TWOPLAYR

8297 F0 02 BEQ ZILOUT

8299 85 B2 STA LIVES+1

 

Change amount of lives at $8290 (EPROM $0290) from $A9$04 to $A9$0E (NTSC).

Change amount of lives at $82B6 (EPROM $02B6) from $A9$04 to $A9$0E (PAL).

 

NTSC GALAGA-14

GALAGA14_NTSC_B47B.bin

Galaga14_NTSC_32K.a78

 

PAL GALAGA-14

GALAGA14_PAL_781D.bin

Galaga14_PAL_48K.a78

 

ENJOY THE GAME!

 

NEXT UP> MS. PACMAN due out January 28th. Yes, another Monday. Two great sample games to be had with this release of the disassembly! Then vacation and then eventually the ROBOTRON disassembly re-hash, due to the popular conversion-to-PAL demand.

Share this post


Link to post
Share on other sites

Very cool. Annotated code is always a helpful learning tool. I annotate literature with my students a lot and it helps. I'll poke through it later on my comp for some light bedtime reading.

Share this post


Link to post
Share on other sites

MISCNT11 DS 2 ;HOLDS THE # OF SHOTS FIRED PLAYER1

MISCNT12 DS 2 ;HOLDS THE # OF SHOTS FIRED PLAYER2

MISCNT21 DS 3 ;HOLDS THE # OF HITS FOR PLAYER1

MISCNT22 DS 3 ;HOLDS THE # OF HITS FOR PLAYER2

RATIO DS 3 ;HOLDS THE RESULT OF 100 * MISCNT2

Should this line end with MISCNT21 or 22?

 

 

METAREG DS 1 ;TELLS IF TIME FOR META ATTEMPT

METACNT DS 1 ;KEEPS TRACK OF META BIRTHS

CAPQUAN DS 1 ;CAPTURE QUANDARY QUESTION

LOOPCNT DS 1 ;COUNTER IN BIRTH ROUTINE

MISTIMER DS 1 ;TIME BETWEEN HERO MISSILES

 

So this line be modified to speed up your shots or the number of on screen shots?

Share this post


Link to post
Share on other sites

Sorry for the delay. I'm working full-bore on ripping ROBOTRON right now and may be for a while, what an amazing game this will be.

 

On GALAGA, as gorfcadet mentions, the original source list appears to show a typo error "RATIO DS 3 ;HOLDS THE RESULT OF 100 * MISCNT2" which was cloned by my disassy. I don't know what is right, but I could phone the original programmer and ask him. Yeah, right. (Holy batwing gorfcadet you actually found that!)

 

The original source list is here: PALGRPHA.S

 

True, it appears the shooting delay is controlled by the missile timer MISTIMER.

 

I will see if I have time tonight to take a break on ROBOTRON to try some simple mods on GALAGA. If successful, and of course I will be, I'll report tomorrow. CODE BLUE - out

Share this post


Link to post
Share on other sites

Traced the origin of the 1st shot at $80C6, "Look at the fire button" and then jump to GOTORES and at $826D changed from $A9$20 to $A9$00. There are other program delays for the second shot, but speeding that up only bunches up the shots and I don't think that helps anybody. If they're staggered then you have a better chance to shoot everything. The change doesn't appear to make that much difference, but you can decide for yourself.

 

GOTORES:

;CALL GALAGA TUNE HERE

8260 20 D1 D3----JSR SCRAPALL

8263 A9 00--------LDA #$00

8265 20 04 D4----JSR TUNIN

8268 A9 01--------LDA #$01

826A 20 04 D4----JSR TUNIN

826D A9 20--------LDA #$20 ;PREVENT SHOT FIRE

826F 85 A9--------STA MISTIMER

8271 A9 00--------LDA #$00

8273 85 B0--------STA AUTOPLAY ;CLEAR AUTOPLAY MODE

8275 8D 20 27----STA SELECT ;CLEAR SELECT MODE

8278 20 7D 82----JSR CLRSCORE

827B 30 13--------BMI ATITOUT ;CLRSCORE RETURNS MINUS

 

Changed $826D from $A9$20 to $A9$00.

 

 

NTSC GALAGA-F14 (F = faster fire)

GALAGA_F14_NTSC_B45B.bin

Galaga_F14_NTSC_32K.a78

 

While rummaging around GALAGA, I cooked up another version. This one starts with 2 lives, but when you die you don't lose a life, you gain a life. Oops. It's a single instruction change, and now you can play forever. There are also 14 lives maximum (displayed) on this one.

 

ATITOUT:

8290 A9 04--------LDA #$04

8292 85 B1--------STA LIVES

8294 AE 23 27----LDX TWOPLAYR

8297 F0 02--------BEQ ZILOUT

8299 85 B2--------STA LIVES+1

 

Changed $8290 from $A9$04 to $A9$02.

 

DECLIVE1:

94D2 A6 AE--------LDX PLAYER

94D4 D6 B1--------DEC LIVES,X ;DEC LIVES OF CURRENT PLAYER

94D6 D0 1F--------BNE ZDLOUT

94D8 A5 B1--------LDA LIVES ;GET LIVES OF PLAYER 1

94DA 05 B2--------ORA LIVES+1 ;SEE IF BOTH ARE OVER

94DC F0 16--------BEQ ZZLOVER ;RESTART GAME PLAY

94DE 8C 50 27----STY TTEMP ;SAVE Y VALUE

94E1 A9 4F--------LDA #$4F

94E3 85 BE--------STA PLAYRREG ;"PLAYER X"

94E5 85 BF--------STA GMOVEREG ;"GAME OVER"

94E7 A9 05--------LDA #$05

94E9 8D 12 1E----STA TYPE+63

94EC A9 49-------LDA #73

94EE 8D 5A 1E----STA XCORD+63

94F1 4C 1D 95----JMP ZDLOUT3

 

Changed $94D4 from $D6$B1 to $F6$B1.

 

NTSC GALAGA-14R (R = reverse logic)

GALAGA_14R_NTSC_B46F.bin

Galaga_14R_NTSC_32K.a78

 

 

If anyone can find a better way to speed up shooting, kindly let us know. We do need it.

Share this post


Link to post
Share on other sites

Very cool! I love Galaga, but the 7800 version is in need of a sprite hack. Maybe some day when my other projects are finished. Awesome code breakdown BA.

Share this post


Link to post
Share on other sites

Isn't the issue with the sprites primarily that they're too big on the screen (and thus a lot uglier than they should be)? I'm not sure how you can hack that without also affecting the collision detection.

Share this post


Link to post
Share on other sites

Hmmm. Short answer: idunno. :)

 

Maybe after I get some other things off my plate I'll compare the spritework and sizes to other versions. If I did anything, I'd be careful to work within the original sprite sizes to avoid a complete overhaul. Maybe find some graphical wiggle room in there somewhere.

Share this post


Link to post
Share on other sites

I never thought the sprites were too large, although I admit I'm playing my carts on a 13" monitor at the moment. Ugly sprites? Sure the Galaga's look ugly on the emulator, but they look fine on the 7800 hardware, IMHO.

 

As for the shooting speed, in my opinion that needs to be upgraded to the level that ROBOTRON is. Or if you must play shooters, just play my ROBOTRON versions and forget about GALAGA for now. I'm sure we can do something eventually, but what's the priority?

 

> Game Genie <

Share this post


Link to post
Share on other sites

I do not believe the sprites are too large either, but that is due to the playfield being wider than the arcade. Your ship looks nothing like the Arcade though - It's pretty bad.

 

post-18-0-91173600-1360294916_thumb.png post-18-0-22457300-1360295063_thumb.png

 

Smaller/thinner sprites on a narrower (closer to the vertical mount of the arcade) playfield would be nice.

 

The games difficulty allows too much of an easy challenge though (I know you can change the starting difficulty), but the speed of Stage 1 of the Arcade seems similar to Stage 10 of the 7800. Combining the 7800 verison's 'Normal' difficulty and wider playfield, it makes the game all the more easier.

 

I like how the NES handles displaying this vertical game shifting the score and other status info to the side (It does similar to Dig Dug on the Famicom too), forcing and making the narrower playfield not look awkward on a horizontal display. It allows more vertical space for the action/gameplay area. Although the NES definitely has the case of 'sprites too big'.

 

Regardless, it would be great to see this layout on the 7800 (if possible) as well:

 

post-18-0-33149500-1360295456_thumb.png

Share this post


Link to post
Share on other sites

Or... don't fight the fat pixels and program the game sideways! Sorry, I was going through my Saturn collection and thought of Galactic Attack. The game had a mode that played sideways to allow for a taller playfield. I actually did it once, but decided that turning my tv sideways for one game was for the birds.

 

I know; now I'm just being weird. :)

Share this post


Link to post
Share on other sites

This is a game I was playing as a kid in 1984. It was a great game with always the same result - around level 35 - I LOSE. But late last night, GALAGA gave up to me. It took me longer to play a million points (about 50 minutes) than to find the keys to invincibility. She's now invincible. Ready or not here it is...

 

There are 3 choices: (1) Disable Enemy Ship collision with your Hero Ship, (2) Disable Enemy Missile collision with your Hero Ship, or (3) Both, and therefore complete invincibility. The binary below has both.

 

Detailed code changes (seems simple when you know what it is)…

 

;TO DISABLE ENEMY SHIPS COLLIDING WITH HERO SHIP

D0FE---20-D3-D1---JSR COLLIS2-------REPLACE w/ EA EA EA (no ops)

D11D---20-CD-D1---JSR COLLIS2A-----REPLACE w/ EA EA EA (no ops)

 

;TO DISABLE ENEMY MISSILES FROM COLLIDING WITH HERO SHIP

D154---20-2E-D3---JSR COLLIS3-------REPLACE w/ EA EA EA (no ops)

D170---20-28-D3---JSR COLLIS3A-----REPLACE w/ EA EA EA (no ops)

 

NTSC GALAGA INVINCIBLE, binary

GALAGA_SHIPEDIT_NOCOLL_EA0E.bin

 

NTSC GALAGA INVINCIBLE, emulator

GALAGA_SHIPEDIT_NOCOLL_32K.a78

 

(This incorporates KM3's ship edit and all code from DF6D thru FF7F blanked out for future development consideration).

 

LEVEL 99 photo (rolls over to level 1 after level 99), and she slows down miserably...

post-34769-0-96709500-1372456037_thumb.jpg

 

1,000,000+ points photo (achieved at level 132), I'm sure it will go to 9,999,999 and roll over at <all blanks> 0.

post-34769-0-54352300-1372456018_thumb.jpg

 

ENJOY ALL AND A GOOD WEEKEND 2U.

 

///blueman\\\

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...