模擬器的撰寫困難點並不是在於程式設計本身(當然前提是你也必須有最基本的程式設計能力..不然根本不可能),而是在於去特澈了解一個遊戲主機的硬體行為,這牽涉到很多硬體的運作觀念,以及硬體描述文件的閱讀能力,先不談各遊戲主機的特性,如果你對基礎計算機硬體運作觀念不夠多,就很難去理解遊戲主機的硬體,而一款模擬器模擬的好不好或是夠不夠正確,取決於硬體了解的深不深.觀念夠不夠正確,去做出正確的實作,程式設計能力影響性倒沒這個關鍵,頂多是會影響到執行的效能(程式架構或是寫法有沒有效率之類的問題).
而模擬器的撰寫又分成很多種程度上的能力,最厲害的是在完全沒有文件參考的情況下,利用利用破解或是分析技巧反推運作原則(通常是不得以,只能這樣,因為硬體SPEC不一定會找得到),是非常厲害或是專業的人才可能做到,其次是有文件,閱讀文件後去撰寫出,最後是一方面閱讀文件.一方面也去研究別人所撰寫的專案兩方並行,來寫出自己的模擬器程式或是移植別人的專案(進而修改或是加強),另外模擬器要撰寫出來即使是寫出來,模擬出的正確程度.功能夠不夠完善,中間的落差又非常大,寫出一些簡單結構的模擬器,是一回事,但要寫得好又是一回事,最後看你挑戰的是什麼樣的模擬器,早期遊戲主機結構相對簡單,CPU也比較簡單,越近期的主機架構越複雜,需要的運算效能越高.
如果你可以不靠文件,直接利用破解或是分析,撰寫出近幾年來的模擬器,這幾乎是駭客中相當高的境界(神中之神),如果你可以靠文件全靠自己寫出模擬器,那代表你在硬體觀念上或是理解能力上有相當不錯的能力,如果你是靠文件和別人的程式的參考寫出模擬器,最少代表你是一個有相當 [熱情] 的人.
總而言之,寫出跟沒寫出來,是一個層次的差別,寫出來又分用什麼方式寫出來.以及寫得夠不夠完善,中間差距非常大.
沒有留言:
張貼留言