Author Topic: "Fixing" DKjr  (Read 38476 times)

0 Members and 1 Guest are viewing this topic.

Offline Sock Master

  • Elite Member
  • *
  • Posts: 383
    • Awards
Re: "Fixing" DKjr
« Reply #15 on: October 02, 2016, 05:06:40 pm »
Here's a first pass at DKjr fixes.

I won't provide the full ROMs, just the revised files.   In order to avoid changing existing DKjr MAME files, this version of DKjr will actually run under MAME's "dkongjre" emulation.   This way the normal "dkongjr" ROMs remain intact and you can easily switch back and forth between both this and normal DKjr.

What you need to do:
-find the dkongjre romset somewhere else.
-create a folder called "dkongjre" in your MAME roms directory.
-unzip the dkongjre files and copy them into the "dkongjre" folder.
-unzip 'dkongjr fix 1' and copy those files over the files in your "dkongjre" folder.
-play dkongjre in MAME.

What's changed?
-No more lag when changing directions on vines.
-The springboard super jump is now reliable.
-The direction you bounce off the springboard is now based on jump direction, not the direction you were facing!
-When blue sparks split into two in Mario's Hideout, it takes 100 off the timer (to dissuade leeching)
-Blue snapjaws can now go down vines when you are on the top platform (to dissuade leeching)
-The level indicator is now 2 digits instead of 1.

I'm not super happy with the anti-leeching modifications, so opinions and ideas are welcome.

Note:
-The game is considerably easier with the control lag and springboard fixes.
-Scores will be considerably lower because of the anti-leeching modification.
"Badges? We ain't got no badges. We don't need no badges. I don't have to show you any stinkin' badges!"
Member for 9 Years snek IGBY 2016 DKF Team Member Twitch Streamer

Offline serphintizer

  • Senior Member
  • *
  • Posts: 187
    • Awards
Re: "Fixing" DKjr
« Reply #16 on: October 02, 2016, 05:29:16 pm »
"Kill screen? Ha! It's for tourists."  - Mr. X
Member for 9 Years CK Killscreener CK World Record Holder - MAME DK World Record Holder - Arcade DK 1.2M Point Scorer DK Killscreener Individual Board Record Holder IGBY 2016 DKF Team Member Former D2K World Record Holder DK 1.1M Point Scorer Winner of a community event DK 1M Point Scorer Twitch Streamer

WCopeland

  • Guest
Re: "Fixing" DKjr
« Reply #17 on: October 02, 2016, 05:58:42 pm »
Let's try to keep this thread constructive out of respect for the service John is providing. This is not a thread about DKJr, it's about a revision of DKJr. As a community we should work to see that the vision of making the game as fun as it can be is executed.

I'll try to find some free time either tonight or tomorrow to test the ROM. I haven't seen the changes, but through reading the text it sounds like they could remove player choice? Leeching isn't necessarily a bad thing (think barrel grouping in DK), it's boring leeching that's a problem.
« Last Edit: October 02, 2016, 06:01:20 pm by WCopeland »

Offline Sock Master

  • Elite Member
  • *
  • Posts: 383
    • Awards
Re: "Fixing" DKjr
« Reply #18 on: October 02, 2016, 09:33:33 pm »
The current modifications make leeching more unlikely or more expensive to do, so it doesn't do anything to make the game more fun or more rewarding to play skillfully yet.

I still have a long way to go before I can understand the code inside and out.  It's all pretty much still uncommented disassembly so every change or modification means poring through code to even find where it'd be applied.   I'll slowly learn it like I did DK, but for now it means I can't magically add sweeping changes at the drop of a hat.

That said, DKjr is also very different in it's play mechanics and it seems difficult to come up ideas to make skillful play more rewarding and entertaining.  On vines you can only drop fruit for points.  On platforms you can sit around to jump some baddies over and over.   Many of the released baddies go by without scoring potential, except in Mario's Hideout where the blue sparks could multiply into 4 and skew the timer/reward ratio.

So I'm still not sure how it might go, but it'd be nice to find some subtle changes to balance scoring, make the game more fun to play skillfully and more entertaining to watch being played
"Badges? We ain't got no badges. We don't need no badges. I don't have to show you any stinkin' badges!"
Member for 9 Years snek IGBY 2016 DKF Team Member Twitch Streamer

DonkeyKongGenius

  • Guest
Re: "Fixing" DKjr
« Reply #19 on: October 02, 2016, 11:49:00 pm »
I am glad this discussion is taking place. I will say that while I understand Dean's frustration over the springboard, I find is frustrating as well since I can't get it as consistent as MarkyD, I find that it required more skill to do more consistently. I can't press a button as fast as others and that is a limitation that I would be forced to overcome if I wanted to increase the chances of a faster springboard. It also requires you to memorize more patterns of birds because now you have to keep track of how many jumps you fail and what patterns are possible on each approach. In my opinion, while I hate failing the springboard, is that it is one of those elements that incorporates the skill for greater memorization and rapid button pushing. Removing that dynamic will make the board much easier. One of the reasons that I stopped grinding on Junior is that MarkyD had a greater success rate on the springboard and therefore was able to complete the board more quickly. It had to do with his skill of timing inputs and rapidly pressing a button that helped to push the skill ceiling a little higher.

And if you were to fix the springboard as it seems you already had then maybe throw in more variations on the birds to force players to have to react quickly instead of finishing the board in the exact same way every single time. That is to have random birds that respond to inputs so that they are not the same every time. You are familiar with the fact that some birds are fixed and others can come out at a different height depending on right and left inputs? At least a failed super jump or two on a single board provided this variety and was one of the reasons that I had to spend hours grinding out practice so that I was ready for every contingency. IF you "fix" the springboard it will lower the skill ceiling since it will no longer require well timed inputs and rapid button pushing. Therefore you will want to throw in that randomness on the birds to incorporate a more reactionary situation that requires more skill than just doing the exact same pattern every single time, which is what you get if you can get the first jump on every springboard.

While I am not arguing whether the springboard is broken or not, but taking it as it is, has it forced players to improve a gaming skill in order to increase the chances of faster game play.

As for control lag... DK Jr is DK Jr, I always assumed that the monkey was a little heavy and needed a little extra time and momentum to move. LOL :P I got so used to how the game played that I never perceived "control lag". I mean, he is a monkey on vines, he doesn't have super strength to pivot on a dime and cut corners. He is a slow monkey. So it always seemed normal to me. And I always thought that was one of his particularities that made him special and perhaps more realistic?

DonkeyKongGenius

  • Guest
Re: "Fixing" DKjr
« Reply #20 on: October 03, 2016, 12:03:32 am »
Here was my analysis of the springboard bird patterns and which ones can be influenced: https://donkeykongforum.net/index.php?topic=968.0

Offline xelnia

  • Administrator
  • Spring Jumper
  • *
  • Posts: 2869
  • Stop using 0.106
    • Twitch
    • Awards
Re: "Fixing" DKjr
« Reply #21 on: October 03, 2016, 03:12:33 am »
Here's a first pass at DKjr fixes.

I'm not that good at DKJR, so I'll let the better players judge the fixes, but I think I encountered a bug. I wasn't recording but I think I was able to reproduce it once.

Anyway, I was on the very first chain stage and I somehow got stuck between chains. I was pushing a key up (the first one on the left), I had to move over a chain so JR was only on one chain (as opposed to being spread apart). I tried to switch chains, and JR got sort of stuck between the chains. I couldn't move and just sat there until I got hit by a bird. It wasn't a controller issue because I had enough time to check before I died. It was like JR froze during an animation where he spreads his arms out. It basically looked like this:



I tried to do it again and I was able to reproduce it, and get out of it by tapping the directional instead of just holding.

"Do not criticize, question, suggest or opine anything about an upcoming CAG event, no matter how constructive or positive your intent may be. You will find nothing but pain and frustration, trust me. Just go, or don't go, and :-X either way!" -ChrisP, 3/29/15
Member for 11 Years snek CK Killscreener IGBY 2016 DKF Team Member IGBY 2015 DKF Team Member IGBY 2014 DKF Team Member DK Killscreener Blogger Twitch Streamer

Offline Jonesy

  • Elite Member
  • *
  • Posts: 354
    • Awards
Re: "Fixing" DKjr
« Reply #22 on: October 03, 2016, 03:59:24 am »
I always thought the springboard was just a timing issue on my part although I seem to be fairly consistent with this nowadays using TnF style skills when the spring is compressed.

The lag issue is a real killer though, always find it's at its worst at the top of the springboard stage crossing the vines. When you pull down the guy just sits there with a huge delay.  FailFish

Very interested to see where this project goes as I personally think the game is great and has the potential to be brilliant.

Member for 11 Years DK Killscreener Twitch Streamer

Offline CaptainJivePants

  • Senior Member
  • *
  • Posts: 152
  • Teter
    • Awards
Re: "Fixing" DKjr
« Reply #23 on: October 03, 2016, 08:46:46 am »
I don't know if you know about this, but Colecovision had a real secret DK Jr level.  It would be cool to see that turned into a level for the arcade version.
Having said that, I understand that it might not be possible to do, and you might have a different vision in mind.
https://m.youtube.com/watch?v=KrHGZmvCZE8


That's really cool. Thanks for sharing. I love the idea of Mario actually being a combatant/active enemy instead of just standing by my Monkey Dad.
DK Jr. - 818,900 (KS)
DK Jr. best first life - 714,700 (19-4)
APB - 215,074
Member for 10 Years DKJR Killscreener Twitch Streamer

Offline TheSunshineFund

  • Spring Jumper
  • *
  • Posts: 1470
  • Don't follow me on Twitch/Scared of being followed
    • Awards
Re: "Fixing" DKjr
« Reply #24 on: October 03, 2016, 09:18:41 am »

And if you were to fix the springboard as it seems you already had then maybe throw in more variations on the birds to force players to have to react quickly instead of finishing the board in the exact same way every single time. That is to have random birds that respond to inputs so that they are not the same every time.

I like this idea.

Oh and thanks John!  You are indeed the man.
In the summer that you came
There was something eating everyone
And the sunshine fund was low
We couldn't greet you with a simple hello
Member for 11 Years DK Masters - Rank D Twitch Streamer IGBY 2014 DKF Team Member CK Killscreener Blogger DK Killscreener DKJR Killscreener

Offline Sock Master

  • Elite Member
  • *
  • Posts: 383
    • Awards
Re: "Fixing" DKjr
« Reply #25 on: October 03, 2016, 05:53:27 pm »
Jeremy, I was able to reproduce the getting stuck and have fixed it.  It'll be in the next update.   This was actually caused by a mixup in the disassembly rather than coding.

DonkeyKongGenius, More variation/less patterned behavior in the birds is a good idea.  I'll have to dig some through the code to figure that out, but hopefully I can come up with something for the next update.
"Badges? We ain't got no badges. We don't need no badges. I don't have to show you any stinkin' badges!"
Member for 9 Years snek IGBY 2016 DKF Team Member Twitch Streamer

Offline Sock Master

  • Elite Member
  • *
  • Posts: 383
    • Awards
Re: "Fixing" DKjr
« Reply #26 on: October 04, 2016, 09:27:30 am »
Update take 2.  Just copy the files into the dkongjre folder.

I fixed a couple of errors in my disassembly, this fixes the getting stuck on vines bug.

I've tweaked the anti-camping logic a bit.  I've added a bit of randomization to the timing of the multiplying blue sparks and also to the bird patterns.    Fairly subtle stuff that a casual player probably wouldn't even notice, but it reduces pattern play.

You guys are not going to believe this, though.   I spent a lot of time yesterday trying to track down where the joystick inputs influence the bird patterns... ...and there is no deliberate code that does this!   I finally figured it out and found where it happens, though.

It's totally accidental and caused by a typo in the original code!   The birds were intended to have fixed patterns.

Code: [Select]
;bird flight pattern logic is here
l4cb9:  ld      a,(ix+$05)
        cp      $58
        jr      z,l4cec
l4cc0:  cp      $60
        ld      c,$02 ;load 2 position in C
        jr      z,l4cdd
        cp      $68
        ld      c,$05 ;load 5 position in C
        jr      z,l4cdd
        cp      $70
        ld      c,$03 ;load 3 position in C
        jr      z,l4cdd
l4cd2:  ld      a,(ix+$05)
        cp      $78
        jp      z,l4c1a
        jp      l2e96

l4cdd:  ld      a,c
        cp      b
        jp      z,l4c1a
        ld      a,b
        sub     $05
        cp      c
        jp      z,l4c1a
        jp      l2e96

l4cec:  ld      a,($6227)
        cp      $03
        jr      nz,l4cf8
        ld      a,(ix+$05)
        jr      l4cc0

l4cf8:  ld      a,$04 ;load 4 position in... A?  Oops.
        jr      l4cdd ;A actually gets clobbered right after jumping to l4cdd, so ld a,$04 does *nothing*

At the point where $04 is accidentally loaded into A instead of C, C happens to contain the joystick/button inputs (from about a dozen subroutines back.  It's only pure luck that some other in-between subroutine didn't clobber the contents of C.)   So instead of passing 2,3,4 or 5 to the bird flight pattern, it passes 2,3,joystick,5 instead, which affects the flight patterns.
"Badges? We ain't got no badges. We don't need no badges. I don't have to show you any stinkin' badges!"
Member for 9 Years snek IGBY 2016 DKF Team Member Twitch Streamer

Offline TheSunshineFund

  • Spring Jumper
  • *
  • Posts: 1470
  • Don't follow me on Twitch/Scared of being followed
    • Awards
Re: "Fixing" DKjr
« Reply #27 on: October 05, 2016, 06:01:21 am »
Wow that is interesting that it was intended to be patterned.  I like it better random I must say. 
In the summer that you came
There was something eating everyone
And the sunshine fund was low
We couldn't greet you with a simple hello
Member for 11 Years DK Masters - Rank D Twitch Streamer IGBY 2014 DKF Team Member CK Killscreener Blogger DK Killscreener DKJR Killscreener

Offline homerwannabee

  • Spring Jumper
  • *
  • Posts: 2232
    • Awards
Re: "Fixing" DKjr
« Reply #28 on: October 05, 2016, 08:15:11 am »
Wow, that's is cool. Very awesome discovery!
"Perception forged in delusion and refined by pain"

-Ross Benzinger

"It's like we are able to play beautiful music out there, but no one can hear the instruments"

-Leon Shepard
Member for 11 Years Former DK3 World Record Holder DK Killscreener DK Masters - Rank D IGBY 2014 DKF Team Member CK Killscreener Submit a score for every DK3 track Blogger Twitch Streamer Former DKJR World Record Holder - MAME DKJR Killscreener DK3 Repetitive Blue Screener

WCopeland

  • Guest
Re: "Fixing" DKjr
« Reply #29 on: October 05, 2016, 08:37:54 am »
Very interesting -- great find