Dark | Light
[GUEST ACCESS MODE: Data is scrambled or limited to provide examples. Make requests using your API key to unlock full data. Check https://lunarcrush.ai/auth for authentication information.]

![ziggiereviews Avatar](https://lunarcrush.com/gi/w:24/cr:twitter::1921007518261628928.png) Ziggie Reviews [@ziggiereviews](/creator/twitter/ziggiereviews) on x XX followers
Created: 2025-07-18 12:31:19 UTC

Seeing that Doom demo, I miss the demo scene.

Think for fun, I'm going to code #Illuvium game on the #C64, if I can find my super snapshot cartridge, lol...

SID_BASE    = $D400 SID_FREQ1   = SID_BASE + $XX    ; Voice X Frequency (low byte) SID_FREQ1H  = SID_BASE + $XX    ; Voice X Frequency (high byte) SID_PW1     = SID_BASE + $XX    ; Voice X Pulse Width (low byte) SID_PW1H    = SID_BASE + $XX    ; Voice X Pulse Width (high byte) SID_CTRL1   = SID_BASE + $XX    ; Voice X Control Register SID_AD1     = SID_BASE + $XX    ; Voice X Attack/Decay SID_SR1     = SID_BASE + $XX    ; Voice X Sustain/Release  SID_FREQ2   = SID_BASE + $XX    ; Voice X Frequency (low byte) SID_FREQ2H  = SID_BASE + $XX    ; Voice X Frequency (high byte) SID_CTRL2   = SID_BASE + $0B    ; Voice X Control Register SID_AD2     = SID_BASE + $0C    ; Voice X Attack/Decay SID_SR2     = SID_BASE + $0D    ; Voice X Sustain/Release  SID_VOLUME  = SID_BASE + $XX    ; Filter/Volume Control  ; Memory locations TEMPO       = $XX NOTE_PTR    = $XX HARMONY_PTR = $XX  ; Initialize SID chip INIT_SID:     LDA #$00     STA SID_CTRL1       ; Turn off voice X     STA SID_CTRL2       ; Turn off voice X      LDA #$0F            ; Set volume to maximum     STA SID_VOLUME      ; Set up voice X (melody)     LDA #$33            ; Attack=3, Decay=3 (gentle)     STA SID_AD1     LDA #$A0            ; Sustain=10, Release=0     STA SID_SR1      ; Set up voice X (harmony)     LDA #$44            ; Attack=4, Decay=4 (softer)     STA SID_AD2     LDA #$80            ; Sustain=8, Release=0     STA SID_SR2      ; Set pulse width for both voices     LDA #$00     STA SID_PW1     STA SID_PW1H      ; Initialize pointers     LDA #<MELODY_DATA     STA NOTE_PTR     LDA #>MELODY_DATA     STA NOTE_PTR+1      LDA #<HARMONY_DATA     STA HARMONY_PTR     LDA #>HARMONY_DATA     STA HARMONY_PTR+1      LDA #$06            ; Set initial tempo     STA TEMPO      RTS  ; Main play routine PLAY_MUSIC:     JSR GET_NEXT_NOTE     CMP #$FF            ; Check for end marker     BEQ MUSIC_END      JSR PLAY_NOTE     JSR DELAY     JMP PLAY_MUSIC  MUSIC_END:     ; Turn off voices     LDA #$00     STA SID_CTRL1     STA SID_CTRL2     RTS  ; Get next note from melody data GET_NEXT_NOTE:     LDY #$00     LDA (NOTE_PTR),Y      ; Advance pointer     INC NOTE_PTR     BNE NO_CARRY     INC NOTE_PTR+1 NO_CARRY:     RTS  ; Play the current note PLAY_NOTE:     TAX                 ; Save note in X      ; Play melody note (Voice 1)     LDA FREQ_TABLE_LO,X     STA SID_FREQ1     LDA FREQ_TABLE_HI,X     STA SID_FREQ1H      ; Get harmony note     LDY #$00     LDA (HARMONY_PTR),Y     TAX      ; Play harmony note (Voice 2)     LDA FREQ_TABLE_LO,X     STA SID_FREQ2     LDA FREQ_TABLE_HI,X     STA SID_FREQ2H      ; Advance harmony pointer     INC HARMONY_PTR     BNE NO_CARRY2     INC HARMONY_PTR+1 NO_CARRY2:      ; Turn on voices with triangle wave     LDA #$11            ; Gate + Triangle wave     STA SID_CTRL1     STA SID_CTRL2      RTS  ; Simple delay routine DELAY:     LDX TEMPO DELAY_LOOP:     LDY #$FF DELAY_INNER:     DEY     BNE DELAY_INNER     DEX     BNE DELAY_LOOP     RTS  ; Frequency table for musical notes (PAL values) ; Note indices: 0=C, 1=C#, 2=D, 3=D#, 4=E, 5=F, 6=F#, 7=G, 8=G#, 9=A, 10=A#, 11=B FREQ_TABLE_LO:     .BYTE $17, $27, $39, $4B, $5F, $74, $8A, $A1, $BA, $D4, $F0, $0E  ; Octave X     .BYTE $2E, $4F, $73, $97, $BE, $E8, $14, $43, $75, $A9, $E0, $1C  ; Octave X     .BYTE $5C, $9F, $E6, $2F, $7C, $D0, $28, $86, $EA, $53, $C1, $XX  ; Octave X  FREQ_TABLE_HI:     .BYTE $04, $04, $04, $04, $04, $04, $04, $04, $04, $04, $04, $XX  ; Octave X     .BYTE $05, $05, $05, $05, $05, $05, $06, $06, $06, $06, $06, $XX  ; Octave X     .BYTE $07, $07, $07, $08, $08, $08, $09, $09, $09, $0A, $0A, $0B  ; Octave X  ; Original whimsical melody data (note indices) ; This creates a dreamy, floating melody in the style of the original MELODY_DATA:     .BYTE 12, 16, 19, 16, 14, 12, 16, XX  ; Opening phrase     .BYTE 21, 19, 16, 14, 12, 9, 12, XX   ; Response phrase     .BYTE 16, 19, 21, 23, 21, 19, 16, XX  ; Building phrase     .BYTE 12, 14, 16, 19, 16, 14, 12, X   ; Closing phrase     .BYTE $FF                              ; End marker  ; Harmony data (simpler accompanying notes) HARMONY_DATA:     .BYTE 0, 4, 7, 4, 2, 0, 4, X          ; Root harmony     .BYTE 9, 7, 4, 2, 0, 5, 0, X          ; Supporting harmony     .BYTE 4, 7, 9, 11, 9, 7, 4, X         ; Building harmony     .BYTE 0, 2, 4, 7, 4, 2, 0, X          ; Closing harmony     .BYTE $FF                              ; End marker  ; Program entry point START:     JSR INIT_SID     JSR PLAY_MUSIC     RTS


XX engagements

![Engagements Line Chart](https://lunarcrush.com/gi/w:600/p:tweet::1946186018584945117/c:line.svg)

**Related Topics**
[$d400](/topic/$d400)
[00 token](/topic/00-token)
[coins socialfi](/topic/coins-socialfi)

[Post Link](https://x.com/ziggiereviews/status/1946186018584945117)

[GUEST ACCESS MODE: Data is scrambled or limited to provide examples. Make requests using your API key to unlock full data. Check https://lunarcrush.ai/auth for authentication information.]

ziggiereviews Avatar Ziggie Reviews @ziggiereviews on x XX followers Created: 2025-07-18 12:31:19 UTC

Seeing that Doom demo, I miss the demo scene.

Think for fun, I'm going to code #Illuvium game on the #C64, if I can find my super snapshot cartridge, lol...

SID_BASE = $D400 SID_FREQ1 = SID_BASE + $XX ; Voice X Frequency (low byte) SID_FREQ1H = SID_BASE + $XX ; Voice X Frequency (high byte) SID_PW1 = SID_BASE + $XX ; Voice X Pulse Width (low byte) SID_PW1H = SID_BASE + $XX ; Voice X Pulse Width (high byte) SID_CTRL1 = SID_BASE + $XX ; Voice X Control Register SID_AD1 = SID_BASE + $XX ; Voice X Attack/Decay SID_SR1 = SID_BASE + $XX ; Voice X Sustain/Release SID_FREQ2 = SID_BASE + $XX ; Voice X Frequency (low byte) SID_FREQ2H = SID_BASE + $XX ; Voice X Frequency (high byte) SID_CTRL2 = SID_BASE + $0B ; Voice X Control Register SID_AD2 = SID_BASE + $0C ; Voice X Attack/Decay SID_SR2 = SID_BASE + $0D ; Voice X Sustain/Release SID_VOLUME = SID_BASE + $XX ; Filter/Volume Control ; Memory locations TEMPO = $XX NOTE_PTR = $XX HARMONY_PTR = $XX ; Initialize SID chip INIT_SID: LDA #$00 STA SID_CTRL1 ; Turn off voice X STA SID_CTRL2 ; Turn off voice X LDA #$0F ; Set volume to maximum STA SID_VOLUME ; Set up voice X (melody) LDA #$33 ; Attack=3, Decay=3 (gentle) STA SID_AD1 LDA #$A0 ; Sustain=10, Release=0 STA SID_SR1 ; Set up voice X (harmony) LDA #$44 ; Attack=4, Decay=4 (softer) STA SID_AD2 LDA #$80 ; Sustain=8, Release=0 STA SID_SR2 ; Set pulse width for both voices LDA #$00 STA SID_PW1 STA SID_PW1H ; Initialize pointers LDA #<MELODY_DATA STA NOTE_PTR LDA #>MELODY_DATA STA NOTE_PTR+1 LDA #<HARMONY_DATA STA HARMONY_PTR LDA #>HARMONY_DATA STA HARMONY_PTR+1 LDA #$06 ; Set initial tempo STA TEMPO RTS ; Main play routine PLAY_MUSIC: JSR GET_NEXT_NOTE CMP #$FF ; Check for end marker BEQ MUSIC_END JSR PLAY_NOTE JSR DELAY JMP PLAY_MUSIC MUSIC_END: ; Turn off voices LDA #$00 STA SID_CTRL1 STA SID_CTRL2 RTS ; Get next note from melody data GET_NEXT_NOTE: LDY #$00 LDA (NOTE_PTR),Y ; Advance pointer INC NOTE_PTR BNE NO_CARRY INC NOTE_PTR+1 NO_CARRY: RTS ; Play the current note PLAY_NOTE: TAX ; Save note in X ; Play melody note (Voice 1) LDA FREQ_TABLE_LO,X STA SID_FREQ1 LDA FREQ_TABLE_HI,X STA SID_FREQ1H ; Get harmony note LDY #$00 LDA (HARMONY_PTR),Y TAX ; Play harmony note (Voice 2) LDA FREQ_TABLE_LO,X STA SID_FREQ2 LDA FREQ_TABLE_HI,X STA SID_FREQ2H ; Advance harmony pointer INC HARMONY_PTR BNE NO_CARRY2 INC HARMONY_PTR+1 NO_CARRY2: ; Turn on voices with triangle wave LDA #$11 ; Gate + Triangle wave STA SID_CTRL1 STA SID_CTRL2 RTS ; Simple delay routine DELAY: LDX TEMPO DELAY_LOOP: LDY #$FF DELAY_INNER: DEY BNE DELAY_INNER DEX BNE DELAY_LOOP RTS ; Frequency table for musical notes (PAL values) ; Note indices: 0=C, 1=C#, 2=D, 3=D#, 4=E, 5=F, 6=F#, 7=G, 8=G#, 9=A, 10=A#, 11=B FREQ_TABLE_LO: .BYTE $17, $27, $39, $4B, $5F, $74, $8A, $A1, $BA, $D4, $F0, $0E ; Octave X .BYTE $2E, $4F, $73, $97, $BE, $E8, $14, $43, $75, $A9, $E0, $1C ; Octave X .BYTE $5C, $9F, $E6, $2F, $7C, $D0, $28, $86, $EA, $53, $C1, $XX ; Octave X FREQ_TABLE_HI: .BYTE $04, $04, $04, $04, $04, $04, $04, $04, $04, $04, $04, $XX ; Octave X .BYTE $05, $05, $05, $05, $05, $05, $06, $06, $06, $06, $06, $XX ; Octave X .BYTE $07, $07, $07, $08, $08, $08, $09, $09, $09, $0A, $0A, $0B ; Octave X ; Original whimsical melody data (note indices) ; This creates a dreamy, floating melody in the style of the original MELODY_DATA: .BYTE 12, 16, 19, 16, 14, 12, 16, XX ; Opening phrase .BYTE 21, 19, 16, 14, 12, 9, 12, XX ; Response phrase .BYTE 16, 19, 21, 23, 21, 19, 16, XX ; Building phrase .BYTE 12, 14, 16, 19, 16, 14, 12, X ; Closing phrase .BYTE $FF ; End marker ; Harmony data (simpler accompanying notes) HARMONY_DATA: .BYTE 0, 4, 7, 4, 2, 0, 4, X ; Root harmony .BYTE 9, 7, 4, 2, 0, 5, 0, X ; Supporting harmony .BYTE 4, 7, 9, 11, 9, 7, 4, X ; Building harmony .BYTE 0, 2, 4, 7, 4, 2, 0, X ; Closing harmony .BYTE $FF ; End marker ; Program entry point START: JSR INIT_SID JSR PLAY_MUSIC RTS

XX engagements

Engagements Line Chart

Related Topics $d400 00 token coins socialfi

Post Link

post/tweet::1946186018584945117
/post/tweet::1946186018584945117