I am looking for help in getting some of the music from the original Apple ][ version of Karateka converted into ArduboyTones format. I have attempted to rip them from MP3 to MIDI and then using the tools to Arduboy format but they sound really bad.
If anyone can do this, I would be very grateful and will credit you accordingly.
The current version of my code can be found here >
As it stands, I have about 300 bytes available for sound - not much but probably enough for a simple tune. I may be able to find some extra savings but I am really pushing the limit of my skills already.
The original game can be played here > https://archive.org/details/Karateka_1984_Broderbund
Please, if there is someone out there who has the skills …
Awesome. I was hoping to contribute Music to another Arduboy game =).
I’d stay away from ArduboyTones and migrate to ATMLib (or ATMLib2 – I will look to release it next week).
I am looking for help in getting some of the music from the original Apple ][ version of Karateka converted into ArduboyTones format.
One thing I’d like to suggest is being if the music is copyrighted first. If it is, I won’t touch it.
We can create a clone though.
Mmmm … the game is a complete copy of the original.
I actually wrote to Jordan Mechner telling him what I was doing and asking for his ‘blessing’ but no response. I pointed out that the project is open-source and therefore not a money generator - maybe that is when he lost interest. http://www.jordanmechner.com/
A clone? I really like the simplicity of the Apple ][ version so if it can be like that then fantastic.
Will the ATMLib or ATMLib2 library take up any more space than the ArduboyTones library?
I’m no lawyer, but IIRC, if the original source is not public-domain or open sourced with the proper license, then making a copy is not good.
ATMLib2 will require less space than Arduboy.tones for sure. Take a look at Evade 2. We were able to stuff 9 songs in it =)
When I say ‘complete copy’ I meant the concept and the graphic style are copied. I have not used any of his original code - that was all written by me. In much the same was as there is a PacMan and a Space Invaders for the Arduboy - these page homage to the originals but their authors wrote them from scratch.
Being that he’s still selling the “classic” version for iOS and Android, might be why no interest. Probably easier to compose a new derivative work?
Maybe … I wasn’t asking him to do anything but offered to share with him what I was making.
Composing a derivative would be great … if only I had the skills.
I have added the ATMLib to my game to compare the relative sizes of ArduboyTones vs ATMLib.
Without either library my game compiles to : 27,518 / 1,602 bytes
With the ArduboyTones library it comes to : 28,244 / 1,634 bytes (an increase of 726 / 32 bytes)
With the ATMLib, it jumps to : 30,816 / 1,851 bytes (an increase of 3,298 / 249)
@JayGarcia mentioned ATMLib2 rather than the original ATMLib library. Is this smaller to begin with as I cannot see how I am going to use the library with my memory constraints. I understand that the actual compositions may be smaller but this large footprint is an issue.
I have had a look at the Evade code to see if I could compare a ‘preview’ copy of the ATMLib2 library but must confess that I was totally confused where to start!
FYI ATMlib2 takes up 2268 of program memory as of some recent commit, see here https://github.com/moduscreate/ATMlib/blob/ATMLib2/README.md
I think I can slim it down further, I’ll give it a shot in the next few weeks.
That’s pretty big - the ArduboyTones is approximately 700 bytes in size.
I understand that the actual tunes may be different in size and the ATMLib has four channels but I am not sure how I would squeeze that in.
You can #define features out at compile time to trim it down and you can use just the OSC module (which gives you 3 square waves with programmable duty cycle and one noise channel (but no tracker like interface) for ~700 bytes if I recall correctly.
I think it depends on the lens you look at things from.
I tend to look at things from the “big picture” perspective.
Library + Music == overall smaller package.
With Evade 1, we used Tones and the first song used 1,331 bytes and only used two channels. with ATMLib(2) we brought it down to 357 bytes and had room for SFX with percussion without sacrificing an audio track from the music.
All of this depends on what your priority is =). For me, Music & SFX have a higher priority than graphics as audio (no matter how tiny the speaker is on the device) makes the game a much fuller experience.
To me: Arduboy games without music is like going back to the Atari 2600 days of gaming where as with music it’s like going to the NES days almost.
Audio, sure, but soundtracks? After listening to the same background music over and over in a game, I like to have the ability to turn it off but still keep the “beeps”, etc. that provide audio feedback during game play.
I suppose it depends on your preference. =)
I grew up in the 80s with the NES and fancy the music that was created for those games. Just like with movies, music can provide themes such as adventure or anxiety (bosses). Without music, the games can be hollow and less enjoyable.
Ah … that makes sense. Thanks
I checked again and the OSC module from ATMlib2 takes up 580 bytes of progmem. I think it can be made ~100 bytes smaller with a small decrease in performance. I’ll look into it in the next few days.
That’s nice and small. I don’t know what features I will need but I assuming relatively basic!
Exactly 100 bytes smaller actually (564 → 464 bytes using a demo song + SFX) see Reduce ISR size avoid skip computation for unused voices by dxxb · Pull Request #26 · moduscreate/ATMlib2 · GitHub
Did you pad out some of the savings to hit that 100 exactly? A few no-ops??