Blue Azure Posted March 18, 2013 Share Posted March 18, 2013 BAM!BAM!BAM! BAM! BAM! BLUE AZURE MONDAY BAM! BAM! BAM!BAM!BAM!BAM! The FOOD FIGHT arcade game, available in cocktail and upright cabinets, was designed GCC in 1983 and followed quickly by the 7800 version. In the same era, GCC had designed a speed-up kit for Atari's arcade game MISSILE COMMAND and tried to copyright their version. Atari sued, and the case was settled out of court with GCC agreeing to port FOOD FIGHT to Atari platforms. World records (compliments of wiki): The world record high score for [the arcade] Food Fight using the game's default settings is 103,103,100 points, set by Ken Okumura in January 1984. Under tournament settings, the world record is 1,234,100 points, set by Jon Dworkin in June 2001. ARCADE GAME DEMO http://vvv.youtube.c...h?v=3cF4LFVL7YQ http://www.youtube.com/watch?v=3cF4LFVL7YQ Now here's the long-awaited 7800 FOOD FIGHT disassembly. Although challenging to create, this one wasn't nearly as difficult as the ROBOTRON disassembly re-creation. It helped in FOOD FIGHT, of course, that $C000 is a direct mirror of $E000, and $D000 is a direct mirror of $F000. For those looking to enhance FOOD FIGHT gameplay with more ROM space available, you can completely zero-out $C000 and $D000 and the game will still operate 100%. This explains how the original game was 24K and the released game is 32K. Technically, it's still 24K. "Code BLUE" occurs at $837E-$850F, $8AC0-$8B5E, $95B1-$95DF, $9634-$964E, $9634-$964D. These are the blocks of code not found in the original source list. There are other lines of instructions that were not in the source list either, but we have everything $0000-$FFFF in this disassembly. So we did pretty well on this one, with most of the code fully-commented. FOODFIGHT Disassembly4.rtf In this game you are Charlie Chuck (CC), and Charlie chucks food at mean chefs chasing after you. It's hilarious! This game also sports a cool replay feature. It's called Instant Replay (IR) and occurs at level 5+. If you're looking to program a new 7800 game with Replay, check out this code. The replay call-up logic is routine RICONT00 at $8FD0, and the first instant replay is set up to occur at level 5 - this could be easily changed to level 0 by changing $8FF0 from $C9$04 to $C9$00. And it looks like the Replay is created in the SAVEAIR routine at $9084, although quite frankly I haven't spent adequate time to verify this is completely true. The code is all there, almost fully-commented so you can see for yourself. DYING Player death processing happens around $B965, routine HEROKILL. There's more to it than shown here, but this is the beginning… HEROKILL: B965--A9-06-----LDA #STATDIE B967--85-7D-----STA STATUS B969--20-1C-B7--JSR SCRAPALL B96C--A5-BF-----LDA CXPOS ;USED BY "FOODMOVE" TO GO FOR CHUCK B96E--85-F3-----STA GOALX B970--A5-9F-----LDA CYPOS B972--85-F4-----STA GOALY B974--A5-78-----LDA CYCLECNT B976--18--------CLC B977--69-02-----ADC #02 B979--8D-43-23--STA CINFO ;ANIMATE TIMER B97C--A9-46-----LDA #70 B97E--85-7B-----STA SYSCOUNT B980--20-A0-B9--JSR MKDIE ;HANDLE DEATH STUFF B983--A6-E0-----LDX CURRENT B985--BD-78-26--LDA PL0LIVES,X B988--C9-01-----CMP #01 B98A--F0-0A-----BEQ ZHKLASTS ;LAST DEATH THIS GAME B98C--A9-01-----LDA #01 B98E--20-33-B7--JSR TUNIN B991--A9-02-----LDA #02 B993--4C-33-B7--JMP TUNIN ;JSR followed by RTS The quickest way to disable "death" in this game is to change $B965 from $A9$06$85 to $4C$BB$B9 to jump across the KILL procedure. Now, when you accidentally (or on purpose) touch a chef, it freezes all of the current chefs on the screen so you have time to go get food to kill them off. New chefs will continue to be hatched as you kill off the "frozen" chefs and come after you until you touch a chef again. RACK TIMER (this determines how long a level lasts) L8015: B122--4A--------LSR A B123--90-06-----BCC NOFINFO B125--CE-1E-26--DEC FINFO ;Cone timer (32 seconds) Change $B125 from $CE$1E$26 to $EA$EA$EA to disable the Cone Timer. This allows you to stay at the current level as long as you want. The cone drips and drips and drips and always remains a full cone. This is the kind of ice cream cone I really like. Kids will really love this game now. NUMBER OF LIVES The maximum number of spare lives displayed is 5, and the ORIGINAL game starts with 3 total lives. B2CE--E8--------INX ;Player Start with Three lives B2CF--8E-78-26--STX PL0LIVES ;Store Player 1 lives B2D2--8E-79-26--STX PL1LIVES ;Store Player 2 lives The NEW game starts with 6 total lives, with 5 spare lives displayed. The game looks better this way. B2CE--A2-06-----LDX #$06 ;Player Start with Six lives B2D0--8E-78-26--STX PL0LIVES ;Store Player 1 lives B2D2--EA-EA-----NOP,NOP ;No op (there is no Player 2) The modifications shown here are Kwik Hax, just to have something to play. This game is now invincible so you can play it forever. Now that we have a complete disassembly, there's so much more that can be done at a later date. NEWSFLASH: However, through extended gameplay last night I see there's a glitch that randomly resets the game to level 1. Not sure what's happening, so obviously there's more to this game than I had realized. This condition is repeatable both on the emulator and the 7800 machine. When the game has more than 6 lives it appears to be glitching. TO FIX THE GLITCH… 8EF6--FE-78-26--INC PL0LIVES,X 8EF9--E6-EC-----INC PLLIVES B078--FE-78-26--INC PL0LIVES,X B07B--E6-EC-----INC PLLIVES Change all bytes above to $EA (no ops) to disable incrementing lives. HERE'S WHAT LEVEL 101 LOOKS LIKE… HERE'S WHAT 11 MILLION POINTS LOOKS LIKE… (MAX ACHIEVABLE LEVEL = 125) To achieve 10 million points it takes about an hour. I MADE IT. To achieve 12 million points takes about 400 levels of play. I DIDN'T MAKE IT. WHAT HAPPENS AT 100 MILLION POINTS? (HINT: It takes about 10 hours to find out, or hack the game to start with 99,000,000 points and it takes about 6 minutes). NOTE: THESE FILES HAVE $C000 AND $D000 ZEROED-OUT TO ALLOW FOR FUTURE GAME EXPANSION. Now you can enjoy the watermelon food fest (for as long as you want) at levels 5,15,25,..., and watch the action go crazy at level 17+. Other than the mods to make this game invincible, the game is the original stock code... AVAILABLE ONLY HERE AT ATARIAGE.COM. NTSC FOOD FIGHT X binary FOODFIGHT_X_6F28.bin NTSC FOOD FIGHT X emulator FoodFight_X_32K.a78 THE CHANGES ABOVE ARE AT THE SAME ADDRESSES ON PAL, MAKING LIFE SIMPLE. PAL FOOD FIGHT X binary FOODFIGHT_X_PAL_8736.bin PAL FOOD FIGHT X emulator FOODFIGHT_X_PAL_48K.a78 NEXT UP> ASTEROIDS 3D disassembly is complete. Not released, sample game not ready. Invincibility algorithm is complicated. DIG DUG disassembly is complete. Not released, sample game not ready. Rock-dropping invincibility algorithm is not quite working right. But the rest does and this will be a blast of a game once completed. Every kid will want to play this one. JOUST disassembly is complete, albeit fully-uncommented due to the lack of possession of the original source list. Not released, sample game not ready. Looking to find the collision detection. The NUMLIVES decrement has been found, so it can be disabled and you can play a single game forever. This rounds-up the original ten ATARI 7800 games I was looking to disassemble. Quote Link to comment Share on other sites More sharing options...
Trebor Posted July 24, 2016 Share Posted July 24, 2016 It appears the "NTSC FOOD FIGHTER X emulator" file posted is incorrect. Note the file size difference between the header and header-less NTSC files. Additionally, the aforementioned *.a78 file does not run under MAME at all. The attached is the corrected "NTSC FOOD FIGHT X emulator" file. It works perfectly under MAME. FOODFIGHT_X_6F28_(fixed).a78 Quote Link to comment Share on other sites More sharing options...
rayik Posted July 25, 2016 Share Posted July 25, 2016 Thank you for figuring this out and sharing. Looking forward to seeing how hard the game gets Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.