Как включить SID-файл в программу cc65 на C64?
Я хочу включить и воспроизвести файлы.sid (музыку для микросхем C64) в программе cc65. Обычно sid-файлы содержат подпрограмму воспроизведения, которая начинается с 1000 долларов, как мне связать это с моей программой cc65? На данный момент я компилирую свой код с помощью cc65 с помощью этой команды:
cl65 -O -o C64test.prg -t c64 C64test.c
1 ответ
Я нашел решение:
Создайте файл.asm, который генерирует следующий код:
.export _setupAndStartPlayer sid_init = $2000 sid_play = $2003 siddata = $2000 .segment "CODE" .proc _setupAndStartPlayer: near 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 $314 ; store in $314/$315 stx $315 cli ; clear interrupt disable flag rts .endproc .proc _interrupt jsr sid_play dec 53280 ; flash border to see we live jmp $EA31 ; do the normal interrupt service routine .endproc
Вызовите функцию asm из C:
#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Переместите файл SID, используя
sidreloc
(опция-p
определяет новую стартовую страницу, в этом случае20
означает 2000 долларов США)./sidreloc -r 10-1f -p 20 sidfile.sid sidfile2000.sid
Конвертировать файл SID в C64
.prg
с помощьюpsid64
:psid –n sidfile2000.sid
Ссылка на файл
sidfile2000.prg
вместе с скомпилированной программой на Cexomizer
(число2061
это начальный адрес программы, по умолчанию 2061cc65
):exomizer sfx 2061 music.c64 sidfile2000.prg -o final.prg