From 58eabf72b25ffde64539d7e9998fa044eea6f63d Mon Sep 17 00:00:00 2001 From: Wayne Venables Date: Sun, 5 Mar 2023 23:23:16 -0800 Subject: [PATCH] Additional documentation --- DoxygenLayout.xml | 5 +- Index.md | 2 + Readme.md | 2 +- doxygen.cfg | 6 +- src/define.h | 11 ++-- src/picovga.h | 27 ++++---- src/util/canvas.h | 18 +++--- src/util/mat2d.h | 14 ++-- src/util/overclock.h | 82 ++++++++++++++--------- src/util/print.h | 151 ++++++++++++++++++++++++++++++++----------- src/util/pwmsnd.h | 68 ++++++++++++++++--- src/vga.h | 16 ++--- src/vga_layer.h | 24 ++++--- src/vga_pal.h | 14 ++-- src/vga_screen.h | 14 ++-- src/vga_vmode.h | 16 ++--- 16 files changed, 316 insertions(+), 154 deletions(-) diff --git a/DoxygenLayout.xml b/DoxygenLayout.xml index 804bff9..7d4a66d 100644 --- a/DoxygenLayout.xml +++ b/DoxygenLayout.xml @@ -34,6 +34,7 @@ + @@ -128,7 +129,8 @@ - + + @@ -149,7 +151,6 @@ - diff --git a/Index.md b/Index.md index 2cc4029..0bf27b2 100644 --- a/Index.md +++ b/Index.md @@ -33,3 +33,5 @@ To try out the library, the simplest approach is to take 8 resistors and connect * Automatic overclocking of the processor according to the desired resolution * The library uses the 2nd core of the processor, the 1st core is reserved for the main program * Additional PWM audio output (not required) + +test link LayerSpriteSetup() diff --git a/Readme.md b/Readme.md index 3817fbb..a99332d 100644 --- a/Readme.md +++ b/Readme.md @@ -1,4 +1,4 @@ -# PicoVGA Library - VGA/TV display on Raspberry Pico +# PicoVGA - VGA/TV display on Raspberry Pico ## About this Fork This is a fork of the [PicoVGA project](https://github.com/Panda381/PicoVGA) created by Miroslav Nemecek (Panda38@seznam.cz). It has been altered from the original to use the standard Linux-based Pico SDK. diff --git a/doxygen.cfg b/doxygen.cfg index 1dff000..e97ae77 100644 --- a/doxygen.cfg +++ b/doxygen.cfg @@ -32,19 +32,19 @@ DOXYFILE_ENCODING = UTF-8 # title of most generated pages and in a few other places. # The default value is: My Project. -PROJECT_NAME = "PicoVGA Library" +PROJECT_NAME = "PicoVGA" # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.0.1 +PROJECT_NUMBER = 1.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a # quick idea about the purpose of the project. Keep the description short. -PROJECT_BRIEF = "" +PROJECT_BRIEF = "VGA/TV display on Raspberry Pico" # With the PROJECT_LOGO tag one can specify a logo or an icon that is included # in the documentation. The maximum height of the logo should not exceed 55 diff --git a/src/define.h b/src/define.h index cd8675c..8012dcf 100644 --- a/src/define.h +++ b/src/define.h @@ -1,9 +1,8 @@ - -// **************************************************************************** -// -// VGA common definitions of C and ASM -// -// **************************************************************************** +/** + * @file + * @brief VGA common definitions of C and ASM + * @author Miroslav Nemecek +*/ #include "vga_config.h" // VGA configuration diff --git a/src/picovga.h b/src/picovga.h index b9b3002..98197a3 100644 --- a/src/picovga.h +++ b/src/picovga.h @@ -1,9 +1,8 @@ - -// **************************************************************************** -// -// Global common definitions -// -// **************************************************************************** +/** + * @file + * @brief Global common definitions + * @author Miroslav Nemecek +*/ // ---------------------------------------------------------------------------- // Base data types @@ -12,12 +11,16 @@ #ifndef _PICOVGA_H #define _PICOVGA_H -/// @defgroup VideoInit Video/Library Initialization -/// @defgroup VideoMode Configurating Video Mode -/// @defgroup Screen Screen Layout -/// @defgroup Layers Overlay Layers -/// @defgroup Colors Colors and Palettes -/// @defgroup Canvas Canvas +/// @defgroup VideoInitGroup Video/Library Initialization +/// @defgroup VideoModeGroup Configurating Video Mode +/// @defgroup ScreenGroup Screen Layout +/// @defgroup LayersGroup Overlay Layers and Sprites +/// @defgroup ColorsGroup Colors and Palettes +/// @defgroup CanvasGroup Canvas +/// @defgroup OverclockGroup CPU Overclocking +/// @defgroup TextGroup Text Printing +/// @defgroup PWMGroup PWM Audio +/// @defgroup Core1Group Second Core typedef signed char s8; typedef unsigned char u8; diff --git a/src/util/canvas.h b/src/util/canvas.h index 620cf28..e229f5b 100644 --- a/src/util/canvas.h +++ b/src/util/canvas.h @@ -1,9 +1,9 @@ - -// **************************************************************************** -// -// Canvas -// -// **************************************************************************** +/** + * @file + * @brief Canvas + * @author Miroslav Nemecek + * @see CanvasGroup +*/ #ifndef _CANVAS_H #define _CANVAS_H @@ -11,7 +11,7 @@ #define DRAW_HWINTER 1 // 1=use hardware interpolator to draw images /** - * @addtogroup Canvas + * @addtogroup CanvasGroup * @brief Drawing board for shapes and images * @details Canvas is a drawing board. It is a support library for working with graphical surfaces and images (see the canvas.h * file in the _picovga\util folder). The sCanvas structure is a set of parameters that describe the graphical surface, for use @@ -209,7 +209,7 @@ enum { * @param y Destination vertical position * @param w Destination width * @param h Destination height - * @param m Transformation matrix (should be prepared using PrepDrawImg() or PrepDrawPersp() function) + * @param m Transformation matrix (should be prepared using cMat2Df::PrepDrawImg() function) * @param col Key or border color */ void DrawImgMat(sCanvas* canvas, const sCanvas* src, int x, int y, int w, int h, @@ -227,7 +227,7 @@ void DrawImgMat(sCanvas* canvas, const sCanvas* src, int x, int y, int w, int h, * @param y Destination vertical position * @param w Destination width * @param h Destination height - * @param mat Transformation matrix (should be prepared using PrepDrawPersp() function) + * @param mat Transformation matrix (should be prepared using cMat2Df::PrepDrawImg() function) * @param horizon Horizon offset (0 = do not use perspective projection) */ void DrawTileMap(sCanvas* canvas, const sCanvas* src, const u8* map, int mapwbits, int maphbits, diff --git a/src/util/mat2d.h b/src/util/mat2d.h index 76e7e68..16c0926 100644 --- a/src/util/mat2d.h +++ b/src/util/mat2d.h @@ -1,9 +1,9 @@ - -// **************************************************************************** -// -// 2D Transformation Matrix -// -// **************************************************************************** +/** + * @file + * @brief 2D Transformation Matrix + * @author Miroslav Nemecek + * @see CanvasGroup +*/ #ifndef _MAT2D_H #define _MAT2D_H @@ -249,7 +249,7 @@ public: #define TOFRACT(f) ((int)((f)*FRACTMUL + (((f) < 0) ? -0.5f : 0.5f))) -/// @addtogroup Canvas +/// @addtogroup CanvasGroup /// @{ /** diff --git a/src/util/overclock.h b/src/util/overclock.h index 8e87dbe..fb92f8f 100644 --- a/src/util/overclock.h +++ b/src/util/overclock.h @@ -1,43 +1,67 @@ - -// **************************************************************************** -// -// Overclock -// -// **************************************************************************** +/** + * @file + * @brief Overclock + * @author Miroslav Nemecek + * @see OverclockGroup +*/ #ifndef _OVERCLOCK_H #define _OVERCLOCK_H #include "pico/stdlib.h" -// Search PLL setup -// reqkhz ... required output frequency in kHz -// input ... PLL input frequency in kHz (default 12000, or use clock_get_hz(clk_ref)/1000) -// vcomin ... minimal VCO frequency in kHz (default 400000) -// vcomax ... maximal VCO frequency in kHz (default 1600000) -// lowvco ... prefer low VCO (lower power but more jiter) -// outputs: -// outkhz ... output achieved frequency in kHz (0=not found) -// outvco ... output VCO frequency in kHz -// outfbdiv ... output fbdiv (16..320) -// outpd1 ... output postdiv1 (1..7) -// outpd2 ... output postdiv2 (1..7) -// Returns true if precise frequency has been found, or near frequency used otherwise. +/** + * @addtogroup OverclockGroup + * @details Some display functions may be CPU speed intensive and may require overclocking to a higher speed. It should be + * understood that overclocking places the processor in areas where proper function is not guaranteed. The PicoVGA library + * allows you to control the overclocking of the processor, according to the desired video mode. The minimum and maximum + * processor frequency can be specified in the VgaCfg function. By default, the library allows a range of 120 to 270 MHz. + * However, it may happen that at higher frequencies the processor will not operate correctly and it may be necessary to + * lower the upper limit. + * The searched processor frequency can be set with the set_sys_clock_pll() function. + * @{ +*/ + +/** + * @brief Search PLL setup + * @details Function for finding the optimal setting of the PLL system clock generator. The function is used to specify the + * desired output frequency, the input frequency of the crystal (12 MHz in Raspberry Pico), the minimum and maximum frequency + * of the VCO oscillator. The output is the parameters for setting the PLL oscillator. The function returns True if it was + * able to find a setting for the exact value of the desired frequency. Otherwise, it searches for the setting for the closest + * frequency and returns False. + * @param reqkhz Required output frequency in kHz + * @param input PLL input frequency in kHz (default 12000, or use clock_get_hz(clk_ref)/1000) + * @param vcomin Minimal VCO frequency in kHz (default 400000) + * @param vcomax Maximal VCO frequency in kHz (default 1600000) + * @param lowvco Prefer low VCO (lower power but more jiter) + * @param outkhz Output achieved frequency in kHz (0=not found) + * @param outvco Output VCO frequency in kHz + * @param outfbdiv Output fbdiv (16..320) + * @param outpd1 Output postdiv1 (1..7) + * @param outpd2 Output postdiv2 (1..7) + * @returns True if precise frequency has been found, or near frequency used otherwise. +*/ bool vcocalc(u32 reqkhz, u32 input, u32 vcomin, u32 vcomax, bool lowvco, u32* outkhz, u32* outvco, u16* outfbdiv, u8* outpd1, u8* outpd2); -// find sysclock setup (use set_sys_clock_pll to set sysclock) -// reqkhz ... required frequency in kHz -// outputs: -// outkhz ... output achieved frequency in kHz (0=not found) -// outvco ... output VCO frequency in kHz -// outfbdiv ... output fbdiv (16..320) -// outpd1 ... output postdiv1 (1..7) -// outpd2 ... output postdiv2 (1..7) -// Returns true if precise frequency has been found, or near frequency used otherwise. +/** + * @brief Find PLL generator settings with default parameters. (use set_sys_clock_pll to set sysclock) + * @param reqkhz Required frequency in kHz + * @param outkhz Output achieved frequency in kHz (0=not found) + * @param outvco Output VCO frequency in kHz + * @param outfbdiv Output fbdiv (16..320) + * @param outpd1 Output postdiv1 (1..7) + * @param outpd2 Output postdiv2 (1..7) + * @returns True if precise frequency has been found, or near frequency used otherwise. +*/ bool FindSysClock(u32 reqkhz, u32* outkhz, u32* outvco, u16* outfbdiv, u8* outpd1, u8* outpd2); -// set flash SSI speed (4 default, <4 faster, >4 slower) +/** + * @brief Setting the interface speed for external flash. + * @param baud Flash SSI speed (4 default, <4 faster, >4 slower) +*/ void __not_in_flash_func(FlashSpeedSetup)(int baud); +/// @} + #endif // _OVERCLOCK_H diff --git a/src/util/print.h b/src/util/print.h index 537c8e5..5b0f534 100644 --- a/src/util/print.h +++ b/src/util/print.h @@ -1,13 +1,20 @@ - -// **************************************************************************** -// -// Print to attribute text buffer (format GF_ATEXT and GF_MTEXT) -// -// **************************************************************************** +/** + * @file + * @brief Print to attribute text buffer + * @author Miroslav Nemecek + * @see TextGroup +*/ #ifndef _PRINT_H #define _PRINT_H +/** + * @addtogroup TextGroup + * @details The functions for printing text are used to output text to the text frame buffer. Currently supported buffer + * formats are GF_ATEXT (text with color attribute) and GF_MTEXT (mono text). + * @{ +*/ + // text colors (if using PC CGA colors) #define PC_BLACK 0 #define PC_BLUE 1 @@ -35,75 +42,147 @@ #define CHAR_CR '\r' #define CHAR_LF '\n' #define CHAR_TAB '\t' -#define CHAR_FRAME 16 // frame base -#define FRAME_L B0 // frame left flag -#define FRAME_U B1 // frame up flag -#define FRAME_R B2 // frame right flag -#define FRAME_D B3 // frame down flag +#define CHAR_FRAME 16 ///< Frame base +#define FRAME_L B0 ///< Frame left flag +#define FRAME_U B1 ///< Frame up flag +#define FRAME_R B2 ///< Frame right flag +#define FRAME_D B3 ///< Frame down flag -#define CHAR_FRAME_FIRST 17 // first frame character -#define CHAR_FRAME_LAST 31 // last frame character -#define CHAR_VLINE (CHAR_FRAME|FRAME_U|FRAME_D) // vertical line -#define CHAR_HLINE (CHAR_FRAME|FRAME_L|FRAME_R) // horizontal line +#define CHAR_FRAME_FIRST 17 ///< First frame character +#define CHAR_FRAME_LAST 31 ///< Last frame character +#define CHAR_VLINE (CHAR_FRAME|FRAME_U|FRAME_D) ///< Vertical line +#define CHAR_HLINE (CHAR_FRAME|FRAME_L|FRAME_R) ///< Horizontal line -// current print buffer +// Current print buffer extern u8* PrintBuf; -// size of print buffer +// Size of print buffer extern int PrintBufW, PrintBufH, PrintBufWB; -// print position +// Print position extern int PrintX, PrintY; -// print color +// Current print color extern u8 PrintCol; -// setup print service (if bufwb < 2*bufw, use mono text) +/** + * @brief Setup print service + * @details Initialization of the text printing service. The function is passed a pointer to the text frame buffer and + * its dimensions. If the line length in bytes is less than twice the width, the mono text format GF_MTEXT is selected, + * otherwise the format with the GF_ATEXT attributes is used. This function is automatically called when the video mode + * is initialized using the Video() function. + * @param buf Pointer to buffer + * @param bufw Buffer width in characters + * @param bufh Buffer height in characters + * @param bufwb Buffer width in bytes (if bufwb < 2*bufw, use mono text) +*/ void PrintSetup(u8* buf, int bufw, int bufh, int bufwb); -// clear text screen, using current color +/** + * @brief Clear the text buffer with the currently selected color. +*/ void PrintClear(); -// print home +/** + * @brief Move the pointer to the beginning of the first line. +*/ void PrintHome(); -// set print position +/** + * @brief Set print position + * @param x Column position + * @param y Row position +*/ void PrintSetPos(int x, int y); -// shift relative print position +/** + * @brief Shift relative print position + * @param x Add column position + * @param y Add row position +*/ void PrintAddPos(int x, int y); -// set print color (2x4 bits of colors, use PC_COLOR macro) +/** + * @brief Set print color (2x4 bits of colors) + * @param col Color - Use the PC_COLOR macro +*/ void PrintSetCol(u8 col); -// print character, not using control characters +/** + * @brief Print character, not using control characters + * @param ch Character to print +*/ void PrintChar0(char ch); - -// print character, using control characters CR, LF, TAB + +/** + * @brief Print character, using control characters CR, LF, TAB + * @param ch Character to print +*/ void PrintChar(char ch); -// print space character +/** + * @brief Print space character +*/ void PrintSpc(); -// print space to position +/** + * @brief Printing spaces up to the specified position + * @param pos Position +*/ void PrintSpcTo(int pos); -// print repeated character +/** + * @brief Print repeated character + * @param ch Character + * @param num Number of times to repeat +*/ void PrintCharRep(char ch, int num); -// print repeated space +/** + * @brief Print repeated space + * @param num Number of times to repeat +*/ void PrintSpcRep(int num); -// print text +/** + * @brief Print a string + * @param text String to print +*/ void PrintText(const char* text); -// print horizontal line into screen, using current color (must not stretch outside valid range!) +/** + * @brief Print horizontal line into screen, using current color + * @details Horizontal line drawing. Line drawing characters with code 17 to 31 are used for drawing, as overridden in the + * PicoVGA library fonts. When drawing, the line is combined with the characters already in the print buffer so that the lines + * are properly joined and overlapped. The function does not treat overflows outside the allowed display range. + * @note Must not stretch outside valid range + * @param x Column position + * @param y Row position + * @param w Width of line +*/ void PrintHLine(int x, int y, int w); -// print vertical line into screen, using current color (must not stretch outside valid range!) +/** + * @brief Print vertical line into screen, using current color + * @details Vertical line drawing. Line drawing characters with code 17 to 31 are used for drawing, as overridden in the + * PicoVGA library fonts. When drawing, the line is combined with the characters already in the print buffer so that the lines + * are properly joined and overlapped. The function does not treat overflows outside the allowed display range. + * @note Must not stretch outside valid range + * @param x Column position + * @param y Row position + * @param h Height of line +*/ void PrintVLine(int x, int y, int h); -// print frame, using current color +/** + * @brief Print frame, using current color + * @param x Column position + * @param y Row position + * @param w Width of line + * @param h Height of line +*/ void PrintFrame(int x, int y, int w, int h); +/// @} + #endif // _PRINT_H diff --git a/src/util/pwmsnd.h b/src/util/pwmsnd.h index 651c792..b51d86f 100644 --- a/src/util/pwmsnd.h +++ b/src/util/pwmsnd.h @@ -1,3 +1,9 @@ +/** + * @file + * @brief PWM sound output + * @author Miroslav Nemecek + * @see PWMGroup +*/ // **************************************************************************** // @@ -32,26 +38,68 @@ extern volatile int SoundAcc; // pointer accumulator extern const u8* NextSound; // next sound to play repeated sound extern int NextSoundCnt; // counter of next sound (0=no repeated sound) -// initialize PWM sound output +/** + * @addtogroup PWMGroup + * @details The PicoVGA library includes support for audio output using PWM modulation. By default, the audio output is done + * on the GPIO19 port - defined in the pwmsnd.h file. The port can be connected to directly (e.g. headphones) or better via + * a simple RC filter with low pass. Audio output using PWM modulation has the advantage that 1 output pin is sufficient and + * the output circuitry is very simple. The disadvantages are the noise of the sound modulation frequency and the low bit + * depth of the sound (8 bit depth is used). Higher depth is not possible because of the limited processor frequency. This + * output is sufficient for most common, undemanding applications (such as retro games). For higher sound quality, another + * method must be used. + * * Sounds are at format 8-bit unsigned (middle at 128), 22050 samples per second, mono + * * PWM cycle is 256: TOP = 255 + * * Required PWM clock: 22050*256 = 5644800 Hz + * * GP19 ... MOSI + sound output (PWM1 B) + * @{ +*/ + +/** + * @brief Initialize PWM sound output + * @note If the system clock changes, you must reinitialize the audio output settings by calling this function again. +*/ void PWMSndInit(); -// output PWM sound (sound must be PCM 8-bit mono 22050Hz) -// snd = pointer to sound -// len = length of sound in number of samples -// speed = relative speed (1=normal) -// rep = True to repeat sample +/** + * @brief Output PWM sound + * @details The audio must be in uncompressed PCM format, mono, 8 bits, frequency 22050 Hz. The parameters can be used to + * specify whether the sound will be repeated and the relative speed at which it will be played (the 'speed' parameter can + * be used to speed up or slow down the sound). + * @param snd Pointer to sound + * @param len Length of sound in number of samples + * @param rep True to repeat sample + * @param speed Relative speed (1=normal) +*/ void PlaySound(const u8* snd, int len, Bool rep = False, float speed = 1.0f); -// stop playing sound +/** + * @brief stop playing sound + * @details The output to the output pin will continue to be output (it will appear as a low noise), but the value of + * zero 128 will be used. +*/ void StopSound(); // update sound speed (1=normal speed) +/** + * @brief Update sound speed + * @details Used when repeatedly playing a sound to change the pitch (e.g. the sound of a car engine). + * @param speed Relative speed (1.0 represents the standard playback speed) +*/ void SpeedSound(float speed); - -// check if playing sound + +/** + * @brief Check if playing sound +*/ Bool PlayingSound(); -// set next repeated sound +/** + * @brief Set the next sound to play. + * @details Used for repeated sounds to finish playing the current sound and continue with the next sound. + * @param snd Pointer to sound + * @param len Length of sound in number of samples +*/ void SetNextSound(const u8* snd, int len); +/// @} + #endif // _PWMSND_H diff --git a/src/vga.h b/src/vga.h index b583247..ac86003 100644 --- a/src/vga.h +++ b/src/vga.h @@ -1,9 +1,9 @@ - -// **************************************************************************** -// -// VGA output -// -// **************************************************************************** +/** + * @file + * @brief Video/Library Initialization + * @author Miroslav Nemecek + * @see VideoInitGroup +*/ #ifndef _VGA_H #define _VGA_H @@ -115,7 +115,7 @@ void ScanlineTypePrint(const u8* scan, int lines); void VgaInit(const sVmode* vmode); //, u8 layer1mode=LAYERMODE_BASE, u8 layer2mode=LAYERMODE_BASE, u8 layer3mode=LAYERMODE_BASE); /** - * @addtogroup VideoInit + * @addtogroup VideoInitGroup * @brief Functions for initialzing the library * @details The video mode can be initialized either simply by the Video() function or in more detail by the following functions. * @{ @@ -142,7 +142,7 @@ void VgaInitReq(const sVmode* vmode); /// @} /** - * @addtogroup Core Second core + * @addtogroup Core1Group * @brief Execute functions on the second core * @details If the 2nd core is not too busy generating the video, it can be passed a request to perform the function. * This does not affect the video generation, it may just happen that the requested function runs slowly when the diff --git a/src/vga_layer.h b/src/vga_layer.h index 9877b90..de60b9f 100644 --- a/src/vga_layer.h +++ b/src/vga_layer.h @@ -1,9 +1,9 @@ - -// **************************************************************************** -// -// VGA layers -// -// **************************************************************************** +/** + * @file + * @brief VGA layers + * @author Miroslav Nemecek + * @see LayersGroup +*/ #ifndef _VGA_LAYER_H #define _VGA_LAYER_H @@ -75,7 +75,7 @@ extern sLayerMode CurLayerMode[LAYERS]; // copy of current layer mode extern u8 LayerMask; // mask of active layers /** - * @addtogroup Layers + * @addtogroup LayersGroup * @details The display of the image by the PicoVGA library is performed by the PIO processor controller. PIO0 is used. * The other controller, PIO1, is unused and can be used for other purposes. PIO0 contains a 4 state machine, SM0 to SM3. * All PIO0 state machines use a common program of 32 instructions. Each state machine serves 1 overlay layer. SM0 services @@ -84,8 +84,14 @@ extern u8 LayerMask; // mask of active layers * use the other part of the program memory, 17 instructions starting at address 0. This part may change, depending on the mode * of the overlay layers. All 3 overlay layers use a common program and must therefore operate in the same display mode. Some * overlay modes use the same program and can be shared - see the table below for details. - * @note Only base layer 0 can contain segments in different formats. Overlay layers 1 to 3 are independent of the base layer format, sharing only the total display area with the base layer, but using their own image format, for which only the coordinates and dimensions are specified. - * describes the contents of the display. The Raspberry Pico has a limited RAM size and cannot accommodate a high resolution image. Therefore, the image must be composed of smaller segments to minimize the memory-intensive parts. + * @note Only base layer 0 can contain segments in different formats. Overlay layers 1 to 3 are independent of the base layer + * format, sharing only the total display area with the base layer, but using their own image format, for which only the + * coordinates and dimensions are specified. + * @par + * Overlay layers can use one of the following programs: + * * LAYERPROG_BASE - The base layer 0 program. Cannot be used for overlay layers. Using the parameter + * for an overlay layer means that the layer is inactive (not using the program). + * * LAYERPROG_KEY - Layer with key color. The specified color is replaced by transparency. * @{ */ diff --git a/src/vga_pal.h b/src/vga_pal.h index d0686e6..d8e5074 100644 --- a/src/vga_pal.h +++ b/src/vga_pal.h @@ -1,15 +1,15 @@ - -// **************************************************************************** -// -// VGA colors and palettes -// -// **************************************************************************** +/** + * @file + * @brief VGA colors and palettes + * @author Miroslav Nemecek + * @see ColorsGroup +*/ #ifndef _VGA_PAL_H #define _VGA_PAL_H /** - * @addtogroup Colors + * @addtogroup ColorsGroup * @{ */ diff --git a/src/vga_screen.h b/src/vga_screen.h index f59baf0..cde1ef8 100644 --- a/src/vga_screen.h +++ b/src/vga_screen.h @@ -1,15 +1,15 @@ - -// **************************************************************************** -// -// VGA screen layout -// -// **************************************************************************** +/** + * @file + * @brief VGA screen layout + * @author Miroslav Nemecek + * @see ScreenGroup +*/ #ifndef _VGA_SCREEN_H #define _VGA_SCREEN_H /** -* @addtogroup Screen +* @addtogroup ScreenGroup * @brief Defining the layout of the display * @details When displaying screen image, the default pointer is pScreen for the library. It points to the sScreen structure that * describes the contents of the display. The Raspberry Pico has a limited RAM size and cannot accommodate a high resolution image. diff --git a/src/vga_vmode.h b/src/vga_vmode.h index 387710b..2603437 100644 --- a/src/vga_vmode.h +++ b/src/vga_vmode.h @@ -1,15 +1,15 @@ - -// **************************************************************************** -// -// VGA videomodes -// -// **************************************************************************** +/** + * @file + * @brief VGA videomodes + * @author Miroslav Nemecek + * @see VideoModeGroup +*/ #ifndef _VGA_VMODE_H #define _VGA_VMODE_H /** - * @addtogroup VideoMode + * @addtogroup VideoModeGroup * @brief Structures and functions for configuring video modes * @details The sVgaCfg structure contains the required properties of the video mode: the display resolution, * the minimum processor frequency and the timing of the sVideo signal, possibly also the required overlay mode. @@ -251,7 +251,7 @@ void VgaCfg(const sVgaCfg* cfg, sVmode* vmode); /// @} -/// @addtogroup VideoInit +/// @addtogroup VideoInitGroup /// @{ /**