So I thought I should post a little preview about it. This SMPS player is losely based on my bugfix of JoseTB's SMPS ROM that did nothing other than play a SMPS music. After some hard work that took roughly about 4 months to complete, I finally have a SMPS player with visuals, like I always wanted it before * Logo on top * Current note & Instrument on all channels * Ability to give names to songs * Fully compatible with real hardware TODO: * Loader that figures out whether FM6 = PCM/FM6, PSG3 = NOISE/PSG3 * Gradient on the VU meter * Much more to come (Intro, Changing top logo with UP/DOWN buttons, pallette shifting for demo-like effects on font etc.) Preview ROM: http://oerg866.tototek.com/evoke3.bin Comments and criticism and feature requests are welcome.
Coordination flag $F3 determines that, so I hope you can switch from tone to noise at will! Seriously, read this.
Well, I cannot read coordination flags because all I have to read is a small memory area. However, I might have a solution: If the channel is noise, then the note value is always $0000. The FM channel thing though, that's quite 'lot more complicated.
Then you should probably go and modify SMPS to do what your player needs to do. It's not that hard once you knowwhere everything is. Are you using SMPS Z80 or SMPS 68k?
Then it's easy: just find where the effects are handled, set a flag in RAM, then clear it when a new song is played.
Looks clean and to the point. I happily await for proper channel naming and a source release. I will say that Fraggle sounds nice, too. :P
Or even easier, check the location $FFF1F1. If the value is $E0, you have the NOISE. Whatever else (I think it's $C0), it's the PSG 3. Aditionally, the bit 7 at $FFF040 controlls if the DAC channel is activated or not. The same bit at $FFF160 do the same function for the FM6. Understandable?
Looks very cool. Does it work by adding the music tracks at the end of the ROM, or something like that?
well. it works using standard includes and a few extra data you have to specify (Song name etc). Right now I'm trying to eliminate a bug that makes the pcm-driver not work right for samples over $87 for some reason.
The Z80 driver in Sonic 1 resamples the existing timpani sample if the number is above $87. This is done using special entries in the DAC table. For what it's worth you probably shouldn't be modifying the Sonic 1 DAC driver if you want something truly general purpose. Use jman2050's driver or write a new DAC driver instead.
Wrong. The "special cases" are handled by the M68K, specifically by the routine loc_71CAC. It looks something like this: Code (ASM): btst #3,d0 ; it's a special timpani? bne.s loc_71CAC ; if yes, branch... move.b d0,($A01FFF).l ; writes the sample's number into the Z80 RAM locret_71CAA: rts ; leave... ; =========================================================================== loc_71CAC: subi.b #$88,d0 ; adjusts to the correct number move.b Timpani_Pitches(pc,d0.w),d0 ; loads the modified pitch for the timpani move.b d0,($A000EA).l ; modifies the pitch move.b #$83,($A01FFF).l ; plays the normal timpani rts ; leave... ; End of function Sound_PlayDAC ; =========================================================================== Timpani_Pitches: dc.b $12, $15, $1C, $1D, $FF, $FF In other words, the engine just modifies the current pitch asociated to the (unique) timpani entry in the DAC table in the Z80 code. You only need to cut off the lines above to erase that restriction...
Well, you're in luck. Code (Text): PCM_Table: pcm_table_entry a81,a81_end,$2; Sample 81 pcm_table_entry a82,a82_end,$2; Sample 82 pcm_table_entry a83,a83_end,$2; Sample 83 pcm_table_entry a84,a84_end,$2 ; sample 84 pcm_table_entry xguard1,xguard1_end,$9; Sample 85, XGUARD SNARE1 pcm_table_entry xguard2,xguard2_end,$9; Sample 86, XGUARD SNARE2 pcm_table_entry xguard3,xguard3_end,$9; Sample 87, XGUARD HAT1 pcm_table_entry xguard4,xguard4_end,$9; Sample 88, XGUARD HAT2 pcm_table_entry xguard5,xguard5_end,$9; Sample 89, XGUARD HAT3 pcm_table_entry xguard6,xguard6_end,$9; Sample 8a, XGUARD HAT4 pcm_table_entry hc1, hc1_end, $2; 8b pcm_table_entry hc2, hc2_end, $2; 8b pcm_table_entry hc3, hc3_end, $2; 8b pcm_table_entry hc4, hc4_end, $2; 8b
New idea: make programs that'll create a custom ROM using the sound player given file names like dac81.bin, song81.bin, etc.
http://pixelbanane.de/yafu/2441081305/BUILT.bin New preview and some added things like scroller and palette effect
New build! Actually done some real progress: A song can switch PCM/FM6 and PSG/Noise without any problems on the fly!. http://oerg866.tototek.com/PCMPSG_Recognition_Build.bin