Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Releases: xrip/pico-286

Full VGA/EGA support

17 Oct 05:31

Choose a tag to compare

๐ŸŽฏ Major Features & Improvements

VGA/EGA Graphics System Overhaul

  • Complete VGA 256KB Support: Full implementation of VGA graphics modes with 256KB video memory using planar memory layout with 0xP3P2P1P0 byte packing
  • EGA Graphics Modes: Added support for EGA 320x200x16 (0x0D), 640x200x16 (0x0E), and 640x350x16 (0x10) modes with proper plane expansion
  • VGA Mode Implementation: Complete VGA 640x480x16 (0x12) and enhanced VGA 320x200x256 (0x13) rendering
  • Chain4 Mode Support: Proper handling of VGA chain4 mode for 256-color graphics with chain4 flag in vga_cache_t
  • Pixel Packing Optimization: Replaced spread4_u32 with ega_pack8_from_planes for improved clarity and code reuse across platforms
  • Enhanced Memory Access: Added vga_mem_read16 implementation and optimized memory read/write operations with 32-bit latch system
  • Plane Expansion LUT: Added 16-entry plane expansion lookup table for efficient bit-plane to pixel conversion

Cross-Platform Graphics Performance

  • Unified Rendering Logic: Standardized graphics rendering across Windows, Linux, and Pico platforms
  • Loop Unrolling: Optimized EGA/VGA rendering loops for improved performance
  • Bitwise Operations: Replaced division with bitwise operations for better performance
  • Memory Alignment: 4-byte alignment for PSRAM variables and video memory buffers

PSRAM & Memory Management

  • Butter-PSRAM Support: Auto-detection and configuration for Butter-PSRAM hardware with dynamic GPIO pin detection (GPIO 8 for MURM20, GPIO 47 for PIMO, GPIO 19 default)
  • Dynamic Memory Allocation: Runtime PSRAM size detection (16MB, 8MB, 4MB, 1MB) with validation through test patterns
  • Memory Layout Optimization: 4-byte alignment for all PSRAM variables (RAM, UMB, HMA, EMS) with aligned(4) attribute
  • Virtual Memory Enhancement: Enhanced XMS/EMS memory management with shared UMB support and proper alignment
  • PSRAM Frequency Control: Configurable PSRAM frequency (166MHz default) with timing adjustments
  • Memory Mapping: PSRAM mapped at 0x11000000 with optimized access patterns

Platform-Specific Improvements

Raspberry Pi Pico (RP2040/RP2350)

  • CPU Frequency Handling: Dynamic frequency configuration - 504MHz for Pico2 with HDMI, 378MHz for other HDMI configurations, 500MHz default
  • PSRAM GPIO Auto-Detect: Automatic detection of onboard PSRAM GPIO configurations with hardware-specific pinouts
  • Flash Frequency Control: Configurable flash frequency (100MHz default) with build name integration (F100-P166-500MHz format)
  • Build Configuration: Streamlined CMake configuration with platform-specific optimizations and conditional compilation
  • Performance Optimization: Strategic register keyword usage and memory access optimizations with #pragma GCC optimize("Ofast")

Windows/Linux Host Builds

  • MiniFB Integration: Improved MiniFB graphics interface with cleaner code
  • All Video Modes: Complete support for PX3 video modes across all platforms
  • Build Fixes: Resolved compilation issues across different host platforms

๐Ÿ› Bug Fixes & Stabilization

Video System Fixes

  • 40x25 Text Modes: Fixed rendering issues in 40-column text modes
  • CGA Rendering: Corrected pointer types and rendering logic
  • Palette Handling: Fixed incorrect palette usage in 640x350 EGA mode
  • Boundary Checks: Removed redundant checks while maintaining safety

Memory Management Fixes

  • XMS Alignment: Fixed 4-byte alignment for UMB memory blocks
  • EMS Integration: Improved Expanded Memory Specification handling
  • Memory Leaks: Resolved memory allocation and deallocation issues
  • Swap System: Enhanced virtual memory swapping mechanisms

Audio & I/O Fixes

  • Speaker Sample Integration: Fixed sound mixing logic for PC speaker
  • Sound Blaster Emulation: Resolved swap-related sound card issues
  • Port Handling: Improved I/O port access and timing

โšก Performance Optimizations

Rendering Performance

  • Bit Spreading Optimization: Fast bit spreading for EGA/VGA pixel processing
  • Loop Unrolling: Reduced instruction count in critical rendering paths
  • Memory Access Patterns: Optimized video memory access for better cache utilization
  • Reduced Redundancy: Eliminated unnecessary buffer writes and calculations

Memory Performance

  • Aligned Memory Access: 4-byte alignment for improved ARM architecture performance
  • PSRAM Optimization: Optimized external PSRAM access patterns
  • Virtual Memory: Improved page file access and caching

CPU Optimization

  • Register Usage: Strategic use of register keyword for frequently accessed variables
  • Bitwise Operations: Replaced expensive operations with faster alternatives
  • Function Inlining: Critical path optimizations for better performance

๐Ÿ”ง Technical Improvements

Code Quality & Architecture

  • Const Correctness: Added const qualifiers throughout codebase for better type safety
  • Type Safety: Improved type handling with proper pointer arithmetic and casting
  • Code Cleanup: Removed unused variables (VIDEORAM, port3DA from graphics.h) and dead code paths
  • Header Organization: Better organization of include files and dependencies
  • Variable Naming: Consistent naming conventions (e.g., ega_planes instead of generic variables)

Memory Management Architecture

  • Planar Memory Layout: VGA memory organized as 0xP3P2P1P0 (plane0 in lowest byte) for optimal 32-bit access
  • 32-bit Latch System: Implemented VGA latch system for planar memory operations
  • Memory Access Patterns: Optimized VIDEORAM indexing using bitwise AND instead of modulo operations
  • Buffer Management: Unified buffer handling across graphics modes with proper alignment

Build System & Configuration

  • CMake Streamlining: Removed complex conditional logic in favor of cleaner platform detection
  • Build Naming: Enhanced build names with frequency information (F100-P166-500MHz format)
  • Configuration Files: Added support for config.286 runtime configuration
  • Compilation Flags: Platform-specific optimization flags and conditional compilation

Full Changelog: v1.1.0...v2.0.0

๐Ÿš€ Pico-286 "Navigator" Release ๐ŸŒ

18 Aug 06:44

Choose a tag to compare

Unified firmware format. If firmware does not contains RP2350/RP2040 mark - its universal firmware for both Picos

The biggest update yet - now with host filesystem magic and cross-platform prowess!

Download preconfigured and finetuned boot disk FDD A:


๐ŸŽฏ Release Highlights

This massive release brings 112 commits of pure emulation excellence, transforming Pico-286 into a truly versatile PC emulator that bridges the gap between retro computing and modern convenience.

๐ŸŒŸ Major New Features

๐Ÿ—„๏ธ Host Filesystem Pass-Through (Network Redirector)

  • Revolutionary new feature: Access your host computer's files directly from DOS!
  • Full network redirector implementation with RBIL6 compliance
  • Cross-platform support for Windows, Linux, and RP2350/RP2040
  • Complete file operations: create, read, write, delete, search
  • Directory operations and disk information queries
  • Includes mapdrive.com utility for easy drive mapping

๐Ÿง Complete Linux Platform Support

  • Native Linux builds with X11-based MiniFB graphics
  • Multi-threaded architecture for optimal performance
  • PulseAudio and OSS audio backend support
  • Full keyboard and mouse input handling
  • Cross-platform build system consistency

๐ŸŽต Enhanced Audio Experience

  • Massive MIDI emulation improvements, especially for drums
  • Pi Zero I2S audio support
  • Expanded sound card emulation (PC Speaker, Covox, Disney Sound Source)
  • Better audio mixing and real-time processing

๐Ÿ”ง Technical Improvements

Memory & Performance

  • RAM increase: Bumped from 350KB to 384KB for more breathing room
  • Enhanced virtual memory system with configurable TOTAL_VIRTUAL_MEMORY_KBS
  • Improved PSRAM handling with better no-PSRAM fallback
  • Advanced build optimizations with LTO and aggressive compiler flags

Graphics & Display

  • ST7789 TFT driver enhancements with additional graphics modes
  • HDMI optimization improvements for 80x25 color text mode
  • Better EGA/VGA support with runtime toggling (Ctrl+Alt+KP*)
  • MCGA support in no-EGA/VGA mode
  • Fixed VGA plane size calculations

System Features

  • A20 line emulation via port handling
  • UMB (Upper Memory Blocks) redesign with 64+64+32+16 KB blocks
  • Enhanced XMS implementation with proper UMB handling
  • Speed control: Ctrl+Alt+KP- (slow down) / Ctrl+Alt+KP+ (speed up)
  • Improved CPU emulation accuracy

๐Ÿ› ๏ธ Developer Experience

Documentation Overhaul

  • Comprehensive CLAUDE.md with detailed project guidelines
  • Expanded README with complete build instructions
  • New NETWORK_REDIRECTOR_DOCUMENTATION.md for filesystem features
  • PORT_DOCUMENTATION.md for I/O port details
  • VIDEO_MODES.md with supported graphics modes
  • Developer-friendly architecture documentation

Build System Improvements

  • Streamlined CMake configuration
  • Better cross-platform compatibility
  • Enhanced error handling and debugging
  • Cleaner dependency management

Code Quality

  • Extensive refactoring for maintainability
  • Improved error handling throughout
  • Better logging and debugging capabilities
  • Cross-platform code unification

๐Ÿ› Bug Fixes & Stability

  • Fixed missing braces in switch cases
  • Corrected VGA plane size declarations
  • Win32 build fixes and improvements
  • Linux-specific path handling fixes
  • Memory allocation and cleanup improvements
  • Sine calculation bitwise precedence fix
  • Pattern handling improvements in file search
  • Register usage corrections in network operations

๐ŸŽฎ Gaming & Software Compatibility

The enhanced memory management, improved graphics drivers, and new filesystem access capabilities mean:

  • Better game compatibility with more available RAM
  • Seamless file sharing between host and emulated system
  • Improved audio experience in music and sound-heavy applications
  • Faster loading times with optimized I/O operations

๐Ÿš€ What's Next?

This release establishes Pico-286 as the premier retro PC emulator for Raspberry Pi Pico, with robust cross-platform support and innovative features that make retro computing more accessible than ever.

Try It Out!

  1. Windows/Linux: Build with cmake -DCMAKE_BUILD_TYPE=Release -DPICO_PLATFORM=host
  2. RP2350: Use cmake -DCMAKE_BUILD_TYPE=Release -DPICO_PLATFORM=rp2350
  3. Enable network drive: Use the included mapdrive.com tool
  4. Access host files: Map drives and enjoy seamless file access!

Happy retro computing! ๐ŸŽฎโœจ

Full Changelog: View all 112 commits

What's Changed

  • no-psram bug-fix by @DnCraptor in #10
  • Feature/configurable vmem psram logic by @xrip in #11
  • one more bug-fix for no-psram by @DnCraptor in #12
  • I'll merge PR #13 and apply the suggestions. by @xrip in #14
  • Docs: Update README with floppy and hard disk information by @xrip in #16
  • Add port documentation by @xrip in #18
  • A20 + UMB by @DnCraptor in #20
  • Fix Host Build and Add Build Instructions by @google-labs-jules[bot] in #21
  • I've fixed several bugs in your XMS implementation related to UMB hanโ€ฆ by @xrip in #24
  • This commit provides a comprehensive update to the project's documentโ€ฆ by @xrip in #27
  • Hostfs passthrough by @xrip in #30
  • Feature/rp2350 network redirector by @xrip in #31
  • docs: Add info on host filesystem pass-through by @xrip in #32

New Contributors

Full Changelog: v1.0.0...v1.1.0

286 Personal Computer

20 Jun 11:24

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: https://github.com/xrip/pico-286/commits/v1.0.0