2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  ESFMu :  emulator  for  the  ESS  " ESFM "  enhanced  OPL3  clone 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Copyright  ( C )  2023  Kagamiin ~ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  file  includes  code  and  data  from  the  Nuked  OPL3  project ,  copyright  ( C ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  2013 - 2023  Nuke . YKT .  Its  usage ,  modification  and  redistribution  is  allowed 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  under  the  terms  of  the  GNU  Lesser  General  Public  License  version  2.1  or 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  later . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  ESFMu  is  free  software :  you  can  redistribute  it  and / or  modify 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  it  under  the  terms  of  the  GNU  Lesser  General  Public  License  as 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  published  by  the  Free  Software  Foundation ,  either  version  2.1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  of  the  License ,  or  ( at  your  option )  any  later  version . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  ESFMu  is  distributed  in  the  hope  that  it  will  be  useful , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  but  WITHOUT  ANY  WARRANTY ;  without  even  the  implied  warranty  of 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  MERCHANTABILITY  or  FITNESS  FOR  A  PARTICULAR  PURPOSE .   See  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  GNU  Lesser  General  Public  License  for  more  details . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  You  should  have  received  a  copy  of  the  GNU  Lesser  General  Public  License 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  along  with  ESFMu .  If  not ,  see  < https : //www.gnu.org/licenses/>.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  ESFMu  wouldn ' t  have  been  possible  without  the  hard  work  and  dedication  of 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  the  retro  computer  hardware  research  and  preservation  community . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  I ' d  like  to  thank : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   -  Nuke . YKT 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *         Developer  of  Nuked  OPL3 ,  which  was  the  basis  for  ESFMu ' s  code  and 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *         also  a  great  learning  resource  on  Yamaha  FM  synthesis  for  myself . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *         Nuke . YKT  also  gives  shoutouts  on  behalf  of  Nuked  OPL3  to : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *         -  MAME  Development  Team ( Jarek  Burczynski ,  Tatsuyuki  Satoh ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *               Feedback  and  Rhythm  part  calculation  information . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *         -  forums . submarine . org . uk ( carbon14 ,  opl3 ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *               Tremolo  and  phase  generator  calculation  information . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *         -  OPLx  decapsulated ( Matthew  Gambrell ,  Olli  Niemitalo ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *               OPL2  ROMs . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *         -  siliconpr0n . org ( John  McMaster ,  digshadow ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *               YMF262  and  VRC  VII  decaps  and  die  shots . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  rainwarrior 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *        For  performing  the  initial  research  on  ESFM  drivers  and  documenting 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *        ESS ' s  patent  on  native  mode  operator  organization . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  jwt27 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *        For  kickstarting  the  ESFM  research  project  and  compiling  rainwarrior ' s 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *        findings  and  more  in  an  accessible  document  ( " ESFM Demystified " ) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  pachuco / CatButts 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *        For  documenting  ESS ' s  patent  on  ESFM ' s  feedback  implementation ,  which 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *        was  vital  in  getting  ESFMu ' s  sound  output  to  be  accurate . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  And  everybody  who  helped  out  with  real  hardware  testing 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "esfm.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <stdint.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <stdlib.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <stddef.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <string.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <stdbool.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Log - scale  quarter  sine  table  extracted  from  OPL3  ROM ;  taken  straight  from 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Nuked  OPL3  source  code . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  TODO :  Extract  sine  table  from  ESFM  die  scans . . .  does  ESFM  even  use  a  sine 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  table ?  Patent  documents  give  a  hint  to  a  possible  method  of  generating  sine 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  waves  using  some  sort  of  boolean  logic  wizardry  ( lol ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  Optimization :  All  8  waveforms  are  calculated  and  unfolded  from  the  actual 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  data  in  OPL3 ' s  ROM .  Negative  entries  are  marked  by  0x8000 . 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  const  uint16_t  logsinrom [ 1024 * 8 ]  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// wave 0
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0859 ,  0x06c3 ,  0x0607 ,  0x058b ,  0x052e ,  0x04e4 ,  0x04a6 ,  0x0471 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0443 ,  0x041a ,  0x03f5 ,  0x03d3 ,  0x03b5 ,  0x0398 ,  0x037e ,  0x0365 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x034e ,  0x0339 ,  0x0324 ,  0x0311 ,  0x02ff ,  0x02ed ,  0x02dc ,  0x02cd ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x02bd ,  0x02af ,  0x02a0 ,  0x0293 ,  0x0286 ,  0x0279 ,  0x026d ,  0x0261 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0256 ,  0x024b ,  0x0240 ,  0x0236 ,  0x022c ,  0x0222 ,  0x0218 ,  0x020f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0206 ,  0x01fd ,  0x01f5 ,  0x01ec ,  0x01e4 ,  0x01dc ,  0x01d4 ,  0x01cd ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x01c5 ,  0x01be ,  0x01b7 ,  0x01b0 ,  0x01a9 ,  0x01a2 ,  0x019b ,  0x0195 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x018f ,  0x0188 ,  0x0182 ,  0x017c ,  0x0177 ,  0x0171 ,  0x016b ,  0x0166 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0160 ,  0x015b ,  0x0155 ,  0x0150 ,  0x014b ,  0x0146 ,  0x0141 ,  0x013c ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0137 ,  0x0133 ,  0x012e ,  0x0129 ,  0x0125 ,  0x0121 ,  0x011c ,  0x0118 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0114 ,  0x010f ,  0x010b ,  0x0107 ,  0x0103 ,  0x00ff ,  0x00fb ,  0x00f8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00f4 ,  0x00f0 ,  0x00ec ,  0x00e9 ,  0x00e5 ,  0x00e2 ,  0x00de ,  0x00db ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00d7 ,  0x00d4 ,  0x00d1 ,  0x00cd ,  0x00ca ,  0x00c7 ,  0x00c4 ,  0x00c1 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00be ,  0x00bb ,  0x00b8 ,  0x00b5 ,  0x00b2 ,  0x00af ,  0x00ac ,  0x00a9 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00a7 ,  0x00a4 ,  0x00a1 ,  0x009f ,  0x009c ,  0x0099 ,  0x0097 ,  0x0094 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0092 ,  0x008f ,  0x008d ,  0x008a ,  0x0088 ,  0x0086 ,  0x0083 ,  0x0081 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x007f ,  0x007d ,  0x007a ,  0x0078 ,  0x0076 ,  0x0074 ,  0x0072 ,  0x0070 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x006e ,  0x006c ,  0x006a ,  0x0068 ,  0x0066 ,  0x0064 ,  0x0062 ,  0x0060 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x005e ,  0x005c ,  0x005b ,  0x0059 ,  0x0057 ,  0x0055 ,  0x0053 ,  0x0052 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0050 ,  0x004e ,  0x004d ,  0x004b ,  0x004a ,  0x0048 ,  0x0046 ,  0x0045 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0043 ,  0x0042 ,  0x0040 ,  0x003f ,  0x003e ,  0x003c ,  0x003b ,  0x0039 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0038 ,  0x0037 ,  0x0035 ,  0x0034 ,  0x0033 ,  0x0031 ,  0x0030 ,  0x002f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x002e ,  0x002d ,  0x002b ,  0x002a ,  0x0029 ,  0x0028 ,  0x0027 ,  0x0026 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0025 ,  0x0024 ,  0x0023 ,  0x0022 ,  0x0021 ,  0x0020 ,  0x001f ,  0x001e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x001d ,  0x001c ,  0x001b ,  0x001a ,  0x0019 ,  0x0018 ,  0x0017 ,  0x0017 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0016 ,  0x0015 ,  0x0014 ,  0x0014 ,  0x0013 ,  0x0012 ,  0x0011 ,  0x0011 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0010 ,  0x000f ,  0x000f ,  0x000e ,  0x000d ,  0x000d ,  0x000c ,  0x000c ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x000b ,  0x000a ,  0x000a ,  0x0009 ,  0x0009 ,  0x0008 ,  0x0008 ,  0x0007 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0007 ,  0x0007 ,  0x0006 ,  0x0006 ,  0x0005 ,  0x0005 ,  0x0005 ,  0x0004 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0004 ,  0x0004 ,  0x0003 ,  0x0003 ,  0x0003 ,  0x0002 ,  0x0002 ,  0x0002 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0002 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0002 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0002 ,  0x0002 ,  0x0002 ,  0x0003 ,  0x0003 ,  0x0003 ,  0x0004 ,  0x0004 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0004 ,  0x0005 ,  0x0005 ,  0x0005 ,  0x0006 ,  0x0006 ,  0x0007 ,  0x0007 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0007 ,  0x0008 ,  0x0008 ,  0x0009 ,  0x0009 ,  0x000a ,  0x000a ,  0x000b ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x000c ,  0x000c ,  0x000d ,  0x000d ,  0x000e ,  0x000f ,  0x000f ,  0x0010 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0011 ,  0x0011 ,  0x0012 ,  0x0013 ,  0x0014 ,  0x0014 ,  0x0015 ,  0x0016 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0017 ,  0x0017 ,  0x0018 ,  0x0019 ,  0x001a ,  0x001b ,  0x001c ,  0x001d ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x001e ,  0x001f ,  0x0020 ,  0x0021 ,  0x0022 ,  0x0023 ,  0x0024 ,  0x0025 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0026 ,  0x0027 ,  0x0028 ,  0x0029 ,  0x002a ,  0x002b ,  0x002d ,  0x002e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x002f ,  0x0030 ,  0x0031 ,  0x0033 ,  0x0034 ,  0x0035 ,  0x0037 ,  0x0038 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0039 ,  0x003b ,  0x003c ,  0x003e ,  0x003f ,  0x0040 ,  0x0042 ,  0x0043 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0045 ,  0x0046 ,  0x0048 ,  0x004a ,  0x004b ,  0x004d ,  0x004e ,  0x0050 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0052 ,  0x0053 ,  0x0055 ,  0x0057 ,  0x0059 ,  0x005b ,  0x005c ,  0x005e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0060 ,  0x0062 ,  0x0064 ,  0x0066 ,  0x0068 ,  0x006a ,  0x006c ,  0x006e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0070 ,  0x0072 ,  0x0074 ,  0x0076 ,  0x0078 ,  0x007a ,  0x007d ,  0x007f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0081 ,  0x0083 ,  0x0086 ,  0x0088 ,  0x008a ,  0x008d ,  0x008f ,  0x0092 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0094 ,  0x0097 ,  0x0099 ,  0x009c ,  0x009f ,  0x00a1 ,  0x00a4 ,  0x00a7 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00a9 ,  0x00ac ,  0x00af ,  0x00b2 ,  0x00b5 ,  0x00b8 ,  0x00bb ,  0x00be ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00c1 ,  0x00c4 ,  0x00c7 ,  0x00ca ,  0x00cd ,  0x00d1 ,  0x00d4 ,  0x00d7 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00db ,  0x00de ,  0x00e2 ,  0x00e5 ,  0x00e9 ,  0x00ec ,  0x00f0 ,  0x00f4 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00f8 ,  0x00fb ,  0x00ff ,  0x0103 ,  0x0107 ,  0x010b ,  0x010f ,  0x0114 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0118 ,  0x011c ,  0x0121 ,  0x0125 ,  0x0129 ,  0x012e ,  0x0133 ,  0x0137 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x013c ,  0x0141 ,  0x0146 ,  0x014b ,  0x0150 ,  0x0155 ,  0x015b ,  0x0160 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0166 ,  0x016b ,  0x0171 ,  0x0177 ,  0x017c ,  0x0182 ,  0x0188 ,  0x018f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0195 ,  0x019b ,  0x01a2 ,  0x01a9 ,  0x01b0 ,  0x01b7 ,  0x01be ,  0x01c5 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x01cd ,  0x01d4 ,  0x01dc ,  0x01e4 ,  0x01ec ,  0x01f5 ,  0x01fd ,  0x0206 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x020f ,  0x0218 ,  0x0222 ,  0x022c ,  0x0236 ,  0x0240 ,  0x024b ,  0x0256 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0261 ,  0x026d ,  0x0279 ,  0x0286 ,  0x0293 ,  0x02a0 ,  0x02af ,  0x02bd ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x02cd ,  0x02dc ,  0x02ed ,  0x02ff ,  0x0311 ,  0x0324 ,  0x0339 ,  0x034e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0365 ,  0x037e ,  0x0398 ,  0x03b5 ,  0x03d3 ,  0x03f5 ,  0x041a ,  0x0443 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0471 ,  0x04a6 ,  0x04e4 ,  0x052e ,  0x058b ,  0x0607 ,  0x06c3 ,  0x0859 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8859 ,  0x86c3 ,  0x8607 ,  0x858b ,  0x852e ,  0x84e4 ,  0x84a6 ,  0x8471 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8443 ,  0x841a ,  0x83f5 ,  0x83d3 ,  0x83b5 ,  0x8398 ,  0x837e ,  0x8365 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x834e ,  0x8339 ,  0x8324 ,  0x8311 ,  0x82ff ,  0x82ed ,  0x82dc ,  0x82cd ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x82bd ,  0x82af ,  0x82a0 ,  0x8293 ,  0x8286 ,  0x8279 ,  0x826d ,  0x8261 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8256 ,  0x824b ,  0x8240 ,  0x8236 ,  0x822c ,  0x8222 ,  0x8218 ,  0x820f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8206 ,  0x81fd ,  0x81f5 ,  0x81ec ,  0x81e4 ,  0x81dc ,  0x81d4 ,  0x81cd ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x81c5 ,  0x81be ,  0x81b7 ,  0x81b0 ,  0x81a9 ,  0x81a2 ,  0x819b ,  0x8195 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x818f ,  0x8188 ,  0x8182 ,  0x817c ,  0x8177 ,  0x8171 ,  0x816b ,  0x8166 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8160 ,  0x815b ,  0x8155 ,  0x8150 ,  0x814b ,  0x8146 ,  0x8141 ,  0x813c ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8137 ,  0x8133 ,  0x812e ,  0x8129 ,  0x8125 ,  0x8121 ,  0x811c ,  0x8118 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8114 ,  0x810f ,  0x810b ,  0x8107 ,  0x8103 ,  0x80ff ,  0x80fb ,  0x80f8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x80f4 ,  0x80f0 ,  0x80ec ,  0x80e9 ,  0x80e5 ,  0x80e2 ,  0x80de ,  0x80db ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x80d7 ,  0x80d4 ,  0x80d1 ,  0x80cd ,  0x80ca ,  0x80c7 ,  0x80c4 ,  0x80c1 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x80be ,  0x80bb ,  0x80b8 ,  0x80b5 ,  0x80b2 ,  0x80af ,  0x80ac ,  0x80a9 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x80a7 ,  0x80a4 ,  0x80a1 ,  0x809f ,  0x809c ,  0x8099 ,  0x8097 ,  0x8094 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8092 ,  0x808f ,  0x808d ,  0x808a ,  0x8088 ,  0x8086 ,  0x8083 ,  0x8081 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x807f ,  0x807d ,  0x807a ,  0x8078 ,  0x8076 ,  0x8074 ,  0x8072 ,  0x8070 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x806e ,  0x806c ,  0x806a ,  0x8068 ,  0x8066 ,  0x8064 ,  0x8062 ,  0x8060 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x805e ,  0x805c ,  0x805b ,  0x8059 ,  0x8057 ,  0x8055 ,  0x8053 ,  0x8052 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8050 ,  0x804e ,  0x804d ,  0x804b ,  0x804a ,  0x8048 ,  0x8046 ,  0x8045 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8043 ,  0x8042 ,  0x8040 ,  0x803f ,  0x803e ,  0x803c ,  0x803b ,  0x8039 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8038 ,  0x8037 ,  0x8035 ,  0x8034 ,  0x8033 ,  0x8031 ,  0x8030 ,  0x802f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x802e ,  0x802d ,  0x802b ,  0x802a ,  0x8029 ,  0x8028 ,  0x8027 ,  0x8026 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8025 ,  0x8024 ,  0x8023 ,  0x8022 ,  0x8021 ,  0x8020 ,  0x801f ,  0x801e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x801d ,  0x801c ,  0x801b ,  0x801a ,  0x8019 ,  0x8018 ,  0x8017 ,  0x8017 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8016 ,  0x8015 ,  0x8014 ,  0x8014 ,  0x8013 ,  0x8012 ,  0x8011 ,  0x8011 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8010 ,  0x800f ,  0x800f ,  0x800e ,  0x800d ,  0x800d ,  0x800c ,  0x800c ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x800b ,  0x800a ,  0x800a ,  0x8009 ,  0x8009 ,  0x8008 ,  0x8008 ,  0x8007 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8007 ,  0x8007 ,  0x8006 ,  0x8006 ,  0x8005 ,  0x8005 ,  0x8005 ,  0x8004 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8004 ,  0x8004 ,  0x8003 ,  0x8003 ,  0x8003 ,  0x8002 ,  0x8002 ,  0x8002 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8002 ,  0x8001 ,  0x8001 ,  0x8001 ,  0x8001 ,  0x8001 ,  0x8001 ,  0x8001 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8001 ,  0x8001 ,  0x8001 ,  0x8001 ,  0x8001 ,  0x8001 ,  0x8001 ,  0x8002 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8002 ,  0x8002 ,  0x8002 ,  0x8003 ,  0x8003 ,  0x8003 ,  0x8004 ,  0x8004 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8004 ,  0x8005 ,  0x8005 ,  0x8005 ,  0x8006 ,  0x8006 ,  0x8007 ,  0x8007 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8007 ,  0x8008 ,  0x8008 ,  0x8009 ,  0x8009 ,  0x800a ,  0x800a ,  0x800b ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x800c ,  0x800c ,  0x800d ,  0x800d ,  0x800e ,  0x800f ,  0x800f ,  0x8010 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8011 ,  0x8011 ,  0x8012 ,  0x8013 ,  0x8014 ,  0x8014 ,  0x8015 ,  0x8016 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8017 ,  0x8017 ,  0x8018 ,  0x8019 ,  0x801a ,  0x801b ,  0x801c ,  0x801d ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x801e ,  0x801f ,  0x8020 ,  0x8021 ,  0x8022 ,  0x8023 ,  0x8024 ,  0x8025 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8026 ,  0x8027 ,  0x8028 ,  0x8029 ,  0x802a ,  0x802b ,  0x802d ,  0x802e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x802f ,  0x8030 ,  0x8031 ,  0x8033 ,  0x8034 ,  0x8035 ,  0x8037 ,  0x8038 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8039 ,  0x803b ,  0x803c ,  0x803e ,  0x803f ,  0x8040 ,  0x8042 ,  0x8043 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8045 ,  0x8046 ,  0x8048 ,  0x804a ,  0x804b ,  0x804d ,  0x804e ,  0x8050 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8052 ,  0x8053 ,  0x8055 ,  0x8057 ,  0x8059 ,  0x805b ,  0x805c ,  0x805e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8060 ,  0x8062 ,  0x8064 ,  0x8066 ,  0x8068 ,  0x806a ,  0x806c ,  0x806e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8070 ,  0x8072 ,  0x8074 ,  0x8076 ,  0x8078 ,  0x807a ,  0x807d ,  0x807f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8081 ,  0x8083 ,  0x8086 ,  0x8088 ,  0x808a ,  0x808d ,  0x808f ,  0x8092 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8094 ,  0x8097 ,  0x8099 ,  0x809c ,  0x809f ,  0x80a1 ,  0x80a4 ,  0x80a7 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x80a9 ,  0x80ac ,  0x80af ,  0x80b2 ,  0x80b5 ,  0x80b8 ,  0x80bb ,  0x80be ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x80c1 ,  0x80c4 ,  0x80c7 ,  0x80ca ,  0x80cd ,  0x80d1 ,  0x80d4 ,  0x80d7 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x80db ,  0x80de ,  0x80e2 ,  0x80e5 ,  0x80e9 ,  0x80ec ,  0x80f0 ,  0x80f4 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x80f8 ,  0x80fb ,  0x80ff ,  0x8103 ,  0x8107 ,  0x810b ,  0x810f ,  0x8114 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8118 ,  0x811c ,  0x8121 ,  0x8125 ,  0x8129 ,  0x812e ,  0x8133 ,  0x8137 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x813c ,  0x8141 ,  0x8146 ,  0x814b ,  0x8150 ,  0x8155 ,  0x815b ,  0x8160 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8166 ,  0x816b ,  0x8171 ,  0x8177 ,  0x817c ,  0x8182 ,  0x8188 ,  0x818f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8195 ,  0x819b ,  0x81a2 ,  0x81a9 ,  0x81b0 ,  0x81b7 ,  0x81be ,  0x81c5 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x81cd ,  0x81d4 ,  0x81dc ,  0x81e4 ,  0x81ec ,  0x81f5 ,  0x81fd ,  0x8206 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x820f ,  0x8218 ,  0x8222 ,  0x822c ,  0x8236 ,  0x8240 ,  0x824b ,  0x8256 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8261 ,  0x826d ,  0x8279 ,  0x8286 ,  0x8293 ,  0x82a0 ,  0x82af ,  0x82bd ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x82cd ,  0x82dc ,  0x82ed ,  0x82ff ,  0x8311 ,  0x8324 ,  0x8339 ,  0x834e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8365 ,  0x837e ,  0x8398 ,  0x83b5 ,  0x83d3 ,  0x83f5 ,  0x841a ,  0x8443 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8471 ,  0x84a6 ,  0x84e4 ,  0x852e ,  0x858b ,  0x8607 ,  0x86c3 ,  0x8859 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// wave 1
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0859 ,  0x06c3 ,  0x0607 ,  0x058b ,  0x052e ,  0x04e4 ,  0x04a6 ,  0x0471 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0443 ,  0x041a ,  0x03f5 ,  0x03d3 ,  0x03b5 ,  0x0398 ,  0x037e ,  0x0365 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x034e ,  0x0339 ,  0x0324 ,  0x0311 ,  0x02ff ,  0x02ed ,  0x02dc ,  0x02cd ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x02bd ,  0x02af ,  0x02a0 ,  0x0293 ,  0x0286 ,  0x0279 ,  0x026d ,  0x0261 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0256 ,  0x024b ,  0x0240 ,  0x0236 ,  0x022c ,  0x0222 ,  0x0218 ,  0x020f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0206 ,  0x01fd ,  0x01f5 ,  0x01ec ,  0x01e4 ,  0x01dc ,  0x01d4 ,  0x01cd ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x01c5 ,  0x01be ,  0x01b7 ,  0x01b0 ,  0x01a9 ,  0x01a2 ,  0x019b ,  0x0195 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x018f ,  0x0188 ,  0x0182 ,  0x017c ,  0x0177 ,  0x0171 ,  0x016b ,  0x0166 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0160 ,  0x015b ,  0x0155 ,  0x0150 ,  0x014b ,  0x0146 ,  0x0141 ,  0x013c ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0137 ,  0x0133 ,  0x012e ,  0x0129 ,  0x0125 ,  0x0121 ,  0x011c ,  0x0118 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0114 ,  0x010f ,  0x010b ,  0x0107 ,  0x0103 ,  0x00ff ,  0x00fb ,  0x00f8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00f4 ,  0x00f0 ,  0x00ec ,  0x00e9 ,  0x00e5 ,  0x00e2 ,  0x00de ,  0x00db ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00d7 ,  0x00d4 ,  0x00d1 ,  0x00cd ,  0x00ca ,  0x00c7 ,  0x00c4 ,  0x00c1 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00be ,  0x00bb ,  0x00b8 ,  0x00b5 ,  0x00b2 ,  0x00af ,  0x00ac ,  0x00a9 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00a7 ,  0x00a4 ,  0x00a1 ,  0x009f ,  0x009c ,  0x0099 ,  0x0097 ,  0x0094 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0092 ,  0x008f ,  0x008d ,  0x008a ,  0x0088 ,  0x0086 ,  0x0083 ,  0x0081 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x007f ,  0x007d ,  0x007a ,  0x0078 ,  0x0076 ,  0x0074 ,  0x0072 ,  0x0070 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x006e ,  0x006c ,  0x006a ,  0x0068 ,  0x0066 ,  0x0064 ,  0x0062 ,  0x0060 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x005e ,  0x005c ,  0x005b ,  0x0059 ,  0x0057 ,  0x0055 ,  0x0053 ,  0x0052 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0050 ,  0x004e ,  0x004d ,  0x004b ,  0x004a ,  0x0048 ,  0x0046 ,  0x0045 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0043 ,  0x0042 ,  0x0040 ,  0x003f ,  0x003e ,  0x003c ,  0x003b ,  0x0039 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0038 ,  0x0037 ,  0x0035 ,  0x0034 ,  0x0033 ,  0x0031 ,  0x0030 ,  0x002f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x002e ,  0x002d ,  0x002b ,  0x002a ,  0x0029 ,  0x0028 ,  0x0027 ,  0x0026 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0025 ,  0x0024 ,  0x0023 ,  0x0022 ,  0x0021 ,  0x0020 ,  0x001f ,  0x001e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x001d ,  0x001c ,  0x001b ,  0x001a ,  0x0019 ,  0x0018 ,  0x0017 ,  0x0017 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0016 ,  0x0015 ,  0x0014 ,  0x0014 ,  0x0013 ,  0x0012 ,  0x0011 ,  0x0011 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0010 ,  0x000f ,  0x000f ,  0x000e ,  0x000d ,  0x000d ,  0x000c ,  0x000c ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x000b ,  0x000a ,  0x000a ,  0x0009 ,  0x0009 ,  0x0008 ,  0x0008 ,  0x0007 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0007 ,  0x0007 ,  0x0006 ,  0x0006 ,  0x0005 ,  0x0005 ,  0x0005 ,  0x0004 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0004 ,  0x0004 ,  0x0003 ,  0x0003 ,  0x0003 ,  0x0002 ,  0x0002 ,  0x0002 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0002 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0002 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0002 ,  0x0002 ,  0x0002 ,  0x0003 ,  0x0003 ,  0x0003 ,  0x0004 ,  0x0004 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0004 ,  0x0005 ,  0x0005 ,  0x0005 ,  0x0006 ,  0x0006 ,  0x0007 ,  0x0007 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0007 ,  0x0008 ,  0x0008 ,  0x0009 ,  0x0009 ,  0x000a ,  0x000a ,  0x000b ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x000c ,  0x000c ,  0x000d ,  0x000d ,  0x000e ,  0x000f ,  0x000f ,  0x0010 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0011 ,  0x0011 ,  0x0012 ,  0x0013 ,  0x0014 ,  0x0014 ,  0x0015 ,  0x0016 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0017 ,  0x0017 ,  0x0018 ,  0x0019 ,  0x001a ,  0x001b ,  0x001c ,  0x001d ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x001e ,  0x001f ,  0x0020 ,  0x0021 ,  0x0022 ,  0x0023 ,  0x0024 ,  0x0025 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0026 ,  0x0027 ,  0x0028 ,  0x0029 ,  0x002a ,  0x002b ,  0x002d ,  0x002e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x002f ,  0x0030 ,  0x0031 ,  0x0033 ,  0x0034 ,  0x0035 ,  0x0037 ,  0x0038 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0039 ,  0x003b ,  0x003c ,  0x003e ,  0x003f ,  0x0040 ,  0x0042 ,  0x0043 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0045 ,  0x0046 ,  0x0048 ,  0x004a ,  0x004b ,  0x004d ,  0x004e ,  0x0050 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0052 ,  0x0053 ,  0x0055 ,  0x0057 ,  0x0059 ,  0x005b ,  0x005c ,  0x005e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0060 ,  0x0062 ,  0x0064 ,  0x0066 ,  0x0068 ,  0x006a ,  0x006c ,  0x006e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0070 ,  0x0072 ,  0x0074 ,  0x0076 ,  0x0078 ,  0x007a ,  0x007d ,  0x007f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0081 ,  0x0083 ,  0x0086 ,  0x0088 ,  0x008a ,  0x008d ,  0x008f ,  0x0092 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0094 ,  0x0097 ,  0x0099 ,  0x009c ,  0x009f ,  0x00a1 ,  0x00a4 ,  0x00a7 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00a9 ,  0x00ac ,  0x00af ,  0x00b2 ,  0x00b5 ,  0x00b8 ,  0x00bb ,  0x00be ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00c1 ,  0x00c4 ,  0x00c7 ,  0x00ca ,  0x00cd ,  0x00d1 ,  0x00d4 ,  0x00d7 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00db ,  0x00de ,  0x00e2 ,  0x00e5 ,  0x00e9 ,  0x00ec ,  0x00f0 ,  0x00f4 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00f8 ,  0x00fb ,  0x00ff ,  0x0103 ,  0x0107 ,  0x010b ,  0x010f ,  0x0114 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0118 ,  0x011c ,  0x0121 ,  0x0125 ,  0x0129 ,  0x012e ,  0x0133 ,  0x0137 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x013c ,  0x0141 ,  0x0146 ,  0x014b ,  0x0150 ,  0x0155 ,  0x015b ,  0x0160 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0166 ,  0x016b ,  0x0171 ,  0x0177 ,  0x017c ,  0x0182 ,  0x0188 ,  0x018f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0195 ,  0x019b ,  0x01a2 ,  0x01a9 ,  0x01b0 ,  0x01b7 ,  0x01be ,  0x01c5 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x01cd ,  0x01d4 ,  0x01dc ,  0x01e4 ,  0x01ec ,  0x01f5 ,  0x01fd ,  0x0206 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x020f ,  0x0218 ,  0x0222 ,  0x022c ,  0x0236 ,  0x0240 ,  0x024b ,  0x0256 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0261 ,  0x026d ,  0x0279 ,  0x0286 ,  0x0293 ,  0x02a0 ,  0x02af ,  0x02bd ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x02cd ,  0x02dc ,  0x02ed ,  0x02ff ,  0x0311 ,  0x0324 ,  0x0339 ,  0x034e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0365 ,  0x037e ,  0x0398 ,  0x03b5 ,  0x03d3 ,  0x03f5 ,  0x041a ,  0x0443 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0471 ,  0x04a6 ,  0x04e4 ,  0x052e ,  0x058b ,  0x0607 ,  0x06c3 ,  0x0859 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// wave 2
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0859 ,  0x06c3 ,  0x0607 ,  0x058b ,  0x052e ,  0x04e4 ,  0x04a6 ,  0x0471 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0443 ,  0x041a ,  0x03f5 ,  0x03d3 ,  0x03b5 ,  0x0398 ,  0x037e ,  0x0365 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x034e ,  0x0339 ,  0x0324 ,  0x0311 ,  0x02ff ,  0x02ed ,  0x02dc ,  0x02cd ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x02bd ,  0x02af ,  0x02a0 ,  0x0293 ,  0x0286 ,  0x0279 ,  0x026d ,  0x0261 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0256 ,  0x024b ,  0x0240 ,  0x0236 ,  0x022c ,  0x0222 ,  0x0218 ,  0x020f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0206 ,  0x01fd ,  0x01f5 ,  0x01ec ,  0x01e4 ,  0x01dc ,  0x01d4 ,  0x01cd ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x01c5 ,  0x01be ,  0x01b7 ,  0x01b0 ,  0x01a9 ,  0x01a2 ,  0x019b ,  0x0195 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x018f ,  0x0188 ,  0x0182 ,  0x017c ,  0x0177 ,  0x0171 ,  0x016b ,  0x0166 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0160 ,  0x015b ,  0x0155 ,  0x0150 ,  0x014b ,  0x0146 ,  0x0141 ,  0x013c ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0137 ,  0x0133 ,  0x012e ,  0x0129 ,  0x0125 ,  0x0121 ,  0x011c ,  0x0118 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0114 ,  0x010f ,  0x010b ,  0x0107 ,  0x0103 ,  0x00ff ,  0x00fb ,  0x00f8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00f4 ,  0x00f0 ,  0x00ec ,  0x00e9 ,  0x00e5 ,  0x00e2 ,  0x00de ,  0x00db ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00d7 ,  0x00d4 ,  0x00d1 ,  0x00cd ,  0x00ca ,  0x00c7 ,  0x00c4 ,  0x00c1 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00be ,  0x00bb ,  0x00b8 ,  0x00b5 ,  0x00b2 ,  0x00af ,  0x00ac ,  0x00a9 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00a7 ,  0x00a4 ,  0x00a1 ,  0x009f ,  0x009c ,  0x0099 ,  0x0097 ,  0x0094 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0092 ,  0x008f ,  0x008d ,  0x008a ,  0x0088 ,  0x0086 ,  0x0083 ,  0x0081 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x007f ,  0x007d ,  0x007a ,  0x0078 ,  0x0076 ,  0x0074 ,  0x0072 ,  0x0070 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x006e ,  0x006c ,  0x006a ,  0x0068 ,  0x0066 ,  0x0064 ,  0x0062 ,  0x0060 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x005e ,  0x005c ,  0x005b ,  0x0059 ,  0x0057 ,  0x0055 ,  0x0053 ,  0x0052 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0050 ,  0x004e ,  0x004d ,  0x004b ,  0x004a ,  0x0048 ,  0x0046 ,  0x0045 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0043 ,  0x0042 ,  0x0040 ,  0x003f ,  0x003e ,  0x003c ,  0x003b ,  0x0039 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0038 ,  0x0037 ,  0x0035 ,  0x0034 ,  0x0033 ,  0x0031 ,  0x0030 ,  0x002f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x002e ,  0x002d ,  0x002b ,  0x002a ,  0x0029 ,  0x0028 ,  0x0027 ,  0x0026 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0025 ,  0x0024 ,  0x0023 ,  0x0022 ,  0x0021 ,  0x0020 ,  0x001f ,  0x001e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x001d ,  0x001c ,  0x001b ,  0x001a ,  0x0019 ,  0x0018 ,  0x0017 ,  0x0017 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0016 ,  0x0015 ,  0x0014 ,  0x0014 ,  0x0013 ,  0x0012 ,  0x0011 ,  0x0011 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0010 ,  0x000f ,  0x000f ,  0x000e ,  0x000d ,  0x000d ,  0x000c ,  0x000c ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x000b ,  0x000a ,  0x000a ,  0x0009 ,  0x0009 ,  0x0008 ,  0x0008 ,  0x0007 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0007 ,  0x0007 ,  0x0006 ,  0x0006 ,  0x0005 ,  0x0005 ,  0x0005 ,  0x0004 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0004 ,  0x0004 ,  0x0003 ,  0x0003 ,  0x0003 ,  0x0002 ,  0x0002 ,  0x0002 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0002 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0002 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0002 ,  0x0002 ,  0x0002 ,  0x0003 ,  0x0003 ,  0x0003 ,  0x0004 ,  0x0004 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0004 ,  0x0005 ,  0x0005 ,  0x0005 ,  0x0006 ,  0x0006 ,  0x0007 ,  0x0007 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0007 ,  0x0008 ,  0x0008 ,  0x0009 ,  0x0009 ,  0x000a ,  0x000a ,  0x000b ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x000c ,  0x000c ,  0x000d ,  0x000d ,  0x000e ,  0x000f ,  0x000f ,  0x0010 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0011 ,  0x0011 ,  0x0012 ,  0x0013 ,  0x0014 ,  0x0014 ,  0x0015 ,  0x0016 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0017 ,  0x0017 ,  0x0018 ,  0x0019 ,  0x001a ,  0x001b ,  0x001c ,  0x001d ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x001e ,  0x001f ,  0x0020 ,  0x0021 ,  0x0022 ,  0x0023 ,  0x0024 ,  0x0025 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0026 ,  0x0027 ,  0x0028 ,  0x0029 ,  0x002a ,  0x002b ,  0x002d ,  0x002e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x002f ,  0x0030 ,  0x0031 ,  0x0033 ,  0x0034 ,  0x0035 ,  0x0037 ,  0x0038 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0039 ,  0x003b ,  0x003c ,  0x003e ,  0x003f ,  0x0040 ,  0x0042 ,  0x0043 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0045 ,  0x0046 ,  0x0048 ,  0x004a ,  0x004b ,  0x004d ,  0x004e ,  0x0050 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0052 ,  0x0053 ,  0x0055 ,  0x0057 ,  0x0059 ,  0x005b ,  0x005c ,  0x005e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0060 ,  0x0062 ,  0x0064 ,  0x0066 ,  0x0068 ,  0x006a ,  0x006c ,  0x006e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0070 ,  0x0072 ,  0x0074 ,  0x0076 ,  0x0078 ,  0x007a ,  0x007d ,  0x007f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0081 ,  0x0083 ,  0x0086 ,  0x0088 ,  0x008a ,  0x008d ,  0x008f ,  0x0092 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0094 ,  0x0097 ,  0x0099 ,  0x009c ,  0x009f ,  0x00a1 ,  0x00a4 ,  0x00a7 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00a9 ,  0x00ac ,  0x00af ,  0x00b2 ,  0x00b5 ,  0x00b8 ,  0x00bb ,  0x00be ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00c1 ,  0x00c4 ,  0x00c7 ,  0x00ca ,  0x00cd ,  0x00d1 ,  0x00d4 ,  0x00d7 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00db ,  0x00de ,  0x00e2 ,  0x00e5 ,  0x00e9 ,  0x00ec ,  0x00f0 ,  0x00f4 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00f8 ,  0x00fb ,  0x00ff ,  0x0103 ,  0x0107 ,  0x010b ,  0x010f ,  0x0114 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0118 ,  0x011c ,  0x0121 ,  0x0125 ,  0x0129 ,  0x012e ,  0x0133 ,  0x0137 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x013c ,  0x0141 ,  0x0146 ,  0x014b ,  0x0150 ,  0x0155 ,  0x015b ,  0x0160 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0166 ,  0x016b ,  0x0171 ,  0x0177 ,  0x017c ,  0x0182 ,  0x0188 ,  0x018f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0195 ,  0x019b ,  0x01a2 ,  0x01a9 ,  0x01b0 ,  0x01b7 ,  0x01be ,  0x01c5 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x01cd ,  0x01d4 ,  0x01dc ,  0x01e4 ,  0x01ec ,  0x01f5 ,  0x01fd ,  0x0206 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x020f ,  0x0218 ,  0x0222 ,  0x022c ,  0x0236 ,  0x0240 ,  0x024b ,  0x0256 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0261 ,  0x026d ,  0x0279 ,  0x0286 ,  0x0293 ,  0x02a0 ,  0x02af ,  0x02bd ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x02cd ,  0x02dc ,  0x02ed ,  0x02ff ,  0x0311 ,  0x0324 ,  0x0339 ,  0x034e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0365 ,  0x037e ,  0x0398 ,  0x03b5 ,  0x03d3 ,  0x03f5 ,  0x041a ,  0x0443 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0471 ,  0x04a6 ,  0x04e4 ,  0x052e ,  0x058b ,  0x0607 ,  0x06c3 ,  0x0859 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0859 ,  0x06c3 ,  0x0607 ,  0x058b ,  0x052e ,  0x04e4 ,  0x04a6 ,  0x0471 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0443 ,  0x041a ,  0x03f5 ,  0x03d3 ,  0x03b5 ,  0x0398 ,  0x037e ,  0x0365 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x034e ,  0x0339 ,  0x0324 ,  0x0311 ,  0x02ff ,  0x02ed ,  0x02dc ,  0x02cd ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x02bd ,  0x02af ,  0x02a0 ,  0x0293 ,  0x0286 ,  0x0279 ,  0x026d ,  0x0261 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0256 ,  0x024b ,  0x0240 ,  0x0236 ,  0x022c ,  0x0222 ,  0x0218 ,  0x020f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0206 ,  0x01fd ,  0x01f5 ,  0x01ec ,  0x01e4 ,  0x01dc ,  0x01d4 ,  0x01cd ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x01c5 ,  0x01be ,  0x01b7 ,  0x01b0 ,  0x01a9 ,  0x01a2 ,  0x019b ,  0x0195 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x018f ,  0x0188 ,  0x0182 ,  0x017c ,  0x0177 ,  0x0171 ,  0x016b ,  0x0166 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0160 ,  0x015b ,  0x0155 ,  0x0150 ,  0x014b ,  0x0146 ,  0x0141 ,  0x013c ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0137 ,  0x0133 ,  0x012e ,  0x0129 ,  0x0125 ,  0x0121 ,  0x011c ,  0x0118 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0114 ,  0x010f ,  0x010b ,  0x0107 ,  0x0103 ,  0x00ff ,  0x00fb ,  0x00f8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00f4 ,  0x00f0 ,  0x00ec ,  0x00e9 ,  0x00e5 ,  0x00e2 ,  0x00de ,  0x00db ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00d7 ,  0x00d4 ,  0x00d1 ,  0x00cd ,  0x00ca ,  0x00c7 ,  0x00c4 ,  0x00c1 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00be ,  0x00bb ,  0x00b8 ,  0x00b5 ,  0x00b2 ,  0x00af ,  0x00ac ,  0x00a9 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00a7 ,  0x00a4 ,  0x00a1 ,  0x009f ,  0x009c ,  0x0099 ,  0x0097 ,  0x0094 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0092 ,  0x008f ,  0x008d ,  0x008a ,  0x0088 ,  0x0086 ,  0x0083 ,  0x0081 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x007f ,  0x007d ,  0x007a ,  0x0078 ,  0x0076 ,  0x0074 ,  0x0072 ,  0x0070 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x006e ,  0x006c ,  0x006a ,  0x0068 ,  0x0066 ,  0x0064 ,  0x0062 ,  0x0060 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x005e ,  0x005c ,  0x005b ,  0x0059 ,  0x0057 ,  0x0055 ,  0x0053 ,  0x0052 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0050 ,  0x004e ,  0x004d ,  0x004b ,  0x004a ,  0x0048 ,  0x0046 ,  0x0045 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0043 ,  0x0042 ,  0x0040 ,  0x003f ,  0x003e ,  0x003c ,  0x003b ,  0x0039 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0038 ,  0x0037 ,  0x0035 ,  0x0034 ,  0x0033 ,  0x0031 ,  0x0030 ,  0x002f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x002e ,  0x002d ,  0x002b ,  0x002a ,  0x0029 ,  0x0028 ,  0x0027 ,  0x0026 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0025 ,  0x0024 ,  0x0023 ,  0x0022 ,  0x0021 ,  0x0020 ,  0x001f ,  0x001e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x001d ,  0x001c ,  0x001b ,  0x001a ,  0x0019 ,  0x0018 ,  0x0017 ,  0x0017 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0016 ,  0x0015 ,  0x0014 ,  0x0014 ,  0x0013 ,  0x0012 ,  0x0011 ,  0x0011 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0010 ,  0x000f ,  0x000f ,  0x000e ,  0x000d ,  0x000d ,  0x000c ,  0x000c ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x000b ,  0x000a ,  0x000a ,  0x0009 ,  0x0009 ,  0x0008 ,  0x0008 ,  0x0007 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0007 ,  0x0007 ,  0x0006 ,  0x0006 ,  0x0005 ,  0x0005 ,  0x0005 ,  0x0004 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0004 ,  0x0004 ,  0x0003 ,  0x0003 ,  0x0003 ,  0x0002 ,  0x0002 ,  0x0002 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0002 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0002 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0002 ,  0x0002 ,  0x0002 ,  0x0003 ,  0x0003 ,  0x0003 ,  0x0004 ,  0x0004 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0004 ,  0x0005 ,  0x0005 ,  0x0005 ,  0x0006 ,  0x0006 ,  0x0007 ,  0x0007 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0007 ,  0x0008 ,  0x0008 ,  0x0009 ,  0x0009 ,  0x000a ,  0x000a ,  0x000b ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x000c ,  0x000c ,  0x000d ,  0x000d ,  0x000e ,  0x000f ,  0x000f ,  0x0010 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0011 ,  0x0011 ,  0x0012 ,  0x0013 ,  0x0014 ,  0x0014 ,  0x0015 ,  0x0016 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0017 ,  0x0017 ,  0x0018 ,  0x0019 ,  0x001a ,  0x001b ,  0x001c ,  0x001d ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x001e ,  0x001f ,  0x0020 ,  0x0021 ,  0x0022 ,  0x0023 ,  0x0024 ,  0x0025 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0026 ,  0x0027 ,  0x0028 ,  0x0029 ,  0x002a ,  0x002b ,  0x002d ,  0x002e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x002f ,  0x0030 ,  0x0031 ,  0x0033 ,  0x0034 ,  0x0035 ,  0x0037 ,  0x0038 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0039 ,  0x003b ,  0x003c ,  0x003e ,  0x003f ,  0x0040 ,  0x0042 ,  0x0043 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0045 ,  0x0046 ,  0x0048 ,  0x004a ,  0x004b ,  0x004d ,  0x004e ,  0x0050 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0052 ,  0x0053 ,  0x0055 ,  0x0057 ,  0x0059 ,  0x005b ,  0x005c ,  0x005e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0060 ,  0x0062 ,  0x0064 ,  0x0066 ,  0x0068 ,  0x006a ,  0x006c ,  0x006e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0070 ,  0x0072 ,  0x0074 ,  0x0076 ,  0x0078 ,  0x007a ,  0x007d ,  0x007f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0081 ,  0x0083 ,  0x0086 ,  0x0088 ,  0x008a ,  0x008d ,  0x008f ,  0x0092 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0094 ,  0x0097 ,  0x0099 ,  0x009c ,  0x009f ,  0x00a1 ,  0x00a4 ,  0x00a7 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00a9 ,  0x00ac ,  0x00af ,  0x00b2 ,  0x00b5 ,  0x00b8 ,  0x00bb ,  0x00be ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00c1 ,  0x00c4 ,  0x00c7 ,  0x00ca ,  0x00cd ,  0x00d1 ,  0x00d4 ,  0x00d7 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00db ,  0x00de ,  0x00e2 ,  0x00e5 ,  0x00e9 ,  0x00ec ,  0x00f0 ,  0x00f4 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00f8 ,  0x00fb ,  0x00ff ,  0x0103 ,  0x0107 ,  0x010b ,  0x010f ,  0x0114 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0118 ,  0x011c ,  0x0121 ,  0x0125 ,  0x0129 ,  0x012e ,  0x0133 ,  0x0137 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x013c ,  0x0141 ,  0x0146 ,  0x014b ,  0x0150 ,  0x0155 ,  0x015b ,  0x0160 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0166 ,  0x016b ,  0x0171 ,  0x0177 ,  0x017c ,  0x0182 ,  0x0188 ,  0x018f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0195 ,  0x019b ,  0x01a2 ,  0x01a9 ,  0x01b0 ,  0x01b7 ,  0x01be ,  0x01c5 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x01cd ,  0x01d4 ,  0x01dc ,  0x01e4 ,  0x01ec ,  0x01f5 ,  0x01fd ,  0x0206 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x020f ,  0x0218 ,  0x0222 ,  0x022c ,  0x0236 ,  0x0240 ,  0x024b ,  0x0256 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0261 ,  0x026d ,  0x0279 ,  0x0286 ,  0x0293 ,  0x02a0 ,  0x02af ,  0x02bd ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x02cd ,  0x02dc ,  0x02ed ,  0x02ff ,  0x0311 ,  0x0324 ,  0x0339 ,  0x034e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0365 ,  0x037e ,  0x0398 ,  0x03b5 ,  0x03d3 ,  0x03f5 ,  0x041a ,  0x0443 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0471 ,  0x04a6 ,  0x04e4 ,  0x052e ,  0x058b ,  0x0607 ,  0x06c3 ,  0x0859 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// wave 3
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0859 ,  0x06c3 ,  0x0607 ,  0x058b ,  0x052e ,  0x04e4 ,  0x04a6 ,  0x0471 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0443 ,  0x041a ,  0x03f5 ,  0x03d3 ,  0x03b5 ,  0x0398 ,  0x037e ,  0x0365 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x034e ,  0x0339 ,  0x0324 ,  0x0311 ,  0x02ff ,  0x02ed ,  0x02dc ,  0x02cd ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x02bd ,  0x02af ,  0x02a0 ,  0x0293 ,  0x0286 ,  0x0279 ,  0x026d ,  0x0261 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0256 ,  0x024b ,  0x0240 ,  0x0236 ,  0x022c ,  0x0222 ,  0x0218 ,  0x020f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0206 ,  0x01fd ,  0x01f5 ,  0x01ec ,  0x01e4 ,  0x01dc ,  0x01d4 ,  0x01cd ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x01c5 ,  0x01be ,  0x01b7 ,  0x01b0 ,  0x01a9 ,  0x01a2 ,  0x019b ,  0x0195 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x018f ,  0x0188 ,  0x0182 ,  0x017c ,  0x0177 ,  0x0171 ,  0x016b ,  0x0166 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0160 ,  0x015b ,  0x0155 ,  0x0150 ,  0x014b ,  0x0146 ,  0x0141 ,  0x013c ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0137 ,  0x0133 ,  0x012e ,  0x0129 ,  0x0125 ,  0x0121 ,  0x011c ,  0x0118 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0114 ,  0x010f ,  0x010b ,  0x0107 ,  0x0103 ,  0x00ff ,  0x00fb ,  0x00f8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00f4 ,  0x00f0 ,  0x00ec ,  0x00e9 ,  0x00e5 ,  0x00e2 ,  0x00de ,  0x00db ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00d7 ,  0x00d4 ,  0x00d1 ,  0x00cd ,  0x00ca ,  0x00c7 ,  0x00c4 ,  0x00c1 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00be ,  0x00bb ,  0x00b8 ,  0x00b5 ,  0x00b2 ,  0x00af ,  0x00ac ,  0x00a9 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00a7 ,  0x00a4 ,  0x00a1 ,  0x009f ,  0x009c ,  0x0099 ,  0x0097 ,  0x0094 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0092 ,  0x008f ,  0x008d ,  0x008a ,  0x0088 ,  0x0086 ,  0x0083 ,  0x0081 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x007f ,  0x007d ,  0x007a ,  0x0078 ,  0x0076 ,  0x0074 ,  0x0072 ,  0x0070 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x006e ,  0x006c ,  0x006a ,  0x0068 ,  0x0066 ,  0x0064 ,  0x0062 ,  0x0060 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x005e ,  0x005c ,  0x005b ,  0x0059 ,  0x0057 ,  0x0055 ,  0x0053 ,  0x0052 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0050 ,  0x004e ,  0x004d ,  0x004b ,  0x004a ,  0x0048 ,  0x0046 ,  0x0045 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0043 ,  0x0042 ,  0x0040 ,  0x003f ,  0x003e ,  0x003c ,  0x003b ,  0x0039 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0038 ,  0x0037 ,  0x0035 ,  0x0034 ,  0x0033 ,  0x0031 ,  0x0030 ,  0x002f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x002e ,  0x002d ,  0x002b ,  0x002a ,  0x0029 ,  0x0028 ,  0x0027 ,  0x0026 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0025 ,  0x0024 ,  0x0023 ,  0x0022 ,  0x0021 ,  0x0020 ,  0x001f ,  0x001e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x001d ,  0x001c ,  0x001b ,  0x001a ,  0x0019 ,  0x0018 ,  0x0017 ,  0x0017 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0016 ,  0x0015 ,  0x0014 ,  0x0014 ,  0x0013 ,  0x0012 ,  0x0011 ,  0x0011 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0010 ,  0x000f ,  0x000f ,  0x000e ,  0x000d ,  0x000d ,  0x000c ,  0x000c ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x000b ,  0x000a ,  0x000a ,  0x0009 ,  0x0009 ,  0x0008 ,  0x0008 ,  0x0007 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0007 ,  0x0007 ,  0x0006 ,  0x0006 ,  0x0005 ,  0x0005 ,  0x0005 ,  0x0004 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0004 ,  0x0004 ,  0x0003 ,  0x0003 ,  0x0003 ,  0x0002 ,  0x0002 ,  0x0002 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0002 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0859 ,  0x06c3 ,  0x0607 ,  0x058b ,  0x052e ,  0x04e4 ,  0x04a6 ,  0x0471 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0443 ,  0x041a ,  0x03f5 ,  0x03d3 ,  0x03b5 ,  0x0398 ,  0x037e ,  0x0365 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x034e ,  0x0339 ,  0x0324 ,  0x0311 ,  0x02ff ,  0x02ed ,  0x02dc ,  0x02cd ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x02bd ,  0x02af ,  0x02a0 ,  0x0293 ,  0x0286 ,  0x0279 ,  0x026d ,  0x0261 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0256 ,  0x024b ,  0x0240 ,  0x0236 ,  0x022c ,  0x0222 ,  0x0218 ,  0x020f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0206 ,  0x01fd ,  0x01f5 ,  0x01ec ,  0x01e4 ,  0x01dc ,  0x01d4 ,  0x01cd ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x01c5 ,  0x01be ,  0x01b7 ,  0x01b0 ,  0x01a9 ,  0x01a2 ,  0x019b ,  0x0195 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x018f ,  0x0188 ,  0x0182 ,  0x017c ,  0x0177 ,  0x0171 ,  0x016b ,  0x0166 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0160 ,  0x015b ,  0x0155 ,  0x0150 ,  0x014b ,  0x0146 ,  0x0141 ,  0x013c ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0137 ,  0x0133 ,  0x012e ,  0x0129 ,  0x0125 ,  0x0121 ,  0x011c ,  0x0118 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0114 ,  0x010f ,  0x010b ,  0x0107 ,  0x0103 ,  0x00ff ,  0x00fb ,  0x00f8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00f4 ,  0x00f0 ,  0x00ec ,  0x00e9 ,  0x00e5 ,  0x00e2 ,  0x00de ,  0x00db ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00d7 ,  0x00d4 ,  0x00d1 ,  0x00cd ,  0x00ca ,  0x00c7 ,  0x00c4 ,  0x00c1 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00be ,  0x00bb ,  0x00b8 ,  0x00b5 ,  0x00b2 ,  0x00af ,  0x00ac ,  0x00a9 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00a7 ,  0x00a4 ,  0x00a1 ,  0x009f ,  0x009c ,  0x0099 ,  0x0097 ,  0x0094 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0092 ,  0x008f ,  0x008d ,  0x008a ,  0x0088 ,  0x0086 ,  0x0083 ,  0x0081 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x007f ,  0x007d ,  0x007a ,  0x0078 ,  0x0076 ,  0x0074 ,  0x0072 ,  0x0070 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x006e ,  0x006c ,  0x006a ,  0x0068 ,  0x0066 ,  0x0064 ,  0x0062 ,  0x0060 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x005e ,  0x005c ,  0x005b ,  0x0059 ,  0x0057 ,  0x0055 ,  0x0053 ,  0x0052 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0050 ,  0x004e ,  0x004d ,  0x004b ,  0x004a ,  0x0048 ,  0x0046 ,  0x0045 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0043 ,  0x0042 ,  0x0040 ,  0x003f ,  0x003e ,  0x003c ,  0x003b ,  0x0039 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0038 ,  0x0037 ,  0x0035 ,  0x0034 ,  0x0033 ,  0x0031 ,  0x0030 ,  0x002f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x002e ,  0x002d ,  0x002b ,  0x002a ,  0x0029 ,  0x0028 ,  0x0027 ,  0x0026 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0025 ,  0x0024 ,  0x0023 ,  0x0022 ,  0x0021 ,  0x0020 ,  0x001f ,  0x001e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x001d ,  0x001c ,  0x001b ,  0x001a ,  0x0019 ,  0x0018 ,  0x0017 ,  0x0017 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0016 ,  0x0015 ,  0x0014 ,  0x0014 ,  0x0013 ,  0x0012 ,  0x0011 ,  0x0011 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0010 ,  0x000f ,  0x000f ,  0x000e ,  0x000d ,  0x000d ,  0x000c ,  0x000c ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x000b ,  0x000a ,  0x000a ,  0x0009 ,  0x0009 ,  0x0008 ,  0x0008 ,  0x0007 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0007 ,  0x0007 ,  0x0006 ,  0x0006 ,  0x0005 ,  0x0005 ,  0x0005 ,  0x0004 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0004 ,  0x0004 ,  0x0003 ,  0x0003 ,  0x0003 ,  0x0002 ,  0x0002 ,  0x0002 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0002 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0001 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// wave 4
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0859 ,  0x0607 ,  0x052e ,  0x04a6 ,  0x0443 ,  0x03f5 ,  0x03b5 ,  0x037e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x034e ,  0x0324 ,  0x02ff ,  0x02dc ,  0x02bd ,  0x02a0 ,  0x0286 ,  0x026d ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0256 ,  0x0240 ,  0x022c ,  0x0218 ,  0x0206 ,  0x01f5 ,  0x01e4 ,  0x01d4 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x01c5 ,  0x01b7 ,  0x01a9 ,  0x019b ,  0x018f ,  0x0182 ,  0x0177 ,  0x016b ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0160 ,  0x0155 ,  0x014b ,  0x0141 ,  0x0137 ,  0x012e ,  0x0125 ,  0x011c ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0114 ,  0x010b ,  0x0103 ,  0x00fb ,  0x00f4 ,  0x00ec ,  0x00e5 ,  0x00de ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00d7 ,  0x00d1 ,  0x00ca ,  0x00c4 ,  0x00be ,  0x00b8 ,  0x00b2 ,  0x00ac ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00a7 ,  0x00a1 ,  0x009c ,  0x0097 ,  0x0092 ,  0x008d ,  0x0088 ,  0x0083 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x007f ,  0x007a ,  0x0076 ,  0x0072 ,  0x006e ,  0x006a ,  0x0066 ,  0x0062 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x005e ,  0x005b ,  0x0057 ,  0x0053 ,  0x0050 ,  0x004d ,  0x004a ,  0x0046 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0043 ,  0x0040 ,  0x003e ,  0x003b ,  0x0038 ,  0x0035 ,  0x0033 ,  0x0030 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x002e ,  0x002b ,  0x0029 ,  0x0027 ,  0x0025 ,  0x0023 ,  0x0021 ,  0x001f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x001d ,  0x001b ,  0x0019 ,  0x0017 ,  0x0016 ,  0x0014 ,  0x0013 ,  0x0011 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0010 ,  0x000f ,  0x000d ,  0x000c ,  0x000b ,  0x000a ,  0x0009 ,  0x0008 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0007 ,  0x0006 ,  0x0005 ,  0x0005 ,  0x0004 ,  0x0003 ,  0x0003 ,  0x0002 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0002 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0002 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0002 ,  0x0003 ,  0x0003 ,  0x0004 ,  0x0005 ,  0x0005 ,  0x0006 ,  0x0007 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0008 ,  0x0009 ,  0x000a ,  0x000b ,  0x000c ,  0x000d ,  0x000f ,  0x0010 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0011 ,  0x0013 ,  0x0014 ,  0x0016 ,  0x0017 ,  0x0019 ,  0x001b ,  0x001d ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x001f ,  0x0021 ,  0x0023 ,  0x0025 ,  0x0027 ,  0x0029 ,  0x002b ,  0x002e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0030 ,  0x0033 ,  0x0035 ,  0x0038 ,  0x003b ,  0x003e ,  0x0040 ,  0x0043 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0046 ,  0x004a ,  0x004d ,  0x0050 ,  0x0053 ,  0x0057 ,  0x005b ,  0x005e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0062 ,  0x0066 ,  0x006a ,  0x006e ,  0x0072 ,  0x0076 ,  0x007a ,  0x007f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0083 ,  0x0088 ,  0x008d ,  0x0092 ,  0x0097 ,  0x009c ,  0x00a1 ,  0x00a7 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00ac ,  0x00b2 ,  0x00b8 ,  0x00be ,  0x00c4 ,  0x00ca ,  0x00d1 ,  0x00d7 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00de ,  0x00e5 ,  0x00ec ,  0x00f4 ,  0x00fb ,  0x0103 ,  0x010b ,  0x0114 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x011c ,  0x0125 ,  0x012e ,  0x0137 ,  0x0141 ,  0x014b ,  0x0155 ,  0x0160 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x016b ,  0x0177 ,  0x0182 ,  0x018f ,  0x019b ,  0x01a9 ,  0x01b7 ,  0x01c5 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x01d4 ,  0x01e4 ,  0x01f5 ,  0x0206 ,  0x0218 ,  0x022c ,  0x0240 ,  0x0256 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x026d ,  0x0286 ,  0x02a0 ,  0x02bd ,  0x02dc ,  0x02ff ,  0x0324 ,  0x034e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x037e ,  0x03b5 ,  0x03f5 ,  0x0443 ,  0x04a6 ,  0x052e ,  0x0607 ,  0x0859 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8859 ,  0x8607 ,  0x852e ,  0x84a6 ,  0x8443 ,  0x83f5 ,  0x83b5 ,  0x837e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x834e ,  0x8324 ,  0x82ff ,  0x82dc ,  0x82bd ,  0x82a0 ,  0x8286 ,  0x826d ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8256 ,  0x8240 ,  0x822c ,  0x8218 ,  0x8206 ,  0x81f5 ,  0x81e4 ,  0x81d4 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x81c5 ,  0x81b7 ,  0x81a9 ,  0x819b ,  0x818f ,  0x8182 ,  0x8177 ,  0x816b ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8160 ,  0x8155 ,  0x814b ,  0x8141 ,  0x8137 ,  0x812e ,  0x8125 ,  0x811c ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8114 ,  0x810b ,  0x8103 ,  0x80fb ,  0x80f4 ,  0x80ec ,  0x80e5 ,  0x80de ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x80d7 ,  0x80d1 ,  0x80ca ,  0x80c4 ,  0x80be ,  0x80b8 ,  0x80b2 ,  0x80ac ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x80a7 ,  0x80a1 ,  0x809c ,  0x8097 ,  0x8092 ,  0x808d ,  0x8088 ,  0x8083 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x807f ,  0x807a ,  0x8076 ,  0x8072 ,  0x806e ,  0x806a ,  0x8066 ,  0x8062 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x805e ,  0x805b ,  0x8057 ,  0x8053 ,  0x8050 ,  0x804d ,  0x804a ,  0x8046 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8043 ,  0x8040 ,  0x803e ,  0x803b ,  0x8038 ,  0x8035 ,  0x8033 ,  0x8030 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x802e ,  0x802b ,  0x8029 ,  0x8027 ,  0x8025 ,  0x8023 ,  0x8021 ,  0x801f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x801d ,  0x801b ,  0x8019 ,  0x8017 ,  0x8016 ,  0x8014 ,  0x8013 ,  0x8011 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8010 ,  0x800f ,  0x800d ,  0x800c ,  0x800b ,  0x800a ,  0x8009 ,  0x8008 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8007 ,  0x8006 ,  0x8005 ,  0x8005 ,  0x8004 ,  0x8003 ,  0x8003 ,  0x8002 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8002 ,  0x8001 ,  0x8001 ,  0x8001 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8001 ,  0x8001 ,  0x8001 ,  0x8002 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8002 ,  0x8003 ,  0x8003 ,  0x8004 ,  0x8005 ,  0x8005 ,  0x8006 ,  0x8007 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8008 ,  0x8009 ,  0x800a ,  0x800b ,  0x800c ,  0x800d ,  0x800f ,  0x8010 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8011 ,  0x8013 ,  0x8014 ,  0x8016 ,  0x8017 ,  0x8019 ,  0x801b ,  0x801d ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x801f ,  0x8021 ,  0x8023 ,  0x8025 ,  0x8027 ,  0x8029 ,  0x802b ,  0x802e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8030 ,  0x8033 ,  0x8035 ,  0x8038 ,  0x803b ,  0x803e ,  0x8040 ,  0x8043 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8046 ,  0x804a ,  0x804d ,  0x8050 ,  0x8053 ,  0x8057 ,  0x805b ,  0x805e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8062 ,  0x8066 ,  0x806a ,  0x806e ,  0x8072 ,  0x8076 ,  0x807a ,  0x807f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8083 ,  0x8088 ,  0x808d ,  0x8092 ,  0x8097 ,  0x809c ,  0x80a1 ,  0x80a7 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x80ac ,  0x80b2 ,  0x80b8 ,  0x80be ,  0x80c4 ,  0x80ca ,  0x80d1 ,  0x80d7 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x80de ,  0x80e5 ,  0x80ec ,  0x80f4 ,  0x80fb ,  0x8103 ,  0x810b ,  0x8114 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x811c ,  0x8125 ,  0x812e ,  0x8137 ,  0x8141 ,  0x814b ,  0x8155 ,  0x8160 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x816b ,  0x8177 ,  0x8182 ,  0x818f ,  0x819b ,  0x81a9 ,  0x81b7 ,  0x81c5 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x81d4 ,  0x81e4 ,  0x81f5 ,  0x8206 ,  0x8218 ,  0x822c ,  0x8240 ,  0x8256 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x826d ,  0x8286 ,  0x82a0 ,  0x82bd ,  0x82dc ,  0x82ff ,  0x8324 ,  0x834e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x837e ,  0x83b5 ,  0x83f5 ,  0x8443 ,  0x84a6 ,  0x852e ,  0x8607 ,  0x8859 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// wave 5
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0859 ,  0x0607 ,  0x052e ,  0x04a6 ,  0x0443 ,  0x03f5 ,  0x03b5 ,  0x037e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x034e ,  0x0324 ,  0x02ff ,  0x02dc ,  0x02bd ,  0x02a0 ,  0x0286 ,  0x026d ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0256 ,  0x0240 ,  0x022c ,  0x0218 ,  0x0206 ,  0x01f5 ,  0x01e4 ,  0x01d4 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x01c5 ,  0x01b7 ,  0x01a9 ,  0x019b ,  0x018f ,  0x0182 ,  0x0177 ,  0x016b ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0160 ,  0x0155 ,  0x014b ,  0x0141 ,  0x0137 ,  0x012e ,  0x0125 ,  0x011c ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0114 ,  0x010b ,  0x0103 ,  0x00fb ,  0x00f4 ,  0x00ec ,  0x00e5 ,  0x00de ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00d7 ,  0x00d1 ,  0x00ca ,  0x00c4 ,  0x00be ,  0x00b8 ,  0x00b2 ,  0x00ac ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00a7 ,  0x00a1 ,  0x009c ,  0x0097 ,  0x0092 ,  0x008d ,  0x0088 ,  0x0083 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x007f ,  0x007a ,  0x0076 ,  0x0072 ,  0x006e ,  0x006a ,  0x0066 ,  0x0062 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x005e ,  0x005b ,  0x0057 ,  0x0053 ,  0x0050 ,  0x004d ,  0x004a ,  0x0046 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0043 ,  0x0040 ,  0x003e ,  0x003b ,  0x0038 ,  0x0035 ,  0x0033 ,  0x0030 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x002e ,  0x002b ,  0x0029 ,  0x0027 ,  0x0025 ,  0x0023 ,  0x0021 ,  0x001f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x001d ,  0x001b ,  0x0019 ,  0x0017 ,  0x0016 ,  0x0014 ,  0x0013 ,  0x0011 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0010 ,  0x000f ,  0x000d ,  0x000c ,  0x000b ,  0x000a ,  0x0009 ,  0x0008 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0007 ,  0x0006 ,  0x0005 ,  0x0005 ,  0x0004 ,  0x0003 ,  0x0003 ,  0x0002 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0002 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0002 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0002 ,  0x0003 ,  0x0003 ,  0x0004 ,  0x0005 ,  0x0005 ,  0x0006 ,  0x0007 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0008 ,  0x0009 ,  0x000a ,  0x000b ,  0x000c ,  0x000d ,  0x000f ,  0x0010 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0011 ,  0x0013 ,  0x0014 ,  0x0016 ,  0x0017 ,  0x0019 ,  0x001b ,  0x001d ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x001f ,  0x0021 ,  0x0023 ,  0x0025 ,  0x0027 ,  0x0029 ,  0x002b ,  0x002e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0030 ,  0x0033 ,  0x0035 ,  0x0038 ,  0x003b ,  0x003e ,  0x0040 ,  0x0043 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0046 ,  0x004a ,  0x004d ,  0x0050 ,  0x0053 ,  0x0057 ,  0x005b ,  0x005e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0062 ,  0x0066 ,  0x006a ,  0x006e ,  0x0072 ,  0x0076 ,  0x007a ,  0x007f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0083 ,  0x0088 ,  0x008d ,  0x0092 ,  0x0097 ,  0x009c ,  0x00a1 ,  0x00a7 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00ac ,  0x00b2 ,  0x00b8 ,  0x00be ,  0x00c4 ,  0x00ca ,  0x00d1 ,  0x00d7 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00de ,  0x00e5 ,  0x00ec ,  0x00f4 ,  0x00fb ,  0x0103 ,  0x010b ,  0x0114 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x011c ,  0x0125 ,  0x012e ,  0x0137 ,  0x0141 ,  0x014b ,  0x0155 ,  0x0160 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x016b ,  0x0177 ,  0x0182 ,  0x018f ,  0x019b ,  0x01a9 ,  0x01b7 ,  0x01c5 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x01d4 ,  0x01e4 ,  0x01f5 ,  0x0206 ,  0x0218 ,  0x022c ,  0x0240 ,  0x0256 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x026d ,  0x0286 ,  0x02a0 ,  0x02bd ,  0x02dc ,  0x02ff ,  0x0324 ,  0x034e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x037e ,  0x03b5 ,  0x03f5 ,  0x0443 ,  0x04a6 ,  0x052e ,  0x0607 ,  0x0859 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0859 ,  0x0607 ,  0x052e ,  0x04a6 ,  0x0443 ,  0x03f5 ,  0x03b5 ,  0x037e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x034e ,  0x0324 ,  0x02ff ,  0x02dc ,  0x02bd ,  0x02a0 ,  0x0286 ,  0x026d ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0256 ,  0x0240 ,  0x022c ,  0x0218 ,  0x0206 ,  0x01f5 ,  0x01e4 ,  0x01d4 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x01c5 ,  0x01b7 ,  0x01a9 ,  0x019b ,  0x018f ,  0x0182 ,  0x0177 ,  0x016b ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0160 ,  0x0155 ,  0x014b ,  0x0141 ,  0x0137 ,  0x012e ,  0x0125 ,  0x011c ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0114 ,  0x010b ,  0x0103 ,  0x00fb ,  0x00f4 ,  0x00ec ,  0x00e5 ,  0x00de ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00d7 ,  0x00d1 ,  0x00ca ,  0x00c4 ,  0x00be ,  0x00b8 ,  0x00b2 ,  0x00ac ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00a7 ,  0x00a1 ,  0x009c ,  0x0097 ,  0x0092 ,  0x008d ,  0x0088 ,  0x0083 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x007f ,  0x007a ,  0x0076 ,  0x0072 ,  0x006e ,  0x006a ,  0x0066 ,  0x0062 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x005e ,  0x005b ,  0x0057 ,  0x0053 ,  0x0050 ,  0x004d ,  0x004a ,  0x0046 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0043 ,  0x0040 ,  0x003e ,  0x003b ,  0x0038 ,  0x0035 ,  0x0033 ,  0x0030 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x002e ,  0x002b ,  0x0029 ,  0x0027 ,  0x0025 ,  0x0023 ,  0x0021 ,  0x001f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x001d ,  0x001b ,  0x0019 ,  0x0017 ,  0x0016 ,  0x0014 ,  0x0013 ,  0x0011 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0010 ,  0x000f ,  0x000d ,  0x000c ,  0x000b ,  0x000a ,  0x0009 ,  0x0008 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0007 ,  0x0006 ,  0x0005 ,  0x0005 ,  0x0004 ,  0x0003 ,  0x0003 ,  0x0002 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0002 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0001 ,  0x0001 ,  0x0001 ,  0x0002 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0002 ,  0x0003 ,  0x0003 ,  0x0004 ,  0x0005 ,  0x0005 ,  0x0006 ,  0x0007 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0008 ,  0x0009 ,  0x000a ,  0x000b ,  0x000c ,  0x000d ,  0x000f ,  0x0010 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0011 ,  0x0013 ,  0x0014 ,  0x0016 ,  0x0017 ,  0x0019 ,  0x001b ,  0x001d ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x001f ,  0x0021 ,  0x0023 ,  0x0025 ,  0x0027 ,  0x0029 ,  0x002b ,  0x002e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0030 ,  0x0033 ,  0x0035 ,  0x0038 ,  0x003b ,  0x003e ,  0x0040 ,  0x0043 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0046 ,  0x004a ,  0x004d ,  0x0050 ,  0x0053 ,  0x0057 ,  0x005b ,  0x005e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0062 ,  0x0066 ,  0x006a ,  0x006e ,  0x0072 ,  0x0076 ,  0x007a ,  0x007f ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0083 ,  0x0088 ,  0x008d ,  0x0092 ,  0x0097 ,  0x009c ,  0x00a1 ,  0x00a7 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00ac ,  0x00b2 ,  0x00b8 ,  0x00be ,  0x00c4 ,  0x00ca ,  0x00d1 ,  0x00d7 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00de ,  0x00e5 ,  0x00ec ,  0x00f4 ,  0x00fb ,  0x0103 ,  0x010b ,  0x0114 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x011c ,  0x0125 ,  0x012e ,  0x0137 ,  0x0141 ,  0x014b ,  0x0155 ,  0x0160 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x016b ,  0x0177 ,  0x0182 ,  0x018f ,  0x019b ,  0x01a9 ,  0x01b7 ,  0x01c5 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x01d4 ,  0x01e4 ,  0x01f5 ,  0x0206 ,  0x0218 ,  0x022c ,  0x0240 ,  0x0256 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x026d ,  0x0286 ,  0x02a0 ,  0x02bd ,  0x02dc ,  0x02ff ,  0x0324 ,  0x034e ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x037e ,  0x03b5 ,  0x03f5 ,  0x0443 ,  0x04a6 ,  0x052e ,  0x0607 ,  0x0859 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  0x1000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// wave 6
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  0x0000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  0x8000 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// wave 7
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0000 ,  0x0008 ,  0x0010 ,  0x0018 ,  0x0020 ,  0x0028 ,  0x0030 ,  0x0038 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0040 ,  0x0048 ,  0x0050 ,  0x0058 ,  0x0060 ,  0x0068 ,  0x0070 ,  0x0078 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0080 ,  0x0088 ,  0x0090 ,  0x0098 ,  0x00a0 ,  0x00a8 ,  0x00b0 ,  0x00b8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x00c0 ,  0x00c8 ,  0x00d0 ,  0x00d8 ,  0x00e0 ,  0x00e8 ,  0x00f0 ,  0x00f8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0100 ,  0x0108 ,  0x0110 ,  0x0118 ,  0x0120 ,  0x0128 ,  0x0130 ,  0x0138 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0140 ,  0x0148 ,  0x0150 ,  0x0158 ,  0x0160 ,  0x0168 ,  0x0170 ,  0x0178 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0180 ,  0x0188 ,  0x0190 ,  0x0198 ,  0x01a0 ,  0x01a8 ,  0x01b0 ,  0x01b8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x01c0 ,  0x01c8 ,  0x01d0 ,  0x01d8 ,  0x01e0 ,  0x01e8 ,  0x01f0 ,  0x01f8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0200 ,  0x0208 ,  0x0210 ,  0x0218 ,  0x0220 ,  0x0228 ,  0x0230 ,  0x0238 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0240 ,  0x0248 ,  0x0250 ,  0x0258 ,  0x0260 ,  0x0268 ,  0x0270 ,  0x0278 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0280 ,  0x0288 ,  0x0290 ,  0x0298 ,  0x02a0 ,  0x02a8 ,  0x02b0 ,  0x02b8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x02c0 ,  0x02c8 ,  0x02d0 ,  0x02d8 ,  0x02e0 ,  0x02e8 ,  0x02f0 ,  0x02f8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0300 ,  0x0308 ,  0x0310 ,  0x0318 ,  0x0320 ,  0x0328 ,  0x0330 ,  0x0338 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0340 ,  0x0348 ,  0x0350 ,  0x0358 ,  0x0360 ,  0x0368 ,  0x0370 ,  0x0378 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0380 ,  0x0388 ,  0x0390 ,  0x0398 ,  0x03a0 ,  0x03a8 ,  0x03b0 ,  0x03b8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x03c0 ,  0x03c8 ,  0x03d0 ,  0x03d8 ,  0x03e0 ,  0x03e8 ,  0x03f0 ,  0x03f8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0400 ,  0x0408 ,  0x0410 ,  0x0418 ,  0x0420 ,  0x0428 ,  0x0430 ,  0x0438 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0440 ,  0x0448 ,  0x0450 ,  0x0458 ,  0x0460 ,  0x0468 ,  0x0470 ,  0x0478 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0480 ,  0x0488 ,  0x0490 ,  0x0498 ,  0x04a0 ,  0x04a8 ,  0x04b0 ,  0x04b8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x04c0 ,  0x04c8 ,  0x04d0 ,  0x04d8 ,  0x04e0 ,  0x04e8 ,  0x04f0 ,  0x04f8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0500 ,  0x0508 ,  0x0510 ,  0x0518 ,  0x0520 ,  0x0528 ,  0x0530 ,  0x0538 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0540 ,  0x0548 ,  0x0550 ,  0x0558 ,  0x0560 ,  0x0568 ,  0x0570 ,  0x0578 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0580 ,  0x0588 ,  0x0590 ,  0x0598 ,  0x05a0 ,  0x05a8 ,  0x05b0 ,  0x05b8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x05c0 ,  0x05c8 ,  0x05d0 ,  0x05d8 ,  0x05e0 ,  0x05e8 ,  0x05f0 ,  0x05f8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0600 ,  0x0608 ,  0x0610 ,  0x0618 ,  0x0620 ,  0x0628 ,  0x0630 ,  0x0638 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0640 ,  0x0648 ,  0x0650 ,  0x0658 ,  0x0660 ,  0x0668 ,  0x0670 ,  0x0678 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0680 ,  0x0688 ,  0x0690 ,  0x0698 ,  0x06a0 ,  0x06a8 ,  0x06b0 ,  0x06b8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x06c0 ,  0x06c8 ,  0x06d0 ,  0x06d8 ,  0x06e0 ,  0x06e8 ,  0x06f0 ,  0x06f8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0700 ,  0x0708 ,  0x0710 ,  0x0718 ,  0x0720 ,  0x0728 ,  0x0730 ,  0x0738 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0740 ,  0x0748 ,  0x0750 ,  0x0758 ,  0x0760 ,  0x0768 ,  0x0770 ,  0x0778 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0780 ,  0x0788 ,  0x0790 ,  0x0798 ,  0x07a0 ,  0x07a8 ,  0x07b0 ,  0x07b8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x07c0 ,  0x07c8 ,  0x07d0 ,  0x07d8 ,  0x07e0 ,  0x07e8 ,  0x07f0 ,  0x07f8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0800 ,  0x0808 ,  0x0810 ,  0x0818 ,  0x0820 ,  0x0828 ,  0x0830 ,  0x0838 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0840 ,  0x0848 ,  0x0850 ,  0x0858 ,  0x0860 ,  0x0868 ,  0x0870 ,  0x0878 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0880 ,  0x0888 ,  0x0890 ,  0x0898 ,  0x08a0 ,  0x08a8 ,  0x08b0 ,  0x08b8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x08c0 ,  0x08c8 ,  0x08d0 ,  0x08d8 ,  0x08e0 ,  0x08e8 ,  0x08f0 ,  0x08f8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0900 ,  0x0908 ,  0x0910 ,  0x0918 ,  0x0920 ,  0x0928 ,  0x0930 ,  0x0938 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0940 ,  0x0948 ,  0x0950 ,  0x0958 ,  0x0960 ,  0x0968 ,  0x0970 ,  0x0978 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0980 ,  0x0988 ,  0x0990 ,  0x0998 ,  0x09a0 ,  0x09a8 ,  0x09b0 ,  0x09b8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x09c0 ,  0x09c8 ,  0x09d0 ,  0x09d8 ,  0x09e0 ,  0x09e8 ,  0x09f0 ,  0x09f8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0a00 ,  0x0a08 ,  0x0a10 ,  0x0a18 ,  0x0a20 ,  0x0a28 ,  0x0a30 ,  0x0a38 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0a40 ,  0x0a48 ,  0x0a50 ,  0x0a58 ,  0x0a60 ,  0x0a68 ,  0x0a70 ,  0x0a78 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0a80 ,  0x0a88 ,  0x0a90 ,  0x0a98 ,  0x0aa0 ,  0x0aa8 ,  0x0ab0 ,  0x0ab8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0ac0 ,  0x0ac8 ,  0x0ad0 ,  0x0ad8 ,  0x0ae0 ,  0x0ae8 ,  0x0af0 ,  0x0af8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0b00 ,  0x0b08 ,  0x0b10 ,  0x0b18 ,  0x0b20 ,  0x0b28 ,  0x0b30 ,  0x0b38 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0b40 ,  0x0b48 ,  0x0b50 ,  0x0b58 ,  0x0b60 ,  0x0b68 ,  0x0b70 ,  0x0b78 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0b80 ,  0x0b88 ,  0x0b90 ,  0x0b98 ,  0x0ba0 ,  0x0ba8 ,  0x0bb0 ,  0x0bb8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0bc0 ,  0x0bc8 ,  0x0bd0 ,  0x0bd8 ,  0x0be0 ,  0x0be8 ,  0x0bf0 ,  0x0bf8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0c00 ,  0x0c08 ,  0x0c10 ,  0x0c18 ,  0x0c20 ,  0x0c28 ,  0x0c30 ,  0x0c38 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0c40 ,  0x0c48 ,  0x0c50 ,  0x0c58 ,  0x0c60 ,  0x0c68 ,  0x0c70 ,  0x0c78 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0c80 ,  0x0c88 ,  0x0c90 ,  0x0c98 ,  0x0ca0 ,  0x0ca8 ,  0x0cb0 ,  0x0cb8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0cc0 ,  0x0cc8 ,  0x0cd0 ,  0x0cd8 ,  0x0ce0 ,  0x0ce8 ,  0x0cf0 ,  0x0cf8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0d00 ,  0x0d08 ,  0x0d10 ,  0x0d18 ,  0x0d20 ,  0x0d28 ,  0x0d30 ,  0x0d38 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0d40 ,  0x0d48 ,  0x0d50 ,  0x0d58 ,  0x0d60 ,  0x0d68 ,  0x0d70 ,  0x0d78 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0d80 ,  0x0d88 ,  0x0d90 ,  0x0d98 ,  0x0da0 ,  0x0da8 ,  0x0db0 ,  0x0db8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0dc0 ,  0x0dc8 ,  0x0dd0 ,  0x0dd8 ,  0x0de0 ,  0x0de8 ,  0x0df0 ,  0x0df8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0e00 ,  0x0e08 ,  0x0e10 ,  0x0e18 ,  0x0e20 ,  0x0e28 ,  0x0e30 ,  0x0e38 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0e40 ,  0x0e48 ,  0x0e50 ,  0x0e58 ,  0x0e60 ,  0x0e68 ,  0x0e70 ,  0x0e78 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0e80 ,  0x0e88 ,  0x0e90 ,  0x0e98 ,  0x0ea0 ,  0x0ea8 ,  0x0eb0 ,  0x0eb8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0ec0 ,  0x0ec8 ,  0x0ed0 ,  0x0ed8 ,  0x0ee0 ,  0x0ee8 ,  0x0ef0 ,  0x0ef8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0f00 ,  0x0f08 ,  0x0f10 ,  0x0f18 ,  0x0f20 ,  0x0f28 ,  0x0f30 ,  0x0f38 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0f40 ,  0x0f48 ,  0x0f50 ,  0x0f58 ,  0x0f60 ,  0x0f68 ,  0x0f70 ,  0x0f78 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0f80 ,  0x0f88 ,  0x0f90 ,  0x0f98 ,  0x0fa0 ,  0x0fa8 ,  0x0fb0 ,  0x0fb8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x0fc0 ,  0x0fc8 ,  0x0fd0 ,  0x0fd8 ,  0x0fe0 ,  0x0fe8 ,  0x0ff0 ,  0x0ff8 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8ff8 ,  0x8ff0 ,  0x8fe8 ,  0x8fe0 ,  0x8fd8 ,  0x8fd0 ,  0x8fc8 ,  0x8fc0 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8fb8 ,  0x8fb0 ,  0x8fa8 ,  0x8fa0 ,  0x8f98 ,  0x8f90 ,  0x8f88 ,  0x8f80 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8f78 ,  0x8f70 ,  0x8f68 ,  0x8f60 ,  0x8f58 ,  0x8f50 ,  0x8f48 ,  0x8f40 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8f38 ,  0x8f30 ,  0x8f28 ,  0x8f20 ,  0x8f18 ,  0x8f10 ,  0x8f08 ,  0x8f00 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8ef8 ,  0x8ef0 ,  0x8ee8 ,  0x8ee0 ,  0x8ed8 ,  0x8ed0 ,  0x8ec8 ,  0x8ec0 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8eb8 ,  0x8eb0 ,  0x8ea8 ,  0x8ea0 ,  0x8e98 ,  0x8e90 ,  0x8e88 ,  0x8e80 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8e78 ,  0x8e70 ,  0x8e68 ,  0x8e60 ,  0x8e58 ,  0x8e50 ,  0x8e48 ,  0x8e40 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8e38 ,  0x8e30 ,  0x8e28 ,  0x8e20 ,  0x8e18 ,  0x8e10 ,  0x8e08 ,  0x8e00 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8df8 ,  0x8df0 ,  0x8de8 ,  0x8de0 ,  0x8dd8 ,  0x8dd0 ,  0x8dc8 ,  0x8dc0 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8db8 ,  0x8db0 ,  0x8da8 ,  0x8da0 ,  0x8d98 ,  0x8d90 ,  0x8d88 ,  0x8d80 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8d78 ,  0x8d70 ,  0x8d68 ,  0x8d60 ,  0x8d58 ,  0x8d50 ,  0x8d48 ,  0x8d40 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8d38 ,  0x8d30 ,  0x8d28 ,  0x8d20 ,  0x8d18 ,  0x8d10 ,  0x8d08 ,  0x8d00 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8cf8 ,  0x8cf0 ,  0x8ce8 ,  0x8ce0 ,  0x8cd8 ,  0x8cd0 ,  0x8cc8 ,  0x8cc0 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8cb8 ,  0x8cb0 ,  0x8ca8 ,  0x8ca0 ,  0x8c98 ,  0x8c90 ,  0x8c88 ,  0x8c80 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8c78 ,  0x8c70 ,  0x8c68 ,  0x8c60 ,  0x8c58 ,  0x8c50 ,  0x8c48 ,  0x8c40 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8c38 ,  0x8c30 ,  0x8c28 ,  0x8c20 ,  0x8c18 ,  0x8c10 ,  0x8c08 ,  0x8c00 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8bf8 ,  0x8bf0 ,  0x8be8 ,  0x8be0 ,  0x8bd8 ,  0x8bd0 ,  0x8bc8 ,  0x8bc0 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8bb8 ,  0x8bb0 ,  0x8ba8 ,  0x8ba0 ,  0x8b98 ,  0x8b90 ,  0x8b88 ,  0x8b80 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8b78 ,  0x8b70 ,  0x8b68 ,  0x8b60 ,  0x8b58 ,  0x8b50 ,  0x8b48 ,  0x8b40 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8b38 ,  0x8b30 ,  0x8b28 ,  0x8b20 ,  0x8b18 ,  0x8b10 ,  0x8b08 ,  0x8b00 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8af8 ,  0x8af0 ,  0x8ae8 ,  0x8ae0 ,  0x8ad8 ,  0x8ad0 ,  0x8ac8 ,  0x8ac0 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8ab8 ,  0x8ab0 ,  0x8aa8 ,  0x8aa0 ,  0x8a98 ,  0x8a90 ,  0x8a88 ,  0x8a80 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8a78 ,  0x8a70 ,  0x8a68 ,  0x8a60 ,  0x8a58 ,  0x8a50 ,  0x8a48 ,  0x8a40 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8a38 ,  0x8a30 ,  0x8a28 ,  0x8a20 ,  0x8a18 ,  0x8a10 ,  0x8a08 ,  0x8a00 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x89f8 ,  0x89f0 ,  0x89e8 ,  0x89e0 ,  0x89d8 ,  0x89d0 ,  0x89c8 ,  0x89c0 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x89b8 ,  0x89b0 ,  0x89a8 ,  0x89a0 ,  0x8998 ,  0x8990 ,  0x8988 ,  0x8980 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8978 ,  0x8970 ,  0x8968 ,  0x8960 ,  0x8958 ,  0x8950 ,  0x8948 ,  0x8940 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8938 ,  0x8930 ,  0x8928 ,  0x8920 ,  0x8918 ,  0x8910 ,  0x8908 ,  0x8900 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x88f8 ,  0x88f0 ,  0x88e8 ,  0x88e0 ,  0x88d8 ,  0x88d0 ,  0x88c8 ,  0x88c0 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x88b8 ,  0x88b0 ,  0x88a8 ,  0x88a0 ,  0x8898 ,  0x8890 ,  0x8888 ,  0x8880 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8878 ,  0x8870 ,  0x8868 ,  0x8860 ,  0x8858 ,  0x8850 ,  0x8848 ,  0x8840 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8838 ,  0x8830 ,  0x8828 ,  0x8820 ,  0x8818 ,  0x8810 ,  0x8808 ,  0x8800 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x87f8 ,  0x87f0 ,  0x87e8 ,  0x87e0 ,  0x87d8 ,  0x87d0 ,  0x87c8 ,  0x87c0 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x87b8 ,  0x87b0 ,  0x87a8 ,  0x87a0 ,  0x8798 ,  0x8790 ,  0x8788 ,  0x8780 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8778 ,  0x8770 ,  0x8768 ,  0x8760 ,  0x8758 ,  0x8750 ,  0x8748 ,  0x8740 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8738 ,  0x8730 ,  0x8728 ,  0x8720 ,  0x8718 ,  0x8710 ,  0x8708 ,  0x8700 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x86f8 ,  0x86f0 ,  0x86e8 ,  0x86e0 ,  0x86d8 ,  0x86d0 ,  0x86c8 ,  0x86c0 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x86b8 ,  0x86b0 ,  0x86a8 ,  0x86a0 ,  0x8698 ,  0x8690 ,  0x8688 ,  0x8680 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8678 ,  0x8670 ,  0x8668 ,  0x8660 ,  0x8658 ,  0x8650 ,  0x8648 ,  0x8640 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8638 ,  0x8630 ,  0x8628 ,  0x8620 ,  0x8618 ,  0x8610 ,  0x8608 ,  0x8600 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x85f8 ,  0x85f0 ,  0x85e8 ,  0x85e0 ,  0x85d8 ,  0x85d0 ,  0x85c8 ,  0x85c0 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x85b8 ,  0x85b0 ,  0x85a8 ,  0x85a0 ,  0x8598 ,  0x8590 ,  0x8588 ,  0x8580 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8578 ,  0x8570 ,  0x8568 ,  0x8560 ,  0x8558 ,  0x8550 ,  0x8548 ,  0x8540 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8538 ,  0x8530 ,  0x8528 ,  0x8520 ,  0x8518 ,  0x8510 ,  0x8508 ,  0x8500 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x84f8 ,  0x84f0 ,  0x84e8 ,  0x84e0 ,  0x84d8 ,  0x84d0 ,  0x84c8 ,  0x84c0 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x84b8 ,  0x84b0 ,  0x84a8 ,  0x84a0 ,  0x8498 ,  0x8490 ,  0x8488 ,  0x8480 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8478 ,  0x8470 ,  0x8468 ,  0x8460 ,  0x8458 ,  0x8450 ,  0x8448 ,  0x8440 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8438 ,  0x8430 ,  0x8428 ,  0x8420 ,  0x8418 ,  0x8410 ,  0x8408 ,  0x8400 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x83f8 ,  0x83f0 ,  0x83e8 ,  0x83e0 ,  0x83d8 ,  0x83d0 ,  0x83c8 ,  0x83c0 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x83b8 ,  0x83b0 ,  0x83a8 ,  0x83a0 ,  0x8398 ,  0x8390 ,  0x8388 ,  0x8380 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8378 ,  0x8370 ,  0x8368 ,  0x8360 ,  0x8358 ,  0x8350 ,  0x8348 ,  0x8340 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8338 ,  0x8330 ,  0x8328 ,  0x8320 ,  0x8318 ,  0x8310 ,  0x8308 ,  0x8300 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x82f8 ,  0x82f0 ,  0x82e8 ,  0x82e0 ,  0x82d8 ,  0x82d0 ,  0x82c8 ,  0x82c0 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x82b8 ,  0x82b0 ,  0x82a8 ,  0x82a0 ,  0x8298 ,  0x8290 ,  0x8288 ,  0x8280 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8278 ,  0x8270 ,  0x8268 ,  0x8260 ,  0x8258 ,  0x8250 ,  0x8248 ,  0x8240 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8238 ,  0x8230 ,  0x8228 ,  0x8220 ,  0x8218 ,  0x8210 ,  0x8208 ,  0x8200 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x81f8 ,  0x81f0 ,  0x81e8 ,  0x81e0 ,  0x81d8 ,  0x81d0 ,  0x81c8 ,  0x81c0 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x81b8 ,  0x81b0 ,  0x81a8 ,  0x81a0 ,  0x8198 ,  0x8190 ,  0x8188 ,  0x8180 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8178 ,  0x8170 ,  0x8168 ,  0x8160 ,  0x8158 ,  0x8150 ,  0x8148 ,  0x8140 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8138 ,  0x8130 ,  0x8128 ,  0x8120 ,  0x8118 ,  0x8110 ,  0x8108 ,  0x8100 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x80f8 ,  0x80f0 ,  0x80e8 ,  0x80e0 ,  0x80d8 ,  0x80d0 ,  0x80c8 ,  0x80c0 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x80b8 ,  0x80b0 ,  0x80a8 ,  0x80a0 ,  0x8098 ,  0x8090 ,  0x8088 ,  0x8080 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8078 ,  0x8070 ,  0x8068 ,  0x8060 ,  0x8058 ,  0x8050 ,  0x8048 ,  0x8040 ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8038 ,  0x8030 ,  0x8028 ,  0x8020 ,  0x8018 ,  0x8010 ,  0x8008 ,  0x8000 , 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Inverse  exponent  table  extracted  from  OPL3  ROM ;  taken  straight  from 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Nuked  OPL3  source  code . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  TODO :  Verify  if  ESFM  uses  an  exponent  table  or  if  it  possibly  uses  another 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  method  to  skirt  around  Yamaha ' s  patents ? 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  Optimization :  All  entries  are  shifted  left  by  one  from  the  actual  data  in 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  OPL3 ' s  ROM . 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  const  uint16_t  exprom [ 256 ]  =  {  
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									0xff4 ,  0xfea ,  0xfde ,  0xfd4 ,  0xfc8 ,  0xfbe ,  0xfb4 ,  0xfa8 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0xf9e ,  0xf92 ,  0xf88 ,  0xf7e ,  0xf72 ,  0xf68 ,  0xf5c ,  0xf52 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0xf48 ,  0xf3e ,  0xf32 ,  0xf28 ,  0xf1e ,  0xf14 ,  0xf08 ,  0xefe , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0xef4 ,  0xeea ,  0xee0 ,  0xed4 ,  0xeca ,  0xec0 ,  0xeb6 ,  0xeac , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0xea2 ,  0xe98 ,  0xe8e ,  0xe84 ,  0xe7a ,  0xe70 ,  0xe66 ,  0xe5c , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0xe52 ,  0xe48 ,  0xe3e ,  0xe34 ,  0xe2a ,  0xe20 ,  0xe16 ,  0xe0c , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0xe04 ,  0xdfa ,  0xdf0 ,  0xde6 ,  0xddc ,  0xdd2 ,  0xdca ,  0xdc0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0xdb6 ,  0xdac ,  0xda4 ,  0xd9a ,  0xd90 ,  0xd88 ,  0xd7e ,  0xd74 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0xd6a ,  0xd62 ,  0xd58 ,  0xd50 ,  0xd46 ,  0xd3c ,  0xd34 ,  0xd2a , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0xd22 ,  0xd18 ,  0xd10 ,  0xd06 ,  0xcfe ,  0xcf4 ,  0xcec ,  0xce2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0xcda ,  0xcd0 ,  0xcc8 ,  0xcbe ,  0xcb6 ,  0xcae ,  0xca4 ,  0xc9c , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0xc92 ,  0xc8a ,  0xc82 ,  0xc78 ,  0xc70 ,  0xc68 ,  0xc60 ,  0xc56 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0xc4e ,  0xc46 ,  0xc3c ,  0xc34 ,  0xc2c ,  0xc24 ,  0xc1c ,  0xc12 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0xc0a ,  0xc02 ,  0xbfa ,  0xbf2 ,  0xbea ,  0xbe0 ,  0xbd8 ,  0xbd0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0xbc8 ,  0xbc0 ,  0xbb8 ,  0xbb0 ,  0xba8 ,  0xba0 ,  0xb98 ,  0xb90 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0xb88 ,  0xb80 ,  0xb78 ,  0xb70 ,  0xb68 ,  0xb60 ,  0xb58 ,  0xb50 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0xb48 ,  0xb40 ,  0xb38 ,  0xb32 ,  0xb2a ,  0xb22 ,  0xb1a ,  0xb12 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0xb0a ,  0xb02 ,  0xafc ,  0xaf4 ,  0xaec ,  0xae4 ,  0xade ,  0xad6 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0xace ,  0xac6 ,  0xac0 ,  0xab8 ,  0xab0 ,  0xaa8 ,  0xaa2 ,  0xa9a , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0xa92 ,  0xa8c ,  0xa84 ,  0xa7c ,  0xa76 ,  0xa6e ,  0xa68 ,  0xa60 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0xa58 ,  0xa52 ,  0xa4a ,  0xa44 ,  0xa3c ,  0xa36 ,  0xa2e ,  0xa28 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0xa20 ,  0xa18 ,  0xa12 ,  0xa0c ,  0xa04 ,  0x9fe ,  0x9f6 ,  0x9f0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x9e8 ,  0x9e2 ,  0x9da ,  0x9d4 ,  0x9ce ,  0x9c6 ,  0x9c0 ,  0x9b8 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x9b2 ,  0x9ac ,  0x9a4 ,  0x99e ,  0x998 ,  0x990 ,  0x98a ,  0x984 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x97c ,  0x976 ,  0x970 ,  0x96a ,  0x962 ,  0x95c ,  0x956 ,  0x950 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x948 ,  0x942 ,  0x93c ,  0x936 ,  0x930 ,  0x928 ,  0x922 ,  0x91c , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x916 ,  0x910 ,  0x90a ,  0x904 ,  0x8fc ,  0x8f6 ,  0x8f0 ,  0x8ea , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8e4 ,  0x8de ,  0x8d8 ,  0x8d2 ,  0x8cc ,  0x8c6 ,  0x8c0 ,  0x8ba , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x8b4 ,  0x8ae ,  0x8a8 ,  0x8a2 ,  0x89c ,  0x896 ,  0x890 ,  0x88a , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x884 ,  0x87e ,  0x878 ,  0x872 ,  0x86c ,  0x866 ,  0x860 ,  0x85a , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x854 ,  0x850 ,  0x84a ,  0x844 ,  0x83e ,  0x838 ,  0x832 ,  0x82c , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0x828 ,  0x822 ,  0x81c ,  0x816 ,  0x810 ,  0x80c ,  0x806 ,  0x800 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Frequency  multiplier  table  multiplied  by  2 ;  taken  straight  from  Nuked  OPL3 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  source  code . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  const  uint8_t  mt [ 16 ]  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									1 ,  2 ,  4 ,  6 ,  8 ,  10 ,  12 ,  14 ,  16 ,  18 ,  20 ,  20 ,  24 ,  24 ,  30 ,  30 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  is  used  during  the  envelope  generation  to  apply  KSL  to  the  envelope  by 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  determining  how  much  to  shift  right  the  keyscale  attenuation  value  before 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  adding  it  to  the  envelope  level . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  const  uint8_t  kslshift [ 4 ]  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									8 ,  1 ,  2 ,  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  encodes  which  emulation  mode  channels  are  the  secondary  channel  in  a 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  4 - op  channel  pair  ( where  the  entry  is  non - negative ) ,  and  which  is  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  corresponding  primary  channel  for  that  secondary  channel . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  const  int  emu_4op_secondary_to_primary [ 18 ]  =  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									- 1 ,  - 1 ,  - 1 ,  0 ,   1 ,   2 ,  - 1 ,  - 1 ,  - 1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									- 1 ,  - 1 ,  - 1 ,  9 ,  10 ,  11 ,  - 1 ,  - 1 ,  - 1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Envelope  generator  dither  table ,  taken  straight  from  Nuked  OPL3  source  code . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  const  uint8_t  eg_incstep [ 4 ] [ 4 ]  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{  0 ,  0 ,  0 ,  0  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{  1 ,  0 ,  0 ,  0  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{  1 ,  0 ,  1 ,  0  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{  1 ,  1 ,  1 ,  0  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* ------------------------------------------------------------------------- */  
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  int13  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ESFM_envelope_wavegen ( uint3  waveform ,  int16  phase ,  uint10  envelope )  
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									int13  out ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uint16  lookup  =  logsinrom [ ( ( uint16 ) waveform  < <  10 )  |  ( phase  &  0x3ff ) ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uint16  level  =  ( lookup  &  0x1fff )  +  ( envelope  < <  3 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									if  ( level  >  0x1fff ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										level  =  0x1fff ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									out  =  exprom [ level  &  0xff ]  > >  ( level  > >  8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( lookup  &  0x8000 ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										out  =  - out ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  out ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* ------------------------------------------------------------------------- */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ESFM_envelope_calc ( esfm_slot  * slot )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uint8  nonzero ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uint8  rate ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uint5  rate_hi ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uint2  rate_lo ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uint4  reg_rate  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uint4  ks ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uint8  eg_shift ,  shift ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bool  eg_off ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uint9  eg_rout ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int16  eg_inc ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bool  reset  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bool  key_on ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-18 16:01:46 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									bool  key_on_signal ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									key_on  =  * slot - > in . key_on ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! slot - > chip - > native_mode ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										int  pair_primary_idx  =  emu_4op_secondary_to_primary [ slot - > channel - > channel_idx ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( pair_primary_idx  > =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											esfm_channel  * pair_primary  =  & slot - > channel - > chip - > channels [ pair_primary_idx ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( pair_primary - > emu_mode_4op_enable ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												key_on  =  * pair_primary - > slots [ 0 ] . in . key_on ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  if  ( ( slot - > channel - > channel_idx  = =  7  | |  slot - > channel - > channel_idx  = =  8 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											& &  slot - > slot_idx  = =  1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											key_on  =  slot - > channel - > key_on_2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									slot - > in . eg_output  =  slot - > in . eg_position  +  ( slot - > t_level  < <  2 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										+  ( slot - > in . eg_ksl_offset  > >  kslshift [ slot - > ksl ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( slot - > tremolo_en ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uint8  tremolo ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( slot - > chip - > native_mode ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											tremolo  =  slot - > channel - > chip - > tremolo  > >  ( ( ! slot - > tremolo_deep  < <  1 )  +  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											tremolo  =  slot - > channel - > chip - > tremolo  > >  ( ( ! slot - > chip - > emu_tremolo_deep  < <  1 )  +  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										slot - > in . eg_output  + =  tremolo ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-18 16:01:46 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( slot - > in . eg_delay_run  & &  slot - > in . eg_delay_counter  <  32768 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										slot - > in . eg_delay_counter + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// triggers on key-on edge
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( key_on  & &  ! slot - > in . key_on_gate ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										slot - > in . eg_delay_run  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										slot - > in . eg_delay_counter  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-17 08:33:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										slot - > in . eg_delay_transitioned_01  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										slot - > in . eg_delay_transitioned_01_gate  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										slot - > in . eg_delay_transitioned_10  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										slot - > in . eg_delay_transitioned_10_gate  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										slot - > in . eg_delay_counter_compare  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( slot - > env_delay  >  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											slot - > in . eg_delay_counter_compare  =  256  < <  slot - > env_delay ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-18 16:01:46 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  if  ( ! key_on ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										slot - > in . eg_delay_run  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2024-01-17 08:33:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// TODO: is this really how the chip behaves? Can it only transition the envelope delay once? Am I implementing this in a sane way? I feel like this is a roundabout hack.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ( slot - > in . eg_delay_transitioned_10  & &  ! slot - > in . eg_delay_transitioned_10_gate )  | | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										( slot - > in . eg_delay_transitioned_01  & &  ! slot - > in . eg_delay_transitioned_01_gate ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									) 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-18 16:01:46 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-17 08:33:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										slot - > in . eg_delay_counter_compare  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( slot - > env_delay  >  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											slot - > in . eg_delay_counter_compare  =  256  < <  slot - > env_delay ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( slot - > in . eg_delay_transitioned_10 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											slot - > in . eg_delay_transitioned_10_gate  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( slot - > in . eg_delay_transitioned_01 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											slot - > in . eg_delay_transitioned_01_gate  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-18 16:01:46 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2024-01-17 08:33:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( key_on  & &  ( ( slot - > in . eg_delay_counter  > =  slot - > in . eg_delay_counter_compare )  | |  ! slot - > chip - > native_mode ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-18 16:01:46 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										key_on_signal  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										key_on_signal  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									if  ( key_on  & &  slot - > in . eg_state  = =  EG_RELEASE ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-01-17 08:33:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ( slot - > in . eg_delay_counter  > =  slot - > in . eg_delay_counter_compare )  | |  ! slot - > chip - > native_mode ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											reset  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											reg_rate  =  slot - > attack_rate ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											reg_rate  =  slot - > release_rate ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										switch  ( slot - > in . eg_state ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  EG_ATTACK : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												reg_rate  =  slot - > attack_rate ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  EG_DECAY : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												reg_rate  =  slot - > decay_rate ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  EG_SUSTAIN : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( ! slot - > env_sustaining ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													reg_rate  =  slot - > release_rate ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  EG_RELEASE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												reg_rate  =  slot - > release_rate ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-18 16:01:46 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									slot - > in . key_on_gate  =  key_on ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									slot - > in . phase_reset  =  reset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ks  =  slot - > in . keyscale  > >  ( ( ! slot - > ksr )  < <  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									nonzero  =  ( reg_rate  ! =  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									rate  =  ks  +  ( reg_rate  < <  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									rate_hi  =  rate  > >  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									rate_lo  =  rate  &  0x03 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( rate_hi  &  0x10 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										rate_hi  =  0x0f ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									eg_shift  =  rate_hi  +  slot - > chip - > eg_clocks ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									shift  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( nonzero ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( rate_hi  <  12 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( slot - > chip - > eg_tick ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												switch  ( eg_shift ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													case  12 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														shift  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													case  13 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														shift  =  ( rate_lo  > >  1 )  &  0x01 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													case  14 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														shift  =  rate_lo  &  0x01 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											shift  =  ( rate_hi  &  0x03 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												+  eg_incstep [ rate_lo ] [ slot - > chip - > global_timer  &  0x03 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( shift  &  0x04 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												shift  =  0x03 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! shift ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												shift  =  slot - > chip - > eg_tick ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									eg_rout  =  slot - > in . eg_position ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									eg_inc  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									eg_off  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* Instant attack */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( reset  & &  rate_hi  = =  0x0f ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										eg_rout  =  0x00 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* Envelope off */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ( slot - > in . eg_position  &  0x1f8 )  = =  0x1f8 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										eg_off  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( slot - > in . eg_state  ! =  EG_ATTACK  & &  ! reset  & &  eg_off ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										eg_rout  =  0x1ff ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( slot - > in . eg_state ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  EG_ATTACK : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( slot - > in . eg_position  = =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												slot - > in . eg_state  =  EG_DECAY ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-18 16:01:46 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											else  if  ( key_on_signal  & &  shift  >  0  & &  rate_hi  ! =  0x0f ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												eg_inc  =  ~ slot - > in . eg_position  > >  ( 4  -  shift ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  EG_DECAY : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ( slot - > in . eg_position  > >  4 )  = =  slot - > sustain_lvl ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												slot - > in . eg_state  =  EG_SUSTAIN ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											else  if  ( ! eg_off  & &  ! reset  & &  shift  >  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												eg_inc  =  1  < <  ( shift  -  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  EG_SUSTAIN : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  EG_RELEASE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! eg_off  & &  ! reset  & &  shift  >  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												eg_inc  =  1  < <  ( shift  -  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									slot - > in . eg_position  =  ( eg_rout  +  eg_inc )  &  0x1ff ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* Key off */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( reset ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										slot - > in . eg_state  =  EG_ATTACK ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-18 16:01:46 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! key_on_signal ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										slot - > in . eg_state  =  EG_RELEASE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* ------------------------------------------------------------------------- */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ESFM_phase_generate ( esfm_slot  * slot )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									esfm_chip  * chip ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uint10  f_num ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uint32  basefreq ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bool  rm_xor ,  n_bit ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uint23  noise ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uint10  phase ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									chip  =  slot - > chip ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									f_num  =  slot - > f_num ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( slot - > vibrato_en ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										int8_t  range ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uint8_t  vibpos ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										range  =  ( f_num  > >  7 )  &  7 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										vibpos  =  chip - > vibrato_pos ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! ( vibpos  &  3 ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											range  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  if  ( vibpos  &  1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											range  > > =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										range  > > =  ! slot - > vibrato_deep ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( vibpos  &  4 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											range  =  - range ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										f_num  + =  range ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									basefreq  =  ( f_num  < <  slot - > block )  > >  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									phase  =  ( uint10 ) ( slot - > in . phase_acc  > >  9 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( slot - > in . phase_reset ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										slot - > in . phase_acc  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									slot - > in . phase_acc  + =  ( basefreq  *  mt [ slot - > mult ] )  > >  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									slot - > in . phase_acc  & =  ( 1  < <  19 )  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									slot - > in . phase_out  =  phase ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* Noise mode (rhythm) sounds */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									noise  =  chip - > lfsr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( slot - > slot_idx  = =  3  & &  slot - > rhy_noise ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										esfm_slot  * prev_slot  =  & slot - > channel - > slots [ 2 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										chip - > rm_hh_bit2  =  ( phase  > >  2 )  &  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										chip - > rm_hh_bit3  =  ( phase  > >  3 )  &  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										chip - > rm_hh_bit7  =  ( phase  > >  7 )  &  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										chip - > rm_hh_bit8  =  ( phase  > >  8 )  &  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										chip - > rm_tc_bit3  =  ( prev_slot - > in . phase_out  > >  3 )  &  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										chip - > rm_tc_bit5  =  ( prev_slot - > in . phase_out  > >  5 )  &  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										rm_xor  =  ( chip - > rm_hh_bit2  ^  chip - > rm_hh_bit7 ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											   |  ( chip - > rm_hh_bit3  ^  chip - > rm_tc_bit5 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											   |  ( chip - > rm_tc_bit3  ^  chip - > rm_tc_bit5 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										switch ( slot - > rhy_noise ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// SD
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												slot - > in . phase_out  =  ( chip - > rm_hh_bit8  < <  9 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													|  ( ( chip - > rm_hh_bit8  ^  ( noise  &  1 ) )  < <  8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// HH
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												slot - > in . phase_out  =  rm_xor  < <  9 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( rm_xor  ^  ( noise  &  1 ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													slot - > in . phase_out  | =  0xd0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													slot - > in . phase_out  | =  0x34 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  3 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// TC
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												slot - > in . phase_out  =  ( rm_xor  < <  9 )  |  0x80 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									n_bit  =  ( ( noise  > >  14 )  ^  noise )  &  0x01 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									chip - > lfsr  =  ( noise  > >  1 )  |  ( n_bit  < <  22 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* ------------------------------------------------------------------------- */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ESFM_phase_generate_emu ( esfm_slot  * slot )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									esfm_chip  * chip ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uint3  block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uint10  f_num ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uint32  basefreq ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bool  rm_xor ,  n_bit ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uint23  noise ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uint10  phase ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  pair_primary_idx ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									chip  =  slot - > chip ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									block  =  slot - > channel - > slots [ 0 ] . block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									f_num  =  slot - > channel - > slots [ 0 ] . f_num ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									pair_primary_idx  =  emu_4op_secondary_to_primary [ slot - > channel - > channel_idx ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( pair_primary_idx  > =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										esfm_channel  * pair_primary  =  & slot - > channel - > chip - > channels [ pair_primary_idx ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( pair_primary - > emu_mode_4op_enable ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											block  =  pair_primary - > slots [ 0 ] . block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											f_num  =  pair_primary - > slots [ 0 ] . f_num ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( slot - > vibrato_en ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										int8_t  range ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uint8_t  vibpos ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										range  =  ( f_num  > >  7 )  &  7 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										vibpos  =  chip - > vibrato_pos ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! ( vibpos  &  3 ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											range  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  if  ( vibpos  &  1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											range  > > =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										range  > > =  ! chip - > emu_vibrato_deep ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( vibpos  &  4 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											range  =  - range ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										f_num  + =  range ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									basefreq  =  ( f_num  < <  block )  > >  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									phase  =  ( uint10 ) ( slot - > in . phase_acc  > >  9 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( slot - > in . phase_reset ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										slot - > in . phase_acc  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									slot - > in . phase_acc  + =  ( basefreq  *  mt [ slot - > mult ] )  > >  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									slot - > in . phase_acc  & =  ( 1  < <  19 )  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									slot - > in . phase_out  =  phase ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* Noise mode (rhythm) sounds */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									noise  =  chip - > lfsr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// HH
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( slot - > channel - > channel_idx  = =  7  & &  slot - > slot_idx  = =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										chip - > rm_hh_bit2  =  ( phase  > >  2 )  &  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										chip - > rm_hh_bit3  =  ( phase  > >  3 )  &  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										chip - > rm_hh_bit7  =  ( phase  > >  7 )  &  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										chip - > rm_hh_bit8  =  ( phase  > >  8 )  &  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// TC
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( slot - > channel - > channel_idx  = =  8  & &  slot - > slot_idx  = =  1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										chip - > rm_tc_bit3  =  ( phase  > >  3 )  &  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										chip - > rm_tc_bit5  =  ( phase  > >  5 )  &  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( chip - > emu_rhy_mode_flags  &  0x20 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										rm_xor  =  ( chip - > rm_hh_bit2  ^  chip - > rm_hh_bit7 ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											   |  ( chip - > rm_hh_bit3  ^  chip - > rm_tc_bit5 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											   |  ( chip - > rm_tc_bit3  ^  chip - > rm_tc_bit5 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										if  ( slot - > channel - > channel_idx  = =  7 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( slot - > slot_idx  = =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// HH
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												slot - > in . phase_out  =  rm_xor  < <  9 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( rm_xor  ^  ( noise  &  1 ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													slot - > in . phase_out  | =  0xd0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													slot - > in . phase_out  | =  0x34 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											else  if  ( slot - > slot_idx  = =  1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// SD
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												slot - > in . phase_out  =  ( chip - > rm_hh_bit8  < <  9 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													|  ( ( chip - > rm_hh_bit8  ^  ( noise  &  1 ) )  < <  8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  if  ( slot - > channel - > channel_idx  = =  8  & &  slot - > slot_idx  = =  1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// TC
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											slot - > in . phase_out  =  ( rm_xor  < <  9 )  |  0x80 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									n_bit  =  ( ( noise  > >  14 )  ^  noise )  &  0x01 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									chip - > lfsr  =  ( noise  > >  1 )  |  ( n_bit  < <  22 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-22 15:49:23 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  TODO :  Figure  out  what ' s  ACTUALLY  going  on  inside  the  real  chip ! 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  is  not  accurate  at  all ,  but  it ' s  the  closest  I  was  able  to  get  with 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  empirical  testing  ( and  it ' s  closer  than  nothing ) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* ------------------------------------------------------------------------- */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int16  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ESFM_slot3_noise3_mod_input_calc ( esfm_slot  * slot )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									esfm_channel  * channel  =  slot - > channel ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int16  phase ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int13  output_buf  =  * channel - > slots [ 1 ] . in . mod_input ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Go through previous slots' partial results and recalculate outputs
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// (we skip slot 0 because its calculation happens at the end, not at the beginning)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( i  =  1 ;  i  <  3 ;  i + + ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// double the pitch
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phase  =  channel - > slots [ i ] . in . phase_acc  > >  8 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( channel - > slots [ i ] . mod_in_level ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phase  + =  output_buf  > >  ( 7  -  channel - > slots [ i ] . mod_in_level ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										output_buf  =  ESFM_envelope_wavegen ( channel - > slots [ 2 ] . waveform ,  phase ,  channel - > slots [ i ] . in . eg_output ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-22 15:49:23 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  output_buf  > >  ( 8  -  slot - > mod_in_level ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/* ------------------------------------------------------------------------- */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ESFM_slot_generate ( esfm_slot  * slot )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int16  phase  =  slot - > in . phase_out ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( slot - > mod_in_level ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-22 15:49:23 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( slot - > slot_idx  = =  3  & &  slot - > rhy_noise  = =  3 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phase  + =  ESFM_slot3_noise3_mod_input_calc ( slot ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phase  + =  * slot - > in . mod_input  > >  ( 7  -  slot - > mod_in_level ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									slot - > in . output  =  ESFM_envelope_wavegen ( slot - > waveform ,  phase ,  slot - > in . eg_output ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									if  ( slot - > output_level ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										int13  output_value  =  slot - > in . output  > >  ( 7  -  slot - > output_level ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										slot - > channel - > output [ 0 ]  + =  output_value  &  slot - > out_enable [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										slot - > channel - > output [ 1 ]  + =  output_value  &  slot - > out_enable [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* ------------------------------------------------------------------------- */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ESFM_slot_generate_emu ( esfm_slot  * slot )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									const  esfm_chip  * chip  =  slot - > chip ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uint3  waveform  =  slot - > waveform  &  ( chip - > emu_newmode  ! =  0  ?  0x07  :  0x03 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									bool  rhythm_slot_double_volume  =  ( slot - > chip - > emu_rhy_mode_flags  &  0x20 )  ! =  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										& &  slot - > channel - > channel_idx  > =  6  & &  slot - > channel - > channel_idx  <  9 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int16  phase  =  slot - > in . phase_out ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int14  output_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									phase  + =  * slot - > in . mod_input  &  slot - > in . emu_mod_enable ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									slot - > in . output  =  ESFM_envelope_wavegen ( waveform ,  phase ,  slot - > in . eg_output ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									output_value  =  ( slot - > in . output  &  slot - > in . emu_output_enable )  < <  rhythm_slot_double_volume ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( chip - > emu_newmode ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										slot - > channel - > output [ 0 ]  + =  output_value  &  slot - > channel - > slots [ 0 ] . out_enable [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										slot - > channel - > output [ 1 ]  + =  output_value  &  slot - > channel - > slots [ 0 ] . out_enable [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										slot - > channel - > output [ 0 ]  + =  output_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										slot - > channel - > output [ 1 ]  + =  output_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* ------------------------------------------------------------------------- */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								ESFM_process_feedback ( esfm_chip  * chip )  
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									int  channel_idx ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( channel_idx  =  0 ;  channel_idx  <  18 ;  channel_idx + + ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										esfm_slot  * slot  =  & chip - > channels [ channel_idx ] . slots [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uint32  basefreq ,  phase_offset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uint3  block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uint10  f_num ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 10:16:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										int32_t  wave_out ,  wave_last ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										int32_t  phase_feedback ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 16:33:20 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										uint32_t  iter_counter ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										uint3  waveform ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uint3  mod_in_shift ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uint32_t  phase ,  phase_acc ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uint10  eg_output ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( slot - > mod_in_level  & &  ( chip - > native_mode  | |  ( slot - > in . mod_input  = =  & slot - > in . feedback_buf ) ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( chip - > native_mode ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												waveform  =  slot - > waveform ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												waveform  =  slot - > waveform  &  ( 0x03  |  ( 0x02  < <  ( chip - > emu_newmode  ! =  0 ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											f_num  =  slot - > f_num ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											block  =  slot - > block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											basefreq  =  ( f_num  < <  block )  > >  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phase_offset  =  ( basefreq  *  mt [ slot - > mult ] )  > >  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											mod_in_shift  =  7  -  slot - > mod_in_level ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phase_acc  =  ( uint32_t ) ( slot - > in . phase_acc  -  phase_offset  *  28 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											eg_output  =  slot - > in . eg_output ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-11 14:21:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( chip - > fast_mode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												phase_feedback  =  ( slot - > in . fb_out0  +  slot - > in . fb_out1 )  > >  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												slot - > in . fb_out1  =  slot - > in . fb_out0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												phase  =  phase_feedback  > >  mod_in_shift ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												phase  + =  phase_acc  > >  9 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												wave_out  =  slot - > in . fb_out0  =  ESFM_envelope_wavegen ( waveform ,  phase ,  eg_output ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												phase_acc  + =  phase_offset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// ASM optimizaions!
 
							 
						 
					
						
							
								
									
										
										
										
											2025-07-26 16:03:47 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if defined(__GNUC__) && defined(__x86_64__) && !defined(ANDROID) 
  
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											asm  ( 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" movzbq  %[wave], %%r8                \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" shll    $11, %%r8d                   \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" leaq    %[sinrom], %%rax             \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" addq    %%rax, %%r8                  \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" leaq    %[exprom], %%r9              \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" movzwl  %[eg_out], %%r10d            \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" shll    $3, %%r10d                   \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" xorl    %%r11d, %%r11d               \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" movl    %%r11d, %[out]               \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" movl    $29, %%edx                   \n " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" 1:                                   \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 10:16:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// phase_feedback = (wave_out + wave_last) >> 2;
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" movl    %[out], %[p_fb]              \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" addl    %%r11d, %[p_fb]              \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" sarl    $2, %[p_fb]                  \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 10:16:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// wave_last = wave_out
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" movl    %[out], %%r11d               \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 10:16:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// phase = phase_feedback >> mod_in_shift;
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" movl    %[p_fb], %%eax               \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" movb    %[mod_in], %%cl              \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" sarl    %%cl, %%eax                  \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 10:16:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// phase += phase_acc >> 9;
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" movl    %[p_acc], %%ebx              \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" sarl    $9, %%ebx                    \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" addl    %%ebx, %%eax                 \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 10:16:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// lookup = logsinrom[(waveform << 10) | (phase & 0x3ff)];
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" andq    $0x3ff, %%rax                \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" movzwl  (%%r8, %%rax, 2), %%ebx      \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" movl    %%ebx, %%eax                 \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 10:16:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// level = (lookup & 0x1fff) + (envelope << 3);
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" movl    $0x1fff, %%ecx               \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" andl    %%ecx, %%eax                 \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" addl    %%r10d, %%eax                \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 10:16:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// if (level > 0x1fff) level = 0x1fff;
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" cmpl    %%ecx, %%eax                 \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" cmoval  %%ecx, %%eax                 \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 10:16:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// wave_out = exprom[level & 0xff] >> (level >> 8);
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" movb    %%ah, %%cl                   \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" movzbl  %%al, %%eax                  \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" movzwl  (%%r9, %%rax, 2), %[out]     \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" shrl    %%cl, %[out]                 \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 10:16:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// if (lookup & 0x8000) wave_out = -wave_out;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// in other words, lookup is negative
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" movl    %[out], %%ecx                \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" negl    %%ecx                        \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" testw   %%bx, %%bx                   \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" cmovsl  %%ecx, %[out]                \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 10:16:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// phase_acc += phase_offset
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" addl    %[p_off], %[p_acc]           \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 10:16:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// loop
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" decl    %%edx                        \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" jne     1b                           \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 10:16:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												:  [ p_fb ]    " =&r "  ( phase_feedback ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												  [ p_acc ]   " +r "   ( phase_acc ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 16:33:20 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												  [ out ]     " =&r "  ( wave_out ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												:  [ p_off ]   " r "    ( phase_offset ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												  [ mod_in ]  " r "    ( mod_in_shift ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 04:43:45 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												  [ wave ]    " g "    ( waveform ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												  [ eg_out ]  " g "    ( eg_output ) , 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 10:16:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												  [ sinrom ]  " m "    ( logsinrom ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												  [ exprom ]  " m "    ( exprom ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												:  " cc " ,  " ax " ,  " bx " ,  " cx " ,  " dx " ,  " r8 " ,  " r9 " ,  " r10 " ,  " r11 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											) ; 
							 
						 
					
						
							
								
									
										
										
										
											2025-07-26 16:03:47 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# elif defined(__GNUC__) && defined(__i386__) && !defined(ANDROID) 
  
						 
					
						
							
								
									
										
										
										
											2024-02-02 04:31:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											asm  ( 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" movzbl  %b[wave], %%eax              \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" shll    $11, %%eax                   \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" leal    %[sinrom], %%edi             \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" addl    %%eax, %%edi                 \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" shlw    $3, %[eg_out]                \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" xorl    %[out], %[out]               \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" movl    %[out], %[last]              \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" movl    $29, %[i]                    \n " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" 1:                                   \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 04:31:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// phase_feedback = (wave_out + wave_last) >> 2;
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" movl    %[out], %%eax                \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" addl    %[last], %%eax               \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" sarl    $2, %%eax                    \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" movl    %%eax, %[p_fb]               \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 04:31:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// wave_last = wave_out
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" movl    %[out], %[last]              \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 04:31:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// phase = phase_feedback >> mod_in_shift;
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" movb    %[mod_in], %%cl              \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" sarl    %%cl, %%eax                  \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 04:31:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// phase += phase_acc >> 9;
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" movl    %[p_acc], %%ebx              \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" shrl    $9, %%ebx                    \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" addl    %%ebx, %%eax                 \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 04:31:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// lookup = logsinrom[(waveform << 10) | (phase & 0x3ff)];
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" andl    $0x3ff, %%eax                \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" movzwl  (%%edi, %%eax, 2), %%ebx     \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" movl    %%ebx, %%eax                 \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 04:31:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// level = (lookup & 0x1fff) + (envelope << 3);
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" movl    $0x1fff, %%ecx               \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" andl    %%ecx, %%eax                 \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" addw    %[eg_out], %%ax              \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 04:31:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// if (level > 0x1fff) level = 0x1fff;
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" cmpl    %%ecx, %%eax                 \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" cmoval  %%ecx, %%eax                 \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 04:31:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// wave_out = exprom[level & 0xff] >> (level >> 8);
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" movb    %%ah, %%cl                   \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" movzbl  %%al, %%eax                  \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" leal    %[exprom], %[out]            \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" movzwl  (%[out], %%eax, 2), %[out]   \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" shrl    %%cl, %[out]                 \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 04:31:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// if (lookup & 0x8000) wave_out = -wave_out;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// in other words, lookup is negative
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" movl    %[out], %%ecx                \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" negl    %%ecx                        \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" testw   %%bx, %%bx                   \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" cmovsl  %%ecx, %[out]                \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 04:31:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// phase_acc += phase_offset
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" addl    %[p_off], %[p_acc]           \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 04:31:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// loop
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 14:29:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" decl    %[i]                         \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" jne     1b                           \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 04:31:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												:  [ p_fb ]    " =&m "  ( phase_feedback ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												  [ p_acc ]   " +r "   ( phase_acc ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												  [ out ]     " =&r "  ( wave_out ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												  [ last ]    " =&m "  ( wave_last ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												  [ eg_out ]  " +m "   ( eg_output ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												:  [ p_off ]   " m "    ( phase_offset ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												  [ mod_in ]  " m "    ( mod_in_shift ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												  [ wave ]    " m "    ( waveform ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												  [ sinrom ]  " m "    ( logsinrom ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												  [ exprom ]  " m "    ( exprom ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												  [ i ]       " m "    ( iter_counter ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												:  " cc " ,  " ax " ,  " bx " ,  " cx " ,  " di " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 16:18:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# elif defined(__GNUC__) && defined(__arm__) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											asm  ( 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-06 05:30:10 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" movs    r3, #0                      \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" movs    %[out], #0                  \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" ldr     r8, =0x1fff                 \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-03 04:15:12 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" movs    r2, #29                     \n " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 16:18:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" 1:                                  \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// phase_feedback = (wave_out + wave_last) >> 2;
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-06 05:30:10 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" adds    %[p_fb], %[out], r3         \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" asrs    %[p_fb], %[p_fb], #2        \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 16:18:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// wave_last = wave_out
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-06 05:30:10 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" mov     r3, %[out]                  \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 16:18:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// phase = phase_feedback >> mod_in_shift;
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-06 05:30:10 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" asr     r0, %[p_fb], %[mod_in]      \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 16:18:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// phase += phase_acc >> 9;
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-06 05:30:10 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" add     r0, r0, %[p_acc], asr #9    \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 16:18:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// lookup = logsinrom[(waveform << 10) | (phase & 0x3ff)];
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-03 04:15:12 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" lsls    r0, r0, #22                 \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-03 04:19:26 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" lsrs    r0, r0, #21                 \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-06 05:30:10 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" ldrsh   r1, [%[sinrom], r0]         \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 16:18:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// level = (lookup & 0x1fff) + (envelope << 3);
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-06 05:30:10 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" and     r0, r8, r1                  \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" add     r0, r0, %[eg_out], lsl #3   \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 16:18:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// if (level > 0x1fff) level = 0x1fff;
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-06 05:30:10 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" cmp     r0, r8                      \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-03 04:19:26 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" it      hi                          \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-06 05:30:10 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" movhi   r0, r8                      \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 16:18:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// wave_out = exprom[level & 0xff] >> (level >> 8);
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-06 05:30:10 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" lsrs    %[out], r0, #8              \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" ands    r0, r0, #255                \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" lsls    r0, r0, #1                  \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" ldrh    r0, [%[exprom], r0]         \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" lsr     %[out], r0, %[out]          \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 16:18:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// if (lookup & 0x8000) wave_out = -wave_out;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// in other words, lookup is negative
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" tst     r1, r1                      \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-03 04:19:26 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" it      mi                          \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-06 05:30:10 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" negmi   %[out], %[out]              \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 16:18:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// phase_acc += phase_offset
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-06 05:30:10 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" adds    %[p_acc], %[p_acc], %[p_off] \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 16:18:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// loop
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" subs    r2, r2, #1                  \n \t " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" bne     1b                          \n \t " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-06 05:30:10 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												:  [ p_fb ]    " =&r "  ( phase_feedback ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												  [ p_acc ]   " +r "   ( phase_acc ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												  [ out ]     " =&r "  ( wave_out ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												:  [ p_off ]   " r "    ( phase_offset ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												  [ mod_in ]  " r "    ( mod_in_shift ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												  [ eg_out ]  " r "    ( eg_output ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												  [ sinrom ]  " r "    ( logsinrom  +  waveform  *  1024 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												  [ exprom ]  " r "    ( exprom ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												:  " cc " ,  " r0 " ,  " r1 " ,  " r2 " ,  " r3 " ,  " r8 " 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-02 16:18:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# else 
  
						 
					
						
							
								
									
										
										
										
											2024-02-01 10:16:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											wave_out  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wave_last  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 16:33:20 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											for  ( iter_counter  =  0 ;  iter_counter  <  29 ;  iter_counter + + ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											{ 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 10:16:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												phase_feedback  =  ( wave_out  +  wave_last )  > >  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												wave_last  =  wave_out ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												phase  =  phase_feedback  > >  mod_in_shift ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												phase  + =  phase_acc  > >  9 ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												wave_out  =  ESFM_envelope_wavegen ( waveform ,  phase ,  eg_output ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												phase_acc  + =  phase_offset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2024-03-11 14:21:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// TODO: Figure out - is this how the ESFM chip does it, like the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// patent literally says? (it's really hacky...)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											//   slot->in.output = wave_out;
 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// This would be the more canonical way to do it, reusing the rest of
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// the synthesis pipeline to finish the calculation:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( chip - > native_mode ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												slot - > in . feedback_buf  =  phase_feedback ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												slot - > in . feedback_buf  =  phase_feedback  > >  ( 7  -  slot - > mod_in_level ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* ------------------------------------------------------------------------- */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ESFM_process_channel ( esfm_channel  * channel )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  slot_idx ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									channel - > output [ 0 ]  =  channel - > output [ 1 ]  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( slot_idx  =  0 ;  slot_idx  <  4 ;  slot_idx + + ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										esfm_slot  * slot  =  & channel - > slots [ slot_idx ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ESFM_envelope_calc ( slot ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ESFM_phase_generate ( slot ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( slot_idx  >  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ESFM_slot_generate ( slot ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ESFM feedback calculation takes a large number of clock cycles, so
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// defer slot 0 generation to the end
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// TODO: verify this behavior on real hardware
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* ------------------------------------------------------------------------- */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ESFM_process_channel_emu ( esfm_channel  * channel )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  slot_idx ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									channel - > output [ 0 ]  =  channel - > output [ 1 ]  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( slot_idx  =  0 ;  slot_idx  <  2 ;  slot_idx + + ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										esfm_slot  * slot  =  & channel - > slots [ slot_idx ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ESFM_envelope_calc ( slot ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ESFM_phase_generate_emu ( slot ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( slot_idx  >  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ESFM_slot_generate_emu ( slot ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ESFM feedback calculation takes a large number of clock cycles, so
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// defer slot 0 generation to the end
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// TODO: verify this behavior on real hardware
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* ------------------------------------------------------------------------- */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int16_t  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ESFM_clip_sample ( int32  sample )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// TODO: Supposedly, the real ESFM chip actually overflows rather than
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// clipping. Verify that.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( sample  >  32767 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										sample  =  32767 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  if  ( sample  <  - 32768 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										sample  =  - 32768 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  ( int16_t ) sample ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* ------------------------------------------------------------------------- */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ESFM_update_timers ( esfm_chip  * chip )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Tremolo
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ( chip - > global_timer  &  0x3f )  = =  0x3f ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										chip - > tremolo_pos  =  ( chip - > tremolo_pos  +  1 )  %  210 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( chip - > tremolo_pos  <  105 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											chip - > tremolo  =  chip - > tremolo_pos ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											chip - > tremolo  =  ( 210  -  chip - > tremolo_pos ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Vibrato
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ( chip - > global_timer  &  0x3ff )  = =  0x3ff ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										chip - > vibrato_pos  =  ( chip - > vibrato_pos  +  1 )  &  0x07 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									chip - > global_timer  =  ( chip - > global_timer  +  1 )  &  0x3ff ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Envelope generator dither clocks
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									chip - > eg_clocks  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( chip - > eg_timer ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uint8  shift  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										while  ( shift  <  36  & &  ( ( chip - > eg_timer  > >  shift )  &  1 )  = =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											shift + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( shift  < =  12 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											chip - > eg_clocks  =  shift  +  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( chip - > eg_tick  | |  chip - > eg_timer_overflow ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( chip - > eg_timer  = =  ( 1llu  < <  36 )  -  1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											chip - > eg_timer  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											chip - > eg_timer_overflow  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											chip - > eg_timer + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											chip - > eg_timer_overflow  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									chip - > eg_tick  ^ =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define KEY_ON_REGS_START (18 * 4 * 8) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* ------------------------------------------------------------------------- */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ESFM_reg_write_chan_idx ( esfm_chip  * chip ,  uint16_t  reg )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  which_reg  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( chip - > native_mode ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										bool  is_key_on_reg  =  reg  > =  KEY_ON_REGS_START  & &  reg  <  ( KEY_ON_REGS_START  +  20 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( is_key_on_reg ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											which_reg  =  reg  -  KEY_ON_REGS_START ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uint8_t  reg_low  =  reg  &  0xff ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										bool  high  =  reg  &  0x100 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										bool  is_key_on_reg  =  reg_low  > =  0xb0  & &  reg_low  <  0xb9 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( is_key_on_reg ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											which_reg  =  ( reg_low  &  0x0f )  +  high  *  9 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  which_reg ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* ------------------------------------------------------------------------- */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ESFM_update_write_buffer ( esfm_chip  * chip )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									esfm_write_buf  * write_buf ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bool  note_off_written [ 20 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bool  bassdrum_written  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( i  =  0 ;  i  <  20 ;  i + + ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										note_off_written [ i ]  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									while ( ( write_buf  =  & chip - > write_buf [ chip - > write_buf_start ] ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										write_buf - > valid  & &  write_buf - > timestamp  < =  chip - > write_buf_timestamp ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										int  is_which_note_on_reg  = 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ESFM_reg_write_chan_idx ( chip ,  write_buf - > address ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( is_which_note_on_reg  > =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ( chip - > native_mode  & &  ( write_buf - > data  &  0x01 )  = =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												| |  ( ! chip - > native_mode  & &  ( write_buf - > data  &  0x20 )  = =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// this is a note off command; note down that we got note off for this channel
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												note_off_written [ is_which_note_on_reg ]  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// this is a note on command; have we gotten a note off for this channel in this cycle?
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( note_off_written [ is_which_note_on_reg ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													// we have a conflict; let the note off be processed first and defer the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													// rest of the buffer to the next cycle
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ( chip - > native_mode  & &  write_buf - > address  = =  0x4bd ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											| |  ( ! chip - > native_mode  & &  ( write_buf - > address  &  0xff )  = =  0xbd ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// bassdrum register write (rhythm mode note-on/off control)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// have we already written to the bassdrum register in this cycle
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( bassdrum_written )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// we have a conflict
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											bassdrum_written  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										write_buf - > valid  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ESFM_write_reg ( chip ,  write_buf - > address ,  write_buf - > data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										chip - > write_buf_start  =  ( chip - > write_buf_start  +  1 )  %  ESFM_WRITEBUF_SIZE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									chip - > write_buf_timestamp + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* ------------------------------------------------------------------------- */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ESFM_generate ( esfm_chip  * chip ,  int16_t  * buf )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  channel_idx ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									chip - > output_accm [ 0 ]  =  chip - > output_accm [ 1 ]  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( channel_idx  =  0 ;  channel_idx  <  18 ;  channel_idx + + ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										esfm_channel  * channel  =  & chip - > channels [ channel_idx ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( chip - > native_mode ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ESFM_process_channel ( channel ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ESFM_process_channel_emu ( channel ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-01 03:30:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ESFM_process_feedback ( chip ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( channel_idx  =  0 ;  channel_idx  <  18 ;  channel_idx + + ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										esfm_channel  * channel  =  & chip - > channels [ channel_idx ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( chip - > native_mode ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ESFM_slot_generate ( & channel - > slots [ 0 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ESFM_slot_generate_emu ( & channel - > slots [ 0 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-14 07:10:37 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										chip - > output_accm [ 0 ]  + =  channel - > output [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										chip - > output_accm [ 1 ]  + =  channel - > output [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									buf [ 0 ]  =  ESFM_clip_sample ( chip - > output_accm [ 0 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									buf [ 1 ]  =  ESFM_clip_sample ( chip - > output_accm [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ESFM_update_timers ( chip ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ESFM_update_write_buffer ( chip ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* ------------------------------------------------------------------------- */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int16_t  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ESFM_get_channel_output_native ( esfm_chip  * chip ,  int  channel_idx )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int16_t  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int32_t  temp_mix  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( channel_idx  <  0  | |  channel_idx  > =  18 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( i  =  0 ;  i  <  4 ;  i + + ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										esfm_slot  * slot  =  & chip - > channels [ channel_idx ] . slots [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( slot - > output_level ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											int13  output_value  =  slot - > in . output  > >  ( 7  -  slot - > output_level ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											temp_mix  + =  output_value  &  slot - > out_enable [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											temp_mix  + =  output_value  &  slot - > out_enable [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( temp_mix  >  32767 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										temp_mix  =  32767 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  if  ( temp_mix  <  - 32768 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										temp_mix  =  - 32768 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									result  =  temp_mix ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* ------------------------------------------------------------------------- */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ESFM_generate_stream ( esfm_chip  * chip ,  int16_t  * sndptr ,  uint32_t  num_samples )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uint32_t  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( i  =  0 ;  i  <  num_samples ;  i + + ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ESFM_generate ( chip ,  sndptr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										sndptr  + =  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}