ben@epmooch.UUCP (Rev. Ben A. Mesander) (04/03/91)
I'm frustrated by SoundTracker/NoiseTracker module players that are buggy
and refuse to play at the right speed on NTSC machines. Although I'm a
rank beginner at 68000 assembler, it seems from the following fragment
of a module player that the timebase is coming from the vertical blank
interrupt:
section "play",CODE
include "exec/types.i"
include "libraries/dos.i"
include "streplay_lib.i"
xdef mt_start
xdef mt_brems
^^^^^------- Is this "end" or something in German?
call MACRO
xref _LVO\1
jsr _LVO\1(a6)
ENDM
even
mt_start:
movem.l d2-d7/a2-a6,-(sp)
bsr mt_init
move.l 4,a6
^---------- AbsExecBase?
lea intnode(pc),a1
moveq #5,d0
^^--------- I think this is INTB_VERTB
call AddIntServer
movem.l (sp)+,d2-d7/a2-a6
rts
mt_brems:
movem.l d2-d7/a2-a6,-(sp)
lea intnode(pc),a1
moveq #5,d0
^^--------- I think this is INTB_VERTB
move.l 4,a6
^---------- AbsExecBase?
call RemIntServer
bsr mt_end
movem.l (sp)+,d2-d7/a2-a6
rts
intnode:
dc.l 0,0
dc.b 2,0
dc.l intname,0,mt_call
intname:
dc.b "STReplay_Lib Interrupt",0
even
mt_init:
[rest of source deleted]
I assume the speed problem is the 50Hz/PAL vs. 60Hz/NTSC thing. So I
would guess that the thing to do to fix this code (besides replacing
manifest constants with symbols :-) would be to change it to derive a
50Hz timebase from a CIA timer. Would this be INTB_PORTS? How do I tell
the CIA that I want to be interrupted at 50Hz?
Thanks in advance...
--
| ben@epmooch.UUCP (Ben Mesander) | "Cash is more important than |
| ben%servalan.UUCP@uokmax.ecn.uoknor.edu | your mother." - Al Shugart, |
| !chinet!uokmax!servalan!epmooch!ben | CEO, Seagate Technologies |peterk@cbmger.UUCP (Peter Kittel GERMANY) (04/04/91)
In article <ben.5586@epmooch.UUCP> ben@epmooch.UUCP (Rev. Ben A. Mesander) writes: > > xdef mt_brems > ^^^^^------- Is this "end" or something in German? No, "bremsen" means "to break", "get slower". In a program, I would guess for a wait routine. But this doesn't look like a wait routine, when calling RemoveInterruptServ: >mt_brems: > movem.l d2-d7/a2-a6,-(sp) > lea intnode(pc),a1 > moveq #5,d0 > ^^--------- I think this is INTB_VERTB > move.l 4,a6 > ^---------- AbsExecBase? > call RemIntServer > bsr mt_end > movem.l (sp)+,d2-d7/a2-a6 > rts -- Best regards, Dr. Peter Kittel // E-Mail to \\ Only my personal opinions... Commodore Frankfurt, Germany \X/ {uunet|pyramid|rutgers}!cbmvax!cbmger!peterk