CD32 Emulation / Made in..Greece

  • Έναρξη μίζας Έναρξη μίζας Scatman
  • Ημερομηνία έναρξης Ημερομηνία έναρξης
Πολύ δύσκολο και φιλόδοξο project, μπράβο! Από όσο καταλαβαίνω (διόρθωσέ με αν κάνω λάθος), έχεις ήδη ένα σταθερό 68k core που εκτελεί τουλάχιστον μέρος των εντολών.

Από καθαρή περιέργεια: σε ποιο σημείο του boot του CD32 βρίσκεσαι; Φτάνει να φορτώνει το Kickstart ή και πιο πέρα; Έχεις αρχίσει να υλοποιείς πράγματα όπως sprites, Copper, DMA ή timers; Σε ποια γλώσσα δουλεύεις και τι είδους emulation στοχεύεις (cycle ή instruction accurate); Επίσης, πώς έχεις στήσει το memory map και το dual-ROM setup του CD32;

Δεν ρωτάω για ανάκριση, απλώς το βρίσκω ενδιαφέρον και εντυπωσιακό εγχείρημα.
Κάθε μικρό βήμα που κάνεις σε αυτό είναι και μια μεγάλη νίκη.

Για την ιστορία, παλιότερα είχα γράψει κι εγώ έναν μικρό CHIP-8 emulator σε assembly, αλλά με τραβάνε περισσότερο οι compilers/interpreters.
 
Πολύ δύσκολο και φιλόδοξο project, μπράβο! Από όσο καταλαβαίνω (διόρθωσέ με αν κάνω λάθος), έχεις ήδη ένα σταθερό 68k core που εκτελεί τουλάχιστον μέρος των εντολών.

Από καθαρή περιέργεια: σε ποιο σημείο του boot του CD32 βρίσκεσαι; Φτάνει να φορτώνει το Kickstart ή και πιο πέρα; Έχεις αρχίσει να υλοποιείς πράγματα όπως sprites, Copper, DMA ή timers; Σε ποια γλώσσα δουλεύεις και τι είδους emulation στοχεύεις (cycle ή instruction accurate); Επίσης, πώς έχεις στήσει το memory map και το dual-ROM setup του CD32;

Δεν ρωτάω για ανάκριση, απλώς το βρίσκω ενδιαφέρον και εντυπωσιακό εγχείρημα.
Κάθε μικρό βήμα που κάνεις σε αυτό είναι και μια μεγάλη νίκη.

Για την ιστορία, παλιότερα είχα γράψει κι εγώ έναν μικρό CHIP-8 emulator σε assembly, αλλά με τραβάνε περισσότερο οι compilers/interpreters.
Ευχαριστώ! Ναι, ο 68k core είναι ήδη αρκετά σταθερός , εκτελεί μεγάλο μέρος του instruction set και πλέον περνάει τα πρώτα στάδια του CD32 boot χωρίς runaways.

Αυτή τη στιγμή βρίσκομαι λίγο μετά το ExecInit, δηλαδή στο σημείο όπου το Kickstart αρχίζει να στήνει vectors, stacks και early subsystems. Δεν έχω φτάσει ακόμη σε Copper, sprites ή DMA. Είμαι στο σημείο όπου το firmware “αναπνέει” και αρχίζει να ζητάει πιο σύνθετα opcodes (MOVEA.L abs.l, CAS κτλ) .

Είναι σε C++ κατά βάση. Έχω και λιγο C . Στοχεύω σε instruction accurate συμπεριφορά με καθαρό memory map. Το CD32 dual‑ROM setup (Kickstart + Extended ROM) ~παρεμπιμπόνως ΜΕΓΑΛΟΣ πόνος~ είναι πλήρως χαρτογραφημένο, με σωστό overlay handling και exception vectors.
Με λίγα λόγια , τα δύσκολα CPU gates έχουν περαστεί και πλησιάζω στο σημείο όπου θα αρχίσει να ζητάει πραγματικό custom chip hardware ~εκεί θα μπει στο παιχνίδι ο Copper, τα bitplanes και τα DMA channels.

Η μεγαλύτερη πρόκληση στο CD32 emulation δεν είναι μόνο η πολυπλοκότητα του hardware αλλά το ότι κινούμαι σε αχαρτογράφητα ύδατα. Δεν υπάρχει πραγματικό developer documentation που να εξηγεί βήμα‑βήμα τη ροή του boot ή τα ακριβή hardware expectations. Ότι μπορεί να βρεθεί και υπάρχει είναι αποσπασματικό και συνήθως προσανατολισμένο σε χρήστες.

Το άλλο μεγάλο ζήτημα είναι ότι τα ROMs που κυκλοφορούν στο διαδίκτυο δεν είναι αυθεντικά dumps.
Είναι λειτουργικά μεν αλλά έχουν τροποποιηθεί για να ταιριάζουν στις ανάγκες του WinUAE δε.
Αυτό σημαίνει ότι συμπεριφέρονται σωστά μόνο όταν ο emulator μιμείται συγκεκριμένες συμπεριφορές του WinUAE. Μέχρι να καταλάβω τι συμβαίνει πέρασα αρκετές απογοητεύσεις.

Με λίγα λόγια, το project απαιτεί debugging και καθαρή υλοποίηση από το μηδέν, χωρίς να μπορείς να βασιστείς σε “μαγικές” συμπεριφορές άλλων emulators.
Ηθελημένα έχω αποφύγει κάθε ταύτιση με τον WinUAE καθώς θέλω η προσπάθεια να είναι αυθεντική χωρίς να υπάρχει η ανάγκη για reference.
Οι μόνες τομές μεταξύ Paula32 / WinUAE είναι to επίσημο Motorola 68k instruction set (ίδιο encoding tables, ίδια semantics των opcodes ktl). Δλδ Motorola‑specific συμπεριφορές και το επίσημο CD32 memory map όπως το ορίζει η Commodore.

Edit : το γεγονός ότι ασχολείσαι με assembly σε κάνει γίγαντα στα μάτια μου.
 
Τελευταία επεξεργασία:
Πολύπλοκο και ασυνήθιστο project!

θα χρειαστεί χρόνο, διάθεση, αρκετή πνευματική ενέργεια, αλλά και τεχνικές γνώσεις που νιώθω πως ήδη διαθέτεις.
Θα παρακολουθώ κάθε εξέλιξη με ενδιαφέρον.

Μια τελευταία ερώτηση: πώς και επέλεξες το CD32 και όχι ένα A1200 ή A500; Το CD32 είναι αρκετά πιο περίπλοκο από τα A500/A1200. Σε ενδιαφέρει περισσότερο η κονσόλα ή η αρχιτεκτονική;

Το 2007 αποφάσισα να εγκαταλείψω τα εγκόσμια (high-level programming) και να αφοσιωθώ στην assembly, πρώτα στα 16 και μετά στα 32 bit.
 
Πολύπλοκο και ασυνήθιστο project!

θα χρειαστεί χρόνο, διάθεση, αρκετή πνευματική ενέργεια, αλλά και τεχνικές γνώσεις που νιώθω πως ήδη διαθέτεις.
Θα παρακολουθώ κάθε εξέλιξη με ενδιαφέρον.

Μια τελευταία ερώτηση: πώς και επέλεξες το CD32 και όχι ένα A1200 ή A500; Το CD32 είναι αρκετά πιο περίπλοκο από τα A500/A1200. Σε ενδιαφέρει περισσότερο η κονσόλα ή η αρχιτεκτονική;

Το 2007 αποφάσισα να εγκαταλείψω τα εγκόσμια (high-level programming) και να αφοσιωθώ στην assembly, πρώτα στα 16 και μετά στα 32 bit.
Συγκυριακά! Όσο απλό κι αφελές ακούγεται.

Με αφορμή ένα βίντεο, θέλησα να κάνω κάποιες δοκιμές παιχνιδιών. Κάπου εκεί συνειδητοποίησα πως πέρα του WinUAE δεν υπάρχει τίποτα άλλο ενεργό και κυρίως τίποτα direct, δλδ κατεβάζω τον εμού , φορτώνω τα bios roms και ξεκινώ. Έχοντας κάποια εμπειρία από emulation με πειραματικούς 8/16bit emulators, με όση άγνοια κινδύνου μπορεί να έχει ένα χομπίστας, μπήκα κατευθείαν στα βαθιά, δίχως γνώση των ιδιαιτεροτήτων των bios roms & συστήματος. Ομολογώ πως εφόσον είχα πιο καθαρή εικόνα μάλλον δε θα το είχα ξεκινήσει ποτέ!

Το αστείο είναι πως εφόσον το πρότζεκτ Paula32 πετύχει το στόχο του δλδ φτάσω σε ένα επίπεδο όπου φορτώνει κανονικά το σύστημα και παίζει ~έστω~ μερικά παιχνίδια (και με 1 θα είμαι ικανοποιημένος), μετά αρκετά εύκολα θα μπορεί να γίνει amiga multi-emu CDtv,1200 ακόμη και 500 διότι η αρχιτεκτονική/βάση υπάρχει και είναι παρόμοια μεταξύ των amiga συστημάτων. Αλλά αυτά τώρα είναι φουτουριστικά σενάρια.
 
Φαίνεται ότι είσαι ένας πολύ προσγειωμένος και προσηλωμένος χρήστης. Αν καταφέρεις να το κάνεις να φορτώσει έστω ένα παιχνίδι, για μένα αυτό σημαίνει ότι μπορείς να καταφέρεις τα πάντα.
 
Πίσω
Μπλουζα