?login_element?

Subversion Repositories NedoOS

Rev

Rev 1595 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.         DEVICE ZXSPECTRUM48
  2.         include "../../_sdk/sys_h.asm"
  3.                 ORG 0x4000
  4.  
  5. s98_begin:
  6.         include "S98.ini"
  7.  
  8. load_s98_file_number_haddr = 0x80
  9. s98_file00_pages_list = 0x8000
  10. current_ram_page = 0x8200
  11.  
  12.  
  13.         macro TC tacts
  14.                
  15. tact_count = (tact_count + (tacts))
  16.  
  17.         endm
  18.  
  19. s98_header = $C000
  20. module = $C000
  21.  
  22. START
  23.                 LD HL,module;MDLADDR ;DE - address of 2nd module for TS
  24.                 JR INIT
  25.                 JP PLAY
  26.                 JP MUTE
  27.  
  28. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  29. INIT:
  30. ;------ tsfm_init
  31.         xor a
  32.         ld (cha_vol_orig),a
  33.         ld (chb_vol_orig),a
  34.         ld (chc_vol_orig),a
  35.        
  36.         ld a,$7F
  37.         ld b,24
  38.         ld hl,TL_ch1_op1_ym1_orig
  39. 1       ld (hl),a
  40.         inc hl
  41.         djnz 1b
  42.        
  43.         call ym_reset
  44. ;------- s98 init
  45.                 xor a; ld a,$00                 ;nop    ;play unlock
  46.                 ld (s98_player_play_var),a
  47.  
  48.  
  49.  
  50. ;DATA offset
  51.  
  52.                         ld a,(s98_header+$14)
  53.                         ld l,a
  54.                         ld a,(s98_header+$15)
  55.                         or %11000000
  56.                         ld h,a
  57.                
  58.                         ld a,(s98_header+$15)   ;1100 0000
  59.                         rlca                    ;1000 0001
  60.                         rlca                    ;0000 0011
  61.                         and %00000011
  62.                        
  63.                         ld b,a
  64.                         ld a,(s98_header+$16)   ;0000 1111
  65.                         add a                   ;0001 1110
  66.                         add a                   ;0011 1100
  67.                         or b
  68.  
  69.                         ld (current_ram_page),a                        ;;///// тючьюцэю яюёых шэшЎшрышчрЎшш эєцэр сєфхЄ ёютёхь фЁєур  ёЄЁрэшЎр, р эх 0
  70.                        
  71.                         ld (player_reg_DE),hl
  72. ;LOOP offset
  73.  
  74.                                                         ;т√эхёЄш т юЄфхы№эє■ яЁюЎхфєЁє
  75.                         ld a,(s98_header+$18)           ;(de) > a hl
  76.                         ld l,a
  77.                         ld a,(s98_header+$19)
  78.                         or %11000000
  79.                         ld h,a
  80.                
  81.                         ld a,(s98_header+$19)   ;1100 0000
  82.                         rlca                    ;1000 0001
  83.                         rlca                    ;0000 0011
  84.                         and %00000011
  85.                        
  86.                         ld b,a
  87.                         ld a,(s98_header+$1A)   ;0000 1111
  88.                         add a                   ;0001 1110
  89.                         add a                   ;0011 1100
  90.                         or b
  91.  
  92.  
  93.                         ld (loop_ram_page),a
  94.                         ld (loop_addr),hl
  95.  
  96.  
  97.                         ld hl,(s98_header+$18)
  98.                         ld a,h : or l
  99.                         ld hl,(s98_header+$1A)
  100.                         or h : or l
  101.                        
  102.                         ld a,$37                        ;scf    ;$37
  103.                         jr nz,enable_loop
  104. disable_loop            ld a,$A7                        ;and a  ;$A7
  105. enable_loop                    
  106.                         ld (enable_loop_var),a          ;
  107.                        
  108.                        
  109.  
  110.  
  111.                         ld hl,3277
  112.                         ld a,(s98_header+$04)
  113.                         dec a;cp 1
  114.                         jr z,1f
  115.                         ld hl,32768
  116. 1                       ld (sync_frq),hl
  117.                         ret
  118. ;;/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  119. ;==============================================================================
  120. ;==============================================================================
  121.  
  122.  if ay_mute = 0
  123.         defarray  OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1_ssg        ;00     SSG
  124.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1_ssg        ;01     SSG
  125.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1_ssg        ;02     SSG
  126.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1_ssg        ;03     SSG
  127.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1_ssg        ;04     SSG
  128.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1_ssg        ;05     SSG
  129.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1_ssg        ;06     SSG
  130.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1_ssg        ;07     SSG
  131.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_r08_SSG_vol_cha            ;08     SSG vol cha
  132.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_r09_SSG_vol_chb            ;09     SSG vol chb
  133.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_r0A_SSG_vol_chc            ;0A     SSG vol chc
  134.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_r0B_SSG_en_low             ;0B     SSG
  135.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_r0C_SSG_en_high            ;0C     SSG
  136.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_r0D_SSG_en_shape           ;0D     SSG
  137.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc                      ;0E     SSG IO
  138.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc                      ;0F     SSG IO
  139.  else
  140.         defarray  OPNA_YM2608_00_regs OPNA_YM2608_00_undoc
  141.                 dup 15
  142.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc
  143.                 edup
  144.  
  145.  endif
  146.  
  147.         dup 16
  148.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_r1x_rhythm_undoc
  149.         edup
  150.  
  151.  if YM_Type = 1 ;2203
  152.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;20
  153.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;21 LSI TEST DATA
  154.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;22 LFO         2203 NOT HAVE
  155.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;23
  156.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;24 TIMER
  157.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;25 TIMER
  158.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;26 TIMER
  159.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;27 TIMER
  160.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_r28_key_on_off        ;28 KEY ON OFF
  161.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;29 IRQ ENABLE  ????
  162.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;2A
  163.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;2B
  164.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;2C
  165.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_r2D_prescaler      ;2D PRESCALER
  166.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_r2E_prescaler      ;2E PRESCALER
  167.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_r2F_prescaler      ;2F PRESCALER
  168.        
  169.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;30 DETUNE
  170.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;31 DETUNE
  171.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;32 DETUNE
  172.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;33
  173.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;34 DETUNE
  174.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;35 DETUNE
  175.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;36 DETUNE
  176.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;37
  177.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;38 DETUNE
  178.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;39 DETUNE
  179.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;3A DETUNE
  180.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;3B
  181.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;3C DETUNE
  182.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;3D DETUNE
  183.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;3E DETUNE
  184.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;3F
  185.        
  186.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_TL_ch1_op1_ym1        ;40 TOTAL LEVEL
  187.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_TL_ch2_op1_ym1        ;41 TOTAL LEVEL
  188.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_TL_ch3_op1_ym1        ;42 TOTAL LEVEL
  189.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;43
  190.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_TL_ch1_op2_ym1        ;44 TOTAL LEVEL
  191.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_TL_ch2_op2_ym1        ;45 TOTAL LEVEL
  192.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_TL_ch3_op2_ym1        ;46 TOTAL LEVEL
  193.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;47
  194.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_TL_ch1_op3_ym1        ;48 TOTAL LEVEL
  195.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_TL_ch2_op3_ym1        ;49 TOTAL LEVEL
  196.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_TL_ch3_op3_ym1        ;4A TOTAL LEVEL
  197.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;4B
  198.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_TL_ch1_op4_ym1        ;4C TOTAL LEVEL
  199.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_TL_ch2_op4_ym1        ;4D TOTAL LEVEL
  200.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_TL_ch3_op4_ym1        ;4E TOTAL LEVEL
  201.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;4F
  202.        
  203.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;50 ATTACK RATE
  204.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;51 ATTACK RATE
  205.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;52 ATTACK RATE
  206.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;53
  207.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;54 ATTACK RATE
  208.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;55 ATTACK RATE
  209.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;56 ATTACK RATE
  210.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;57
  211.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;58 ATTACK RATE
  212.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;59 ATTACK RATE
  213.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;5A ATTACK RATE
  214.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;5B
  215.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;5C ATTACK RATE
  216.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;5D ATTACK RATE
  217.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;5E ATTACK RATE
  218.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;5F
  219.        
  220.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;60 DECAY RATE
  221.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;61 DECAY RATE
  222.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;62 DECAY RATE
  223.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;63
  224.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;64 DECAY RATE
  225.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;65 DECAY RATE
  226.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;66 DECAY RATE
  227.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;67
  228.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;68 DECAY RATE
  229.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;69 DECAY RATE
  230.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;6A DECAY RATE
  231.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;6B
  232.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;6C DECAY RATE
  233.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;6D DECAY RATE
  234.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;6E DECAY RATE
  235.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;6F
  236.        
  237.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;70 SUSTAIN RATE
  238.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;71 SUSTAIN RATE
  239.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;72 SUSTAIN RATE
  240.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;73
  241.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;74 SUSTAIN RATE
  242.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;75 SUSTAIN RATE
  243.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;76 SUSTAIN RATE
  244.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;77
  245.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;78 SUSTAIN RATE
  246.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;79 SUSTAIN RATE
  247.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;7A SUSTAIN RATE
  248.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;7B
  249.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;7C SUSTAIN RATE
  250.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;7D SUSTAIN RATE
  251.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;7E SUSTAIN RATE
  252.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;7F
  253.        
  254.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;80 SUSTAIN LEVEL \ RELEASE RATE
  255.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;81 SUSTAIN LEVEL \ RELEASE RATE
  256.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;82 SUSTAIN LEVEL \ RELEASE RATE
  257.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;83
  258.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;84 SUSTAIN LEVEL \ RELEASE RATE
  259.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;85 SUSTAIN LEVEL \ RELEASE RATE
  260.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;86 SUSTAIN LEVEL \ RELEASE RATE
  261.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;87
  262.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;88 SUSTAIN LEVEL \ RELEASE RATE
  263.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;89 SUSTAIN LEVEL \ RELEASE RATE
  264.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;8A SUSTAIN LEVEL \ RELEASE RATE
  265.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;8B
  266.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;8C SUSTAIN LEVEL \ RELEASE RATE
  267.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;8D SUSTAIN LEVEL \ RELEASE RATE
  268.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;8E SUSTAIN LEVEL \ RELEASE RATE
  269.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;8F
  270.  
  271.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;90 SSG TYPE ENVELOPE
  272.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;91 SSG TYPE ENVELOPE
  273.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;92 SSG TYPE ENVELOPE
  274.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;93
  275.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;94 SSG TYPE ENVELOPE
  276.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;95 SSG TYPE ENVELOPE
  277.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;96 SSG TYPE ENVELOPE
  278.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;97
  279.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;98 SSG TYPE ENVELOPE
  280.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;99 SSG TYPE ENVELOPE
  281.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;9A SSG TYPE ENVELOPE
  282.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;9B
  283.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;9C SSG TYPE ENVELOPE
  284.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;9D SSG TYPE ENVELOPE
  285.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;9E SSG TYPE ENVELOPE
  286.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;9F
  287.        
  288.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;A0 F NUM
  289.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;A1 F NUM
  290.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;A2 F NUM
  291.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;A3
  292.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;A4 BLOCK \ F NUM 2
  293.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;A5 BLOCK \ F NUM 2
  294.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;A6 BLOCK \ F NUM 2
  295.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;A7
  296.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;A8 3CH F NUM
  297.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;A9 3CH F NUM
  298.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;AA 3CH F NUM
  299.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;AB
  300.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;AC 3CH BLOCK \ F NUM 2
  301.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;AD 3CH BLOCK \ F NUM 2
  302.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;AE 3CH BLOCK \ F NUM 2
  303.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;AF
  304.        
  305.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;B0 FEEDBACK \ CONNECTION
  306.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;B1 FEEDBACK \ CONNECTION
  307.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_simple_write_2_ym1    ;B2 FEEDBACK \ CONNECTION
  308.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;B3
  309.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;B4 PMS AMS LR
  310.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;B5 PMS AMS LR
  311.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;B6 PMS AMS LR
  312.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;B7
  313.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;B8
  314.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;B9
  315.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;BA
  316.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;BB
  317.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;BC
  318.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;BD
  319.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;BE
  320.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc              ;BF
  321.        
  322.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;C0
  323.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;C1
  324.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;C2
  325.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;C3
  326.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;C4
  327.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;C5
  328.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;C6
  329.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;C7
  330.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;C8
  331.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;C9
  332.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;CA
  333.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;CB
  334.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;CC
  335.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;CD
  336.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;CE
  337.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;CF
  338.  
  339.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;D0
  340.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;D1
  341.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;D2
  342.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;D3
  343.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;D4
  344.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;D5
  345.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;D6
  346.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;D7
  347.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;D8
  348.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;D9
  349.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;DA
  350.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;DB
  351.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;DC
  352.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;DD
  353.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;DE
  354.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;DF
  355.        
  356.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;E0
  357.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;E1
  358.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;E2
  359.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;E3
  360.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;E4
  361.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;E5
  362.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;E6
  363.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;E7
  364.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;E8
  365.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;E9
  366.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;EA
  367.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;EB
  368.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;EC
  369.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;ED
  370.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;EE
  371.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;EF
  372.        
  373.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;F0
  374.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;F1
  375.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;F2
  376.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;F3
  377.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;F4
  378.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;F5
  379.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;F6
  380.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;F7
  381.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;F8
  382.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;F9
  383.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;FA
  384.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;FB
  385.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;FC
  386.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;FD
  387.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;FE
  388.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc      ;FF
  389.  endif
  390.  
  391.  if YM_Type = 2
  392.         dup 256-32
  393.         defarray+ OPNA_YM2608_00_regs OPNA_YM2608_00_undoc
  394.         edup
  395.  endif
  396. ;==============================================================================
  397.  
  398.  
  399.  
  400. ;==============================================================================
  401.         defarray  OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;00     ADPCM
  402.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;01     ADPCM
  403.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;02     ADPCM
  404.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;03     ADPCM
  405.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;04     ADPCM
  406.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;05     ADPCM
  407.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;06     ADPCM
  408.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;07     ADPCM
  409.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;08     ADPCM
  410.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;09     ADPCM
  411.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;0A     ADPCM
  412.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;0B     ADPCM
  413.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;0C     ADPCM
  414.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;0D     ADPCM
  415.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;0E     ADPCM
  416.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;0F     ADPCM
  417.  
  418.  if YM_Type = 1 ;2203
  419.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;10    
  420.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;11
  421.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;12
  422.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;13
  423.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;14
  424.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;15
  425.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;16
  426.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;17
  427.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;18
  428.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;19
  429.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;1A
  430.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;1B
  431.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;1C
  432.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;1D
  433.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;1E
  434.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;1F
  435.        
  436.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;20
  437.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;21
  438.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;22
  439.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;23
  440.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;24
  441.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;25
  442.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;26
  443.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;27
  444.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;28
  445.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;29
  446.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;2A
  447.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;2B
  448.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;2C
  449.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;2D
  450.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;2E
  451.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;2F
  452.        
  453.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;30 DETUNE
  454.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;31 DETUNE
  455.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;32 DETUNE
  456.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;33
  457.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;34 DETUNE
  458.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;35 DETUNE
  459.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;36 DETUNE
  460.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;37
  461.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;38 DETUNE
  462.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;39 DETUNE
  463.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;3A DETUNE
  464.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;3B
  465.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;3C DETUNE
  466.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;3D DETUNE
  467.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;3E DETUNE
  468.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;3F
  469.        
  470.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_TL_ch1_op1_ym2        ;40 TOTAL LEVEL
  471.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_TL_ch2_op1_ym2        ;41 TOTAL LEVEL
  472.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_TL_ch3_op1_ym2        ;42 TOTAL LEVEL
  473.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_00_undoc              ;43
  474.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_TL_ch1_op2_ym2        ;44 TOTAL LEVEL
  475.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_TL_ch2_op2_ym2        ;45 TOTAL LEVEL
  476.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_TL_ch3_op2_ym2        ;46 TOTAL LEVEL
  477.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_00_undoc              ;47
  478.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_TL_ch1_op3_ym2        ;48 TOTAL LEVEL
  479.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_TL_ch2_op3_ym2        ;49 TOTAL LEVEL
  480.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_TL_ch3_op3_ym2        ;4A TOTAL LEVEL
  481.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_00_undoc              ;4B
  482.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_TL_ch1_op4_ym2        ;4C TOTAL LEVEL
  483.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_TL_ch2_op4_ym2        ;4D TOTAL LEVEL
  484.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_TL_ch3_op4_ym2        ;4E TOTAL LEVEL
  485.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;4F
  486.        
  487.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;50 ATTACK RATE
  488.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;51 ATTACK RATE
  489.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;52 ATTACK RATE
  490.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;53
  491.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;54 ATTACK RATE
  492.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;55 ATTACK RATE
  493.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;56 ATTACK RATE
  494.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;57
  495.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;58 ATTACK RATE
  496.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;59 ATTACK RATE
  497.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;5A ATTACK RATE
  498.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;5B
  499.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;5C ATTACK RATE
  500.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;5D ATTACK RATE
  501.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;5E ATTACK RATE
  502.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;5F
  503.        
  504.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;60 DECAY RATE
  505.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;61 DECAY RATE
  506.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;62 DECAY RATE
  507.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;63
  508.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;64 DECAY RATE
  509.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;65 DECAY RATE
  510.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;66 DECAY RATE
  511.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;67
  512.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;68 DECAY RATE
  513.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;69 DECAY RATE
  514.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;6A DECAY RATE
  515.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;6B
  516.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;6C DECAY RATE
  517.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;6D DECAY RATE
  518.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;6E DECAY RATE
  519.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;6F
  520.        
  521.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;70 SUSTAIN RATE
  522.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;71 SUSTAIN RATE
  523.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;72 SUSTAIN RATE
  524.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;73
  525.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;74 SUSTAIN RATE
  526.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;75 SUSTAIN RATE
  527.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;76 SUSTAIN RATE
  528.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;77
  529.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;78 SUSTAIN RATE
  530.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;79 SUSTAIN RATE
  531.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;7A SUSTAIN RATE
  532.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;7B
  533.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;7C SUSTAIN RATE
  534.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;7D SUSTAIN RATE
  535.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;7E SUSTAIN RATE
  536.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;7F
  537.        
  538.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;80 SUSTAIN LEVEL \ RELEASE RATE
  539.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;81 SUSTAIN LEVEL \ RELEASE RATE
  540.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;82 SUSTAIN LEVEL \ RELEASE RATE
  541.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;83
  542.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;84 SUSTAIN LEVEL \ RELEASE RATE
  543.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;85 SUSTAIN LEVEL \ RELEASE RATE
  544.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;86 SUSTAIN LEVEL \ RELEASE RATE
  545.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;87
  546.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;88 SUSTAIN LEVEL \ RELEASE RATE
  547.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;89 SUSTAIN LEVEL \ RELEASE RATE
  548.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;8A SUSTAIN LEVEL \ RELEASE RATE
  549.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;8B
  550.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;8C SUSTAIN LEVEL \ RELEASE RATE
  551.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;8D SUSTAIN LEVEL \ RELEASE RATE
  552.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;8E SUSTAIN LEVEL \ RELEASE RATE
  553.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;8F
  554.        
  555.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;90 SSG TYPE ENVELOPE
  556.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;91 SSG TYPE ENVELOPE
  557.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;92 SSG TYPE ENVELOPE
  558.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;93
  559.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;94 SSG TYPE ENVELOPE
  560.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;95 SSG TYPE ENVELOPE
  561.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;96 SSG TYPE ENVELOPE
  562.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;97
  563.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;98 SSG TYPE ENVELOPE
  564.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;99 SSG TYPE ENVELOPE
  565.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;9A SSG TYPE ENVELOPE
  566.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;9B
  567.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;9C SSG TYPE ENVELOPE
  568.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;9D SSG TYPE ENVELOPE
  569.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;9E SSG TYPE ENVELOPE
  570.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;9F
  571.        
  572.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;A0 F NUM
  573.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;A1 F NUM
  574.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;A2 F NUM
  575.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;A3
  576.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;A4 BLOCK \ F NUM 2
  577.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;A5 BLOCK \ F NUM 2
  578.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;A6 BLOCK \ F NUM 2
  579.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;A7
  580.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;A8 3CH F NUM
  581.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;A9 3CH F NUM
  582.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;AA 3CH F NUM
  583.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;AB
  584.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;AC 3CH BLOCK \ F NUM 2
  585.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;AD 3CH BLOCK \ F NUM 2
  586.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;AE 3CH BLOCK \ F NUM 2
  587.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;AF
  588.        
  589.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;B0 FEEDBACK \ CONNECTION
  590.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;B1 FEEDBACK \ CONNECTION
  591.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_simple_write_2_ym2    ;B2 FEEDBACK \ CONNECTION
  592.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;B3
  593.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;B4 PMS AMS LR
  594.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;B5 PMS AMS LR
  595.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;B6 PMS AMS LR
  596.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;B7
  597.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;B8
  598.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;B9
  599.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;BA
  600.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;BB
  601.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;BC
  602.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;BD
  603.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;BE
  604.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc              ;BF
  605.        
  606.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;C0
  607.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;C1
  608.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;C2
  609.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;C3
  610.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;C4
  611.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;C5
  612.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;C6
  613.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;C7
  614.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;C8
  615.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;C9
  616.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;CA
  617.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;CB
  618.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;CC
  619.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;CD
  620.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;CE
  621.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;CF
  622.  
  623.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;D0
  624.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;D1
  625.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;D2
  626.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;D3
  627.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;D4
  628.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;D5
  629.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;D6
  630.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;D7
  631.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;D8
  632.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;D9
  633.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;DA
  634.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;DB
  635.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;DC
  636.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;DD
  637.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;DE
  638.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;DF
  639.        
  640.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;E0
  641.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;E1
  642.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;E2
  643.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;E3
  644.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;E4
  645.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;E5
  646.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;E6
  647.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;E7
  648.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;E8
  649.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;E9
  650.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;EA
  651.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;EB
  652.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;EC
  653.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;ED
  654.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;EE
  655.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;EF
  656.        
  657.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;F0
  658.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;F1
  659.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;F2
  660.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;F3
  661.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;F4
  662.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;F5
  663.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;F6
  664.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;F7
  665.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;F8
  666.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;F9
  667.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;FA
  668.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;FB
  669.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;FC
  670.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;FD
  671.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;FE
  672.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc      ;FF
  673.  endif
  674.  
  675.  if YM_Type = 2
  676.         dup 256-16
  677.         defarray+ OPNA_YM2608_01_regs OPNA_YM2608_01_undoc
  678.         edup
  679.  endif
  680.  
  681. ;==============================================================================
  682.  
  683.  
  684.  
  685. ;==============================================================================
  686.                                                                 align 256
  687. ;------------------------------------------------------------------------------
  688. OPNA_YM2608_00_decode_table
  689. OPNA_YM2608_00_decode_table_haddr = high $
  690.  
  691. tab_temp_cnt = 0
  692.                 dup 256
  693.                         defb low (OPNA_YM2608_00_regs[tab_temp_cnt])
  694. tab_temp_cnt = tab_temp_cnt + 1
  695.                 edup
  696. tab_temp_cnt = 0
  697.                 dup 256
  698.                         defb high (OPNA_YM2608_00_regs[tab_temp_cnt])
  699. tab_temp_cnt = tab_temp_cnt + 1
  700.                 edup
  701.  
  702. ;==============================================================================
  703.                                                                 align 256
  704. ;------------------------------------------------------------------------------
  705. OPNA_YM2608_01_decode_table
  706. OPNA_YM2608_01_decode_table_haddr = high $
  707.  
  708. tab_temp_cnt = 0
  709.                 dup 256
  710.                         defb low (OPNA_YM2608_01_regs[tab_temp_cnt])
  711. tab_temp_cnt = tab_temp_cnt + 1
  712.                 edup
  713. tab_temp_cnt = 0
  714.                 dup 256
  715.                         defb high (OPNA_YM2608_01_regs[tab_temp_cnt])
  716. tab_temp_cnt = tab_temp_cnt + 1
  717.                 edup
  718.                
  719. ;==============================================================================
  720.  
  721.  
  722.  
  723.                        
  724. ;==============================================================================
  725. /*
  726.                                                                 align 256
  727. ;------------------------------------------------------------------------------
  728. s98_file00_pages_list
  729. s98_file00_pages_list_haddr = high $
  730.         dup 256
  731.         defb $00
  732.         edup
  733. s98_file01_pages_list
  734. s98_file01_pages_list_haddr = high $
  735.         dup 256
  736.         defb $00
  737.         edup
  738. s98_file02_pages_list
  739. s98_file02_pages_list_haddr = high $
  740.         dup 256
  741.         defb $00
  742.         edup
  743. s98_file03_pages_list
  744. s98_file03_pages_list_haddr = high $
  745.         dup 256
  746.         defb $00
  747.         edup
  748. */
  749. ;==============================================================================
  750.  
  751.  
  752.  
  753.  
  754.  
  755. MUTE:
  756.                         ld a,$C9                        ;ret    ;stop playing
  757.                         ld (s98_player_play_var),a
  758.  
  759.                         xor a
  760.                         ld (cha_vol_orig),a
  761.                         ld (chb_vol_orig),a
  762.                         ld (chc_vol_orig),a
  763.  
  764.                         call ym_reset
  765.                         call ym_off
  766.                         ret
  767.                        
  768.  
  769.  
  770. ym_reset
  771.        
  772. ;rhythm_mute
  773.                         ;xor a
  774.                         ;ld (rhythm_voldown),a  ;out off
  775.        
  776.         ld a,%11111001  ;chip2
  777.         ld bc,sFFFD
  778.         out (c),a
  779.  
  780.         call ym_reset_1
  781.        
  782.         ld a,%11111000  ;chip1
  783.         ld b,sFF
  784.         out (c),a
  785.        
  786.         call ym_reset_1
  787.        
  788.         ret
  789.  
  790. ym_reset_1
  791.        
  792.        
  793.                 ld a,$0D        ;a start reg    0D...00         SSG
  794.                 ld hl,$00FF     ;h 00 reset
  795.                                 ;l last reg-1
  796.                 call ym_reset_loop
  797.                
  798.                 ld a,$B3        ;               B3...50         FM
  799.                 ld l,$4F        ;
  800.                 call ym_reset_loop
  801.                
  802.                 ld a,$3F        ;               3F...30         DETUNE MUL
  803.                 ld l,$2F        ;
  804.                 call ym_reset_loop
  805.                
  806.                 ld a,$07        ;a reg          07              SSG MIXER
  807.                 ld h,$F8        ;h F8 reset
  808.                 call ym_reset_write    
  809.                
  810.                 ld a,$8F        ;a start reg    8F...80         SUSTAIN RELEASE
  811.                 ld hl,$0F7F     ;h 0F reset
  812.                 ;               ;l last reg-1
  813.                 call ym_reset_loop
  814.        
  815.        
  816.                 ld a,$28        ;a start reg    28              KEY OFF CH1
  817.                 ld h,$00        ;h 00 reset
  818.                 call ym_reset_write
  819.                
  820.                 ;ld a,$28       ;a start reg    28              KEY OFF CH2
  821.                 ld hl,$01       ;h 00 reset
  822.                 call ym_reset_write
  823.                
  824.                 ;ld a,$28       ;a start reg    28              KEY OFF CH3
  825.                 ld hl,$02       ;h 00 reset
  826.                 call ym_reset_write            
  827.        
  828.                 ld a,$27        ;a start reg    27              TIMER
  829.                 ld hl,$02       ;h 00 reset
  830.                 call ym_reset_write            
  831.  
  832.  
  833.                 ld a,$4F        ;a start reg    4F...40         TOTAL LEVEL
  834.                 ld hl,$7F3F     ;h 00 reset
  835.                 ;               ;l last reg-1
  836.                 call ym_reset_loop             
  837.        
  838.        
  839.  
  840.                 ld a,$2F        ;a start reg    2F              PRESCALER
  841.                 ld h,$7F        ;h 00 reset
  842.                 call ym_reset_write    
  843.                
  844.  
  845.                 ld a,$2D        ;a start reg    2D              PRESCALER
  846.                 ld hl,$7F       ;h 00 reset
  847.                 call ym_reset_write    
  848.        
  849.                 ret                                    
  850.                
  851. ;------------------------------------------------------------------------------
  852. ym_reset_loop
  853.                 call ym_reset_write
  854.                 dec a
  855.                 cp l
  856.                 jr nz,ym_reset_loop     ;if =>
  857.                 ret
  858.                
  859. ;------------------------------------------------------------------------------
  860. ym_reset_write
  861.                         ld bc,sFFFD
  862. 2                              
  863.                                 nop
  864.                                 nop
  865.                                 in f,(c)
  866.                                 jp m,2B
  867.                         out (c),a
  868.                        
  869. 2                              
  870.                                 nop
  871.                                 nop
  872.                                 in f,(c)
  873.                                 jp m,2B
  874.                         ld b,sBF                ;FD
  875.                         out (c),h
  876.                         ret
  877.                                        
  878. ;------------------------------------------------------------------------------
  879. ym_off
  880.         ld a,%11111111  ;ym off
  881.         ld bc,sFFFD
  882.         out (c),a
  883.         ret
  884.  
  885.  
  886. command_FD                              ;loop
  887.  
  888. enable_loop_var = $ :   scf
  889.  
  890.                         jp nc,player_exit
  891.  
  892. loop_enabled
  893.  
  894.  
  895. loop_ram_page = $+1 :   ld a,$00
  896.                         call mount_ram_a
  897.                        
  898. loop_addr = $+1 :       ld de,$C080            
  899.                        
  900.                         jp (ix)
  901. ;==============================================================================
  902. player_exit
  903.                         ld a,$C9                        ;ret    ;stop playing
  904.                         ld (s98_player_play_var),a
  905.  
  906.                         call ym_reset
  907.  
  908.                         call ym_off
  909.  
  910.                         ret
  911.  
  912. ;==============================================================================
  913. command_FE
  914.  
  915.                 ld a,(de)
  916.                
  917.                 inc a
  918.                 inc a
  919.  
  920.                 inc e
  921.                 call z,inc_d_paging
  922.  
  923.                 ld hl,(sync_cnt)
  924.                 ld bc,(sync_frq)
  925. sync_FE_loop    add hl,bc
  926.                                 ;call c,player_frame_complete
  927.                                 jp c,player_frame_complete_when_FE
  928. sync_FE_loop_continue
  929.                 dec a
  930.                 jp nz,sync_FE_loop
  931.                 ld (sync_cnt),hl       
  932.                
  933.                 jp (ix)
  934.  
  935.  
  936. ;==============================================================================
  937.  
  938.  
  939. ;==============================================================================
  940. command_FF
  941. ;sync
  942.                
  943. sync_cnt = $+1 :        ld hl,$0000
  944. sync_frq = $+1 :        ld bc,3277      ;3277   ;3276,8         ;$8000          ;
  945.                         add hl,bc
  946.                         ld (sync_cnt),hl
  947.  
  948.                         ;call c,player_frame_complete
  949.                         jp c,player_frame_complete
  950.        
  951. sync_FF_skip
  952.                 jp (ix)
  953.  
  954. ;==============================================================================
  955.  
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963. ;==============================================================================
  964. ;OPNA_YM2608
  965. ;==============================================================================
  966.  
  967. OPNA_YM2608_00_decoder  ;яхЁтр  яюыютшэр ўшяр
  968.  
  969.                 ld a,(de)                               ;7
  970.                 inc e                                   ;4
  971.                
  972.                 ld l,a                                  ;4
  973.                 ld h,OPNA_YM2608_00_decode_table_haddr  ;7
  974.                 ld b,(hl)                               ;7
  975.        
  976.                 jr z,OPNA_YM2608_00_decoding_inc_de     ;7\12  
  977.                
  978.                 inc h
  979.                 ld h,(hl)
  980.                 ld l,b
  981.                
  982.                 jp (hl)                                 ;10
  983.                 ;
  984. OPNA_YM2608_00_decoding_inc_de
  985.                 inc d                                   ;4
  986.                 call z,next_ram_page
  987.  
  988.                 inc h
  989.                 ld h,(hl)
  990.                 ld l,b
  991.                
  992.                 jp (hl)                                 ;10                                    
  993.  
  994. ;==============================================================================                                
  995.  
  996. OPNA_YM2608_01_decoder  ;тЄюЁр  яюыютшэр ўшяр
  997.  
  998.                 ld a,(de)                               ;7
  999.                 inc e                                   ;4
  1000.                
  1001.                 ld l,a                                  ;4
  1002.                 ld h,OPNA_YM2608_01_decode_table_haddr  ;7
  1003.                 ld b,(hl)                               ;7
  1004.        
  1005.                 jr z,OPNA_YM2608_01_decoding_inc_de     ;7\12  
  1006.                
  1007.                 inc h
  1008.                 ld h,(hl)
  1009.                 ld l,b
  1010.                
  1011.                 jp (hl)                                 ;10
  1012.                 ;
  1013. OPNA_YM2608_01_decoding_inc_de
  1014.                 inc d                                   ;4
  1015.                 call z,next_ram_page
  1016.  
  1017.                 inc h
  1018.                 ld h,(hl)
  1019.                 ld l,b
  1020.                
  1021.                 jp (hl)                                 ;10    
  1022.  
  1023. ;==============================================================================
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036. ;==============================================================================
  1037. OPNA_YM2608_00_r1x_rhythm_undoc
  1038. ;       ld a,5
  1039. ;       out ($FE),a
  1040.         ;dup 20
  1041.         ;halt
  1042.         ;edup
  1043.                 inc e
  1044.                 call z,inc_d_paging
  1045.                
  1046.                 jp (ix)
  1047. ;==============================================================================
  1048.  
  1049. ;==============================================================================
  1050. OPNA_YM2608_00_undoc
  1051. OPNA_YM2608_01_undoc
  1052.  
  1053.                 inc e
  1054.                 call z,inc_d_paging
  1055.                
  1056.                 jp (ix)
  1057. ;==============================================================================
  1058. OPNA_YM2608_simple_write_2_ym1
  1059.  
  1060.         ld h,%11111000  ;chip1
  1061.         ld bc,sFFFD
  1062.         out (c),h
  1063.        
  1064. ;       ld bc,sFFFD                     ;SSG 00
  1065. 2      
  1066.         nop
  1067.         nop
  1068.         in f,(c)
  1069.         jp m,2B
  1070.        
  1071.         out (c),a
  1072.  
  1073.                 ld a,(de)                      
  1074.                 inc e
  1075.                 call z,inc_d_paging     ;Єрь ётющ push bc !!!
  1076.  
  1077. 2      
  1078.         nop
  1079.         nop; ;DimkaM
  1080.         in f,(c)
  1081.         jp m,2B
  1082.        
  1083.         ld b,sBF        ;FD
  1084.         out (c),a
  1085.  
  1086.         jp (ix)
  1087.  
  1088. ;==============================================================================
  1089. OPNA_YM2608_simple_write_2_ym1_ssg
  1090.  
  1091.         ld h,%11111000  ;chip1
  1092.         ld bc,sFFFD
  1093.         out (c),h
  1094.        
  1095. ;       ld bc,sFFFD                     ;SSG 00
  1096. 2      
  1097.         nop
  1098.         nop
  1099.         in f,(c)
  1100.         jp m,2B
  1101.        
  1102.         out (c),a
  1103.  
  1104.                 ld a,(de)                      
  1105.                 inc e
  1106.                 call z,inc_d_paging     ;Єрь ётющ push bc !!!
  1107.  
  1108.  if wait_2203_sgg_2 = 1
  1109. 2      
  1110.         nop
  1111.         nop
  1112.         in f,(c)
  1113.         jp m,2B
  1114.  endif
  1115.        
  1116.         ld b,sBF        ;FD
  1117.         out (c),a
  1118.  
  1119.         jp (ix)
  1120.  
  1121. ;==============================================================================
  1122.  
  1123. ;==============================================================================
  1124. OPNA_YM2608_simple_write_2_ym2
  1125.  
  1126.         ld h,%11111001  ;chip2
  1127.         ld bc,sFFFD
  1128.         out (c),h
  1129.        
  1130. 2      
  1131.         nop
  1132.         nop
  1133.         in f,(c)
  1134.         jp m,2B
  1135.        
  1136.         out (c),a
  1137.  
  1138.                 ld a,(de)                      
  1139.                 inc e
  1140.                 call z,inc_d_paging
  1141.                
  1142. 2      
  1143.         nop
  1144.         nop
  1145.         in f,(c)
  1146.         jp m,2B
  1147.        
  1148.         ld b,sBF
  1149.         out (c),a
  1150.  
  1151.         jp (ix)
  1152.  
  1153. ;==============================================================================
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159. ;==============================================================================
  1160. OPNA_YM2608_00_r08_SSG_vol_cha
  1161.         ld h,%11111000  ;chip1                          ;SSG vol A
  1162.         ld bc,sFFFD
  1163.         out (c),h                                       ;r08
  1164.        
  1165. 2      
  1166.         nop
  1167.         nop
  1168.         in f,(c)
  1169.         jp m,2B
  1170.        
  1171.         out (c),a
  1172.  
  1173.                 ld a,(de)                      
  1174.                 inc e
  1175.                 call z,inc_d_paging
  1176. ;en_chk
  1177.         bit 4,a
  1178.         jp nz,cha_en_on
  1179.                        
  1180.                 ld h,a
  1181.                 and %00001111
  1182.                 sub ay_vol_down
  1183.                 jr nc,1F
  1184.                 xor a
  1185. 1
  1186.                 ld l,a
  1187.                 ld a,h
  1188.                 and %11110000
  1189.                 or l
  1190.        
  1191.                         ld (cha_vol_orig),a
  1192. cha_vol_cntrl = $+1 :   sub $00
  1193.                         jr nc,1F
  1194.                         xor a
  1195. 1      
  1196.  
  1197.  if wait_2203_sgg_2 = 1
  1198. 2      
  1199.         nop
  1200.         nop
  1201.         in f,(c)
  1202.         jp m,2B
  1203.  endif
  1204.        
  1205.         ld b,sBF        ;FD
  1206.         out (c),a
  1207.                         ld hl,$0018             ;18 00 jr
  1208.                         ;ld (cha_en_var),hl     ;
  1209.                                                 ;чряЁхЄ т√тюфр уЁюьъюёЄш юушср■∙хщ
  1210.  
  1211.  
  1212.  
  1213.         jp (ix)
  1214.        
  1215.  
  1216. ;==============================================================================
  1217. cha_en_on
  1218.                         ld hl,$79ED             ;ED 79 out (c),a
  1219.                         ;ld (cha_en_var),hl     ;      
  1220.                                                 ;ЁрчЁх°хэшх т√тюфр уЁюьъюёЄш юушср■∙хщ
  1221.  
  1222. ; ld a,1
  1223. ; out ($FE),a
  1224. ;       dup 50
  1225. ;       halt
  1226. ;       edup
  1227.  
  1228.         jp (ix)                        
  1229.                                
  1230. ;==============================================================================
  1231.  
  1232. ;==============================================================================
  1233. OPNA_YM2608_00_r09_SSG_vol_chb
  1234.         ld h,%11111000  ;chip1                          ;SSG vol B
  1235.         ld bc,sFFFD
  1236.         out (c),h                                       ;r09
  1237.        
  1238. 2      
  1239.         nop
  1240.         nop
  1241.         in f,(c)
  1242.         jp m,2B
  1243.        
  1244.         out (c),a
  1245.  
  1246.                 ld a,(de)                      
  1247.                 inc e
  1248.                 call z,inc_d_paging
  1249. ;en_chk
  1250.         bit 4,a
  1251.         jp nz,chb_en_on
  1252.        
  1253.                 ld h,a
  1254.                 and %00001111
  1255.                 sub ay_vol_down
  1256.                 jr nc,1F
  1257.                 xor a
  1258. 1
  1259.                 ld l,a
  1260.                 ld a,h
  1261.                 and %11110000
  1262.                 or l
  1263.                
  1264.                         ld (chb_vol_orig),a
  1265. chb_vol_cntrl = $+1 :   sub $00
  1266.                         jr nc,1F
  1267.                         xor a
  1268. 1
  1269.                        
  1270.  if wait_2203_sgg_2 = 1
  1271. 2      
  1272.         nop
  1273.         nop
  1274.         in f,(c)
  1275.         jp m,2B
  1276.  endif
  1277.        
  1278.  
  1279.         ld b,sBF        ;FD
  1280.         out (c),a
  1281.                         ld hl,$0018             ;18 00 jr
  1282.                 ;       ld (chb_en_var),hl      ;
  1283.                                                 ;чряЁхЄ т√тюфр уЁюьъюёЄш юушср■∙хщ
  1284.        
  1285.         jp (ix)
  1286.  
  1287. ;==============================================================================
  1288. chb_en_on
  1289.                         ld hl,$79ED             ;ED 79 out (c),a
  1290.                 ;       ld (chb_en_var),hl      ;
  1291.                                                 ;ЁрчЁх°хэшх т√тюфр уЁюьъюёЄш юушср■∙хщ
  1292.  
  1293. ; ld a,2
  1294. ; out ($FE),a
  1295. ;       dup 50
  1296. ;       halt
  1297. ;       edup
  1298.        
  1299.         jp (ix)                        
  1300.        
  1301. ;==============================================================================
  1302.  
  1303. ;==============================================================================
  1304. OPNA_YM2608_00_r0A_SSG_vol_chc
  1305.         ld h,%11111000  ;chip1                          ;SSG vol C
  1306.         ld bc,sFFFD
  1307.         out (c),h                                       ;r0A
  1308.        
  1309. 2      
  1310.         nop
  1311.         nop
  1312.         in f,(c)
  1313.         jp m,2B
  1314.        
  1315.         out (c),a
  1316.  
  1317.                 ld a,(de)                      
  1318.                 inc e
  1319.                 call z,inc_d_paging
  1320. ;en_chk
  1321.         bit 4,a
  1322.         jp nz,chc_en_on
  1323.        
  1324.                 ld h,a
  1325.                 and %00001111
  1326.                 sub ay_vol_down
  1327.                 jr nc,1F
  1328.                 xor a
  1329. 1
  1330.                 ld l,a
  1331.                 ld a,h
  1332.                 and %11110000
  1333.                 or l
  1334.        
  1335.                         ld (chc_vol_orig),a
  1336. chc_vol_cntrl = $+1 :   sub $00
  1337.                         jr nc,1F
  1338.                         xor a
  1339. 1
  1340.        
  1341.  if wait_2203_sgg_2 = 1
  1342. 2      
  1343.         nop
  1344.         nop
  1345.         in f,(c)
  1346.         jp m,2B
  1347.  endif
  1348.  
  1349.  
  1350.         ld b,sBF        ;FD
  1351.         out (c),a
  1352.                         ld hl,$0018             ;18 00 jr
  1353.                 ;       ld (chc_en_var),hl      ;
  1354.                                                 ;чряЁхЄ т√тюфр уЁюьъюёЄш юушср■∙хщ
  1355.         jp (ix)
  1356.        
  1357. ;==============================================================================
  1358. chc_en_on
  1359.                         ld hl,$79ED             ;ED 79 out (c),a
  1360.                 ;       ld (chc_en_var),hl      ;
  1361.                                                 ;ЁрчЁх°хэшх т√тюфр уЁюьъюёЄш юушср■∙хщ
  1362.  
  1363. ; ld a,3
  1364. ; out ($FE),a
  1365.  
  1366.  
  1367. ;       dup 50
  1368. ;       halt
  1369. ;       edup
  1370.        
  1371.         jp (ix)                        
  1372.                                        
  1373. ;==============================================================================
  1374.  
  1375.  
  1376.  
  1377.  
  1378. ;==============================================================================
  1379. OPNA_YM2608_00_r0B_SSG_en_low
  1380.  
  1381.  
  1382.                 ld a,(de)                      
  1383.                 inc e
  1384.                 call z,inc_d_paging
  1385.  
  1386.                 ld (en_select_chk),a
  1387.  
  1388.                 ld l,a
  1389.  
  1390.  
  1391. ;               call mount_tabs_page
  1392. ;              
  1393. ;               ld h,en_l_frq_convert_tab_haddr
  1394. ;               ld a,(hl)
  1395. ;               ld (en_l_frq_select_l_var),a
  1396. ;               inc h
  1397. ;               ld a,(hl)
  1398. ;               ld (en_l_frq_select_m_var),a
  1399. ;               inc h
  1400. ;               ld a,(hl)
  1401. ;               ld (en_l_frq_select_h_var),a
  1402. ;
  1403. ;               call mount_current_page
  1404.                
  1405.  
  1406.                 jp en_frq_select
  1407.  
  1408. ;==============================================================================        
  1409. OPNA_YM2608_00_r0C_SSG_en_high
  1410.  
  1411.        
  1412.                 ld a,(de)                      
  1413.                 inc e
  1414.                 call z,inc_d_paging
  1415.  
  1416.                 ld (en_select_chk),a
  1417.  
  1418.                 ld l,a
  1419.                
  1420. ;               call mount_tabs_page
  1421. ;
  1422. ;               ld h,en_h_frq_convert_tab_haddr
  1423. ;               ld a,(hl)
  1424. ;               ld (en_h_frq_select_l_var),a
  1425. ;               inc h
  1426. ;               ld a,(hl)
  1427. ;               ld (en_h_frq_select_m_var),a
  1428. ;               inc h
  1429. ;               ld a,(hl)
  1430. ;               ld (en_h_frq_select_h_var),a   
  1431. ;
  1432. ;               call mount_current_page
  1433.  
  1434.        
  1435.                 jp en_frq_select
  1436.  
  1437. ;==============================================================================
  1438.  
  1439.  
  1440. en_frq_select                                   ;т√тюф шыш      00її
  1441.                                                 ;       шыш     xx00
  1442.  
  1443.         display "en_frq_select ",$
  1444.  
  1445. en_select_chk = $+1 :   ld a,$00
  1446.                         and a
  1447.                         jp z,en_low_frq_out
  1448. en_high_frq_out
  1449.  
  1450. en_h_frq_select_m_var = $+2
  1451. en_h_frq_select_l_var = $+1 :   ld hl,$0000
  1452.                         ;       ld (en_frq_low),hl
  1453.                                
  1454. en_h_frq_select_h_var = $+1 :   ld a,$00
  1455.                         ;       ld (en_frq_high),a
  1456.  
  1457.  
  1458.                 jp (ix)
  1459.  
  1460. ;------------------------------------------------------------------------------
  1461.  
  1462.                
  1463. en_low_frq_out
  1464.  
  1465. en_l_frq_select_m_var = $+2
  1466. en_l_frq_select_l_var = $+1 :   ld hl,$0000
  1467.                         ;       ld (en_frq_low),hl
  1468.                                
  1469. en_l_frq_select_h_var = $+1 :   ld a,$00
  1470.                         ;       ld (en_frq_high),a             
  1471.  
  1472.                 jp (ix)
  1473. ;------------------------------------------------------------------------------
  1474.  
  1475. ;==============================================================================
  1476.  
  1477.  
  1478.  
  1479.  
  1480.  
  1481. ;==============================================================================
  1482.        
  1483. ;------------------------------------------------------------------------------
  1484. OPNA_YM2608_00_r0D_SSG_en_shape
  1485.                                 ;Єръ цх т√ч√трхЄ яхЁхшэшЎшрышчрЎш■ юушср■∙хщ
  1486.  
  1487.  
  1488.                 xor a                   ;ёсЁюё ёўхЄўшър юушср■∙хщ т 0
  1489.                 ld h,a
  1490.                 ld l,a
  1491.         ;       ld (en_cnt_low),hl
  1492.         ;       ld (en_cnt_high),a
  1493.                
  1494.        
  1495.                 ld a,(de)                      
  1496.                 inc e
  1497.                 call z,inc_d_paging
  1498.                
  1499. ;en_shape_decoding
  1500. ;0000 \___ 1 \_                                         ;1 D0
  1501. ;0001 \___ 1 \_
  1502. ;0010 \___ 1 \_
  1503. ;0011 \___ 1 \_
  1504. ;0100 /___      2 /_                                    ;2 U0
  1505. ;0101 /___      2 /_
  1506. ;0110 /___      2 /_
  1507. ;0111 /___      2 /_
  1508. ;1000 \\\\           3 \\                               ;3 DD
  1509. ;1001 \___ 1 \_
  1510. ;1010 \/\/                4 \/                          ;4 DU
  1511. ;1011 \^^^                     5 \^                     ;5 D1
  1512. ;1100 ////                          6 //                ;6 UU
  1513. ;1101 /^^^                               7 /^           ;7 U1
  1514. ;1110 /\/\                                    ;8 /\     l8 UD
  1515. ;1111 /___      2 /_
  1516.  
  1517.        
  1518.  
  1519.         ;       ld h,en_shape_select_tab_haddr
  1520.                 ld l,a
  1521.                 ld a,(hl)
  1522.         ;       ld (en_shape_var),a
  1523.  
  1524.                 inc h
  1525.                 ld a,(hl)
  1526.         ;       ld (en_stop_shape),a
  1527.                
  1528.                 inc h
  1529.                 ld a,(hl)
  1530.         ;       ld (en_stop_jp),a
  1531.  
  1532.  
  1533. ;уЁюьъюёЄ№ яЁш юёЄрэютъх 1\0
  1534.         ;       ld (en_stop_vol),a
  1535.  
  1536.  
  1537.  
  1538. ;єёЄрэютър чрЎшъыхээюёЄш юушср■∙хщ
  1539.                                         ;en_endless
  1540.                                         ;en_stop
  1541.         ;       ld hl,en_stop
  1542.         ;       ld (en_stop_var),hl     ;
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548. ; ld a,4
  1549. ; out ($FE),a
  1550.  
  1551.         jp (ix)
  1552. ;------------------------------------------------------------------------------
  1553.                                        
  1554. ;==============================================================================
  1555.  
  1556.  
  1557.  
  1558.  
  1559. ;==============================================================================
  1560.                                                
  1561. ;------------------------------------------------------------------------------
  1562. OPNA_YM2608_r28_key_on_off
  1563.  
  1564.                 ld a,(de)                      
  1565.                 inc e
  1566.                 call z,inc_d_paging
  1567.        
  1568.                 bit 2,a                                         ;z  = 123
  1569.                 jp nz,OPNA_YM2608_r28_key_on_off_ym2                            ;nz = 456
  1570. ;------------------------------------------------------------------------------
  1571. OPNA_YM2608_r28_key_on_off_ym1
  1572.  
  1573.                 ld h,%11111000  ;chip1
  1574.                 ld bc,sFFFD
  1575.                 out (c),h
  1576.                
  1577. ;               ld bc,sFFFD
  1578. 2      
  1579.         nop
  1580.         nop
  1581.         in f,(c)
  1582.                 jp m,2B
  1583.                
  1584.                 ld h,$28
  1585.                 out (c),h
  1586.        
  1587. 2      
  1588.         nop
  1589.         nop
  1590.         in f,(c)
  1591.                 jp m,2B
  1592.                
  1593.                 ld b,sBF        ;FD
  1594.                 out (c),a
  1595.        
  1596.                 jp (ix)
  1597. ;------------------------------------------------------------------------------
  1598.                                                
  1599. ;==============================================================================
  1600.                                                
  1601. ;------------------------------------------------------------------------------
  1602. OPNA_YM2608_r28_key_on_off_ym2
  1603.                 and %11111011
  1604.  
  1605.                 ld h,%11111001  ;chip2
  1606.                 ld bc,sFFFD
  1607.                 out (c),h
  1608.                
  1609. ;               ld bc,$FFFD
  1610. 2      
  1611.         nop
  1612.         nop
  1613.         in f,(c)
  1614.                 jp m,2B
  1615.                
  1616.                 ld h,$28
  1617.                 out (c),h
  1618.        
  1619. 2      
  1620.         nop
  1621.         nop
  1622.         in f,(c)
  1623.                 jp m,2B
  1624.                
  1625.                 ld b,sBF        ;FD
  1626.                 out (c),a
  1627.        
  1628.                 jp (ix)
  1629. ;------------------------------------------------------------------------------
  1630.                                                
  1631. ;==============================================================================
  1632.  
  1633.  
  1634.  
  1635.                                                
  1636. OPNA_YM2608_00_r2D_prescaler
  1637.  
  1638.         ;       inc e
  1639.         ;       call z,inc_d_paging
  1640.                 inc e
  1641.                 call z,inc_d_paging
  1642.                
  1643. ;       ld a,$7
  1644. ;       out ($FE),A
  1645. ;       ld b,$FF
  1646. ;       djnz $
  1647. ;               di : halt
  1648.                
  1649.                 jp (ix)
  1650.                                                
  1651.  
  1652.  
  1653.  
  1654.                                                
  1655. OPNA_YM2608_00_r2E_prescaler
  1656.  
  1657.         ;       inc e
  1658.         ;       call z,inc_d_paging
  1659.                 inc e
  1660.                 call z,inc_d_paging
  1661.                
  1662. ;       ld a,$6
  1663. ;       out ($FE),A
  1664. ;       ld b,$FF
  1665. ;       djnz $
  1666. ;      
  1667. ;               di : halt
  1668.                
  1669.                 jp (ix)
  1670.                                                
  1671.  
  1672.                                                
  1673. OPNA_YM2608_00_r2F_prescaler
  1674.  
  1675.         ;       inc e
  1676.         ;       call z,inc_d_paging
  1677.                 inc e
  1678.                 call z,inc_d_paging
  1679.  
  1680. ;       ld a,$5
  1681. ;       out ($FE),A
  1682. ;       ld b,$FF
  1683. ;       djnz $
  1684. ;      
  1685. ;               di : halt
  1686.                
  1687.                 jp (ix)
  1688.                                                
  1689.  
  1690.  
  1691. ;//===========================================================================
  1692.  
  1693.  
  1694. ;==============================================================================
  1695. s98_set_vol_a
  1696.                                         ;єяЁю∙хээ√щ трЁшрэЄ
  1697.  
  1698.                 rra : rra
  1699.                 cpl;%11000000
  1700.                 and %00111111
  1701.                        
  1702.                 ld (tl_ym1_vol_cntrl),a
  1703.                 ld (tl_ym2_vol_cntrl),a
  1704.                 ld (tl_ym1_vol_cntrl_2),a
  1705.                 ld (tl_ym2_vol_cntrl_2),a              
  1706.                
  1707.                 rra : rra
  1708.                 and $0F
  1709.                
  1710.                 ld (cha_vol_cntrl),a
  1711.                 ld (chb_vol_cntrl),a
  1712.                 ld (chc_vol_cntrl),a
  1713.  
  1714.                 ld l,a
  1715.  
  1716.         ld h,%11111000  ;chip1                         
  1717.         ld bc,sFFFD
  1718.         out (c),h      
  1719.  
  1720. ;------------------------------------------------------------------------------
  1721.  
  1722.         ld b,3
  1723.         ld de,cha_vol_orig
  1724.         ld h,$08                                ;SSG vol A
  1725.  
  1726. ssg_vol_chng_loop
  1727.         push bc
  1728.  
  1729.         ld b,sFF
  1730. 2      
  1731.         nop
  1732.         nop
  1733.         in f,(c)
  1734.   jp m,2B
  1735.         out (c),h                               ;r08
  1736.                 ld a,(de)
  1737.                 sub l
  1738.                 jr nc,1F
  1739.                 xor a
  1740. 1
  1741.  if wait_2203_sgg_2 = 1
  1742. 2      
  1743.         nop
  1744.         nop
  1745.         in f,(c)
  1746.   jp m,2B
  1747.  endif
  1748.         ld b,sBF ;FD
  1749.         out (c),a
  1750.        
  1751.         inc h
  1752.         inc de
  1753.        
  1754.         pop bc
  1755.         djnz ssg_vol_chng_loop
  1756.        
  1757. ;------------------------------------------------------------------------------
  1758.  
  1759.         ld hl,TL_ch1_op1_ym1_orig
  1760.         ld de,TL_regs_list
  1761.        
  1762.         ld b,12
  1763.        
  1764. TL_ym1_vol_loop
  1765.         push bc
  1766.  
  1767. ;OPNA_YM2608_simple_write_2_ym1
  1768.         ld a,%11111000  ;chip1
  1769.         ld bc,sFFFD
  1770.         out (c),a
  1771.        
  1772. ;       ld bc,sFFFD
  1773. 2      
  1774.         nop
  1775.         nop
  1776.         in f,(c)
  1777.         jp m,2B
  1778.        
  1779.         ld a,(de)
  1780.         out (c),a       ;reg
  1781.         inc de
  1782.  
  1783. 2      
  1784.         nop
  1785.         nop
  1786.         in f,(c)
  1787.         jp m,2B
  1788.        
  1789.         ld a,(hl)
  1790. tl_ym1_vol_cntrl_2 = $+1 :      add $00
  1791.                                 cp $80
  1792.                                 jr c,1F
  1793.                                 ld a,$7F
  1794. 1
  1795.         ld b,sBF        ;FD
  1796.         out (c),a
  1797.         inc hl
  1798.        
  1799.        
  1800.         pop bc
  1801.         djnz TL_ym1_vol_loop
  1802.        
  1803. ;------------------------------------------------------------------------------
  1804.  
  1805.         ld de,TL_regs_list
  1806.        
  1807.         ld b,12
  1808.        
  1809. TL_ym2_vol_loop
  1810.         push bc
  1811.  
  1812. ;OPNA_YM2608_simple_write_2_ym2
  1813.         ld a,%11111001  ;chip2
  1814.         ld bc,sFFFD
  1815.         out (c),a
  1816.        
  1817. ;       ld bc,sFFFD
  1818. 2      
  1819.         nop
  1820.         nop
  1821.         in f,(c)
  1822.         jp m,2B
  1823.        
  1824.         ld a,(de)
  1825.         out (c),a       ;reg
  1826.         inc de
  1827.  
  1828. 2      
  1829.         nop
  1830.         nop
  1831.         in f,(c)
  1832.         jp m,2B
  1833.        
  1834.         ld a,(hl)
  1835. tl_ym2_vol_cntrl_2 = $+1 :      add $00
  1836.                                 cp $80
  1837.                                 jr c,1F
  1838.                                 ld a,$7F
  1839. 1
  1840.         ld b,sBF        ;FD
  1841.         out (c),a
  1842.         inc hl
  1843.        
  1844.        
  1845.         pop bc
  1846.         djnz TL_ym2_vol_loop   
  1847.        
  1848.                 ret
  1849.  
  1850. ;==============================================================================
  1851.  
  1852.  
  1853.  
  1854.  
  1855.  
  1856. ;==============================================================================
  1857.  
  1858. OPNA_YM2608_TL_ch1_op1_ym1      ;40 TOTAL LEVEL
  1859.       ld hl,TL_ch1_op1_ym1_orig
  1860.       push hl
  1861.         jr OPNA_YM2608_TL_ym1
  1862. OPNA_YM2608_TL_ch2_op1_ym1      ;41 TOTAL LEVEL
  1863.       ld hl,TL_ch2_op1_ym1_orig
  1864.       push hl
  1865.         jr OPNA_YM2608_TL_ym1
  1866. OPNA_YM2608_TL_ch3_op1_ym1      ;42 TOTAL LEVEL
  1867.       ld hl,TL_ch3_op1_ym1_orig
  1868.       push hl
  1869.         jr OPNA_YM2608_TL_ym1
  1870.      
  1871. OPNA_YM2608_TL_ch1_op2_ym1      ;44 TOTAL LEVEL
  1872.       ld hl,TL_ch1_op2_ym1_orig
  1873.       push hl
  1874.         jr OPNA_YM2608_TL_ym1
  1875. OPNA_YM2608_TL_ch2_op2_ym1      ;45 TOTAL LEVEL
  1876.       ld hl,TL_ch2_op2_ym1_orig
  1877.       push hl
  1878.         jr OPNA_YM2608_TL_ym1
  1879. OPNA_YM2608_TL_ch3_op2_ym1      ;46 TOTAL LEVEL
  1880.       ld hl,TL_ch3_op2_ym1_orig
  1881.       push hl
  1882.         jr OPNA_YM2608_TL_ym1
  1883.      
  1884. OPNA_YM2608_TL_ch1_op3_ym1      ;48 TOTAL LEVEL
  1885.       ld hl,TL_ch1_op3_ym1_orig
  1886.       push hl
  1887.         jr OPNA_YM2608_TL_ym1
  1888. OPNA_YM2608_TL_ch2_op3_ym1      ;49 TOTAL LEVEL
  1889.       ld hl,TL_ch2_op3_ym1_orig
  1890.       push hl
  1891.         jr OPNA_YM2608_TL_ym1
  1892. OPNA_YM2608_TL_ch3_op3_ym1      ;4A TOTAL LEVEL
  1893.       ld hl,TL_ch3_op3_ym1_orig
  1894.       push hl
  1895.         jr OPNA_YM2608_TL_ym1
  1896.      
  1897. OPNA_YM2608_TL_ch1_op4_ym1      ;4C TOTAL LEVEL
  1898.       ld hl,TL_ch1_op4_ym1_orig
  1899.       push hl
  1900.         jr OPNA_YM2608_TL_ym1
  1901. OPNA_YM2608_TL_ch2_op4_ym1      ;4D TOTAL LEVEL
  1902.       ld hl,TL_ch2_op4_ym1_orig
  1903.       push hl
  1904.         jr OPNA_YM2608_TL_ym1
  1905. OPNA_YM2608_TL_ch3_op4_ym1      ;4E TOTAL LEVEL
  1906.       ld hl,TL_ch3_op4_ym1_orig
  1907.       push hl
  1908. ;       jr OPNA_YM2608_TL_ym1
  1909.  
  1910. OPNA_YM2608_TL_ym1
  1911.                
  1912. ;OPNA_YM2608_simple_write_2_ym1
  1913.         ld h,%11111000  ;chip1
  1914.         ld bc,sFFFD
  1915.         out (c),h
  1916.        
  1917. ;       ld bc,sFFFD                     ;SSG 00
  1918. 2      
  1919.         nop
  1920.         nop
  1921.         in f,(c)
  1922.         jp m,2B
  1923.        
  1924.         out (c),a
  1925.  
  1926.                 ld a,(de)                      
  1927.                 inc e
  1928.                 call z,inc_d_paging     ;Єрь ётющ push bc !!!
  1929.  
  1930. 2      
  1931.         nop
  1932.         nop
  1933.         in f,(c)
  1934.         jp m,2B
  1935.        
  1936.                                 pop hl
  1937.                                 ld (hl),a
  1938. tl_ym1_vol_cntrl = $+1 :        add $00
  1939.                                 cp $80
  1940.                                 jr c,1F
  1941.                                 ld a,$7F
  1942. 1
  1943.         ld b,sBF        ;FD
  1944.         out (c),a
  1945.  
  1946.  
  1947.         jp (ix)
  1948.        
  1949. OPNA_YM2608_TL_ch1_op1_ym2      ;40 TOTAL LEVEL
  1950.       ld hl,TL_ch1_op1_ym2_orig
  1951.       push hl
  1952.         jr OPNA_YM2608_TL_ym2
  1953. OPNA_YM2608_TL_ch2_op1_ym2      ;41 TOTAL LEVEL
  1954.       ld hl,TL_ch2_op1_ym2_orig
  1955.       push hl
  1956.         jr OPNA_YM2608_TL_ym2
  1957. OPNA_YM2608_TL_ch3_op1_ym2      ;42 TOTAL LEVEL
  1958.       ld hl,TL_ch3_op1_ym2_orig
  1959.       push hl
  1960.         jr OPNA_YM2608_TL_ym2
  1961.      
  1962. OPNA_YM2608_TL_ch1_op2_ym2      ;44 TOTAL LEVEL
  1963.       ld hl,TL_ch1_op2_ym2_orig
  1964.       push hl
  1965.         jr OPNA_YM2608_TL_ym2
  1966. OPNA_YM2608_TL_ch2_op2_ym2      ;45 TOTAL LEVEL
  1967.       ld hl,TL_ch2_op2_ym2_orig
  1968.       push hl
  1969.         jr OPNA_YM2608_TL_ym2
  1970. OPNA_YM2608_TL_ch3_op2_ym2      ;46 TOTAL LEVEL
  1971.       ld hl,TL_ch3_op2_ym2_orig
  1972.       push hl
  1973.         jr OPNA_YM2608_TL_ym2
  1974.      
  1975. OPNA_YM2608_TL_ch1_op3_ym2      ;48 TOTAL LEVEL
  1976.       ld hl,TL_ch1_op3_ym2_orig
  1977.       push hl
  1978.         jr OPNA_YM2608_TL_ym2
  1979. OPNA_YM2608_TL_ch2_op3_ym2      ;49 TOTAL LEVEL
  1980.       ld hl,TL_ch2_op3_ym2_orig
  1981.       push hl
  1982.         jr OPNA_YM2608_TL_ym2
  1983. OPNA_YM2608_TL_ch3_op3_ym2      ;4A TOTAL LEVEL
  1984.       ld hl,TL_ch3_op3_ym2_orig
  1985.       push hl
  1986.         jr OPNA_YM2608_TL_ym2
  1987.      
  1988. OPNA_YM2608_TL_ch1_op4_ym2      ;4C TOTAL LEVEL
  1989.       ld hl,TL_ch1_op4_ym2_orig
  1990.       push hl
  1991.         jr OPNA_YM2608_TL_ym2
  1992. OPNA_YM2608_TL_ch2_op4_ym2      ;4D TOTAL LEVEL
  1993.       ld hl,TL_ch2_op4_ym2_orig
  1994.       push hl
  1995.         jr OPNA_YM2608_TL_ym2
  1996. OPNA_YM2608_TL_ch3_op4_ym2      ;4E TOTAL LEVEL
  1997.       ld hl,TL_ch3_op4_ym2_orig
  1998.       push hl
  1999. ;       jr OPNA_YM2608_TL_ym2
  2000.  
  2001. OPNA_YM2608_TL_ym2
  2002.  
  2003. ;OPNA_YM2608_simple_write_2_ym2
  2004.         ld h,%11111001  ;chip2
  2005.         ld bc,sFFFD
  2006.         out (c),h
  2007.        
  2008. 2      
  2009.         nop
  2010.         nop
  2011.         in f,(c)
  2012.         jp m,2B
  2013.        
  2014.         out (c),a
  2015.  
  2016.                 ld a,(de)                      
  2017.                 inc e
  2018.                 call z,inc_d_paging
  2019.                
  2020. 2      
  2021.         nop
  2022.         nop
  2023.         in f,(c)
  2024.         jp m,2B
  2025.  
  2026.                                 pop hl
  2027.                                 ld (hl),a
  2028. tl_ym2_vol_cntrl = $+1 :        add $00
  2029.                                 cp $80
  2030.                                 jr c,1F
  2031.                                 ld a,$7F
  2032. 1      
  2033.         ld b,sBF
  2034.         out (c),a
  2035.  
  2036.         jp (ix)
  2037.  
  2038. ;==============================================================================
  2039.  
  2040.  
  2041.  
  2042. PLAY:
  2043.                
  2044. s98_player_play_var = $ :       nop             ;nop - play
  2045.                                                 ;ret - stop
  2046.  
  2047.                         xor a; ld a,$00                 ;nop    ;play unlock
  2048.  
  2049.                         call mount_current_page
  2050.  
  2051. player_code
  2052.                         ld ix,command_decoding
  2053.  
  2054.  
  2055. player_reg_DE = $+1 :   ld de,$C080
  2056.  
  2057.  
  2058.        
  2059. player_last_addr = $+1 : jp command_decoding
  2060.  
  2061. command_decoding
  2062.                 ld a,(de)                               ;7
  2063.                 inc e                                   ;4
  2064.  
  2065.                 jr nz,command_decoding_no_inc_de        ;7\12
  2066. command_decoding_inc_de
  2067.                 inc d                                   ;4
  2068.                 call z,next_ram_page
  2069. command_decoding_no_inc_de     
  2070.                
  2071. ;єяЁю∙хээ√щ фхъюфхЁ
  2072.                 ld hl,OPNA_YM2608_00_decoder    ;1st device out1
  2073.             and a
  2074.         jr z,1f
  2075.                 ld hl,OPNA_YM2608_01_decoder    ;1st device out2
  2076.             cp $01
  2077.         jr z,1f
  2078.                 ld hl,command_FE        ;nsync
  2079.             cp $FE
  2080.         jr z,1f
  2081.                 ld hl,command_FF        ;sync
  2082.             cp $FF
  2083.         jr z,1f
  2084.                 ld hl,command_FD        ;loop
  2085.             cp $FD
  2086.         jr z,1f    
  2087.                 ;ld hl,command_undoc
  2088.                
  2089.                                 ld a,$07
  2090.                                 out ($FE),a
  2091.                                         ;dup 50
  2092.                                         ;halt
  2093.                                         ;edup
  2094.                
  2095.                         inc e
  2096.                         call z,inc_d_paging
  2097.                         inc e
  2098.                         call z,inc_d_paging
  2099.                         jp (ix)
  2100.                
  2101. 1
  2102.                 jp (hl)                                 ;10
  2103.  
  2104. ;------------------------------------------------------------------------------
  2105.  
  2106.  
  2107. ;------------------------------------------------------------------------------
  2108. player_frame_complete
  2109.                 ld (player_reg_DE),DE
  2110.                
  2111.                 ld hl,command_decoding
  2112.                 ld (player_last_addr),hl
  2113.  
  2114. /*
  2115.         if wait_2203_sgg = 0
  2116.        
  2117.         ld h,%11111000          ;chip1
  2118.         ld bc,sFFFD
  2119.        
  2120.         out (c),h
  2121. 2      
  2122.         nop
  2123.         nop
  2124.         in f,(c)
  2125.         jp m,2B
  2126.        
  2127.         ;ld h,%11111001         ;chip2
  2128.         inc h
  2129.        
  2130.         out (c),h
  2131. 2      
  2132.         nop
  2133.         nop
  2134.         in f,(c)
  2135.         jp m,2B
  2136.  
  2137.         endif
  2138. */             
  2139.  
  2140.        
  2141.                 ret
  2142.        
  2143. ;------------------------------------------------------------------------------
  2144.  
  2145.        
  2146. ;------------------------------------------------------------------------------
  2147. player_frame_complete_when_FE
  2148.                 ld (player_reg_BC),BC
  2149.                 ld (player_reg_DE),DE
  2150.                 ld (player_reg_HL),HL
  2151.                 push af
  2152.                 pop hl
  2153.                 ld (player_reg_AF),HL
  2154.                
  2155.                 ld hl,execute_restoring_when_FE
  2156.                 ld (player_last_addr),hl
  2157.                 ret
  2158.  
  2159. ;------------------------------------------------------------------------------
  2160. execute_restoring_when_FE
  2161. player_reg_AF = $+1 :   ld hl,$0000
  2162.                         push hl
  2163.                         pop af
  2164. player_reg_BC = $+1 :   ld bc,$0000
  2165. player_reg_HL = $+1 :   ld hl,$0000
  2166.  
  2167.  
  2168.                 jp sync_FE_loop_continue
  2169.                
  2170. ;==============================================================================
  2171.  
  2172.  
  2173.  
  2174. ;==============================================================================
  2175. TL_regs_list
  2176.         defb $40        ;TOTAL LEVEL
  2177.         defb $41        ;TOTAL LEVEL
  2178.         defb $42        ;TOTAL LEVEL
  2179.         defb $44        ;TOTAL LEVEL
  2180.         defb $45        ;TOTAL LEVEL
  2181.         defb $46        ;TOTAL LEVEL
  2182.         defb $48        ;TOTAL LEVEL
  2183.         defb $49        ;TOTAL LEVEL
  2184.         defb $4A        ;TOTAL LEVEL
  2185.         defb $4C        ;TOTAL LEVEL
  2186.         defb $4D        ;TOTAL LEVEL
  2187.         defb $4E        ;TOTAL LEVEL
  2188.        
  2189. ;==============================================================================
  2190.  
  2191.  
  2192.  
  2193.  
  2194. ;==============================================================================
  2195.  
  2196. ; яхЁхьхээ√х
  2197.  
  2198.  
  2199. cha_vol_orig            defb $00        ;ўшЄр■Єё  яюфЁ ф
  2200. chb_vol_orig            defb $00
  2201. chc_vol_orig            defb $00
  2202.  
  2203. TL_ch1_op1_ym1_orig     defb $7F
  2204. TL_ch2_op1_ym1_orig     defb $7F
  2205. TL_ch3_op1_ym1_orig     defb $7F
  2206. TL_ch1_op2_ym1_orig     defb $7F
  2207. TL_ch2_op2_ym1_orig     defb $7F
  2208. TL_ch3_op2_ym1_orig     defb $7F
  2209. TL_ch1_op3_ym1_orig     defb $7F
  2210. TL_ch2_op3_ym1_orig     defb $7F
  2211. TL_ch3_op3_ym1_orig     defb $7F
  2212. TL_ch1_op4_ym1_orig     defb $7F
  2213. TL_ch2_op4_ym1_orig     defb $7F
  2214. TL_ch3_op4_ym1_orig     defb $7F
  2215.  
  2216. TL_ch1_op1_ym2_orig     defb $7F
  2217. TL_ch2_op1_ym2_orig     defb $7F
  2218. TL_ch3_op1_ym2_orig     defb $7F
  2219. TL_ch1_op2_ym2_orig     defb $7F
  2220. TL_ch2_op2_ym2_orig     defb $7F
  2221. TL_ch3_op2_ym2_orig     defb $7F
  2222. TL_ch1_op3_ym2_orig     defb $7F
  2223. TL_ch2_op3_ym2_orig     defb $7F
  2224. TL_ch3_op3_ym2_orig     defb $7F
  2225. TL_ch1_op4_ym2_orig     defb $7F
  2226. TL_ch2_op4_ym2_orig     defb $7F
  2227. TL_ch3_op4_ym2_orig     defb $7F
  2228.  
  2229.  
  2230.  
  2231.  
  2232.  
  2233. ;==============================================================================
  2234. ;memory paging procedures
  2235. ;==============================================================================
  2236.                                                
  2237. inc_d_paging
  2238.                         inc d
  2239.                         ret nz
  2240.         display "next ram page ",$                     
  2241. next_ram_page                   push af
  2242.                                 push bc
  2243.                                 push hl
  2244. ;current_ram_page = $+1 :       ld a,$00
  2245.                                 ld a,(current_ram_page)
  2246.                                 inc a
  2247.                                 ld (current_ram_page),a
  2248.                                 ld l,a
  2249.                                
  2250.                                         ;ld h,s98_file00_pages_list_haddr
  2251.                                                 ;;ld a,(load_s98_file_number_haddr)
  2252.                                                 ;;ld h,a
  2253.                                                 ld h,load_s98_file_number_haddr
  2254.                                         ld a,(hl)
  2255.        
  2256.                                 push de
  2257.                                 ;push hl
  2258.                                 SETPGC000
  2259.                                 ;pop hl
  2260.                                 pop de
  2261.                                
  2262.                 ld d,$C0
  2263.                 pop hl
  2264.                 pop bc
  2265.                 pop af
  2266.                 ret
  2267.                
  2268. ;==============================================================================        
  2269.  
  2270.  
  2271. ;==============================================================================
  2272. mount_ram_a
  2273.                                 ld (current_ram_page),a
  2274.                                 ld l,a
  2275.                                
  2276.                                 ;ld h,s98_file00_pages_list_haddr
  2277.                                         ;;ld a,(load_s98_file_number_haddr)
  2278.                                         ;;ld h,a
  2279.                                         ld h,load_s98_file_number_haddr
  2280.                                 ld a,(hl)
  2281.                                                
  2282.  
  2283.                                 push de
  2284.                                 push hl
  2285.                                 SETPGC000
  2286.                                 pop hl
  2287.                                 pop de
  2288.                                        
  2289.                 ret
  2290.                
  2291. ;==============================================================================
  2292.  
  2293.  
  2294. ;==============================================================================
  2295. mount_current_page
  2296.                                 ld a,(current_ram_page)
  2297.                                 ld l,a
  2298.                        
  2299.                                 ;ld h,s98_file00_pages_list_haddr
  2300.                                         ;;ld a,(load_s98_file_number_haddr)
  2301.                                         ;;ld h,a
  2302.                                         ld h,load_s98_file_number_haddr
  2303.                                 ld a,(hl)                      
  2304.                                
  2305.                                 push de
  2306.                                 push hl
  2307.                                 SETPGC000
  2308.                                 pop hl
  2309.                                 pop de
  2310.         ret
  2311.                        
  2312. ;==============================================================================
  2313.  
  2314. s98_end
  2315.  
  2316.         savebin "s98_plr.bin",s98_begin,s98_end-s98_begin
  2317.         LABELSLIST "..\..\..\us\user.l",1