agony09 jetzt habe ich verstanden was du machen willst. Ich habe Dir hier anbei einen Vorschlag zur Lösung gemacht

Hello, Guest the thread was viewed64k times and contains 325 replies
last post from captain_buck_rogers at the
Virtual C64 nun im Web und mit CSDB-Browser
- captain_buck_rogers
- Thread is Unresolved
-
-
okay, danke. das mit dem kopieren und ändern, habe ich richtig verstanden, dass ich dann hier in diesem Abschnitt in der vc64_uj.js
die Rom-Links ändern/anpassen muss ?
--------------------------------------------------------
async function fetchOpenROMS(){
var installer = async response => {
try{
var arrayBuffer = await response.arrayBuffer();
var byteArray = new Uint8Array(arrayBuffer);
var rom_url_path = response.url.split('/');
var rom_name = rom_url_path[rom_url_path.length-1];
var romtype = wasm_loadfile(rom_name, byteArray, byteArray.byteLength);
if(romtype != "")
{
local_storage_set(romtype+".bin", ToBase64(byteArray));
load_roms(false);
}
} catch {
console.log ("could not install system rom file");
}
}
fetch("https://mega65.github.io/open-roms/bin/basic_generic.rom").then( installer );
fetch("https://mega65.github.io/open-roms/bin/kernal_generic.rom").then( installer );
// fetch("https://mega65.github.io/open-roms/bin/chargen_openroms.rom").then( installer );
fetch("https://mega65.github.io/open-roms/bin/chargen_pxlfont_2.3.rom").then( installer );
}
--------------------------------------------------------------
Wenn ja, wo sage ich dem dann noch, dass er auf mein Floppy Rom "floppy1541.rom" automatisch laden soll ?
Und danach habe ich so verstanden dass ich dann noch das mit dem "else if(msg == "MSG_ROM_MISSING")" - was dahinter folgt ersetzen soll, laut deinem Vorschlag.
Das "function fetchOpenROMS" kommt in der vc64_uj.js mehrmals vor, daher frage ich nochmal was genau gemeint ist.
Nochmals vielen Dank für die Mühe
-
okay, danke. das mit dem kopieren und ändern, habe ich richtig verstanden, dass ich dann hier in diesem Abschnitt in der vc64_uj.js
die Rom-Links ändern/anpassen muss ?
genau du kopierst die gesamte Funktion und nennst sie zum Beispiel fetchMeineOriginalCommodoreROMS()
darin änderst du dann die Adressen zu den ROMS ab in den fetch Befehlen am Ende.
Wenn ja, wo sage ich dem dann noch, dass er auf mein Floppy Rom "floppy1541.rom" automatisch laden soll ?
da kopierst du einfach einen der bestehenden fetch Befehle und gibst da das Floppy-rom an. Also z.B.
fetch("https://deine-adresse.de/1541.rom").then( installer );
Und danach habe ich so verstanden dass ich dann noch das mit dem "else if(msg == "MSG_ROM_MISSING")" - was dahinter folgt ersetzen soll, laut deinem Vorschlag
ja musst du machen. Damit beim ersten Start -- wenn noch keine ROMS da sind -- nicht der ROM -Dialog aufgeht ... sondern das dann gleich deine roms geladen werden.
Das "function fetchOpenROMS" kommt in der vc64_uj.js mehrmals vor, daher frage ich nochmal was genau gemeint ist.
es wird nur einmal definiert aber mehrmals aufgerufen. Aber du kannst das ignorieren.. wenn du die Funktion kopierst den Namen änderst und dann an der Stelle bei MSG_ROM_MISSING aufrufst ist schon alles gut.
Nochmals vielen Dank für die Mühe
Gerne geschehen 8-)
-
Da sage ich mal vielen Dank. Es scheint in der Tat zu funktionieren
ich werde weiter ausprobieren....
Derzeit probiere ich auch bisschen mit der "run.html" rum,
mit dem Befehl darin "url:'doc/media/wolfling14.d64" kann man ja automatisch die Diskette "einlegen" lassen,
kann man das auch noch mit einem automatischen "LOAD"*",8,1" ergänzen ?
Wobei da auch die Frage wäre, wie ist es, wenn ein Spiel aus 2 oder mehr Diskettenseiten besteht ?
Kann man die auch automatisch in der run.html aufrufen lassen ?Nochmals herzlichen Dank im Voraus.
-
Hi agony09
wie man ihn das load"*",8,1 automatisch tippen lässt wird auch im wiki zu vc64web erklärt
https://github.com/vc64web/vir…eb/wiki/vc64webplayer_d64
das gescriptete also quasi automatische Laden gleich mehrerer Disketten zu verschiedenen Zeiten in ein und das gleiche Laufwerk müsste man bei vc64web noch vorbereiten... Bei vAmigaWeb habe ich es bereits so gelöst, dass ich eine mount_list von außen mitgeben kann und dann gleichzeitig ein zip file in der url angebe in der die verschiedenen zu mountenden disks enthalten sind. Soetwas ähnliches müsste man für vc64web dann auch nachbauen... Das timing würde man dann so lösen, dass man in der mount list z.B. eine CPU Zyklen Zahl angibt, bei der der mount/insert der nächsten Diskette auszulösen ist.
-
Ja vielen Dank.
Es kommt ja manchmal vor,, dass es im Spiel heißt, "legen Sie Disk 2" ein, oder "Seite B".
Beim Amiga scheint es mir etwas einfacher zu sein, da kann man eine in DF0 und die andere in DF1 einlegen.
Danke nochmal für die tollen Antworten
-
Hi captain_buck_rogers, wie machst Du das, dass im CSDb-Browser vom vc64web in den Top-Lists auch Screenshots drinsind? Ich scrape bei mir im Code die Toplist-HTML-Ausgabe, weil ich für Toplists keinen XML-Webservice gefunden habe. Wenn ich minimalistisch nur die HTML-Ausgabe parse, habe ich mit einem HTTP-Request alle Toplist-Einträge, die ich will, aber es fehlen mir Meta-Angaben wie Screenshot oder auch Release Date. Das heißt, ich müsste auch auf die Einzel-Release-XML-Dokumente nochmal zugreifen, um die fehlenden Angaben dort zusammenzusammeln. Machst Du das auch so oder hast Du eine bessere Lösung?
EDIT: Ich beantworte mir meine Frage mal selbst nach Spicken:
https://github.com/vc64web/vir…master/js/vc64_browser.js
Ich habe den XML-Webservice noch nicht mit "chart" benutzt, das klingt nach der Lösung!!!
"chart" ist auch undokumentiert, man sieht, Du hast Insider-Infos!
-
Ich habe das mit dem XML Service selbst abgespickt im Sourcecode von mrsid seiner C64 Scene.app
Diese C64 Scene app hat mich überhaupt erst zum vc64web inspiriert. Es war nämlich so, dass Apple das reguläre Sideloaden (also ohne Jailbreak aber am Appstore vorbei) irgendwann immer mehr eingeschränkt hatte ... zuerst konnte man irgendwelche beliebigen apps deren Sourcecode man hatte einfach mit Xcode für drei Monate aufs iPhone laden dann irgendwann aber nur noch für 7 Tage... das war echt ärgerlich weil ich fand die app von mrsid total gut ...da hatte ich mir dann gedacht das was mrsid in der nativen app gebaut hatte so ähnlich in einer WebApp die man dann ohne Einschränkungen überall verwenden kann nachzubauen...
emulaThor vielleicht findest du ja noch mehr undokumentierte Aufrufe in der C64 Scene app, ich habe ein paar Sachen weggelassen z.B. die Cracktros habe ich bei den Top Charts weggelassen ... sind die eigentlich wichtig ?
-
Ich habe das mit dem XML Service selbst abgespickt im Sourcecode von mrsid seiner C64 Scene.app
Das ist ja spannend, weil ich diese App noch gar nicht kannte! Ich war schon stolz, dass ich folgende Verwender der XML-Services kannte:
- petscii-bbs (https://github.com/sblendorio/petscii-bbs), da gibt es auch einen CSDb-Browser und ich gehe mal ohne Sourcecode-Lektüre davon aus, dass das über die XML-Webservices läuft.
- Das schon erwähnte CShellDB von Chordian
- Dein Browser
- Irgendein Tool für den Ultimate64, mit dem man sich die neuesten Releases auf eine SD-Karte synchronisieren kann, die man dann im Ultimate wieder einlegt.
Wenn Du noch mehr Verwender kennst, wäre ich interessiert!
Ich habe bei mir im Coding vorhin die Toplists (chart) und LatestReleases über XML ausprobiert anstelle meiner RSS- und HTML-Scraper (bisher habe ich den XML-Service nur für Einzelrelease-Details verwendet), aber was mich noch "stört", ist, dass immer nur 25 Releases drin sind in den Responses (ja, es gibt für manche noch einen Teil 2... hmmm....). Gibt es einen Parameter, um noch mehr anzufordern? Ich bin gierig!
Ich kriege zum Beispiel über den RSS-Feed der Latest Releases 140 Releases mit Screenshot gemeldet, da klingt 25 etwas mau...
EDIT: Cracktros finde ich persönlich jetzt nicht so essentiell wichtig wie Demos, Grafik oder Musik, aber da werden viele Leute anderer Meinung sein.
-
petscii-bbs (https://github.com/sblendorio/petscii-bbs), da gibt es auch einen CSDb-Browser und ich gehe mal ohne Sourcecode-Lektüre davon aus, dass das über die XML-Webservices läuft.
Falsch, da mag auch jemand reguläre Ausdrücke, holla, da sind ja unverschämt viele Regex-Konstruktionen drin:
https://github.com/sblendorio/…petscii/CsdbReleases.java -
Ich hacke gerade ein wenig mit URLs und subtype 14 bei den Charts gibt eine Übersicht über alle Chart-Typen aus.
EDIT: Wer mehr als 25 Einträge haben will: "count" ist Dein Freund!
-
Also, diese XML-Webservices sind nix für Warmduscher. Kriegst ein Release, dass von einer Person (Handle) released wurde und es wird die Handle-ID angegeben, aber man muss sich dann den Handle-String aus den Kommentaren oder irgendwoher raussuchen. Das heißt, ich muss den Release-Tree am Ende in mehreren Passes parsen und aus dem XML wieder Lookup-Arrays für Handles und Groups anlegen. Für eine Übersicht interessieren mich die Kommentare nicht. Ich will die Kommentare nur im Detailview anzeigen. Trotzdem muss ich die alle abturnen, um den Handle-Namen rauszufinden für ID xy.
Vielleicht kann ich den Detail-Level noch runterschrauben.
-
Hier ein YouTube Video das die C64 Scene app von mrsid in Aktion zeigt
[External Media: https://www.youtube.com/watch?v=vo8WEDtKwyQ]Das mit dem Count schaue ich mir jetzt noch mal an… wir könnten das als Setting den Nutzer ja selbst einstellen lassen … mal schauen
-
Wer mehr als 25 Einträge haben will: "count" ist Dein Freund!
https://vc64web.github.io hat jetzt ein neues Setting bekommen, so dass man im Scene Browser einstellen kann ob man die Top-Charts 25, 50, 75 oder 100 sehen möchte.
Danke emulaThor für den Tipp mit dem count !
-
Danke für das Video, schaue ich später in Ruhe!
Das hier hat jetzt einiges Gehacke erfordert, bis ich alle Groups und Handles korrekt anzeigen konnte. Der Code dafür ist immer noch struppig:
-
CSDb-Kick ist ein sehr aufgeräumter und übersichtlicher CSDb Scene Browser. Er wurde von emulaThor entwickelt. Man kann Releases und Demos damit direkt in vc64web starten.
um den neuen CSDb-Kick von emulaThor gebührend zu Feiern
wurde in vc64web
+ ein Fullscreen Button in die vc64web Menübar eingebaut um die Releases "full" zu genießen
+ ein neuer Schalter in die Settings eingebaut... er heißt "wake lock", wenn man ihn aktiviert bewirkt er, dass das Hostsystem bei langen Demos schauen nicht in den Screensavermodus bzw. in den Standby abrutscht. (Das wake lock ist nur aktiv wenn der C64er läuft, wenn man im vc64web auf Pause drückt dann wird das wake lock außer Kraft gesetzt und das Hostsystem darf schlafen wenn es will um Strom zu sparen)
außerdem ist es mir schon öfters passiert das ich auf einem iPhone versehentlich auf reset anstelle auf pause oder das Hamburger-Menu gedrückt hatte ... weil die beiden Buttons klein sind und direkt nebeneinander... und dann war alles wegresettet... daher
+ wurde ein Bestätigungsdialog bei Reset zwischengeschaltet
-
Gerade aufgefallen : startet man eine Demo und klick dann später auf den "Fullscreen" Button fehlt der Sound. Erst wenn man das obere Menü ausblendet (mit den drei Strichen) ist der Sound wieder da (oder einmal aktiv in das Fenster klickt) ...
PS : passiert nur, wenn man vorher in einem anderen Tab des Browsers aktiv war und dann zu vc64web zurückkehrt ...
-
Hi SkulleateR, danke für die Rückmeldung, in welchem OS und Browser hast du das Verhalten beobachtet ?
-
Hi SkulleateR, danke für die Rückmeldung, in welchem OS und Browser hast du das Verhalten beobachtet ?
MacOS Ventura 13.4.1 und Safari
-
ja ich hab mal damit rumgespielt... also bei den anderen beiden browsern chrome und firefox da wird durchgehend sound gespielt wenn man in fullscreen und zurück wechselt. Bei Safari schaltet es sich immer ganz kurz ab wenn er in Fullscreen wechselt und bei meinen Test war es zur Hälfte dann immer so das er gemutet geblieben ist ... d.h. Safari mutet es irgendwie beim umschalten... da es mal geht und mal nicht => Racecondition... bei den anderen beiden Browser nicht. Ich schau mal ob es an mir liegt... der schmeißt vielleicht visible=false events wenn er in Fullscreen geht um es dann gleich wieder auf visible zu setzen und dann kommt es mit dem Ton an und aus durcheinander ... ich schau mal