Diff for /np2/wince/arm/psggeng.s between versions 1.2 and 1.3

version 1.2, 2003/12/08 17:57:29 version 1.3, 2003/12/24 14:01:56
Line 23  PN_BASE   equ  56 Line 23  PN_BASE   equ  56
 P_REG                   equ             60  P_REG                   equ             60
 P_ENVCNT                equ             76  P_ENVCNT                equ             76
 P_ENVMAX                equ             78  P_ENVMAX                equ             78
   
 P_MIXER                 equ             80  P_MIXER                 equ             80
 P_ENVMODE               equ             81  P_ENVMODE               equ             81
 P_ENVVOL                equ             82  P_ENVVOL                equ             82
 P_ENVVOLCNT             equ             83  P_ENVVOLCNT             equ             83
   P_EVOL                  equ             84
 P_PUCHICOUNT    equ             84  P_PUCHICOUNT    equ             88
   
 C_VOLUME                equ             0  C_VOLUME                equ             0
 C_VOLTBL                equ             64  C_VOLTBL                equ             64
Line 62  CD_BIT31  equ  &80000000 Line 61  CD_BIT31  equ  &80000000
         AREA    .text, CODE, READONLY          AREA    .text, CODE, READONLY
   
   
 psggen_getpcm   ldrb    r12, [r0, #P_MIXER]          MACRO
   $label  PSGCALC $o, $t, $n
   $label          ldr             r12, [r0, #($o + T_PVOL)]
                           tst             r10, $t
                           mov             r3, #0
                           ldr             r12, [r12]
                           beq             $label.n
                           cmp             r12, #0
                           beq             $label.ed
                           ldr             r4, [r0, #($o + T_COUNT)]
                           ldr             r5, [r0, #($o + T_FREQ)]
                           tst             r10, $n
                           bne             $label.tn
                           mov             r6, #PSGADDEDCNT
   $label.tlp      adds    r4, r4, r5
                           addpl   r3, r3, r12
                           submi   r3, r3, r12
                           subs    r6, r6, #1
                           bne             $label.tlp
                           str             r4, [r0, #($o + T_COUNT)]
                           ldrb    r6, [r0, #($o + T_PAN)]
                           b               $label.pan
   $label.tn       add             r6, r9, #1
   $label.tnlp     add             r4, r4, r5
                           tst             r4, r6
                           addpl   r3, r3, r12
                           submi   r3, r3, r12
                           mov             r6, r6 lsl #1
                           tst             r6, #(1 << PSGADDEDCNT)
                           beq             $label.tnlp
                           str             r4, [r0, #($o + T_COUNT)]
                           ldrb    r6, [r0, #($o + T_PAN)]
                           b               $label.pan
   $label.n        cmp             r12, #0
                           beq             $label.ed
                           tst             r10, $n
                           bne             $label.nmn
                           ldrb    r4, [r0, #($o + T_PUCHI)]
                           ldrb    r6, [r0, #($o + T_PAN)]
                           subs    r4, r4, #1
                           strcsb  r4, [r0, #($o + T_PUCHI)]
                           addcs   r3, r3, r12 lsl #PSGADDEDBIT
                           b               $label.pan
   $label.nmn      mov             r4, #(1 << (32 - PSGADDEDCNT))
                           ldrb    r6, [r0, #($o + T_PAN)]
   $label.nlp      tst             r4, r9
                           addeq   r3, r3, r12
                           subne   r3, r3, r12
                           movs    r4, r4 lsl #1
                           bne             $label.nlp
   $label.pan      tst             r6, #1
                           addeq   r7, r7, r3
                           tst             r6, #2
                           addeq   r8, r8, r3
   $label.ed
           MEND
   
   
   psggen_getpcm
                                   ldrb    r12, [r0, #P_MIXER]
                                 tst             r12, #&3f                                  tst             r12, #&3f
                                 bne             countcheck                                  bne             countcheck
                                 ldr             r3, [r0, #P_PUCHICOUNT]                                  ldr             r3, [r0, #P_PUCHICOUNT]
Line 88  psgmake_lp  ldr  r10, [r0, #P_MIXER] Line 146  psgmake_lp  ldr  r10, [r0, #P_MIXER]
                                 tst             r10, #(PSGENV_ONESHOT << 8)                                  tst             r10, #(PSGENV_ONESHOT << 8)
                                 beq             calcenvcyc                                  beq             calcenvcyc
                                 tst             r10, #(PSGENV_LASTON << 8)                                  tst             r10, #(PSGENV_LASTON << 8)
                                   ldreq   r6, [r11]
                                   ldrne   r6, [r11, #(15 * 4)]
                                 orrne   r10, r10, #(15 << 16)                                  orrne   r10, r10, #(15 << 16)
                                 b               calcenvstr                                  b               calcenvvstr
 calcenvcyc              bic             r10, r10, #(240 << 24)  calcenvcyc              bic             r10, r10, #(240 << 24)
                                 tst             r10, #(PSGENV_ONECYCLE << 8)                                  tst             r10, #(PSGENV_ONECYCLE << 8)
                                 eoreq   r10, r10, #(PSGENV_INC << 8)                                  eoreq   r10, r10, #(PSGENV_INC << 8)
 calcenvnext             ldrh    lr, [r0, #P_ENVMAX]  calcenvnext             ldrh    lr, [r0, #P_ENVMAX]
                                 eor             r3, r10, r10, lsr #16                                  eor             r3, r10, r10 lsr #16
                                 and             r3, r3, #(15 << 8)                                  and             r3, r3, #(15 << 8)
                                   ldr             r6, [r11, r3 lsr #(8 - 2)]
                                 orr             r10, r10, r3 lsl #8                                  orr             r10, r10, r3 lsl #8
   calcenvvstr             str             r6, [r0, #P_EVOL]
 calcenvstr              str             r10, [r0, #P_MIXER]  calcenvstr              str             r10, [r0, #P_MIXER]
   
 makenoise               tst             r10, #&38  makenoise               tst             r10, #&38
Line 108  makenoise  tst  r10, #&38 Line 170  makenoise  tst  r10, #&38
                                 mov             r3, #PSGADDEDCNT                                  mov             r3, #PSGADDEDCNT
 mknoise_lp              subs    r7, r7, r6  mknoise_lp              subs    r7, r7, r6
                                 bcc             updatenoise                                  bcc             updatenoise
 updatenoiseret  add             r9, r8, r9, lsl #1  updatenoiseret  add             r9, r8, r9 lsl #1
                                 subs    r3, r3, #1                                  subs    r3, r3, #1
                                 bne             mknoise_lp                                  bne             mknoise_lp
                                 str             r7, [r0, #PN_COUNT]                                  str             r7, [r0, #PN_COUNT]
   
 makesamp                mov             r7, #0  makesamp                mov             r7, #0
                                 mov             r8, #0                                  mov             r8, #0
                                 and             r10, r10, #&3f  
                                 add             r10, r10, #(8 << 8)  psgcalc0                PSGCALC (T_SIZE * 0), #&01, #&08
 makesamp_lp             ldr             r12, [r0, #T_PVOL]  psgcalc1                PSGCALC (T_SIZE * 1), #&02, #&10
                                 ldrb    r12, [r12]  psgcalc2                PSGCALC (T_SIZE * 2), #&04, #&20
                                 ands    r12, r12, #15  
                                 beq             makesamp_nt  
                                 ldr             r12, [r11, r12, lsl #2]  
                                 mov             r3, #0  
                                 tst             r10, #8  
                                 bne             calcwithnoise  
                                 tst             r10, #1  
                                 beq             calcpuchionly  
 calctone                ldr             r4, [r0, #T_COUNT]  
                                 ldr             r5, [r0, #T_FREQ]  
                                 mov             r6, #PSGADDEDCNT  
 calctone_lp             add             r4, r4, r5  
                                 cmp             r4, #0  
                                 addge   r3, r3, r12  
                                 sublt   r3, r3, r12  
                                 subs    r6, r6, #1  
                                 bne             calctone_lp  
                                 str             r4, [r0, #T_COUNT]  
                                 b               calcpanpot  
 calcpuchionly   ldrb    r4, [r0, #T_PUCHI]  
                                 subs    r4, r4, #1  
                                 strcsb  r4, [r0, #T_PUCHI]  
                                 addcs   r3, r3, r12, lsl #PSGADDEDBIT  
                                 b               calcpanpot  
 calcwithnoise   tst             r10, #1  
                                 bne             calcboth  
 calcnoise               mov             r4, #(1 << (32 - PSGADDEDCNT))  
 calcnoise_lp    tst             r9, r4  
                                 addeq   r3, r3, r12  
                                 subne   r3, r3, r12  
                                 movs    r4, r4, lsl #1  
                                 bne             calcnoise_lp  
                                 b               calcpanpot  
 calcboth                ldr             r4, [r0, #T_COUNT]  
                                 ldr             r5, [r0, #T_FREQ]  
                                 add             r6, r9, #1  
 calcboth_lp             add             r4, r4, r5  
                                 tst             r4, r6  
                                 addpl   r3, r3, r12  
                                 submi   r3, r3, r12  
                                 mov             r6, r6, lsl #1  
                                 tst             r6, #(1 << PSGADDEDCNT)  
                                 beq             calcboth_lp  
                                 str             r4, [r0, #T_COUNT]  
 calcpanpot              ldrb    r4, [r0, #T_PAN]  
                                 tst             r4, #1  
                                 addeq   r7, r7, r3  
                                 tst             r4, #2  
                                 addeq   r8, r8, r3  
 makesamp_nt             mov             r10, r10, lsr #1  
                                 add             r0, r0, #T_SIZE  
                                 tst             r10, #(1 << 8)  
                                 beq             makesamp_lp  
                                 sub             r0, r0, #(T_SIZE * 3)  
   
                                 ldr             r4, [r1]                                  ldr             r4, [r1]
                                   ldr             r3, [r1, #4]
                                   subs    r2, r2, #1
                                 add             r4, r4, r7                                  add             r4, r4, r7
                                 str             r4, [r1], #4                                  str             r4, [r1], #4
                                 ldr             r4, [r1]                                  add             r3, r3, r8
                                 add             r4, r4, r8                                  str             r3, [r1], #4
                                 str             r4, [r1], #4  
                                 subs    r2, r2, #1  
                                 bne             psgmake_lp                                  bne             psgmake_lp
   
                                 strh    lr, [r0, #P_ENVCNT]                                  strh    lr, [r0, #P_ENVCNT]
                                 ldmia   sp!, {r4 - r11, pc}                                  ldmia   sp!, {r4 - r11, pc}
   
 psgvoltbl               dcd             psggencfg + C_VOLUME  psgvoltbl               dcd             psggencfg + C_VOLUME
   
 updatenoise             ldr             r4, randdcd  updatenoise             ldr             r4, randdcd

Removed from v.1.2  
changed lines
  Added in v.1.3


RetroPC.NET-CVS <cvs@retropc.net>