├── 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 |
--------------------------------------------------------------------------------