Jump to content

Photo

Donkey Kong 2: Lost Levels

donkey kong garry kitchen coleco

44 replies to this topic

#1 CDS Games OFFLINE  

CDS Games

    Moonsweeper

  • 382 posts
  • Location:Pocono Mountains, Pennsylvania

Posted Fri Sep 19, 2014 10:43 AM

Donkey Kong 2: Lost Levels

 
This is a hack of Garry Kitchen's Donkey Kong. The ramp and rivet screens of the original have been converted into the elevator and conveyor screens respectively:

 

Elevator Level.png Conveyor Level.png
 
Attached File  donkeykong2lostlevels.bin   4KB   655 downloads
 
So why even bother with a 4k Donkey Kong hack, now that we have such great looking homebrew versions out there? Because I always liked Garry's port, notwithstanding the missing screens. Garry said in an interview he would have done all four levels if Coleco had given him more time and an 8k cart. In any case, he put out a great version of DK within the framework he was given, and I hope this will be a fitting tribute to his accomplishment. I was also inspired by batari's great work on this thread; without his disassembly and example none of this would have been possible.
 
There are still a few remaining bugs. The elevators have no platforms, the conveyors will take you right off the screen, and the whole game often crashes completely after restart. But it's playable straight through, so this is a good time to open it up for testing and feedback. Just bear in mind that I still have only 4k to work with.

 

_____________________

 

Edit 10/18/2014

 

Nukey combined the above hack and the original game into a playable 4-level Donkey Kong. The sequence goes: ramps, rivets, elevators, and conveyors, and then repeats.

 

The latest version of the 4 level game can be found here:

 

Attached File  donkeykong4levels-2.bin   8KB   859 downloads
 

 


Edited by CDS Games, Sat Oct 18, 2014 8:03 AM.


#2 Tempest OFFLINE  

Tempest

    Fallen Moderator

  • 27,089 posts
  • Location:Dark Places

Posted Fri Sep 19, 2014 1:54 PM

Neat!  I need to give this a try.



#3 save2600 OFFLINE  

save2600

    Quadrunner

  • 15,128 posts
  • Location:Wisconsin

Posted Fri Sep 19, 2014 2:02 PM

Very cool tribute. Even using his original design layout/style as a template (as you did), a four level 2600 DK like this would have kicked ass BITD!

#4 CDS Games OFFLINE  

CDS Games

    Moonsweeper

  • Topic Starter
  • 382 posts
  • Location:Pocono Mountains, Pennsylvania

Posted Fri Sep 19, 2014 3:03 PM

Thanks!

I know, right? I get that Coleco had a bottom line to worry about. But if Garry had been able to convince them, this could have been easily one of the best Atari carts of all time.



#5 TrekMD OFFLINE  

TrekMD

    River Patroller

  • 3,583 posts
  • Location:Coral Gables, FL

Posted Fri Sep 19, 2014 7:30 PM

I just tried it.  Pretty cool and I also agree that even done this way back then it would have rocked. 



#6 Lucky Man OFFLINE  

Lucky Man

    Dragonstomper

  • 815 posts
  • Location:Los Angeles, CA

Posted Fri Sep 19, 2014 11:09 PM

This is really great, CDS! I'm also a fan of the original 2600 version. Any chance you could add these levels to the others to make a "what could have been" Donkey Kong 8k?



#7 CDS Games OFFLINE  

CDS Games

    Moonsweeper

  • Topic Starter
  • 382 posts
  • Location:Pocono Mountains, Pennsylvania

Posted Sat Sep 20, 2014 5:50 AM

Thanks! Learning how to bank switch is on my wish list, but I'm not there yet. Lots of other folks could do it easily I'm sure.

 

Best thing about that is if you mashed the original and this version onto an 8k cart, you could get rid of one of the kernels and have loads of extra room to add a moving elevator like batari's and redo the stationary platforms to look more like the arcade.



#8 Lucky Man OFFLINE  

Lucky Man

    Dragonstomper

  • 815 posts
  • Location:Los Angeles, CA

Posted Sat Sep 20, 2014 5:07 PM

Yes, adding an elevator would make that stage better looking and much more fun.

 

i look forward to any updates you make to this hack.



#9 SalemFrost7800 OFFLINE  

SalemFrost7800

    Dragonstomper

  • 897 posts
  • Location:Ohio

Posted Wed Sep 24, 2014 2:22 PM

Very cool, I have often thought about how cool it would be to make "the lost levels" but my skills are no where near this level. I would love to learn how to program the 2600.

 

EDIT: I just played this and its awesome, I hope you can figure out a way to add the elevators.


Edited by SalemFrost7800, Wed Sep 24, 2014 4:31 PM.


#10 Raktageno OFFLINE  

Raktageno

    Combat Commando

  • 7 posts

Posted Sat Sep 27, 2014 7:45 AM

I love that people are still making these great games better, and with such artistry! Keep up the great work!



#11 Nukey Shay OFFLINE  

Nukey Shay

    Sheik Yerbouti

  • 21,738 posts
  • Location:The land of Gorch

Posted Sat Sep 27, 2014 8:21 AM

This is really great, CDS! I'm also a fan of the original 2600 version. Any chance you could add these levels to the others to make a "what could have been" Donkey Kong 8k?

The simplest way would be to make sure that the rom address where the program switches from the second level back to the first is the same in both 4k roms (the original and this hack)...and hit a bankswitch hotspot right there.  STA $1FF9 for the 4k rom that is going to be the first bank, STA $1FF8 for the 4k rom that is going to be the second bank.  Then paste the two 4k roms together.



#12 CDS Games OFFLINE  

CDS Games

    Moonsweeper

  • Topic Starter
  • 382 posts
  • Location:Pocono Mountains, Pennsylvania

Posted Sat Sep 27, 2014 10:26 AM

Awesome, thanks for chiming in Nukey! I'll look into that.



#13 Nukey Shay OFFLINE  

Nukey Shay

    Sheik Yerbouti

  • 21,738 posts
  • Location:The land of Gorch

Posted Sat Sep 27, 2014 2:17 PM

It doesn't matter where most everything else resides in the 2 banks...so you can move subroutines or certain data tables around a bit to make the address where the bankswitch occurs the same. Note that I put "most everything"...since a data table that references something which will not be used immediately may be affected. Subroutines are almost always movable. Also, the program in either bank cannot use rom hotspot addresses for anything else. Also, it would be better to hit $1FF8 in both banks' startup code...so you always begin with the barrel stage instead of being random.

Edited by Nukey Shay, Sat Sep 27, 2014 2:28 PM.


#14 PFL OFFLINE  

PFL

    Dragonstomper

  • 831 posts
  • Location:Advanced Tech and Research Institute

Posted Sat Sep 27, 2014 3:25 PM

CDS, This looks great!  I wish you all the best in trying to make this into an 8k game.  *crosses fingers* :)



#15 Nukey Shay OFFLINE  

Nukey Shay

    Sheik Yerbouti

  • 21,738 posts
  • Location:The land of Gorch

Posted Sun Sep 28, 2014 12:00 AM

This is what I'm referring to...notice that the added banking instructions are the only additions which differ between the 2 banks.  Everything else (aside from the changes you made) is identical.  The program used a similar ram clear loop in the program to the one at cold start, so I reused it to save the romspace needed for the banking instructions (you'll need to press game reset when you first power up, however).  When ram clear is done, it flips to the first bank to start on barrels.  When passing a level @LF3F1, ram $90 is flipped from 0 to 1 (and visa-versa), so I put the complimentary bankswitches there.  There's a stretch of 5 unused bytes @$FBFB, so I moved data table LFFE4 there to clear the banking hotspots.

 

Keep in mind that this is a quick'n'dirty solution where an entire bank is redundant to the one you are playing.  It would be better to use all of the display code in a separate bank than the offscreen code so that you have much more romspace free.  Fortunately, the level counter $90 is currently only using that single bit (and dedicated minikernels are arrived via indirect jumping ($EE) and ($F0)...so it's possible to do this with a more-complete disassembly.

Attached Files


Edited by Nukey Shay, Sun Sep 28, 2014 12:02 AM.


#16 CDS Games OFFLINE  

CDS Games

    Moonsweeper

  • Topic Starter
  • 382 posts
  • Location:Pocono Mountains, Pennsylvania

Posted Sun Sep 28, 2014 6:35 AM

Whoa. Thanks so much Nukey!

 

Trying to digest this....hopefully I'll have more intelligent questions later. :)



#17 CDS Games OFFLINE  

CDS Games

    Moonsweeper

  • Topic Starter
  • 382 posts
  • Location:Pocono Mountains, Pennsylvania

Posted Wed Oct 1, 2014 2:57 AM

Ok so LDA $1FF9 at line F403...that single instruction is flipping the bank? Is that a dedicated "bankswitching hotspot" that will work everywhere, or did you set that up to be a hotspot with additional banking instructions elsewhere in the code? What is that address?

 

3 bytes to flip a bank....if that's the case, you ain't kidding about quick'n'dirty.



#18 Nukey Shay OFFLINE  

Nukey Shay

    Sheik Yerbouti

  • 21,738 posts
  • Location:The land of Gorch

Posted Wed Oct 1, 2014 5:32 AM

This is using the "standard" F8 banking scheme (it should be default if you load it in an emulator), where the entire 4k ROM area is swapped when banking.

Rom addresses $xFF8 and $xFF9 are the "hotspots" (x=any odd-numbered hex digit).  Use address $xFF8 to call the first 4k bank, and $xFF9 for the second.  *Any* access to those addresses will cause corresponding hotspots to be triggered (even using an undocumented triple-NOP instruction).  You can place bankswitching instructions wherever you need to.  Program flow will continue at the next immediate address in the target bank.

 

If the program executes LDA $1FF9 @$x000, for example, the next instruction is expected to be @$x003 in the second bank.

 

The two other "standard" bankswitch schemes are F6 (16k, 4 hotspots $xFF6-$xFF9) and F4 (32k, 8 hotspots $xFF4-$xFFB).

 

BTW you might want to look at Kevin Horton's cart document for more information about the various known bankswitching schemes.



#19 CDS Games OFFLINE  

CDS Games

    Moonsweeper

  • Topic Starter
  • 382 posts
  • Location:Pocono Mountains, Pennsylvania

Posted Wed Oct 1, 2014 8:12 AM

That is an extremely powerful and useful tool, thanks for explaining it so clearly.

 

  *Any* access to those addresses will cause corresponding hotspots to be triggered (even using an undocumented triple-NOP instruction).

 

 

 

Aha!!! I was wondering why you said STA above and then coded LDA!

 

Will definitely check out Kevin's doc.


Edited by CDS Games, Wed Oct 1, 2014 8:12 AM.


#20 Crimefighter OFFLINE  

Crimefighter

    Dragonstomper

  • 938 posts
  • Location:Springfield, IL

Posted Fri Oct 3, 2014 10:52 PM

Crashed on the elevators level.



#21 CDS Games OFFLINE  

CDS Games

    Moonsweeper

  • Topic Starter
  • 382 posts
  • Location:Pocono Mountains, Pennsylvania

Posted Thu Oct 9, 2014 11:25 AM

Yeah, I'm going to look into that. The sprites get all messed up and after a while the whole thing crashes.



#22 CDS Games OFFLINE  

CDS Games

    Moonsweeper

  • Topic Starter
  • 382 posts
  • Location:Pocono Mountains, Pennsylvania

Posted Thu Oct 16, 2014 3:45 AM

Using the hammer seems to have been the problem. This should fix the bug, although no more racking up points with it on the conveyor level.

 

 

Attached Files



#23 benbrad OFFLINE  

benbrad

    Space Invader

  • 22 posts

Posted Fri Oct 17, 2014 1:54 PM

I don't program. Can anybody make the Donkey Kong 4 levels binary with unlimited men so that I can learn to beat it?



#24 PFL OFFLINE  

PFL

    Dragonstomper

  • 831 posts
  • Location:Advanced Tech and Research Institute

Posted Fri Oct 17, 2014 2:37 PM

^

You could at least say please.



#25 CDS Games OFFLINE  

CDS Games

    Moonsweeper

  • Topic Starter
  • 382 posts
  • Location:Pocono Mountains, Pennsylvania

Posted Fri Oct 17, 2014 7:25 PM

If you're playing in Stella you can top up your lives as needed...just go into the debugger and A3 stores the number of lives--you can change it to whatever.

 

Otherwise, I just got better at it by playing the 4k version. That just flips back and forth between the elevators and conveyors.







Also tagged with one or more of these keywords: donkey kong, garry kitchen, coleco

0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users