├── Build Notes ├── Core └── Src │ ├── main.c │ └── stm32g0xx_it.c ├── LICENSE ├── README.md ├── SW7456.hex ├── SW7456.ioc └── osd ├── fonts ├── ascii-b1.font ├── ascii-b2.font ├── ascii-b3.font ├── betaflight-b5.font ├── betaflight-b6.font ├── betaflight-b7.font ├── default-b0.font ├── default-b1.font ├── default-b2.font ├── default-b3.font ├── default-b4.font └── modd_logo.font ├── osd_asm.s ├── osd_config.h ├── osd_font.c ├── osd_font.h ├── osd_gen.c ├── osd_gen.h ├── osd_glue.c ├── osd_glue.h ├── osd_irq.c ├── osd_irq.h ├── osd_mixmux.c ├── osd_mixmux.h ├── osd_registers.c ├── osd_registers.h ├── osd_spi.c ├── osd_spi.h └── portable.h /Build Notes: -------------------------------------------------------------------------------- 1 | To build this project you need to use STM32Cube IDE software package. 2 | 3 | Once the software is installed, executing it will ask you to select a workspace directory. 4 | Create and select an empty folder, hit the launch button. 5 | 6 | It will give you a few choices on the left to make a project, select 'Start new project from STM32CubeMX file (.ioc)' and wait for a bit. 7 | 8 | Once the requestor comes up select the file, Browse and select the file 'SW7456.ioc' included in this project. Select the 'Finish' button and wait. 9 | 10 | Now you need to copy the osd directory from this project into the directory you created in the first step. (YourDir/SW7456/osd) 11 | And add the osd files to the project. 12 | 13 | Adding files is goofy in this tool, To add files you need to select SW7456 on the left panel, then select the menu 'project : properties'. 14 | From here select 'C/C++ General' then 'Paths and Symbols'. 15 | Now there should be a series of tabs on the upper part, select the 'Source Location' tab and add the directory 'osd'. 16 | 17 | Now add the include path '../osd' to the project using... 18 | 'project : properties', 'C/C++ Build' then 'Settings' which opens another list. 19 | Select 'MCU GCC Compiler : Include paths' in the new list. 20 | Now add the path '../osd' There is a tiny icon that you need to click to do this. the first one on the top. 21 | 22 | You may want to set a few other GCC options while you are here, the software expects -O2 optimization level which is not the default. 23 | -O0 is supported but you will need to change a line in osd_irq.c that sets the horizontal start position. 24 | 25 | Now you need to edit some files created in the above steps 26 | 27 | In the file 'Core/Src/main.c' add the line 28 | #include "osd_glue.h" in the appropriate place 29 | Then search for 'while (1)' in the file and add the functions 30 | osd_init(); 31 | osd_loop(); // never returns 32 | 33 | Just one more file to fix, 'Core/src/stm32g0xx_it.c', 34 | look at the bottom of the file 'osd_irq.c' to see the change 35 | but adding '{osd_comp_irq();return;}' at the top of the 'void ADC1_COMP_IRQHandler(void)' function should work. 36 | 37 | 38 | It now should build proprerly? It does over here. If not, welcome to the joys of software development. 39 | -------------------------------------------------------------------------------- /Core/Src/stm32g0xx_it.c: -------------------------------------------------------------------------------- 1 | /* USER CODE BEGIN Header */ 2 | /** 3 | ****************************************************************************** 4 | * @file stm32g0xx_it.c 5 | * @brief Interrupt Service Routines. 6 | ****************************************************************************** 7 | * @attention 8 | * 9 | * Copyright (c) 2024 STMicroelectronics. 10 | * All rights reserved. 11 | * 12 | * This software is licensed under terms that can be found in the LICENSE file 13 | * in the root directory of this software component. 14 | * If no LICENSE file comes with this software, it is provided AS-IS. 15 | * 16 | ****************************************************************************** 17 | */ 18 | /* USER CODE END Header */ 19 | 20 | /* Includes ------------------------------------------------------------------*/ 21 | #include "main.h" 22 | #include "stm32g0xx_it.h" 23 | /* Private includes ----------------------------------------------------------*/ 24 | /* USER CODE BEGIN Includes */ 25 | /* USER CODE END Includes */ 26 | 27 | /* Private typedef -----------------------------------------------------------*/ 28 | /* USER CODE BEGIN TD */ 29 | 30 | /* USER CODE END TD */ 31 | 32 | /* Private define ------------------------------------------------------------*/ 33 | /* USER CODE BEGIN PD */ 34 | 35 | /* USER CODE END PD */ 36 | 37 | /* Private macro -------------------------------------------------------------*/ 38 | /* USER CODE BEGIN PM */ 39 | 40 | /* USER CODE END PM */ 41 | 42 | /* Private variables ---------------------------------------------------------*/ 43 | /* USER CODE BEGIN PV */ 44 | 45 | /* USER CODE END PV */ 46 | 47 | /* Private function prototypes -----------------------------------------------*/ 48 | /* USER CODE BEGIN PFP */ 49 | 50 | /* USER CODE END PFP */ 51 | 52 | /* Private user code ---------------------------------------------------------*/ 53 | /* USER CODE BEGIN 0 */ 54 | 55 | /* USER CODE END 0 */ 56 | 57 | /* External variables --------------------------------------------------------*/ 58 | extern COMP_HandleTypeDef hcomp1; 59 | extern COMP_HandleTypeDef hcomp2; 60 | extern DMA_HandleTypeDef hdma_spi1_rx; 61 | extern DMA_HandleTypeDef hdma_tim16_ch1; 62 | /* USER CODE BEGIN EV */ 63 | 64 | /* USER CODE END EV */ 65 | 66 | /******************************************************************************/ 67 | /* Cortex-M0+ Processor Interruption and Exception Handlers */ 68 | /******************************************************************************/ 69 | /** 70 | * @brief This function handles Non maskable interrupt. 71 | */ 72 | void NMI_Handler(void) 73 | { 74 | /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ 75 | 76 | /* USER CODE END NonMaskableInt_IRQn 0 */ 77 | /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ 78 | while (1) 79 | { 80 | } 81 | /* USER CODE END NonMaskableInt_IRQn 1 */ 82 | } 83 | 84 | /** 85 | * @brief This function handles Hard fault interrupt. 86 | */ 87 | void HardFault_Handler(void) 88 | { 89 | /* USER CODE BEGIN HardFault_IRQn 0 */ 90 | 91 | /* USER CODE END HardFault_IRQn 0 */ 92 | while (1) 93 | { 94 | /* USER CODE BEGIN W1_HardFault_IRQn 0 */ 95 | /* USER CODE END W1_HardFault_IRQn 0 */ 96 | } 97 | } 98 | 99 | /** 100 | * @brief This function handles System service call via SWI instruction. 101 | */ 102 | void SVC_Handler(void) 103 | { 104 | /* USER CODE BEGIN SVC_IRQn 0 */ 105 | 106 | /* USER CODE END SVC_IRQn 0 */ 107 | /* USER CODE BEGIN SVC_IRQn 1 */ 108 | 109 | /* USER CODE END SVC_IRQn 1 */ 110 | } 111 | 112 | /** 113 | * @brief This function handles Pendable request for system service. 114 | */ 115 | void PendSV_Handler(void) 116 | { 117 | /* USER CODE BEGIN PendSV_IRQn 0 */ 118 | 119 | /* USER CODE END PendSV_IRQn 0 */ 120 | /* USER CODE BEGIN PendSV_IRQn 1 */ 121 | 122 | /* USER CODE END PendSV_IRQn 1 */ 123 | } 124 | 125 | /** 126 | * @brief This function handles System tick timer. 127 | */ 128 | void SysTick_Handler(void) 129 | { 130 | /* USER CODE BEGIN SysTick_IRQn 0 */ 131 | 132 | /* USER CODE END SysTick_IRQn 0 */ 133 | HAL_IncTick(); 134 | /* USER CODE BEGIN SysTick_IRQn 1 */ 135 | 136 | /* USER CODE END SysTick_IRQn 1 */ 137 | } 138 | 139 | /******************************************************************************/ 140 | /* STM32G0xx Peripheral Interrupt Handlers */ 141 | /* Add here the Interrupt Handlers for the used peripherals. */ 142 | /* For the available peripheral interrupt handler names, */ 143 | /* please refer to the startup file (startup_stm32g0xx.s). */ 144 | /******************************************************************************/ 145 | 146 | /** 147 | * @brief This function handles DMA1 channel 2 and channel 3 interrupts. 148 | */ 149 | void DMA1_Channel2_3_IRQHandler(void) 150 | { 151 | /* USER CODE BEGIN DMA1_Channel2_3_IRQn 0 */ 152 | 153 | /* USER CODE END DMA1_Channel2_3_IRQn 0 */ 154 | HAL_DMA_IRQHandler(&hdma_spi1_rx); 155 | /* USER CODE BEGIN DMA1_Channel2_3_IRQn 1 */ 156 | 157 | /* USER CODE END DMA1_Channel2_3_IRQn 1 */ 158 | } 159 | 160 | /** 161 | * @brief This function handles DMA1 channel 4, channel 5, channel 6, channel 7 and DMAMUX1 interrupts. 162 | */ 163 | void DMA1_Ch4_7_DMAMUX1_OVR_IRQHandler(void) 164 | { 165 | /* USER CODE BEGIN DMA1_Ch4_7_DMAMUX1_OVR_IRQn 0 */ 166 | 167 | /* USER CODE END DMA1_Ch4_7_DMAMUX1_OVR_IRQn 0 */ 168 | HAL_DMA_IRQHandler(&hdma_tim16_ch1); 169 | /* USER CODE BEGIN DMA1_Ch4_7_DMAMUX1_OVR_IRQn 1 */ 170 | 171 | /* USER CODE END DMA1_Ch4_7_DMAMUX1_OVR_IRQn 1 */ 172 | } 173 | 174 | /** 175 | * @brief This function handles ADC1, COMP1 and COMP2 interrupts (COMP interrupts through EXTI lines 17 and 18). 176 | */ 177 | void ADC1_COMP_IRQHandler(void) 178 | { 179 | /* USER CODE BEGIN ADC1_COMP_IRQn 0 */ 180 | extern void osd_comp_irq(void); 181 | osd_comp_irq(); 182 | #if 0 183 | /* USER CODE END ADC1_COMP_IRQn 0 */ 184 | HAL_COMP_IRQHandler(&hcomp1); 185 | HAL_COMP_IRQHandler(&hcomp2); 186 | /* USER CODE BEGIN ADC1_COMP_IRQn 1 */ 187 | #endif 188 | /* USER CODE END ADC1_COMP_IRQn 1 */ 189 | } 190 | 191 | /* USER CODE BEGIN 1 */ 192 | 193 | /* USER CODE END 1 */ 194 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SW7456 2 | A software emulation of a MAX7456 OSD chip running on a ARM cortex M0+ MCU. 3 | 4 | It is meant to be a drop in replacement for an AT7456 chip, using the same SPI interface as a real chip. 5 | The project was built for an STM32G071 chip, but could run on an STM32G031 if the video generator is compiled out. 6 | 7 | A schematic for the hardware, that is needed to run this software, is avalable at https://www.moddquad.com/p/fc.html 8 | or https://github.com/ModdQuad/ModdOSD/blob/master/Hardware/modd_osd_reference_schematic.png . 9 | The software is built using STM32Cube IDE which is available for free at ST Micro's website www.st.com. 10 | 11 | Most feature are implemented including; 12 | Attribute bits (local background, blinking, invert) 13 | Generates its own video signal when none is present. Automacically switches when camera is reconnecated. 14 | horizontal and vertical adjustment and brightness setting via 7456 registers 15 | 16 | Known issues: 17 | 1) No SPI read compatability. Only write compatability. 18 | all SPI reads will return the value 0x00. 19 | 20 | 21 | 2) Line start detection quanitization 22 | This causes lines to start at slightly different times (around 1/8 of a pixel width) which make vertical lines less crisp. 23 | All software OSD will suffer from this issue to some degree, I did my best to minimize the artifact. 24 | 25 | Any MCU can only detect things at its own clock rate. 26 | Anything that occurs in between two clocks will be detected at the next clock. 27 | This implementation uses a 64MHz clock and a two cycle M0+ pipline. 28 | Using a higher clock will reduce this artifacting. 29 | 30 | 3) Some pixels get extended during SPI communication 31 | SPI data is read using DMA, this is required because 80% of the time the MCU is drawing pixels. 32 | The artifact occurs because the DMA inserts wait states into cpu execution. 33 | This can be mitigated by choosing a MCU with RAM split into multiple banks that can accessed simultaneously. 34 | -------------------------------------------------------------------------------- /SW7456.ioc: -------------------------------------------------------------------------------- 1 | #MicroXplorer Configuration settings - do not modify 2 | CAD.formats= 3 | CAD.pinconfig= 4 | CAD.provider= 5 | COMP1.Hysteresis=COMP_HYSTERESIS_LOW 6 | COMP1.IPParameters=Mode,TriggerMode,Hysteresis,WindowOutput 7 | COMP1.Mode=COMP_POWERMODE_MEDIUMSPEED 8 | COMP1.TriggerMode=COMP_TRIGGERMODE_IT_RISING 9 | COMP1.WindowOutput=COMP_WINDOWOUTPUT_EACH_COMP 10 | COMP2.Hysteresis=COMP_HYSTERESIS_LOW 11 | COMP2.IPParameters=Mode,TriggerMode,OutputPol,Hysteresis 12 | COMP2.Mode=COMP_POWERMODE_MEDIUMSPEED 13 | COMP2.OutputPol=COMP_OUTPUTPOL_NONINVERTED 14 | COMP2.TriggerMode=COMP_TRIGGERMODE_IT_RISING 15 | DAC1.DAC_Channel-DAC_OUT2_Int=DAC_CHANNEL_2 16 | DAC1.IPParameters=DAC_Channel-DAC_OUT2_Int 17 | Dma.Request0=SPI1_RX 18 | Dma.Request1=TIM16_CH1 19 | Dma.RequestsNb=2 20 | Dma.SPI1_RX.0.Direction=DMA_PERIPH_TO_MEMORY 21 | Dma.SPI1_RX.0.EventEnable=DISABLE 22 | Dma.SPI1_RX.0.Instance=DMA1_Channel2 23 | Dma.SPI1_RX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE 24 | Dma.SPI1_RX.0.MemInc=DMA_MINC_ENABLE 25 | Dma.SPI1_RX.0.Mode=DMA_CIRCULAR 26 | Dma.SPI1_RX.0.PeriphDataAlignment=DMA_PDATAALIGN_BYTE 27 | Dma.SPI1_RX.0.PeriphInc=DMA_PINC_DISABLE 28 | Dma.SPI1_RX.0.Polarity=HAL_DMAMUX_REQ_GEN_RISING 29 | Dma.SPI1_RX.0.Priority=DMA_PRIORITY_LOW 30 | Dma.SPI1_RX.0.RequestNumber=1 31 | Dma.SPI1_RX.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber 32 | Dma.SPI1_RX.0.SignalID=NONE 33 | Dma.SPI1_RX.0.SyncEnable=DISABLE 34 | Dma.SPI1_RX.0.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT 35 | Dma.SPI1_RX.0.SyncRequestNumber=1 36 | Dma.SPI1_RX.0.SyncSignalID=NONE 37 | Dma.TIM16_CH1.1.Direction=DMA_MEMORY_TO_PERIPH 38 | Dma.TIM16_CH1.1.EventEnable=DISABLE 39 | Dma.TIM16_CH1.1.Instance=DMA1_Channel5 40 | Dma.TIM16_CH1.1.MemDataAlignment=DMA_MDATAALIGN_HALFWORD 41 | Dma.TIM16_CH1.1.MemInc=DMA_MINC_ENABLE 42 | Dma.TIM16_CH1.1.Mode=DMA_CIRCULAR 43 | Dma.TIM16_CH1.1.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD 44 | Dma.TIM16_CH1.1.PeriphInc=DMA_PINC_DISABLE 45 | Dma.TIM16_CH1.1.Polarity=HAL_DMAMUX_REQ_GEN_RISING 46 | Dma.TIM16_CH1.1.Priority=DMA_PRIORITY_VERY_HIGH 47 | Dma.TIM16_CH1.1.RequestNumber=1 48 | Dma.TIM16_CH1.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber 49 | Dma.TIM16_CH1.1.SignalID=NONE 50 | Dma.TIM16_CH1.1.SyncEnable=DISABLE 51 | Dma.TIM16_CH1.1.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT 52 | Dma.TIM16_CH1.1.SyncRequestNumber=1 53 | Dma.TIM16_CH1.1.SyncSignalID=NONE 54 | File.Version=6 55 | GPIO.groupedBy=Group By Peripherals 56 | KeepUserPlacement=false 57 | LPTIM1.IPParameters=TriggerSource 58 | LPTIM1.TriggerSource=LPTIM_TRIGSOURCE_6 59 | Mcu.CPN=STM32G071G8U6 60 | Mcu.Family=STM32G0 61 | Mcu.IP0=COMP1 62 | Mcu.IP1=COMP2 63 | Mcu.IP10=TIM2 64 | Mcu.IP11=TIM3 65 | Mcu.IP12=TIM6 66 | Mcu.IP13=TIM14 67 | Mcu.IP14=TIM16 68 | Mcu.IP2=DAC1 69 | Mcu.IP3=DMA 70 | Mcu.IP4=LPTIM1 71 | Mcu.IP5=NVIC 72 | Mcu.IP6=RCC 73 | Mcu.IP7=SPI1 74 | Mcu.IP8=SYS 75 | Mcu.IP9=TIM1 76 | Mcu.IPNb=15 77 | Mcu.Name=STM32G071G(6-8-B)Ux 78 | Mcu.Package=UFQFPN28 79 | Mcu.Pin0=PC14-OSC32_IN (PC14) 80 | Mcu.Pin1=PA0 81 | Mcu.Pin10=PA11 [PA9] 82 | Mcu.Pin11=PA12 [PA10] 83 | Mcu.Pin12=PA13 84 | Mcu.Pin13=PA14-BOOT0 85 | Mcu.Pin14=PB3 86 | Mcu.Pin15=PB4 87 | Mcu.Pin16=PB5 88 | Mcu.Pin17=PB6 89 | Mcu.Pin18=PB7 90 | Mcu.Pin19=PB8 91 | Mcu.Pin2=PA1 92 | Mcu.Pin20=VP_COMP1_VS_DACOUT2 93 | Mcu.Pin21=VP_COMP2_VS_DACOUT2 94 | Mcu.Pin22=VP_DAC1_VS_DACI2 95 | Mcu.Pin23=VP_LPTIM1_VS_LPTIM_counterModeInternalClock 96 | Mcu.Pin24=VP_SYS_VS_Systick 97 | Mcu.Pin25=VP_SYS_VS_DBSignals 98 | Mcu.Pin26=VP_TIM1_VS_ClockSourceINT 99 | Mcu.Pin27=VP_TIM2_VS_ControllerModeCombinedResetTrigger 100 | Mcu.Pin28=VP_TIM2_VS_ClockSourceINT 101 | Mcu.Pin29=VP_TIM2_VS_NoInput2 102 | Mcu.Pin3=PA3 103 | Mcu.Pin30=VP_TIM2_VS_NoETR 104 | Mcu.Pin31=VP_TIM3_VS_ControllerModeCombinedResetTrigger 105 | Mcu.Pin32=VP_TIM3_VS_ClockSourceINT 106 | Mcu.Pin33=VP_TIM3_VS_NoInput1 107 | Mcu.Pin34=VP_TIM3_VS_NoETR 108 | Mcu.Pin35=VP_TIM6_VS_ClockSourceINT 109 | Mcu.Pin36=VP_TIM14_VS_ClockSourceINT 110 | Mcu.Pin37=VP_TIM14_VS_NoInput1 111 | Mcu.Pin38=VP_TIM16_VS_ClockSourceINT 112 | Mcu.Pin4=PA4 113 | Mcu.Pin5=PA5 114 | Mcu.Pin6=PA6 115 | Mcu.Pin7=PA7 116 | Mcu.Pin8=PB0 117 | Mcu.Pin9=PC6 118 | Mcu.PinsNb=39 119 | Mcu.ThirdPartyNb=0 120 | Mcu.UserConstants= 121 | Mcu.UserName=STM32G071G8Ux 122 | MxCube.Version=6.10.0 123 | MxDb.Version=DB.6.0.100 124 | NVIC.ADC1_COMP_IRQn=true\:0\:0\:true\:false\:true\:false\:true\:true 125 | NVIC.DMA1_Ch4_7_DMAMUX1_OVR_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true 126 | NVIC.DMA1_Channel2_3_IRQn=true\:3\:0\:true\:false\:true\:false\:true\:true 127 | NVIC.ForceEnableDMAVector=true 128 | NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false 129 | NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false 130 | NVIC.PendSV_IRQn=true\:2\:0\:true\:false\:true\:false\:false\:false 131 | NVIC.SVC_IRQn=true\:2\:0\:true\:false\:true\:false\:false\:true 132 | NVIC.SysTick_IRQn=true\:2\:0\:true\:false\:true\:false\:true\:false 133 | PA0.GPIOParameters=GPIO_PuPd 134 | PA0.GPIO_PuPd=GPIO_PULLDOWN 135 | PA0.Locked=true 136 | PA0.Signal=GPIO_Input 137 | PA1.Mode=INP 138 | PA1.Signal=COMP1_INP 139 | PA11\ [PA9].Mode=ExternalOutput 140 | PA11\ [PA9].Signal=COMP1_OUT 141 | PA12\ [PA10].GPIOParameters=GPIO_Speed,PinState 142 | PA12\ [PA10].GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM 143 | PA12\ [PA10].Locked=true 144 | PA12\ [PA10].PinState=GPIO_PIN_SET 145 | PA12\ [PA10].Signal=COMP2_OUT 146 | PA13.Locked=true 147 | PA13.Mode=Serial_Wire 148 | PA13.Signal=SYS_SWDIO 149 | PA14-BOOT0.Locked=true 150 | PA14-BOOT0.Mode=Serial_Wire 151 | PA14-BOOT0.Signal=SYS_SWCLK 152 | PA3.Mode=INP 153 | PA3.Signal=COMP2_INP 154 | PA4.GPIOParameters=GPIO_Speed,GPIO_PuPd 155 | PA4.GPIO_PuPd=GPIO_PULLUP 156 | PA4.GPIO_Speed=GPIO_SPEED_FREQ_HIGH 157 | PA4.Locked=true 158 | PA4.Mode=NSS_Signal_Hard_Input 159 | PA4.Signal=SPI1_NSS 160 | PA5.GPIOParameters=GPIO_Speed,GPIO_PuPd 161 | PA5.GPIO_PuPd=GPIO_PULLUP 162 | PA5.GPIO_Speed=GPIO_SPEED_FREQ_HIGH 163 | PA5.Mode=RX_Only_Simplex_Unidirect_Slave 164 | PA5.Signal=SPI1_SCK 165 | PA6.Locked=true 166 | PA6.Signal=SPI1_MISO 167 | PA7.GPIOParameters=GPIO_Speed,GPIO_PuPd 168 | PA7.GPIO_PuPd=GPIO_PULLUP 169 | PA7.GPIO_Speed=GPIO_SPEED_FREQ_HIGH 170 | PA7.Locked=true 171 | PA7.Mode=RX_Only_Simplex_Unidirect_Slave 172 | PA7.Signal=SPI1_MOSI 173 | PB0.GPIOParameters=GPIO_Speed,GPIO_ModeDefaultOutputPP 174 | PB0.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_PP 175 | PB0.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH 176 | PB0.Locked=true 177 | PB0.Signal=GPIO_Output 178 | PB3.GPIOParameters=GPIO_Speed,PinState,GPIO_Label,GPIO_ModeDefaultOutputPP 179 | PB3.GPIO_Label=SMOO 180 | PB3.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD 181 | PB3.GPIO_Speed=GPIO_SPEED_FREQ_HIGH 182 | PB3.Locked=true 183 | PB3.PinState=GPIO_PIN_SET 184 | PB3.Signal=GPIO_Output 185 | PB4.GPIOParameters=GPIO_Speed,GPIO_Label 186 | PB4.GPIO_Label=VR1 187 | PB4.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM 188 | PB4.Locked=true 189 | PB4.Signal=GPIO_Output 190 | PB5.GPIOParameters=GPIO_Speed,GPIO_Label 191 | PB5.GPIO_Label=VR2 192 | PB5.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM 193 | PB5.Locked=true 194 | PB5.Signal=GPIO_Output 195 | PB6.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label 196 | PB6.GPIO_Label=VR3 197 | PB6.GPIO_PuPd=GPIO_NOPULL 198 | PB6.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM 199 | PB6.Locked=true 200 | PB6.Signal=GPIO_Output 201 | PB7.GPIOParameters=GPIO_Speed,GPIO_Label 202 | PB7.GPIO_Label=VR4 203 | PB7.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM 204 | PB7.Locked=true 205 | PB7.Signal=GPIO_Output 206 | PB8.GPIOParameters=GPIO_Label 207 | PB8.GPIO_Label=BLACK_TIM16 208 | PB8.Locked=true 209 | PB8.Signal=S_TIM16_CH1 210 | PC14-OSC32_IN\ (PC14).Locked=true 211 | PC14-OSC32_IN\ (PC14).Mode=HSE-External-Clock-Source 212 | PC14-OSC32_IN\ (PC14).Signal=RCC_OSC_IN 213 | PC6.GPIOParameters=GPIO_Label 214 | PC6.GPIO_Label=VBI 215 | PC6.Locked=true 216 | PC6.Signal=GPIO_Output 217 | PinOutPanel.RotationAngle=0 218 | ProjectManager.AskForMigrate=true 219 | ProjectManager.BackupPrevious=false 220 | ProjectManager.CompilerOptimize=6 221 | ProjectManager.ComputerToolchain=false 222 | ProjectManager.CoupleFile=false 223 | ProjectManager.CustomerFirmwarePackage= 224 | ProjectManager.DefaultFWLocation=true 225 | ProjectManager.DeletePrevious=true 226 | ProjectManager.DeviceId=STM32G071G8Ux 227 | ProjectManager.FirmwarePackage=STM32Cube FW_G0 V1.6.2 228 | ProjectManager.FreePins=false 229 | ProjectManager.HalAssertFull=false 230 | ProjectManager.HeapSize=0x0 231 | ProjectManager.KeepUserCode=true 232 | ProjectManager.LastFirmware=true 233 | ProjectManager.LibraryCopy=1 234 | ProjectManager.MainLocation=Core/Src 235 | ProjectManager.NoMain=false 236 | ProjectManager.PreviousToolchain=STM32CubeIDE 237 | ProjectManager.ProjectBuild=false 238 | ProjectManager.ProjectFileName=SW7456.ioc 239 | ProjectManager.ProjectName=SW7456 240 | ProjectManager.ProjectStructure= 241 | ProjectManager.RegisterCallBack= 242 | ProjectManager.StackSize=0x100 243 | ProjectManager.TargetToolchain=STM32CubeIDE 244 | ProjectManager.ToolChainLocation= 245 | ProjectManager.UAScriptAfterPath= 246 | ProjectManager.UAScriptBeforePath= 247 | ProjectManager.UnderRoot=true 248 | ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-MX_DMA_Init-DMA-false-HAL-true,3-SystemClock_Config-RCC-false-HAL-false,4-MX_COMP1_Init-COMP1-false-HAL-true,5-MX_DAC1_Init-DAC1-false-HAL-true,6-MX_TIM3_Init-TIM3-false-HAL-true,7-MX_TIM6_Init-TIM6-false-HAL-true,8-MX_TIM2_Init-TIM2-false-HAL-true,9-MX_LPTIM1_Init-LPTIM1-false-HAL-true,10-MX_SPI1_Init-SPI1-false-HAL-true,11-MX_COMP2_Init-COMP2-false-HAL-true,12-MX_TIM1_Init-TIM1-false-HAL-true,13-MX_TIM14_Init-TIM14-false-HAL-true,14-MX_TIM16_Init-TIM16-false-HAL-true 249 | RCC.ADCFreq_Value=64000000 250 | RCC.AHBFreq_Value=64000000 251 | RCC.APBFreq_Value=64000000 252 | RCC.APBTimFreq_Value=64000000 253 | RCC.CECFreq_Value=32786.88524590164 254 | RCC.CortexFreq_Value=64000000 255 | RCC.EXTERNAL_CLOCK_VALUE=48000 256 | RCC.FCLKCortexFreq_Value=64000000 257 | RCC.FamilyName=M 258 | RCC.HCLKFreq_Value=64000000 259 | RCC.HSE_VALUE=8000000 260 | RCC.HSI_VALUE=16000000 261 | RCC.I2C1Freq_Value=64000000 262 | RCC.I2S1Freq_Value=64000000 263 | RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APBFreq_Value,APBTimFreq_Value,CECFreq_Value,CortexFreq_Value,EXTERNAL_CLOCK_VALUE,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2C1Freq_Value,I2S1Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQ,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSourceVirtual,PWRFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,TIM15Freq_Value,TIM1Freq_Value,USART1Freq_Value,USART2Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value 264 | RCC.LPTIM1Freq_Value=64000000 265 | RCC.LPTIM2Freq_Value=64000000 266 | RCC.LPUART1Freq_Value=64000000 267 | RCC.LSCOPinFreq_Value=32000 268 | RCC.LSE_VALUE=32768 269 | RCC.LSI_VALUE=32000 270 | RCC.MCO1PinFreq_Value=64000000 271 | RCC.PLLN=16 272 | RCC.PLLPoutputFreq_Value=64000000 273 | RCC.PLLQ=RCC_PLLQ_DIV8 274 | RCC.PLLQoutputFreq_Value=16000000 275 | RCC.PLLRCLKFreq_Value=64000000 276 | RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE 277 | RCC.PWRFreq_Value=64000000 278 | RCC.SYSCLKFreq_VALUE=64000000 279 | RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK 280 | RCC.TIM15Freq_Value=64000000 281 | RCC.TIM1Freq_Value=64000000 282 | RCC.USART1Freq_Value=64000000 283 | RCC.USART2Freq_Value=64000000 284 | RCC.VCOInputFreq_Value=8000000 285 | RCC.VCOOutputFreq_Value=128000000 286 | SH.S_TIM16_CH1.0=TIM16_CH1,PWM Generation1 CH1 287 | SH.S_TIM16_CH1.ConfNb=1 288 | SPI1.CLKPhase=SPI_PHASE_2EDGE 289 | SPI1.CLKPolarity=SPI_POLARITY_HIGH 290 | SPI1.DataSize=SPI_DATASIZE_8BIT 291 | SPI1.Direction=SPI_DIRECTION_2LINES_RXONLY 292 | SPI1.FirstBit=SPI_FIRSTBIT_MSB 293 | SPI1.IPParameters=VirtualType,Mode,Direction,CLKPolarity,CLKPhase,DataSize,FirstBit,VirtualNSS 294 | SPI1.Mode=SPI_MODE_SLAVE 295 | SPI1.VirtualNSS=VM_NSSHARD 296 | SPI1.VirtualType=VM_SLAVE 297 | TIM1.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE 298 | TIM1.IPParameters=AutoReloadPreload,RepetitionCounter,Period,Prescaler 299 | TIM1.Period=40000 300 | TIM1.Prescaler=31 301 | TIM1.RepetitionCounter=0 302 | TIM14.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE 303 | TIM14.Channel=TIM_CHANNEL_1 304 | TIM14.ClockDivision=TIM_CLOCKDIVISION_DIV1 305 | TIM14.ICFilter_CH1=2 306 | TIM14.ICPrescaler=TIM_ICPSC_DIV1 307 | TIM14.IPParameters=Channel,AutoReloadPreload,Period,ICFilter_CH1,ICPrescaler,TIM14_TI1_REMAP,ClockDivision 308 | TIM14.Period=65535 309 | TIM14.TIM14_TI1_REMAP=TIM_TIM14_TI1_HSE_32 310 | TIM16.Channel=TIM_CHANNEL_1 311 | TIM16.IPParameters=Channel,OCMode_PWM,OCFastMode_PWM,Period,Pulse,OCIdleState_1,OC1Preload_PWM 312 | TIM16.OC1Preload_PWM=ENABLE 313 | TIM16.OCFastMode_PWM=TIM_OCFAST_DISABLE 314 | TIM16.OCIdleState_1=TIM_OCIDLESTATE_RESET 315 | TIM16.OCMode_PWM=TIM_OCMODE_PWM2 316 | TIM16.Period=2034 317 | TIM16.Pulse=0 318 | TIM2.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE 319 | TIM2.Channel-Input_Capture2_from_TI2_Remap_TIM2=TIM_CHANNEL_2 320 | TIM2.ICFilter_CH2=0 321 | TIM2.ICPolarity_CH2=TIM_INPUTCHANNELPOLARITY_RISING 322 | TIM2.ICPrescaler-Input_Capture2_from_TI2_Remap_TIM2=TIM_ICPSC_DIV1 323 | TIM2.IPParameters=Period,AutoReloadPreload,TIM_MasterOutputTrigger,TIM2_ETR_REMAP-TriggerSource_ETR_Remap_TIM2,Channel-Input_Capture2_from_TI2_Remap_TIM2,ICPolarity_CH2,ICPrescaler-Input_Capture2_from_TI2_Remap_TIM2,ICFilter_CH2,Slave_TriggerPrescaler,TIM_MasterSlaveMode 324 | TIM2.Period=32000 325 | TIM2.Slave_TriggerPrescaler=TIM_TRIGGERPRESCALER_DIV1 326 | TIM2.TIM2_ETR_REMAP-TriggerSource_ETR_Remap_TIM2=TIM_TIM2_ETR_COMP2 327 | TIM2.TIM_MasterOutputTrigger=TIM_TRGO_OC1REF 328 | TIM2.TIM_MasterSlaveMode=TIM_MASTERSLAVEMODE_DISABLE 329 | TIM3.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE 330 | TIM3.Channel-Input_Capture1_from_TI1_REMAP_TIM3=TIM_CHANNEL_1 331 | TIM3.IPParameters=Period,AutoReloadPreload,Slave_TriggerPolarity,TIM_MasterOutputTrigger,TIM3_ETR_REMAP-TriggerSource_ETR_Remap_TIM3,Slave_TriggerPrescaler,Channel-Input_Capture1_from_TI1_REMAP_TIM3 332 | TIM3.Period=65535 333 | TIM3.Slave_TriggerPolarity=TIM_TRIGGERPOLARITY_NONINVERTED 334 | TIM3.Slave_TriggerPrescaler=TIM_TRIGGERPRESCALER_DIV1 335 | TIM3.TIM3_ETR_REMAP-TriggerSource_ETR_Remap_TIM3=TIM_TIM3_ETR_COMP1 336 | TIM3.TIM_MasterOutputTrigger=TIM_TRGO_OC1REF 337 | TIM6.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE 338 | TIM6.IPParameters=Period,AutoReloadPreload,TIM_MasterOutputTrigger 339 | TIM6.Period=0xffff 340 | TIM6.TIM_MasterOutputTrigger=TIM_TRGO_ENABLE 341 | VP_COMP1_VS_DACOUT2.Mode=INM_DACOUT2 342 | VP_COMP1_VS_DACOUT2.Signal=COMP1_VS_DACOUT2 343 | VP_COMP2_VS_DACOUT2.Mode=INM_DACOUT2 344 | VP_COMP2_VS_DACOUT2.Signal=COMP2_VS_DACOUT2 345 | VP_DAC1_VS_DACI2.Mode=DAC_OUT2_Int 346 | VP_DAC1_VS_DACI2.Signal=DAC1_VS_DACI2 347 | VP_LPTIM1_VS_LPTIM_counterModeInternalClock.Mode=Counts__internal_clock_event_00 348 | VP_LPTIM1_VS_LPTIM_counterModeInternalClock.Signal=LPTIM1_VS_LPTIM_counterModeInternalClock 349 | VP_SYS_VS_DBSignals.Mode=DisableDeadBatterySignals 350 | VP_SYS_VS_DBSignals.Signal=SYS_VS_DBSignals 351 | VP_SYS_VS_Systick.Mode=SysTick 352 | VP_SYS_VS_Systick.Signal=SYS_VS_Systick 353 | VP_TIM14_VS_ClockSourceINT.Mode=Enable_Timer 354 | VP_TIM14_VS_ClockSourceINT.Signal=TIM14_VS_ClockSourceINT 355 | VP_TIM14_VS_NoInput1.Mode=Input_Capture1_from_TI1_REMAP_TIM14 356 | VP_TIM14_VS_NoInput1.Signal=TIM14_VS_NoInput1 357 | VP_TIM16_VS_ClockSourceINT.Mode=Enable_Timer 358 | VP_TIM16_VS_ClockSourceINT.Signal=TIM16_VS_ClockSourceINT 359 | VP_TIM1_VS_ClockSourceINT.Mode=Internal 360 | VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT 361 | VP_TIM2_VS_ClockSourceINT.Mode=Internal 362 | VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT 363 | VP_TIM2_VS_ControllerModeCombinedResetTrigger.Mode=Combined_Reset_Trigger_Mode 364 | VP_TIM2_VS_ControllerModeCombinedResetTrigger.Signal=TIM2_VS_ControllerModeCombinedResetTrigger 365 | VP_TIM2_VS_NoETR.Mode=TriggerSource_ETR_Remap_TIM2 366 | VP_TIM2_VS_NoETR.Signal=TIM2_VS_NoETR 367 | VP_TIM2_VS_NoInput2.Mode=Input_Capture2_from_TI2_Remap_TIM2 368 | VP_TIM2_VS_NoInput2.Signal=TIM2_VS_NoInput2 369 | VP_TIM3_VS_ClockSourceINT.Mode=Internal 370 | VP_TIM3_VS_ClockSourceINT.Signal=TIM3_VS_ClockSourceINT 371 | VP_TIM3_VS_ControllerModeCombinedResetTrigger.Mode=Combined_Reset_Trigger_Mode 372 | VP_TIM3_VS_ControllerModeCombinedResetTrigger.Signal=TIM3_VS_ControllerModeCombinedResetTrigger 373 | VP_TIM3_VS_NoETR.Mode=TriggerSource_ETR_Remap_TIM3 374 | VP_TIM3_VS_NoETR.Signal=TIM3_VS_NoETR 375 | VP_TIM3_VS_NoInput1.Mode=Input_Capture1_from_TI1_REMAP_TIM3 376 | VP_TIM3_VS_NoInput1.Signal=TIM3_VS_NoInput1 377 | VP_TIM6_VS_ClockSourceINT.Mode=Enable_Timer 378 | VP_TIM6_VS_ClockSourceINT.Signal=TIM6_VS_ClockSourceINT 379 | board=custom 380 | isbadioc=false 381 | -------------------------------------------------------------------------------- /osd/fonts/ascii-b2.font: -------------------------------------------------------------------------------- 1 | //-------------// -------------- [00] 2 | 0x00000000, // ' ' 3 | 0x00000000, // ' ' 4 | 0x11004400, // ' ---- ' 5 | 0x3314CC00, // ' -0000- ' 6 | 0x117D4400, // ' -0----0- ' ---- 7 | 0x15D75400, // ' -0------0- ' 8 | 0x7F55F500, // '-0--00-0--0-' 9 | 0x5D75FD00, // '-0-0--00--0-' ---- 10 | 0x5D75F500, // '-0-0---0--0-' 11 | 0x5D75FD00, // '-0-0--00--0-' 12 | 0x77D5F500, // '-0--00-0-0--' ---- 13 | 0x155D7500, // '-0------0-- ' 14 | 0x11575100, // '--0--- --- ' 15 | 0x15F55400, // ' --0-----0- ' ---- 16 | 0x375DCC00, // ' --00000-- ' 17 | 0x11544400, // ' ------- ' 18 | 0x00000000, // ' ' 19 | 0x00000000, // ' ' 20 | //-------------// -------------- [01] 21 | 0x00000000, // ' ' 22 | 0x00000000, // ' ' 23 | 0x00000000, // ' ' 24 | 0x10004400, // ' --- ' 25 | 0x3104CC00, // ' -000- ' ---- 26 | 0x335CCC00, // ' -00000- ' 27 | 0x37FDC400, // ' -000-000- ' 28 | 0x17FD4000, // ' -00- -00- ' ---- 29 | 0x17FD4400, // ' -00---00- ' 30 | 0x37FDCC00, // ' -0000000- ' 31 | 0x37FDCC00, // ' -0000000- ' ---- 32 | 0x17FD4400, // ' -00---00- ' 33 | 0x17FD4000, // ' -00- -00- ' 34 | 0x17FD4000, // ' -00- -00- ' ---- 35 | 0x01540000, // ' -- -- ' 36 | 0x00000000, // ' ' 37 | 0x00000000, // ' ' 38 | 0x00000000, // ' ' 39 | //-------------// -------------- [02] 40 | 0x00000000, // ' ' 41 | 0x00000000, // ' ' 42 | 0x00000000, // ' ' 43 | 0x11104400, // ' ----- ' 44 | 0x3335CC00, // ' -00000- ' ---- 45 | 0x337DCC00, // ' -000000- ' 46 | 0x17FDC400, // ' -00--000- ' 47 | 0x17FD4000, // ' -00- -00- ' ---- 48 | 0x137DC400, // ' -00--00- ' 49 | 0x17FDC400, // ' -00--000- ' 50 | 0x17FD4000, // ' -00- -00- ' ---- 51 | 0x17FD4400, // ' -00---00- ' 52 | 0x37FDCC00, // ' -0000000- ' 53 | 0x337DCC00, // ' -000000- ' ---- 54 | 0x11144400, // ' ------ ' 55 | 0x00000000, // ' ' 56 | 0x00000000, // ' ' 57 | 0x00000000, // ' ' 58 | //-------------// -------------- [03] 59 | 0x00000000, // ' ' 60 | 0x00000000, // ' ' 61 | 0x00000000, // ' ' 62 | 0x11044400, // ' ----- ' 63 | 0x335CCC00, // ' -00000- ' ---- 64 | 0x37FDCC00, // ' -0000000- ' 65 | 0x17FD4400, // ' -00---00- ' 66 | 0x13750000, // ' -00- -- ' ---- 67 | 0x13310000, // ' -00- ' 68 | 0x13310000, // ' -00- ' 69 | 0x13750000, // ' -00- -- ' ---- 70 | 0x17FD4400, // ' -00---00- ' 71 | 0x37FDCC00, // ' -0000000- ' 72 | 0x335CCC00, // ' -00000- ' ---- 73 | 0x11044400, // ' ----- ' 74 | 0x00000000, // ' ' 75 | 0x00000000, // ' ' 76 | 0x00000000, // ' ' 77 | //-------------// -------------- [04] 78 | 0x00000000, // ' ' 79 | 0x00000000, // ' ' 80 | 0x00000000, // ' ' 81 | 0x11104400, // ' ----- ' 82 | 0x3335CC00, // ' -00000- ' ---- 83 | 0x337DCC00, // ' -000000- ' 84 | 0x17FDC400, // ' -00--000- ' 85 | 0x17FD4000, // ' -00- -00- ' ---- 86 | 0x17FD4000, // ' -00- -00- ' 87 | 0x17FD4000, // ' -00- -00- ' 88 | 0x17FD4000, // ' -00- -00- ' ---- 89 | 0x17FDC400, // ' -00--000- ' 90 | 0x337DCC00, // ' -000000- ' 91 | 0x3335CC00, // ' -00000- ' ---- 92 | 0x11104400, // ' ----- ' 93 | 0x00000000, // ' ' 94 | 0x00000000, // ' ' 95 | 0x00000000, // ' ' 96 | //-------------// -------------- [05] 97 | 0x00000000, // ' ' 98 | 0x00000000, // ' ' 99 | 0x00000000, // ' ' 100 | 0x11444400, // ' ------ ' 101 | 0x37DCCC00, // ' -000000- ' ---- 102 | 0x37FDCC00, // ' -0000000- ' 103 | 0x13754400, // ' -00----- ' 104 | 0x13314400, // ' -00--- ' ---- 105 | 0x3335CC00, // ' -00000- ' 106 | 0x3335CC00, // ' -00000- ' 107 | 0x13314400, // ' -00--- ' ---- 108 | 0x13754400, // ' -00----- ' 109 | 0x37FDCC00, // ' -0000000- ' 110 | 0x37DCCC00, // ' -000000- ' ---- 111 | 0x11444400, // ' ------ ' 112 | 0x00000000, // ' ' 113 | 0x00000000, // ' ' 114 | 0x00000000, // ' ' 115 | //-------------// -------------- [06] 116 | 0x00000000, // ' ' 117 | 0x00000000, // ' ' 118 | 0x00000000, // ' ' 119 | 0x11544400, // ' ------- ' 120 | 0x37FDCC00, // ' -0000000- ' ---- 121 | 0x37FDCC00, // ' -0000000- ' 122 | 0x13754400, // ' -00----- ' 123 | 0x13310000, // ' -00- ' ---- 124 | 0x13314400, // ' -00--- ' 125 | 0x3335CC00, // ' -00000- ' 126 | 0x3335CC00, // ' -00000- ' ---- 127 | 0x13314400, // ' -00--- ' 128 | 0x13310000, // ' -00- ' 129 | 0x13310000, // ' -00- ' ---- 130 | 0x01100000, // ' -- ' 131 | 0x00000000, // ' ' 132 | 0x00000000, // ' ' 133 | 0x00000000, // ' ' 134 | //-------------// -------------- [07] 135 | 0x00000000, // ' ' 136 | 0x00000000, // ' ' 137 | 0x00000000, // ' ' 138 | 0x11444400, // ' ------ ' 139 | 0x37DCCC00, // ' -000000- ' ---- 140 | 0x37FDCC00, // ' -0000000- ' 141 | 0x13754400, // ' -00----- ' 142 | 0x13754000, // ' -00- --- ' ---- 143 | 0x17FDC400, // ' -00--000- ' 144 | 0x17FDC400, // ' -00--000- ' 145 | 0x17FD4000, // ' -00- -00- ' ---- 146 | 0x17FD4400, // ' -00---00- ' 147 | 0x37FDCC00, // ' -0000000- ' 148 | 0x335CCC00, // ' -00000- ' ---- 149 | 0x11044400, // ' ----- ' 150 | 0x00000000, // ' ' 151 | 0x00000000, // ' ' 152 | 0x00000000, // ' ' 153 | //-------------// -------------- [08] 154 | 0x00000000, // ' ' 155 | 0x00000000, // ' ' 156 | 0x00000000, // ' ' 157 | 0x01540000, // ' -- -- ' 158 | 0x17FD4000, // ' -00- -00- ' ---- 159 | 0x17FD4000, // ' -00- -00- ' 160 | 0x17FD4000, // ' -00- -00- ' 161 | 0x17FD4400, // ' -00---00- ' ---- 162 | 0x37FDCC00, // ' -0000000- ' 163 | 0x37FDCC00, // ' -0000000- ' 164 | 0x17FD4400, // ' -00---00- ' ---- 165 | 0x17FD4000, // ' -00- -00- ' 166 | 0x17FD4000, // ' -00- -00- ' 167 | 0x17FD4000, // ' -00- -00- ' ---- 168 | 0x01540000, // ' -- -- ' 169 | 0x00000000, // ' ' 170 | 0x00000000, // ' ' 171 | 0x00000000, // ' ' 172 | //-------------// -------------- [09] 173 | 0x00000000, // ' ' 174 | 0x00000000, // ' ' 175 | 0x00000000, // ' ' 176 | 0x11144400, // ' ------ ' 177 | 0x337DCC00, // ' -000000- ' ---- 178 | 0x337DCC00, // ' -000000- ' 179 | 0x31144C00, // ' --00-- ' 180 | 0x31004C00, // ' -00- ' ---- 181 | 0x31004C00, // ' -00- ' 182 | 0x31004C00, // ' -00- ' 183 | 0x31004C00, // ' -00- ' ---- 184 | 0x31144C00, // ' --00-- ' 185 | 0x337DCC00, // ' -000000- ' 186 | 0x337DCC00, // ' -000000- ' ---- 187 | 0x11144400, // ' ------ ' 188 | 0x00000000, // ' ' 189 | 0x00000000, // ' ' 190 | 0x00000000, // ' ' 191 | //-------------// -------------- [10] 192 | 0x00000000, // ' ' 193 | 0x00000000, // ' ' 194 | 0x00000000, // ' ' 195 | 0x00444000, // ' --- ' 196 | 0x04CC4000, // ' -00- ' ---- 197 | 0x04CC4000, // ' -00- ' 198 | 0x04CC4000, // ' -00- ' 199 | 0x04CC4000, // ' -00- ' ---- 200 | 0x05DC4000, // ' -- -00- ' 201 | 0x17FD4000, // ' -00- -00- ' 202 | 0x17FD4000, // ' -00- -00- ' ---- 203 | 0x17FD4400, // ' -00---00- ' 204 | 0x37FDCC00, // ' -0000000- ' 205 | 0x335CCC00, // ' -00000- ' ---- 206 | 0x11044400, // ' ----- ' 207 | 0x00000000, // ' ' 208 | 0x00000000, // ' ' 209 | 0x00000000, // ' ' 210 | //-------------// -------------- [11] 211 | 0x00000000, // ' ' 212 | 0x00000000, // ' ' 213 | 0x01100000, // ' -- ' 214 | 0x13310000, // ' -00- ' 215 | 0x13750000, // ' -00- -- ' ---- 216 | 0x17FD4000, // ' -00- -00- ' 217 | 0x17FDC400, // ' -00--000- ' 218 | 0x137DCC00, // ' -00-000- ' ---- 219 | 0x3335CC00, // ' -00000- ' 220 | 0x33314C00, // ' -0000- ' 221 | 0x3335CC00, // ' -00000- ' ---- 222 | 0x137DCC00, // ' -00-000- ' 223 | 0x17FDC400, // ' -00--000- ' 224 | 0x17FD4000, // ' -00- -00- ' ---- 225 | 0x01540000, // ' -- -- ' 226 | 0x00000000, // ' ' 227 | 0x00000000, // ' ' 228 | 0x00000000, // ' ' 229 | //-------------// -------------- [12] 230 | 0x00000000, // ' ' 231 | 0x00000000, // ' ' 232 | 0x00000000, // ' ' 233 | 0x01100000, // ' -- ' 234 | 0x13310000, // ' -00- ' ---- 235 | 0x13310000, // ' -00- ' 236 | 0x13310000, // ' -00- ' 237 | 0x13310000, // ' -00- ' ---- 238 | 0x13310000, // ' -00- ' 239 | 0x13310000, // ' -00- ' 240 | 0x13310000, // ' -00- ' ---- 241 | 0x17754400, // ' -00------ ' 242 | 0x37FDCC00, // ' -0000000- ' 243 | 0x37FDCC00, // ' -0000000- ' ---- 244 | 0x11544400, // ' ------- ' 245 | 0x00000000, // ' ' 246 | 0x00000000, // ' ' 247 | 0x00000000, // ' ' 248 | //-------------// -------------- [13] 249 | 0x00000000, // ' ' 250 | 0x00000000, // ' ' 251 | 0x00000000, // ' ' 252 | 0x01540000, // ' -- -- ' 253 | 0x17FD4000, // ' -00- -00- ' ---- 254 | 0x37FDC400, // ' -000-000- ' 255 | 0x37FDCC00, // ' -0000000- ' 256 | 0x37FDCC00, // ' -0000000- ' ---- 257 | 0x37FDCC00, // ' -0000000- ' 258 | 0x17FD4C00, // ' -00-0-00- ' 259 | 0x17FD4400, // ' -00---00- ' ---- 260 | 0x17FD4000, // ' -00- -00- ' 261 | 0x17FD4000, // ' -00- -00- ' 262 | 0x17FD4000, // ' -00- -00- ' ---- 263 | 0x01540000, // ' -- -- ' 264 | 0x00000000, // ' ' 265 | 0x00000000, // ' ' 266 | 0x00000000, // ' ' 267 | //-------------// -------------- [14] 268 | 0x00000000, // ' ' 269 | 0x00000000, // ' ' 270 | 0x00000000, // ' ' 271 | 0x01540000, // ' -- -- ' 272 | 0x17FD4000, // ' -00- -00- ' ---- 273 | 0x37FD4400, // ' -000--00- ' 274 | 0x37FD4C00, // ' -0000-00- ' 275 | 0x37FDCC00, // ' -0000000- ' ---- 276 | 0x37FDCC00, // ' -0000000- ' 277 | 0x17FDCC00, // ' -00-0000- ' 278 | 0x17FDC400, // ' -00--000- ' ---- 279 | 0x17FD4000, // ' -00- -00- ' 280 | 0x17FD4000, // ' -00- -00- ' 281 | 0x17FD4000, // ' -00- -00- ' ---- 282 | 0x01540000, // ' -- -- ' 283 | 0x00000000, // ' ' 284 | 0x00000000, // ' ' 285 | 0x00000000, // ' ' 286 | //-------------// -------------- [15] 287 | 0x00000000, // ' ' 288 | 0x00000000, // ' ' 289 | 0x00000000, // ' ' 290 | 0x11044400, // ' ----- ' 291 | 0x335CCC00, // ' -00000- ' ---- 292 | 0x37FDCC00, // ' -0000000- ' 293 | 0x17FD4400, // ' -00---00- ' 294 | 0x17FD4000, // ' -00- -00- ' ---- 295 | 0x17FD4000, // ' -00- -00- ' 296 | 0x17FD4000, // ' -00- -00- ' 297 | 0x17FD4000, // ' -00- -00- ' ---- 298 | 0x17FD4400, // ' -00---00- ' 299 | 0x37FDCC00, // ' -0000000- ' 300 | 0x335CCC00, // ' -00000- ' ---- 301 | 0x11044400, // ' ----- ' 302 | 0x00000000, // ' ' 303 | 0x00000000, // ' ' 304 | 0x00000000, // ' ' 305 | //-------------// -------------- [16] 306 | 0x00000000, // ' ' 307 | 0x00000000, // ' ' 308 | 0x00000000, // ' ' 309 | 0x11144400, // ' ------ ' 310 | 0x337DCC00, // ' -000000- ' ---- 311 | 0x37FDCC00, // ' -0000000- ' 312 | 0x17FD4400, // ' -00---00- ' 313 | 0x17FD4400, // ' -00---00- ' ---- 314 | 0x37FDCC00, // ' -0000000- ' 315 | 0x337DCC00, // ' -000000- ' 316 | 0x13354400, // ' -00---- ' ---- 317 | 0x13310000, // ' -00- ' 318 | 0x13310000, // ' -00- ' 319 | 0x13310000, // ' -00- ' ---- 320 | 0x01100000, // ' -- ' 321 | 0x00000000, // ' ' 322 | 0x00000000, // ' ' 323 | 0x00000000, // ' ' 324 | //-------------// -------------- [17] 325 | 0x00000000, // ' ' 326 | 0x00000000, // ' ' 327 | 0x00000000, // ' ' 328 | 0x11044400, // ' ----- ' 329 | 0x335CCC00, // ' -00000- ' ---- 330 | 0x37FDCC00, // ' -0000000- ' 331 | 0x17FD4400, // ' -00---00- ' 332 | 0x17FD4000, // ' -00- -00- ' ---- 333 | 0x17FD4000, // ' -00- -00- ' 334 | 0x17FD4000, // ' -00- -00- ' 335 | 0x17FDC400, // ' -00--000- ' ---- 336 | 0x137DCC00, // ' -00-000- ' 337 | 0x337DCC00, // ' -000000- ' 338 | 0x37DCCC00, // ' -000000- ' ---- 339 | 0x15CC4400, // ' ----00- ' 340 | 0x00440000, // ' -- ' 341 | 0x00000000, // ' ' 342 | 0x00000000, // ' ' 343 | //-------------// -------------- [18] 344 | 0x00000000, // ' ' 345 | 0x00000000, // ' ' 346 | 0x00000000, // ' ' 347 | 0x11144400, // ' ------ ' 348 | 0x337DCC00, // ' -000000- ' ---- 349 | 0x37FDCC00, // ' -0000000- ' 350 | 0x17FD4400, // ' -00---00- ' 351 | 0x17FD4000, // ' -00- -00- ' ---- 352 | 0x137DC400, // ' -00--00- ' 353 | 0x137DCC00, // ' -00-000- ' 354 | 0x17FDC400, // ' -00--000- ' ---- 355 | 0x17FD4000, // ' -00- -00- ' 356 | 0x17FD4000, // ' -00- -00- ' 357 | 0x17FD4000, // ' -00- -00- ' ---- 358 | 0x01540000, // ' -- -- ' 359 | 0x00000000, // ' ' 360 | 0x00000000, // ' ' 361 | 0x00000000, // ' ' 362 | //-------------// -------------- [19] 363 | 0x00000000, // ' ' 364 | 0x00000000, // ' ' 365 | 0x00000000, // ' ' 366 | 0x11044400, // ' ----- ' 367 | 0x335CCC00, // ' -00000- ' ---- 368 | 0x337DCC00, // ' -000000- ' 369 | 0x13754400, // ' -00----- ' 370 | 0x13354400, // ' -00---- ' ---- 371 | 0x335CCC00, // ' -00000- ' 372 | 0x15CCC400, // ' ---000- ' 373 | 0x04CC4000, // ' -00- ' ---- 374 | 0x15DC4400, // ' -----00- ' 375 | 0x37FDCC00, // ' -0000000- ' 376 | 0x337DCC00, // ' -000000- ' ---- 377 | 0x11144400, // ' ------ ' 378 | 0x00000000, // ' ' 379 | 0x00000000, // ' ' 380 | 0x00000000, // ' ' 381 | //-------------// -------------- [20] 382 | 0x00000000, // ' ' 383 | 0x00000000, // ' ' 384 | 0x00000000, // ' ' 385 | 0x11554400, // ' -------- ' 386 | 0x37FFDC00, // ' -00000000- ' ---- 387 | 0x37FFDC00, // ' -00000000- ' 388 | 0x31554C00, // ' ---00--- ' 389 | 0x31004C00, // ' -00- ' ---- 390 | 0x31004C00, // ' -00- ' 391 | 0x31004C00, // ' -00- ' 392 | 0x31004C00, // ' -00- ' ---- 393 | 0x31004C00, // ' -00- ' 394 | 0x31004C00, // ' -00- ' 395 | 0x31004C00, // ' -00- ' ---- 396 | 0x10000400, // ' -- ' 397 | 0x00000000, // ' ' 398 | 0x00000000, // ' ' 399 | 0x00000000, // ' ' 400 | //-------------// -------------- [21] 401 | 0x00000000, // ' ' 402 | 0x00000000, // ' ' 403 | 0x00000000, // ' ' 404 | 0x01540000, // ' -- -- ' 405 | 0x17FD4000, // ' -00- -00- ' ---- 406 | 0x17FD4000, // ' -00- -00- ' 407 | 0x17FD4000, // ' -00- -00- ' 408 | 0x17FD4000, // ' -00- -00- ' ---- 409 | 0x17FD4000, // ' -00- -00- ' 410 | 0x17FD4000, // ' -00- -00- ' 411 | 0x17FD4000, // ' -00- -00- ' ---- 412 | 0x17FD4400, // ' -00---00- ' 413 | 0x37FDCC00, // ' -0000000- ' 414 | 0x335CCC00, // ' -00000- ' ---- 415 | 0x11044400, // ' ----- ' 416 | 0x00000000, // ' ' 417 | 0x00000000, // ' ' 418 | 0x00000000, // ' ' 419 | //-------------// -------------- [22] 420 | 0x00000000, // ' ' 421 | 0x00000000, // ' ' 422 | 0x00000000, // ' ' 423 | 0x01540000, // ' -- -- ' 424 | 0x17FD4000, // ' -00- -00- ' ---- 425 | 0x17FD4000, // ' -00- -00- ' 426 | 0x17FD4000, // ' -00- -00- ' 427 | 0x17FD4000, // ' -00- -00- ' ---- 428 | 0x335CC400, // ' -00-00- ' 429 | 0x335CC400, // ' -00-00- ' 430 | 0x3104CC00, // ' -000- ' ---- 431 | 0x3104CC00, // ' -000- ' 432 | 0x10004C00, // ' -0- ' 433 | 0x10004C00, // ' -0- ' ---- 434 | 0x00000400, // ' - ' 435 | 0x00000000, // ' ' 436 | 0x00000000, // ' ' 437 | 0x00000000, // ' ' 438 | //-------------// -------------- [23] 439 | 0x00000000, // ' ' 440 | 0x00000000, // ' ' 441 | 0x00000000, // ' ' 442 | 0x01540000, // ' -- -- ' 443 | 0x17FD4000, // ' -00- -00- ' ---- 444 | 0x17FD4000, // ' -00- -00- ' 445 | 0x17FD4000, // ' -00- -00- ' 446 | 0x17FD4400, // ' -00---00- ' ---- 447 | 0x17FD4C00, // ' -00-0-00- ' 448 | 0x37FDCC00, // ' -0000000- ' 449 | 0x37FDCC00, // ' -0000000- ' ---- 450 | 0x37FDC400, // ' -000-000- ' 451 | 0x17FD4000, // ' -00- -00- ' 452 | 0x05F50000, // ' -0- -0- ' ---- 453 | 0x00500000, // ' - - ' 454 | 0x00000000, // ' ' 455 | 0x00000000, // ' ' 456 | 0x00000000, // ' ' 457 | //-------------// -------------- [24] 458 | 0x00000000, // ' ' 459 | 0x00000000, // ' ' 460 | 0x00000000, // ' ' 461 | 0x01540000, // ' -- -- ' 462 | 0x17FD4000, // ' -00- -00- ' ---- 463 | 0x17FD4000, // ' -00- -00- ' 464 | 0x37FDC400, // ' -000-000- ' 465 | 0x335CCC00, // ' -00000- ' ---- 466 | 0x3104CC00, // ' -000- ' 467 | 0x335CCC00, // ' -00000- ' 468 | 0x37FDC400, // ' -000-000- ' ---- 469 | 0x17FD4000, // ' -00- -00- ' 470 | 0x17FD4000, // ' -00- -00- ' 471 | 0x17FD4000, // ' -00- -00- ' ---- 472 | 0x01540000, // ' -- -- ' 473 | 0x00000000, // ' ' 474 | 0x00000000, // ' ' 475 | 0x00000000, // ' ' 476 | //-------------// -------------- [25] 477 | 0x00000000, // ' ' 478 | 0x00000000, // ' ' 479 | 0x00000000, // ' ' 480 | 0x00550000, // ' -- -- ' 481 | 0x05FF5000, // ' -00- -00- ' ---- 482 | 0x05FF5000, // ' -00- -00- ' 483 | 0x17FFD400, // ' -000--000- ' 484 | 0x137DC400, // ' -00--00- ' ---- 485 | 0x337DCC00, // ' -000000- ' 486 | 0x3314CC00, // ' -0000- ' 487 | 0x31004C00, // ' -00- ' ---- 488 | 0x31004C00, // ' -00- ' 489 | 0x31004C00, // ' -00- ' 490 | 0x31004C00, // ' -00- ' ---- 491 | 0x10000400, // ' -- ' 492 | 0x00000000, // ' ' 493 | 0x00000000, // ' ' 494 | 0x00000000, // ' ' 495 | //-------------// -------------- [26] 496 | 0x00000000, // ' ' 497 | 0x00000000, // ' ' 498 | 0x00000000, // ' ' 499 | 0x11544400, // ' ------- ' 500 | 0x37FDCC00, // ' -0000000- ' ---- 501 | 0x37FDCC00, // ' -0000000- ' 502 | 0x15DC4400, // ' -----00- ' 503 | 0x04CCC400, // ' -000- ' ---- 504 | 0x104CCC00, // ' -000- ' 505 | 0x3104CC00, // ' -000- ' 506 | 0x33104C00, // ' -000- ' ---- 507 | 0x33754400, // ' -000---- ' 508 | 0x37FDCC00, // ' -0000000- ' 509 | 0x37FDCC00, // ' -0000000- ' ---- 510 | 0x11544400, // ' ------- ' 511 | 0x00000000, // ' ' 512 | 0x00000000, // ' ' 513 | 0x00000000, // ' ' 514 | //-------------// -------------- [27] 515 | 0x00000000, // ' ' 516 | 0x00000000, // ' ' 517 | 0x11004400, // ' ---- ' 518 | 0x3314CC00, // ' -0000- ' 519 | 0x3314CC00, // ' -0000- ' ---- 520 | 0x33104400, // ' -00-- ' 521 | 0x33100400, // ' -00- ' 522 | 0x33100400, // ' -00- ' ---- 523 | 0x33100400, // ' -00- ' 524 | 0x33100400, // ' -00- ' 525 | 0x33100400, // ' -00- ' ---- 526 | 0x33100400, // ' -00- ' 527 | 0x33104400, // ' -00-- ' 528 | 0x3314CC00, // ' -0000- ' ---- 529 | 0x3314CC00, // ' -0000- ' 530 | 0x11004400, // ' ---- ' 531 | 0x00000000, // ' ' 532 | 0x00000000, // ' ' 533 | //-------------// -------------- [28] 534 | 0x00000000, // ' ' 535 | 0x00000000, // ' ' 536 | 0x00110000, // ' -- ' 537 | 0x01331000, // ' -00- ' 538 | 0x01310000, // ' -0- ' ---- 539 | 0x13310000, // ' -00- ' 540 | 0x13100000, // ' -0- ' 541 | 0x33100400, // ' -00- ' ---- 542 | 0x31000400, // ' -0- ' 543 | 0x31004C00, // ' -00- ' 544 | 0x10004C00, // ' -0- ' ---- 545 | 0x1004CC00, // ' -00- ' 546 | 0x0004C400, // ' -0- ' 547 | 0x004CC400, // ' -00- ' ---- 548 | 0x00044000, // ' -- ' 549 | 0x00000000, // ' ' 550 | 0x00000000, // ' ' 551 | 0x00000000, // ' ' 552 | //-------------// -------------- [29] 553 | 0x00000000, // ' ' 554 | 0x00000000, // ' ' 555 | 0x11004400, // ' ---- ' 556 | 0x3314CC00, // ' -0000- ' 557 | 0x3314CC00, // ' -0000- ' ---- 558 | 0x1104CC00, // ' --00- ' 559 | 0x1004CC00, // ' -00- ' 560 | 0x1004CC00, // ' -00- ' ---- 561 | 0x1004CC00, // ' -00- ' 562 | 0x1004CC00, // ' -00- ' 563 | 0x1004CC00, // ' -00- ' ---- 564 | 0x1004CC00, // ' -00- ' 565 | 0x1104CC00, // ' --00- ' 566 | 0x3314CC00, // ' -0000- ' ---- 567 | 0x3314CC00, // ' -0000- ' 568 | 0x11004400, // ' ---- ' 569 | 0x00000000, // ' ' 570 | 0x00000000, // ' ' 571 | //-------------// -------------- [30] 572 | 0x00000000, // ' ' 573 | 0x00000000, // ' ' 574 | 0x00000000, // ' ' 575 | 0x10000400, // ' -- ' 576 | 0x31004C00, // ' -00- ' ---- 577 | 0x3314CC00, // ' -0000- ' 578 | 0x137DC400, // ' -00--00- ' 579 | 0x017D4000, // ' -0- -0- ' ---- 580 | 0x00140000, // ' - - ' 581 | 0x00000000, // ' ' 582 | 0x00000000, // ' ' ---- 583 | 0x00000000, // ' ' 584 | 0x00000000, // ' ' 585 | 0x00000000, // ' ' ---- 586 | 0x00000000, // ' ' 587 | 0x00000000, // ' ' 588 | 0x00000000, // ' ' 589 | 0x00000000, // ' ' 590 | //-------------// -------------- [31] 591 | 0x00000000, // ' ' 592 | 0x00000000, // ' ' 593 | 0x00000000, // ' ' 594 | 0x00000000, // ' ' 595 | 0x00000000, // ' ' ---- 596 | 0x00000000, // ' ' 597 | 0x00000000, // ' ' 598 | 0x00000000, // ' ' ---- 599 | 0x00000000, // ' ' 600 | 0x00000000, // ' ' 601 | 0x00000000, // ' ' ---- 602 | 0x00000000, // ' ' 603 | 0x00000000, // ' ' 604 | 0x11554400, // ' -------- ' ---- 605 | 0x37FFDC00, // ' -00000000- ' 606 | 0x37FFDC00, // ' -00000000- ' 607 | 0x11554400, // ' -------- ' 608 | 0x00000000, // ' ' 609 | //-------------// -------------- [32] 610 | -------------------------------------------------------------------------------- /osd/fonts/ascii-b3.font: -------------------------------------------------------------------------------- 1 | //-------------// -------------- [00] 2 | 0x00000000, // ' ' 3 | 0x00000000, // ' ' 4 | 0x11000000, // ' -- ' 5 | 0x33100400, // ' -00- ' 6 | 0x31004C00, // ' -00- ' ---- 7 | 0x10000400, // ' -- ' 8 | 0x00000000, // ' ' 9 | 0x00000000, // ' ' ---- 10 | 0x00000000, // ' ' 11 | 0x00000000, // ' ' 12 | 0x00000000, // ' ' ---- 13 | 0x00000000, // ' ' 14 | 0x00000000, // ' ' 15 | 0x00000000, // ' ' ---- 16 | 0x00000000, // ' ' 17 | 0x00000000, // ' ' 18 | 0x00000000, // ' ' 19 | 0x00000000, // ' ' 20 | //-------------// -------------- [01] 21 | 0x00000000, // ' ' 22 | 0x00000000, // ' ' 23 | 0x00000000, // ' ' 24 | 0x00000000, // ' ' 25 | 0x00000000, // ' ' ---- 26 | 0x00000000, // ' ' 27 | 0x11044400, // ' ----- ' 28 | 0x335CCC00, // ' -00000- ' ---- 29 | 0x15CC4400, // ' ----00- ' 30 | 0x15CC4400, // ' ----00- ' 31 | 0x37DCCC00, // ' -000000- ' ---- 32 | 0x17FD4400, // ' -00---00- ' 33 | 0x17FD4400, // ' -00---00- ' 34 | 0x7FD4CC00, // ' -0000-00-' ---- 35 | 0x15404400, // ' ---- -- ' 36 | 0x00000000, // ' ' 37 | 0x00000000, // ' ' 38 | 0x00000000, // ' ' 39 | //-------------// -------------- [02] 40 | 0x00000000, // ' ' 41 | 0x00000000, // ' ' 42 | 0x01100000, // ' -- ' 43 | 0x13310000, // ' -00- ' 44 | 0x13310000, // ' -00- ' ---- 45 | 0x13310000, // ' -00- ' 46 | 0x13354400, // ' -00---- ' 47 | 0x337DCC00, // ' -000000- ' ---- 48 | 0x17FD4400, // ' -00---00- ' 49 | 0x17FD4000, // ' -00- -00- ' 50 | 0x17FD4000, // ' -00- -00- ' ---- 51 | 0x17FD4000, // ' -00- -00- ' 52 | 0x17FD4400, // ' -00---00- ' 53 | 0x337DCC00, // ' -000000- ' ---- 54 | 0x11144400, // ' ------ ' 55 | 0x00000000, // ' ' 56 | 0x00000000, // ' ' 57 | 0x00000000, // ' ' 58 | //-------------// -------------- [03] 59 | 0x00000000, // ' ' 60 | 0x00000000, // ' ' 61 | 0x00000000, // ' ' 62 | 0x00000000, // ' ' 63 | 0x00000000, // ' ' ---- 64 | 0x00000000, // ' ' 65 | 0x11444400, // ' ------ ' 66 | 0x37DCCC00, // ' -000000- ' ---- 67 | 0x13754400, // ' -00----- ' 68 | 0x13310000, // ' -00- ' 69 | 0x13310000, // ' -00- ' ---- 70 | 0x13310000, // ' -00- ' 71 | 0x13754400, // ' -00----- ' 72 | 0x37DCCC00, // ' -000000- ' ---- 73 | 0x11444400, // ' ------ ' 74 | 0x00000000, // ' ' 75 | 0x00000000, // ' ' 76 | 0x00000000, // ' ' 77 | //-------------// -------------- [04] 78 | 0x00000000, // ' ' 79 | 0x00000000, // ' ' 80 | 0x00440000, // ' -- ' 81 | 0x04CC4000, // ' -00- ' 82 | 0x04CC4000, // ' -00- ' ---- 83 | 0x04CC4000, // ' -00- ' 84 | 0x15CC4400, // ' ----00- ' 85 | 0x37DCCC00, // ' -000000- ' ---- 86 | 0x17FD4400, // ' -00---00- ' 87 | 0x17FD4000, // ' -00- -00- ' 88 | 0x17FD4000, // ' -00- -00- ' ---- 89 | 0x17FD4000, // ' -00- -00- ' 90 | 0x17FD4400, // ' -00---00- ' 91 | 0x37DCCC00, // ' -000000- ' ---- 92 | 0x11444400, // ' ------ ' 93 | 0x00000000, // ' ' 94 | 0x00000000, // ' ' 95 | 0x00000000, // ' ' 96 | //-------------// -------------- [05] 97 | 0x00000000, // ' ' 98 | 0x00000000, // ' ' 99 | 0x00000000, // ' ' 100 | 0x00000000, // ' ' 101 | 0x00000000, // ' ' ---- 102 | 0x00000000, // ' ' 103 | 0x11044400, // ' ----- ' 104 | 0x335CCC00, // ' -00000- ' ---- 105 | 0x17FD4400, // ' -00---00- ' 106 | 0x17FD4400, // ' -00---00- ' 107 | 0x37FDCC00, // ' -0000000- ' ---- 108 | 0x13754400, // ' -00----- ' 109 | 0x13754400, // ' -00----- ' 110 | 0x37DCCC00, // ' -000000- ' ---- 111 | 0x11444400, // ' ------ ' 112 | 0x00000000, // ' ' 113 | 0x00000000, // ' ' 114 | 0x00000000, // ' ' 115 | //-------------// -------------- [06] 116 | 0x00000000, // ' ' 117 | 0x00000000, // ' ' 118 | 0x00000000, // ' ' 119 | 0x11044400, // ' ----- ' 120 | 0x335CCC00, // ' -00000- ' ---- 121 | 0x17FD4400, // ' -00---00- ' 122 | 0x13750000, // ' -00- -- ' 123 | 0x13310000, // ' -00- ' ---- 124 | 0x13310400, // ' -00-- ' 125 | 0x33314C00, // ' -0000- ' 126 | 0x13310400, // ' -00-- ' ---- 127 | 0x13310000, // ' -00- ' 128 | 0x13310000, // ' -00- ' 129 | 0x13310000, // ' -00- ' ---- 130 | 0x01100000, // ' -- ' 131 | 0x00000000, // ' ' 132 | 0x00000000, // ' ' 133 | 0x00000000, // ' ' 134 | //-------------// -------------- [07] 135 | 0x00000000, // ' ' 136 | 0x00000000, // ' ' 137 | 0x00000000, // ' ' 138 | 0x00000000, // ' ' 139 | 0x00000000, // ' ' ---- 140 | 0x00000000, // ' ' 141 | 0x11444400, // ' ------ ' 142 | 0x37DCCC00, // ' -000000- ' ---- 143 | 0x17FD4400, // ' -00---00- ' 144 | 0x17FD4000, // ' -00- -00- ' 145 | 0x17FD4000, // ' -00- -00- ' ---- 146 | 0x17FD4000, // ' -00- -00- ' 147 | 0x17FD4400, // ' -00---00- ' 148 | 0x37DCCC00, // ' -000000- ' ---- 149 | 0x15CC4400, // ' ----00- ' 150 | 0x15DC4400, // ' -----00- ' 151 | 0x3335CC00, // ' -00000- ' 152 | 0x00000000, // ' ' 153 | //-------------// -------------- [08] 154 | 0x00000000, // ' ' 155 | 0x00000000, // ' ' 156 | 0x00000000, // ' ' 157 | 0x01100000, // ' -- ' 158 | 0x13310000, // ' -00- ' ---- 159 | 0x13310000, // ' -00- ' 160 | 0x13310000, // ' -00- ' 161 | 0x13354400, // ' -00---- ' ---- 162 | 0x337DCC00, // ' -000000- ' 163 | 0x17FD4400, // ' -00---00- ' 164 | 0x17FD4000, // ' -00- -00- ' ---- 165 | 0x17FD4000, // ' -00- -00- ' 166 | 0x17FD4000, // ' -00- -00- ' 167 | 0x17FD4000, // ' -00- -00- ' ---- 168 | 0x01540000, // ' -- -- ' 169 | 0x00000000, // ' ' 170 | 0x00000000, // ' ' 171 | 0x00000000, // ' ' 172 | //-------------// -------------- [09] 173 | 0x00000000, // ' ' 174 | 0x00000000, // ' ' 175 | 0x00000000, // ' ' 176 | 0x00000000, // ' ' 177 | 0x10000400, // ' -- ' ---- 178 | 0x31004C00, // ' -00- ' 179 | 0x10000400, // ' -- ' 180 | 0x31000C00, // ' -00 ' ---- 181 | 0x31004C00, // ' -00- ' 182 | 0x31004C00, // ' -00- ' 183 | 0x31004C00, // ' -00- ' ---- 184 | 0x31004C00, // ' -00- ' 185 | 0x31004C00, // ' -00- ' 186 | 0x31004C00, // ' -00- ' ---- 187 | 0x10000400, // ' -- ' 188 | 0x00000000, // ' ' 189 | 0x00000000, // ' ' 190 | 0x00000000, // ' ' 191 | //-------------// -------------- [10] 192 | 0x00000000, // ' ' 193 | 0x00000000, // ' ' 194 | 0x00000000, // ' ' 195 | 0x00000000, // ' ' 196 | 0x00440000, // ' -- ' ---- 197 | 0x04CC4000, // ' -00- ' 198 | 0x00440000, // ' -- ' 199 | 0x04CC4000, // ' -00- ' ---- 200 | 0x04CC4000, // ' -00- ' 201 | 0x04CC4000, // ' -00- ' 202 | 0x04CC4000, // ' -00- ' ---- 203 | 0x04CC4000, // ' -00- ' 204 | 0x04CC4000, // ' -00- ' 205 | 0x05DC4000, // ' -- -00- ' ---- 206 | 0x17FD4400, // ' -00---00- ' 207 | 0x335CCC00, // ' -00000- ' 208 | 0x11044400, // ' ----- ' 209 | 0x00000000, // ' ' 210 | //-------------// -------------- [11] 211 | 0x00000000, // ' ' 212 | 0x00000000, // ' ' 213 | 0x00000000, // ' ' 214 | 0x01100000, // ' -- ' 215 | 0x13310000, // ' -00- ' ---- 216 | 0x13310000, // ' -00- ' 217 | 0x13750000, // ' -00- -- ' 218 | 0x17FD4000, // ' -00- -00- ' ---- 219 | 0x137DC400, // ' -00--00- ' 220 | 0x1335CC00, // ' -00-00- ' 221 | 0x33314C00, // ' -0000- ' ---- 222 | 0x1335CC00, // ' -00-00- ' 223 | 0x137DC400, // ' -00--00- ' 224 | 0x17FD4000, // ' -00- -00- ' ---- 225 | 0x01540000, // ' -- -- ' 226 | 0x00000000, // ' ' 227 | 0x00000000, // ' ' 228 | 0x00000000, // ' ' 229 | //-------------// -------------- [12] 230 | 0x00000000, // ' ' 231 | 0x00000000, // ' ' 232 | 0x00000000, // ' ' 233 | 0x10000400, // ' -- ' 234 | 0x31004C00, // ' -00- ' ---- 235 | 0x31004C00, // ' -00- ' 236 | 0x31004C00, // ' -00- ' 237 | 0x31004C00, // ' -00- ' ---- 238 | 0x31004C00, // ' -00- ' 239 | 0x31004C00, // ' -00- ' 240 | 0x31004C00, // ' -00- ' ---- 241 | 0x31004C00, // ' -00- ' 242 | 0x31004C00, // ' -00- ' 243 | 0x31004C00, // ' -00- ' ---- 244 | 0x10000400, // ' -- ' 245 | 0x00000000, // ' ' 246 | 0x00000000, // ' ' 247 | 0x00000000, // ' ' 248 | //-------------// -------------- [13] 249 | 0x00000000, // ' ' 250 | 0x00000000, // ' ' 251 | 0x00000000, // ' ' 252 | 0x00000000, // ' ' 253 | 0x00000000, // ' ' ---- 254 | 0x00000000, // ' ' 255 | 0x10144000, // ' - - -- ' 256 | 0x317DC400, // ' -0-0-00- ' ---- 257 | 0x37FDCC00, // ' -0000000- ' 258 | 0x17FD4C00, // ' -00-0-00- ' 259 | 0x17FD4C00, // ' -00-0-00- ' ---- 260 | 0x17FD4C00, // ' -00-0-00- ' 261 | 0x17FD4400, // ' -00---00- ' 262 | 0x17FD4400, // ' -00---00- ' ---- 263 | 0x01540000, // ' -- -- ' 264 | 0x00000000, // ' ' 265 | 0x00000000, // ' ' 266 | 0x00000000, // ' ' 267 | //-------------// -------------- [14] 268 | 0x00000000, // ' ' 269 | 0x00000000, // ' ' 270 | 0x00000000, // ' ' 271 | 0x00000000, // ' ' 272 | 0x00000000, // ' ' ---- 273 | 0x00000000, // ' ' 274 | 0x10144400, // ' - ---- ' 275 | 0x317DCC00, // ' -0-0000- ' ---- 276 | 0x37FDCC00, // ' -0000000- ' 277 | 0x17FD4400, // ' -00---00- ' 278 | 0x17FD4000, // ' -00- -00- ' ---- 279 | 0x17FD4000, // ' -00- -00- ' 280 | 0x17FD4000, // ' -00- -00- ' 281 | 0x17FD4000, // ' -00- -00- ' ---- 282 | 0x01540000, // ' -- -- ' 283 | 0x00000000, // ' ' 284 | 0x00000000, // ' ' 285 | 0x00000000, // ' ' 286 | //-------------// -------------- [15] 287 | 0x00000000, // ' ' 288 | 0x00000000, // ' ' 289 | 0x00000000, // ' ' 290 | 0x00000000, // ' ' 291 | 0x00000000, // ' ' ---- 292 | 0x00000000, // ' ' 293 | 0x11044400, // ' ----- ' 294 | 0x335CCC00, // ' -00000- ' ---- 295 | 0x17FD4400, // ' -00---00- ' 296 | 0x17FD4000, // ' -00- -00- ' 297 | 0x17FD4000, // ' -00- -00- ' ---- 298 | 0x17FD4000, // ' -00- -00- ' 299 | 0x17FD4400, // ' -00---00- ' 300 | 0x335CCC00, // ' -00000- ' ---- 301 | 0x11044400, // ' ----- ' 302 | 0x00000000, // ' ' 303 | 0x00000000, // ' ' 304 | 0x00000000, // ' ' 305 | //-------------// -------------- [16] 306 | 0x00000000, // ' ' 307 | 0x00000000, // ' ' 308 | 0x00000000, // ' ' 309 | 0x00000000, // ' ' 310 | 0x00000000, // ' ' ---- 311 | 0x00000000, // ' ' 312 | 0x11144400, // ' ------ ' 313 | 0x337DCC00, // ' -000000- ' ---- 314 | 0x17FD4400, // ' -00---00- ' 315 | 0x17FD4000, // ' -00- -00- ' 316 | 0x17FD4000, // ' -00- -00- ' ---- 317 | 0x17FD4000, // ' -00- -00- ' 318 | 0x17FD4400, // ' -00---00- ' 319 | 0x337DCC00, // ' -000000- ' ---- 320 | 0x13354400, // ' -00---- ' 321 | 0x13310000, // ' -00- ' 322 | 0x13310000, // ' -00- ' 323 | 0x00000000, // ' ' 324 | //-------------// -------------- [17] 325 | 0x00000000, // ' ' 326 | 0x00000000, // ' ' 327 | 0x00000000, // ' ' 328 | 0x00000000, // ' ' 329 | 0x00000000, // ' ' ---- 330 | 0x00000000, // ' ' 331 | 0x11444400, // ' ------ ' 332 | 0x37DCCC00, // ' -000000- ' ---- 333 | 0x17FD4400, // ' -00---00- ' 334 | 0x17FD4000, // ' -00- -00- ' 335 | 0x17FD4000, // ' -00- -00- ' ---- 336 | 0x17FD4000, // ' -00- -00- ' 337 | 0x17FD4400, // ' -00---00- ' 338 | 0x37DCCC00, // ' -000000- ' ---- 339 | 0x15CC4400, // ' ----00- ' 340 | 0x04CC0000, // ' 00- ' 341 | 0x04CC4000, // ' -00- ' 342 | 0x00000000, // ' ' 343 | //-------------// -------------- [18] 344 | 0x00000000, // ' ' 345 | 0x00000000, // ' ' 346 | 0x00000000, // ' ' 347 | 0x00000000, // ' ' 348 | 0x00000000, // ' ' ---- 349 | 0x00000000, // ' ' 350 | 0x10144400, // ' - ---- ' 351 | 0x317DCC00, // ' -0-0000- ' ---- 352 | 0x37FD4400, // ' -000--00- ' 353 | 0x13750000, // ' -00- -- ' 354 | 0x13310000, // ' -00- ' ---- 355 | 0x13310000, // ' -00- ' 356 | 0x13310000, // ' -00- ' 357 | 0x13310000, // ' -00- ' ---- 358 | 0x01100000, // ' -- ' 359 | 0x00000000, // ' ' 360 | 0x00000000, // ' ' 361 | 0x00000000, // ' ' 362 | //-------------// -------------- [19] 363 | 0x00000000, // ' ' 364 | 0x00000000, // ' ' 365 | 0x00000000, // ' ' 366 | 0x00000000, // ' ' 367 | 0x00000000, // ' ' ---- 368 | 0x00000000, // ' ' 369 | 0x11444400, // ' ------ ' 370 | 0x37DCCC00, // ' -000000- ' ---- 371 | 0x13754400, // ' -00----- ' 372 | 0x13354400, // ' -00---- ' 373 | 0x335CCC00, // ' -00000- ' ---- 374 | 0x15CC4400, // ' ----00- ' 375 | 0x15DC4400, // ' -----00- ' 376 | 0x337DCC00, // ' -000000- ' ---- 377 | 0x11144400, // ' ------ ' 378 | 0x00000000, // ' ' 379 | 0x00000000, // ' ' 380 | 0x00000000, // ' ' 381 | //-------------// -------------- [20] 382 | 0x00000000, // ' ' 383 | 0x00000000, // ' ' 384 | 0x00000000, // ' ' 385 | 0x00000000, // ' ' 386 | 0x10000400, // ' -- ' ---- 387 | 0x31004C00, // ' -00- ' 388 | 0x31554C00, // ' ---00--- ' 389 | 0x37FFDC00, // ' -00000000- ' ---- 390 | 0x31554C00, // ' ---00--- ' 391 | 0x31004C00, // ' -00- ' 392 | 0x31004C00, // ' -00- ' ---- 393 | 0x31004C00, // ' -00- ' 394 | 0x31004C00, // ' -00- ' 395 | 0x31004C00, // ' -00- ' ---- 396 | 0x10000400, // ' -- ' 397 | 0x00000000, // ' ' 398 | 0x00000000, // ' ' 399 | 0x00000000, // ' ' 400 | //-------------// -------------- [21] 401 | 0x00000000, // ' ' 402 | 0x00000000, // ' ' 403 | 0x00000000, // ' ' 404 | 0x00000000, // ' ' 405 | 0x00000000, // ' ' ---- 406 | 0x00000000, // ' ' 407 | 0x01540000, // ' -- -- ' 408 | 0x17FD4000, // ' -00- -00- ' ---- 409 | 0x17FD4000, // ' -00- -00- ' 410 | 0x17FD4000, // ' -00- -00- ' 411 | 0x17FD4000, // ' -00- -00- ' ---- 412 | 0x17FD4000, // ' -00- -00- ' 413 | 0x17FD4400, // ' -00---00- ' 414 | 0x335CCC00, // ' -00000- ' ---- 415 | 0x11044400, // ' ----- ' 416 | 0x00000000, // ' ' 417 | 0x00000000, // ' ' 418 | 0x00000000, // ' ' 419 | //-------------// -------------- [22] 420 | 0x00000000, // ' ' 421 | 0x00000000, // ' ' 422 | 0x00000000, // ' ' 423 | 0x00000000, // ' ' 424 | 0x00000000, // ' ' ---- 425 | 0x00000000, // ' ' 426 | 0x01540000, // ' -- -- ' 427 | 0x17FD4000, // ' -00- -00- ' ---- 428 | 0x17FD4000, // ' -00- -00- ' 429 | 0x17FD4000, // ' -00- -00- ' 430 | 0x17FD4000, // ' -00- -00- ' ---- 431 | 0x335CC400, // ' -00-00- ' 432 | 0x3104CC00, // ' -000- ' 433 | 0x10004C00, // ' -0- ' ---- 434 | 0x00000400, // ' - ' 435 | 0x00000000, // ' ' 436 | 0x00000000, // ' ' 437 | 0x00000000, // ' ' 438 | //-------------// -------------- [23] 439 | 0x00000000, // ' ' 440 | 0x00000000, // ' ' 441 | 0x00000000, // ' ' 442 | 0x00000000, // ' ' 443 | 0x00000000, // ' ' ---- 444 | 0x00000000, // ' ' 445 | 0x04510000, // ' -- -- ' 446 | 0x5DF75400, // ' -00-----00-' ---- 447 | 0x5DF75400, // ' -00-----00-' 448 | 0x5DF75C00, // ' -00--0--00-' 449 | 0x17FD4C00, // ' -00-0-00- ' ---- 450 | 0x17FD4C00, // ' -00-0-00- ' 451 | 0x37FDCC00, // ' -0000000- ' 452 | 0x17FD4000, // ' -00- -00- ' ---- 453 | 0x00500000, // ' - - ' 454 | 0x00000000, // ' ' 455 | 0x00000000, // ' ' 456 | 0x00000000, // ' ' 457 | //-------------// -------------- [24] 458 | 0x00000000, // ' ' 459 | 0x00000000, // ' ' 460 | 0x00000000, // ' ' 461 | 0x00000000, // ' ' 462 | 0x00000000, // ' ' ---- 463 | 0x00000000, // ' ' 464 | 0x01540000, // ' -- -- ' 465 | 0x17FD4000, // ' -00- -00- ' ---- 466 | 0x17FD4000, // ' -00- -00- ' 467 | 0x335CC400, // ' -00-00- ' 468 | 0x3104CC00, // ' -000- ' ---- 469 | 0x335CC400, // ' -00-00- ' 470 | 0x17FD4000, // ' -00- -00- ' 471 | 0x17FD4000, // ' -00- -00- ' ---- 472 | 0x01540000, // ' -- -- ' 473 | 0x00000000, // ' ' 474 | 0x00000000, // ' ' 475 | 0x00000000, // ' ' 476 | //-------------// -------------- [25] 477 | 0x00000000, // ' ' 478 | 0x00000000, // ' ' 479 | 0x00000000, // ' ' 480 | 0x00000000, // ' ' 481 | 0x00000000, // ' ' ---- 482 | 0x00000000, // ' ' 483 | 0x01540000, // ' -- -- ' 484 | 0x17FD4000, // ' -00- -00- ' ---- 485 | 0x17FD4000, // ' -00- -00- ' 486 | 0x17FD4000, // ' -00- -00- ' 487 | 0x37DC4000, // ' -00 -00- ' ---- 488 | 0x35CC4C00, // ' -00-00- ' 489 | 0x004CC400, // ' -00- ' 490 | 0x1004CC00, // ' -00- ' ---- 491 | 0x31004C00, // ' -00- ' 492 | 0x33100400, // ' -00- ' 493 | 0x13310000, // ' -00- ' 494 | 0x00000000, // ' ' 495 | //-------------// -------------- [26] 496 | 0x00000000, // ' ' 497 | 0x00000000, // ' ' 498 | 0x00000000, // ' ' 499 | 0x00000000, // ' ' 500 | 0x00000000, // ' ' ---- 501 | 0x00000000, // ' ' 502 | 0x11544400, // ' ------- ' 503 | 0x37FDCC00, // ' -0000000- ' ---- 504 | 0x15DC4400, // ' -----00- ' 505 | 0x004CC400, // ' -00- ' 506 | 0x1004CC00, // ' -00- ' ---- 507 | 0x31004C00, // ' -00- ' 508 | 0x33544400, // ' -00---- ' 509 | 0x37FDCC00, // ' -0000000- ' ---- 510 | 0x11544400, // ' ------- ' 511 | 0x00000000, // ' ' 512 | 0x00000000, // ' ' 513 | 0x00000000, // ' ' 514 | //-------------// -------------- [27] 515 | 0x00000000, // ' ' 516 | 0x00000000, // ' ' 517 | 0x00044400, // ' --- ' 518 | 0x104CCC00, // ' -000- ' 519 | 0x31044C00, // ' -00-- ' ---- 520 | 0x31004C00, // ' -00- ' 521 | 0x31004C00, // ' -00- ' 522 | 0x31104C00, // ' --00- ' ---- 523 | 0x33310400, // ' -000- ' 524 | 0x31104C00, // ' --00- ' 525 | 0x31004C00, // ' -00- ' ---- 526 | 0x31004C00, // ' -00- ' 527 | 0x31044C00, // ' -00-- ' 528 | 0x104CCC00, // ' -000- ' ---- 529 | 0x00044400, // ' --- ' 530 | 0x00000000, // ' ' 531 | 0x00000000, // ' ' 532 | 0x00000000, // ' ' 533 | //-------------// -------------- [28] 534 | 0x00000000, // ' ' 535 | 0x00000000, // ' ' 536 | 0x10000400, // ' -- ' 537 | 0x31004C00, // ' -00- ' 538 | 0x31004C00, // ' -00- ' ---- 539 | 0x31004C00, // ' -00- ' 540 | 0x31004C00, // ' -00- ' 541 | 0x31004C00, // ' -00- ' ---- 542 | 0x31004C00, // ' -00- ' 543 | 0x31004C00, // ' -00- ' 544 | 0x31004C00, // ' -00- ' ---- 545 | 0x31004C00, // ' -00- ' 546 | 0x31004C00, // ' -00- ' 547 | 0x31004C00, // ' -00- ' ---- 548 | 0x10000400, // ' -- ' 549 | 0x00000000, // ' ' 550 | 0x00000000, // ' ' 551 | 0x00000000, // ' ' 552 | //-------------// -------------- [29] 553 | 0x00000000, // ' ' 554 | 0x00000000, // ' ' 555 | 0x11100000, // ' --- ' 556 | 0x33310400, // ' -000- ' 557 | 0x31104C00, // ' --00- ' ---- 558 | 0x31004C00, // ' -00- ' 559 | 0x31004C00, // ' -00- ' 560 | 0x31044C00, // ' -00-- ' ---- 561 | 0x104CCC00, // ' -000- ' 562 | 0x31044C00, // ' -00-- ' 563 | 0x31004C00, // ' -00- ' ---- 564 | 0x31004C00, // ' -00- ' 565 | 0x31104C00, // ' --00- ' 566 | 0x33310400, // ' -000- ' ---- 567 | 0x11100000, // ' --- ' 568 | 0x00000000, // ' ' 569 | 0x00000000, // ' ' 570 | 0x00000000, // ' ' 571 | //-------------// -------------- [30] 572 | 0x00000000, // ' ' 573 | 0x00000000, // ' ' 574 | 0x00000000, // ' ' 575 | 0x00000000, // ' ' 576 | 0x00000000, // ' ' ---- 577 | 0x00000000, // ' ' 578 | 0x00000000, // ' ' 579 | 0x11440000, // ' -- -- ' ---- 580 | 0x37DD4400, // ' --00--00- ' 581 | 0x1177DC00, // ' -00--00-- ' 582 | 0x00114400, // ' -- -- ' ---- 583 | 0x00000000, // ' ' 584 | 0x00000000, // ' ' 585 | 0x00000000, // ' ' ---- 586 | 0x00000000, // ' ' 587 | 0x00000000, // ' ' 588 | 0x00000000, // ' ' 589 | 0x00000000, // ' ' 590 | //-------------// -------------- [31] 591 | 0x55555500, // ' ' 592 | 0x40000100, // ' ' 593 | 0x40000100, // ' ' 594 | 0x40000100, // ' ' 595 | 0x40000100, // ' ' 596 | 0x40000100, // ' ' 597 | 0x40000100, // ' ' 598 | 0x40000100, // ' ' 599 | 0x40000100, // ' ' 600 | 0x40000100, // ' ' 601 | 0x40000100, // ' ' 602 | 0x40000100, // ' ' 603 | 0x40000100, // ' ' 604 | 0x40000100, // ' ' 605 | 0x40000100, // ' ' 606 | 0x40000100, // ' ' 607 | 0x40000100, // ' ' 608 | 0x55555500, // ' ' 609 | //-------------// -------------- [32] 610 | -------------------------------------------------------------------------------- /osd/fonts/default-b0.font: -------------------------------------------------------------------------------- 1 | //-------------// -------------- [00] 2 | 0x00000000, // ' ' 3 | 0x00000000, // ' ' 4 | 0x00000000, // ' ' 5 | 0x00000000, // ' ' ---- 6 | 0x00000000, // ' ' 7 | 0x00000000, // ' ' 8 | 0x00000000, // ' ' ---- 9 | 0x00000000, // ' ' 10 | 0x00000000, // ' ' 11 | 0x00000000, // ' ' ---- 12 | 0x00000000, // ' ' 13 | 0x00000000, // ' ' 14 | 0x00000000, // ' ' ---- 15 | 0x00000000, // ' ' 16 | 0x00000000, // ' ' 17 | 0x00000000, // ' ' 18 | 0x00000000, // ' ' 19 | 0x00000000, // ' ' 20 | //-------------// -------------- [01] 21 | 0x00000000, // ' ' 22 | 0x00000000, // ' ' 23 | 0x00000000, // ' ' 24 | 0x00000000, // ' ' ---- 25 | 0x00000000, // ' ' 26 | 0x04400000, // ' -- ' 27 | 0x04C44000, // ' --0- ' ---- 28 | 0x14C4C400, // ' --0-0- ' 29 | 0x35D4C400, // ' --0-0-0- ' 30 | 0x35F5D400, // ' --0-0-0-0- ' ---- 31 | 0x35F5F500, // '-0-0-0-0-0- ' 32 | 0x15555500, // '----------- ' 33 | 0x00000000, // ' ' ---- 34 | 0x00000000, // ' ' 35 | 0x00000000, // ' ' 36 | 0x00000000, // ' ' 37 | 0x00000000, // ' ' 38 | 0x00000000, // ' ' 39 | //-------------// -------------- [02] 40 | 0x00000000, // ' ' 41 | 0x00000000, // ' ' 42 | 0x00000000, // ' ' 43 | 0x00000000, // ' ' ---- 44 | 0x04000000, // ' - ' 45 | 0x0C400000, // ' -0 ' 46 | 0x04C40000, // ' -0- ' ---- 47 | 0x004C4000, // ' -0- ' 48 | 0x0004C400, // ' -0- ' 49 | 0x0004C400, // ' -0- ' ---- 50 | 0x004C4000, // ' -0- ' 51 | 0x04C40000, // ' -0- ' 52 | 0x0C400000, // ' -0 ' ---- 53 | 0x04000000, // ' - ' 54 | 0x00000000, // ' ' 55 | 0x00000000, // ' ' 56 | 0x00000000, // ' ' 57 | 0x00000000, // ' ' 58 | //-------------// -------------- [03] 59 | 0x00000000, // ' ' 60 | 0x00000000, // ' ' 61 | 0x00000000, // ' ' 62 | 0x00000000, // ' ' ---- 63 | 0x00001000, // ' - ' 64 | 0x00013000, // ' 0- ' 65 | 0x00131000, // ' -0- ' ---- 66 | 0x01310000, // ' -0- ' 67 | 0x13100000, // ' -0- ' 68 | 0x13100000, // ' -0- ' ---- 69 | 0x01310000, // ' -0- ' 70 | 0x00131000, // ' -0- ' 71 | 0x00013000, // ' 0- ' ---- 72 | 0x00001000, // ' - ' 73 | 0x00000000, // ' ' 74 | 0x00000000, // ' ' 75 | 0x00000000, // ' ' 76 | 0x00000000, // ' ' 77 | //-------------// -------------- [04] 78 | 0x00000000, // ' ' 79 | 0x00000000, // ' ' 80 | 0x10004400, // ' --- ' 81 | 0x3100CC00, // ' -000 ' ---- 82 | 0x13100400, // ' -0-- ' 83 | 0x01300000, // ' 0- ' 84 | 0x00000000, // ' ' ---- 85 | 0x10000400, // ' -- ' 86 | 0x30000C00, // ' 00 ' 87 | 0x10000400, // ' -- ' ---- 88 | 0x00000000, // ' ' 89 | 0x000C4000, // ' -0 ' 90 | 0x1004C400, // ' --0- ' ---- 91 | 0x33004C00, // ' 000- ' 92 | 0x11000400, // ' --- ' 93 | 0x00000000, // ' ' 94 | 0x00000000, // ' ' 95 | 0x00000000, // ' ' 96 | //-------------// -------------- [05] 97 | 0x00000000, // ' ' 98 | 0x00000000, // ' ' 99 | 0x00000000, // ' ' 100 | 0x00000000, // ' ' ---- 101 | 0x00000000, // ' ' 102 | 0x00000000, // ' ' 103 | 0x00000000, // ' ' ---- 104 | 0x00000000, // ' ' 105 | 0x00000000, // ' ' 106 | 0x31004C00, // ' -00- ' ---- 107 | 0x3314CC00, // ' -0000- ' 108 | 0x337DCC00, // ' -000000- ' 109 | 0x00000000, // ' ' ---- 110 | 0x00000000, // ' ' 111 | 0x00000000, // ' ' 112 | 0x00000000, // ' ' 113 | 0x00000000, // ' ' 114 | 0x00000000, // ' ' 115 | //-------------// -------------- [06] 116 | 0x00000000, // ' ' 117 | 0x00000000, // ' ' 118 | 0x00000000, // ' ' 119 | 0x00000000, // ' ' ---- 120 | 0x00000000, // ' ' 121 | 0x00000000, // ' ' 122 | 0x00000000, // ' ' ---- 123 | 0x00000000, // ' ' 124 | 0x10010000, // ' - - ' 125 | 0x31131400, // ' -0--0- ' ---- 126 | 0x31131400, // ' -0--0- ' 127 | 0x13131000, // ' -0-0- ' 128 | 0x13131000, // ' -0-0- ' ---- 129 | 0x01310000, // ' -0- ' 130 | 0x00100000, // ' - ' 131 | 0x00000000, // ' ' 132 | 0x00000000, // ' ' 133 | 0x00000000, // ' ' 134 | //-------------// -------------- [07] 135 | 0x00000000, // ' ' 136 | 0x00000000, // ' ' 137 | 0x01550000, // ' --- -- ' 138 | 0x17DF5000, // ' -0-0- -00- ' ---- 139 | 0x7D75F500, // '-0-0-0-0--0-' 140 | 0x7DFDF500, // '-0-0-0-0000-' 141 | 0x7D55F500, // '-0---0-0--0-' ---- 142 | 0x14005000, // ' - - - - ' 143 | 0x00000000, // ' ' 144 | 0x01000000, // ' - ' ---- 145 | 0x13100000, // ' -0- ' 146 | 0x13100400, // ' -0-- ' 147 | 0x13104C00, // ' -0-0- ' ---- 148 | 0x3314C400, // ' -00-0- ' 149 | 0x1314C400, // ' -0--0- ' 150 | 0x1314C400, // ' -0--0- ' 151 | 0x01004000, // ' - - ' 152 | 0x00000000, // ' ' 153 | //-------------// -------------- [08] 154 | 0x00000000, // ' ' 155 | 0x00000000, // ' ' 156 | 0x00000000, // ' ' 157 | 0x00CCCC00, // ' 0000 ' ---- 158 | 0x00000000, // ' ' 159 | 0x00000000, // ' ' 160 | 0x00000000, // ' ' ---- 161 | 0x00000000, // ' ' 162 | 0x11444400, // ' ------ ' 163 | 0x33CCCC00, // ' 000000 ' ---- 164 | 0x11444400, // ' ------ ' 165 | 0x00000000, // ' ' 166 | 0x00000000, // ' ' ---- 167 | 0x00000000, // ' ' 168 | 0x00000000, // ' ' 169 | 0x00CCCC00, // ' 0000 ' 170 | 0x00000000, // ' ' 171 | 0x00000000, // ' ' 172 | //-------------// -------------- [09] 173 | 0x00000000, // ' ' 174 | 0x00000000, // ' ' 175 | 0x00000000, // ' ' 176 | 0x33330000, // ' 0000 ' ---- 177 | 0x00110000, // ' -- ' 178 | 0x01310000, // ' -0- ' 179 | 0x13310000, // ' -00- ' ---- 180 | 0x33310400, // ' -000- ' 181 | 0x33314C00, // ' -0000- ' 182 | 0x3335CC00, // ' -00000- ' ---- 183 | 0x33314C00, // ' -0000- ' 184 | 0x33310400, // ' -000- ' 185 | 0x13310000, // ' -00- ' ---- 186 | 0x01310000, // ' -0- ' 187 | 0x00110000, // ' -- ' 188 | 0x33330000, // ' 0000 ' 189 | 0x00000000, // ' ' 190 | 0x00000000, // ' ' 191 | //-------------// -------------- [10] 192 | 0x00000000, // ' ' 193 | 0x00000000, // ' ' 194 | 0x00000000, // ' ' 195 | 0x00CCCC00, // ' 0000 ' ---- 196 | 0x00440000, // ' -- ' 197 | 0x004C4000, // ' -0- ' 198 | 0x004CC400, // ' -00- ' ---- 199 | 0x104CCC00, // ' -000- ' 200 | 0x314CCC00, // ' -0000- ' 201 | 0x335CCC00, // ' -00000- ' ---- 202 | 0x314CCC00, // ' -0000- ' 203 | 0x104CCC00, // ' -000- ' 204 | 0x004CC400, // ' -00- ' ---- 205 | 0x004C4000, // ' -0- ' 206 | 0x00440000, // ' -- ' 207 | 0x00CCCC00, // ' 0000 ' 208 | 0x00000000, // ' ' 209 | 0x00000000, // ' ' 210 | //-------------// -------------- [11] 211 | 0x00000000, // ' ' 212 | 0x10000400, // ' -- ' 213 | 0x31004C00, // ' -00- ' 214 | 0x10000400, // ' -- ' ---- 215 | 0x00000000, // ' ' 216 | 0x00000000, // ' ' 217 | 0x00000000, // ' ' ---- 218 | 0x10000400, // ' -- ' 219 | 0x31004C00, // ' -00- ' 220 | 0x10000400, // ' -- ' ---- 221 | 0x00000000, // ' ' 222 | 0x00000000, // ' ' 223 | 0x00000000, // ' ' ---- 224 | 0x10000400, // ' -- ' 225 | 0x31004C00, // ' -00- ' 226 | 0x10000400, // ' -- ' 227 | 0x00000000, // ' ' 228 | 0x00000000, // ' ' 229 | //-------------// -------------- [12] 230 | 0x00000000, // ' ' 231 | 0x00000000, // ' ' 232 | 0x00000000, // ' ' 233 | 0x00000000, // ' ' ---- 234 | 0x00000000, // ' ' 235 | 0x00000000, // ' ' 236 | 0x00000000, // ' ' ---- 237 | 0x10100000, // ' - - ' 238 | 0x31310400, // ' -0-0- ' 239 | 0x13135C00, // ' -0-0-0- ' ---- 240 | 0x13135C00, // ' -0-0-0- ' 241 | 0x11135C00, // ' -0---0- ' 242 | 0x10135C00, // ' -0- -0- ' ---- 243 | 0x00010400, // ' - - ' 244 | 0x00000000, // ' ' 245 | 0x00000000, // ' ' 246 | 0x00000000, // ' ' 247 | 0x00000000, // ' ' 248 | //-------------// -------------- [13] 249 | 0x00000000, // ' ' 250 | 0x00000000, // ' ' 251 | 0x00111000, // ' --- ' 252 | 0x01333100, // '-000- ' ---- 253 | 0x01313100, // '-0-0- ' 254 | 0x01377100, // '-000- -- ' 255 | 0x005DD400, // ' --- -00- ' ---- 256 | 0x14C44C00, // ' -0--0- ' 257 | 0x10404C00, // ' -0- - ' 258 | 0x11044C00, // ' --0-- ' ---- 259 | 0x335CCC00, // ' -00000- ' 260 | 0x11044C00, // ' --0-- ' 261 | 0x10004C00, // ' -0- ' ---- 262 | 0x10004C00, // ' -0- ' 263 | 0x00000400, // ' - ' 264 | 0x00000000, // ' ' 265 | 0x00000000, // ' ' 266 | 0x00000000, // ' ' 267 | //-------------// -------------- [14] 268 | 0x00000000, // ' ' 269 | 0x00000000, // ' ' 270 | 0x00111000, // ' --- ' 271 | 0x01333100, // '-000- ' ---- 272 | 0x01313100, // '-0-0- ' 273 | 0x01333100, // '-000- ' 274 | 0x00155400, // ' --- --- ' ---- 275 | 0x104CCC00, // ' -000- ' 276 | 0x35C44400, // ' -0---0- ' 277 | 0x31400400, // ' -0- - ' ---- 278 | 0x31000400, // ' -0- ' 279 | 0x31400400, // ' -0- - ' 280 | 0x35C44400, // ' -0---0- ' ---- 281 | 0x104CCC00, // ' -000- ' 282 | 0x00044400, // ' --- ' 283 | 0x00000000, // ' ' 284 | 0x00000000, // ' ' 285 | 0x00000000, // ' ' 286 | //-------------// -------------- [15] 287 | 0x00000000, // ' ' 288 | 0x00000000, // ' ' 289 | 0x00000000, // ' ' 290 | 0x00000000, // ' ' ---- 291 | 0x00000000, // ' ' 292 | 0x00000000, // ' ' 293 | 0x00111000, // ' --- ' ---- 294 | 0x01733100, // '-000- - ' 295 | 0x57D55300, // '0---0- --0--' 296 | 0xCDDDD300, // '0---- 00000' ---- 297 | 0x44D77300, // '000- --0--' 298 | 0x04C41300, // '0- -0- ' 299 | 0x04C41300, // '0- -0- ' ---- 300 | 0x00400100, // '- - ' 301 | 0x00000000, // ' ' 302 | 0x00000000, // ' ' 303 | 0x00000000, // ' ' 304 | 0x00000000, // ' ' 305 | //-------------// -------------- [16] 306 | 0x11004400, // ' ---- ' 307 | 0x00000000, // ' ' 308 | 0x00000000, // ' ' 309 | 0x00000000, // ' ' ---- 310 | 0x00000000, // ' ' 311 | 0x00000000, // ' ' 312 | 0x00000000, // ' ' ---- 313 | 0x10000400, // ' -- ' 314 | 0x31004C00, // ' -00- ' 315 | 0x10000400, // ' -- ' ---- 316 | 0x00000000, // ' ' 317 | 0x00000000, // ' ' 318 | 0x00000000, // ' ' ---- 319 | 0x00000000, // ' ' 320 | 0x00000000, // ' ' 321 | 0x00000000, // ' ' 322 | 0x11004400, // ' ---- ' 323 | 0x3314CC00, // ' -0000- ' 324 | //-------------// -------------- [17] 325 | 0x00000000, // ' ' 326 | 0x00000000, // ' ' 327 | 0x11004400, // ' ---- ' 328 | 0x3314CC00, // ' -0000- ' ---- 329 | 0x11004400, // ' ---- ' 330 | 0x00000000, // ' ' 331 | 0x00000000, // ' ' ---- 332 | 0x00000000, // ' ' 333 | 0x00000000, // ' ' 334 | 0x00000000, // ' ' ---- 335 | 0x10000400, // ' -- ' 336 | 0x31004C00, // ' -00- ' 337 | 0x10000400, // ' -- ' ---- 338 | 0x00000000, // ' ' 339 | 0x00000000, // ' ' 340 | 0x00000000, // ' ' 341 | 0x00000000, // ' ' 342 | 0x00000000, // ' ' 343 | //-------------// -------------- [18] 344 | 0x00000000, // ' ' 345 | 0x00000000, // ' ' 346 | 0x00000000, // ' ' 347 | 0x00000000, // ' ' 348 | 0x00000000, // ' ' ---- 349 | 0x11004400, // ' ---- ' 350 | 0x3314CC00, // ' -0000- ' 351 | 0x11004400, // ' ---- ' ---- 352 | 0x00000000, // ' ' 353 | 0x00000000, // ' ' 354 | 0x00000000, // ' ' ---- 355 | 0x00000000, // ' ' 356 | 0x00000000, // ' ' 357 | 0x10000400, // ' -- ' ---- 358 | 0x31004C00, // ' -00- ' 359 | 0x10000400, // ' -- ' 360 | 0x00000000, // ' ' 361 | 0x00000000, // ' ' 362 | //-------------// -------------- [19] 363 | 0x10000400, // ' -- ' 364 | 0x00000000, // ' ' 365 | 0x00000000, // ' ' 366 | 0x00000000, // ' ' ---- 367 | 0x00000000, // ' ' 368 | 0x00000000, // ' ' 369 | 0x00000000, // ' ' ---- 370 | 0x11004400, // ' ---- ' 371 | 0x3314CC00, // ' -0000- ' 372 | 0x11004400, // ' ---- ' ---- 373 | 0x00000000, // ' ' 374 | 0x00000000, // ' ' 375 | 0x00000000, // ' ' ---- 376 | 0x00000000, // ' ' 377 | 0x00000000, // ' ' 378 | 0x00000000, // ' ' 379 | 0x10000400, // ' -- ' 380 | 0x31004C00, // ' -00- ' 381 | //-------------// -------------- [20] 382 | 0x00000000, // ' ' 383 | 0x11100400, // ' ---- ' 384 | 0x33314C00, // ' -0000- ' 385 | 0x1135C400, // ' -0---0- ' 386 | 0x33314C00, // ' -0000- ' ---- 387 | 0x1135C400, // ' -0---0- ' 388 | 0x11004000, // ' -- - ' 389 | 0x33104C00, // ' -000- ' ---- 390 | 0x1135C400, // ' -0---0- ' 391 | 0x1135C400, // ' -0---0- ' 392 | 0x33104C00, // ' -000- ' ---- 393 | 0x11100400, // ' ---- ' 394 | 0x01310000, // ' -0- ' 395 | 0x01310000, // ' -0- ' ---- 396 | 0x11314400, // ' -0---- ' 397 | 0x3335CC00, // ' -00000- ' 398 | 0x11104400, // ' ----- ' 399 | 0x00000000, // ' ' 400 | //-------------// -------------- [21] 401 | 0x00000000, // ' ' 402 | 0x11100400, // ' ---- ' 403 | 0x33314C00, // ' -0000- ' 404 | 0x1135C400, // ' -0---0- ' 405 | 0x33314C00, // ' -0000- ' ---- 406 | 0x11310400, // ' -0--- ' 407 | 0x11000000, // ' -- ' 408 | 0x31000400, // ' -0- ' ---- 409 | 0x31000400, // ' -0- ' 410 | 0x31000400, // ' -0- ' 411 | 0x31000400, // ' -0- ' ---- 412 | 0x11104400, // ' ----- ' 413 | 0x3335CC00, // ' -00000- ' 414 | 0x31104400, // ' --0-- ' ---- 415 | 0x31000400, // ' -0- ' 416 | 0x31000400, // ' -0- ' 417 | 0x10000000, // ' - ' 418 | 0x00000000, // ' ' 419 | //-------------// -------------- [22] 420 | 0x00000000, // ' ' 421 | 0x00000000, // ' ' 422 | 0x00000000, // ' ' 423 | 0x00000000, // ' ' ---- 424 | 0x00133300, // '000- ' 425 | 0x00011300, // '0-- ' 426 | 0x15141300, // '0- --- - - ' ---- 427 | 0x7F7D4500, // '- -000--0-0-' 428 | 0x5DFD4000, // ' -0-- -000-' 429 | 0x5DFD4000, // ' -0-- -000-' ---- 430 | 0x7D7D4400, // ' -0-0--0-0-' 431 | 0x7F7D4500, // '- -000--0-0-' 432 | 0x15141300, // '0- --- - - ' ---- 433 | 0x00011300, // '0-- ' 434 | 0x00133300, // '000- ' 435 | 0x00000000, // ' ' 436 | 0x00000000, // ' ' 437 | 0x00000000, // ' ' 438 | //-------------// -------------- [23] 439 | 0x00000000, // ' ' 440 | 0x00000000, // ' ' 441 | 0x00000000, // ' ' 442 | 0x00000000, // ' ' ---- 443 | 0xCCC40000, // ' -000' 444 | 0xC4400000, // ' --0' 445 | 0xC4011400, // ' -- - -0' ---- 446 | 0x50137D00, // '-00- -0- -' 447 | 0x11317D00, // '-0-0--0- ' 448 | 0x10137D00, // '-00- -0- ' ---- 449 | 0x11357D00, // '-0-0--0-- ' 450 | 0x505FFD00, // '-00- -000- -' 451 | 0xC4055400, // ' -- --- -0' ---- 452 | 0xC4400000, // ' --0' 453 | 0xCCC40000, // ' -000' 454 | 0x00000000, // ' ' 455 | 0x00000000, // ' ' 456 | 0x00000000, // ' ' 457 | //-------------// -------------- [24] 458 | 0x00000000, // ' ' 459 | 0xF0005F00, // '0- 00- 0' 460 | 0xF0005F00, // '0- 00- 0' 461 | 0x70005D00, // '-- 00- -' ---- 462 | 0x30004C00, // ' 00- ' 463 | 0x10004400, // ' --- ' 464 | 0x00000000, // ' ' ---- 465 | 0x00140000, // ' - - ' 466 | 0x017D4000, // ' -0- -0- ' 467 | 0x137D4000, // ' -00- -0- ' ---- 468 | 0x337D4400, // ' -000--0- ' 469 | 0x317D4C00, // ' -0-00-0- ' 470 | 0x117DCC00, // ' -0--000- ' ---- 471 | 0x017DC400, // ' -0- -00- ' 472 | 0x017D4000, // ' -0- -0- ' 473 | 0x00140000, // ' - - ' 474 | 0x00000000, // ' ' 475 | 0x00000000, // ' ' 476 | //-------------// -------------- [25] 477 | 0x00000000, // ' ' 478 | 0xF0005F00, // '0- 00- 0' 479 | 0xF0005F00, // '0- 00- 0' 480 | 0x70005D00, // '-- 00- -' ---- 481 | 0x30004C00, // ' 00- ' 482 | 0x10004400, // ' --- ' 483 | 0x00000000, // ' ' ---- 484 | 0x11144400, // ' ------ ' 485 | 0x337DCC00, // ' -000000- ' 486 | 0x017D0000, // ' -0- 0- ' ---- 487 | 0x11354400, // ' -0----- ' 488 | 0x337DCC00, // ' -000000- ' 489 | 0x115C4400, // ' -----0- ' ---- 490 | 0x007D4000, // ' -0 -0- ' 491 | 0x337DCC00, // ' -000000- ' 492 | 0x11144400, // ' ------ ' 493 | 0x00000000, // ' ' 494 | 0x00000000, // ' ' 495 | //-------------// -------------- [26] 496 | 0x00000000, // ' ' 497 | 0xF0005F00, // '0- 00- 0' 498 | 0xF0005F00, // '0- 00- 0' 499 | 0x70005D00, // '-- 00- -' ---- 500 | 0x30004C00, // ' 00- ' 501 | 0x10004400, // ' --- ' 502 | 0x00000000, // ' ' ---- 503 | 0x11144400, // ' ------ ' 504 | 0x337DCC00, // ' -000000- ' 505 | 0x01310000, // ' -0- ' ---- 506 | 0x11314400, // ' -0---- ' 507 | 0x3335CC00, // ' -00000- ' 508 | 0x11314400, // ' -0---- ' ---- 509 | 0x01310000, // ' -0- ' 510 | 0x337DCC00, // ' -000000- ' 511 | 0x11144400, // ' ------ ' 512 | 0x00000000, // ' ' 513 | 0x00000000, // ' ' 514 | //-------------// -------------- [27] 515 | 0x00000000, // ' ' 516 | 0xF0005F00, // '0- 00- 0' 517 | 0xF0005F00, // '0- 00- 0' 518 | 0x70005D00, // '-- 00- -' ---- 519 | 0x30004C00, // ' 00- ' 520 | 0x10004400, // ' --- ' 521 | 0x00000000, // ' ' ---- 522 | 0x00140000, // ' - - ' 523 | 0x017D4000, // ' -0- -0- ' 524 | 0x017D4000, // ' -0- -0- ' ---- 525 | 0x117D4400, // ' -0----0- ' 526 | 0x317D4C00, // ' -0-00-0- ' 527 | 0x3314CC00, // ' -0000- ' ---- 528 | 0x1314C400, // ' -0--0- ' 529 | 0x1314C400, // ' -0--0- ' 530 | 0x01004000, // ' - - ' 531 | 0x00000000, // ' ' 532 | 0x00000000, // ' ' 533 | //-------------// -------------- [28] 534 | 0x00000000, // ' ' 535 | 0xF0005F00, // '0- 00- 0' 536 | 0xF0005F00, // '0- 00- 0' 537 | 0x70005D00, // '-- 00- -' ---- 538 | 0x30004C00, // ' 00- ' 539 | 0x30004C00, // ' 00- ' 540 | 0x30004C00, // ' 00- ' ---- 541 | 0x10004400, // ' --- ' 542 | 0x00000000, // ' ' 543 | 0x00000000, // ' ' ---- 544 | 0x00000000, // ' ' 545 | 0x00000000, // ' ' 546 | 0x00000000, // ' ' ---- 547 | 0x00000000, // ' ' 548 | 0x00000000, // ' ' 549 | 0x00000000, // ' ' 550 | 0x00000000, // ' ' 551 | 0x00000000, // ' ' 552 | //-------------// -------------- [29] 553 | 0x00000000, // ' ' 554 | 0xF0005F00, // '0- 00- 0' 555 | 0xF0005F00, // '0- 00- 0' 556 | 0x70005D00, // '-- 00- -' ---- 557 | 0x30004C00, // ' 00- ' 558 | 0x10004400, // ' --- ' 559 | 0x00000000, // ' ' ---- 560 | 0x00000000, // ' ' 561 | 0x00000000, // ' ' 562 | 0x00000000, // ' ' ---- 563 | 0x00000000, // ' ' 564 | 0x00000000, // ' ' 565 | 0x00000000, // ' ' ---- 566 | 0x00000000, // ' ' 567 | 0x00000000, // ' ' 568 | 0x00000000, // ' ' 569 | 0x00000000, // ' ' 570 | 0x00000000, // ' ' 571 | //-------------// -------------- [30] 572 | 0x00000000, // ' ' 573 | 0x00001000, // ' - ' 574 | 0x00013100, // '-0- ' 575 | 0x00133300, // '000- ' ---- 576 | 0x01333300, // '0000- ' 577 | 0x01333700, // '0000- - ' 578 | 0x31333700, // '0000-0- ' ---- 579 | 0x33035D00, // '--0 000- ' 580 | 0x33104C00, // ' -000- ' 581 | 0x3374D000, // ' - 000 0-- ' ---- 582 | 0x17FCFC00, // ' 0 00-0000- ' 583 | 0x4CCDF500, // '-0- -0000-' 584 | 0xCDFFD500, // '--00- -00000' ---- 585 | 0x4CCD5300, // '0-- -000-' 586 | 0x04D73100, // '-00- -0- ' 587 | 0x00411000, // ' -- - ' 588 | 0x00000000, // ' ' 589 | 0x00000000, // ' ' 590 | //-------------// -------------- [31] 591 | 0x00000000, // ' ' 592 | 0x00001000, // ' - ' 593 | 0x00013100, // '-0- ' 594 | 0x00133300, // '000- ' ---- 595 | 0x01333300, // '0000- ' 596 | 0x01333700, // '0000- - ' 597 | 0x31333700, // '0000-0- ' ---- 598 | 0x33035D00, // '--0 000- ' 599 | 0x33104C00, // ' -000- ' 600 | 0x3374D000, // ' - 000 0-- ' ---- 601 | 0x17FCFC00, // ' 0 00-0000- ' 602 | 0x4CCDF500, // '-0- -0000-' 603 | 0xCDFFD500, // '--00- -00000' ---- 604 | 0x4CCD5300, // '0-- -000-' 605 | 0x04D73100, // '-00- -0- ' 606 | 0x00411000, // ' -- - ' 607 | 0x00000000, // ' ' 608 | 0x00000000, // ' ' 609 | //-------------// -------------- [32] 610 | -------------------------------------------------------------------------------- /osd/fonts/default-b1.font: -------------------------------------------------------------------------------- 1 | //-------------// -------------- [00] 2 | 0x00000000, // ' ' 3 | 0x00000000, // ' ' 4 | 0x00000000, // ' ' 5 | 0x00000000, // ' ' ---- 6 | 0x00000000, // ' ' 7 | 0x00000000, // ' ' 8 | 0x00000000, // ' ' ---- 9 | 0x00000000, // ' ' 10 | 0x00000000, // ' ' 11 | 0x00000000, // ' ' ---- 12 | 0x00000000, // ' ' 13 | 0x00000000, // ' ' 14 | 0x00000000, // ' ' ---- 15 | 0x00000000, // ' ' 16 | 0x00000000, // ' ' 17 | 0x00000000, // ' ' 18 | 0x00000000, // ' ' 19 | 0x00000000, // ' ' 20 | //-------------// -------------- [01] 21 | 0x00000000, // ' ' 22 | 0x00000000, // ' ' 23 | 0x00000000, // ' ' 24 | 0x00000000, // ' ' ---- 25 | 0x00000000, // ' ' 26 | 0x00000000, // ' ' 27 | 0x01154500, // '- --- --- ' ---- 28 | 0x137FDF00, // '0-000-000- ' 29 | 0x135F5F00, // '0-0-0-0-0- ' 30 | 0x135F5F00, // '0-0-0-0-0- ' ---- 31 | 0x135F5F00, // '0-0-0-0-0- ' 32 | 0x137FDF00, // '0-000-000- ' 33 | 0x01154500, // '- --- --- ' ---- 34 | 0x00000000, // ' ' 35 | 0x00000000, // ' ' 36 | 0x00000000, // ' ' 37 | 0x00000000, // ' ' 38 | 0x00000000, // ' ' 39 | //-------------// -------------- [02] 40 | 0x00000000, // ' ' 41 | 0x00000000, // ' ' 42 | 0x00000000, // ' ' 43 | 0x00000000, // ' ' ---- 44 | 0x00000000, // ' ' 45 | 0x00000000, // ' ' 46 | 0x15451500, // '--- --- --- ' ---- 47 | 0x7FDF7F00, // '000-000-000-' 48 | 0x5F5D5F00, // '0---0-0-0-0-' 49 | 0x5F5F7F00, // '000-0-0-0-0-' ---- 50 | 0x5F5F5D00, // '--0-0-0-0-0-' 51 | 0x7FDF7F00, // '000-000-000-' 52 | 0x15451500, // '--- --- --- ' ---- 53 | 0x00000000, // ' ' 54 | 0x00000000, // ' ' 55 | 0x00000000, // ' ' 56 | 0x00000000, // ' ' 57 | 0x00000000, // ' ' 58 | //-------------// -------------- [03] 59 | 0x00000000, // ' ' 60 | 0x00000000, // ' ' 61 | 0x00000000, // ' ' 62 | 0x00000000, // ' ' ---- 63 | 0x00000000, // ' ' 64 | 0x00000000, // ' ' 65 | 0x04551100, // '---- --- ' ---- 66 | 0x4DDF7700, // '000-- --000-' 67 | 0x175F5D00, // '--0-0-0-0-- ' 68 | 0x7FDF7700, // '000-00--000-' ---- 69 | 0x7F551700, // '0---00- --0-' 70 | 0x5FDF7F00, // '000-0-0-000-' 71 | 0x05451500, // '--- - - --- ' ---- 72 | 0x00000000, // ' ' 73 | 0x00000000, // ' ' 74 | 0x00000000, // ' ' 75 | 0x00000000, // ' ' 76 | 0x00000000, // ' ' 77 | //-------------// -------------- [04] 78 | 0x00000000, // ' ' 79 | 0x00000000, // ' ' 80 | 0x00000000, // ' ' 81 | 0x00000000, // ' ' ---- 82 | 0x00000000, // ' ' 83 | 0x00000000, // ' ' 84 | 0x14050100, // '- - - - - ' ---- 85 | 0x7D5F5700, // '0-0--0--0-0-' 86 | 0x5F5F7F00, // '000-0-0-0-0-' 87 | 0x37D75F00, // '0-0-000--0- ' ---- 88 | 0x5F5F5F00, // '0-0-0-0-0-0-' 89 | 0x5F5F5F00, // '0-0-0-0-0-0-' 90 | 0x05050500, // '- - - - - - ' ---- 91 | 0x00000000, // ' ' 92 | 0x00000000, // ' ' 93 | 0x00000000, // ' ' 94 | 0x00000000, // ' ' 95 | 0x00000000, // ' ' 96 | //-------------// -------------- [05] 97 | 0x00000000, // ' ' 98 | 0x00000000, // ' ' 99 | 0x00000000, // ' ' 100 | 0x00000000, // ' ' ---- 101 | 0x00000000, // ' ' 102 | 0x00000000, // ' ' 103 | 0x01040000, // ' - - ' ---- 104 | 0x135C4000, // ' -0- -0- ' 105 | 0x0104C400, // ' - -0- ' 106 | 0x10004C00, // ' -0- ' ---- 107 | 0x31040400, // ' -0- - ' 108 | 0x135C4000, // ' -0- -0- ' 109 | 0x01040000, // ' - - ' ---- 110 | 0x00000000, // ' ' 111 | 0x00000000, // ' ' 112 | 0x00000000, // ' ' 113 | 0x00000000, // ' ' 114 | 0x00000000, // ' ' 115 | //-------------// -------------- [06] 116 | 0x00000000, // ' ' 117 | 0x00000000, // ' ' 118 | 0x00000000, // ' ' 119 | 0x00000000, // ' ' ---- 120 | 0x00000000, // ' ' 121 | 0x00000000, // ' ' 122 | 0x00000000, // ' ' ---- 123 | 0x00000000, // ' ' 124 | 0x40C40000, // ' -0 -' 125 | 0x40C40000, // ' -0 -' ---- 126 | 0x00000000, // ' ' 127 | 0x00000000, // ' ' 128 | 0x00000000, // ' ' ---- 129 | 0x00000000, // ' ' 130 | 0x00000000, // ' ' 131 | 0x00000000, // ' ' 132 | 0x00000000, // ' ' 133 | 0x00000000, // ' ' 134 | //-------------// -------------- [07] 135 | 0x00000000, // ' ' 136 | 0x00000000, // ' ' 137 | 0x00000000, // ' ' 138 | 0x00000000, // ' ' ---- 139 | 0x00000000, // ' ' 140 | 0x00000000, // ' ' 141 | 0x00000000, // ' ' ---- 142 | 0x00000000, // ' ' 143 | 0x00130100, // '- 0- ' 144 | 0x00130100, // '- 0- ' ---- 145 | 0x00000000, // ' ' 146 | 0x00000000, // ' ' 147 | 0x00000000, // ' ' ---- 148 | 0x00000000, // ' ' 149 | 0x00000000, // ' ' 150 | 0x00000000, // ' ' 151 | 0x00000000, // ' ' 152 | 0x00000000, // ' ' 153 | //-------------// -------------- [08] 154 | 0x00000000, // ' ' 155 | 0x00000000, // ' ' 156 | 0x04400000, // ' -- ' 157 | 0x4CC40000, // ' -00-' ---- 158 | 0x04CC4000, // ' -00- ' 159 | 0x004CC400, // ' -00- ' 160 | 0x1004CC00, // ' -00- ' ---- 161 | 0x1004CC00, // ' -00- ' 162 | 0x1004CC00, // ' -00- ' 163 | 0x1004CC00, // ' -00- ' ---- 164 | 0x1004CC00, // ' -00- ' 165 | 0x1004CC00, // ' -00- ' 166 | 0x1004CC00, // ' -00- ' ---- 167 | 0x004CC400, // ' -00- ' 168 | 0x04CC4000, // ' -00- ' 169 | 0x4CC40000, // ' -00-' 170 | 0x04400000, // ' -- ' 171 | 0x00000000, // ' ' 172 | //-------------// -------------- [09] 173 | 0x00000000, // ' ' 174 | 0x00000000, // ' ' 175 | 0x00110000, // ' -- ' 176 | 0x01331000, // ' -00- ' ---- 177 | 0x13310000, // ' -00- ' 178 | 0x33100400, // ' -00- ' 179 | 0x31004C00, // ' -00- ' ---- 180 | 0x31004C00, // ' -00- ' 181 | 0x31004C00, // ' -00- ' 182 | 0x31004C00, // ' -00- ' ---- 183 | 0x31004C00, // ' -00- ' 184 | 0x31004C00, // ' -00- ' 185 | 0x31004C00, // ' -00- ' ---- 186 | 0x33100400, // ' -00- ' 187 | 0x13310000, // ' -00- ' 188 | 0x01331000, // ' -00- ' 189 | 0x00110000, // ' -- ' 190 | 0x00000000, // ' ' 191 | //-------------// -------------- [10] 192 | 0x00000000, // ' ' 193 | 0x00000000, // ' ' 194 | 0x00000000, // ' ' 195 | 0x00000000, // ' ' ---- 196 | 0x00000000, // ' ' 197 | 0x01FF4000, // ' 00- -00 ' 198 | 0x137DC400, // ' -00--00- ' ---- 199 | 0x3355CC00, // ' --0000-- ' 200 | 0x33FFCC00, // ' 00000000 ' 201 | 0x3355CC00, // ' --0000-- ' ---- 202 | 0x137DC400, // ' -00--00- ' 203 | 0x01FF4000, // ' 00- -00 ' 204 | 0x00000000, // ' ' ---- 205 | 0x00000000, // ' ' 206 | 0x00000000, // ' ' 207 | 0x00000000, // ' ' 208 | 0x00000000, // ' ' 209 | 0x00000000, // ' ' 210 | //-------------// -------------- [11] 211 | 0x00000000, // ' ' 212 | 0x00000000, // ' ' 213 | 0x00000000, // ' ' 214 | 0x00000000, // ' ' ---- 215 | 0x00000000, // ' ' 216 | 0x00000000, // ' ' 217 | 0x31000400, // ' -0- ' ---- 218 | 0x31104400, // ' --0-- ' 219 | 0x3330CC00, // ' 00000 ' 220 | 0x31104400, // ' --0-- ' ---- 221 | 0x31000400, // ' -0- ' 222 | 0x00000000, // ' ' 223 | 0x00000000, // ' ' ---- 224 | 0x00000000, // ' ' 225 | 0x00000000, // ' ' 226 | 0x00000000, // ' ' 227 | 0x00000000, // ' ' 228 | 0x00000000, // ' ' 229 | //-------------// -------------- [12] 230 | 0x00000000, // ' ' 231 | 0x00000000, // ' ' 232 | 0x00000000, // ' ' 233 | 0x00000000, // ' ' ---- 234 | 0x00000000, // ' ' 235 | 0x00000000, // ' ' 236 | 0x00000000, // ' ' ---- 237 | 0x00000000, // ' ' 238 | 0x00000000, // ' ' 239 | 0x00000000, // ' ' ---- 240 | 0x00000000, // ' ' 241 | 0x10000400, // ' -- ' 242 | 0x31004C00, // ' -00- ' ---- 243 | 0x31004C00, // ' -00- ' 244 | 0x33100400, // ' -00- ' 245 | 0x11000000, // ' -- ' 246 | 0x00000000, // ' ' 247 | 0x00000000, // ' ' 248 | //-------------// -------------- [13] 249 | 0x00000000, // ' ' 250 | 0x00000000, // ' ' 251 | 0x00000000, // ' ' 252 | 0x00000000, // ' ' ---- 253 | 0x00000000, // ' ' 254 | 0x00000000, // ' ' 255 | 0x00000000, // ' ' ---- 256 | 0x00000000, // ' ' 257 | 0x11144400, // ' ------ ' 258 | 0x337DCC00, // ' -000000- ' ---- 259 | 0x11144400, // ' ------ ' 260 | 0x00000000, // ' ' 261 | 0x00000000, // ' ' ---- 262 | 0x00000000, // ' ' 263 | 0x00000000, // ' ' 264 | 0x00000000, // ' ' 265 | 0x00000000, // ' ' 266 | 0x00000000, // ' ' 267 | //-------------// -------------- [14] 268 | 0x00000000, // ' ' 269 | 0x00000000, // ' ' 270 | 0x00000000, // ' ' 271 | 0x00000000, // ' ' ---- 272 | 0x00000000, // ' ' 273 | 0x00000000, // ' ' 274 | 0x00000000, // ' ' ---- 275 | 0x00000000, // ' ' 276 | 0x00000000, // ' ' 277 | 0x00000000, // ' ' ---- 278 | 0x00000000, // ' ' 279 | 0x10000400, // ' -- ' 280 | 0x31004C00, // ' -00- ' ---- 281 | 0x31004C00, // ' -00- ' 282 | 0x10000400, // ' -- ' 283 | 0x00000000, // ' ' 284 | 0x00000000, // ' ' 285 | 0x00000000, // ' ' 286 | //-------------// -------------- [15] 287 | 0x00000000, // ' ' 288 | 0x00000000, // ' ' 289 | 0x00000000, // ' ' 290 | 0x00000000, // ' ' ---- 291 | 0x00440000, // ' -- ' 292 | 0x04CC4000, // ' -00- ' 293 | 0x04CCC400, // ' -000- ' ---- 294 | 0x104CCC00, // ' -000- ' 295 | 0x3104CC00, // ' -000- ' 296 | 0x33104C00, // ' -000- ' ---- 297 | 0x33310400, // ' -000- ' 298 | 0x13331000, // ' -000- ' 299 | 0x01331000, // ' -00- ' ---- 300 | 0x00110000, // ' -- ' 301 | 0x00000000, // ' ' 302 | 0x00000000, // ' ' 303 | 0x00000000, // ' ' 304 | 0x00000000, // ' ' 305 | //-------------// -------------- [16] 306 | 0x00000000, // ' ' 307 | 0x00000000, // ' ' 308 | 0x00000000, // ' ' 309 | 0x00000000, // ' ' ---- 310 | 0x11004400, // ' ---- ' 311 | 0x3314CC00, // ' -0000- ' 312 | 0x1314C400, // ' -0--0- ' ---- 313 | 0x1314C400, // ' -0--0- ' 314 | 0x1314C400, // ' -0--0- ' 315 | 0x1314C400, // ' -0--0- ' ---- 316 | 0x1314C400, // ' -0--0- ' 317 | 0x1314C400, // ' -0--0- ' 318 | 0x3314CC00, // ' -0000- ' ---- 319 | 0x11004400, // ' ---- ' 320 | 0x00000000, // ' ' 321 | 0x00000000, // ' ' 322 | 0x00000000, // ' ' 323 | 0x00000000, // ' ' 324 | //-------------// -------------- [17] 325 | 0x00000000, // ' ' 326 | 0x00000000, // ' ' 327 | 0x00000000, // ' ' 328 | 0x00000000, // ' ' ---- 329 | 0x10000000, // ' - ' 330 | 0x31000400, // ' -0- ' 331 | 0x33000400, // ' 00- ' ---- 332 | 0x31000400, // ' -0- ' 333 | 0x31000400, // ' -0- ' 334 | 0x31000400, // ' -0- ' ---- 335 | 0x31000400, // ' -0- ' 336 | 0x31000400, // ' -0- ' 337 | 0x31000400, // ' -0- ' ---- 338 | 0x10000000, // ' - ' 339 | 0x00000000, // ' ' 340 | 0x00000000, // ' ' 341 | 0x00000000, // ' ' 342 | 0x00000000, // ' ' 343 | //-------------// -------------- [18] 344 | 0x00000000, // ' ' 345 | 0x00000000, // ' ' 346 | 0x00000000, // ' ' 347 | 0x00000000, // ' ' ---- 348 | 0x11104400, // ' ----- ' 349 | 0x3335CC00, // ' -00000- ' 350 | 0x1135C400, // ' -0---0- ' ---- 351 | 0x0014C400, // ' - -0- ' 352 | 0x1004CC00, // ' -00- ' 353 | 0x31004C00, // ' -00- ' ---- 354 | 0x33100400, // ' -00- ' 355 | 0x13314400, // ' -00--- ' 356 | 0x3335CC00, // ' -00000- ' ---- 357 | 0x11104400, // ' ----- ' 358 | 0x00000000, // ' ' 359 | 0x00000000, // ' ' 360 | 0x00000000, // ' ' 361 | 0x00000000, // ' ' 362 | //-------------// -------------- [19] 363 | 0x00000000, // ' ' 364 | 0x00000000, // ' ' 365 | 0x00000000, // ' ' 366 | 0x00000000, // ' ' ---- 367 | 0x11004400, // ' ---- ' 368 | 0x3314CC00, // ' -0000- ' 369 | 0x1314C400, // ' -0--0- ' ---- 370 | 0x0104C400, // ' - -0- ' 371 | 0x0004CC00, // ' 00- ' 372 | 0x0004C400, // ' -0- ' ---- 373 | 0x0104C400, // ' - -0- ' 374 | 0x1314C400, // ' -0--0- ' 375 | 0x3314CC00, // ' -0000- ' ---- 376 | 0x11004400, // ' ---- ' 377 | 0x00000000, // ' ' 378 | 0x00000000, // ' ' 379 | 0x00000000, // ' ' 380 | 0x00000000, // ' ' 381 | //-------------// -------------- [20] 382 | 0x00000000, // ' ' 383 | 0x00000000, // ' ' 384 | 0x00000000, // ' ' 385 | 0x00000000, // ' ' ---- 386 | 0x10000400, // ' -- ' 387 | 0x31004C00, // ' -00- ' 388 | 0x33104C00, // ' -000- ' ---- 389 | 0x13104C00, // ' -0-0- ' 390 | 0x11314C00, // ' -0--0- ' 391 | 0x11314C00, // ' -0--0- ' ---- 392 | 0x3335CC00, // ' -00000- ' 393 | 0x11104C00, // ' ---0- ' 394 | 0x10004C00, // ' -0- ' ---- 395 | 0x00000400, // ' - ' 396 | 0x00000000, // ' ' 397 | 0x00000000, // ' ' 398 | 0x00000000, // ' ' 399 | 0x00000000, // ' ' 400 | //-------------// -------------- [21] 401 | 0x00000000, // ' ' 402 | 0x00000000, // ' ' 403 | 0x00000000, // ' ' 404 | 0x00000000, // ' ' ---- 405 | 0x11004400, // ' ---- ' 406 | 0x3314CC00, // ' -0000- ' 407 | 0x13104400, // ' -0--- ' ---- 408 | 0x13104400, // ' -0--- ' 409 | 0x3314CC00, // ' -0000- ' 410 | 0x1104C400, // ' ---0- ' ---- 411 | 0x0104C400, // ' - -0- ' 412 | 0x1314C400, // ' -0--0- ' 413 | 0x3314CC00, // ' -0000- ' ---- 414 | 0x11004400, // ' ---- ' 415 | 0x00000000, // ' ' 416 | 0x00000000, // ' ' 417 | 0x00000000, // ' ' 418 | 0x00000000, // ' ' 419 | //-------------// -------------- [22] 420 | 0x00000000, // ' ' 421 | 0x00000000, // ' ' 422 | 0x00000000, // ' ' 423 | 0x00000000, // ' ' ---- 424 | 0x11004400, // ' ---- ' 425 | 0x3314CC00, // ' -0000- ' 426 | 0x1314C400, // ' -0--0- ' ---- 427 | 0x13104400, // ' -0--- ' 428 | 0x3314CC00, // ' -0000- ' 429 | 0x1314C400, // ' -0--0- ' ---- 430 | 0x1314C400, // ' -0--0- ' 431 | 0x1314C400, // ' -0--0- ' 432 | 0x3314CC00, // ' -0000- ' ---- 433 | 0x11004400, // ' ---- ' 434 | 0x00000000, // ' ' 435 | 0x00000000, // ' ' 436 | 0x00000000, // ' ' 437 | 0x00000000, // ' ' 438 | //-------------// -------------- [23] 439 | 0x00000000, // ' ' 440 | 0x00000000, // ' ' 441 | 0x00000000, // ' ' 442 | 0x00000000, // ' ' ---- 443 | 0x11044400, // ' ----- ' 444 | 0x335CCC00, // ' -00000- ' 445 | 0x114C4400, // ' ----0- ' ---- 446 | 0x0004C400, // ' -0- ' 447 | 0x0004C400, // ' -0- ' 448 | 0x10004C00, // ' -0- ' ---- 449 | 0x10004C00, // ' -0- ' 450 | 0x31000400, // ' -0- ' 451 | 0x31000400, // ' -0- ' ---- 452 | 0x10000000, // ' - ' 453 | 0x00000000, // ' ' 454 | 0x00000000, // ' ' 455 | 0x00000000, // ' ' 456 | 0x00000000, // ' ' 457 | //-------------// -------------- [24] 458 | 0x00000000, // ' ' 459 | 0x00000000, // ' ' 460 | 0x00000000, // ' ' 461 | 0x00000000, // ' ' ---- 462 | 0x11004400, // ' ---- ' 463 | 0x3314CC00, // ' -0000- ' 464 | 0x1314C400, // ' -0--0- ' ---- 465 | 0x1314C400, // ' -0--0- ' 466 | 0x3314CC00, // ' -0000- ' 467 | 0x1314C400, // ' -0--0- ' ---- 468 | 0x1314C400, // ' -0--0- ' 469 | 0x1314C400, // ' -0--0- ' 470 | 0x3314CC00, // ' -0000- ' ---- 471 | 0x11004400, // ' ---- ' 472 | 0x00000000, // ' ' 473 | 0x00000000, // ' ' 474 | 0x00000000, // ' ' 475 | 0x00000000, // ' ' 476 | //-------------// -------------- [25] 477 | 0x00000000, // ' ' 478 | 0x00000000, // ' ' 479 | 0x00000000, // ' ' 480 | 0x00000000, // ' ' ---- 481 | 0x11004400, // ' ---- ' 482 | 0x3314CC00, // ' -0000- ' 483 | 0x1314C400, // ' -0--0- ' ---- 484 | 0x1314C400, // ' -0--0- ' 485 | 0x3304CC00, // ' 0000- ' 486 | 0x1104C400, // ' ---0- ' ---- 487 | 0x0104C400, // ' - -0- ' 488 | 0x1314C400, // ' -0--0- ' 489 | 0x3314CC00, // ' -0000- ' ---- 490 | 0x11004400, // ' ---- ' 491 | 0x00000000, // ' ' 492 | 0x00000000, // ' ' 493 | 0x00000000, // ' ' 494 | 0x00000000, // ' ' 495 | //-------------// -------------- [26] 496 | 0x00000000, // ' ' 497 | 0x00000000, // ' ' 498 | 0x00000000, // ' ' 499 | 0x00000000, // ' ' ---- 500 | 0x10000400, // ' -- ' 501 | 0x31004C00, // ' -00- ' 502 | 0x31004C00, // ' -00- ' ---- 503 | 0x10000400, // ' -- ' 504 | 0x00000000, // ' ' 505 | 0x00000000, // ' ' ---- 506 | 0x10000400, // ' -- ' 507 | 0x31004C00, // ' -00- ' 508 | 0x31004C00, // ' -00- ' ---- 509 | 0x10000400, // ' -- ' 510 | 0x00000000, // ' ' 511 | 0x00000000, // ' ' 512 | 0x00000000, // ' ' 513 | 0x00000000, // ' ' 514 | //-------------// -------------- [27] 515 | 0x00000000, // ' ' 516 | 0x00000000, // ' ' 517 | 0x00000000, // ' ' 518 | 0x00000000, // ' ' ---- 519 | 0x10000400, // ' -- ' 520 | 0x31004C00, // ' -00- ' 521 | 0x31004C00, // ' -00- ' ---- 522 | 0x10000400, // ' -- ' 523 | 0x00000000, // ' ' 524 | 0x00000000, // ' ' ---- 525 | 0x10000400, // ' -- ' 526 | 0x31004C00, // ' -00- ' 527 | 0x31004C00, // ' -00- ' ---- 528 | 0x33100400, // ' -00- ' 529 | 0x11000000, // ' -- ' 530 | 0x00000000, // ' ' 531 | 0x00000000, // ' ' 532 | 0x00000000, // ' ' 533 | //-------------// -------------- [28] 534 | 0x00000000, // ' ' 535 | 0x00000000, // ' ' 536 | 0x00000000, // ' ' 537 | 0x00044000, // ' -- ' ---- 538 | 0x004CC400, // ' -00- ' 539 | 0x1004CC00, // ' -00- ' 540 | 0x31004C00, // ' -00- ' ---- 541 | 0x33100400, // ' -00- ' 542 | 0x13310000, // ' -00- ' 543 | 0x13310000, // ' -00- ' ---- 544 | 0x33100400, // ' -00- ' 545 | 0x31004C00, // ' -00- ' 546 | 0x1004CC00, // ' -00- ' ---- 547 | 0x004CC400, // ' -00- ' 548 | 0x00044000, // ' -- ' 549 | 0x00000000, // ' ' 550 | 0x00000000, // ' ' 551 | 0x00000000, // ' ' 552 | //-------------// -------------- [29] 553 | 0x00000000, // ' ' 554 | 0x00000000, // ' ' 555 | 0x00000000, // ' ' 556 | 0x00000000, // ' ' ---- 557 | 0x11144400, // ' ------ ' 558 | 0x337DCC00, // ' -000000- ' 559 | 0x337DCC00, // ' -000000- ' ---- 560 | 0x11144400, // ' ------ ' 561 | 0x00000000, // ' ' 562 | 0x00000000, // ' ' ---- 563 | 0x11144400, // ' ------ ' 564 | 0x337DCC00, // ' -000000- ' 565 | 0x337DCC00, // ' -000000- ' ---- 566 | 0x11144400, // ' ------ ' 567 | 0x00000000, // ' ' 568 | 0x00000000, // ' ' 569 | 0x00000000, // ' ' 570 | 0x00000000, // ' ' 571 | //-------------// -------------- [30] 572 | 0x00000000, // ' ' 573 | 0x00000000, // ' ' 574 | 0x00000000, // ' ' 575 | 0x00110000, // ' -- ' ---- 576 | 0x01331000, // ' -00- ' 577 | 0x13310000, // ' -00- ' 578 | 0x33100400, // ' -00- ' ---- 579 | 0x31004C00, // ' -00- ' 580 | 0x1004CC00, // ' -00- ' 581 | 0x1004CC00, // ' -00- ' ---- 582 | 0x31004C00, // ' -00- ' 583 | 0x33100400, // ' -00- ' 584 | 0x13310000, // ' -00- ' ---- 585 | 0x01331000, // ' -00- ' 586 | 0x00110000, // ' -- ' 587 | 0x00000000, // ' ' 588 | 0x00000000, // ' ' 589 | 0x00000000, // ' ' 590 | //-------------// -------------- [31] 591 | 0x00000000, // ' ' 592 | 0x00000000, // ' ' 593 | 0x00000000, // ' ' 594 | 0x00000000, // ' ' ---- 595 | 0x00000000, // ' ' 596 | 0x00000000, // ' ' 597 | 0x00000000, // ' ' ---- 598 | 0x00000000, // ' ' 599 | 0x00000000, // ' ' 600 | 0x00000000, // ' ' ---- 601 | 0x00000000, // ' ' 602 | 0x00000000, // ' ' 603 | 0x00000000, // ' ' ---- 604 | 0x00000000, // ' ' 605 | 0x00000000, // ' ' 606 | 0x00000000, // ' ' 607 | 0x00000000, // ' ' 608 | 0x00000000, // ' ' 609 | //-------------// -------------- [32] 610 | -------------------------------------------------------------------------------- /osd/fonts/default-b2.font: -------------------------------------------------------------------------------- 1 | //-------------// -------------- [00] 2 | 0x00000000, // ' ' 3 | 0x00000000, // ' ' 4 | 0x11004400, // ' ---- ' 5 | 0x3314CC00, // ' -0000- ' ---- 6 | 0x117D4400, // ' -0----0- ' 7 | 0x15D75400, // ' -0------0- ' 8 | 0x7F55F500, // '-0--00-0--0-' ---- 9 | 0x5D75FD00, // '-0-0--00--0-' 10 | 0x5D75F500, // '-0-0---0--0-' 11 | 0x5D75FD00, // '-0-0--00--0-' ---- 12 | 0x77D5F500, // '-0--00-0-0--' 13 | 0x155D7500, // '-0------0-- ' 14 | 0x11575100, // '--0--- --- ' ---- 15 | 0x15F55400, // ' --0-----0- ' 16 | 0x375DCC00, // ' --00000-- ' 17 | 0x11544400, // ' ------- ' 18 | 0x00000000, // ' ' 19 | 0x00000000, // ' ' 20 | //-------------// -------------- [01] 21 | 0x00000000, // ' ' 22 | 0x00000000, // ' ' 23 | 0x00000000, // ' ' 24 | 0x00000000, // ' ' ---- 25 | 0x10000400, // ' -- ' 26 | 0x31004C00, // ' -00- ' 27 | 0x3314CC00, // ' -0000- ' ---- 28 | 0x1314C400, // ' -0--0- ' 29 | 0x1314C400, // ' -0--0- ' 30 | 0x3314CC00, // ' -0000- ' ---- 31 | 0x1314C400, // ' -0--0- ' 32 | 0x1314C400, // ' -0--0- ' 33 | 0x1314C400, // ' -0--0- ' ---- 34 | 0x01004000, // ' - - ' 35 | 0x00000000, // ' ' 36 | 0x00000000, // ' ' 37 | 0x00000000, // ' ' 38 | 0x00000000, // ' ' 39 | //-------------// -------------- [02] 40 | 0x00000000, // ' ' 41 | 0x00000000, // ' ' 42 | 0x00000000, // ' ' 43 | 0x00000000, // ' ' ---- 44 | 0x11000400, // ' --- ' 45 | 0x33104C00, // ' -000- ' 46 | 0x1314C400, // ' -0--0- ' ---- 47 | 0x1314C400, // ' -0--0- ' 48 | 0x33104C00, // ' -000- ' 49 | 0x33104C00, // ' -000- ' ---- 50 | 0x1314C400, // ' -0--0- ' 51 | 0x1314C400, // ' -0--0- ' 52 | 0x33104C00, // ' -000- ' ---- 53 | 0x11000400, // ' --- ' 54 | 0x00000000, // ' ' 55 | 0x00000000, // ' ' 56 | 0x00000000, // ' ' 57 | 0x00000000, // ' ' 58 | //-------------// -------------- [03] 59 | 0x00000000, // ' ' 60 | 0x00000000, // ' ' 61 | 0x00000000, // ' ' 62 | 0x00000000, // ' ' ---- 63 | 0x11004400, // ' ---- ' 64 | 0x3314CC00, // ' -0000- ' 65 | 0x1314C400, // ' -0--0- ' ---- 66 | 0x13104000, // ' -0- - ' 67 | 0x13100000, // ' -0- ' 68 | 0x13100000, // ' -0- ' ---- 69 | 0x13104000, // ' -0- - ' 70 | 0x1314C400, // ' -0--0- ' 71 | 0x3314CC00, // ' -0000- ' ---- 72 | 0x11004400, // ' ---- ' 73 | 0x00000000, // ' ' 74 | 0x00000000, // ' ' 75 | 0x00000000, // ' ' 76 | 0x00000000, // ' ' 77 | //-------------// -------------- [04] 78 | 0x00000000, // ' ' 79 | 0x00000000, // ' ' 80 | 0x00000000, // ' ' 81 | 0x00000000, // ' ' ---- 82 | 0x11000400, // ' --- ' 83 | 0x33104C00, // ' -000- ' 84 | 0x1314C400, // ' -0--0- ' ---- 85 | 0x1314C400, // ' -0--0- ' 86 | 0x1314C400, // ' -0--0- ' 87 | 0x1314C400, // ' -0--0- ' ---- 88 | 0x1314C400, // ' -0--0- ' 89 | 0x1314C400, // ' -0--0- ' 90 | 0x33104C00, // ' -000- ' ---- 91 | 0x11000400, // ' --- ' 92 | 0x00000000, // ' ' 93 | 0x00000000, // ' ' 94 | 0x00000000, // ' ' 95 | 0x00000000, // ' ' 96 | //-------------// -------------- [05] 97 | 0x00000000, // ' ' 98 | 0x00000000, // ' ' 99 | 0x00000000, // ' ' 100 | 0x00000000, // ' ' ---- 101 | 0x11044400, // ' ----- ' 102 | 0x335CCC00, // ' -00000- ' 103 | 0x13144400, // ' -0---- ' ---- 104 | 0x13100400, // ' -0-- ' 105 | 0x33104C00, // ' -000- ' 106 | 0x33104C00, // ' -000- ' ---- 107 | 0x13100400, // ' -0-- ' 108 | 0x13144400, // ' -0---- ' 109 | 0x335CCC00, // ' -00000- ' ---- 110 | 0x11044400, // ' ----- ' 111 | 0x00000000, // ' ' 112 | 0x00000000, // ' ' 113 | 0x00000000, // ' ' 114 | 0x00000000, // ' ' 115 | //-------------// -------------- [06] 116 | 0x00000000, // ' ' 117 | 0x00000000, // ' ' 118 | 0x00000000, // ' ' 119 | 0x00000000, // ' ' ---- 120 | 0x11044400, // ' ----- ' 121 | 0x335CCC00, // ' -00000- ' 122 | 0x13144400, // ' -0---- ' ---- 123 | 0x13100400, // ' -0-- ' 124 | 0x33104C00, // ' -000- ' 125 | 0x13100400, // ' -0-- ' ---- 126 | 0x13100000, // ' -0- ' 127 | 0x13100000, // ' -0- ' 128 | 0x13100000, // ' -0- ' ---- 129 | 0x01000000, // ' - ' 130 | 0x00000000, // ' ' 131 | 0x00000000, // ' ' 132 | 0x00000000, // ' ' 133 | 0x00000000, // ' ' 134 | //-------------// -------------- [07] 135 | 0x00000000, // ' ' 136 | 0x00000000, // ' ' 137 | 0x00000000, // ' ' 138 | 0x00000000, // ' ' ---- 139 | 0x11004400, // ' ---- ' 140 | 0x3314CC00, // ' -0000- ' 141 | 0x1314C400, // ' -0--0- ' ---- 142 | 0x13104000, // ' -0- - ' 143 | 0x13104400, // ' -0--- ' 144 | 0x1314CC00, // ' -0-00- ' ---- 145 | 0x1314C400, // ' -0--0- ' 146 | 0x1314C400, // ' -0--0- ' 147 | 0x3314CC00, // ' -0000- ' ---- 148 | 0x11004400, // ' ---- ' 149 | 0x00000000, // ' ' 150 | 0x00000000, // ' ' 151 | 0x00000000, // ' ' 152 | 0x00000000, // ' ' 153 | //-------------// -------------- [08] 154 | 0x00000000, // ' ' 155 | 0x00000000, // ' ' 156 | 0x00000000, // ' ' 157 | 0x00000000, // ' ' ---- 158 | 0x01004000, // ' - - ' 159 | 0x1314C400, // ' -0--0- ' 160 | 0x1314C400, // ' -0--0- ' ---- 161 | 0x1314C400, // ' -0--0- ' 162 | 0x3314CC00, // ' -0000- ' 163 | 0x3314CC00, // ' -0000- ' ---- 164 | 0x1314C400, // ' -0--0- ' 165 | 0x1314C400, // ' -0--0- ' 166 | 0x1314C400, // ' -0--0- ' ---- 167 | 0x01004000, // ' - - ' 168 | 0x00000000, // ' ' 169 | 0x00000000, // ' ' 170 | 0x00000000, // ' ' 171 | 0x00000000, // ' ' 172 | //-------------// -------------- [09] 173 | 0x00000000, // ' ' 174 | 0x00000000, // ' ' 175 | 0x00000000, // ' ' 176 | 0x00000000, // ' ' ---- 177 | 0x10000000, // ' - ' 178 | 0x31000400, // ' -0- ' 179 | 0x31000400, // ' -0- ' ---- 180 | 0x31000400, // ' -0- ' 181 | 0x31000400, // ' -0- ' 182 | 0x31000400, // ' -0- ' ---- 183 | 0x31000400, // ' -0- ' 184 | 0x31000400, // ' -0- ' 185 | 0x31000400, // ' -0- ' ---- 186 | 0x10000000, // ' - ' 187 | 0x00000000, // ' ' 188 | 0x00000000, // ' ' 189 | 0x00000000, // ' ' 190 | 0x00000000, // ' ' 191 | //-------------// -------------- [10] 192 | 0x00000000, // ' ' 193 | 0x00000000, // ' ' 194 | 0x00000000, // ' ' 195 | 0x00000000, // ' ' ---- 196 | 0x00004000, // ' - ' 197 | 0x0004C400, // ' -0- ' 198 | 0x0004C400, // ' -0- ' ---- 199 | 0x0004C400, // ' -0- ' 200 | 0x0004C400, // ' -0- ' 201 | 0x0104C400, // ' - -0- ' ---- 202 | 0x1314C400, // ' -0--0- ' 203 | 0x1314C400, // ' -0--0- ' 204 | 0x3314CC00, // ' -0000- ' ---- 205 | 0x11004400, // ' ---- ' 206 | 0x00000000, // ' ' 207 | 0x00000000, // ' ' 208 | 0x00000000, // ' ' 209 | 0x00000000, // ' ' 210 | //-------------// -------------- [11] 211 | 0x00000000, // ' ' 212 | 0x00000000, // ' ' 213 | 0x00000000, // ' ' 214 | 0x00000000, // ' ' ---- 215 | 0x01040000, // ' - - ' 216 | 0x135C4000, // ' -0- -0- ' 217 | 0x1314C400, // ' -0--0- ' ---- 218 | 0x13104C00, // ' -0-0- ' 219 | 0x33100400, // ' -00- ' 220 | 0x33100400, // ' -00- ' ---- 221 | 0x13104C00, // ' -0-0- ' 222 | 0x1314C400, // ' -0--0- ' 223 | 0x135C4000, // ' -0- -0- ' ---- 224 | 0x01040000, // ' - - ' 225 | 0x00000000, // ' ' 226 | 0x00000000, // ' ' 227 | 0x00000000, // ' ' 228 | 0x00000000, // ' ' 229 | //-------------// -------------- [12] 230 | 0x00000000, // ' ' 231 | 0x00000000, // ' ' 232 | 0x00000000, // ' ' 233 | 0x00000000, // ' ' ---- 234 | 0x01000000, // ' - ' 235 | 0x13100000, // ' -0- ' 236 | 0x13100000, // ' -0- ' ---- 237 | 0x13100000, // ' -0- ' 238 | 0x13100000, // ' -0- ' 239 | 0x13100000, // ' -0- ' ---- 240 | 0x13100000, // ' -0- ' 241 | 0x13104400, // ' -0--- ' 242 | 0x3314CC00, // ' -0000- ' ---- 243 | 0x11004400, // ' ---- ' 244 | 0x00000000, // ' ' 245 | 0x00000000, // ' ' 246 | 0x00000000, // ' ' 247 | 0x00000000, // ' ' 248 | //-------------// -------------- [13] 249 | 0x00000000, // ' ' 250 | 0x00000000, // ' ' 251 | 0x00000000, // ' ' 252 | 0x00000000, // ' ' ---- 253 | 0x00140000, // ' - - ' 254 | 0x017D4000, // ' -0- -0- ' 255 | 0x137DC400, // ' -00--00- ' ---- 256 | 0x337DCC00, // ' -000000- ' 257 | 0x317D4C00, // ' -0-00-0- ' 258 | 0x117D4400, // ' -0----0- ' ---- 259 | 0x017D4000, // ' -0- -0- ' 260 | 0x017D4000, // ' -0- -0- ' 261 | 0x017D4000, // ' -0- -0- ' ---- 262 | 0x00140000, // ' - - ' 263 | 0x00000000, // ' ' 264 | 0x00000000, // ' ' 265 | 0x00000000, // ' ' 266 | 0x00000000, // ' ' 267 | //-------------// -------------- [14] 268 | 0x00000000, // ' ' 269 | 0x00000000, // ' ' 270 | 0x00000000, // ' ' 271 | 0x00000000, // ' ' ---- 272 | 0x01004000, // ' - - ' 273 | 0x1314C400, // ' -0--0- ' 274 | 0x1314C400, // ' -0--0- ' ---- 275 | 0x3314C400, // ' -00-0- ' 276 | 0x3314CC00, // ' -0000- ' 277 | 0x1314CC00, // ' -0-00- ' ---- 278 | 0x1314C400, // ' -0--0- ' 279 | 0x1314C400, // ' -0--0- ' 280 | 0x1314C400, // ' -0--0- ' ---- 281 | 0x01004000, // ' - - ' 282 | 0x00000000, // ' ' 283 | 0x00000000, // ' ' 284 | 0x00000000, // ' ' 285 | 0x00000000, // ' ' 286 | //-------------// -------------- [15] 287 | 0x00000000, // ' ' 288 | 0x00000000, // ' ' 289 | 0x00000000, // ' ' 290 | 0x00000000, // ' ' ---- 291 | 0x10000400, // ' -- ' 292 | 0x31004C00, // ' -00- ' 293 | 0x1314C400, // ' -0--0- ' ---- 294 | 0x1314C400, // ' -0--0- ' 295 | 0x1314C400, // ' -0--0- ' 296 | 0x1314C400, // ' -0--0- ' ---- 297 | 0x1314C400, // ' -0--0- ' 298 | 0x1314C400, // ' -0--0- ' 299 | 0x31004C00, // ' -00- ' ---- 300 | 0x10000400, // ' -- ' 301 | 0x00000000, // ' ' 302 | 0x00000000, // ' ' 303 | 0x00000000, // ' ' 304 | 0x00000000, // ' ' 305 | //-------------// -------------- [16] 306 | 0x00000000, // ' ' 307 | 0x00000000, // ' ' 308 | 0x00000000, // ' ' 309 | 0x00000000, // ' ' ---- 310 | 0x11000400, // ' --- ' 311 | 0x33104C00, // ' -000- ' 312 | 0x1314C400, // ' -0--0- ' ---- 313 | 0x1314C400, // ' -0--0- ' 314 | 0x33104C00, // ' -000- ' 315 | 0x13100400, // ' -0-- ' ---- 316 | 0x13100000, // ' -0- ' 317 | 0x13100000, // ' -0- ' 318 | 0x13100000, // ' -0- ' ---- 319 | 0x01000000, // ' - ' 320 | 0x00000000, // ' ' 321 | 0x00000000, // ' ' 322 | 0x00000000, // ' ' 323 | 0x00000000, // ' ' 324 | //-------------// -------------- [17] 325 | 0x00000000, // ' ' 326 | 0x00000000, // ' ' 327 | 0x00000000, // ' ' 328 | 0x00000000, // ' ' ---- 329 | 0x10000400, // ' -- ' 330 | 0x31004C00, // ' -00- ' 331 | 0x1314C400, // ' -0--0- ' ---- 332 | 0x1314C400, // ' -0--0- ' 333 | 0x1314C400, // ' -0--0- ' 334 | 0x1314C400, // ' -0--0- ' ---- 335 | 0x1314C400, // ' -0--0- ' 336 | 0x1314CC00, // ' -0-00- ' 337 | 0x3104CC00, // ' -000- ' ---- 338 | 0x104C4400, // ' ---0- ' 339 | 0x00040000, // ' - ' 340 | 0x00000000, // ' ' 341 | 0x00000000, // ' ' 342 | 0x00000000, // ' ' 343 | //-------------// -------------- [18] 344 | 0x00000000, // ' ' 345 | 0x00000000, // ' ' 346 | 0x00000000, // ' ' 347 | 0x00000000, // ' ' ---- 348 | 0x11000400, // ' --- ' 349 | 0x33104C00, // ' -000- ' 350 | 0x1314C400, // ' -0--0- ' ---- 351 | 0x1314C400, // ' -0--0- ' 352 | 0x1314C400, // ' -0--0- ' 353 | 0x33104C00, // ' -000- ' ---- 354 | 0x1310CC00, // ' -0-00 ' 355 | 0x1314C400, // ' -0--0- ' 356 | 0x1314C400, // ' -0--0- ' ---- 357 | 0x01004000, // ' - - ' 358 | 0x00000000, // ' ' 359 | 0x00000000, // ' ' 360 | 0x00000000, // ' ' 361 | 0x00000000, // ' ' 362 | //-------------// -------------- [19] 363 | 0x00000000, // ' ' 364 | 0x00000000, // ' ' 365 | 0x00000000, // ' ' 366 | 0x00000000, // ' ' ---- 367 | 0x11004400, // ' ---- ' 368 | 0x3314CC00, // ' -0000- ' 369 | 0x1314C400, // ' -0--0- ' ---- 370 | 0x13104400, // ' -0--- ' 371 | 0x31004400, // ' -0-- ' 372 | 0x1004CC00, // ' -00- ' ---- 373 | 0x1104C400, // ' ---0- ' 374 | 0x1314C400, // ' -0--0- ' 375 | 0x3314CC00, // ' -0000- ' ---- 376 | 0x11004400, // ' ---- ' 377 | 0x00000000, // ' ' 378 | 0x00000000, // ' ' 379 | 0x00000000, // ' ' 380 | 0x00000000, // ' ' 381 | //-------------// -------------- [20] 382 | 0x00000000, // ' ' 383 | 0x00000000, // ' ' 384 | 0x00000000, // ' ' 385 | 0x00000000, // ' ' ---- 386 | 0x11104400, // ' ----- ' 387 | 0x3335CC00, // ' -00000- ' 388 | 0x31104400, // ' --0-- ' ---- 389 | 0x31000400, // ' -0- ' 390 | 0x31000400, // ' -0- ' 391 | 0x31000400, // ' -0- ' ---- 392 | 0x31000400, // ' -0- ' 393 | 0x31000400, // ' -0- ' 394 | 0x31000400, // ' -0- ' ---- 395 | 0x10000000, // ' - ' 396 | 0x00000000, // ' ' 397 | 0x00000000, // ' ' 398 | 0x00000000, // ' ' 399 | 0x00000000, // ' ' 400 | //-------------// -------------- [21] 401 | 0x00000000, // ' ' 402 | 0x00000000, // ' ' 403 | 0x00000000, // ' ' 404 | 0x00000000, // ' ' ---- 405 | 0x01004000, // ' - - ' 406 | 0x1314C400, // ' -0--0- ' 407 | 0x1314C400, // ' -0--0- ' ---- 408 | 0x1314C400, // ' -0--0- ' 409 | 0x1314C400, // ' -0--0- ' 410 | 0x1314C400, // ' -0--0- ' ---- 411 | 0x1314C400, // ' -0--0- ' 412 | 0x1314C400, // ' -0--0- ' 413 | 0x3314CC00, // ' -0000- ' ---- 414 | 0x11004400, // ' ---- ' 415 | 0x00000000, // ' ' 416 | 0x00000000, // ' ' 417 | 0x00000000, // ' ' 418 | 0x00000000, // ' ' 419 | //-------------// -------------- [22] 420 | 0x00000000, // ' ' 421 | 0x00000000, // ' ' 422 | 0x00000000, // ' ' 423 | 0x00000000, // ' ' ---- 424 | 0x01004000, // ' - - ' 425 | 0x1314C400, // ' -0--0- ' 426 | 0x1314C400, // ' -0--0- ' ---- 427 | 0x1314C400, // ' -0--0- ' 428 | 0x1314C400, // ' -0--0- ' 429 | 0x1314C400, // ' -0--0- ' ---- 430 | 0x1314C400, // ' -0--0- ' 431 | 0x3314CC00, // ' -0000- ' 432 | 0x31004C00, // ' -00- ' ---- 433 | 0x10000400, // ' -- ' 434 | 0x00000000, // ' ' 435 | 0x00000000, // ' ' 436 | 0x00000000, // ' ' 437 | 0x00000000, // ' ' 438 | //-------------// -------------- [23] 439 | 0x00000000, // ' ' 440 | 0x00000000, // ' ' 441 | 0x00000000, // ' ' 442 | 0x00000000, // ' ' ---- 443 | 0x00140000, // ' - - ' 444 | 0x017D4000, // ' -0- -0- ' 445 | 0x017D4000, // ' -0- -0- ' ---- 446 | 0x017D4000, // ' -0- -0- ' 447 | 0x117D4400, // ' -0----0- ' 448 | 0x317D4C00, // ' -0-00-0- ' ---- 449 | 0x317D4C00, // ' -0-00-0- ' 450 | 0x3314CC00, // ' -0000- ' 451 | 0x1314C400, // ' -0--0- ' ---- 452 | 0x01004000, // ' - - ' 453 | 0x00000000, // ' ' 454 | 0x00000000, // ' ' 455 | 0x00000000, // ' ' 456 | 0x00000000, // ' ' 457 | //-------------// -------------- [24] 458 | 0x00000000, // ' ' 459 | 0x00000000, // ' ' 460 | 0x00000000, // ' ' 461 | 0x00000000, // ' ' ---- 462 | 0x00140000, // ' - - ' 463 | 0x017D4000, // ' -0- -0- ' 464 | 0x137DC400, // ' -00--00- ' ---- 465 | 0x1314C400, // ' -0--0- ' 466 | 0x31004C00, // ' -00- ' 467 | 0x31004C00, // ' -00- ' ---- 468 | 0x1314C400, // ' -0--0- ' 469 | 0x137DC400, // ' -00--00- ' 470 | 0x017D4000, // ' -0- -0- ' ---- 471 | 0x00140000, // ' - - ' 472 | 0x00000000, // ' ' 473 | 0x00000000, // ' ' 474 | 0x00000000, // ' ' 475 | 0x00000000, // ' ' 476 | //-------------// -------------- [25] 477 | 0x00000000, // ' ' 478 | 0x00000000, // ' ' 479 | 0x00000000, // ' ' 480 | 0x00000000, // ' ' ---- 481 | 0x00104000, // ' - - ' 482 | 0x0135C400, // ' -0- -0- ' 483 | 0x0135C400, // ' -0- -0- ' ---- 484 | 0x13104C00, // ' -0-0- ' 485 | 0x31000400, // ' -0- ' 486 | 0x31000400, // ' -0- ' ---- 487 | 0x31000400, // ' -0- ' 488 | 0x31000400, // ' -0- ' 489 | 0x31000400, // ' -0- ' ---- 490 | 0x10000000, // ' - ' 491 | 0x00000000, // ' ' 492 | 0x00000000, // ' ' 493 | 0x00000000, // ' ' 494 | 0x00000000, // ' ' 495 | //-------------// -------------- [26] 496 | 0x00000000, // ' ' 497 | 0x00000000, // ' ' 498 | 0x00000000, // ' ' 499 | 0x00000000, // ' ' ---- 500 | 0x11104400, // ' ----- ' 501 | 0x3335CC00, // ' -00000- ' 502 | 0x1114C400, // ' ----0- ' ---- 503 | 0x1004CC00, // ' -00- ' 504 | 0x31004C00, // ' -00- ' 505 | 0x33100400, // ' -00- ' ---- 506 | 0x13310000, // ' -00- ' 507 | 0x11314400, // ' -0---- ' 508 | 0x3335CC00, // ' -00000- ' ---- 509 | 0x11104400, // ' ----- ' 510 | 0x00000000, // ' ' 511 | 0x00000000, // ' ' 512 | 0x00000000, // ' ' 513 | 0x00000000, // ' ' 514 | //-------------// -------------- [27] 515 | 0x00000000, // ' ' 516 | 0x00000000, // ' ' 517 | 0x00000000, // ' ' 518 | 0x00044400, // ' --- ' ---- 519 | 0x104CCC00, // ' -000- ' 520 | 0x10444C00, // ' -0--- ' 521 | 0x10004C00, // ' -0- ' ---- 522 | 0x10004C00, // ' -0- ' 523 | 0x10004C00, // ' -0- ' 524 | 0x10004C00, // ' -0- ' ---- 525 | 0x10004C00, // ' -0- ' 526 | 0x10004C00, // ' -0- ' 527 | 0x10044C00, // ' -0-- ' ---- 528 | 0x104CCC00, // ' -000- ' 529 | 0x00444400, // ' ---- ' 530 | 0x00000000, // ' ' 531 | 0x00000000, // ' ' 532 | 0x00000000, // ' ' 533 | //-------------// -------------- [28] 534 | 0x00000000, // ' ' 535 | 0x00000000, // ' ' 536 | 0x00000000, // ' ' 537 | 0x00000000, // ' ' ---- 538 | 0x00000000, // ' ' 539 | 0x00010000, // ' - ' 540 | 0x00131000, // ' -0- ' ---- 541 | 0x01331000, // ' -00- ' 542 | 0x13310000, // ' -00- ' 543 | 0x33100400, // ' -00- ' ---- 544 | 0x31004C00, // ' -00- ' 545 | 0x1004CC00, // ' -00- ' 546 | 0x004CC400, // ' -00- ' ---- 547 | 0x04CC4000, // ' -00- ' 548 | 0x00440000, // ' -- ' 549 | 0x00000000, // ' ' 550 | 0x00000000, // ' ' 551 | 0x00000000, // ' ' 552 | //-------------// -------------- [29] 553 | 0x00000000, // ' ' 554 | 0x00000000, // ' ' 555 | 0x00000000, // ' ' 556 | 0x11100000, // ' --- ' ---- 557 | 0x33310400, // ' -000- ' 558 | 0x31100400, // ' --0- ' 559 | 0x31000400, // ' -0- ' ---- 560 | 0x31000400, // ' -0- ' 561 | 0x31000400, // ' -0- ' 562 | 0x31000400, // ' -0- ' ---- 563 | 0x31000400, // ' -0- ' 564 | 0x31000400, // ' -0- ' 565 | 0x31100400, // ' --0- ' ---- 566 | 0x33310400, // ' -000- ' 567 | 0x11100400, // ' ---- ' 568 | 0x00000000, // ' ' 569 | 0x00000000, // ' ' 570 | 0x00000000, // ' ' 571 | //-------------// -------------- [30] 572 | 0x00000000, // ' ' 573 | 0x00000000, // ' ' 574 | 0x00000000, // ' ' 575 | 0x10000400, // ' -- ' ---- 576 | 0x31004C00, // ' -00- ' 577 | 0x3314CC00, // ' -0000- ' 578 | 0x137DC400, // ' -00--00- ' ---- 579 | 0x117D4400, // ' -0----0- ' 580 | 0x01540000, // ' -- -- ' 581 | 0x00000000, // ' ' ---- 582 | 0x00000000, // ' ' 583 | 0x00000000, // ' ' 584 | 0x00000000, // ' ' ---- 585 | 0x00000000, // ' ' 586 | 0x00000000, // ' ' 587 | 0x00000000, // ' ' 588 | 0x00000000, // ' ' 589 | 0x00000000, // ' ' 590 | //-------------// -------------- [31] 591 | 0x00000000, // ' ' 592 | 0x00000000, // ' ' 593 | 0x00000000, // ' ' 594 | 0x00000000, // ' ' ---- 595 | 0x00000000, // ' ' 596 | 0x00000000, // ' ' 597 | 0x00000000, // ' ' ---- 598 | 0x00000000, // ' ' 599 | 0x00000000, // ' ' 600 | 0x00000000, // ' ' ---- 601 | 0x00000000, // ' ' 602 | 0x00000000, // ' ' 603 | 0x11554400, // ' -------- ' ---- 604 | 0x37FFDC00, // ' -00000000- ' 605 | 0x11554400, // ' -------- ' 606 | 0x00000000, // ' ' 607 | 0x00000000, // ' ' 608 | 0x00000000, // ' ' 609 | //-------------// -------------- [32] 610 | -------------------------------------------------------------------------------- /osd/osd_asm.s: -------------------------------------------------------------------------------- 1 | # 2 | # This file is part of SW7456. 3 | # 4 | # SW7456 is free software. You can redistribute this software and/or modify this software 5 | # under the terms of the GNU General Public License as published by the Free Software 6 | # Foundation, either version 3 of the License, or (at your option) any later version. 7 | # 8 | # SW7456 is distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; 9 | # without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 10 | # See the GNU General Public License for more details. 11 | # 12 | # You should have received a copy of the GNU General Public License along with this software. 13 | # 14 | # If not, see . 15 | # 16 | # ---------------------------------------------------------------------------------------- 17 | .global output_charline 18 | # ---------------------------------------------------------------------------------------- 19 | .extern osd_port 20 | .extern character_address 21 | .extern mixmux 22 | .extern character_attribute 23 | .extern display_start 24 | #-------------------------------------- 25 | .syntax unified 26 | #-------------------------------------- 27 | // .section .RamFunc 28 | // .align 8 29 | // .align 32 30 | #-------------------------------------- 31 | .section .text.first 32 | .align 8 33 | #-------------------------------------- 34 | output_charline: 35 | push {r4, r5, r6, r7, lr} 36 | mov r4,r8 37 | mov r5,r9 38 | mov r6,r10 39 | mov r7,r11 40 | push {r4,r5,r6,r7} 41 | 42 | // R0 = row 43 | // R1 = line 44 | // R2 = DISPLAY_WIDTH 45 | 46 | muls r0,r2 47 | 48 | ldr r6,=character_attribute 49 | adds r6,r0 50 | 51 | lsls r0,r0,#2 52 | ldr r7,=character_address 53 | adds r7,r0 54 | 55 | lsls r5, r2, #2 56 | adds r5,r7 57 | adds r5,#4 58 | mov r11,r5 59 | 60 | lsls r5, r1, #2 61 | mov r10,r5 62 | #-------------------------------------- 63 | ldr r0,=osd_port 64 | ldr r0,[r0] 65 | ldr r2,=mixmux 66 | #-------------------------------------- 67 | // R0 = PORT 68 | // R1 = temp 69 | // R2 = mixnux address 70 | // R3 = character bits 71 | // R4 = attribute bits 72 | #-------------------------------------- 73 | // R5 = temp 74 | // R6 = character_attribute 75 | // R7 = character address 76 | // R8 = next character bits 77 | // R9 = next attribute 78 | // R10 = out_line * 4 79 | // R11 = last character address 80 | #-------------------------------------- 81 | ldrb r4, [r6] 82 | 83 | ldr r3, [r7] 84 | add r3, r10 85 | ldr r3, [r3] 86 | 87 | adds r6 ,#1 88 | adds r7 ,#4 89 | #-------------------------------------- 90 | # some pixels are bigger than others because some pixels mothers... 91 | #-------------------------------------- 92 | pixel_loop: 93 | #-- Pixel 1 -- 94 | lsls r1, r3, #22 95 | lsrs r1, r1, #30 96 | eors r1, r4 97 | ldrb r1, [r2,r1] 98 | strb r1, [r0] 99 | #-- Pixel 2 -- 100 | ldr r5, [r7] 101 | lsls r1, r3, #18 102 | lsrs r1, r1, #30 103 | eors r1, r4 104 | ldrb r1, [r2,r1] 105 | strb r1, [r0] 106 | #-- Pixel 3 -- 107 | add r5,r10 108 | nop 109 | lsls r1, r3, #14 110 | lsrs r1, r1, #30 111 | eors r1, r4 112 | ldrb r1, [r2,r1] 113 | strb r1, [r0] 114 | #-- Pixel 4 -- 115 | ldr r5, [r5] 116 | lsls r1, r3, #10 117 | lsrs r1, r1, #30 118 | eors r1, r4 119 | ldrb r1, [r2,r1] 120 | strb r1, [r0] 121 | #-- Pixel 5 -- 122 | mov r8,r5 123 | nop 124 | lsls r1, r3, #6 125 | lsrs r1, r1, #30 126 | eors r1, r4 127 | ldrb r1, [r2,r1] 128 | strb r1, [r0] 129 | #-- Pixel 6 -- 130 | nop 131 | nop 132 | lsls r1, r3, #2 133 | lsrs r1, r1, #30 134 | eors r1, r4 135 | ldrb r1, [r2,r1] 136 | strb r1, [r0] 137 | #-- Pixel 7 -- 138 | // nop 139 | // nop 140 | ldrb r5, [r6] 141 | 142 | lsls r1, r3, #20 143 | lsrs r1, r1, #30 144 | eors r1, r4 145 | ldrb r1, [r2,r1] 146 | strb r1, [r0] 147 | #-- Pixel 8 -- 148 | mov r9,r5 149 | nop 150 | lsls r1, r3, #16 151 | lsrs r1, r1, #30 152 | eors r1, r4 153 | ldrb r1, [r2,r1] 154 | strb r1, [r0] 155 | #-- Pixel 9 -- 156 | nop 157 | nop 158 | lsls r1, r3, #12 159 | lsrs r1, r1, #30 160 | eors r1, r4 161 | ldrb r1, [r2,r1] 162 | strb r1, [r0] 163 | #-- Pixel 10 -- 164 | adds r6 ,#1 165 | nop 166 | lsls r1, r3, #8 167 | lsrs r1, r1, #30 168 | eors r1, r4 169 | ldrb r1, [r2,r1] 170 | strb r1, [r0] 171 | #-- Pixel 11 -- 172 | adds r7 ,#4 173 | nop 174 | lsls r1, r3, #4 175 | lsrs r1, r1, #30 176 | eors r1, r4 177 | ldrb r1, [r2,r1] 178 | strb r1, [r0] 179 | #-- Pixel 12 -- 180 | lsrs r1, r3, #30 181 | eors r1, r4 182 | ldrb r1, [r2,r1] 183 | cmp r7,r11 184 | mov r3,r8 185 | mov r4,r9 186 | strb r1, [r0] 187 | bne pixel_loop // 2 cycles branch taken + I BUS access 188 | #======================================================= 189 | ldrb r1, [r2] // load transparent 190 | 191 | pop {r4,r5,r6,r7} 192 | mov r8 ,r4 193 | mov r9 ,r5 194 | mov r10,r6 195 | mov r11,r7 196 | strb r1, [r0] // output transparent 197 | 198 | pop {r4, r5, r6, r7, pc} 199 | #-------------------------------------- 200 | #-------------------------------------- 201 | -------------------------------------------------------------------------------- /osd/osd_config.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of SW7456. 3 | * 4 | * SW7456 is free software. You can redistribute this software and/or modify this software 5 | * under the terms of the GNU General Public License as published by the Free Software 6 | * Foundation, either version 3 of the License, or (at your option) any later version. 7 | * 8 | * SW7456 is distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; 9 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 10 | * See the GNU General Public License for more details. 11 | * 12 | * You should have received a copy of the GNU General Public License along with this software. 13 | * 14 | * If not, see . 15 | */ 16 | // *********************************************************************************************** // 17 | /* 18 | * osd_config.h 19 | * 20 | * Created on: Sep 25, 2019 21 | * Author: todd 22 | */ 23 | // *********************************************************************************************** // 24 | #ifndef OSD_CONFIG_H_ 25 | #define OSD_CONFIG_H_ 26 | // *********************************************************************************************** // 27 | #define OSD_DEBUG 0 28 | #define OSD_SHOW_FPS 1 29 | #define OSD_SHOW_IRQ 0 30 | #define OSD_SHOW_STACK 0 31 | // *********************************************************************************************** // 32 | // may not be needed for later version of bf 33 | #define OSD_DISABLE_CLS_FOR_BETAFLIGHT 1 34 | // *********************************************************************************************** // 35 | // disable generator to fit in 8K of ram 36 | #define OSD_SIGNAL_GENERATOR 1 37 | // *********************************************************************************************** // 38 | #ifndef __ASSEMBLER__ 39 | // *********************************************************************************************** // 40 | #define FONT_HEIGHT 18 41 | #define FONT_WIDTH 12 42 | // *********************************************************************************************** // 43 | #define DISPLAY_WIDTH 30 44 | #define DISPLAY_HEIGHT 32 45 | // *********************************************************************************************** // 46 | #define CHAR_BUFF_SIZE 512 47 | #define CHAR_BUFF_MASK (CHAR_BUFF_SIZE-1) 48 | // *********************************************************************************************** // 49 | #define SPI_BUFF_SIZE 2048 50 | #define SPI_BUFF_MASK (SPI_BUFF_SIZE-1) 51 | // *********************************************************************************************** // 52 | #define COPYRIGHT_LINES 5 53 | // *********************************************************************************************** // 54 | #define NTSC_LINE_FREQ 15734.2657 55 | #define PAL_LINE_FREQ 15625 56 | 57 | #define NTSC_FIELD_FREQ 59.94006 58 | #define PAL_FIELD_FREQ 50 59 | 60 | #define NTSC_LINES_PER_FRAME 525 61 | #define PAL_LINES_PER_FRAME 625 62 | // *********************************************************************************************** // 63 | #define NTSC_FRAME_TIME 0.0000635555555555556 64 | #define NTSC_HSYNC_TIME 0.0000047 65 | #define NTSC_FRONT_PORCH_TIME 0.0000015 66 | #define NTSC_BACK_PORCH_TIME 0.0000047 67 | #define NTSC_VIDEO_TIME 0.0000526 68 | // *********************************************************************************************** // 69 | #define LINE_FREQ ((U32)((NTSC_LINE_FREQ + PAL_LINE_FREQ+1)/2)) 70 | #define LINE_TICK_COUNT (GEN_TIMER_CLOCK_FREQ/LINE_FREQ) 71 | #define LINE_TICK_HYSTERESIS (LINE_TICK_COUNT/4) 72 | #define SYNC_TICK_COUNT ((U32)(LINE_TICK_COUNT/2)) 73 | #define SYNC_TICK_HYSTERESIS ((U32)(LINE_TICK_HYSTERESIS/2)) 74 | 75 | //#define SYNC_TICKS_MIN (LINE_TICK_COUNT/4) 76 | //#define SYNC_TICKS_MID (SYNC_TICKS_MIN*3) 77 | //#define SYNC_TICKS_MAX (SYNC_TICKS_MIN*5) 78 | 79 | #define SYNC_TICK_MIN (SYNC_TICK_COUNT-200) 80 | #define SYNC_TICK_MAX (SYNC_TICK_COUNT+200) 81 | 82 | #define LINE_TICK_MIN (LINE_TICK_COUNT-300) 83 | #define LINE_TICK_MAX (LINE_TICK_COUNT+300) 84 | // *********************************************************************************************** // 85 | #define GEN_TIMER_CLOCK_FREQ 64000000 86 | // *********************************************************************************************** // 87 | #define TICK_CLOCK 64000000 88 | // *********************************************************************************************** // 89 | // *********************************************************************************************** // 90 | #endif 91 | #endif 92 | -------------------------------------------------------------------------------- /osd/osd_font.c: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of SW7456. 3 | * 4 | * SW7456 is free software. You can redistribute this software and/or modify this software 5 | * under the terms of the GNU General Public License as published by the Free Software 6 | * Foundation, either version 3 of the License, or (at your option) any later version. 7 | * 8 | * SW7456 is distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; 9 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 10 | * See the GNU General Public License for more details. 11 | * 12 | * You should have received a copy of the GNU General Public License along with this software. 13 | * 14 | * If not, see . 15 | */ 16 | // *********************************************************************************************** // 17 | /* 18 | * vid_font.c 19 | * 20 | * Created on: Sep 25, 2019 21 | * Author: todd 22 | */ 23 | // *********************************************************************************************** // 24 | #include "osd_font.h" 25 | #include "osd_irq.h" 26 | #include "osd_registers.h" 27 | // *********************************************************************************************** // 28 | U32 const *character_address[CHAR_BUFF_SIZE+(DISPLAY_WIDTH*COPYRIGHT_LINES)]; 29 | U8 character_attribute[CHAR_BUFF_SIZE+(DISPLAY_WIDTH*COPYRIGHT_LINES)]; 30 | // *********************************************************************************************** // 31 | static U32 _index_osd_=0; 32 | // *********************************************************************************************** // 33 | void osd_cls(void) 34 | { 35 | int x; 36 | 37 | for (x=(DISPLAY_WIDTH*COPYRIGHT_LINES);x0x7f) c=0x7f; 59 | character_address[_index_osd_++]=&system_font[(c-32)*FONT_HEIGHT]; 60 | _index_osd_&=CHAR_BUFF_MASK; 61 | } 62 | // *********************************************************************************************** // 63 | void osd_print_charaddr(U32 *charaddr) 64 | { 65 | character_address[_index_osd_++]=charaddr; 66 | _index_osd_&=CHAR_BUFF_MASK; 67 | } 68 | // *********************************************************************************************** // 69 | void osd_print_string(const char *str,U8 attribute) 70 | { 71 | U32 pos=_index_osd_; 72 | U32 c; 73 | pos&=CHAR_BUFF_MASK; 74 | while (*str) 75 | { 76 | c=*str++; 77 | if (c<32 || c>0x7f) c=0x7f; 78 | character_attribute[pos]=attribute; 79 | character_address[pos++]=&system_font[(c-32)*FONT_HEIGHT]; 80 | pos&=CHAR_BUFF_MASK; 81 | } 82 | _index_osd_=pos; 83 | } 84 | // *********************************************************************************************** // 85 | void osd_print_at(U32 x,U32 y,char *str,U8 attribute) 86 | { 87 | osd_set_position(x,y); 88 | osd_print_string(str,attribute); 89 | } 90 | // *********************************************************************************************** // 91 | void osd_print_number(U32 num,U32 digits) 92 | { 93 | U32 pos=_index_osd_; 94 | U32 t; 95 | U32 c; 96 | 97 | _index_osd_+=digits; 98 | _index_osd_&=CHAR_BUFF_MASK; 99 | 100 | if (!digits || digits>20) return; 101 | 102 | pos+=(digits-1); 103 | pos&=CHAR_BUFF_MASK; 104 | 105 | if (digits>2) 106 | { 107 | for(t=2;t. 15 | */ 16 | // *********************************************************************************************** // 17 | /* 18 | * osd_font.h 19 | * 20 | * Created on: Sep 25, 2019 21 | * Author: todd 22 | */ 23 | // *********************************************************************************************** // 24 | #ifndef OSD_FONT_H_ 25 | #define OSD_FONT_H_ 26 | // *********************************************************************************************** // 27 | #include "portable.h" 28 | // *********************************************************************************************** // 29 | extern const U32 font[]; 30 | extern const U32 system_font[]; 31 | extern const U32 blank[FONT_HEIGHT]; 32 | // *********************************************************************************************** // 33 | extern U8 character_attribute[]; 34 | extern U32 const *character_address[]; 35 | // *********************************************************************************************** // 36 | extern void osd_font_init(void); 37 | extern void osd_cls(void); 38 | extern U32 osd_set_position(U32 col,U32 row); 39 | extern void osd_print_char(U32 ch); 40 | extern void osd_print_charaddr(U32 *charaddr); 41 | extern void osd_print_string(const char *str,U8 attribute); 42 | extern void osd_print_at(U32 x,U32 y,char *str,U8 attribute); 43 | extern void osd_print_number(U32 num,U32 digits); 44 | // *********************************************************************************************** // 45 | #endif 46 | -------------------------------------------------------------------------------- /osd/osd_gen.c: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of SW7456. 3 | * 4 | * SW7456 is free software. You can redistribute this software and/or modify this software 5 | * under the terms of the GNU General Public License as published by the Free Software 6 | * Foundation, either version 3 of the License, or (at your option) any later version. 7 | * 8 | * SW7456 is distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; 9 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 10 | * See the GNU General Public License for more details. 11 | * 12 | * You should have received a copy of the GNU General Public License along with this software. 13 | * 14 | * If not, see . 15 | */ 16 | // *********************************************************************************************** // 17 | /* 18 | * osd_gen.c 19 | * 20 | * Created on: Sep 24, 2019 21 | * Author: todd 22 | */ 23 | // *********************************************************************************************** // 24 | #include "osd_gen.h" 25 | #include "osd_mixmux.h" 26 | #include "osd_registers.h" 27 | // *********************************************************************************************** // 28 | #if OSD_SIGNAL_GENERATOR 29 | // *********************************************************************************************** // 30 | extern TIM_HandleTypeDef htim16; 31 | extern DMA_HandleTypeDef hdma_tim16_ch1; 32 | extern COMP_HandleTypeDef hcomp1; 33 | extern COMP_HandleTypeDef hcomp2; 34 | // *********************************************************************************************** // 35 | #define LINE_FREQ_NTSC ((GEN_TIMER_CLOCK_FREQ/NTSC_LINE_FREQ+0.5)/2) 36 | #define LINE_FREQ_PAL ((GEN_TIMER_CLOCK_FREQ/PAL_LINE_FREQ+0.5)/2) 37 | // *********************************************************************************************** // 38 | #define SYNC (NTSC_HSYNC_TIME*GEN_TIMER_CLOCK_FREQ+0.5) 39 | #define HSYNC ((SYNC/2)+0.5) 40 | #define LSYNC (SYNC*5.65) 41 | // *********************************************************************************************** // 42 | const U16 black_burst_pal[] __attribute__ ((aligned (4))) = 43 | { 44 | LSYNC,LSYNC,LSYNC,LSYNC,LSYNC,HSYNC,HSYNC,HSYNC,HSYNC,HSYNC, 45 | /* 00 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 46 | /* 25 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 47 | /* 50 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 48 | /* 75 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 49 | /* 100 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 50 | /* 125 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 51 | /* 150 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 52 | /* 175 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 53 | /* 200 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 54 | /* 225 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 55 | /* 250 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 56 | /* 275 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 57 | /* 300 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0, SYNC,0, 58 | HSYNC,HSYNC,HSYNC,HSYNC,HSYNC,//HSYNC, 59 | LSYNC,LSYNC,LSYNC,LSYNC,LSYNC,HSYNC,HSYNC,HSYNC,HSYNC,//HSYNC, 60 | /* 00 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 61 | /* 25 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 62 | /* 50 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 63 | /* 75 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 64 | /* 100 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 65 | /* 125 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 66 | /* 150 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 67 | /* 175 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 68 | /* 200 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 69 | /* 225 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 70 | /* 250 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 71 | /* 275 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 72 | /* 300 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0, SYNC,0, 73 | HSYNC,HSYNC,HSYNC,HSYNC,HSYNC,HSYNC 74 | }; 75 | // *********************************************************************************************** // 76 | const U16 black_burst_ntsc[] __attribute__ ((aligned (4))) = 77 | { 78 | // Field 1 79 | /* 1-9 */ HSYNC,HSYNC,HSYNC,HSYNC,HSYNC,HSYNC, LSYNC,LSYNC,LSYNC,LSYNC,LSYNC,LSYNC, HSYNC,HSYNC,HSYNC,HSYNC,HSYNC,HSYNC, 80 | // hsync,0 * 253 81 | /* 10 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 82 | /* 35 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 83 | /* 60 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 84 | /* 85 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 85 | /* 110 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 86 | /* 135 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 87 | /* 160 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 88 | /* 185 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 89 | /* 210 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 90 | /* 235 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 91 | /* 260 */ SYNC,0,SYNC,0,SYNC,0, 92 | /* 263 */ SYNC,HSYNC, 93 | // Field 2 94 | /* 1 */ HSYNC,HSYNC,HSYNC,HSYNC,HSYNC, LSYNC,LSYNC,LSYNC,LSYNC,LSYNC,LSYNC, HSYNC,HSYNC,HSYNC,HSYNC,HSYNC,HSYNC, 0, 95 | // hsync,0 * 253 96 | /* 10 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 97 | /* 35 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 98 | /* 60 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 99 | /* 85 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 100 | /* 110 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 101 | /* 135 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 102 | /* 160 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 103 | /* 185 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 104 | /* 210 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 105 | /* 235 */ SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0,SYNC,0, 106 | /* 260 */ SYNC,0,SYNC,0,SYNC,0 107 | }; 108 | // *********************************************************************************************** // 109 | U16 black_burst[1250] __attribute__ ((aligned (4))); 110 | // *********************************************************************************************** // 111 | U32 setup_black_burst(void) 112 | { 113 | U32 x; 114 | U32 size; 115 | 116 | if (registers[REG_7456_VM0]&R_7456_VM0_VSS) 117 | { 118 | size=sizeof(black_burst_pal)/2; 119 | for (x=0;xARR=LINE_FREQ_PAL; 121 | } 122 | else 123 | { 124 | size=sizeof(black_burst_ntsc)/2; 125 | for (x=0;xARR=LINE_FREQ_NTSC; 127 | } 128 | 129 | return(size); 130 | } 131 | // *********************************************************************************************** // 132 | U32 generator_on; 133 | // *********************************************************************************************** // 134 | void osd_gen_init(void) 135 | { 136 | HAL_TIM_Base_Init(&htim16); 137 | generator_on=0; 138 | } 139 | // *********************************************************************************************** // 140 | 141 | // *********************************************************************************************** // 142 | void osd_gen_start(void) 143 | { 144 | U32 size; 145 | if (!generator_on) 146 | { 147 | generator_on=1; 148 | TIM3->CCR1=0; 149 | 150 | HAL_TIM_PWM_Stop(&htim16, TIM_CHANNEL_1); 151 | 152 | size=setup_black_burst(); 153 | set_mixmux(); 154 | 155 | HAL_COMP_Start(&hcomp2); 156 | HAL_TIM_PWM_Start(&htim16, TIM_CHANNEL_1); 157 | HAL_DMA_Start(&hdma_tim16_ch1,(U32)black_burst,(U32)&TIM16->CCR1,size); 158 | TIM16->DIER=0x0600; 159 | 160 | GPIOB->ODR=mixmux[0][0]; 161 | } 162 | } 163 | // *********************************************************************************************** // 164 | void osd_gen_stop(void) 165 | { 166 | if (generator_on) 167 | { 168 | generator_on=0; 169 | HAL_COMP_Stop(&hcomp2); 170 | HAL_TIM_PWM_Stop(&htim16, TIM_CHANNEL_1); 171 | HAL_DMA_Abort(&hdma_tim16_ch1); 172 | set_mixmux(); 173 | 174 | GPIOB->ODR=mixmux[0][0]; 175 | } 176 | } 177 | // *********************************************************************************************** // 178 | void osd_gen_check(void) 179 | { 180 | 181 | if (!generator_on) 182 | { 183 | if (TIM3->CNT>0x08000) osd_gen_start(); 184 | } 185 | 186 | if (generator_on) 187 | { 188 | if (TIM3->CCR1>LINE_TICK_MIN && TIM3->CCR1. 15 | */ 16 | // *********************************************************************************************** // 17 | /* 18 | * osd_gen.h 19 | * 20 | * Created on: Sep 24, 2019 21 | * Author: todd 22 | */ 23 | // *********************************************************************************************** // 24 | #ifndef OSD_GEN_H_ 25 | #define OSD_GEN_H_ 26 | // *********************************************************************************************** // 27 | #include "portable.h" 28 | // *********************************************************************************************** // 29 | #if OSD_SIGNAL_GENERATOR 30 | extern void osd_gen_check(void); 31 | extern void osd_gen_init(void); 32 | extern U32 generator_on; 33 | #else 34 | static void osd_gen_check(void) {} 35 | static void osd_gen_init(void) {} 36 | #endif 37 | // *********************************************************************************************** // 38 | #endif 39 | -------------------------------------------------------------------------------- /osd/osd_glue.c: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of SW7456. 3 | * 4 | * SW7456 is free software. You can redistribute this software and/or modify this software 5 | * under the terms of the GNU General Public License as published by the Free Software 6 | * Foundation, either version 3 of the License, or (at your option) any later version. 7 | * 8 | * SW7456 is distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; 9 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 10 | * See the GNU General Public License for more details. 11 | * 12 | * You should have received a copy of the GNU General Public License along with this software. 13 | * 14 | * If not, see . 15 | */ 16 | // *********************************************************************************************** // 17 | /* 18 | * osd_glue.c 19 | * 20 | * Created on: Sep 25, 2019 21 | * Author: todd 22 | */ 23 | // *********************************************************************************************** // 24 | #include "main.h" 25 | #include "osd_glue.h" 26 | #include "osd_mixmux.h" 27 | #include "osd_gen.h" 28 | #include "osd_spi.h" 29 | #include "osd_irq.h" 30 | #include "osd_font.h" 31 | #include "osd_registers.h" 32 | // *********************************************************************************************** // 33 | // Signals 34 | // *********************************************************************************************** // 35 | U32 osd_signal; 36 | U32 osd_signal_clr; 37 | //U32 osd_signal_set; 38 | // *********************************************************************************************** // 39 | U32 signal_test_clear(U32 sigmask) 40 | { 41 | register U32 retval=osd_signal&osd_signal_clr&sigmask; 42 | if (retval) osd_signal_clr&=~retval; 43 | return(retval); 44 | } 45 | // *********************************************************************************************** // 46 | 47 | // *********************************************************************************************** // 48 | void debug_chars(void) 49 | { 50 | U32 x; 51 | 52 | if (display_start_row) return; 53 | 54 | #if OSD_SHOW_FPS 55 | osd_print_at(12,2,"FPS:",0); 56 | x=(TICK_CLOCK*20)/(stats.cpu_ticks/10); 57 | osd_print_number(x/100,2); 58 | osd_print_char('.'); 59 | osd_print_number(x%100,2); 60 | #endif 61 | 62 | 63 | #if OSD_SHOW_IRQ 64 | osd_print_at(12,3,"IRQ:",0); 65 | x=(stats.irq_ticks>>6)*10000/(stats.cpu_ticks>>6); 66 | osd_print_number(x/100,2); 67 | osd_print_char('.'); 68 | osd_print_number(x%100,2); 69 | osd_print_char('%'); 70 | #endif 71 | 72 | #if OSD_SHOW_STACK 73 | { 74 | extern U32 *_estack; 75 | U32 *my_stack; 76 | 77 | my_stack=(U32 *)(&_estack); 78 | my_stack-=(FONT_HEIGHT*5); 79 | x=29; 80 | while (my_stack!=(U32 *)(&_estack)) 81 | { 82 | character_address[x]=my_stack; 83 | character_attribute[x]=16; 84 | my_stack+=FONT_HEIGHT; 85 | x+=DISPLAY_WIDTH; 86 | } 87 | } 88 | #endif 89 | 90 | #if OSD_DEBUG 91 | osd_print_at(0,4,"Lines:",0); 92 | osd_print_number(stats.field1_line_count,3); 93 | osd_print_char(':'); 94 | osd_print_number(stats.field2_line_count,3); 95 | 96 | osd_print_at(15,4,"Sync:",0); 97 | osd_print_number(stats.field1_sync_count,3); 98 | osd_print_char(':'); 99 | osd_print_number(stats.field2_sync_count,3); 100 | #endif 101 | 102 | return; 103 | } 104 | 105 | // *********************************************************************************************** // 106 | void osd_delay_frames(U32 x) 107 | { 108 | while (x--) 109 | { 110 | while (!signal_test_clear(SIG_FRAME_END)) 111 | { 112 | osd_spi_process(); 113 | osd_gen_check(); 114 | } 115 | } 116 | } 117 | // *********************************************************************************************** // 118 | void display_modd_logo(U32 px,U32 py) 119 | { 120 | extern const U32 modd_logo[]; 121 | U32 lw=11; 122 | U32 lh=3; 123 | U32 x,y; 124 | U32 idx; 125 | 126 | for(y=0;y>1)|1; 197 | 198 | while(1) 199 | { 200 | osd_spi_process(); 201 | osd_gen_check(); 202 | 203 | if (signal_test_clear(SIG_FRAME_END)) 204 | { 205 | if (!display_start_row) debug_chars(); 206 | if (!blink_time) 207 | { 208 | blink_tick++; 209 | switch(registers[REG_7456_VM1]&R_7456_VM1_BDC) 210 | { 211 | case 0: 212 | blink_mixmux(blink_tick&1); 213 | break; 214 | case 1: 215 | if (!blink_tick) blink_mixmux(1); 216 | else blink_mixmux(0); 217 | if (blink_tick>1) blink_tick=-1; 218 | break; 219 | case 2: 220 | if (!blink_tick) blink_mixmux(1); 221 | else blink_mixmux(0); 222 | if (blink_tick>2) blink_tick=-1; 223 | break; 224 | case 3: 225 | if (!blink_tick) blink_mixmux(0); 226 | else blink_mixmux(1); 227 | if (blink_tick>2) blink_tick=-1; 228 | break; 229 | } 230 | blink_time=((registers[REG_7456_VM1]&R_7456_VM1_BT)>>1)|1; // 1,3,5,7 231 | } 232 | else blink_time--; 233 | } 234 | } 235 | } 236 | // *********************************************************************************************** // 237 | void osd_init(void) 238 | { 239 | write_register_defaults(); 240 | 241 | osd_font_init(); 242 | osd_mixmux_init(); 243 | osd_gen_init(); 244 | 245 | osd_irq_init(); 246 | osd_irq_start(); 247 | osd_spi_start(); 248 | 249 | display_copyright(); 250 | } 251 | // *********************************************************************************************** // 252 | #if 0 253 | // *********************************************************************************************** // 254 | // MODIFY the file core/main.c with the lines below 255 | // *********************************************************************************************** // 256 | 257 | /* Private includes ----------------------------------------------------------*/ 258 | /* USER CODE BEGIN Includes */ 259 | #include "osd_glue.h" 260 | /* USER CODE END Includes */ 261 | 262 | AND 263 | 264 | /* USER CODE BEGIN 2 */ 265 | osd_init(); 266 | osd_loop(); 267 | /* USER CODE END 2 */ 268 | 269 | /* Infinite loop */ 270 | /* USER CODE BEGIN WHILE */ 271 | while (1) 272 | 273 | // *********************************************************************************************** // 274 | #endif 275 | // *********************************************************************************************** // 276 | -------------------------------------------------------------------------------- /osd/osd_glue.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of SW7456. 3 | * 4 | * SW7456 is free software. You can redistribute this software and/or modify this software 5 | * under the terms of the GNU General Public License as published by the Free Software 6 | * Foundation, either version 3 of the License, or (at your option) any later version. 7 | * 8 | * SW7456 is distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; 9 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 10 | * See the GNU General Public License for more details. 11 | * 12 | * You should have received a copy of the GNU General Public License along with this software. 13 | * 14 | * If not, see . 15 | */ 16 | // *********************************************************************************************** // 17 | /* 18 | * osd_glue.h 19 | * 20 | * Created on: Sep 25, 2019 21 | * Author: todd 22 | */ 23 | // *********************************************************************************************** // 24 | #ifndef OSD_GLUE_H_ 25 | #define OSD_GLUE_H_ 26 | // *********************************************************************************************** // 27 | #include "portable.h" 28 | // *********************************************************************************************** // 29 | extern void osd_init(void); 30 | extern void osd_loop(void); 31 | // *********************************************************************************************** // 32 | // Signals 33 | // *********************************************************************************************** // 34 | extern U32 osd_signal; 35 | extern U32 osd_signal_clr; 36 | //extern U32 osd_signal_set; 37 | // *********************************************************************************************** // 38 | #define SIG_FRAME_START (1<<0) 39 | #define SIG_FRAME_END (1<<1) 40 | #define SIG_FIELD_START (1<<2) 41 | #define SIG_FIELD_END (1<<3) 42 | #define SIG_RESET_INPUT (1<<24) 43 | // *********************************************************************************************** // 44 | #endif 45 | -------------------------------------------------------------------------------- /osd/osd_irq.c: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of SW7456. 3 | * 4 | * SW7456 is free software. You can redistribute this software and/or modify this software 5 | * under the terms of the GNU General Public License as published by the Free Software 6 | * Foundation, either version 3 of the License, or (at your option) any later version. 7 | * 8 | * SW7456 is distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; 9 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 10 | * See the GNU General Public License for more details. 11 | * 12 | * You should have received a copy of the GNU General Public License along with this software. 13 | * 14 | * If not, see . 15 | */ 16 | // *********************************************************************************************** // 17 | /* 18 | * video_gen.c 19 | * 20 | * Created on: Sep 24, 2019 21 | * Author: todd 22 | */ 23 | // *********************************************************************************************** // 24 | #include "main.h" 25 | #include "portable.h" 26 | #include "osd_irq.h" 27 | #include "osd_spi.h" 28 | #include "osd_glue.h" 29 | #include "osd_font.h" 30 | #include "osd_registers.h" 31 | #include "osd_mixmux.h" 32 | // *********************************************************************************************** // 33 | extern COMP_HandleTypeDef hcomp1; 34 | extern COMP_HandleTypeDef hcomp2; 35 | extern TIM_HandleTypeDef htim14; 36 | extern TIM_HandleTypeDef htim6; 37 | extern TIM_HandleTypeDef htim2; 38 | extern TIM_HandleTypeDef htim3; 39 | extern DAC_HandleTypeDef hdac1; 40 | // *********************************************************************************************** // 41 | U32 display_start_row=COPYRIGHT_LINES; 42 | U32 end_line; 43 | U32 *osd_port= (uint32_t *)&GPIOB->ODR; 44 | OSD_STATS stats; 45 | // *********************************************************************************************** // 46 | #define NTSC_ROWS (14-1) 47 | #define PAL_ROWS (16-1) 48 | // *********************************************************************************************** // 49 | #define NTSC_LINES (((NTSC_ROWS)*FONT_HEIGHT)-1) 50 | #define PAL_LINES (((PAL_ROWS)*FONT_HEIGHT)-1) 51 | // *********************************************************************************************** // 52 | void osd_irq_init(void) 53 | { 54 | int x; 55 | for(x=0;xICER=0x00001000; 90 | } 91 | // *********************************************************************************************** // 92 | void osd_outirq_continue(void) 93 | { 94 | *NVIC->ISER=0x00001000; 95 | } 96 | // *********************************************************************************************** // 97 | void osd_systick_pause(void) 98 | { 99 | *NVIC->ICER=0x00040000; 100 | } 101 | // *********************************************************************************************** // 102 | void osd_systick_continue(void) 103 | { 104 | *NVIC->ISER=0x00040000; 105 | } 106 | // *********************************************************************************************** // 107 | void osd_irq_stop(void) 108 | { 109 | HAL_COMP_Stop(&hcomp1); 110 | HAL_DAC_Stop(&hdac1, DAC_CHANNEL_1); 111 | HAL_DAC_Stop(&hdac1, DAC_CHANNEL_2); 112 | } 113 | // *********************************************************************************************** // 114 | static S32 scanline=0; 115 | static U32 field; 116 | static U32 field_sync_count=0; 117 | static U32 start_scanline; 118 | // *********************************************************************************************** // 119 | void osd_irq_short(U32 delta) 120 | { 121 | if (field_sync_count==0) 122 | { 123 | HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_SET); 124 | 125 | if (scanline==254) field=1; // NTSC; 126 | else if (scanline==253) field=0; // NTSC; 127 | else if (scanline!=305) field=1;//field^=1; // unknown format 128 | 129 | if (field) stats.field1_line_count=scanline; 130 | else stats.field2_line_count=scanline; 131 | 132 | scanline=0; 133 | 134 | if (!field) 135 | { 136 | stats.cpu_ticks=stats.cpu_ticks_sum;stats.cpu_ticks_sum=0; 137 | stats.irq_ticks=stats.irq_ticks_sum;stats.irq_ticks_sum=0; 138 | } 139 | 140 | start_scanline=((registers[REG_7456_VOS])+1); 141 | } 142 | 143 | field_sync_count++; 144 | 145 | osd_signal&=osd_signal_clr; 146 | osd_signal_clr=-1; 147 | return; 148 | } 149 | // *********************************************************************************************** // 150 | static U32 out_row=0; 151 | static U32 out_line=0; 152 | // *********************************************************************************************** // 153 | void osd_irq_long(U32 delta) 154 | { 155 | extern void output_charline(U32,U32,U32); 156 | static S32 line=0; 157 | register S32 t; 158 | 159 | if (scanline>start_scanline) 160 | { 161 | // t=registers[REG_7456_HOS]; while(t--) {} // Optimizer -O0 162 | t=registers[REG_7456_HOS]; while(t--) {__asm__(" nop ");__asm__(" nop ");} // optimizer -O2 163 | 164 | 165 | if (line=FONT_HEIGHT) 170 | { 171 | out_line=0; 172 | out_row++; 173 | } 174 | } 175 | else if (line==end_line) 176 | { 177 | out_row++; 178 | if (field) osd_signal|=(SIG_FRAME_END|SIG_FIELD_END);else osd_signal|=SIG_FIELD_END; 179 | } 180 | line++; 181 | } 182 | else 183 | { 184 | //-------------------------------------------//] 185 | //-- Housekeeping --// 186 | //-------------------------------------------// 187 | if (field_sync_count) // first scanline 188 | { 189 | HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_RESET); 190 | 191 | if (stats.field1_line_count==305) // pal 192 | { 193 | if (field_sync_count==12) {field=0;} 194 | else {field=1;} 195 | end_line=PAL_LINES; 196 | } 197 | else end_line=NTSC_LINES; 198 | 199 | if (field) stats.field1_sync_count=field_sync_count; 200 | else stats.field2_sync_count=field_sync_count; 201 | field_sync_count=0; 202 | } 203 | 204 | if (scanline==start_scanline) 205 | { 206 | if (!field) osd_signal|=(SIG_FRAME_START|SIG_FIELD_START); 207 | else osd_signal|=SIG_FIELD_START; 208 | line=0; 209 | out_row=display_start_row; 210 | out_line=0; 211 | } 212 | } 213 | scanline++; 214 | } 215 | // *********************************************************************************************** // 216 | 217 | // *********************************************************************************************** // 218 | __attribute__ ((section (".text.comp_irq"))) void osd_comp_irq(void) 219 | { 220 | extern void osd_irq_short(U32 delta); 221 | extern void osd_irq_long(U32 delta); 222 | register S16 t; 223 | TIM_TypeDef *timer; 224 | 225 | t=0; 226 | #if OSD_SIGNAL_GENERATOR 227 | if (EXTI->RPR1&0x40000) {t=TIM2->CCR2; timer=TIM2; stats.gen_cap_ticks=t;} 228 | else stats.gen_cap_ticks=1; 229 | #endif 230 | if (EXTI->RPR1&0x20000) {t=TIM3->CCR1; timer=TIM3; stats.vid_cap_ticks=t;} 231 | else stats.vid_cap_ticks=1; 232 | 233 | stats.cpu_ticks_sum+=t; 234 | // clear osd_signal bits 235 | osd_signal&=osd_signal_clr; 236 | osd_signal_clr=-1; 237 | 238 | if (t>LINE_TICK_MIN && tSYNC_TICK_MIN && tODR=mixmux[0][0]; // insure pass though video on errors. 241 | 242 | EXTI->RPR1=0x60000; 243 | stats.irq_ticks_sum+=timer->CNT; 244 | return; 245 | } 246 | // *********************************************************************************************** // 247 | #if 0 248 | // *********************************************************************************************** // 249 | // MODIFY this function in core/stm32g0xx_it.c 250 | // *********************************************************************************************** // 251 | void ADC1_COMP_IRQHandler(void) 252 | { 253 | /* USER CODE BEGIN ADC1_COMP_IRQn 0 */ 254 | extern void osd_comp_irq(void); 255 | osd_comp_irq(); 256 | #if 0 257 | /* USER CODE END ADC1_COMP_IRQn 0 */ 258 | HAL_COMP_IRQHandler(&hcomp1); 259 | HAL_COMP_IRQHandler(&hcomp2); 260 | /* USER CODE BEGIN ADC1_COMP_IRQn 1 */ 261 | #endif 262 | /* USER CODE END ADC1_COMP_IRQn 1 */ 263 | } 264 | // *********************************************************************************************** // 265 | #endif 266 | // *********************************************************************************************** // 267 | -------------------------------------------------------------------------------- /osd/osd_irq.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of SW7456. 3 | * 4 | * SW7456 is free software. You can redistribute this software and/or modify this software 5 | * under the terms of the GNU General Public License as published by the Free Software 6 | * Foundation, either version 3 of the License, or (at your option) any later version. 7 | * 8 | * SW7456 is distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; 9 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 10 | * See the GNU General Public License for more details. 11 | * 12 | * You should have received a copy of the GNU General Public License along with this software. 13 | * 14 | * If not, see . 15 | */ 16 | // *********************************************************************************************** // 17 | /* 18 | * osd_gen.h 19 | * 20 | * Created on: Sep 24, 2019 21 | * Author: todd 22 | */ 23 | // *********************************************************************************************** // 24 | 25 | #ifndef OSD_OSD_H_ 26 | #define OSD_OSD_H_ 27 | // *********************************************************************************************** // 28 | #include "portable.h" 29 | // *********************************************************************************************** // 30 | typedef struct 31 | { 32 | U32 field1_sync_count; 33 | U32 field2_sync_count; 34 | 35 | U32 field1_line_count; 36 | U32 field2_line_count; 37 | 38 | U32 irq_ticks_sum; 39 | U32 irq_ticks; 40 | U32 cpu_ticks_sum; 41 | U32 cpu_ticks; 42 | 43 | U32 vid_cap_ticks; 44 | U32 gen_cap_ticks; 45 | } OSD_STATS; 46 | // *********************************************************************************************** // 47 | extern void osd_irq_init(void); 48 | extern void osd_irq_start(void); 49 | extern void osd_irq_stop(void); 50 | 51 | extern void osd_outirq_pause(void); 52 | extern void osd_outirq_continue(void); 53 | 54 | extern void osd_systick_pause(void); 55 | extern void osd_systick_continue(void); 56 | // *********************************************************************************************** // 57 | extern U32 display_start_row; 58 | extern OSD_STATS stats; 59 | // *********************************************************************************************** // 60 | #endif 61 | -------------------------------------------------------------------------------- /osd/osd_mixmux.c: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of SW7456. 3 | * 4 | * SW7456 is free software. You can redistribute this software and/or modify this software 5 | * under the terms of the GNU General Public License as published by the Free Software 6 | * Foundation, either version 3 of the License, or (at your option) any later version. 7 | * 8 | * SW7456 is distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; 9 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 10 | * See the GNU General Public License for more details. 11 | * 12 | * You should have received a copy of the GNU General Public License along with this software. 13 | * 14 | * If not, see . 15 | */ 16 | // *********************************************************************************************** // 17 | /* 18 | * osd_mixmux.c 19 | * 20 | * Created on: Nov 21, 2019 21 | * Author: todd 22 | */ 23 | // *********************************************************************************************** // 24 | #include "osd_mixmux.h" 25 | #include "osd_registers.h" 26 | // *********************************************************************************************** // 27 | U8 mixmux[8][4]; 28 | // *********************************************************************************************** // 29 | #define MMI_LOCAL_BKGND 4 30 | #define MMI_BLINK 2 31 | #define MMI_INVERT 1 32 | // *********************************************************************************************** // 33 | #define MMCLR_TRANS 0 34 | #define MMCLR_BLACK 1 35 | #define MMCLR_GREY 2 36 | #define MMCLR_WHITE 3 37 | // *********************************************************************************************** // 38 | void set_mixmux(void) 39 | { 40 | extern U32 generator_on; 41 | const U8 enable=1+8; 42 | U8 blk,wht,gry,trn; 43 | S32 x; 44 | x=(registers[REG_7456_VM1]&R_7456_VM1_BMB); 45 | x+=0x050; 46 | gry=x|enable; 47 | 48 | x=registers[REG_7456_RB0]&R_7456_RB_WL; 49 | x=3-x; 50 | x=(0x0c+x)<<4; 51 | wht=x|enable; // 0xF0-0xC0 default 0xE0 52 | 53 | x=(registers[REG_7456_RB0]&R_7456_RB_BL)>>2; 54 | x+=3; 55 | x<<=4; 56 | blk=x|enable; // 0xF0-0xC0 default 0xE0 57 | 58 | #if OSD_SIGNAL_GENERATOR 59 | if (generator_on) 60 | { 61 | trn=1; 62 | gry-=0x30; 63 | wht-=0x30; 64 | blk-=0x30; 65 | } 66 | else trn=TRANS; 67 | #else 68 | trn=TRANS; 69 | #endif 70 | 71 | for(x=0;x<8;x++) 72 | { 73 | if (x&MMI_LOCAL_BKGND) mixmux[x][MMCLR_TRANS]=gry; // local background 74 | else mixmux[x][MMCLR_TRANS]=trn; 75 | 76 | mixmux[x][MMCLR_GREY]=gry; 77 | if (x&MMI_INVERT) // invert 78 | { 79 | mixmux[x][MMCLR_BLACK]=wht; 80 | mixmux[x][MMCLR_WHITE]=blk; 81 | } 82 | else 83 | { 84 | mixmux[x][MMCLR_BLACK]=blk; 85 | mixmux[x][MMCLR_WHITE]=wht; 86 | } 87 | } 88 | } 89 | // *********************************************************************************************** // 90 | void blink_mixmux(S32 on) 91 | { 92 | S32 x; 93 | 94 | if (on) 95 | { 96 | U8 black=mixmux[0][MMCLR_BLACK]; 97 | U8 white=mixmux[0][MMCLR_WHITE]; 98 | 99 | for (x=2;x<8;x++) 100 | { 101 | if (x&MMI_BLINK) 102 | { 103 | if (x&MMI_INVERT) // invert 104 | { 105 | mixmux[x][MMCLR_BLACK]=white; 106 | mixmux[x][MMCLR_WHITE]=black; 107 | } 108 | else 109 | { 110 | mixmux[x][MMCLR_BLACK]=black; 111 | mixmux[x][MMCLR_WHITE]=white; 112 | } 113 | } 114 | } 115 | } 116 | else 117 | { 118 | U8 trans=mixmux[0][MMCLR_TRANS]; 119 | U8 grey=mixmux[4][MMCLR_TRANS]; 120 | 121 | for (x=2;x<8;x++) 122 | { 123 | if (x&MMI_BLINK) 124 | { 125 | if (x&MMI_LOCAL_BKGND) 126 | { 127 | mixmux[x][MMCLR_BLACK]=grey; 128 | mixmux[x][MMCLR_WHITE]=grey; 129 | } 130 | else 131 | { 132 | mixmux[x][MMCLR_BLACK]=trans; 133 | mixmux[x][MMCLR_WHITE]=trans; 134 | } 135 | } 136 | } 137 | } 138 | } 139 | // *********************************************************************************************** // 140 | void osd_mixmux_init(void) 141 | { 142 | set_mixmux(); 143 | } 144 | // *********************************************************************************************** // 145 | -------------------------------------------------------------------------------- /osd/osd_mixmux.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of SW7456. 3 | * 4 | * SW7456 is free software. You can redistribute this software and/or modify this software 5 | * under the terms of the GNU General Public License as published by the Free Software 6 | * Foundation, either version 3 of the License, or (at your option) any later version. 7 | * 8 | * SW7456 is distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; 9 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 10 | * See the GNU General Public License for more details. 11 | * 12 | * You should have received a copy of the GNU General Public License along with this software. 13 | * 14 | * If not, see . 15 | */ 16 | // *********************************************************************************************** // 17 | /* 18 | * osd_mixer.h 19 | * 20 | * Created on: Nov 21, 2019 21 | * Author: todd 22 | */ 23 | // *********************************************************************************************** // 24 | #ifndef OSD_MIXMUX_H_ 25 | #define OSD_MIXMUX_H_ 26 | // *********************************************************************************************** // 27 | #include "portable.h" 28 | // *********************************************************************************************** // 29 | extern U8 mixmux[8][4]; 30 | // *********************************************************************************************** // 31 | extern void osd_mixmux_init(void); 32 | extern void blink_mixmux(S32 on); 33 | extern void set_mixmux(void); 34 | // *********************************************************************************************** // 35 | #define SMOO 0x08 36 | #define ENABLE 0x01 37 | #define TADD SMOO|ENABLE 38 | #define TRANS 0x20+SMOO 39 | #define GEN 1 40 | // *********************************************************************************************** // 41 | #define DEEPBLACK 0x20+TADD 42 | #define BLACK 0x30+TADD 43 | #define GREY9 0x40+TADD 44 | #define GREY8 0x50+TADD 45 | #define GREY7 0x60+TADD 46 | #define GREY6 0x70+TADD 47 | #define GREY5 0x80+TADD 48 | #define GREY4 0x90+TADD 49 | #define GREY3 0xA0+TADD 50 | #define GREY2 0xB0+TADD 51 | #define GREY1 0xC0+TADD 52 | #define GREY0 0xD0+TADD 53 | #define WHITE 0xE0+TADD 54 | // *********************************************************************************************** // 55 | #endif 56 | -------------------------------------------------------------------------------- /osd/osd_registers.c: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of SW7456. 3 | * 4 | * SW7456 is free software. You can redistribute this software and/or modify this software 5 | * under the terms of the GNU General Public License as published by the Free Software 6 | * Foundation, either version 3 of the License, or (at your option) any later version. 7 | * 8 | * SW7456 is distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; 9 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 10 | * See the GNU General Public License for more details. 11 | * 12 | * You should have received a copy of the GNU General Public License along with this software. 13 | * 14 | * If not, see . 15 | */ 16 | // *********************************************************************************************** // 17 | /* 18 | * osd_registers.c 19 | * 20 | * Created on: Oct 21, 2019 21 | * Author: todd 22 | */ 23 | // *********************************************************************************************** // 24 | #include "osd_registers.h" 25 | #include "osd_mixmux.h" 26 | #include "osd_spi.h" 27 | #include "osd_irq.h" 28 | #include "osd_font.h" 29 | // *********************************************************************************************** // 30 | #define __DEBUG__ 0 31 | // *********************************************************************************************** // 32 | #if __DEBUG__ 33 | U8 spi_debug[512]; 34 | S32 sdi; 35 | 36 | void spi_debug_trigger(U8 addr,U8 data) 37 | { 38 | if (sdi>20) sdi=0; 39 | spi_debug[sdi++]=0xF0; 40 | spi_debug[sdi++]=addr; 41 | spi_debug[sdi++]=data; 42 | spi_debug[sdi++]=0xF0; 43 | } 44 | #else 45 | void spi_debug_trigger(U8 addr,U8 data) {} 46 | #endif 47 | // *********************************************************************************************** // 48 | const U8 register_default[] = { 49 | 0x00,0x47,0x20,0x10,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x1B,0x00,0x00,0x00, // 0x00 - 0x0F 50 | 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, // 0x10 - 0x1F 51 | }; 52 | // *********************************************************************************************** // 53 | // *********************************************************************************************** // 54 | U8 registers[32]; 55 | // *********************************************************************************************** // 56 | // *********************************************************************************************** // 57 | static U32 _index_; 58 | static const S32 offset=(COPYRIGHT_LINES*DISPLAY_WIDTH); 59 | // *********************************************************************************************** // 60 | // *********************************************************************************************** // 61 | void write_register_defaults(void) 62 | { 63 | U32 x; 64 | for (x=0;x<32;x++) registers[x]=register_default[x]; 65 | } 66 | // *********************************************************************************************** // 67 | static void _decode_outattr(U32 c) 68 | { 69 | if (registers[REG_7456_VM1]&R_7456_VM1_BM) c|=0x080; 70 | character_attribute[offset+_index_]=((c>>3)&0x1C); 71 | } 72 | // *********************************************************************************************** // 73 | static void _decode_outchar(U32 c) 74 | { 75 | character_address[offset+_index_]=&font[FONT_HEIGHT*c]; 76 | if (registers[REG_7456_VM1]&R_7456_VM1_BM) character_attribute[offset+_index_]|=0x10; 77 | } 78 | // *********************************************************************************************** // 79 | // *********************************************************************************************** // 80 | void osd_decode_spi_registers(U8 data) 81 | { 82 | static U8 spi_state=0; 83 | static U8 spi_addr=0; 84 | U8 last; 85 | 86 | #if __DEBUG__ 87 | if (sdi<512) spi_debug[sdi++]=data; 88 | #endif 89 | 90 | switch (spi_state) 91 | { 92 | case 0: // wait for address 93 | spi_addr=data; 94 | if (spi_addr&0x80) spi_state=2; // unsupported read 95 | else spi_state=1; 96 | break; 97 | 98 | case 1: 99 | spi_state=0; 100 | if (spi_addr<0x20) 101 | { 102 | last=registers[spi_addr]; 103 | registers[spi_addr]=data; 104 | 105 | switch(spi_addr) 106 | { 107 | case REG_7456_DMDI: 108 | if (data==0xFF && (registers[REG_7456_DMM]&R_7456_DMM_AIM)) registers[REG_7456_DMM]&=(~(R_7456_DMM_AIM)); 109 | else 110 | { 111 | if (registers[REG_7456_DMM]&R_7456_DMM_OMS) 112 | { 113 | if (registers[REG_7456_DMAH]&R_7456_DMAH_BSB) _decode_outattr(data); 114 | else _decode_outchar(data); 115 | } 116 | else {_decode_outchar(data); _decode_outattr((registers[REG_7456_DMM]&0x038)<<2);} 117 | 118 | if (registers[REG_7456_DMM]&R_7456_DMM_AIM) {_index_++; _index_&=CHAR_BUFF_MASK;} 119 | } 120 | break; 121 | 122 | case REG_7456_VM0: 123 | if ((last^data)&R_7456_VM0_SSM) ; // always auto select, should fix but lazy. 124 | 125 | // if ((last^data)&R_7456_VM0_ENO) osd_outirq_continue(); // may work, untested 126 | // else osd_outirq_pause(); 127 | 128 | if (data&R_7456_VM0_RST) 129 | { 130 | // osd_outirq_pause(); 131 | osd_cls(); 132 | write_register_defaults(); 133 | set_mixmux(); 134 | } 135 | break; 136 | 137 | case REG_7456_VM1: 138 | if ((last^data)&R_7456_VM1_BMB) set_mixmux(); 139 | break; 140 | 141 | case REG_7456_HOS: 142 | registers[REG_7456_HOS]=data&R_7456_HOS; 143 | break; 144 | 145 | case REG_7456_VOS: 146 | registers[REG_7456_VOS]=data&R_7456_VOS; 147 | break; 148 | 149 | case REG_7456_DMAH: //Display Memory Address high 150 | _index_=((data&1)<<8)|(_index_&0x00FF); 151 | break; 152 | 153 | case REG_7456_DMAL: //Display Memory Address Low 154 | _index_=(_index_&0x0100)|data; 155 | break; 156 | 157 | case REG_7456_RB0: // Row 0 is used to set the brightness for ALL rows, individual row brightness not supported. 158 | if (last^data) set_mixmux(); 159 | break; 160 | 161 | case REG_7456_DMM: //Display Memory mode 162 | // there are issues with flickering using betaflight and the CLS bit. 163 | // the timing of when the clear screen occurs differs from the actual part 164 | #if OSD_DISABLE_CLS_FOR_BETAFLIGHT 165 | 166 | #else 167 | if (data&R_7456_DMM_CDM) 168 | { 169 | registers[REG_7456_DMM]&=(~R_7456_DMM_CDM); 170 | osd_cls(); 171 | } 172 | #endif 173 | break; 174 | } 175 | } 176 | break; 177 | 178 | case 2: 179 | // Ignore 7456 SPI reads, they can not be supported. 180 | // SPI always reads 0x00 or 0xFF based on the pull-up configuration. 181 | // a zero should follow a read command, used to resync. 182 | if (data==0x00) spi_state=0; 183 | 184 | spi_debug_trigger(spi_addr,data); 185 | break; 186 | 187 | default: 188 | spi_state=0; 189 | } 190 | } 191 | // *********************************************************************************************** // 192 | // *********************************************************************************************** // 193 | -------------------------------------------------------------------------------- /osd/osd_registers.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of SW7456. 3 | * 4 | * SW7456 is free software. You can redistribute this software and/or modify this software 5 | * under the terms of the GNU General Public License as published by the Free Software 6 | * Foundation, either version 3 of the License, or (at your option) any later version. 7 | * 8 | * SW7456 is distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; 9 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 10 | * See the GNU General Public License for more details. 11 | * 12 | * You should have received a copy of the GNU General Public License along with this software. 13 | * 14 | * If not, see . 15 | */ 16 | // *********************************************************************************************** // 17 | /* 18 | * osd_registers.h 19 | * 20 | * Created on: Oct 21, 2019 21 | * Author: todd 22 | */ 23 | // *********************************************************************************************** // 24 | #ifndef OSD_REGISTERS_H_ 25 | #define OSD_REGISTERS_H_ 26 | // *********************************************************************************************** // 27 | #include "portable.h" 28 | // *********************************************************************************************** // 29 | extern U8 registers[]; 30 | // *********************************************************************************************** // 31 | extern void write_register_defaults(void); 32 | extern void osd_decode_spi_registers(U8 data); 33 | // *********************************************************************************************** // 34 | #define REG_7456_VM0 0x00 //Video Mode 0 35 | #define R_7456_VM0_VSS (1<<6) // Video Standard Select 0 = NTSC 1 = PAL 36 | #define R_7456_VM0_SSM (3<<4) // Sync Select Mode (Table 1) 0x = Autosync select 10 = External 11 = Internal 37 | #define R_7456_VM0_ENO (1<<3) // Enable Display of OSD Image 0 = Off 1 = On 38 | #define R_7456_VM0_VSY (1<<2) // Vertical Synchronization of On-Screen Data 0 = Enable on-screen display immediately 1 = Enable on-screen display at the next VSYNC 39 | #define R_7456_VM0_RST (1<<1) // Software Reset Bit 40 | #define R_7456_VM0_VBE (1<<0) // Video Buffer Enable 0 = Enable 1 = Disable (VOUT is high impedance) 41 | // *********************************************************************************************** // 42 | #define REG_7456_VM1 0x01 // Video Mode 1 43 | #define R_7456_VM1_BM (1<<7) // Background Mode 44 | #define R_7456_VM1_BMB (7<<4) // Background Mode Brightness 45 | #define R_7456_VM1_BT (3<<2) // Blinking Time 46 | #define R_7456_VM1_BDC (3<<0) // Blinking Duty Cycle 47 | // *********************************************************************************************** // 48 | #define REG_7456_HOS 0x02 // Horizontal Offset 49 | #define R_7456_HOS (63<<0) // Horizontal Position Offset, default 32 50 | // *********************************************************************************************** // 51 | #define REG_7456_VOS 0x03 // Vertical Offset 52 | #define R_7456_VOS (31<<0) // Vertical Position Offset, default 16 53 | // *********************************************************************************************** // 54 | #define REG_7456_DMM 0x04 // Display Memory Mode 55 | #define R_7456_DMM_OMS (1<<6) // Operation Mode Selection 0 = 16-bit operation mode 1 = 8-bit operation mode 56 | #define R_7456_DMM_LBC (1<<5) // Local Background Control Bit 57 | #define R_7456_DMM_BB (1<<4) // Blink Bit 58 | #define R_7456_DMM_IB (1<<3) // Invert Bit 59 | #define R_7456_DMM_CDM (1<<2) // Clear Display Memory 60 | #define R_7456_DMM_VSC (1<<1) // Vertical Sync Clear 61 | #define R_7456_DMM_AIM (1<<0) // Auto-Increment Mode 1 = Enabled 62 | // *********************************************************************************************** // 63 | #define REG_7456_DMAH 0x05 // Display Memory Address High 64 | #define R_7456_DMAH_BSB (1<<1) // Byte Selection Bit 0 = Character Address 1 = Character Attribute byte 65 | #define R_7456_DMAH_B8 (1<<0) // Display Memory Address Bit 8 66 | // *********************************************************************************************** // 67 | #define REG_7456_DMAL 0x06 // Display Memory Address Low 68 | #define R_7456_DMAL (0xFF) 69 | // *********************************************************************************************** // 70 | #define REG_7456_DMDI 0x07 // Display Memory Data In 71 | #define R_7456_DMDI_DATA (0xFF) // Write data memory 72 | // *********************************************************************************************** // 73 | #define REG_7456_CMM 0x08 // Character Memory Mode (NOT SUPPORTED) 74 | #define REG_7456_CMAH 0x09 // Character Memory Address High (NOT SUPPORTED) 75 | #define REG_7456_CMAL 0x0a // Character Memory Address Low (NOT SUPPORTED) 76 | #define REG_7456_CMDI 0x0b // Character Memory Data In (NOT SUPPORTED) 77 | #define REG_7456_OSDM 0x0c // OSD Insertion Mux (NOT SUPPORTED) 78 | // *********************************************************************************************** // 79 | // *********************************************************************************************** // 80 | #define REG_7456_RB0 0x10 // Row 0 Brightness this one applies to all rows 81 | #define REG_7456_RB1 0x11 // Row 0 Brightness (NOT SUPPORTED) 82 | #define REG_7456_RB2 0x12 // Row 0 Brightness (NOT SUPPORTED) 83 | #define REG_7456_RB3 0x13 // Row 0 Brightness (NOT SUPPORTED) 84 | #define REG_7456_RB4 0x14 // Row 0 Brightness (NOT SUPPORTED) 85 | #define REG_7456_RB5 0x15 // Row 0 Brightness (NOT SUPPORTED) 86 | #define REG_7456_RB6 0x16 // Row 0 Brightness (NOT SUPPORTED) 87 | #define REG_7456_RB7 0x17 // Row 0 Brightness (NOT SUPPORTED) 88 | #define REG_7456_RB8 0x18 // Row 0 Brightness (NOT SUPPORTED) 89 | #define REG_7456_RB9 0x19 // Row 0 Brightness (NOT SUPPORTED) 90 | #define REG_7456_RB10 0x1a // Row 0 Brightness (NOT SUPPORTED) 91 | #define REG_7456_RB11 0x1b // Row 0 Brightness (NOT SUPPORTED) 92 | #define REG_7456_RB12 0x1c // Row 0 Brightness (NOT SUPPORTED) 93 | #define REG_7456_RB13 0x1d // Row 0 Brightness (NOT SUPPORTED) 94 | #define REG_7456_RB14 0x1e // Row 0 Brightness (NOT SUPPORTED) 95 | #define REG_7456_RB15 0x1f // Row 15 Brightness (NOT SUPPORTED) 96 | #define R_7456_RB_BL (3<<2) // Row Black Level 97 | #define R_7456_RB_WL (3<<0) // Row White Level 98 | // *********************************************************************************************** // 99 | #define REG_7456_OSDBL 0x6c // OSD Black Level (NOT SUPPORTED) 100 | // *********************************************************************************************** // 101 | #endif /* OSD_REGISTERS_H_ */ 102 | -------------------------------------------------------------------------------- /osd/osd_spi.c: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of SW7456. 3 | * 4 | * SW7456 is free software. You can redistribute this software and/or modify this software 5 | * under the terms of the GNU General Public License as published by the Free Software 6 | * Foundation, either version 3 of the License, or (at your option) any later version. 7 | * 8 | * SW7456 is distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; 9 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 10 | * See the GNU General Public License for more details. 11 | * 12 | * You should have received a copy of the GNU General Public License along with this software. 13 | * 14 | * If not, see . 15 | */ 16 | // *********************************************************************************************** // 17 | /* 18 | * osd_spi.c 19 | * 20 | * Created on: Sep 24, 2019 21 | * Author: todd 22 | */ 23 | // *********************************************************************************************** // 24 | #include "main.h" 25 | #include "osd_spi.h" 26 | #include "osd_registers.h" 27 | // *********************************************************************************************** // 28 | extern SPI_HandleTypeDef hspi1; 29 | // *********************************************************************************************** // 30 | U8 spi_data[SPI_BUFF_SIZE] ; // __attribute__ ((section (".spi_buffer"))); 31 | // *********************************************************************************************** // 32 | void osd_spi_start(void) 33 | { 34 | HAL_SPI_Receive_DMA(&hspi1,(uint8_t *)spi_data,SPI_BUFF_SIZE); 35 | } 36 | // *********************************************************************************************** // 37 | void osd_spi_stop(void) 38 | { 39 | // unused 40 | } 41 | // *********************************************************************************************** // 42 | void osd_spi_process(void) 43 | { 44 | static U32 x_last=0; 45 | U32 x; 46 | U32 *CNDTR2=(U32 *)(0x0020 + ((int)DMA1)); 47 | 48 | x=(SPI_BUFF_SIZE-*CNDTR2)&SPI_BUFF_MASK; 49 | 50 | while (x!=x_last) 51 | { 52 | osd_decode_spi_registers(spi_data[x_last]); 53 | x_last++; x_last&=SPI_BUFF_MASK; 54 | } 55 | } 56 | // *********************************************************************************************** // 57 | -------------------------------------------------------------------------------- /osd/osd_spi.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of SW7456. 3 | * 4 | * SW7456 is free software. You can redistribute this software and/or modify this software 5 | * under the terms of the GNU General Public License as published by the Free Software 6 | * Foundation, either version 3 of the License, or (at your option) any later version. 7 | * 8 | * SW7456 is distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; 9 | * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 10 | * See the GNU General Public License for more details. 11 | * 12 | * You should have received a copy of the GNU General Public License along with this software. 13 | * 14 | * If not, see . 15 | */ 16 | // *********************************************************************************************** // 17 | /* 18 | * osd_spi.h 19 | * 20 | * Created on: Sep 24, 2019 21 | * Author: todd 22 | */ 23 | // *********************************************************************************************** // 24 | #ifndef OSD_SPI_H_ 25 | #define OSD_SPI_H_ 26 | // *********************************************************************************************** // 27 | #include "portable.h" 28 | // *********************************************************************************************** // 29 | extern void osd_spi_process(void); 30 | extern void osd_spi_start(void); 31 | extern void osd_spi_stop(void); 32 | // *********************************************************************************************** // 33 | #endif 34 | 35 | -------------------------------------------------------------------------------- /osd/portable.h: -------------------------------------------------------------------------------- 1 | /* 2 | * portable.h 3 | * 4 | * Created on: Sep 24, 2019 5 | * Author: todd 6 | */ 7 | 8 | #ifndef PORTABLE_H_ 9 | #define PORTABLE_H_ 10 | 11 | #include "main.h" 12 | 13 | typedef int32_t S32; 14 | typedef uint32_t U32; 15 | typedef int16_t S16; 16 | typedef uint16_t U16; 17 | typedef int8_t S8; 18 | typedef uint8_t U8; 19 | 20 | #include "osd_config.h" 21 | 22 | #endif /* PORTABLE_H_ */ 23 | --------------------------------------------------------------------------------