summaryrefslogtreecommitdiff
path: root/Source/UnitTests/Core/DSP/HermesText.cpp
diff options
context:
space:
mode:
authorJMC47 <JMC4789@gmail.com>2026-01-17 19:10:50 -0500
committerGitHub <noreply@github.com>2026-01-17 19:10:50 -0500
commit035bcffc63ecc803abeb6987f66a5b2f78f5f0bc (patch)
treeb46f7ec3d376fc2fef5ac0d2f48769b0e23e9353 /Source/UnitTests/Core/DSP/HermesText.cpp
parentd098f2bba9fac19d90526fb9f7aceb0bb405b4b4 (diff)
parent1e0473e44f5e21558d75b0121bd935bb50825c26 (diff)
Merge pull request #14289 from Sintendo/typos
Fix various typos and spelling mistakes
Diffstat (limited to 'Source/UnitTests/Core/DSP/HermesText.cpp')
-rw-r--r--Source/UnitTests/Core/DSP/HermesText.cpp218
1 files changed, 109 insertions, 109 deletions
diff --git a/Source/UnitTests/Core/DSP/HermesText.cpp b/Source/UnitTests/Core/DSP/HermesText.cpp
index 64f3694810..1ddc302000 100644
--- a/Source/UnitTests/Core/DSP/HermesText.cpp
+++ b/Source/UnitTests/Core/DSP/HermesText.cpp
@@ -42,7 +42,7 @@ SR: equ 0x13
PRODL: equ 0x14
PRODM: equ 0x15
PRODH: equ 0x16
-PRODM2: equ 0x17
+PRODM2: equ 0x17
AXL0: equ 0x18
AXL1: equ 0x19
@@ -88,7 +88,7 @@ NUM_SAMPLES: equ 1024 ; 1024 stereo samples 16 bits
/**************************************************************/
/* SOUND CHANNEL REGS */
/**************************************************************/
-
+
MEM_REG2: equ 0x0
MEM_VECTH: equ MEM_REG2
MEM_VECTL: equ MEM_REG2+1
@@ -108,10 +108,10 @@ DELAYL_SND: equ MEM_REG+3 // Delay samples Low word
CHAN_REGS: equ MEM_REG+4 // specific regs for the channel
-FLAGSH_SMP: equ CHAN_REGS+0 // countain number of bytes for step (1-> Mono 8 bits, 2-> Stereo 8 bits and Mono 16 bits, 4-> Stereo 16 bits)
+FLAGSH_SMP: equ CHAN_REGS+0 // contains number of bytes for step (1-> Mono 8 bits, 2-> Stereo 8 bits and Mono 16 bits, 4-> Stereo 16 bits)
FLAGSL_SMP: equ CHAN_REGS+1 // 0->Mono 8 bits, 1->Stereo 8 bits, 2->Mono 16 bits 3 -> Stereo 16 bits
-ADDRH_SMP: equ CHAN_REGS+2 // start address
+ADDRH_SMP: equ CHAN_REGS+2 // start address
ADDRL_SMP: equ CHAN_REGS+3
ADDREH_SMP: equ CHAN_REGS+4 // end address
@@ -156,7 +156,7 @@ data_end: equ MEM_SAMP+0x20
MEM_SND: equ data_end ; it need 2048 words (4096 bytes)
-
+
/*** START CODE ***/
@@ -175,16 +175,16 @@ MEM_SND: equ data_end ; it need 2048 words (4096 bytes)
lri $CONFIG, #0xff
lri $SR,#0
- s16
- clr15
- m0
+ s16
+ clr15
+ m0
/**************************************************************/
/* main */
/**************************************************************/
main:
-
+
// send init token to CPU
si @DMBH, #0xdcd1
@@ -195,7 +195,7 @@ recv_cmd:
// check if previous mail is received from the CPU
call wait_for_dsp_mail
-
+
// wait a mail from CPU
call wait_for_cpu_mail
@@ -206,7 +206,7 @@ recv_cmd:
lri $ACM0,#0xcdd1
cmp
jz sys_command
-
+
clr $ACC1
lrs $ACM1, @CMBL
@@ -217,7 +217,7 @@ recv_cmd:
jz input_samples2
cmpi $ACM1, #0x123 // get the address of the voice datas buffer (CHANNEL DATAS)
- jz get_data_addr
+ jz get_data_addr
cmpi $ACM1, #0x222 // process the voice mixing the samples internally
jz input_next_samples
@@ -226,14 +226,14 @@ recv_cmd:
jz send_samples
cmpi $ACM1, #0x777 // special: to dump the IROM Datas (remember disable others functions from the interrupt vector to use)
- jz rom_dump_word // (CMBH+0x8000) countain the address of IROM
+ jz rom_dump_word // (CMBH+0x8000) contains the address of IROM
cmpi $ACM1, #0x888 // Used for test
- jz polla_loca
+ jz polla_loca
cmpi $ACM1, #0x999
jz task_terminate
-
+
si @DMBL, #0x0004 // return 0 as ignore command
si @DIRQ, #0x1 // set the interrupt
jmp recv_cmd
@@ -242,19 +242,19 @@ task_terminate:
si @DMBL, #0x0003
si @DIRQ, #0x1
jmp recv_cmd
-
+
sys_command:
clr $ACC1
lrs $ACM1, @CMBL
-
+
cmpi $ACM1,#0x0001
jz run_nexttask
-
+
cmpi $ACM1,#0x0002
jz 0x8000
-
+
jmp recv_cmd
-
+
run_nexttask:
s16
call wait_for_cpu_mail
@@ -283,7 +283,7 @@ run_nexttask:
lrs $27,@CMBL
sbclr #0x05
sbclr #0x06
- jmp 0x80b5
+ jmp 0x80b5
halt
/**************************************************************************************************************************************/
@@ -296,7 +296,7 @@ send_samples:
lri $AXL0, #NUM_SAMPLES*4 ; len
lr $ACM0, @ADDRH_SND
lr $ACL0, @ADDRL_SND
-
+
call do_dma
si @DMBL, #0x0004
si @DIRQ, #0x1 // set the interrupt
@@ -310,10 +310,10 @@ get_data_addr:
lrs $ACM0, @CMBH
lr $ACL0, @CMBL
-
+
sr @MEM_VECTH, $ACM0
sr @MEM_VECTL, $ACL0
-
+
si @DIRQ, #0x0 // clear the interrupt
jmp recv_cmd
@@ -326,7 +326,7 @@ input_samples:
lr $ACM0, @MEM_VECTH
lr $ACL0, @MEM_VECTL
- lris $AXL0, #0x0004
+ lris $AXL0, #0x0004
sr @RETURN, $AXL0
si @DIRQ, #0x0000
@@ -363,7 +363,7 @@ input_samples2:
lr $ACM0, @MEM_VECTH
lr $ACL0, @MEM_VECTL
- lris $AXL0, #0x0004
+ lris $AXL0, #0x0004
sr @RETURN, $AXL0
si @DIRQ, #0x0000
@@ -381,7 +381,7 @@ input_samples2:
lri $AR0, #MEM_SND
lris $AXL1, #DMA_TO_DSP;
lri $AXL0, #NUM_SAMPLES*4; len
-
+
call do_dma
jmp start_main
@@ -390,12 +390,12 @@ input_samples2:
// process the voice mixing the samples internally
input_next_samples:
-
+
clr $ACC0
lr $ACM0, @MEM_VECTH
lr $ACL0, @MEM_VECTL
- lris $AXL0, #0x0004
+ lris $AXL0, #0x0004
sr @RETURN, $AXL0
si @DIRQ, #0x0000
@@ -408,10 +408,10 @@ input_next_samples:
call do_dma
/**************************************************************************************************************************************/
-// mixing and control pitch to create 1024 Stereo Samples at 16 bits from here
+// mixing and control pitch to create 1024 Stereo Samples at 16 bits from here
start_main:
-
+
lri $R08, #48000
// load the previous samples used
@@ -426,29 +426,29 @@ start_main:
addi $ACM1, #sample_selector
mrr $AR3, $ACM1
ilrr $ACM1, @$AR3
- mrr $AR3, $ACM1 // AR3 countain the jump loaded from sample selector
+ mrr $AR3, $ACM1 // AR3 contains the jump loaded from sample selector
clr $ACC0
// test for channel paused
- lr $ACM0, @FLAGSL_SMP
- andcf $ACM0, #0x20
+ lr $ACM0, @FLAGSL_SMP
+ andcf $ACM0, #0x20
jlz end_main
-
+
// load the sample address
lr $ACM0, @ADDRH_SMP
lr $ACL0, @ADDRL_SMP
// test if ADDR_SMP & ADDR2H_SMP are zero
-
+
tst $ACC0
jnz do_not_change1
// set return as "change of buffer"
- lris $AXL0, #0x0004
+ lris $AXL0, #0x0004
sr @RETURN, $AXL0
// change to buffer 2 if it is possible
@@ -464,10 +464,10 @@ do_not_change1:
// backup the external sample address
-
+
mrr $IX2, $ACM0
mrr $IX3, $ACL0
-
+
// load the counter pitch
@@ -500,7 +500,7 @@ do_not_change1:
tst $ACC0
jz no_delay
-// samples left and right to 0
+// samples left and right to 0
lris $AXH0, #0
lris $AXH1, #0
@@ -510,7 +510,7 @@ do_not_change1:
mrr $ACM1, $AXL0
l_delay:
iar $AR1 // skip two samples
- iar $AR1
+ iar $AR1
decm $ACM1
jz exit_delay1 // exit1 if samples to be processed == 0
@@ -522,14 +522,14 @@ l_delay:
exit_delay1:
decm $ACM0
-
+
sr @DELAYH_SND, $ACH0
sr @DELAYL_SND, $ACM0
-
+
lris $AXL0,#0 ; exit from loop
-
- jmp no_delay
-
+
+ jmp no_delay
+
exit_delay2:
@@ -551,9 +551,9 @@ no_delay:
R"(
/* bucle de generacion de samples */
-
+
// load the sample buffer with address aligned to 32 bytes blocks (first time)
-
+
si @DSCR, #DMA_TO_DSP // very important!: load_smp_addr_align and jump_load_smp_addr need fix this DMA Register (I gain some cycles so)
// load_smp_addr_align input: $IX2:$IX3
@@ -564,25 +564,25 @@ no_delay:
lr $IX0, @LEFT_VOLUME
lr $IX1, @RIGHT_VOLUME
-
+
// test the freq value
clr $ACC0
lr $ACH0, @FREQH_SMP
lr $ACM0, @FREQL_SMP
-
+
clr $ACC1
;lri $ACM1,#48000
mrr $ACM1, $R08
cmp
-
+
// select the output of the routine to process stereo-mono 8/16bits samples
-
- lri $AR0, #get_sample // fast method <=48000
-// if number is greater freq>48000 fix different routine
-
- ifg
+ lri $AR0, #get_sample // fast method <=48000
+
+// if number is greater freq>48000 fix different routine
+
+ ifg
lri $AR0, #get_sample2 // slow method >48000
// loops for samples to be processed
@@ -594,12 +594,12 @@ no_delay:
// Mix right sample section
- lrr $ACL0, @$AR1 // load in ACL0 the right sample from the internal buffer
+ lrr $ACL0, @$AR1 // load in ACL0 the right sample from the internal buffer
movax $ACC1, $AXL1 // big trick :) load the current sample <<16 and sign extended
asl $ACC0,#24 // convert sample from buffer to 24 bit number with sign extended (ACH0:ACM0)
asr $ACC0,#-8
-
+
add $ACC0,$ACC1 // current_sample+buffer sample
cmpi $ACM0,#32767 // limit to 32767
@@ -613,20 +613,20 @@ right_skip:
cmpi $ACM0,#-32768 // limit to -32768
ifle
lri $ACM0, #-32768
-
-right_skip2:
+
+right_skip2:
srri @$AR1, $ACM0 // store the right sample mixed to the internal buffer and increment AR1
// Mix left sample section
- lrr $ACL0, @$AR1 // load in ACL0 the left sample from the internal buffer
+ lrr $ACL0, @$AR1 // load in ACL0 the left sample from the internal buffer
movax $ACC1, $AXL0 // big trick :) load the current sample <<16 and sign extended
-
+
asl $ACC0, #24 // convert sample from buffer to 24 bit number with sign extended (ACH0:ACM0)
asr $ACC0, #-8
-
+
add $ACC0, $ACC1 // current_sample+buffer sample
cmpi $ACM0,#32767 // limit to 32767
@@ -640,11 +640,11 @@ left_skip:
cmpi $ACM0,#-32768 // limit to -32768
ifle
lri $ACM0, #-32768
-
-left_skip2:
+
+left_skip2:
srri @$AR1, $ACM0 // store the left sample mixed to the internal buffer and increment AR1
-
+
// adds the counter with the voice frequency and test if it >=48000 to get the next sample
clr $ACC1
@@ -653,7 +653,7 @@ left_skip2:
clr $ACC0
lr $ACH0, @FREQH_SMP
lr $ACM0, @FREQL_SMP
-
+
add $ACC1,$ACC0
clr $ACC0
//lri $ACM0,#48000
@@ -663,7 +663,7 @@ left_skip2:
jrnc $AR0 //get_sample or get_sample2 method
- sr @COUNTERH_SMP, $ACH1
+ sr @COUNTERH_SMP, $ACH1
sr @COUNTERL_SMP, $ACM1
jmp loop_end
@@ -700,8 +700,8 @@ get_sample2: // slow method
cmp
jle get_sample2
-
- sr @COUNTERH_SMP, $ACH1
+
+ sr @COUNTERH_SMP, $ACH1
sr @COUNTERL_SMP, $ACM1
mrr $ACM0, $IX2 // load ADDRH_SMP
@@ -721,14 +721,14 @@ get_sample2: // slow method
// load samples from dma, return $ar2 with the addr to get the samples and return using $ar0 to the routine to process 8-16bits Mono/Stereo
- jmp jump_load_smp_addr
+ jmp jump_load_smp_addr
// get a new sample for freq <= 48000 Hz
get_sample: // fast method
-
+
sub $ACC1,$ACC0 // restore the counter
- sr @COUNTERH_SMP, $ACH1
+ sr @COUNTERH_SMP, $ACH1
sr @COUNTERL_SMP, $ACM1
// restore the external sample buffer address
@@ -739,7 +739,7 @@ get_sample: // fast method
lr $AXL1, @FLAGSH_SMP // add the step to get the next samples
addaxl $ACC0, $AXL1
-
+
clr $ACC1
mrr $ACM1, $r0a // load ADDREH_SMP
mrr $ACL1, $r0b // load ADDREL_SMP
@@ -756,21 +756,21 @@ get_sample: // fast method
// load samples from dma, return $ar2 with the addr and return using $ar0 to the routine to process 8-16bits Mono/Stereo or addr_get_sample_again
- jmp jump_load_smp_addr
+ jmp jump_load_smp_addr
sample_selector:
- cw mono_8bits
- cw mono_16bits
- cw stereo_8bits
- cw stereo_16bits
+ cw mono_8bits
+ cw mono_16bits
+ cw stereo_8bits
+ cw stereo_16bits
get_new_buffer:
// set return as "change of buffer": it need to change the sample address
- lris $AXL0, #0x0004
+ lris $AXL0, #0x0004
sr @RETURN, $AXL0
-
+
call change_buffer // load add from addr2
// addr is 0 ? go to zero_samples and exit
@@ -785,9 +785,9 @@ get_new_buffer:
// jump_load_smp_addr: $IX2:$IX3
// load samples from dma, return $ar2 with the addr to get the samples and return using $ar0 to the routine to process 8-16bits Mono/Stereo
- jmp jump_load_smp_addr
+ jmp jump_load_smp_addr
-// set to 0 the current samples
+// set to 0 the current samples
zero_samples:
@@ -796,7 +796,7 @@ zero_samples:
jmp out_samp
mono_8bits:
-
+
// 8 bits mono
mrr $ACM1, $IX3
lrri $ACL0, @$AR2
@@ -810,7 +810,7 @@ mono_8bits:
mrr $AXH0,$ACL0
jmp out_samp
-stereo_8bits:
+stereo_8bits:
// 8 bits stereo
@@ -838,8 +838,8 @@ stereo_16bits:
lrri $AXH1, @$AR2
lrri $AXH0, @$AR2
-out_samp:
-
+out_samp:
+
// multiply sample x volume
// LEFT_VOLUME
@@ -860,7 +860,7 @@ loop_end:
nop
end_process:
-
+
// load the sample address
clr $ACC0
@@ -872,7 +872,7 @@ end_process:
// set return as "change of buffer"
- lris $AXL0, #0x0004
+ lris $AXL0, #0x0004
sr @RETURN, $AXL0
// change to buffer 2 if it is possible
@@ -880,13 +880,13 @@ end_process:
call change_buffer
save_datas_end:
-
+
sr @ADDRH_SMP, $IX2
sr @ADDRL_SMP, $IX3
- sr @SMP_R, $AXH0
+ sr @SMP_R, $AXH0
sr @SMP_L, $AXH1
-
-end_main:
+
+end_main:
// program DMA to send the CHANNEL DATAS changed
@@ -909,35 +909,35 @@ end_main:
jmp recv_cmd
change_buffer:
-
+
clr $ACC0
lr $ACM0, @LEFT_VOLUME2
lr $ACL0, @RIGHT_VOLUME2
- sr @LEFT_VOLUME, $ACM0
+ sr @LEFT_VOLUME, $ACM0
sr @RIGHT_VOLUME, $ACL0
- mrr $IX0, $ACM0
+ mrr $IX0, $ACM0
mrr $IX1, $ACL0
lr $ACM0, @ADDR2EH_SMP
lr $ACL0, @ADDR2EL_SMP
- sr @ADDREH_SMP, $ACM0
+ sr @ADDREH_SMP, $ACM0
sr @ADDREL_SMP, $ACL0
mrr $r0a, $ACM0
mrr $r0b, $ACL0
lr $ACM0, @ADDR2H_SMP
lr $ACL0, @ADDR2L_SMP
- sr @ADDRH_SMP, $ACM0
+ sr @ADDRH_SMP, $ACM0
sr @ADDRL_SMP, $ACL0
- sr @BACKUPH_SMP, $ACM0
+ sr @BACKUPH_SMP, $ACM0
sr @BACKUPL_SMP, $ACL0
mrr $IX2, $ACM0
mrr $IX3, $ACL0
-
+
lr $ACM1, @FLAGSL_SMP
andcf $ACM1, #0x4
retlz
-
+
sr @ADDR2H_SMP, $ACH0
sr @ADDR2L_SMP, $ACH0
sr @ADDR2EH_SMP, $ACH0
@@ -1007,7 +1007,7 @@ jump_load_smp_addr:
asr $ACC0, #-1
andi $ACM0, #0xf
jz jump_load_smp_dma
-
+
addi $ACM0, #MEM_SAMP
mrr $AR2, $ACM0
jmpr $AR3
@@ -1024,10 +1024,10 @@ wait_dma2:
lrs $ACM0, @DSCR
andcf $ACM0, #0x4
jlz wait_dma2
-
+
lri $AR2, #MEM_SAMP
jmpr $AR3
-
+
// exception table
exception0: // RESET
@@ -1038,7 +1038,7 @@ exception1: // STACK OVERFLOW
exception2:
rti
-
+
exception3:
rti
@@ -1047,21 +1047,21 @@ exception4:
exception5: // ACCELERATOR ADDRESS OVERFLOW
rti
-
+
exception6:
rti
exception7:
rti
-// routine to read a word of the IROM space
+// routine to read a word of the IROM space
rom_dump_word:
clr $ACC0
lr $ACM0, @CMBH
- ori $ACM0, #0x8000
+ ori $ACM0, #0x8000
mrr $AR0, $ACM0
clr $ACC0
ilrr $ACM0, @$AR0
@@ -1076,7 +1076,7 @@ polla_loca:
clr $ACC0
lri $acm0, #0x0
andf $acm0,#0x1
-
+
sr @DMBH, $sr
sr @DMBL, $acm0
;si @DIRQ, #0x1 // set the interrupt