tonk-gg / dappicom

Provable play of Nintendo Entertainment System in Noir
GNU General Public License v3.0
132 stars 9 forks source link

Master instruction tracker #6

Open goblinoats opened 1 year ago

goblinoats commented 1 year ago

This is a master tracker for completing instructions.

How to contribute an instruction

If you see an instruction unchecked and want to take it on please do the following:

  1. Open an issue where the title of the issue is the instruction
  2. Provide a description of the instruction functionality
  3. Make it clear that you will be taking this instruction on
  4. Once implemented, create a pull request according to the contribution guidelines
  5. Reference this issue and the issue you opened in the pull request
  6. Add tests to the instruction. (All instruction files are stubbed with their inputs and expected outputs and format of the trace is explained in the notes folder.)

You may reference How to Write an Instruction for a brief walkthrough on how to think about writing opcodes. If you have questions, you may ask them in the discord or in the issue itself. Common questions will be collated into documentation.

Once the implementation is reviewed and the test looks good it will be merged in and the instruction will be checked off.


Good for starters



For intermediate (These instructions have more diverse address modes)



More involved (illegal instr, stack operations, jmps, branches, system functions)

Some of the illegal instructions are simple, but we are leaving them here for now to fill those out last.


ameya-deshmukh commented 11 months ago

@goblinoats looking for contributors to these? Would love to take a stab at some

goblinoats commented 10 months ago

@ameya-deshmukh Yeah! Take your pic of which instruction you'd like to take on and then just open a separate issue for it so that we know it's in progress and that you've claimed it. Lmk if you run into any speed bumps. Some of the instructions will require more thought than others.

ameya-deshmukh commented 10 months ago

Got it! Thanks, will let you know my pick

TAdev0 commented 5 months ago

@baz-lightyear @goblinoats hey :) I would like to implement one of these opcodes to get started, is one of them especially easy for a first contribution? Thank you!

goblinoats commented 5 months ago

@TAdev0 You could take a look at iny or dex/dey as they are very similar to inx (which already has an example implementation). The simple operations like binary operations and arithmetic operations are the easiest ones to reason about.

TAdev0 commented 5 months ago

Thank you @goblinoats. I ll work on these !

yehia67 commented 5 months ago

Hi @goblinoats, I would like to help😄 Which opcode should I start with? 👀

goblinoats commented 5 months ago

Hey @yehia67, I've sorted the instructions now into categories.

TAdev0 commented 5 months ago

@goblinoats should i rename the check_op function as main function just like INY after implementing the opcode?

And where do these values come from in the INX example?


//PC = 8203
//X = 8201
//Y = 8202
//A = 8200
//SR = 8205

thank you!