Jump to content
Blue Azure

DESERT FALCON - new game & disassy

Recommended Posts

BAM!BAM!BAM!

BAM!

BAM! BLUE AZURE MONDAY BAM!

BAM!

BAM!BAM!BAM!BAM!

 

 

HELLO FANS! Off to Deutschland and back again and now we have another disassembly. This time it's DESERT FALCON, one of my later 7800 favorites in the 1980s. The "new game" is a simple conversion to invincibility, so it's mostly hype that it's a "new game." You clicked it and here we are...

 

History of Desert Falcon

Actually, I briefly researched this title and it appears there were only versions made for the 7800, 2600, and A800 computer which must have been a pokey version (?). No arcade history was found. Anyone have any further definitive info? Was the 7800 version the original? If there is no further history, this should make this game a highly sought-after title.

 

Disassembly of the 7800 version

As we know it, the original & released assembly files are labeled Sphinx™, Nile Flyer™, Desert Falcon™ representing the progressive naming history of this 7800 game title. I was unable to decipher if the title screen code (at address $8000) for Sphinx™ or Nile Flyer™ was included. Anyone know where this is? (the filename Sgraph8.s included precisely matches Desert Falcon™).

 

The disassembly of NTSC Desert Falcon™ was really a quite amusing task. There's programming tricks and a trick or two nobody knows why they work. Had to clean up the language a bit as it's no longer PC to use certain words. And the humor… "crest, not the toothpaste" at address $9320. Not sure if someone was having too much fun, or just plain bored. Whatever, there were tons of hours spent on the creation of this wonderful game. This disassembly includes the High Score Card (HSC) code subsequently added 10-29-2004 at addresses $5000-$519F. Read the disassembly and enjoy!

 

DesertFalconHSC_9A40_Disassy4.rtf

 

*WARNING* This 48K game disassembly is 307 pages (depending on your printer settings).

Don't print - save a tree!

 

 

Orthogonal scrolling shooter: Could this be a seed to the long-awaited 7800 ZAXXON? It could be!!!

 

 

Changes to the Desert Falcon™ (HSC modified) binary (checksum = 9A40) from 10-29-2004:

 

; INITIATE DEATH

STOP1:

;--------------------JMP SURVIVE---------------;!!!!!!!!!Never Die!!!!!DEBUG

E311---2C-F0-24--BIT INVINCBL--------------;Is the Player invincible?

E314---30-DC------BMI SURVIVE

 

Change $E311 from $2C$F0$24 to $4C$F2$E2 for invincibility.

 

There has been recent discussion about Desert Falcon failing in attract mode or even during gameplay, but attract mode it fails after 7 hours (?). Never had a problem with this version, but perhaps I didn't leave it in attract mode long enough… It's a great game and now it's even better!

 

 

The X-treme "X" invincible game, locked in debug mode:

 

DESERT FALCON X, NTSC, binary

DESERTFALCON_HSC_INV_9B20.bin

DESERT FALCON X, NTSC, emulator

DesertFalcon_HSC_INV_48K.a78

DESERT FALCON X, PAL, binary (does not include HSC upgrade)

DESERTFALCON_INV_PAL_5018.bin

DESERT FALCON X, PAL, emulator (does not include HSC upgrade)

DesertFalcon_INV_PAL_48K.a78

  • Like 1

Share this post


Link to post
Share on other sites

So is there way to fix that weird level bug that effects the two player game?

 

It goes like this, player one plays until he gets to, say, the fifth level and dies. Then it's player two's turn. This is where is gets pretty odd. Player two plays level one but it feels playing level 5 despite it being level one. I know there was a user here that wants a fixed version and I myself have seen it because I played it back in the 80's.

Share this post


Link to post
Share on other sites

@bakasama, got it. I never played the 2-player version so I didn't know about this problem. I believe the ca.1984 version was 32K and this one is obviously 48K so it would be interesting to see what changed to make this defective. Meanwhile, the present-day disassy is here so we can look at it and try to decipher what's going on when switching to Player 2. Apparently the difficulty settings aren't refreshed when switching players and this should be an easy fix for someone who has time to do it.

 

@save2600, I could hack the title screen to say ZAXXON - that's my quick fix proposal.

Share this post


Link to post
Share on other sites

The only clue on where you might find that bug is the difficulty ramps up based on how long the game you're playing is running except for when the game is paused and difficulty level selected. It doesn't seem be based on what level the player is on like level one or ten.

Share this post


Link to post
Share on other sites

I'm sorry for my stupid questions but I would like to understand the very basics of your work. :dunce:

About the results.

Did you get the assembly code from the binary?

Is it the same code that was compiled into the program or is it an equivalent one?

 

How you get there... :?: :?: :?:

I can't figure out even the basic steps needed. :dunce:

Well, the binary... a way to run it (emulator?)... a debugger... and then :?: :?: :?: :dunce:

I believe the debugger let you run the program step by step, showing variables(addresses in the computer memory) and their values.

But then, how to make a code from these values? :o

Share this post


Link to post
Share on other sites

@liduario - My 7800 disassemblies are generated from the released source lists. All it does is shows all the data in sequence by the address numbers. You cannot run these disassemblies on any machine (except mine). I said "debug" cuz you can run the game (binary) on the emulator without dying so you can try different scenarios to see what works and what doesn't. But this invincible game will never let you play player 2, as player 1 never dies. Hopefully this helps you a little. The disassemblies act as a training tool for people who want to program the 7800 or reprogram each respective game, which is what I eventually plan to do.

 

///blueman///

Share this post


Link to post
Share on other sites

Do you plan on posting the source files at some point? All I've seen is assembly listings, which don't allow us to do our own mods and assemble them.

 

 

edit: just to be clear. I'm talking about the reconstructed source files that you are using to create these assembly listings.

 

Thank you.

Share this post


Link to post
Share on other sites

Yep, tep, I've known from the beginning this would become an issue. The difference between Code Blue and TEPperware is widespread and I don't know what to do about it. At the moment, I'm hacking and you're programming and that's a world of difference. If/when I cross-over to the other side, then I'll probably be doing something different. What I had been trying to do was to bring the 7800 code to the masses so *anyone* could read the code and/or start learning how to read the code. Obviously, the prosystem program is growing into something bigger now. IMHO, things will eventually dry up on the 52 and 26 but not on the 78 as we have so much info on so many games. With the advent of the XM probably within a month or so and other hardware and software developments, deciphering the original 7800 games will become more critical. Right now I'm manually converting to my world and others are converting to their world. Unfortunately for me, time is limited and I'm pressing to kick out my projects so I can get back to other of my life's priorities. Thanks for your question, Perry, but for now I can't do much more than I'm already doing. ///blueman///

  • Like 1

Share this post


Link to post
Share on other sites

TEP was right, I stand corrected. Although the disassembly stands correct the listed checksum isn't. Rummaging through my desktop last night I see I have 3 modern-era versions of Desert Falcon, all 48K. The original was 32K +/-. Dates are listed in MMDDYYYY. These are NTSC only.

 

DESERT_FALCON_01152000 checksum = 4990

 

DESERT_FALCON_06162004 checksum = DA40

 

DESERT_FALCON_10292004 checksum = E2DD

 

I wish I had known this before I had done the 06162004 disassembly as I would have saved myself some time. So now I will update to the 10292004 version. I ran a diffs compare and there's 23 pages of listed changes but it's mostly graphics data that moved $80. It's probably a couple of hours of work, but the job will be done. The gameplay diffs between these two 2004 games is unknown to me. Anyone know the difference?

Share this post


Link to post
Share on other sites

Speaking of Desert Falcon, I did some color changes about a year ago but never bothered to upload it anywhere because I didn't think it was worth mentioning. Anyway, if you're going to do some work on this game and you'd like to change some of the colors, let me know and I can post what I changed.

 

Here's a gameplay video I made the other day which includes those color changes. My capture card doesn't display color quite like a CRT will, so they will look a bit off compared to one of those. My capture card seems to display color more like an LCD.

 

http://youtu.be/UYEcJt9Auc8

Edited by KevinMos3

Share this post


Link to post
Share on other sites

Yo KM3, great to hear from you. Well here we go posting homebrew references on the mainline forum. But does it really matter? I LOVE THIS GAME. Sure you could PM me if you want to keep your color version private or post probably over at the 78 hacks section. I haven't really reviewed the DF code in that much depth to know if I'd be doing any mod anytime soon on DF. I'm booked at the moment so it would probably be a couple of months before I get to any mods. Maybe I should hack it to look like ZAXXON. But the fact remains, DF is a huge game for the 7800 and its existence should be hugely advertised. I had no idea how rare this game was, and until invincible, how much fun it really is.

 

As for the differences between these two DF files from 2004, I had a technical problem and now it turns out there's virtually no difference between these two, in fact it's only the encryption signing. There must have been an unsigned version running around in 2004 and people were signing them themselves. I didn't check the other one from 01152000 as it's older. In case someone must have the complete signing of the E2DD version, its disassembly is included below.

 

DESERT_FALCON_06162004 checksum = DA40

 

DESERT_FALCON_10292004 checksum = E2DD

DesertFalconHSC_E2DD_Disassy.rtf

 

Enjoy, as I do... ///Blueman///

Share this post


Link to post
Share on other sites

What are you using to compile from your disassembly? DASM? Something else?.. and what settings?

Share this post


Link to post
Share on other sites

Yep, tep, I've known from the beginning this would become an issue. The difference between Code Blue and TEPperware is widespread and I don't know what to do about it. At the moment, I'm hacking and you're programming and that's a world of difference. If/when I cross-over to the other side, then I'll probably be doing something different. What I had been trying to do was to bring the 7800 code to the masses so *anyone* could read the code and/or start learning how to read the code. Obviously, the prosystem program is growing into something bigger now. IMHO, things will eventually dry up on the 52 and 26 but not on the 78 as we have so much info on so many games. With the advent of the XM probably within a month or so and other hardware and software developments, deciphering the original 7800 games will become more critical. Right now I'm manually converting to my world and others are converting to their world. Unfortunately for me, time is limited and I'm pressing to kick out my projects so I can get back to other of my life's priorities. Thanks for your question, Perry, but for now I can't do much more than I'm already doing. ///blueman///

 

 

I don't think the 5200 will dry up; there's all of the A8 games to convert/transport over to it... 4 Player MULE?

 

And the problem with wishing for things to dry up with the 2600 - for the betterment of the scene with the other Atari consoles - is there's so many more of them out there than the 5200 or 7800. Theres also the fondness and familiarity of the general public with it versus the other less popular Atari consoles...

Share this post


Link to post
Share on other sites

History of Desert Falcon

Actually, I briefly researched this title and it appears there were only versions made for the 7800, 2600, and A800 computer which must have been a pokey version (?). No arcade history was found. Anyone have any further definitive info? Was the 7800 version the original? If there is no further history, this should make this game a highly sought-after title.

 

 

The A8 Pokey audio version is nothing to brag about. I believe the general consensus is it was a lazy port from the 7800 to A8 and the music doesn't at all sound better via the Pokey. It's arguable whether any of the audio SFX sound better in the Pokey version. One of the Pokey musical whizzes out there could probably make a truly kick ass soundtrack update for it though if they were interested.

Share this post


Link to post
Share on other sites

Page 368- TWO PLAYER SWITCH CODE

not seeing if there's a zero out to 'current' player 2 level- actually looking at the comments they ran out of room

 

By the way the bug works BOTH ways it's whichever player is further ahead, say player one is on level 2 and player 2 is on level 7- player one gets the correct color and sound and type but the speed of enemy is level 7. player one is still level 2 speed bird.

 

Ohhh- pg 406 ENEMY INITIALIZER ...

Edited by FireTiger

Share this post


Link to post
Share on other sites

... it should be... maybe-

I can't tell if one of the hacks 'fouled' it up or it's not coded due to lack of space or it was miscoded (calling the wrong info).

The two places I was looking at well, I never programmed in this 'language' so I'm not sure were to begin- but it looks like I can use this to reverse engineer the HEIRO codes for the goodies, levels 1&2 have different codes then the levels 3+ not sure if it changes again after level 6 never got past that.

--------------------topic shift for a few minutes----------

When I was like 8 I tried to make a huge chart but not sure where it is now... I bet I could do a better job-

I see 60 calls with duplicate powers (like points)...Pg 41-43ish but only 24 'powers'

The tables are on page 109 for 'each level'
Why are there four? should there not be three? OH my... now what I was hoping to deduce the code... *sigh*

; Mask powers for round one:
;
;	Form of table:
;		novice,standard,advanced,expert
Table1:
6803		.BYTE $00,$00,$00,$00	;Never happens.
6807		.BYTE $21,$21,$21,$21	;Extra life.
680B		.BYTE $02,$02,$02,$02	;Points.
680F		.BYTE $08,$08,$03,$03	;Air bombs.
6813		.BYTE $15,$15,$15,$15	;Kill Minis.
6817		.BYTE $22,$22,$22,$22	;Kill pots.
681B		.BYTE $06,$06,$06,$06	;Kill sphinx.
681F		.BYTE $07,$07,$07,$07	;Extra bonus time.
6823		.BYTE $08,$08,$08,$08	;Kill uwes.
6827		.BYTE $20,$20,$09,$09	;Warp.
682B		.BYTE $22,$22,$22,$10	;Air freeze.
682F		.BYTE $11,$11,$11,$11	;Decoy.
6833		.BYTE $02,$02,$12,$12	;Can't hop.
6837		.BYTE $02,$02,$13,$13	;Can't swim.
683B		.BYTE $02,$02,$14,$14	;Can't fly.
683F		.BYTE $15,$15,$15,$15	;Paralyze sphinx.
6843		.BYTE $21,$21,$21,$16	;Hover.
6847		.BYTE $08,$08,$17,$17	;Afterburner.
684B		.BYTE $18,$18,$18,$18	;Slowdown.
684F		.BYTE $19,$19,$19,$19	;Random hieros.
6853		.BYTE $20,$20,$20,$20	;Kill everything.
6857		.BYTE $21,$21,$21,$21	;Supersonic shots.
685B		.BYTE $22,$22,$22,$22	;Invincibility.

; Mask powers for round two:
;
;	Form of table:
;		novice,standard,advanced,expert
Table2:
685F		.BYTE $00,$00,$00,$00	;Never happens.
6863		.BYTE $21,$21,$21,$21	;Extra life.
6867		.BYTE $02,$02,$02,$02	;Points.
686B		.BYTE $03,$03,$03,$03	;Air bombs.
686F		.BYTE $15,$15,$15,$15	;Kill Minis.
6873		.BYTE $05,$05,$05,$05	;Kill pots.
6877		.BYTE $06,$06,$06,$06	;Kill sphinx.
687B		.BYTE $07,$07,$07,$07	;Extra bonus time.
687F		.BYTE $08,$08,$08,$08	;Kill uwes.
6883		.BYTE $09,$09,$09,$09	;Warp.
6887		.BYTE $22,$22,$10,$10	;Air freeze.
688B		.BYTE $11,$11,$11,$11	;Decoy.
688F		.BYTE $02,$02,$12,$12	;Can't hop.
6893		.BYTE $02,$02,$13,$13	;Can't swim.
6897		.BYTE $02,$02,$14,$14	;Can't fly.
689B		.BYTE $15,$15,$15,$15	;Paralyze sphinx.
689F		.BYTE $21,$21,$16,$16	;Hover.
68A3		.BYTE $17,$17,$17,$17	;Afterburner.
68A7		.BYTE $18,$18,$18,$18	;Slowdown.
68AB		.BYTE $19,$19,$19,$19	;Random hieros.
68AF		.BYTE $20,$20,$20,$20	;Kill everything.
68B3		.BYTE $21,$21,$21,$21	;Supersonic shots.
68B7		.BYTE $22,$22,$22,$22	;Invincibility.

; Mask powers for round three:
;
;	Form of table:
;		novice,standard,advanced,expert
Table3:
68BB		.BYTE $00,$00,$00,$00	;Never happens.
68BF		.BYTE $01,$01,$01,$01	;Extra life.
68C3		.BYTE $02,$02,$02,$02	;Points.
68C7		.BYTE $03,$03,$03,$03	;Air bombs.
68CB		.BYTE $04,$04,$04,$04	;Kill Minis.
68CF		.BYTE $05,$05,$05,$05	;Kill pots.
68D3		.BYTE $06,$06,$06,$06	;Kill sphinx.
68D7		.BYTE $07,$07,$07,$07	;Extra bonus time.
68DB		.BYTE $08,$08,$08,$08	;Kill uwes.
68DF		.BYTE $09,$09,$09,$09	;Warp.
68E3		.BYTE $21,$10,$10,$10	;Air freeze.
68E7		.BYTE $11,$11,$11,$11	;Decoy.
68EB		.BYTE $02,$12,$12,$12	;Can't hop.
68EF		.BYTE $02,$13,$13,$13	;Can't swim.
68F3		.BYTE $02,$14,$14,$14	;Can't fly.
68F7		.BYTE $15,$15,$15,$15	;Paralyze sphinx.
68FB		.BYTE $21,$16,$16,$16	;Hover.

		;.BYTE #17,#17,#17,#17	;Afterburner.
68FF		.BYTE $11,$11,$11,$11
		;.BYTE #18,#18,#18,#18	;Slowdown.
6903		.BYTE $12,$12,$12,$12
		;.BYTE #19,#19,#19,#19	;Random hieros.
6907		.BYTE $13,$13,$13,$13
		;.BYTE #20,#20,#20,#20	;Kill everything.
690B		.BYTE $14,$14,$14,$14
		;.BYTE #21,#21,#21,#21	;Supersonic shots.
690F		.BYTE $15,$15,$15,$15
		;.BYTE #22,#22,#22,#22	;Invincibility.
6913		.BYTE $16,$16,$16,$16
;

Share this post


Link to post
Share on other sites

pg 192-198... interesting:

CODE TO SET UP FOR LOADER-

... blah blah...

967D	8D 53 23	STA DLY+3	;PLAYER ONE IS UP: TURN ON HIS SCORE
9680	8D 67 23	STA DLZ+3	;  AND LIVES
9683	8C 5D 23	STY DLY+13	;TURN OFF PLAYER TWO'S LIVES AND SCORE
9686	8C 71 23	STY DLZ+13
9689	60	RTS

TWOISUP:
968A	8D 5D 23	STA DLY+13	;PLAYER TWO IS UP: TURN ON HIS SCORE
968D	8D 71 23	STA DLZ+13	;  AND LIVES
9690	8C 53 23	STY DLY+3	;TURN OFF PLAYER ONE'S LIVES AND SCORE
9693	8C 67 23	STY DLZ+3
9696	60	RTS

Edited by FireTiger

Share this post


Link to post
Share on other sites

From what I understand that part just turns off and on the players' scores and lives but not the level difficulty for each player. I guess we're a few steps closer to fixing that bug.

Share this post


Link to post
Share on other sites

Ah well, display only there? Makes sense all the rest there is display- it can't be too obvious I've already asked people to look before as I want a repaired cart

Edited by FireTiger

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.
Note: Your post will require moderator approval before it will be visible.

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...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...