Subversion Repositories tsfmpro

Rev

Rev 547 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

  1. ;--------------------------------------------------------------------
  2. ; Описание: Проигрывающий модуль музыкального редактора E-Tracker
  3. ; портирован  с компьютера Sam Coupe
  4. ; Автор порта: Тарасов М.Н.(Mick),2010
  5. ;--------------------------------------------------------------------
  6. ;-------------------------------------------------------------------
  7. ; описание: Инициализация проигрывателя
  8. ; параметры: нет
  9. ; возвращаемое  значение: нет
  10. ;---------------------------------------------------------------------
  11. EPlayer_Init:
  12.                 ld      hl,0                            ;адрес музыки
  13.                 jp      loc_0_83EC                      ;переход на инициализацию проигрывателя
  14. ;-------------------------------------------------------------------
  15. ; описание: Проигрывание текущей ноты
  16. ; параметры: нет
  17. ; возвращаемое  значение: нет
  18. ;---------------------------------------------------------------------
  19. EPlayer_Play:
  20.                 ld      a,1                             ;текущий канал
  21.                 dec     a
  22.                 jr      nz,loc_0_802A                  ;вывели информацию во все каналы?
  23.                 ld      ix,word_0_833A                 ;да,переходим к подготовки новых значений
  24.                 ld      b,6                            ;число каналов
  25.  
  26. loc_0_8011:
  27.                 push    bc
  28.                 call    sub_0_81A4
  29.                 ld      bc,19h                         ;количество байт для одного канала
  30.                 add     ix,bc
  31.                 pop     bc
  32.                 djnz    loc_0_8011
  33.                 ld      hl,(word_0_83EA)
  34.                 ld      a,h
  35.                 call    sub_0_8157
  36.                 or      l
  37.                 ld      (loc_0_80E5+1),a
  38.  
  39. loc_0_8028:
  40.                 ld      a,6                           ;установим текущий канал для обновления
  41.  
  42. loc_0_802A:
  43.                 ld      (EPlayer_Play+1),a              ;установим новое значение текущего канала
  44.                 ld      ix,word_0_833A                
  45.                 call    sub_0_826A
  46.                 ld      (EAmplitude_ch0),a               ;Amplitude 0 right/left
  47.                 ld      (EFrequency_ch0),hl
  48.                 push    hl
  49.                 ld      hl,0
  50.                 call    sub_0_815C
  51.                 ld      (loc_0_8055+1),hl
  52.                 ld      (loc_0_80E3+1),a
  53.                 ld      ix,word_0_8353
  54.                 call    sub_0_826A
  55.                 ld      (EAmplitude_ch1),a               ;Amplitude 1 right/left
  56.                 ld      (EFrequency_ch0+1),hl
  57.                 push    hl
  58.  
  59. loc_0_8055:
  60.                 ld      hl,0
  61.                 call    sub_0_815C
  62.                 ld      (loc_0_8073+1),hl
  63.                 rl      h
  64.                 jr      nc,loc_0_8065
  65.                 ld      (loc_0_80E3+1),a
  66.  
  67. loc_0_8065:
  68.                 ld      ix,word_0_836C
  69.                 call    sub_0_826A
  70.                 ld      (EAmplitude_ch2),a              ;Amplitude 2 right/left
  71.                 ld      (EFrequency_ch2),hl
  72.                 push    hl
  73.  
  74. loc_0_8073:
  75.                 ld      hl,0
  76.                 call    sub_0_815C
  77.                 ld      (loc_0_8091+1),hl
  78.                 rl      h
  79.                 jr      nc,loc_0_8083
  80.                 ld      (loc_0_80E3+1),a
  81.  
  82. loc_0_8083:
  83.                 ld      ix,word_0_8385
  84.                 call    sub_0_826A
  85.                 ld      (EAmplitude_ch3),a              ;Amplitude 3 right/left
  86.                 ld      (EFrequency_ch2+1),hl
  87.                 push    hl
  88.  
  89. loc_0_8091:
  90.                 ld      hl,0
  91.                 call    sub_0_815C
  92.                 ld      (loc_0_80AB+1),hl
  93.                 ld      (loc_0_80DD+1),a
  94.  
  95.                 ld      ix,word_0_839E
  96.                 call    sub_0_826A
  97.                 ld      (EAmplitude_ch4),a              ;Amplitude 4 right/left
  98.                 ld      (EFrequency_ch4),hl
  99.                 push    hl
  100.  
  101. loc_0_80AB:
  102.                 ld      hl,0
  103.                 call    sub_0_815C
  104.                 ld      (loc_0_80C9+1),hl
  105.                 rl      h
  106.                 jr      nc,loc_0_80BB
  107.                 ld      (loc_0_80DD+1),a
  108.  
  109. loc_0_80BB:
  110.                 ld      ix,word_0_83B7
  111.                 call    sub_0_826A
  112.                 ld      (EAmplitude_ch5),a                ;Amplitude 5 right/left
  113.                 ld      (EFrequency_ch4+1),hl
  114.                 push    hl
  115.  
  116. loc_0_80C9:
  117.                 ld      hl,0
  118.                 call    sub_0_815C
  119.                 rr      l
  120.                 rr      l
  121.                 rr      h
  122.                 rr      h
  123.                 ld      (EFrequency_en),hl               ;Freqency and Noise enable
  124.                 rlca   
  125.                 jr      c,loc_0_80E0
  126.  
  127. loc_0_80DD:
  128.                 ld      a,0
  129.                 rlca   
  130.  
  131. loc_0_80E0:
  132.                 rlca   
  133.                 rlca   
  134.                 rlca   
  135.  
  136. loc_0_80E3:
  137.                 or      0
  138.  
  139. loc_0_80E5:
  140.                 or      0
  141.                 ld      (ENoise_gen),a                  ;Noise generator 0 and 1
  142.                 pop     af
  143.                 pop     bc
  144.                 call    sub_0_8157
  145.                 or      b
  146.                 ld      h,a
  147.                 pop     af
  148.                 pop     bc
  149.                 call    sub_0_8157
  150.                 or      b
  151.                 ld      l,a
  152.                 ld      (EOctave_ch2),hl                ;Octave 2 and 3 and 4 and 5
  153.                 pop     af
  154.                 pop     bc
  155.                 call    sub_0_8157
  156.                 or      b
  157.                 ld      (EOctave_ch0),a                ;Octave 1 and 0
  158.                 ld      bc,0xfffd
  159.                 ld      de,1C01h                       ;регистр 1Сh,бит SE=1
  160.                 out     (c),d
  161.                 ld b,0xbf
  162.                 out     (c),e                          ;разрешить все каналы
  163.                 ld      hl,EEnvelope_gen1              ;таблица данных звукового канала
  164.                 ld      d,19h                          ;размер данных для одного канала
  165.  
  166. loc_0_8114:
  167.                 ld b,0xff
  168.                 out     (c),d                          ;загружаем номер регистра
  169.                 ld b,0xbf
  170.                 ld      a,(hl)                         ;читаем значение из таблицы
  171.                 out     (c),a                          ;выводим в порт
  172.                 dec     d                               ;следующий байт
  173.                 ret     m                               ;выход по окончании записи
  174.                 dec     hl                              ;переходим к следующим значениям
  175.                 jr      loc_0_8114                      ;продолжим запись в порт
  176.  
  177.                 db    5  
  178.                 db  21h
  179.                 db  3Ch
  180.                 db  55h
  181.                 db  6Dh
  182.                 db  84h
  183.                 db  99h
  184.                 db 0ADh
  185.                 db 0C0h
  186.                 db 0D2h
  187.                 db 0E3h
  188.                 db 0F3h
  189. unk_0_812C:     db 0FEh
  190.                 db    1  
  191.                 db    0  
  192.                 db    0  
  193.                 db 0FCh
  194. unk_0_8131:     db    0
  195.                 db  96h
  196.                 db  9Eh
  197.                 db  9Ah
  198.                 db  86h
  199.                 db  8Eh
  200.                 db  8Ah
  201.                 db  97h
  202.                 db  9Fh
  203.                 db  9Bh
  204.                 db  87h
  205.                 db  8Fh
  206.                 db  8Bh
  207. unk_0_813E:     db 0FEh
  208.                 db    0  
  209. unk_0_8140:     db 0FFh
  210.                 db 0D2h
  211.                 db  57h
  212.                 db  72h
  213.                 db    0
  214.                 db  52h
  215.                 db 0ABh
  216.                 db  51h
  217.                 db  61h
  218.                 db  50h
  219.                 db  52h
  220.                 db  30h
  221.                 db 0C2h
  222.                 db  2Eh
  223.                 db  35h
  224.                 db  21h
  225.                 db  29h
  226.                 db  11h
  227.                 db  41h
  228.                 db  0Fh
  229.                 db  46h
  230.                 db    0
  231.                 db  3Ah
  232.  
  233.  
  234. sub_0_8157:
  235.                 rlca   
  236.                 rlca   
  237.                 rlca   
  238.                 rlca   
  239.                 ret    
  240.  
  241. sub_0_815C:
  242.                 ex      af,af'
  243.                 rrca   
  244.                 rr      l
  245.                 rrca   
  246.                 rr      h
  247.                 ret    
  248.  
  249. sub_0_8164:
  250.                 sla     c
  251.                 ld      b,0
  252.                 jr      nc, loc_0_816B
  253.                 inc     b
  254.  
  255. loc_0_816B:
  256.                 add     hl,bc
  257.  
  258. sub_0_8169:
  259.                 ld      c,(hl)                          ;читаем  младший байт адреса смещения
  260.                 inc     hl
  261.                 ld      b,(hl)                         ;читаем старший байт адреса смещения
  262.                 inc     hl                              ;переходим к следующему адресу
  263.                 push    hl
  264.  
  265. loc_0_816E:
  266.                 ld      hl,0                           ;адрес музыки
  267.                 add     hl,bc                          ;получим адрес таблицы
  268.                 ld      c,l                            ;младший байт адреса
  269.                 ld      b,h                            ;старший байт адреса
  270.                 pop     hl
  271.                 ret    
  272.  
  273. loc_0_8176:
  274.                 ld      hl,0
  275.                 call    sub_0_8164
  276.                 ld      (ix++0Fh),c
  277.                 ld      (ix++10h),b
  278.                 ld      hl,unk_0_812C
  279.                 ld      (ix++4),l
  280.                 ld      (ix++5),h
  281.                 jr      loc_0_81D4
  282. loc_0_818D:
  283.                 ld      hl,0
  284.                 call    sub_0_8164
  285.                 ld      (ix++11h),c
  286.                 ld      (ix++12h),b
  287.                 ld      hl,unk_0_813E
  288.                 ld      (ix++8),l
  289.                 ld      (ix++9),h
  290.                 jr      loc_0_81E0
  291. sub_0_81A4:
  292.                 dec     (ix++13h)
  293.                 ret     p
  294.                 ld      a,b
  295.                 cp      3
  296.                 ld      hl,EEnvelope_gen0
  297.                 jr      nc,loc_0_81B1
  298.                 inc     hl
  299. loc_0_81B1:
  300.                 ld      (loc_0_81FB+1),hl
  301. loc_0_81B4:
  302.                 ld      e,(ix++0)
  303.                 ld      d,(ix++1)
  304. loc_0_81BA:
  305.                 ld      hl,unk_0_8140
  306. loc_0_81BD:
  307.                 ld      a,(de)
  308.                 inc     hl
  309.                 sub     (hl)
  310.                 inc     hl
  311.                 jr      c,loc_0_81BD
  312.                 inc     de
  313.                 ld      c,a
  314.                 ld      a,(hl)
  315.                 ld      (loc_0_81C9+1),a
  316. loc_0_81C9:
  317.                 jr      loc_0_81C9
  318. loc_0_81CB:
  319.                 ld      (ix++0Eh),c
  320.                 ld      c,(ix++0Fh)
  321.                 ld      b,(ix++10h)
  322. loc_0_81D4:
  323.                 ld      (ix++2),c
  324.                 ld      (ix++3),b
  325.                 ld      c,(ix++11h)
  326.                 ld      b,(ix++12h)
  327. loc_0_81E0:
  328.                 ld      (ix++6),c
  329.                 ld      (ix++7),b
  330.                 ld      (ix++14h),1
  331.                 ld      (ix++15h),1
  332.                 ld      (ix++16h),1
  333.                 jr      loc_0_81BA
  334. loc_0_81F4:
  335.                 ld      b,0
  336.                 ld      hl,unk_0_8131
  337.                 add     hl,bc
  338.                 ld      a,(hl)
  339. loc_0_81FB:
  340.                 ld      (0),a
  341.                 jr      loc_0_81BA
  342. loc_0_8200:
  343.                 ld      (ix++17h),c
  344.                 jr      loc_0_81BA
  345. loc_0_8205:
  346.                 ld      a,c
  347.                 inc     a
  348.                 ld      (loc_0_8028+1),a
  349.                 jr      loc_0_81BA
  350. loc_0_820C:
  351.                 ld      (ix++18h),c
  352.                 jr      loc_0_81BA
  353. loc_0_8211:
  354.                 jr      z,loc_0_8215
  355.                 ld      c,3
  356. loc_0_8215:
  357.                 ld      hl,(loc_0_81FB+1)
  358.                 inc     hl
  359.                 inc     hl
  360.                 ld      (hl),c
  361.                 jr      loc_0_81BA
  362. loc_0_821D:
  363.                 ld      bc,unk_0_812C
  364.                 jr      loc_0_81D4
  365. loc_0_8222:
  366.                 ld      (ix++13h),c
  367.                 ld      (ix++0),e
  368.                 ld      (ix++1),d
  369.                 ret    
  370. loc_0_822C:
  371.                 call    sub_0_8461
  372.                 jp      loc_0_81B4
  373. loc_0_8232:
  374.                 cp      7Fh ; ''
  375.                 jr      z,loc_0_823F
  376.                 cp      7Eh ; '~'
  377.                 jr      z,loc_0_8247
  378.                 add     a,2
  379.                 ld      c,a
  380.                 jr      loc_0_827D
  381. loc_0_823F:
  382.                 ld      (ix++4),l
  383.                 ld      (ix++5),h
  384.                 jr      loc_0_827D
  385. loc_0_8247:
  386.                 ld      l,(ix++4)
  387.                 ld      h,(ix++5)
  388.                 jr      loc_0_827D
  389. loc_0_824F:
  390.                 inc     a
  391.                 jr      z,loc_0_825A
  392.                 inc     a
  393.                 jr      z,loc_0_8262
  394.                 sub     60h ; '`'
  395.                 ld      c,a
  396.                 jr      loc_0_829F
  397. loc_0_825A:
  398.                 ld      l,(ix++8)
  399.                 ld      h,(ix++9)
  400.                 jr      loc_0_829F
  401. loc_0_8262:
  402.                 ld      (ix++8),l
  403.                 ld      (ix++9),h
  404.                 jr      loc_0_829F
  405. sub_0_826A:
  406.                 ld      e,(ix++0Ah)
  407.                 ld      d,(ix++0Bh)
  408.                 dec     (ix++15h)
  409.                 ld      l,(ix++2)
  410.                 ld      h,(ix++3)
  411.                 jr      nz,loc_0_828E
  412.                 ld      c,1
  413. loc_0_827D:
  414.                 ld      a,(hl)
  415.                 inc     hl
  416.                 rrca   
  417.                 jr      nc,loc_0_8232
  418.                 ld      (ix++15h),c
  419.                 ld      (ix++0Bh),a
  420.                 ld      e,(hl)
  421.                 ld      d,a
  422.                 ld      (ix++0Ah),e
  423.                 inc     hl
  424. loc_0_828E:
  425.                 push    hl
  426.                 ld      a,(ix++0Dh)
  427.                 dec     (ix++14h)
  428.                 jr      nz,loc_0_82B1
  429.                 ld      c,1
  430.                 ld      l,(ix++6)
  431.                 ld      h,(ix++7)
  432. loc_0_829F:
  433.                 ld      a,(hl)
  434.                 inc     hl
  435.                 cp      60h ; '`'
  436.                 jr      nc,loc_0_824F
  437.                 ld      (ix++14h),c
  438.                 ld      (ix++0Dh),a
  439.                 ld      (ix++6),l
  440.                 ld      (ix++7),h
  441. loc_0_82B1:
  442.                 add     a,(ix++0Eh)
  443.                 cp      5Fh ; '_'
  444.                 ld      hl,7FFh
  445.                 jr      z,loc_0_82D1
  446. loc_0_82BB:
  447.                 add     a,0
  448.                 jr      nc,loc_0_82C1
  449.                 sub     60h ; '`'
  450. loc_0_82C1:
  451.                 ld      hl,0FF0Ch
  452.                 ld      b,h
  453. loc_0_82C5:
  454.                 inc     h
  455.                 sub     l
  456.                 jr      nc,loc_0_82C5
  457.                 ld      c,a
  458.                 ld      a,h
  459.                 ld      hl,unk_0_812C
  460.                 add     hl,bc
  461.                 ld      l,(hl)
  462.                 ld      h,a
  463. loc_0_82D1:
  464.                 add     hl,de
  465.                 ld      a,h
  466.                 and     7
  467.                 ld      h,a
  468.                 ld      a,d
  469.                 rrca   
  470.                 rrca   
  471.                 rrca   
  472.                 and     0Fh
  473.                 ex      af,af'
  474.                 ex      de,hl
  475.                 pop     hl
  476.                 ld      a,(ix++0Ch)
  477.                 dec     (ix++16h)
  478.                 jr      nz,loc_0_82F4
  479.                 ld      a,(hl)
  480.                 inc     hl
  481. loc_0_82E9:
  482.                 cp      0
  483.                 jr      nz,loc_0_8322
  484.                 ld      c,(hl)
  485.                 inc     hl
  486. loc_0_82EF:
  487.                 ld      a,(hl)
  488.                 inc     hl
  489. loc_0_82F1:
  490.                 ld      (ix++16h),c
  491. loc_0_82F4:
  492.                 ld      (ix++2),l
  493.                 ld      (ix++3),h
  494.                 ld      (ix++0Ch),a
  495.                 ex      de,hl
  496.                 ld      b,(ix++18h)
  497.                 ld      c,a
  498.                 and     0Fh
  499.                 sub     b
  500.                 jr      nc,loc_0_8308
  501.                 xor     a
  502. loc_0_8308:
  503.                 ld      e,a
  504.                 ld      a,c
  505.                 and     0F0h ; 'Ё'
  506.                 call    sub_0_8157
  507.                 sub     b
  508.                 jr      nc,loc_0_8313
  509.                 xor     a
  510. loc_0_8313:
  511.                 ld      d,a
  512.                 ld      a,(ix++17h)
  513.                 or      a
  514.                 ld      a,e
  515.                 jr      nz,loc_0_831D
  516.                 ld      a,d
  517.                 ld      d,e
  518. loc_0_831D:
  519.                 call    sub_0_8157
  520.                 or      d
  521.                 ret    
  522. loc_0_8322:
  523.                 push    hl
  524.                 ld      b,a
  525. loc_0_8324:
  526.                 ld      hl,0
  527. loc_0_8327:
  528.                 ld      a,(hl)
  529.                 or      a
  530.                 jr      z,loc_0_8334
  531.                 inc     hl
  532.                 ld      c,(hl)
  533.                 inc     hl
  534.                 cp      b
  535.                 jr      nz,loc_0_8327
  536.                 pop     hl
  537.                 jr      loc_0_82EF
  538. loc_0_8334:
  539.                 pop     hl
  540.                 ld      c,1
  541.                 ld      a,b
  542.                 jr      loc_0_82F1
  543. word_0_833A:   
  544.                 ds      25
  545. word_0_8353:   
  546.                 ds      25
  547. word_0_836C:   
  548.                 ds      25
  549. word_0_8385:   
  550.                 ds      25
  551. word_0_839E:   
  552.                 ds      25
  553. word_0_83B7:   
  554.                 ds      25
  555.  
  556. EAmplitude_ch0: db      0                               ;+00h - Amplitude 0 right/left
  557. EAmplitude_ch1: db      0                               ;+01h - Amplitude 1 right/left
  558. EAmplitude_ch2: db      0                               ;+02h - Amplitude 2 right/left
  559. EAmplitude_ch3: db      0                               ;+03h - Amplitude 3 right/left
  560. EAmplitude_ch4: db      0                               ;+04h - Amplitude 4 right/left
  561. EAmplitude_ch5: db      0                               ;+05h - Amplitude 5 right/left
  562.                 db      0                               ;+06h - XXXX
  563.                 db      0                               ;+07h - XXXX
  564. EFrequency_ch0: db      0                               ;+08h - Frequency of tone 0
  565.                 db      0                               ;+09h - Frequency of tone 1
  566. EFrequency_ch2: db      0                               ;+0Ah - Frequency of tone 2
  567.                 db      0                               ;+0Bh - Frequency of tone 3
  568. EFrequency_ch4: db      0                               ;+0Ch - Frequency of tone 4
  569.                 db      0                               ;+0Dh - Frequency of tone 5
  570.                 db      0                               ;+OEh - XXXX   
  571.                 db      0                               ;+0Fh - XXXX
  572. EOctave_ch0:    db      0                               ;+10h - Octave 1 and 0
  573. EOctave_ch2:    db      0                               ;+11h - Octave 3 and 2
  574.                 db      0                               ;+12h - Octave 5 and 4
  575.                 db      0                               ;+13h - XXXX
  576. EFrequency_en:  db      0                               ;+14h - Frequency enable
  577.                 db      0                               ;+15h - Noise enable
  578. ENoise_gen:     db      0                               ;+16h - Noise generator 0 and 1
  579.                 db      0                               ;+17h - XXXX
  580. EEnvelope_gen0: db      0                               ;+18h - Envelope generator 0
  581. EEnvelope_gen1: db      0                               ;+19h - Envelope generator 1
  582.  
  583. word_0_83EA:    dw      0
  584.        
  585. loc_0_83EC:
  586.                 ld      a,6                             ;добавил инициализацию первого канала
  587.                 ld      (loc_0_8028+1),a                ;иначе некоректно стратуют некоторые модули
  588.  
  589.                 ld      (loc_0_816E+1),hl               ;сохраним адрес музыки
  590.                 call    sub_0_8169                      ;получим адрес 1 таблицы
  591.                 ld      (sub_0_8461+1),bc               ;сохраним адрес
  592.                 call    sub_0_8169                      ;получим адрес 2 таблицы
  593.                 ld      (loc_0_8476+1),bc               ;сохраним адрес
  594.                 call    sub_0_8169                      ;получим адрес 3 таблицы
  595.                 ld      (loc_0_8176+1),bc               ;сохраним адрес
  596.                 call    sub_0_8169                      ;получим адрес 4 таблицы
  597.                 ld      (loc_0_818D+1),bc               ;сохраним адрес
  598.                 call    sub_0_8169                      ;получим адрес 5 таблицы
  599.                 ld      a,(bc)
  600.                 inc     bc
  601.                 ld      (loc_0_82E9+1),a                ;сохраним адрес
  602.                 ld      (loc_0_8324+1),bc
  603.                 ld      hl,word_0_833A                  ;начальный адрес служебных данных
  604.                 ld      b,0B2h                          ;размер области служебных данных
  605.                 xor     a                               ;байт заполнения - 00h
  606. loc_0_841D:
  607.                 ld      (hl),a                          ;очищаем служебную область
  608.                 inc     hl
  609.                 djnz    loc_0_841D
  610.                 inc     a
  611.                 ld      (EPlayer_Play+1),a               ;установим номер текущего канала - 01h
  612.                 ld      ix,word_0_833A                 ;адрес служебных данных 1 канала
  613.                 ld      de,19h                         ;размер данных для одного канала
  614.                 ld      b,6
  615. loc_0_842E:
  616.                 ld      (ix++14h),1
  617.                 ld      (ix++15h),1
  618.                 ld      (ix++16h),1
  619.                 ld      hl,unk_0_812C
  620.                 ld      (ix++0Fh),l
  621.                 ld      (ix++10h),h
  622.                 ld      (ix++2),l
  623.                 ld      (ix++3),h
  624.                 ld      hl,unk_0_813E
  625.                 ld      (ix++11h),l
  626.                 ld      (ix++12h),h
  627.                 add     ix,de                           ;переходим к следующему каналу
  628.                 djnz    loc_0_842E
  629.                 ld      de,1C02h                        ;регистр 1Сh SAA1099 - выключим звук
  630.                 ld      bc,0xfffd
  631.                 out     (c),d
  632.                 ld b,0xbf
  633.                 out     (c),e                          ;иництализация микросхемы
  634. sub_0_8461:
  635.                 ld      hl,0                            ;адрес 1 таблицы
  636. loc_0_8464:
  637.                 ld      c,(hl)
  638.                 ld      a,c
  639.                 inc     hl
  640.                 inc     a
  641.                 jr      z,loc_0_84A4
  642.                 inc     a
  643.                 jr      z,loc_0_84A9
  644.                 sub     62h ; 'b'
  645.                 jr      nc,loc_0_84AE
  646.                 ld      (sub_0_8461+1),hl
  647.                 sla     c
  648. loc_0_8476:
  649.                 ld      hl,0
  650.                 call    sub_0_8164
  651.                 ld      (word_0_833A),bc
  652.                 call    sub_0_8169
  653.                 ld      (word_0_8353),bc
  654.                 call    sub_0_8169
  655.                 ld      (word_0_836C),bc
  656.                 call    sub_0_8169
  657.                 ld      (word_0_8385),bc
  658.                 call    sub_0_8169
  659.                 ld      (word_0_839E),bc
  660.                 call    sub_0_8169
  661.                 ld      (word_0_83B7),bc
  662.                 ret    
  663. loc_0_84A4:
  664.                 ld      hl,0
  665.                 jr      loc_0_8464
  666. loc_0_84A9:
  667.                 ld      (loc_0_84A4+1),hl
  668.                 jr      loc_0_8464
  669. loc_0_84AE:
  670.                 ld      (loc_0_82BB+1),a
  671.                 jr      loc_0_8464
  672. ;               .end
  673.