| 
									
										
										
										
											2022-02-27 13:05:31 -05:00
										 |  |  | # Taito Arcade/Yamaha YM2610B
 | 
					
						
							| 
									
										
										
										
											2022-02-27 13:04:04 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-22 01:58:07 -04:00
										 |  |  | YM2610B is basically YM2610 with 2 extra FM channels used at some 90s Taito arcade hardware. | 
					
						
							|  |  |  | it is backward compatible with the original chip. | 
					
						
							| 
									
										
										
										
											2022-02-27 13:04:04 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | # effects
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - `10xy`: set LFO parameters. | 
					
						
							|  |  |  |   - `x` toggles the LFO. | 
					
						
							|  |  |  |   - `y` sets its speed. | 
					
						
							|  |  |  | - `11xx`: set feedback of channel. | 
					
						
							|  |  |  | - `12xx`: set operator 1 level. | 
					
						
							|  |  |  | - `13xx`: set operator 2 level. | 
					
						
							|  |  |  | - `14xx`: set operator 3 level. | 
					
						
							|  |  |  | - `15xx`: set operator 4 level. | 
					
						
							|  |  |  | - `16xy`: set multiplier of operator. | 
					
						
							|  |  |  |   - `x` is the operator (1-4). | 
					
						
							|  |  |  |   - `y` is the mutliplier. | 
					
						
							|  |  |  | - `18xx`: toggle extended channel 2 mode. | 
					
						
							|  |  |  |   - 0 disables it and 1 enables it. | 
					
						
							|  |  |  |   - only in extended channel 2 system. | 
					
						
							|  |  |  | - `19xx`: set attack of all operators. | 
					
						
							|  |  |  | - `1Axx`: set attack of operator 1. | 
					
						
							|  |  |  | - `1Bxx`: set attack of operator 2. | 
					
						
							|  |  |  | - `1Cxx`: set attack of operator 3. | 
					
						
							|  |  |  | - `1Dxx`: set attack of operator 4. | 
					
						
							|  |  |  | - `20xx`: set SSG channel mode. `xx` may be one of the following: | 
					
						
							|  |  |  |   - `00`: square | 
					
						
							|  |  |  |   - `01`: noise | 
					
						
							|  |  |  |   - `02`: square and noise | 
					
						
							|  |  |  |   - `03`: nothing (apparently) | 
					
						
							|  |  |  |   - `04`: envelope and square | 
					
						
							|  |  |  |   - `05`: envelope and noise | 
					
						
							|  |  |  |   - `06`: envelope and square and noise | 
					
						
							|  |  |  |   - `07`: nothing | 
					
						
							|  |  |  | - `21xx`: set noise frequency. `xx` is a value between 00 and 1F. | 
					
						
							|  |  |  | - `22xy`: set envelope mode. | 
					
						
							|  |  |  |   - `x` sets the envelope shape, which may be one of the following: | 
					
						
							|  |  |  |     - `0: \___` decay | 
					
						
							|  |  |  |     - `4: /___` attack once | 
					
						
							|  |  |  |     - `8: \\\\` saw | 
					
						
							|  |  |  |     - `9: \___` decay | 
					
						
							|  |  |  |     - `A: \/\/` inverse obelisco | 
					
						
							|  |  |  |     - `B: \¯¯¯` decay once | 
					
						
							|  |  |  |     - `C: ////` inverse saw | 
					
						
							|  |  |  |     - `D: /¯¯¯` attack | 
					
						
							|  |  |  |     - `E: /\/\` obelisco | 
					
						
							|  |  |  |     - `F: /___` attack once | 
					
						
							|  |  |  |   - if `y` is 1 then the envelope will affect this channel. | 
					
						
							|  |  |  | - `23xx`: set envelope period low byte. | 
					
						
							|  |  |  | - `24xx`: set envelope period high byte. | 
					
						
							|  |  |  | - `25xx`: slide envelope period up. | 
					
						
							|  |  |  | - `26xx`: slide envelope period down. | 
					
						
							|  |  |  | - `29xy`: enable SSG auto-envelope mode. | 
					
						
							|  |  |  |   - in this mode the envelope period is set to the channel's notes, multiplied by a fraction. | 
					
						
							|  |  |  |   - `x` is the numerator. | 
					
						
							|  |  |  |   - `y` is the denominator. | 
					
						
							| 
									
										
										
										
											2022-03-22 01:58:07 -04:00
										 |  |  |   - if `x` or `y` are 0 this will disable auto-envelope mode. |