[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.]  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  **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.]
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
Related Topics $d400 00 token coins socialfi
/post/tweet::1946186018584945117