Author Topic: Donkey Kong Trainer  (Read 67979 times)

0 Members and 4 Guests are viewing this topic.

Offline Sock Master

  • Elite Member
  • *
  • Posts: 383
    • Awards
Donkey Kong Trainer
« on: May 12, 2016, 11:38:45 pm »
So, I've started working on a "Trainer" version of DK.

This is essentially going to be a Donkey Kong romset that plays just like normal Donkey Kong, but will add extra information to the game's display and will also include some features and functions to help with practice and training.

I'm not finished it yet, but I figured it'd be interesting to share what I've got as I work on it.  You can download the romset here:

**The old link is broken now so I've attached the file to the end of this post - see below!**

The file isn't a complete DK romset, you'll have to unzip it and copy these files into a folder already containing a copy of DK roms to get it to work in MAME.


Here's what you get so far...  during gameplay,

On the left side of the screen:
-Your score (total)
-Your score (on this board)
-Lives
-Total points that could be earned leeching kong in the time that is left (appears on rivets board only)

Center:
-High score (I'll replace this with a Pace display in the future)

On the right side of the screen:
-Game speed (currently selectable between 20% and 150%)
-Points earned from jumps (on this board)
-Points earned from hammer smashes (on this board)
-Level indicator
-Internal difficulty indicator, plus time in seconds till the internal difficulty goes to the next level.
-Bonus
-Hammer time left (in seconds and milliseconds, when hammer is active)
-Time till next fireball/firefox spawn interval (seconds/milliseconds, on rivets and pies only)
-Scrolling spring I.D. display (on springs only)

Playfield:
-Indicator for pie spawn cycle (on pies only)
-"always 300 points" Pies are indicated by their blue color (on pies only)


And...  The 1P and 2P start buttons can be used to control these features,

1P button:
-quick tap sets the game speed 10% slower per tap
-slower tap sets the game speed 10% faster
-hold down (for over a second) and let go sets the speed back to normal (100%)

2P button:
-quick tap resets the board.  No lives lost.  Your score is restored to what it was before you started the board.  You can use this to retry the board as many times as you like, restart if you mess up a move, or just want to practice something over and over.

-slower tap skips the board.   Whatever is on the bonus timer gets added to your score and you move to the next board as if you completed it.   You can tap slow taps during the "How High" screen to keep skipping till you get to lets say 5-1.

-hold down (for at least 3 seconds) and let go.  Quit back to attract mode.


The idea here is that you can play a game as if it were a normal DK game, but it allows you to retry stages if something didn't work out.   Only the last play on a board will count - this would allow you to judge what your score would be if no mistakes ever happened, etc...

For practice play, the speed controls will allow you to try pixel-perfect moves at slow speed to work out the timing, then speed it up incrementally until you can do it in real-time.   For reaction time training, speed the game up >100% and play and then when you go back down to regular speed it'll be easier to manage.

There are other ideas I'd like to add, but some of them are pretty complicated to implement.  Hopefully I can get some of them in.  Things like on-screen indicators for where you'd land after a jump, where a barrel might get to after your jump, visible indicators for fireball decision points, stuff like that...

Oh, and I removed the high score table.. this allows me to add stuff while still fitting in DK's normal ROM space.  High scores are pointless in a trainer/practice version of DK anyway.   I also removed the 2 player option.

Let me know what you think.  Comments are welcome.
« Last Edit: October 09, 2022, 08:04:53 pm by Sock Master »
"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 xelnia

  • Administrator
  • Spring Jumper
  • *
  • Posts: 2869
  • Stop using 0.106
    • Twitch
    • Awards
Re: Donkey Kong Trainer
« Reply #1 on: May 12, 2016, 11:49:50 pm »
Playing with this now.  Kreygasm
"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 marinomitch13

  • Spring Jumper
  • *
  • Posts: 1806
    • How to Play DK
    • Awards
Re: Donkey Kong Trainer
« Reply #2 on: May 13, 2016, 02:12:01 am »
Wow. I would so buy this if it ever becomes hardware and I have the money to spend. Kreygasm

Another idea: Time until conveyer changes direction on pies.
"Thou hast made us for Thyself, and our heart is restless until it finds its rest in Thee." -Augustine, Confessions.
Member for 11 Years IGBY 2015 DKF Team Member DK Killscreener Blogger Twitch Streamer

Offline xelnia

  • Administrator
  • Spring Jumper
  • *
  • Posts: 2869
  • Stop using 0.106
    • Twitch
    • Awards
Re: Donkey Kong Trainer
« Reply #3 on: May 13, 2016, 02:31:33 am »
Quick thoughts after playing with it for about an hour:

1) The spring indicators are cool, but I'm not sure they're useful as a trainer in their current implementation. Because the numbers are on the right and the springs come in from the left, it's visually difficult to connect the two, especially on level 4.

2) The idea was raised that a trainer might provide players with not just data, but also specific scenarios. So, you could have a L5+ spring stage with mostly longer springs. Or a rivet with all bottom spawners. Or a pie factory with more aggressive fireballs. etc. etc.

3) I really like the jump / smash points counter. I think these can be very useful as players try to increase their efficiency with bottom/top hammers. To that end, maybe separate bottom hammer smashes from top hammer smashes if possible.

Pretty cool all around. Great work sir!
"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 Adam_Mon

  • Elite Member
  • *
  • Posts: 383
    • Awards
Re: Donkey Kong Trainer
« Reply #4 on: May 13, 2016, 08:18:03 am »
Wow. I would so buy this if it ever becomes hardware and I have the money to spend. Kreygasm

Another idea: Time until conveyer changes direction on pies.

That might clutter the screen imo, besides we get a visual cue for conveyer change when kong hits the left wall.

The blue springs scrolling numbers/text I found a little distracting tbh.

other than that this is great. cant wait for the built in pace  Kreygasm

Offline Sock Master

  • Elite Member
  • *
  • Posts: 383
    • Awards
Re: Donkey Kong Trainer
« Reply #5 on: May 13, 2016, 08:46:00 am »
I'll keep working on it.  I'm thinking there are too many things on the right side of the screen and I could move one or two of them over to the left side, or move things around a bit till everything fits in convenient and non-distracting locations.

After it's done, I'll start looking into getting it to run on actual arcade hardware too.

1) The spring indicators are cool, but I'm not sure they're useful as a trainer in their current implementation. Because the numbers are on the right and the springs come in from the left, it's visually difficult to connect the two, especially on level 4.

2) The idea was raised that a trainer might provide players with not just data, but also specific scenarios. So, you could have a L5+ spring stage with mostly longer springs. Or a rivet with all bottom spawners. Or a pie factory with more aggressive fireballs. etc. etc.

3) I really like the jump / smash points counter. I think these can be very useful as players try to increase their efficiency with bottom/top hammers. To that end, maybe separate bottom hammer smashes from top hammer smashes if possible.

1)I'm going to try moving the indicators,  maybe above Kong's head.    Later on I'm also hoping to put in some kind of graphical indications - like a sprite dot displaying at the next landing point of each moving spring.

2)I'll have to think about how that might be done.  We have a few problems - how to make a user interface to select scenarios, and getting it all to still fit into DK ROM space.

3)Two hammer point displays might be handy, but how to add that without making the screen cluttered/more confusing?


One of the more interesting things that this trainer makes visible is how the different timers work.

The spawn timer keeps cycling, always, even between boards and during hammer smashes - BUT, spawns do not always happen.  You can time your smashes to coincide with the spawn timer reaching zero and force the game skip respawns while you're hammering.    I still have a bit to clean up there, but when it says "S=nnn" it can spawn a fireball.  When you're smashing, the "S=" vanishes, to indicate the timer is running but at that moment a fireball will not spawn if the timer reaches 0.

A similar thing happens with the time till internal difficulty increase.  It keeps ticking while smashing things (but in this case difficulty still increases during a smash.)   But it does show that internal difficulty jumps are not directly linked to the bonus timer.
"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 marinomitch13

  • Spring Jumper
  • *
  • Posts: 1806
    • How to Play DK
    • Awards
Re: Donkey Kong Trainer
« Reply #6 on: May 13, 2016, 11:09:48 am »
In terms of clutter, the best option might just be a menu where the user gets to pick what gets displayed.
"Thou hast made us for Thyself, and our heart is restless until it finds its rest in Thee." -Augustine, Confessions.
Member for 11 Years IGBY 2015 DKF Team Member DK Killscreener Blogger Twitch Streamer

Offline mrvaya

  • Senior Member
  • *
  • Posts: 196
    • Awards
Re: Donkey Kong Trainer
« Reply #7 on: May 14, 2016, 12:54:10 am »
Hi John

Used your trainer yesterday and like it A LOT. Its a brilliant idea and for my part I think its close to perfect. Two comments:

1. If possible to program I think the spring indicators should be graphical and showing where the first landingspot is on the girder (position 1-15) since training to take notice of this are key in getting good at the spring-levels. I dont think you really train anything by looking at the numbers in the trainer.

2. In addition to the trainer and regarding the pace-info I would REALLY love, if it was possible to enter a "tournament edition" showing the pace informations (deaths included) that we could choose to use while playing for highscores. Of course this would be dependent on DKF (and TG) to accept submissions by this version. Today a lot of people struggle to show this info in their stream by either using the very old pauline tracker (for 106) or other programs/excel sheets. It would be a lot better, if it was somehow possible to implement in a nice way in the code or maybe as a supplement tracker of some kind if it otherwise would be problematic to make legit submissions. What do other people thinks about this?
Member for 11 Years DK Killscreener Blogger Twitch Streamer

Offline ChrisP

  • Spring Jumper
  • *
  • Posts: 1764
  • I'm going to jump next to your leg.
    • Donkey Blog
    • Awards
Re: Donkey Kong Trainer
« Reply #8 on: May 19, 2016, 03:18:00 pm »
I like this! Here are my change suggestions.

When skipping a board, don't add the timer value to the score: I think it's much better to skip boards and keep the score "clean", adding up just the points that have been earned. (IMO, you do not earn the bonus timer until and unless you clear the board.) Or, it could work such that you won't get the timer bonus added if you skip the board during the stacked monkey screen, but will get the bonus if you skip it with the playfield on screen.

Automatic Free Play: This trainer will never be used in a conventional on-location setting, therefore credit-handling tasks are probably a waste of memory and time. Just simplify and make pressing 1P start the game.

Remove the intro cutscene: "I want to see that intro again!", said no one, ever. And look, more ROM space!

Reset the hammer score upon grabbing a second hammer: Individual hammer points are much more useful than cumulative hammer points for the board. For the first hammer this is no problem, but if you want to know how many points the second hammer was worth, you have to remember what the first one was worth, then subtract.

Change the input triggers: "tap for function 1, longer press for function 2" is awkward. The problem is that to get the secondary function you have to press the button long enough to not trigger the first function, but if you press it for too long, you'll trigger neither function, and if you press it for 3 seconds, you'll trigger the third function! So getting all of the functions to trigger is actually a bit of a skill in itself. Suggestion:
1P = board replay
2P = board skip
Jump+1P = speed down
Jump+2P = speed up
Reset to attract mode = Jump+1P+2P
Speed reset = drop it. Easy to reset it to 100% with the J+1P=down/J+2P=up method.

5-1 Warp: For a trainer, it can't be emphasized enough how valuable it is to be able to skip all the early levels and go to 5-1 instantly, since that's the beginning of the real game. With MAME, a 5-1 savestate can be made as a workaround, but if and when this becomes compatible with arcade hardware, anyone who wants to practice internal difficulty 5 will have to manually skip the first 14 boards every time. I suggest assigning a specific trigger to warp to 5-1. Perhaps 1P+2P? Or, you could even make it a dipswitch setting, replacing the "extra life at" switch (which is pretty useless) with a "start at Level 5" on/off switch.

Add a key to the high score/insert coin screen: remove the Insert Coin stuff, then use this screen to describe what each indicator shows, and what the button actions do. In-game documentation would be good, otherwise users of this ROM will be dependent on the DKF thread for an explanation. A few things, like the blue pie, will be a total mystery unless explained.

That's all I can think of for now!  :)
« Last Edit: May 19, 2016, 03:51:54 pm by ChrisP »
http://donkeykongblog.blogspot.com

4 Quarters :-* - 800K Avg. Per Qtr. :o - No Restarts 8) - No Proof :'(

7/26/2013   Coin 35,946   710,800   18-1
7/28/2013   Coin 35,947   903,700   22-1
8/16/2013   Coin 35,948   694,100   17-6
8/17/2013   Coin 35,949   893,100   22-1

3,201,700: the $1 World Record?
Member for 11 Years DKJR Killscreener DK Masters - Rank D IGBY 2016 DKF Team Member IGBY 2015 DKF Team Member IGBY 2014 DKF Team Member Blogger Twitch Streamer DK Killscreener CK Killscreener

Offline marinomitch13

  • Spring Jumper
  • *
  • Posts: 1806
    • How to Play DK
    • Awards
Re: Donkey Kong Trainer
« Reply #9 on: May 19, 2016, 03:29:47 pm »
since that's the beginning of the real game.

Whtda?!?! Grrrrrr!  >:(  <mad>  <mad>  <mad>

Fttt... bug off, make.
"Thou hast made us for Thyself, and our heart is restless until it finds its rest in Thee." -Augustine, Confessions.
Member for 11 Years IGBY 2015 DKF Team Member DK Killscreener Blogger Twitch Streamer

Offline ChrisP

  • Spring Jumper
  • *
  • Posts: 1764
  • I'm going to jump next to your leg.
    • Donkey Blog
    • Awards
Re: Donkey Kong Trainer
« Reply #10 on: May 19, 2016, 03:31:50 pm »
Troll successful.  Kappa
http://donkeykongblog.blogspot.com

4 Quarters :-* - 800K Avg. Per Qtr. :o - No Restarts 8) - No Proof :'(

7/26/2013   Coin 35,946   710,800   18-1
7/28/2013   Coin 35,947   903,700   22-1
8/16/2013   Coin 35,948   694,100   17-6
8/17/2013   Coin 35,949   893,100   22-1

3,201,700: the $1 World Record?
Member for 11 Years DKJR Killscreener DK Masters - Rank D IGBY 2016 DKF Team Member IGBY 2015 DKF Team Member IGBY 2014 DKF Team Member Blogger Twitch Streamer DK Killscreener CK Killscreener

Offline tudose

  • Spring Jumper
  • *
  • Posts: 536
    • Awards
Re: Donkey Kong Trainer
« Reply #11 on: May 19, 2016, 03:41:49 pm »
chrisp please...please <Allen>
Member for 11 Years Former CK World Record Holder - MAME DKJR World Record Holder - MAME DK Masters - Rank D DKJR Killscreener DK 1.1M Point Scorer IGBY 2016 DKF Team Member IGBY 2015 DKF Team Member Blogger Winner of a community event DK 1M Point Scorer DK Killscreener CK Killscreener Twitch Streamer Former DK Level 1-1 World Record Holder

Offline Sock Master

  • Elite Member
  • *
  • Posts: 383
    • Awards
Re: Donkey Kong Trainer
« Reply #12 on: May 19, 2016, 04:06:15 pm »
Right now I'm working on adding some graphical 'dots' around jumpman, barrels, fireballs, springs.. to indicate travel/jump/decision distances.   Some of these already look like missteps (not useful) but some look like they'll be useful.   Update tomorrow, hopefully.   This will still be a work-in-progress, and not even entirely functional, so just let me know "this dot is useless" because I'm probably already considering getting rid of it.

In terms of clutter, the best option might just be a menu where the user gets to pick what gets displayed.

I'll find out later if there's enough ROM space to allow menus, but another option may be to toggle a few variations of the displays by inserting coins during gameplay.

1. If possible to program I think the spring indicators should be graphical and showing where the first landingspot is on the girder (position 1-15) since training to take notice of this are key in getting good at the spring-levels. I dont think you really train anything by looking at the numbers in the trainer.

2. In addition to the trainer and regarding the pace-info I would REALLY love, if it was possible to enter a "tournament edition" showing the pace informations (deaths included) that we could choose to use while playing for highscores. Of course this would be dependent on DKF (and TG) to accept submissions by this version.

1. Already added, sort of (I'm aiming to post an updated rom tomorrow)  I currently have a graphical dot leading ahead of each spring by one bounce cycle, so you see each spring's trajectory and landing points before they happen.

2. If people agree to it, I could make a version of DK without all the training stuff and just all the pace stuff.  But there's a catch.. even changing one byte of Z80 code changes the results from the RNG.  That means it won't be .INP file interchangeable with the regular DK roms.

When skipping a board, don't add the timer value to the score:

Automatic Free Play:

Remove the intro cutscene:

Reset the hammer score upon grabbing a second hammer:

5-1 Warp:

Add a key to the high score/insert coin screen:

These are all good and I'll try to add these in one form or another as I go.   The cutscene might end up skip-able instead of just gone.   It's already pretty quick to get to 5-1 with a series of button taps during the how-high screen, but I'll consider adding some more direct way to get to 5-1.

Change the input triggers: "tap for function 1, longer press for function 2" is awkward. The problem is that to get the secondary function you have to press the button long enough to not trigger the first function, but if you press it for too long, you'll trigger neither function, and if you press it for 3 seconds, you'll trigger the third function! So getting all of the functions to trigger is actually a bit of a skill in itself. Suggestion:
1P = board replay
2P = board skip
Jump+1P = speed down
Jump+2P = speed up
Reset to attract mode = Jump+1P+2P
Speed reset = drop it. Easy to reset it to 100% with the J+1P=down/J+2P=up method.
It's just too easy to fumble the second function. More explicit input triggers would be better.

This one is difficult to make a best solution for.  I don't want a multi-button combination for speedup-slowdown because it's handy to be able to tap in speed switches mid-gameplay.

I am trying to tweak the short tap/long tap/extra long tap recognition to be more reliable.    The gist of it right now is that a short tap is just a tap.. no holding down.    A medium tap is holding it down for somewheres around 1/4 of a second. and a long tap is anything over 2 or 3 seconds.
"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 Adam_Mon

  • Elite Member
  • *
  • Posts: 383
    • Awards
Re: Donkey Kong Trainer
« Reply #13 on: May 19, 2016, 04:39:07 pm »
This is a terrible suggestion and probably impossible, but I think it would be cool if when you trigger "warp to lvl 5-1" you get something like the intials input menu to show up, only the letters are replaced with numbers and you can key in what start score you want to begin lvl 5 with.

Offline marinomitch13

  • Spring Jumper
  • *
  • Posts: 1806
    • How to Play DK
    • Awards
Re: Donkey Kong Trainer
« Reply #14 on: May 19, 2016, 04:51:42 pm »
Right now I'm working on adding some graphical 'dots' around jumpman, barrels, fireballs, springs.. to indicate travel/jump/decision distances.

This is an amazing idea. This would literally make learning the leach-each-barrel-twice-at-the-end-of-each-girder technique much easier.
"Thou hast made us for Thyself, and our heart is restless until it finds its rest in Thee." -Augustine, Confessions.
Member for 11 Years IGBY 2015 DKF Team Member DK Killscreener Blogger Twitch Streamer