Git Product home page Git Product logo

pr8's Introduction

PR8 - NES Drum Machine

Entire source code for my PR8 NES Drum Machine. I'm not actively maintaining this so feel free to modify, use or abuse it as you like.

I was going to attempt to document the code a little better but given there's about 25000 lines of code and, well, it's been a while, I thought I'd leave it up to you to decypher some of the more esoteric bits!

If you have any questions you could try emailing me at [email protected] but I will only give limited support. I won't help you to program the NES and so you should be expert-level already before taking on this project.

Updates - 7th April 2021

  • Initial commit of code wasn't actually buildable with the most up-to-date version of CC65/CA65 due to a known issue with negative 8-bit numbers and range checking. I've changed the code to get around this so it is buildable again now

Bug Fixes:

Thanks to @infu_av for bringing these to my attention

  • Bug: NTSC/PAL versioning was not actually working so the note pitches were off. Fixed.
  • Bug: It was possible to modify a note value outside of valid range. Fixed.
  • Bug: It was possible to change a Phrase number a make it go outside of valid range which in turn corrupted your save file. Fixed.

Requirements

The code is written for CA65/CC65 so you'll need that on your platform of choice. You'll need a good emulator to run it but it will also run on a physical donor cartridge (I've seen it for real but don't ask me how!) or something like a Powerpak developement cartrdige.

Installation or Getting Started

There are two build scripts:

  • BUILD (for building as you code)
  • BUILDRELEASE (for building a releasable package)

Check them out and see how it's actually assembled and linked with CA65 etc. It's fairly straightforward.

The full HTML manual is included in the package too.

There are a few files that are either redundant or, honestly, I have no clue what they're for. Probably temporary stuff when I was developing new ideas etc.

Contributors

You're free to use the code and all files in whatever way you like. If you do manage to do anything interesting drop me a line.

License

Public domain, for education, research and the curious.

Be cool though, if you make anything with this make sure you credit me as the originator. It's the nice thing to do.

Neil

pr8's People

Contributors

neilbaldwin avatar

Stargazers

Chris Farrell avatar XC3N avatar Max avatar  avatar Jake Johnson avatar  avatar INFU avatar DEFENSE MECHANISM avatar  avatar Peter Swimm avatar  avatar

Watchers

 avatar INFU avatar

pr8's Issues

The readme doesn't point out to newest ROMs

while in this repo it's not so easy to make mistake, it would be really good if newest & up to date compiled PR8 .nes files would be pointed out nicely (or in separate folder!) probably with their version and region included like:
pr8_RR_vVVV.nes
where RR is 2 regional letters (US/EU standing for NTSC/PAL)
and vVVV indicates version (v099, v101)

Too quick button combos problem

Activating multi button combo will also trigger the combo that requires same buttons - triggering 2 combos at once and penalizing user for quick action:

Examples:

  1. Cursor in the Drum Editor area, right over the PU1 section
    User presses SELECT+START to restart the sequence, and hear back changes made
    If user lets go of those 2 buttons too quickly, PR8 disregards successful bigger combo SELECT+START and just treats it as single SELECT press and toggles the PU1 part of instrument.

  2. Cursor either in Sequencer or any Drum Editor section
    User presses B+DOWN or B+UP to move between the areas
    if user lets go of B button too quickly, PR8 disregards successful bigger combo B+DIRECTION and just treats it as single B button press, defaulting the value in Drum section or taking away the Trigger from the sequencer

Preffered solution - PR8 triggering just one button combo and not triggering any smaller button combos that involve same buttons, thus penalizing the user for quick action

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.