Und neugierig, wie ich bin, hab ich auch gleich ein paar Fragen zu den Features: Verstehe ich das richtig, dass BYOS hardwareseitig einen internen Speicher mitbringen wird, in den man Modul-ROMs kopieren kann? Wie groß wird dieser Speicher sein? Und bleibt der Speicherinhalt auch nach dem Ausschalten der Konsole erhalten?
Ja, richtig verstanden. Ich plane SRAM Speicher zu nutzen, also bleibt nach dem Abschalten nichts erhalten, dafür wird aber eine unendliche Lebensdauer vom Chip gewährleistet (größere Flash Chips, die als Alternative dienen könnten, haben eine sehr kurze Lebensdauer wenn Ich mehr als 32MBit nutzen will).
Zur Größe plane Ich mindestens 8MByte (64Mbit), damit alle offiziellen Titel unterstützt werden (Je nach Preis für die ICs werde Ich mich entscheiden, wie viel Speicher es wird, aber das wird noch etwas dauern bis Ich mich damit auseinandersetze).
Was die Unterstützung von SD-Karten betrifft, würde mich interessieren, ob dazu ein Extra-Adapter-Modul benötigt wird oder ob der SD-Slot direkt in der Konsole angebracht wird?
Ich plane den SD-Slot direkt in der Konsole zu verbauen. Ist meiner Meinung nach das einfachste, schnell mit einer Feile ein Rechteck ins Gehäuse und den SD-Slot befestigen.
Zu guter Letzt natürlich die obligatorische Frage, ob der Lockout-Chip deaktiviert bzw. durch einen Super CIClone ersetzt wird und ob eine wie auch immer geartete 50/60-Hz-Umschaltung geplant ist?
Damit hab Ich mich ehrlichgesagt nicht beschäftigt (Funktion eines solchen Mods), wobei es eigentlich nur Sinn machen würde, solch ein Feature miteinzubinden. Ich werde mich sobald ich das Menü stehen hab mit der Hardware eingehender beschäftigen.
Zumindest bei DSP-Modulen wie Mario Kart sollten Cheats theoretisch schon möglich sein.
Stimmt, der DSP1 ist (soweit Ich weiß) nicht mit der ROM verbunden. Aber es wird wahrscheinlich noch mehr Hardware, als geplant, nötig sein, um das möglich zu machen (hauptsächlich Buffer- und AND-Gates, die zwischen eingestecktem Modul und internem Speicher wechseln, wenn die richtige Adresse angesteuert wird). Sollte so etwas nötig sein (Ich muss mich wie gesagt noch etwas eingehender mit der Hardware beschäftigen), damit DSP Spiele von internem Speicher zusammen mit Cheats funktionieren, werde Ich es vorerst nicht auf die Feature-Liste nehmen.
Da darf ich dir den Umstieg auf einen neueren, 16-Bit-fähigen Compiler dringend ans Herz legen. Der würde nämlich u. a. auch den -- vermutlich unbeabsichtigten -- BRK-Opcode in deiner Start-Routine vermeiden helfen …
Code: Alles auswählen
$00/8000 78 SEI A:0042 X:0005 Y:00FF P:EnvMXdIzc
$00/8001 C2 30 REP #$30 A:0042 X:0005 Y:00FF P:EnvMXdIzc
$00/8003 18 CLC A:0042 X:0005 Y:00FF P:EnvMXdIzc
$00/8004 FB XCE A:0042 X:0005 Y:00FF P:EnvMXdIzc
$00/8005 A2 FF LDX #$FF A:0042 X:0005 Y:00FF P:envMXdIzC
$00/8007 01 9A ORA ($9A,x)[$00:5555] A:0042 X:00FF Y:00FF P:eNvMXdIzC
$00/8009 A9 00 LDA #$00 A:0057 X:00FF Y:00FF P:envMXdIzC
$00/800B 00 48 BRK #$48 A:0000 X:00FF Y:00FF P:envMXdIZC
*** BRK
Der BRK Opcode (der mich zuerst auch sehr verwirrt hat) wird nicht ausgeführt, denn vorher werden die A,X und Y Register in den 16 Bit Modus gesetzt (REP #$30) und der Emulation-Mode ausgestellt.
Damit werden die Bytes anders interpretiert (für LDA werden dann 3 Bytes eingelesen

).
Der Code wird so von der SNES eingelesen (wenn Ich dem no$sns Debugger glauben darf):
Code: Alles auswählen
$00/8000 78 SEI
$00/8001 C2 30 REP #$30;wechselt A,X,Y in 16 Bit Modus
$00/8003 18 CLC
$00/8004 FB XCE;Emulation-Mode aus
$00/8005 A2 FF 01 LDX #$01FF
$00/8008 9A TXS;stellt Stack auf $01FF (ähnlich wie bei der NES)
$00/8009 A9 00 00 LDA #$0000
$00/800C 48 PHA
Ich kann mir wirklich nicht vorstellen, dass Ich den 16 Bit Modus zu irgendwas gebrauchen kann, außer Daten schneller von A nach B zu kopieren, wenn ich den DMA Controller nicht nutze (Man kann mich aber gerne auch eines Besseren belehren).
Also bisher komme Ich sehr gut mit dem 8-Bit-Programmieren zurecht
Ernsthaft, bei einem derart ambitionierten Projekt wie BYOS wirst du meines Erachtens nicht durchweg auf die Vorteile von 16-Bit-Operationen verzichten wollen.
Also, um ehrlich zu sein, finde Ich, dass es nicht wirklich allzu schwer ist, ein solches Projekt auf die Beine zu stellen (zumindest nicht schwerer als ein komplettes Spiel von Grund auf zu programmieren). Das liegt aber auch wahrscheinlich daran, dass Ich den µC die meiste Arbeit machen lasse (Die SNES wird im Prinzip nur für Eingabe über das Pad und Ausgabe über den Bildschirm genutzt). Im Moment plane Ich einen AVR µC zu nutzen, je nachdem, wie schnell dieser Daten von einem externen Speicher und SD Karten überträgt (es soll nicht so lahm wie beim SuperUfo werden).
Davon abgesehen: Wenn du deine Kenntnisse erst einmal auf die zusätzlichen 65816-Befehle ausdehnst, werden dir Tricksereien wie diese hier erspart bleiben:
Code: Alles auswählen
$00/81B4 48 PHA A:00C2 X:0040 Y:00FF P:EnvMXdIzc
$00/81B5 8A TXA A:00C2 X:0040 Y:00FF P:EnvMXdIzc
$00/81B6 48 PHA A:0040 X:0040 Y:00FF P:EnvMXdIzc
$00/81B7 98 TYA A:0040 X:0040 Y:00FF P:EnvMXdIzc
$00/81B8 48 PHA A:00FF X:0040 Y:00FF P:ENvMXdIzc
Dann benötigst du nämlich nur noch folgende Instruktionen, um exakt dasselbe zu erreichen:
Ok, das war wirklich unnötig von mir

Ich habe, bevor Ich dieses Projekt gestartet habe, nur für NES (und ein bisschen auch für den Gameboy) programmiert. Ich hatte eine Vorlage für NES Programme, die Ich schnell für SNES umgeschrieben habe, und das ist in meiner NMI Routine wohl so geblieben.
Natürlich habe Ich die PHX/PHY Opcodes auch in den Macros.
Eine Feature-Liste des ursprünglichen Ultra16 habe ich
hier für dich rausgesucht.
Danke. Von den Features her, so denke Ich mal, steht BYOS dem Ultra16 in nichts nach (außer den Satellaview Features, aber die scheinen nicht allzu interessant).
Zumindest unter higan-accuracy scheint irgendetwas mit der Bildschirmhelligkeit nicht zu stimmen -- aber ich teste das Ganze gerne heute Abend nochmal auf echter Hardware.
Ich Debugge mit no$sns (und teilweise auch bsnes-debugger), da schien mir alles einwandfrei. Ich werde aber den Test auf richtiger Hardware noch abwarten
