latest music version

This commit is contained in:
wbcbz7 2025-08-21 05:31:06 +07:00
parent 487c7d5b4c
commit 7f9e3b7396
29 changed files with 91 additions and 63 deletions

View file

@ -1,5 +1,5 @@
@echo off
bas2tap -a10 -spsgplay loader.bas loader.tap
bas2tap -a10 -smoebius loader.bas loader.tap
sjasmplus main.asm --lst=main.lst
copy /b loader.tap+player.tap+page0.tap+page1.tap+page3.tap+page4.tap+page6.tap+page7.tap+splash.tap "moebius.tap"
pause

View file

@ -220,22 +220,54 @@ vumeter:
; not so hidden text
db ".......................... hey there again!", 10, 13
db "another arson? another arson!", 10, 13
db "this time for the TurboSound FM! (2 x YM2203)", 10, 13
db 10, 13
db "player code - artemka", 10, 13
db "splash screen - rui8bit", 10, 13
db "music - Abstract 64, Alex Winston, Natt, nIk0, Pator and Rei8bit", 10, 13
db "support and tools - AArt1526", 10, 13
db 10, 13
db "released at Xenium 2o25", 10, 13
db 10, 13
db "greets to everyone pushing the limits and keeping the scene alive! (and whatever ;)", 10, 13
db "special thanks to CHRV for the TSFMPro board :)", 10, 13
db 10, 13
db 10, 13
db "come to Multimatograf 2026 - the party that cares about the demoscene - spring 2026 - events.retroscene.org", 10, 13
db "..........................", 10
db "hey there again!", 10
db "another arson? another arson!", 10
db "this time for the ZX Spectrum 128 + TurboSound FM! (2 x YM2203)", 10
db 10
db "player code - artemka", 10
db "splash screen - rui8bit", 10
db "music - Abstract 64, Alex Winston, Natt, nIk0, Pator and Rei8bit", 10
db "support and tools - AArt1526", 10
db 10
db "powered by Furnace Tracker =)", 10
db 10
db "released at Xenium 2o25", 10
db 10
db "greets to everyone pushing the limits and keeping the scene alive! (and whatever ;)", 10
db "special thanks to CHRV for the TSFMPro board :)", 10
db 10
db 10
db 10
db "oh yea, we broke all your emulators!", 10
db "unlike regular TS, the TSFM wasn't common at the speccy scene (its peak was when the device was", 10
db "released, that is, mid-late 2000s), and most of features like CSM were not explored much", 10
db "so, if you're going to fix your emulator, follow these rules: ", 10
db " - use a decent FM emulation core! ymfm and Nuked-OPN2 are the best ones", 10
db " - make sure you have implemented extended channel 3, SSG-EG and CSM timer functionality properly", 10
db " - failure to do so will result in detuned chords and broken vocal chops at the start", 10
db " - match the FM and AY/SSG mixing levels so single FM channel with square-like instrument at max volume", 10
db " has the same amplitude as the SSG channel at max volume", 10
db " (this seems to correspond to equal FM and SSG mixing levels in Chip Manager in Furnace)", 10
db "good luck! ;)", 10
db 10
db "--artemka 21.08.2025", 10
db 10
db 10
db 10
db 10
db 10
db "p.s. try this choon at 60 Hz VBlank rate - it sounds **wonderful** :D", 10
db 10
db 10
db 10
db 10
db 10
db 10
db "p.p.s. come to Multimatograf 2026 - the party that cares about the demoscene - spring 2026 - events.retroscene.org", 10
music_p0_ch3:
incbin "tsfm_2108_0500_optimized/tsfm_2108_0500_optimized_ch3.bin"
code_end
@ -245,9 +277,9 @@ code_end
emptytap "page0.tap"
org 0xC000
music_p0_ch12:
incbin "tsfm_2108_0045_optimized/tsfm_2108_0045_optimized_ch12.bin"
music_p0_ch10:
incbin "tsfm_2108_0045_optimized/tsfm_2108_0045_optimized_ch10.bin"
incbin "tsfm_2108_0500_optimized/tsfm_2108_0500_optimized_ch12.bin"
music_p0_ch0:
incbin "tsfm_2108_0500_optimized/tsfm_2108_0500_optimized_ch0.bin"
savetap "page0.tap",CODE,"page0",0xC000,$-0xC000
; ------------------------------------------------
@ -255,59 +287,55 @@ music_p0_ch10:
emptytap "page1.tap"
org 0xC000
music_p0_ch14:
incbin "tsfm_2108_0045_optimized/tsfm_2108_0045_optimized_ch14.bin"
music_p0_ch2:
incbin "tsfm_2108_0045_optimized/tsfm_2108_0045_optimized_ch2.bin"
incbin "tsfm_2108_0500_optimized/tsfm_2108_0500_optimized_ch14.bin"
music_p0_ch7:
incbin "tsfm_2108_0500_optimized/tsfm_2108_0500_optimized_ch7.bin"
music_p0_ch15:
incbin "tsfm_2108_0500_optimized/tsfm_2108_0500_optimized_ch15.bin"
savetap "page1.tap",CODE,"page1",0xC000,$-0xC000
; ------------------------------------------------
page 3
emptytap "page3.tap"
org 0xC000
music_p0_ch11:
incbin "tsfm_2108_0045_optimized/tsfm_2108_0045_optimized_ch11.bin"
music_p0_ch8:
incbin "tsfm_2108_0045_optimized/tsfm_2108_0045_optimized_ch8.bin"
music_p0_ch10:
incbin "tsfm_2108_0500_optimized/tsfm_2108_0500_optimized_ch10.bin"
music_p0_ch1:
incbin "tsfm_2108_0045_optimized/tsfm_2108_0045_optimized_ch1.bin"
music_p0_ch6:
incbin "tsfm_2108_0045_optimized/tsfm_2108_0045_optimized_ch6.bin"
incbin "tsfm_2108_0500_optimized/tsfm_2108_0500_optimized_ch1.bin"
savetap "page3.tap",CODE,"page3",0xC000,$-0xC000
; ------------------------------------------------
page 4
emptytap "page4.tap"
org 0xC000
music_p0_ch9:
incbin "tsfm_2108_0045_optimized/tsfm_2108_0045_optimized_ch9.bin"
music_p0_ch4:
incbin "tsfm_2108_0045_optimized/tsfm_2108_0045_optimized_ch4.bin"
music_p0_ch13:
incbin "tsfm_2108_0045_optimized/tsfm_2108_0045_optimized_ch13.bin"
music_p0_ch15:
incbin "tsfm_2108_0045_optimized/tsfm_2108_0045_optimized_ch15.bin"
music_p0_ch5:
incbin "tsfm_2108_0045_optimized/tsfm_2108_0045_optimized_ch5.bin"
music_p0_ch7:
incbin "tsfm_2108_0045_optimized/tsfm_2108_0045_optimized_ch7.bin"
music_p0_ch0:
incbin "tsfm_2108_0045_optimized/tsfm_2108_0045_optimized_ch0.bin"
music_p0_ch3:
incbin "tsfm_2108_0045_optimized/tsfm_2108_0045_optimized_ch3.bin"
music_p0_ch2:
incbin "tsfm_2108_0500_optimized/tsfm_2108_0500_optimized_ch2.bin"
music_p0_ch8:
incbin "tsfm_2108_0500_optimized/tsfm_2108_0500_optimized_ch8.bin"
savetap "page4.tap",CODE,"page4",0xC000,$-0xC000
; ------------------------------------------------
page 6
emptytap "page6.tap"
org 0xC000
db 0
music_p0_ch11:
incbin "tsfm_2108_0500_optimized/tsfm_2108_0500_optimized_ch11.bin"
music_p0_ch13:
incbin "tsfm_2108_0500_optimized/tsfm_2108_0500_optimized_ch13.bin"
music_p0_ch5:
incbin "tsfm_2108_0500_optimized/tsfm_2108_0500_optimized_ch5.bin"
savetap "page6.tap",CODE,"page6",0xC000,$-0xC000
; ------------------------------------------------
page 7
emptytap "page7.tap"
org 0xC000
db 0
music_p0_ch4:
incbin "tsfm_2108_0500_optimized/tsfm_2108_0500_optimized_ch4.bin"
music_p0_ch6:
incbin "tsfm_2108_0500_optimized/tsfm_2108_0500_optimized_ch6.bin"
music_p0_ch9:
incbin "tsfm_2108_0500_optimized/tsfm_2108_0500_optimized_ch9.bin"
savetap "page7.tap",CODE,"page7",0xC000,$-0xC000
; splash screen

View file

@ -43,22 +43,22 @@ ssg_r7 block 2, 0
; instantinate structures
align 256
player_channels:
channel_struct_t 4, music_p0_ch0 ; TODO: fill start offsets here
channel_struct_t 0, music_p0_ch0 ; TODO: fill start offsets here
channel_struct_t 3, music_p0_ch1
channel_struct_t 1, music_p0_ch2
channel_struct_t 4, music_p0_ch3
channel_struct_t 4, music_p0_ch4
channel_struct_t 4, music_p0_ch5
channel_struct_t 3, music_p0_ch6
channel_struct_t 4, music_p0_ch7
channel_struct_t 3, music_p0_ch8
channel_struct_t 4, music_p0_ch9
channel_struct_t 0, music_p0_ch10
channel_struct_t 3, music_p0_ch11
channel_struct_t 4, music_p0_ch2
channel_struct_t 0, music_p0_ch3
channel_struct_t 7, music_p0_ch4
channel_struct_t 6, music_p0_ch5
channel_struct_t 7, music_p0_ch6
channel_struct_t 1, music_p0_ch7
channel_struct_t 4, music_p0_ch8
channel_struct_t 7, music_p0_ch9
channel_struct_t 3, music_p0_ch10
channel_struct_t 6, music_p0_ch11
channel_struct_t 0, music_p0_ch12
channel_struct_t 4, music_p0_ch13
channel_struct_t 6, music_p0_ch13
channel_struct_t 1, music_p0_ch14
channel_struct_t 4, music_p0_ch15
channel_struct_t 1, music_p0_ch15
player_struct player_struct_t player_channels+(channel_struct_t*(3+0)+channel_struct_t.reg_extch3_fhi), player_channels+(channel_struct_t*(3+8)+channel_struct_t.reg_extch3_fhi)

View file

@ -3,7 +3,7 @@
define MUSIC_INC
TICK_RATE equ 50
TOTAL_FRAMES equ 8091
TOTAL_FRAMES equ 12455
TOTAL_CHANNELS equ 16
FILEPATH equ "tsfm_2108_0045_optimized/tsfm_2108_0045_optimized"
FILEPATH equ "tsfm_2108_0500_optimized/tsfm_2108_0500_optimized"
endif