RetroTick: chạy file exe trên trình duyệt

ByNgọc Trai MKT19/08/2026in GitHub Tools 0
retrotick

RetroTick là một repository GitHub giúp bạn chạy file exe trên trình duyệt mà không cần cài hệ điều hành hay máy ảo nặng nề. Công cụ này phù hợp với lập trình viên, người yêu phần mềm cổ điển và bất kỳ ai muốn thử lại các chương trình Windows/DOS cũ ngay trên web.

Thank you for reading this post, don't forget to subscribe!

Những điểm chính

  • RetroTick không giả lập cả hệ điều hành mà chỉ giả lập CPU x86/ARM và tái hiện API Windows/DOS bằng TypeScript thuần.
  • Trình nạp PE/NE/MZ giúp xử lý các file .exe thuộc nhiều thời kỳ khác nhau, từ DOS, Win16 đến Win32/WinCE.
  • Bạn có thể kéo thả file .exe vào trình duyệt để chạy thử; repository cũng có sẵn các chương trình mẫu như FreeCell, Minesweeper, Notepad và Prince of Persia.
  • Dự án vẫn đang phát triển, hầu hết chương trình có lỗi hiển thị hoặc thiếu tính năng, nên phù hợp để khám phá hơn là dùng thay máy ảo.
  • Mã nguồn phát hành theo giấy phép CC0, khuyến khích đóng góp và sử dụng tự do.

RetroTick là gì và giải quyết vấn đề gì?

RetroTick là gì và giải quyết vấn đề gì?
RetroTick là gì và giải quyết vấn đề gì?

RetroTick là bộ giả lập CPU x86/ARM kết hợp tầng tương thích API Windows/DOS, viết hoàn toàn bằng TypeScript. Thay vì giả lập toàn bộ hệ điều hành, nó phân tích file PE, NE, MZ rồi thực thi mã máy theo từng lệnh, giúp một số file .exe cũ chạy được trong trình duyệt.

Điểm đáng chú ý là RetroTick không phải một hệ điều hành ảo như QEMU hay DOSBox theo nghĩa đầy đủ. Nó chọn cách tái hiện các API mà chương trình cần, nên nhẹ hơn và thú vị để nghiên cứu. Bạn có thể xem mã nguồn tại repository gốc trên GitHub.

Điều gì khiến RetroTick khác biệt so với giả lập hệ điều hành truyền thống?

Điều gì khiến RetroTick khác biệt so với giả lập hệ điều hành truyền thống?
Điều gì khiến RetroTick khác biệt so với giả lập hệ điều hành truyền thống?

Điểm khác biệt cốt lõi là RetroTick không chạy Windows hay DOS làm nền, mà mô phỏng CPU và viết lại các API hệ điều hành trực tiếp trên web. Nhờ vậy, nó tránh được khối lượng lớn của việc giả lập toàn bộ máy, nhưng cũng đối mặt với nhiều giới hạn tương thích.

Phần x86 CPU emulator trong RetroTick hỗ trợ x87 FPU, lazy flag evaluation, protected mode 32-bit dạng flat model và real mode 16-bit với segment:offset, IVT, PSP, A20 gate. Đồng thời, repository cũng có ARM CPU emulator cơ bản để xử lý file PE dành cho Windows CE. Đi cùng là bộ nạp PE/NE/MZ giúp đọc header, ánh xạ section, giải quyết import và nạp DLL với cơ chế base relocation cùng phát hiện xung đột.

Vì dự án đang trong quá trình hoàn thiện, hầu hết chương trình chạy được đều có lỗi hiển thị hoặc thiếu tính năng. Đây không phải giải pháp thay thế máy ảo, mà là một cách tiếp cận khác để nghiên cứu và trải nghiệm phần mềm cũ.

RetroTick hỗ trợ những định dạng và API nào?

RetroTick hỗ trợ những định dạng và API nào?
RetroTick hỗ trợ những định dạng và API nào?

RetroTick hỗ trợ ba dòng binary chính là PE (Win32/WinCE), NE (Win16) và MZ (DOS), kèm theo các tầng API tương ứng với từng thời kỳ của Windows/DOS. Điều này cho phép thử nhiều loại chương trình khác nhau, từ game DOS đến ứng dụng Win32 đơn giản.

Các API đã được tái hiện bao gồm:

  • Win32 API: kernel32, user32, gdi32, advapi32, comctl32, comdlg32, shell32, msvcrt, ntdll, opengl32, glu32, ddraw, dsound, ole32, oleaut32, winmm, imm32, uxtheme, winspool, ws2_32, version, psapi, shlwapi, iphlpapi, msacm32, secur32, setupapi, netapi32, mpr, msimg32.
  • Win16 API: KERNEL, USER, GDI, SHELL, COMMDLG, COMMCTRL, MMSYSTEM, KEYBOARD, DDEML, LZEXPAND, SOUND, VER, SCONFIG, WIN87EM.
  • WinCE API: COREDLL cho các file ARM binary.
  • DOS interrupt: INT 21h, INT 10h, INT 08h/1Ch, INT 09h/16h, INT 1Ah, INT 15h, INT 33h, INT 2Fh, EMS INT 67h, XMS, DPMI/PMODE/W.

Ngoài ra, RetroTick còn có giả lập VGA, âm thanh Sound Blaster/OPL2/GUS, OpenGL 1.x dịch sang WebGL2, DirectDraw/DirectSound, window manager, GDI rendering engine, trình xem WinHelp và virtual filesystem lưu trên IndexedDB. Những thành phần này giúp các chương trình cũ hiển thị cửa sổ, vẽ giao diện và phát âm thanh trong trình duyệt.

Các chương trình mẫu đi kèm

README liệt kê một số chương trình đã chạy thử: FreeCell, Solitaire, Minesweeper, SkiFree, Prince of Persia (DOS), Chinese Paladin (DOS), Moktar (DOS); Calculator, Clock, Command Prompt, Task Manager, Sound Recorder, Notepad (Win 3.1x), QBasic, GLX Gears; screen saver 3D Maze (OpenGL), 3D Pipes (OpenGL), Mystify, Starfield, Bezier, Flower Box, Marquee. Hầu hết vẫn có lỗi hiển thị hoặc thiếu tính năng, nên bạn nên coi đây là danh sách minh họa hơn là cam kết tương thích.

Hướng dẫn cài đặt và sử dụng RetroTick

Hướng dẫn cài đặt và sử dụng RetroTick
Hướng dẫn cài đặt và sử dụng RetroTick

Cách nhanh nhất là mở trang retrotick.com và kéo một file .exe vào. Nếu muốn tự build từ mã nguồn, bạn có thể làm theo các lệnh được ghi trong README của repository.

  1. Mở trang retrotick.com hoặc bản thử nghiệm được hướng dẫn trong README.
  2. Kéo một file .exe từ máy vào trang, hoặc chọn một chương trình từ bộ launcher có sẵn.
  3. Chờ RetroTick phân tích header PE/NE/MZ, thực thi mã CPU và hiển thị cửa sổ giao diện của chương trình.
  4. Nếu tự build, chạy npm run build trong thư mục dự án; bản production sẽ nằm trong dist/.
  5. Để chạy test, dùng các file trong tests/ theo lệnh mẫu timeout 2 npx tsx tests/test-<name>.mjs.

Lưu ý rằng RetroTick không yêu cầu cài Windows hay DOS. Bạn chỉ cần trình duyệt và file thực thi muốn dùng. Nếu chương trình không hiển thị đúng, đó có thể là do API chưa được hỗ trợ hoặc lỗi kết xuất đồ họa.

Ai nên dùng RetroTick và ai không nên?

Ai nên dùng RetroTick và ai không nên?
Ai nên dùng RetroTick và ai không nên?

Nhóm phù hợp nhất là lập trình viên quan tâm kỹ thuật giả lập CPU, người yêu phần mềm cổ điển và những ai muốn thử nhanh một file .exe trong trình duyệt. Ngược lại, nếu bạn cần chạy ứng dụng Windows hiện đại, game 3D nặng hoặc phần mềm phụ thuộc nhiều API chưa được tái hiện, RetroTick chưa đủ chín muồi để dùng hằng ngày.

Vì dự án phát hành theo giấy phép CC0, bạn có thể tự do đọc mã, sửa lỗi và gửi pull request. README cũng ghi rõ mã nguồn ban đầu được tạo hoàn toàn bằng AI, kèm tệp CLAUDE.md để hỗ trợ đóng góp bằng AI coding tools như Claude Code.

Câu hỏi thường gặp

RetroTick có chạy được mọi file .exe không?

Không. RetroTick vẫn đang trong quá trình hoàn thiện, hầu hết chương trình mẫu đều có lỗi hiển thị hoặc thiếu tính năng. Nó hỗ trợ nhiều API Win32/Win16/DOS, nhưng không đảm bảo mọi file .exe sẽ hoạt động. Cách tốt nhất là thử trực tiếp.

RetroTick có an toàn khi chạy file .exe lạ không?

RetroTick không chạy file trong hệ điều hành thật mà thực thi trên CPU giả lập và tầng API mô phỏng trong trình duyệt. Tuy vậy, đây vẫn là dự án thử nghiệm nên bạn không nên chủ quan với file từ nguồn không tin cậy.

RetroTick có cần cài Windows hoặc DOS không?

Không. Ý tưởng chính của RetroTick là loại bỏ lớp hệ điều hành: nó phân tích file PE/NE/MZ, giả lập CPU x86/ARM và tái hiện các API cần thiết. Do đó người dùng chỉ cần trình duyệt và file .exe muốn chạy.

Tôi có thể đóng góp cho RetroTick như thế nào?

Bạn có thể mở pull request trên repository gốc. README nói rõ mục tiêu là làm nhiều chương trình chạy đúng hơn, thường bằng cách bổ sung API còn thiếu hoặc sửa lỗi hiển thị GDI. Dự án cũng cung cấp tệp CLAUDE.md để hỗ trợ đóng góp bằng AI coding tools.

Kết luận

RetroTick là một dự án mã nguồn mở thú vị, dù chưa hoàn hảo, vì nó tiếp cận việc chạy file exe trên trình duyệt theo hướng khác: không giả lập hệ điều hành, chỉ giả lập CPU và tái hiện API. Nếu bạn tò mò về kỹ thuật hoặc muốn hồi tưởng những chương trình cũ, hãy kéo một file .exe vào trang thử nghiệm và tự quan sát kết quả. Đóng góp cho dự án cũng là cách hay để giúp cộng đồng phần mềm cổ điển phát triển.

Related Posts