Karateka V0.9

(Simon) #1


Over the last few months, I have made a version of one of my favourite childhood games - Karateka!

The source code can be found here > https://github.com/filmote/Karateka
The compiled HEX and Arduboy files can be found here > https://github.com/filmote/Karateka/tree/master/distibutable


From Wikipedia:

Karateka is a 1984 martial arts action game by Jordan Mechner, and was his first published game, created while attending Yale University. It was originally programmed for the Apple II, then widely ported.

The player controls an unnamed protagonist who is attempting to rescue his love interest, the Princess Mariko, from Akuma’s castle fortress. The game exhibits a combination of a side-scrolling platform and fighting game elements similar to a beat 'em up. The player uses punches and kicks to defeat Akuma and his guards and make his way deeper into the fortress.

About this Beta

Although not quite finished, I have released this version to solicit feedback and suggestions. Currently the game is consuming nearly all of the available memory so the changes will need to be prioritised on merit and size.

We already have a ‘to do’ list for the next version which will hopefully be in a few weeks:

  • [x] Add music. This is currently being completed by @JayGarcia using the ATMLib2.
  • [ ] Add closing scene where we fight the Akuma.
  • [ ] Add ‘ceiling’ graphics to inside scenes. I have tried but they are all too heavy and clumsy.
  • [ ] Upgrade the final scene to be closer to the original.
  • [ ] Add different heads on the enemies.
  • [ ] Add starting story / text.


The following screenshots show some of the scenes from the game. Fight the various soldiers, avoid the Akuma’s eagle and save Mariko.


While in the fighting stance:

  • Up, right or down - while holding A or B: Kick or punch up, middle or down.
  • Left or right - while not holding A or B: Sidle left or right.
  • A Button - Move to kick ready.
  • B Button - Move to punch ready.
  • Up Button - Move to upright stance.

While in Upright stance:

  • Right Button - Run to the right.
  • Down Button - Move to fighting stance.

During animations:

  • A Button - Skip animation.

Look out for Version 1.0 with sound!

I hope you enjoy the game.

Look out for version 1.0 which at a minimum will include @JayGarcia’s title music and sound effects. Memory permitting, I will be able to squeeze a few more things into the release. @dxb has hinted that he may look for space savings which will enable me to do more!

Vanity Search
[WIP] Choplifter Remake

I have been looking forward to this release, what a great game choice for an Arduboy implementation! Thank you for the great contribution

(Simon) #3

Thanks @JohnZ … please play it and give whatever feedback you think is relevant. I may not be able to accommodate all changes but I will try!

(Simon) #4

@eried can you add this one to your repo?

(Erwin) #5

Yes, will do on sunday (but also everybody can :open_mouth: )

Edit: Uploaded to http://arduboy.ried.cl! :slight_smile:

(Boris) #6

I really like it. I’ve never played the original so I’m not sure if the slow motion is on purpose, but it makes it feel more strategic.

(Simon) #7

Thanks for the feedback Boris.

I have a setting that controls the speed in the Enums.h file, shown below:


If you tweak it to (say) 3 is it a bit better for you?

(Erwin) #8

You could say that it runs quite similar to the one in gameboy:

(Simon) #9

Nice! I never had a Gameboy and have not seen this version.

I wouldn’t call it ‘slow motion’ but the game is ‘intentionally’ a little slow. If you speed it up, you just get to the point where you are blindly kicking and punching rather than watching for the right time to kick. As mentioned, I can speed it up a touch but I don’t want to go too far.

(Boris) #10

Thanks for the advice, I might try tweaking the speed. But it’s pretty suitable for me now.

(Simon) #11

How do you like the game otherwise? Fought any eagles yet??

(Boris) #12

I’ve only gotten to about the third guy.

(Simon) #13

So is it too hard? Or are you just shit not very good? :grinning:

I can tweak the enemy skill a little to make it a bit easier.

(Scott R) #14

Can you add a shotgun to kill this bloomin eagle.

(Simon) #15

I am hoping @JayGarcia can make a screech sound so you know its coming! You have to time the kick or punch really well!

(fred ) #16

Can you add Mana potions to restore health. After the first guy I had little life left. You know instead of me getting better. :slight_smile:

(Simon) #17

I could make the fighters a little easier at the start. I have a simple bit of logic in the Enums.h that defines the scenes and sequences.

const uint8_t PROGMEM gameSequence[] = {
  //                                      Delay   IntArch     Launch      Show        Enemy               
  //                                              1 = LH      Enemies     Crevice     Activity            
  //                                              2 = RH      1=Person                100 Slow / 0 Fast   
  //                                              ExtArch     2=Eagle                                     
  //                                              3 = LH                  
  //                                              4 = RH                  
  GAME_STATE_TITLE_SCENE,                 0,      0,          0,          0,          0,
  GAME_STATE_CASTLE_SCENE,                15,     0,          0,          0,          0,
  GAME_STATE_PLAY_INIT,                   0,      0,          1,          0,        130,

The indicates how good the fighter is - the lower the number the better. You could tweak these if you want to see if it is easier. They are uint8_t so stick with a range between 0 and 255.

(fred ) #18

Thanks for the info. I’ll tweak the code after I load the game back on. Playing 1943 for the moment. Thanks

(Simon) #19

1943? Great game :wink:

(Matrix) #20

I played the original on an Atari 7800. I think the difficulty level to the original is pretty good – I haven’t restarted 100 times because I run into a 1 hit kill by forgetting to go into the fighting stance!