Hỏi về các bước để tạo ra một trình giả lập

cho mình hỏi các bước để tạo ra một trình giả lập được không?
Đặc biệt là trình giả lập để chạy engine chỉ hoạt động trên máy tính có thể chạy trên android.

Viết ARM/x86 emulator từ con số (& kinh nghiệm) bằng 0 là rất, rất khó. Tại sao bạn muốn emulate Android?

7 Likes

có một game mà engine chỉ dành cho máy tính tôi muốn tạo một giả lập cho engine ấy chạy được trên thiết bị android

Rồi, nếu muốn làm một trình giả lập thì đầu tiên học khoa học máy tính, kĩ thuật máy tính và lập trình nhúng. Tiếp theo là tìm hiểu sâu về tập lệnh x86, ARM và hệ điều hành Linux, Android, Window và kernel của chúng. Nếu có thể hiểu được hết nội dung của trang này:

Và video của anh này:

Là biết được cách tạo ra một trình giả lập (về mắt lý thuyết) rồi đấy. Mà thực tế thì giả lập Window trên Android chạy rất lag và có thể gặp một mớ lỗi, nhưng ít nhất vẫn có thể hi vọng chơi được Doom :slightly_smiling_face:

6 Likes

vậy tôi có thể tạo ra một giả lập chỉ có tác dụng giúp cho điện thoại android chạy được game pc tôi muốn mà ko cần giả lập window trên android ko

1 Like

Nếu thế thì cách của mình sau đây sẽ giúp bạn (Lưu ý nó không phải là tạo máy giả lập như bạn yêu cầu nhưng về chức năng thì nó tương tự nhau): Tải Andronix và Termux về máy để chạy 1 Linux distro khác bất kì tuỳ theo lựa chọn của bạn trong Termux, sau đó tải 1 cái DE ( như GNOME, Xfce, LXDE,… tuỳ vào bạn) cho cái Distro đó, sau khi tải xong và khởi động cái DE lên thì bạn tải Wine hoặc CrossOver Linux để chạy game Window.

Đó là cách của mình, nó khá dài dòng và có thể yêu cầu cao hơn về cấu hình của máy bạn. Nhưng ít ra nó đỡ phức tạp và dễ làm hơn nhiều so với việc tạo 1 phần mềm giả lập. Như ông @HR16 đã nói, Emulator Window hay Android là rất lag và có thể gặp 1 mớ lỗi, nên để tạo ra được 1 cái như thế là không khả thi lắm đâu. :slightly_smiling_face:

Bây giờ tốt nhất là cứ ngồi nghịch với Virtualbox, các trình giả lập Android (BlueStack, LDPlayer,…) hay GNOME Boxes và Wine (nếu đang sử dụng Linux) thôi.

2 Likes

TL; DR: Câu trả lời ngắn gọn cho cậu là: “Cậu có thể làm được điều đó. Hãy theo đuổi ước mơ, hãy là trở thành người mình muốn. Rồi cậu sẽ thành công thôi! :heart:


Holy smoke!
:sweat_smile:

Tớ nghĩ cậu nên làm bài tập về nhà trước khi hỏi thêm, vì sơ qua thì có vẻ như cách duy nhất cậu làm được emulator kiểu đó là nhờ người khác làm hộ :sweat_smile:
@HR16 có đưa 1 số resource tương đối hữu ích, và cậu có thể tham khảo cả resource này: http://emulator101.com/
Tại sao cậu không thử nghiên cứu xem emulator là gì, có những thành phần gì, các concept liên quan tới nó, và tổng hợp 1 cách vắn tắt cho bọn tớ nhỉ?
Nó ít nhất cũng giúp cậu hiểu được cậu thực sự đang muốn làm gì :sweat_smile: Sẽ không có ích chút nào cho cậu khi phải nghe những thứ mà cậu không hiểu nổi, và bọn tớ phải giải thích những điều mà những người không có kiến thức nền tảng không thể hiểu nổi, phải không?

8 Likes

This post was flagged by the community and is temporarily hidden.

[Off-topic] Hì, cảm ơn cậu về lời khen nhé!

Hiện tại tớ chỉ có 1 private blog khiêm nhường trong công ty tớ thôi :smile:
Tớ cũng không phải blogger chuyên nghiệp hay ra bài mấy, cũng không chắc nó giúp ích gì cho mọi người hơn những comment trên platform này không.
Nếu cậu muốn đọc, tớ chắc cậu phải chờ đấy. Và nó cũng không phải blog tiếng Việt đâu cậu :sweat_smile:

5 Likes

Đồng ý với @library. Hãy quay lại khi bạn đã nắm được concepts của emulator, bạn sẽ biết viết emulator là cần làm những gì và cần phải làm như thế nào, thay vì muốn chạy xe khi còn đang bò. Một số pointers cho bạn:

  • Đọc resources mà @HR16, @library đưa ra, và r/emudev, làm theo tutorial đơn giản (sẽ dùng CHIP-8 vì chỉ focus vào fetch-decode-execute cycle và một số thứ basics).
  • Research CPU của một số máy game cũ (LR35902 của GameBoy và 6502 của NES, vẫn phải follow tutorial để viết emulator cho những systems này. Sẽ đọc specs bên cạnh tutorial, cũng sẽ có nhiều vấn đề mới phát sinh: interrupt, timing, graphics rendering, sound playback (mỗi thứ là một rào cản (rất) lớn). Khi đó chuyện đọc và interpret opcodes chỉ là trò trẻ con. :smiley:
    Tuy opcodes vẫn ít và docs, source code cho những CPU này rất dồi dào.
    p/s. Timing chỉ là tương đối, vì cycle-accurate là trade-off, không hẳn là thứ bắt buộc phải làm đúng. Nhưng ở giai đoạn này, ít nhất bạn nên biết vì sao cần làm đúng.
  • Bắt đầu với những systems phức tạp (PlayStation 1, 2, N64 dùng MIPS). Kiến thức nhiều, đọc specs nhiều, đọc source code nhiều, không có tutorial và vô số đêm vò đầu bứt tóc, chửi CPU, chửi docs, chửi compiler, chửi game lạm dụng edge cases). Tự nhủ tại sao không setup QEMU cho nhanh.
  • Emulator chạy x86 trên Android. Profit.
6 Likes

Góp ý tý, nếu muốn giấu thông tin thì dùng [details] chứ không phải là [spoiler]

4 Likes

Sorry, mình type trên mobile nên rất chậm và (hình như) thanh toolbar để format không hiển thị trên phiên bản mobile thì phải.

À mình thấy rồi :cry:, dưới nút 3 gạch ngang.

4 Likes

Mình vẫn thấy mà, thử nhấn vào nút 3 gạch ngang chỗ khung bình luận xem.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?