From 1978afbc18ffb227f0ce36663648e00d1d2d7945 Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Thu, 9 Apr 2026 00:33:04 +0200 Subject: Add the sound/beep.s example MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is the most simple example you can come up when it comes to producing sound on the NES/Famicom. Basically, a single note is delivered to the APU which is continuously on. Signed-off-by: Miquel Sabaté Solà --- shared/apu.s | 8 ++++++++ shared/asm.s | 8 ++++++++ shared/oam.s | 11 +++++++++++ shared/ppu.s | 9 +++++++++ 4 files changed, 36 insertions(+) create mode 100644 shared/apu.s create mode 100644 shared/oam.s (limited to 'shared') diff --git a/shared/apu.s b/shared/apu.s new file mode 100644 index 0000000..814c446 --- /dev/null +++ b/shared/apu.s @@ -0,0 +1,8 @@ +.scope APU + m_square_1_envelope = $4000 + m_square_1_low = $4002 + m_square_1_high = $4003 + m_dmc = $4010 + m_status = $4015 + m_frame_counter = $4017 +.endscope diff --git a/shared/asm.s b/shared/asm.s index 67b195c..e67b7a6 100644 --- a/shared/asm.s +++ b/shared/asm.s @@ -20,3 +20,11 @@ .macro JAL ADDR jmp ADDR .endmacro + +;; The __fallthrough__ special statement allows developers to explicitly tell +;; the assembler that a "fall through" situation does not happen by mistake. +.ifndef __NASM__ + .macro __fallthrough__ arg + ;; NOTE: nothing to do :) + .endmacro +.endif diff --git a/shared/oam.s b/shared/oam.s new file mode 100644 index 0000000..ff23d64 --- /dev/null +++ b/shared/oam.s @@ -0,0 +1,11 @@ +.scope OAM + m_addr = $2003 + m_dma = $4014 +.endscope + +.macro OAM_WRITE_SPRITES + lda #$00 + sta OAM::m_addr + lda #$02 + sta OAM::m_dma +.endmacro diff --git a/shared/ppu.s b/shared/ppu.s index 42acb06..8b548e9 100644 --- a/shared/ppu.s +++ b/shared/ppu.s @@ -9,3 +9,12 @@ lda #value sta $2007 .endmacro + +.scope PPU + m_control = $2000 + m_mask = $2001 + m_status = $2002 + m_scroll = $2005 + m_address = $2006 + m_data = $2007 +.endscope -- cgit v1.2.3