如何将 SID 文件包含到 C64 上的 cc65 程序中?
How to include a SID-File into a cc65 program on a C64?
我想在 cc65 程序中包含并播放 .sid 文件(C64 芯片音乐)。通常 sid 文件包含一个起价为 1000 美元的播放例程,我如何 link 将其添加到我的 cc65 程序中?
目前,我使用以下命令使用 cc65 编译我的代码:
cl65 -O -o C64test.prg -t c64 C64test.c
我找到了解决方案:
创建生成以下代码的 .asm 文件:
.export _setupAndStartPlayer
sid_init = 00
sid_play = 03
siddata = 00
.segment "CODE"
.proc _setupAndStartPlayer: near
lda #[=10=] ; select first tune
jsr sid_init ; init music
; now set the new interrupt pointer
sei
lda #<_interrupt ; point IRQ Vector to our custom irq routine
ldx #>_interrupt
sta 4 ; store in 4/5
stx 5
cli ; clear interrupt disable flag
rts
.endproc
.proc _interrupt
jsr sid_play
;dec 53280 ; flash border to see we are live
jmp $EA31 ; do the normal interrupt service routine
.endproc
从 C:
调用 asm 函数
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <c64.h>
extern int setupAndStartPlayer();
int main(void) {
printf("Setting up player\n");
setupAndStartPlayer();
return 0;
}
使用标准 cc65
Makefile
编译这两个文件,这会为您提供一个包含代码的 .c64
文件,但没有 SID 数据
使用 sidreloc
重新定位 SID 文件(选项 -p
定义新的起始页,在本例中 20
表示 $2000)
./sidreloc -r 10-1f -p 20 sidfile.sid sidfile2000.sid
将 SID 文件转换为 C64 .prg
使用 psid64
:
psid –n sidfile2000.sid
Link文件sidfile2000.prg
连同使用exomizer
编译的C程序(数字2061
是程序的起始地址, 2061 是 cc65
的默认值):
exomizer sfx 2061 music.c64 sidfile2000.prg -o final.prg
我想在 cc65 程序中包含并播放 .sid 文件(C64 芯片音乐)。通常 sid 文件包含一个起价为 1000 美元的播放例程,我如何 link 将其添加到我的 cc65 程序中? 目前,我使用以下命令使用 cc65 编译我的代码:
cl65 -O -o C64test.prg -t c64 C64test.c
我找到了解决方案:
创建生成以下代码的 .asm 文件:
.export _setupAndStartPlayer sid_init = 00 sid_play = 03 siddata = 00 .segment "CODE" .proc _setupAndStartPlayer: near lda #[=10=] ; select first tune jsr sid_init ; init music ; now set the new interrupt pointer sei lda #<_interrupt ; point IRQ Vector to our custom irq routine ldx #>_interrupt sta 4 ; store in 4/5 stx 5 cli ; clear interrupt disable flag rts .endproc .proc _interrupt jsr sid_play ;dec 53280 ; flash border to see we are live jmp $EA31 ; do the normal interrupt service routine .endproc
从 C:
调用 asm 函数#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <c64.h> extern int setupAndStartPlayer(); int main(void) { printf("Setting up player\n"); setupAndStartPlayer(); return 0; }
使用标准
cc65
Makefile
编译这两个文件,这会为您提供一个包含代码的.c64
文件,但没有 SID 数据使用
sidreloc
重新定位 SID 文件(选项-p
定义新的起始页,在本例中20
表示 $2000)./sidreloc -r 10-1f -p 20 sidfile.sid sidfile2000.sid
将 SID 文件转换为 C64
.prg
使用psid64
:psid –n sidfile2000.sid
Link文件
sidfile2000.prg
连同使用exomizer
编译的C程序(数字2061
是程序的起始地址, 2061 是cc65
的默认值):exomizer sfx 2061 music.c64 sidfile2000.prg -o final.prg