Instantly share code, notes, and snippets.

# ericandrewlewis/gist:1619017504caf75a9ddbf6ec03731417

Last active December 9, 2023 03:49
Show Gist options
• Save ericandrewlewis/1619017504caf75a9ddbf6ec03731417 to your computer and use it in GitHub Desktop.
NES ca65 Cheat Sheet

## `adc` - Add to the accumulator

```lda #1 ; A = 1
adc #1 ; A = 2
ldx #5 ; X = 5
stx \$01 ; memory address \$01 = 5
adc \$01 ; A = 7```

## `sbc` - Subtract from the accumulator

8-bit subtraction:

```sec ; set the carry flag
lda #5
sbc #1 ; subtract one from the A register, A = 4```

## `dec` - Decrement a value in a memory address by one

```lda #5
sta \$01 ; Memory address \$01 holds the value 5
dec \$01 ; Memory address \$01 holds the value 4```

## `asl` - Left-bit shift the accumulator

```lda #1 ; A = 1 (00000001)
asl    ; A = 2 (00000010)
asl    ; A = 4 (00000100)```

The leftmost bit of the accumulator is set to the carry flag

```lda #%10000000 ; A = 128 (10000000), carry flag = 0
asl            ; A =   0 (00000000), carry flag = 1```

## `pha` - Push accumulator onto the stack

```lda #1 ; A = 1
pha    ; A = 1, \$01FF = 1```

## `pla` - Pull (pop) value from stack into the accumulator

`lda #1 ; A = 1`

## `txs` - Set the value of the stack pointer

Typically you'll just do this once to setup a descending stack

`txs #\$ff`

## `ora` - Logical inclusive `OR` performed on the accumulator

```lda #%10101010
ora #%11110000
; A = 11111010```