-
Notifications
You must be signed in to change notification settings - Fork 0
/
P6112-options.i
165 lines (113 loc) · 5.92 KB
/
P6112-options.i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
P61mode =2 ;Try other modes ONLY IF there are no Fxx commands >= 20.
;(f.ex., P61.new_ditty only works with P61mode=1)
;; --- options common to all P61modes ---
usecode =$945A ;CHANGE! to the USE hexcode from P61con for a big
;CPU-time gain! (See module usecodes at end of source)
;Multiple songs, single playroutine? Just "OR" the
;usecodes together!
;...STOP! Have you changed it yet!? ;)
;You will LOSE RASTERTIME AND FEATURES if you don't.
P61pl=usecode&$400000
split4 =0 ;Great time gain, but INCOMPATIBLE with F03, F02, and F01
;speeds in the song! That's the ONLY reason it's default 0.
;So ==> PLEASE try split4=1 in ANY mode!
;Overrides splitchans to decrunch 1 chan/frame.
;See ;@@ note for P61_SetPosition.
splitchans=1 ;#channels to be split off to be decrunched at "playtime frame"
;0=use normal "decrunch all channels in the same frame"
;Experiment to find minimum rastertime, but it should be 1 or 2
;for 3-4 channels songs and 0 or 1 with less channels.
visuctrs=0 ;enables visualizers in this example: P61_visuctr0..3.w
;containing #frames (#lev6ints if cia=1) elapsed since last
;instrument triggered. (0=triggered this frame.)
;Easy alternative to E8x or 1Fx sync commands.
asmonereport =0 ;ONLY for printing a settings report on assembly. Use
;if you get problems (only works in AsmOne/AsmPro, tho)
p61system=1 ;1=system-friendly. Use for DOS/Workbench programs.
p61exec =0 ;0 if execbase is destroyed, such as in a trackmo.
p61fade =0 ;enable channel volume fading from your demo
channels=4 ;<4 for game sound effects in the higher channels. Incompatible
; with splitchans/split4.
playflag=0 ;1=enable music on/off capability (at run-time). .If 0, you can
;still do this by just, you know, not calling P61_Music...
;It's a convenience function to "pause" music in CIA mode.
p61bigjtab=0 ;1 to waste 480b and save max 56 cycles on 68000.
opt020 =0 ;1=enable optimizations for 020+. Please be 68000 compatible!
;splitchans will already give MUCH bigger gains, and you can
;try the MAXOPTI mode.
p61jump =0 ;0 to leave out P61_SetPosition (size gain)
;1 if you need to force-start at a given position fex in a game
C =0 ;If you happen to have some $dffxxx value in a6, you can
;change this to $xxx to not have to load it before P61_Music.
clraudxdat=0 ;enable smoother start of quiet sounds. probably not needed.
optjmp =1 ;0=safety check for jump beyond end of song. Clear it if you
;play unknown P61 songs with erroneous Bxx/Dxx commands in them
oscillo =0 ;1 to get a sample window (ptr, size) to read and display for
;oscilloscope type effects (beta, noshorts=1, pad instruments)
;IMPORTANT: see ;@@ note about chipmem dc.w buffer.
quietstart=0 ;attempt to avoid the very first click in some modules
;IMPORTANT: see ;@@ note about chipmem dc.w buffer.
use1Fx=0 ;Optional extra effect-sync trigger (*). If your module is free
;from E commands, and you add E8x to sync stuff, this will
;change the usecode to include a whole code block for all E
;commands. You can avoid this by only using 1Fx. (You can
;also use this as an extra sync command if E8x is not enough,
;of course.)
;(*) Slideup values>116 causes bugs in Protracker, and E8 causes extra-code
;for all E-commands, so I used this. It's only faster if your song contains 0
;E-commands, so it's only useful to a few, I guess. Bit of cyclemania. :)
;Just like E8x, you will get the trigger after the P61_Music call, 1 frame
;BEFORE it's heard. This is good, because it allows double-buffered graphics
;or effects running at < 50 fps to show the trigger synced properly.
;; --- CIA mode options (default) ---
ifeq P61mode-1
p61cia =1 ;call P61_Music on the CIA interrupt instead of every frame.
lev6 =1 ;1=keep the timer B int at least for setting DMA.
;0="FBI mode" - ie. "Free the B-timer Interrupt".
;0 requires noshorts=1, p61system=0, and that YOU make sure DMA
;is set at 11 scanlines (700 usecs) after P61_Music is called.
;AsmOne will warn you if requirements are wrong.
;DMA bits will be poked in the address you pass in A4 to
;P61_init. (Update P61_DMApokeAddr during playing if necessary,
;for example if switching Coppers.)
;P61_Init will still save old timer B settings, and initialize
;it. P61_End will still restore timer B settings from P61_Init.
;So don't count on it 'across calls' to these routines.
;Using it after P61_Init and before P61_End is fine.
noshorts=0 ;1 saves ~1 scanline, requires Lev6=0. Use if no instrument is
;shorter than ~300 bytes (or extend them to > 300 bytes).
;It does this by setting repeatpos/length the next frame
;instead of after a few scanlines,so incompatible with MAXOPTI
dupedec =0 ;0=save 500 bytes and lose 26 cycles - I don't blame you. :)
;1=splitchans or split4 must be on.
suppF01 =1 ;0 is incompatible with CIA mode. It moves ~100 cycles of
;next-pattern code to the less busy 2nd frame of a notestep.
;If you really need it, you have to experiment as the support
;is quite complex. Basically set it to 1 and try the various
;P61modes, if none work, change some settings.
endc
;; --- VBLANK mode options ---
ifeq P61mode-2
p61cia =0
lev6 =1 ;still set sound DMA with a simple interrupt.
noshorts=0 ;try 1 (and pad short instruments if nec) for 1 scanline gain
dupedec =0
suppF01 =P61pl ;if 1, split4=1 may cause sound errors. but try it anyway. :)
endc
;; --- COPPER mode options ---
ifeq P61mode-3
p61cia =0
lev6 =0 ;don't set sound DMA with an interrupt.
;(use the copper to set sound DMA 11 scanlines after P61_Music)
noshorts=1 ;You must pad instruments < 300 bytes for this mode to work.
dupedec =0
suppF01 =P61pl ;if 1, split4=1 may cause sound errors. but try it anyway. :)
endc
;; --- MAXOPTI mode options ---
ifeq P61mode-4
p61cia =0
lev6 =0
noshorts=1 ;You must pad instruments < 300 bytes for this mode to work.
dupedec =1
suppF01 =P61pl ;if 1, split4=1 may cause sound errors. but try it anyway. :)
endc