-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathbank6.inc
8465 lines (8385 loc) · 124 KB
/
bank6.inc
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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
ORG $8000
BANK_START $06
SECTION_START 0D
; =============== S U B R O U T I N E =======================================
_apu_play:
LDA _apu_load_idx
BMI loc_98007
JSR _apu_load
loc_98007:
LDY #$06
LDX _apu_mus_mute_flag
BEQ loc_98011
LDY #$02
LDX #$04
loc_98011:
STX _apu_tmpF7
loc_98013:
TYA
PHA
LDX _apu_tmpF7
LDA _apu_active_chnls_flags
AND _apu_set_bitmasks,X
BEQ loc_98027
JSR _apu_playA
JSR _apu_playB
JSR _apu_playC
loc_98027:
INC _apu_tmpF7
PLA
TAY
DEY
BNE loc_98013
JSR _apu_play_fade_out
JSR _apu_playE
LDA _apu_active_chnls_flags
ORA _apu_chnl_flags
STA _apu_active_chnls_flags
LDA #$00
STA _apu_chnl_flags
RTS
; =============== S U B R O U T I N E =======================================
_apu_playC:
LDY _apu_varsD,X
BMI loc_98062
LDA _apu_vars9,X
BNE loc_98092
TYA
ASL
TAY
LDA off_992B6,Y
STA _apu_cur_pc
LDA off_992B6+1,Y
STA _apu_cur_pc+1
LDY _apu_varsA,X
loc_98059:
LDA (_apu_cur_pc),Y
INY
CMP #$FE
BEQ loc_98070
BCC loc_9807F
loc_98062:
LDA #$00
STA _apu_vars8,X
LDA _apu_varsD,X
ORA #$80
STA _apu_varsD,X
RTS
loc_98070:
LDA (_apu_cur_pc),Y
STA _apu_vars13,X
INY
LDA (_apu_cur_pc),Y
STA _apu_vars8,X
INY
JMP loc_98059
loc_9807F:
STA _apu_vars9,X
LDA (_apu_cur_pc),Y
STA _apu_vars14,X
INY
LDA (_apu_cur_pc),Y
STA _apu_vars15,X
INY
TYA
STA _apu_varsA,X
loc_98092:
CLC
LDA _apu_vars13,X
ADC _apu_vars14,X
STA _apu_vars13,X
LDA _apu_vars8,X
ADC _apu_vars15,X
STA _apu_vars8,X
DEC _apu_vars9,X
RTS
; =============== S U B R O U T I N E =======================================
_apu_playE:
LDA _apu_mus_mute_flag
BNE loc_980BE
LDX #$00
loc_980AF:
LDA _apu_active_chnls_flags
AND byte_980D0,X
BNE loc_980B9
JSR _apu_playE_A
loc_980B9:
INX
CPX #$04
BCC loc_980AF
loc_980BE:
LDX #$04
loc_980C0:
LDA _apu_active_chnls_flags
AND _apu_set_bitmasks,X
BEQ loc_980CA
JSR _apu_playE_A
loc_980CA:
INX
CPX #$06
BCC loc_980C0
RTS
byte_980D0:
.BYTE $00,$10,$00,$20
; =============== S U B R O U T I N E =======================================
_apu_playE_A:
TXA
ASL
TAY
LDA off_980E5,Y
STA _apu_tmpF2
LDA off_980E5+1,Y
STA _apu_tmpF3
JMP (_apu_tmpF2)
off_980E5:
.WORD _apu_playE_A_sub0
.WORD _apu_playE_A_sub1
.WORD _apu_playE_A_sub2
.WORD _apu_playE_A_sub3
.WORD _apu_playE_A_sub4
.WORD _apu_playE_A_sub5
; =============== S U B R O U T I N E =======================================
_apu_playE_A_sub0:
LDY #$00
JSR _apu_playE_A_sub0_A
JMP _apu_playE_A_sub0_B
; =============== S U B R O U T I N E =======================================
_apu_playE_A_sub1:
LDA _apu_var12
BEQ _apu_playE_A_sub4
JMP _apu_playE_A_sub1_A
; =============== S U B R O U T I N E =======================================
_apu_playE_A_sub4:
LDY #$04
JSR _apu_playE_A_sub0_A
JMP _apu_playE_A_sub0_B
; =============== S U B R O U T I N E =======================================
_apu_playE_A_sub2:
LDY #$08
JSR _apu_playE_A_sub0_A
JMP _apu_playE_A_sub0_B
; =============== S U B R O U T I N E =======================================
_apu_playE_A_sub3:
LDA _apu_var13
BNE _apu_playE_A_sub5
RTS
; =============== S U B R O U T I N E =======================================
_apu_playE_A_sub5:
LDY #$0C
JSR _apu_playE_A_sub0_A
JMP _apu_playE_A_sub0_B
; =============== S U B R O U T I N E =======================================
_apu_playE_A_sub0_A:
LDA _apu_vars8,X
LSR
LSR
LSR
LSR
SEC
SBC _apu_vars1,X
BCC loc_9813F
SEC
SBC _apu_fade_value
BCS loc_98141
loc_9813F:
LDA #$00
loc_98141:
CPY #$08
BNE loc_9814B
ASL
ASL
ORA #$80
BNE loc_98150
loc_9814B:
ORA _apu_vars12,X
ORA #$30
loc_98150:
STA _APU_PULSE1_ENV,Y
RTS
; =============== S U B R O U T I N E =======================================
_apu_playE_A_sub0_B:
LDA _apu_varsE,X
ORA _apu_varsB,X
BEQ loc_98167
LDA _apu_varsC,X
STA _APU_PULSE1_SWEEP,Y
LDA #$00
STA _apu_varsB,X
loc_98167:
LDA _apu_varsE,X
BNE loc_9816D
RTS
loc_9816D:
LDA #$00
STA _apu_varsE,X
TYA
PHA
LDA _apu_vars6,X
STA _apu_tmpF2
LDA _apu_vars7,X
STA _apu_tmpF3
PLA
TAY
LSR _apu_tmpF3
ROR _apu_tmpF2
LDA _apu_tmpF2
STA _APU_PULSE1_TIME,Y
LDA _apu_tmpF3
AND #$07
ORA #$F8
STA _APU_PULSE1_LEN,Y
RTS
; =============== S U B R O U T I N E =======================================
_apu_playE_A_sub1_A:
LDA _apu_vars8+3
LSR
LSR
LSR
LSR
SEC
SBC _apu_vars1+3
BCC loc_981A5
SEC
SBC _apu_fade_value
BCS loc_981A7
loc_981A5:
LDA #$00
loc_981A7:
ORA _apu_vars12+3
ORA #$10
STA _APU_PULSE2_ENV
LDA _apu_var11
LSR
TAY
LDA _apu_var10
ROR
STA _APU_PULSE2_TIME
TYA
ORA #$F8
STA _APU_PULSE2_LEN
RTS
; =============== S U B R O U T I N E =======================================
_apu_play_fade_out:
LDA _apu_mus_mute_flag
BNE locret_981E4
LDA _apu_fade_out_flag
BEQ locret_981E4
LDA _apu_fade_value
CMP #$10
BCS loc_981E0
INC _apu_fade_counter
LDA _apu_fade_counter
CMP #$04
BCC locret_981E4
LDA #$00
STA _apu_fade_counter
INC _apu_fade_value
BNE locret_981E4
loc_981E0:
LDA #$00
STA _apu_fade_out_flag
locret_981E4:
RTS
; =============== S U B R O U T I N E =======================================
;_apu_play_fade_in_unref:
; LDA _apu_fade_in_flag
; BEQ nullsub2
; INC _apu_fade_counter
; LDA _apu_fade_counter
; CMP #$04
; BCC nullsub2
; LDA #$00
; STA _apu_fade_counter
; LDA _apu_fade_value
; BNE loc_981FD
; STA _apu_fade_in_flag
; BEQ nullsub2
;loc_981FD:
; DEC _apu_fade_value
;nullsub2:
; RTS
; =============== S U B R O U T I N E =======================================
_apu_load:
ORA #$80
STA _apu_load_idx
AND #$7F
BEQ _apu_all_stop
CMP #$79
BCS loc_9820F
JMP _apu_load_data
loc_9820F:
SBC #$79
ASL
TAY
LDA _apu_stop_lib,Y
STA _apu_tmpF2
LDA _apu_stop_lib+1,Y
STA _apu_tmpF3
JMP (_apu_tmpF2)
_apu_stop_lib:
.WORD _apu_mus_allow
.WORD _apu_mus_mute
.WORD _apu_mus_fade_out
.WORD _apu_mus_fade_in
.WORD _apu_mus_stop
.WORD _apu_snd_stop
.WORD _apu_all_stop
; =============== S U B R O U T I N E =======================================
_apu_mus_allow:
LDA #$00
STA _apu_mus_mute_flag
RTS
; =============== S U B R O U T I N E =======================================
_apu_mus_mute:
LDX #$01
STX _apu_mus_mute_flag
DEX
STX _APU_PULSE1_ENV
STX _APU_PULSE2_ENV
STX _APU_TRI_TIME
STX _APU_TRI_LEN
STX _APU_NOISE_ENV
RTS
; =============== S U B R O U T I N E =======================================
_apu_mus_fade_in:
LDX #$00
STX _apu_fade_out_flag
INX
STX _apu_fade_in_flag
RTS
; =============== S U B R O U T I N E =======================================
_apu_mus_fade_out:
LDX #$00
STX _apu_fade_in_flag
INX
STX _apu_fade_out_flag
RTS
; =============== S U B R O U T I N E =======================================
_apu_mus_stop:
LDX #$00
STX _apu_fade_in_flag
STX _apu_fade_out_flag
LDY #$04
BNE _apu_chnls_stop
; =============== S U B R O U T I N E =======================================
_apu_snd_stop:
LDX #$04
LDY #$02
; !FALLTHROUGH!
; =============== S U B R O U T I N E =======================================
_apu_chnls_stop:
JSR _apu_chnl_init
INX
DEY
BNE _apu_chnls_stop
RTS
; =============== S U B R O U T I N E =======================================
_apu_all_stop:
LDY #$13
LDA #$00
loc_98278:
STA _APU_PULSE1_ENV,Y
DEY
BPL loc_98278
LDA #$08
STA _APU_PULSE1_ENV
STA _APU_PULSE2_ENV
LDA #$40
STA _APU_TRI_COUNT
LDA #$10
STA _APU_NOISE_ENV
LDA #$8F
STA _APU_STATUS
LDA #$C0
STA _PAD1_REG
LDA #<[_apu_chnl_sp]
STA _apu_cur_pc
LDA #>[_apu_chnl_sp]
STA _apu_cur_pc+1
LDA #$FD
STA _apu_tmpF2
LDA #$00
STA _apu_tmpF3
LDY #$00
STY _apu_mus_mute_flag
STY _apu_fade_in_flag
STY _apu_fade_out_flag
STY _apu_fade_value
loc_982B4:
TYA
STA (_apu_cur_pc),Y
INC _apu_cur_pc
BNE loc_982BD
INC _apu_cur_pc+1
loc_982BD:
SEC
LDA _apu_tmpF2
SBC #$01
STA _apu_tmpF2
SBCH _apu_tmpF3
ORA _apu_tmpF2
BNE loc_982B4
LDA #<[byte_992B5]
STA _apu_ptr0
LDA #>[byte_992B5]
STA _apu_ptr0+1
LDX #$00
loc_982DA:
JSR _apu_chnl_init
INX
CPX #$04
BNE loc_982DA
RTS
; =============== S U B R O U T I N E =======================================
_apu_chnl_init:
LDA byte_98328,X
STA _apu_chnl_sp,X
LDA #<[_apu_chnl_data_dummy]
STA _apu_chnl_pc_lo,X
LDA #>[_apu_chnl_data_dummy]
STA _apu_chnl_pc_hi,X
LDA #$00
STA _apu_vars1,X
STA _apu_vars2,X
STA _apu_vars3,X
STA _apu_vars4,X
STA _apu_chnl_delay,X
STA _apu_tmpFD
STA _apu_vars6,X
STA _apu_vars7,X
STA _apu_vars8,X
STA _apu_vars9,X
STA _apu_varsA,X
STA _apu_varsB,X
LDA #$08
STA _apu_varsC,X
LDA #$80
STA _apu_varsD,X
LDA #$00
STA _apu_varsE,X
RTS
byte_98328:
.BYTE $00,$10,$20,$30,$40,$50
; =============== S U B R O U T I N E =======================================
_apu_load_data:
ASL
TAX
LDA _apu_mus_lib,X
STA _apu_cur_pc
LDA _apu_mus_lib+1,X
STA _apu_cur_pc+1
LDY #$00
LDA (_apu_cur_pc),Y
STA _apu_tmpF2
STA _apu_chnl_flags
AND #$30
BNE loc_9836C
LDA #$00
STA _apu_mus_mute_flag
STA _apu_fade_in_flag
STA _apu_fade_out_flag
STA _apu_fade_value
STA _apu_var12
STA _apu_var13
LDX #$0C
loc_98358:
TXA
STA _apu_varsF,X
DEX
BPL loc_98358
LDX #$00
LDY #$04
LDA _apu_active_chnls_flags
AND #$30
STA _apu_active_chnls_flags
JMP loc_9837C
loc_9836C:
LSR
LSR
LSR
LSR
STA _apu_tmpF2
LDA _apu_active_chnls_flags
AND #$0F
STA _apu_active_chnls_flags
LDX #$04
LDY #$02
loc_9837C:
STY _apu_tmpF3
LDY #$01
loc_98380:
JSR _apu_chnl_init
LSR _apu_tmpF2
BCC loc_98393
LDA (_apu_cur_pc),Y
STA _apu_chnl_pc_lo,X
INY
LDA (_apu_cur_pc),Y
STA _apu_chnl_pc_hi,X
INY
loc_98393:
INX
DEC _apu_tmpF3
BNE loc_98380
LDA #$F0
STA _APU_NOISE_ENV
RTS
; =============== S U B R O U T I N E =======================================
_apu_playA:
LDA _apu_chnl_delay,X
BEQ loc_983A9
DEC _apu_chnl_delay,X
BEQ loc_983A9
RTS
loc_983A9:
LDA _apu_chnl_pc_lo,X
STA _apu_cur_pc
LDA _apu_chnl_pc_hi,X
STA _apu_cur_pc+1
; !FALLTHROUGH!
; =============== S U B R O U T I N E =======================================
_apu_cmd_fetch:
JSR _apu_stream_get_byte
CMP #$D0
BCC _apu_data_load
SEC
SBC #$D0
ASL
TAY
LDA _apu_cmd_lib,Y
STA _apu_tmpF2
LDA _apu_cmd_lib+1,Y
STA _apu_tmpF3
LDA #>[_apu_cmd_fetch-1]
PHA
LDA #<[_apu_cmd_fetch-1]
PHA
JMP (_apu_tmpF2)
; =============== S U B R O U T I N E =======================================
_apu_data_load:
PHA
CLC
AND #$0F
ADC #$01
STA _apu_chnl_delay,X
LDY _apu_vars10,X
BEQ loc_983F0
LDA #$00
loc_983E6:
CLC
ADC _apu_chnl_delay,X
DEY
BNE loc_983E6
STA _apu_chnl_delay,X
loc_983F0:
PLA
AND #$F0
CMP #$C0
BNE loc_98416
LDA _apu_varsD,X
ORA #$80
STA _apu_varsD,X
LDA #$00
STA _apu_vars6,X
STA _apu_vars7,X
STA _apu_varsA,X
STA _apu_vars9,X
STA _apu_vars8,X
INC _apu_varsE,X
JMP loc_98493
loc_98416:
LDY _apu_tmpFD
BEQ loc_9841D
JMP loc_98493
loc_9841D:
PHA
LDA #$00
STA _apu_varsA,X
STA _apu_vars9,X
STA _apu_vars13,X
STA _apu_vars8,X
LDA _apu_varsD,X
AND #$7F
STA _apu_varsD,X
PLA
LSR
LSR
LSR
LSR
CPX #$03
BNE loc_98443
JSR _apu_data_load_A
JMP loc_98493
loc_98443:
CPX #$05
BNE loc_98460
SEC
SBC _apu_vars3,X
SEC
SBC _apu_vars4,X
ASL
AND #$1E
STA _apu_vars6,X
LDA #$00
STA _apu_vars7,X
INC _apu_varsE,X
JMP loc_98493
loc_98460:
CLC
ADC _apu_vars11,X
CLC
ADC _apu_vars3,X
CLC
ADC _apu_vars4,X
ASL
TAY
LDA _apu_freq_table,Y
STA _apu_vars6,X
LDA _apu_freq_table+1,Y
STA _apu_vars7,X
LDY #$00
LDA _apu_vars2,X
BPL loc_98482
DEY
loc_98482:
CLC
ADC _apu_vars6,X
STA _apu_vars6,X
TYA
ADC _apu_vars7,X
STA _apu_vars7,X
INC _apu_varsE,X
loc_98493:
LDA #$00
STA _apu_tmpFD
LDA _apu_cur_pc
STA _apu_chnl_pc_lo,X
LDA _apu_cur_pc+1
STA _apu_chnl_pc_hi,X
RTS
_apu_cmd_lib:
.WORD _apu_cmdD0
.WORD _apu_cmdD1
.WORD _apu_cmdD2
.WORD _apu_cmdD3
.WORD _apu_cmdD4
.WORD _apu_cmdD5
.WORD _apu_cmdD6
.WORD _apu_cmdD7
.WORD _apu_cmdD8
.WORD _apu_cmdD9
.WORD _apu_cmdDA
.WORD _apu_cmdDB
.WORD 0
.WORD 0
.WORD 0
.WORD 0
.WORD _apu_cmdE0
.WORD _apu_cmdE1
.WORD _apu_cmdE2
.WORD 0 ; _apu_cmdE3 ; dummy, unused
.WORD 0 ; _apu_cmdE4 ; dummy, unused
.WORD 0 ; _apu_cmdE5 ; dummy, unused
.WORD 0
.WORD 0
.WORD _apu_cmdE8
.WORD _apu_cmdE9
.WORD _apu_cmdEA
.WORD _apu_cmdEB
.WORD _apu_cmdEC
.WORD _apu_cmdED ; unused
.WORD 0
.WORD 0
.WORD _apu_cmdF0
.WORD _apu_cmdF1
.WORD _apu_cmdF2
.WORD _apu_cmdF3
.WORD 0
.WORD 0
.WORD 0
.WORD 0
.WORD _apu_cmdF8
.WORD 0
.WORD 0
.WORD 0
.WORD 0
.WORD 0
.WORD 0
.WORD _apu_cmdFF
; =============== S U B R O U T I N E =======================================
; arg none
_apu_cmdD0:
LDA #$00
BEQ _apu_cmdDX
; =============== S U B R O U T I N E =======================================
; arg none
_apu_cmdD1:
LDA #$0C
BNE _apu_cmdDX
; =============== S U B R O U T I N E =======================================
; arg none
_apu_cmdD2:
LDA #$18
BNE _apu_cmdDX
; =============== S U B R O U T I N E =======================================
; arg none
_apu_cmdD3:
LDA #$24
BNE _apu_cmdDX
; =============== S U B R O U T I N E =======================================
; arg none
_apu_cmdD4:
LDA #$30
BNE _apu_cmdDX
; =============== S U B R O U T I N E =======================================
; arg none
_apu_cmdD5:
LDA #$3C
BNE _apu_cmdDX
; =============== S U B R O U T I N E =======================================
; arg none
_apu_cmdD6:
LDA #$48
; !FALLTHROUGH!
; =============== S U B R O U T I N E =======================================
_apu_cmdDX:
STA _apu_vars11,X
RTS
; =============== S U B R O U T I N E =======================================
; arg none
_apu_cmdD7:
CLC
LDA _apu_vars11,X
ADC #$0C
STA _apu_vars11,X
RTS
; =============== S U B R O U T I N E =======================================
; arg none
_apu_cmdD8:
SEC
LDA _apu_vars11,X
SBC #$0C
STA _apu_vars11,X
RTS
; =============== S U B R O U T I N E =======================================
; arg byte
_apu_cmdD9:
JSR _apu_stream_get_byte
STA _apu_vars3,X
RTS
; =============== S U B R O U T I N E =======================================
; arg byte
_apu_cmdDA:
JSR _apu_stream_get_byte
CLC
ADC _apu_vars4,X
STA _apu_vars4,X
RTS
; =============== S U B R O U T I N E =======================================
; arg byte
_apu_cmdDB:
JSR _apu_stream_get_byte
STA _apu_vars2,X
RTS
; =============== S U B R O U T I N E =======================================
; arg byte
_apu_cmdE0:
JSR _apu_stream_get_byte
STA _apu_vars10,X
RTS
; =============== S U B R O U T I N E =======================================
; arg byte
_apu_cmdE1:
JSR _apu_stream_get_byte
ROR
ROR
ROR
AND #$C0
STA _apu_vars12,X
RTS
; =============== S U B R O U T I N E =======================================
; arg byte
_apu_cmdE2:
JSR _apu_stream_get_byte
ORA #$80
STA _apu_varsD,X
LDA #$00
STA _apu_varsA,X
STA _apu_vars9,X
RTS
; =============== S U B R O U T I N E =======================================
; dummy
;_apu_cmdE3:
; JSR _apu_stream_get_byte
; RTS
; =============== S U B R O U T I N E =======================================
; dummy
;_apu_cmdE4:
; JSR _apu_stream_get_byte
; RTS
; =============== S U B R O U T I N E =======================================
; dummy
;_apu_cmdE5:
; JSR _apu_stream_get_byte
; RTS
; =============== S U B R O U T I N E =======================================
; arg none
_apu_cmdE8:
LDA #$01
STA _apu_tmpFD
RTS
; =============== S U B R O U T I N E =======================================
; arg byte
_apu_cmdE9:
JSR _apu_stream_get_byte
STA _apu_vars1,X
RTS
; =============== S U B R O U T I N E =======================================
; arg byte
_apu_cmdEA:
JSR _apu_stream_get_byte
CLC
ADC _apu_vars1,X
STA _apu_vars1,X
RTS
; =============== S U B R O U T I N E =======================================
; arg byte
_apu_cmdEB:
JSR _apu_stream_get_byte
STA _apu_varsC,X
INC _apu_varsB,X
RTS
; =============== S U B R O U T I N E =======================================
; arg none
_apu_cmdEC:
LDA #$08
STA _apu_varsC,X
INC _apu_varsB,X
RTS
; =============== S U B R O U T I N E =======================================
; LOOP START arg byte ofs
_apu_cmdF0:
JSR _apu_stream_get_byte
PHA
JSR _apu_chnl_push_pc
PLA
JMP _apu_chnl_push_byte
; =============== S U B R O U T I N E =======================================
; DO LOOP args none
_apu_cmdF1:
JSR _apu_chnl_pop_byte
SEC
SBC #$01
BEQ loc_985C5
PHA
JSR _apu_chnl_pop_pc
JSR _apu_chnl_push_pc
PLA
JMP _apu_chnl_push_byte
loc_985C5:
JSR _apu_chnl_pop_byte
JMP _apu_chnl_pop_byte
; =============== S U B R O U T I N E =======================================
; JSR arg ofs
_apu_cmdF2:
JSR _apu_stream_get_byte
PHA
JSR _apu_stream_get_byte
PHA
JSR _apu_chnl_push_pc
PLA
STA _apu_cur_pc+1
PLA
STA _apu_cur_pc
RTS
; =============== S U B R O U T I N E =======================================
; RET arg none
_apu_cmdF3:
JMP _apu_chnl_pop_pc
; =============== S U B R O U T I N E =======================================
; JMP arg ofs
_apu_cmdF8:
JSR _apu_stream_get_byte
PHA
JSR _apu_stream_get_byte
STA _apu_cur_pc+1
PLA
STA _apu_cur_pc
RTS
; =============== S U B R O U T I N E =======================================
; arg byte
_apu_cmdED:
TXA
PHA
JSR _apu_stream_get_byte
PHA
ROR
ROR
ROR
ROR
AND #$0F
TAX
PLA
AND #$0F
TAY
LDA _apu_varsF,X
PHA
LDA _apu_varsF,Y
STA _apu_varsF,X
PLA
STA _apu_varsF,Y
PLA
TAX
RTS