Skocz do zawartości
Programmer2004

JBBCME - Emulator komputera BBC Micro napisany w języku Java

Recommended Posts

Użytkownik

Witam. Chciałbym zaprezentować mój autorski emulator komputerów BBC Micro. BBC Micro jest komputerem wyprodukowanym w 1981 roku przez brytyjską firmę Acorn Computers. W update 1.0.2 dodano kilka nowych funkcji, teraz emulator bootuje się do ekranu z instrukcjami gry 3D Bomb Alley.

 

Aby załadować program do emulatora, należy zrzucić obraz dysku z prawdziwego BBC Micro bądź pobrać z internetu, następnie wypakować z niego pliki dowolnym programem, np. BBC Explorer. Następnie wczytać plik rozruchowy do emulatora (przeważnie jest to plik !BOOT). WAŻNE: Nazwy plików muszą się kończyć znakiem $, więc jeśli Twój program rozpakowujący nie dodał ich na końcu pliku, to należy je dodać ręcznie w celu poprawnego działania.

Screen:

JBBCME.jpg

Download:

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

 

Skan:

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

Edytowane przez Programmer2004
Aktualizacja 1.0.2

Udostępnij tego posta


Odnośnik do posta
Udostępnij na stronach
Użytkownik

Zamiast jak człowiek kod źródłowy na GitHub'ie, to woli dać jako osobny link do pobierania, ehh.

 

Dobra, pisze to jako osobny już post. Jak jakiś moderator połączy, to fajnie, ale mnie to nie interesuje.

Kod to istny rak i onkologia, wszystko zbyt statyczne, nazewnictwo klas totalnie wzięte z dupy. W kodzie znajduję się takie kwiatki jak ten:

public static void start(String path)
    throws FileNotFoundException, IOException
  {
    Hardware.reset(path);
    new Thread(new Runnable()
    {
      public void run()
      {
        for (;;)
        {
          try
          {
            
          }
          catch (FileNotFoundException exception)
          {
            Main.window.dispose();
            exception.printStackTrace();
          }
          catch (IOException exception)
          {
            Main.window.dispose();
            exception.printStackTrace();
          }
        }
      }
    })
    
      .start();

Nie wiem na jaką ku*wę i pietruszkę się tu znajduje, bo to jest tylko marnowanie pamięci. Pominę fakt, że ten flagowy interpreter języka jest napisany w najbardziej możliwie chu*owy sposób, jak się dało. 

public class Memory
{
  private static int page = 0;
  private static byte[] memory = new byte[65536];
  
  public static void reset()
  {
    page = 0;
    Arrays.fill(memory, (byte)0);
  }
  
  public static int getPage()
  {
    return page;
  }
  
  public static void setPage(int address)
  {
    page = address;
  }
  
  public static void write(short address, byte data)
  {
    memory[(address & 0xFFFF)] = data;
  }
  
  public static byte read(short address)
  {
    return memory[(address & 0xFFFF)];
  }
}

Nie wiem na jaki kij jest to statyczne.

public class Main
{
  public static Window window = new Window();
  
  public static void main(String[] args) {}
}

Co to do cholery za start programu? xDD

Co to za obsługi wyjątków, żadnego powiadomienia na ekranie, jak okienko się wyłączy to co ma użytkownik myśleć, że program miał tak działać?

Słabe.

Łączę //Michma

Udostępnij tego posta


Odnośnik do posta
Udostępnij na stronach
Użytkownik
10 godzin temu, Wizzard napisał:

Zamiast jak człowiek kod źródłowy na GitHub'ie, to woli dać jako osobny link do pobierania, ehh.

To, że dałem kod źródłowy na stronie innej, niż GitHub, to nie znaczy, że nie jestem człowiekem.

10 godzin temu, Wizzard napisał:

Dobra, pisze to jako osobny już post. Jak jakiś moderator połączy, to fajnie, ale mnie to nie interesuje.

Kod to istny rak i onkologia, wszystko zbyt statyczne, nazewnictwo klas totalnie wzięte z dupy. W kodzie znajduję się takie kwiatki jak ten:


public static void start(String path)
    throws FileNotFoundException, IOException
  {
    Hardware.reset(path);
    new Thread(new Runnable()
    {
      public void run()
      {
        for (;;)
        {
          try
          {
            
          }
          catch (FileNotFoundException exception)
          {
            Main.window.dispose();
            exception.printStackTrace();
          }
          catch (IOException exception)
          {
            Main.window.dispose();
            exception.printStackTrace();
          }
        }
      }
    })
    
      .start();

Nie wiem na jaką ku*wę i pietruszkę się tu znajduje, bo to jest tylko marnowanie pamięci. Pominę fakt, że ten flagowy interpreter języka jest napisany w najbardziej możliwie chu*owy sposób, jak się dało. 


public class Memory
{
  private static int page = 0;
  private static byte[] memory = new byte[65536];
  
  public static void reset()
  {
    page = 0;
    Arrays.fill(memory, (byte)0);
  }
  
  public static int getPage()
  {
    return page;
  }
  
  public static void setPage(int address)
  {
    page = address;
  }
  
  public static void write(short address, byte data)
  {
    memory[(address & 0xFFFF)] = data;
  }
  
  public static byte read(short address)
  {
    return memory[(address & 0xFFFF)];
  }
}

Nie wiem na jaki kij jest to statyczne.


public class Main
{
  public static Window window = new Window();
  
  public static void main(String[] args) {}
}

Co to do cholery za start programu? xDD

Co to za obsługi wyjątków, żadnego powiadomienia na ekranie, jak okienko się wyłączy to co ma użytkownik myśleć, że program miał tak działać?

Słabe.

Po pierwsze: Twój program dekompilujący źle odkodował program, gdyż po pierwsze tam nie ma pętli for(;;), tylko while(true), a po drugie w bloku try...catch jest wywołanie Hardware.tick().

Po drugie: Zrobiłem statyczne funkcje, gdyż nie ma potrzeby tworzenia ich jako obiektów.

Po trzecie: Normalny start, tworzy okno i można korzystać.

Po czwarte: Mój program nie jest jedynym, który w przypadku wyjątku zamyka się i wypisuje błąd w konsoli.

Nie wiem, dlaczego krytykujesz moją stylistykę kodu, każdy ma swój styl kodowania. Ważne, że emulator interpretuje niektóre programy bez problemu.

 

//edit: Domyślam się, że chodziło też o to, dlaczego główna pętla emulatora jest tworzona w nowym wątku. Otóż gdy próbowałem dać to w tym samym wątku, to spotykałem się z licznymi bugami związanymi z oknem (JFrame) jak i z samą emulacją. I dlatego też właśnie ta pętla jest tworzona w nowym wątku w celu odseparowania jej od okna, co nie blokuje pętli komunikatów.

Edytowane przez Programmer2004

Udostępnij tego posta


Odnośnik do posta
Udostępnij na stronach
Użytkownik
Spoiler
11 godzin temu, Programmer2004 napisał:

To, że dałem kod źródłowy na stronie innej, niż GitHub, to nie znaczy, że nie jestem człowiekem.

Po pierwsze: Twój program dekompilujący źle odkodował program, gdyż po pierwsze tam nie ma pętli for(;;), tylko while(true), a po drugie w bloku try...catch jest wywołanie Hardware.tick().

Po drugie: Zrobiłem statyczne funkcje, gdyż nie ma potrzeby tworzenia ich jako obiektów.

Po trzecie: Normalny start, tworzy okno i można korzystać.

Po czwarte: Mój program nie jest jedynym, który w przypadku wyjątku zamyka się i wypisuje błąd w konsoli.

Nie wiem, dlaczego krytykujesz moją stylistykę kodu, każdy ma swój styl kodowania. Ważne, że emulator interpretuje niektóre programy bez problemu.

 

//edit: Domyślam się, że chodziło też o to, dlaczego główna pętla emulatora jest tworzona w nowym wątku. Otóż gdy próbowałem dać to w tym samym wątku, to spotykałem się z licznymi bugami związanymi z oknem (JFrame) jak i z samą emulacją. I dlatego też właśnie ta pętla jest tworzona w nowym wątku w celu odseparowania jej od okna, co nie blokuje pętli komunikatów.

 

moja kupa jest lepsza niż te wszystkie twoje "programiki".

Kolejny zbędny "program"... Jakbyś nie mógł zacząć tworzyć MC od nowa :o

i byś może zarobił 5 kałów za to :D 

1/10

[ ANTY-WARN ]
opinia konstruktywna ~ esej.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na stronach
Użytkownik
Teraz, esej napisał:
Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! Pokaż ukrytą zawartość

 

moja kupa jest lepsza niż te wszystkie twoje "programiki".

Kolejny zbędny "program"... Jakbyś nie mógł zacząć tworzyć MC od nowa :o

i byś może zarobił 5 kałów za to :D 

1/10

[ ANTY-WARN ]
opinia konstruktywna ~ esej.

Krytykujesz, a nawet nie podałeś argumentów. Program nie jest bezużyteczny, jest dopiero we wczesnym stadium.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na stronach
Użytkownik

A do czego tu argumenty? Argumenty podał już @Wizzard i podzielam jego zdanie. 

Jeśli tworzysz swoje programy , które są krytykowane to przestań je tu wstawiać i będzie dobrze!

Udostępnij tego posta


Odnośnik do posta
Udostępnij na stronach
Użytkownik
Teraz, esej napisał:

A do czego tu argumenty? Argumenty podał już @Wizzard i podzielam jego zdanie. 

Jeśli tworzysz swoje programy , które są krytykowane to przestań je tu wstawiać i będzie dobrze!

Nie wiem, bo jego argumenty tyczą się tylko mojego stylu kodowania, a nie samego programu. A program interpretuje kod BASIC'a dobrze. Co do krytyki, to akurat wcale mi to nie przeszkadza, żeby zamieszczać tutaj moje programy.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na stronach
Użytkownik
1 minutę temu, Programmer2004 napisał:

Nie wiem, bo jego argumenty tyczą się tylko mojego stylu kodowania, a nie samego programu. A program interpretuje kod BASIC'a dobrze. Co do krytyki, to akurat wcale mi to nie przeszkadza, żeby zamieszczać tutaj moje programy.

Ok, przestań już spamować , bo zaraz warna zgarniesz...

#topic

Co do programu 2 zakładki brzydki styl... nie polecam

Edytowane przez esej

Udostępnij tego posta


Odnośnik do posta
Udostępnij na stronach
Użytkownik
Teraz, esej napisał:

Ok, przestań już spamować , bo zaraz warna zgarniesz...

#topic

Co do programu 2 zakładki brzydki styl... nie polecam

2/10

Jak już piszesz, że program ma brzydki styl, to chociaż napisz, co mam zmienić w interfejsie.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na stronach
Użytkownik

Wszyscy hejtują, ale pragnę zauważyć, że autor ma dopiero 13 lat - wnioskując po nicku. I jak na taki wiek umie dużo. Chciałbym się spytać, np. @eseja, czy umie takie coś napisać? Zamiast krytykować wszystko co tylko można, lepiej napiszcie co i jak może poprawić.

No a co do samego programu to pomysł fajny, gratulacje.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na stronach
Użytkownik
49 minut temu, KrejzolekPRO napisał:

Wszyscy hejtują, ale pragnę zauważyć, że autor ma dopiero 13 lat - wnioskując po nicku. I jak na taki wiek umie dużo. Chciałbym się spytać, np. @eseja, czy umie takie coś napisać? Zamiast krytykować wszystko co tylko można, lepiej napiszcie co i jak może poprawić.

No a co do samego programu to pomysł fajny, gratulacje.

@KrejzolekPRO ja umiem tylko VB.NET :kappa:  i nie znam się na innych jenzykach :kappa: (:bezkappy:)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na stronach
Użytkownik
2 godziny temu, KrejzolekPRO napisał:

Wszyscy hejtują, ale pragnę zauważyć, że autor ma dopiero 13 lat - wnioskując po nicku. I jak na taki wiek umie dużo. Chciałbym się spytać, np. @eseja, czy umie takie coś napisać? Zamiast krytykować wszystko co tylko można, lepiej napiszcie co i jak może poprawić.

No a co do samego programu to pomysł fajny, gratulacje.

Cieszę się, że się podoba. Tematem emulacji zainteresowałem się tak rok temu, a że uwielbiam też stare technologie, to pomyślałem, że emulator BBC Micro będzie fajnym pomysłem. Nie jest jeszcze ukończony i są emulatory o wiele lepsze od mojego, ale i tak dziękuję bardzo. ;)

A co do pana @esej, nadal czekam na to, co mogę poprawić w interfejsie, aby nie był on brzydki.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na stronach
Użytkownik
2 minuty temu, arizonaTwentyOne napisał:

Tam zamiast "you must" bardziej pasowałoby "you have to" :/ 

Cóż, może i by pasowało, no ale tego już zmienić nie mogę, no bo jak wiemy, to emulatory nie polegają na przepisywaniu gier na inną platformę, lecz na udawaniu danego sprzętu. Więc no... Bez edytowania plików gry nie idzie tego zmienić.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na stronach

Żeby dodać komentarz, musisz założyć konto lub zalogować się

Tylko zarejestrowani użytkownicy mogą dodawać komentarze

Dodaj konto

Załóż nowe konto. To bardzo proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.

Zaloguj się teraz


  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×