EMU-NES #PL FORUM © 2004-2015

Nes/Pegasus/Famicom => Hacki i Romhacking/Programowanie => Wątek zaczęty przez: CodAsm Grudnia 08, 2013, 13:44:58



Tytuł: Poszukuję ludzi do projektu emulatora
Wiadomość wysłana przez: CodAsm Grudnia 08, 2013, 13:44:58
Witam

Jestem autorem symulatora 6502 (asm, dasm, sim) napisanego w C++ prezentowanego na forum emunes. Chciałem zwrócić się z pytaniem czy są na forum programiści C++, których zechcieliby stworzyć team i podjąć się napisania emulatora nes w C++ obiektowo. Jeżeli chodzi o mnie bardzo lubię pracę koncepcyjną i chciałbym się wkręcić w jakiś projekt. Na początek proponowałbym wziąć się tylko i wyłącznie za mapper NROM (8K CH + 32K PR), ponieważ samo to zadanie będzie już karkołomne. Projektowanie zaczęlibyśmy od samej góry np.:

Kod:
OdczytajINES();
ObliczonyOffset = ZnajdzPierwszyOpkod();
PC = ObliczonyOffset;
while(!Koniec)
{
  Opkod = Pamiec[PC++]
  AnalizujOpkod();
  WykonajCyklOpkodu();
  if(Przerwanie)
    WykonajPrzerwanie();
  if(Koniec) break;
}

Być może moduł CPU z mojego symulatora przydałby się (po delikatnej refaktoryzacji, jeżeli mam być szczery). Jego zaletą jest fakt, że zaimplementowałem go na poziomie cykli rozkazowych, zaś minusem jest brak przejrzystej implementacji przerwań (w symulatorze je olałem).

Celem projektu jest
*Dobra zabawa i zrobienie czegoś fajnego
*Edukacja z zakresu działania komputera (nie koniecznie dużo-bitowego :)) i programowania
*Znalezienie osób o podobnych zainteresowaniach

Na koniec chciałbym zaznaczyć, że do projektu chcę osoby, które trochę już programują w C/C++ i mają pojęcie na temat architektury komputerów, które dadzą się ponieść radości projektowania i programowania. Jako narzędzie proponowałbym Visual Studio, ponieważ z autopsji wiem, że dobrze ogarnia się w nim większe projekty.

Pozdrawiam.


Tytuł: Odp: Poszukuję ludzi do projektu emulatora
Wiadomość wysłana przez: Krzysiobal Stycznia 04, 2014, 01:18:03
Skąd jesteś? Pomysł fajny, ale raczej tylko ze względów hobbystycznych, taki emulator potem i tak pójdzie do szafy, bo nie będzie obsługiwał gier w tak dobrym stopniu, jak konkurencyjne rozwiązania.


Tytuł: Odp: Poszukuję ludzi do projektu emulatora
Wiadomość wysłana przez: Ryan Stycznia 04, 2014, 03:40:49
Bardzo fajny pomysł z tym emulatorem :) Z chęcią pomogę o ile będę mógł, choć języki wyższego programowania są mi dalece obce, mogę pogadać ze znajomymi ze sceny C64, może ktoś byłby chętny ;)


Tytuł: Odp: Poszukuję ludzi do projektu emulatora
Wiadomość wysłana przez: CodAsm Stycznia 06, 2014, 12:05:38
Do Krzysiobal:
1. Aktualnie stacjonuje w Warszawie.
2. Taki emulator nie musi obsługiwać wszystkich gier (pisałem wcześniej o grach NROM). Problem nie jest w samej ilości kodu implementującego mappery, ale takim zaprojektowaniu go, by można było te mappery ewentualnie dopisywać, jednak to już na wyrost, bo na początek trzeba zaimplementować sam silnik emulatora.

Do Ryan:
1. Fajnie byłoby gdyby w kilka osób przymierzyć się do tego projektu i popróbować. Podkreślam, że na tym etapie próbowanie jest tu kluczowym słowem.
2. Myślę, że coś znalazłoby się i dla Ciebie, projekt to nie tylko kodowanie, ale też projektowanie i rozkmina, kiedy coś już powstanie trzeba kogoś do pisania testowego kodu w asemblerze, który miałby "wysypać" emulator. Poza tym wyszukiwanie informacji o procesorze 6502 i sprawdzanie czy jest wystarczająco szczegółowa dla programisty to też ciężka robota.

Jak sobie wyobrażam początek pracy? Trzeba byłoby nam jakiegoś forum (emunes mamy) i wątku, w którym każdy wziąłby sobie jakieś zadanie na początek i sprawdził czy mu podoła.

Jeżeli chodzi o techniczne sprawy to mam ten projekt symulatora w Visual Studio, możeby wziąć pod lupę silnik CPU i zastanowić się czy da się go jakoś poprawić i czy w ogóle się przyda (refaktoryzacja na pewno dobrze by mu zrobiła, ponieważ jest w nim kilka zgrzytów, o których pisać można długo). Jeżeli uznamy, że nie da się go adaptować, to można go przepisać od nowa, jeżeli natomiast uznamy, że jest ok, to trzeba będzie dopisać mu kod obsługi NMI i BRK oraz osadzić go w module wyższego poziomu, który będzie obsługiwać najważniejsze części emulatora (CPU, PPU, APU, Timing).

Inna ważna rzecz na początku to opracować algorytm jak wyświetlić piksel, skanlinię oraz klatkę na NES. Myślę, że cały silnik opierałby się właśnie na renderingu pikseli z odpowiednim Timingiem. Skoro rendering to trzeba wybrać interfejs graficzny OpenGL czy SDL, czy coś może jeszcze innego. Jeżeli chodzi o mnie to znam nieco OpenGL i SDL'a liznąłem nieco. W OpenGL do renderingu pikseli klatki można użyć np. Pixel Buffer Object, jednak fajnie byłoby, żeby ktoś kompetentny w OpenGL pomógł mi to rozkminić.

Żeby się nie rozpisywać przedwcześnie to będzie na tyle.


Tytuł: Odp: Poszukuję ludzi do projektu emulatora
Wiadomość wysłana przez: Krzysiobal Marca 13, 2014, 01:49:31
Tez jestem z Wawy i sam chciałem kiedyś coś podobnego stworzyć.
Jeśli już ma to być super hobbystyczne, to może wszystko pisać samemu, włącznie z emulatorem procesora 6502. Tylko trzeba to zrobić dokładnie, aby wykonanie każdego rozkazu trwało tyle, ile w sprzęcie.