Auch wenn jetzt doch etwas Zeit vergangen ist......möchte ich euch auch hier ein neues QEmu PPC GUI vorstellen
Vielleicht sind ja für den ein oder anderen noch ein paar Ideen dabei
Verzeit bitte das dieses GUI derzeit nur für die Emulation der QEmu PC Machinen: Pegasos2, AmigaOne und Sam460ex verwendbar ist
Für all diese werden noch die benötigten AmigaOS 4 Betriebssysteme benötigt!
Kleines Update des Guis:
- Mac99 Emulation und Sungem Netzwerkkarte hinzugefügt
Nun sollten folgende Konfigurationen laufen:
MorphOS 3.18 (ISO): Pegasos 2 + Bios + 1024 + GTK + SM501 + ES1370 + RTL8139 (In Console eingeben: boot cd boot.img)
MacOS 9.2.2 (HD): Mac99 + 1024 + GTK/SDL + VGA + AC97 + Sungem
AmigaOS 4.1 (HD/ISO): Pegasos 2 + Kernel BBoot + 1024 + GTK/SDL + SM501 + ES1370 + RTL8139
AmigaOS 4.1 (HD/ISO): AmigaOne + Loader BBoot + 1024 + GTK/SDL + SM501 + ES1370 + RTL8139
AmigaOS 4.1 (HD/ISO): Sam460ex + 1024 + GTK/SDL + SM501 + ES1370 + RTL8139
#include <GUIConstantsEx.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>
Global $iniFile = @ScriptDir & "\qemu_ppc_config.ini"
; Erstelle das GUI
GUICreate("QEMU PPC GUI v1.0", 600, 680)
; Pfad zu QEMU PPC
GUICtrlCreateLabel("Pfad zu QEMU PPC:", 10, 10, 130, 20)
Global $inputQemuPath = GUICtrlCreateInput("", 150, 10, 320, 20)
Global $btnQemuPath = GUICtrlCreateButton("Durchsuchen", 480, 10, 100, 20)
; Maschine Auswahl
GUICtrlCreateLabel("Maschine:", 10, 40, 130, 20)
Global $comboMachine = GUICtrlCreateCombo("", 150, 40, 320, 20)
GUICtrlSetData($comboMachine, "amigaone|pegasos2|sam460ex|mac99")
; Speicher (RAM)
GUICtrlCreateLabel("Speicher (MB):", 10, 70, 130, 20)
Global $inputMemory = GUICtrlCreateInput("1024", 150, 70, 320, 20)
; ISO-Datei (optional)
GUICtrlCreateLabel("ISO-Datei (optional):", 10, 100, 130, 20)
Global $inputISO = GUICtrlCreateInput("", 150, 100, 320, 20)
Global $btnISO = GUICtrlCreateButton("Durchsuchen", 480, 100, 100, 20)
; Festplatte 1 (optional)
GUICtrlCreateLabel("Festplatte 1 (optional):", 10, 130, 130, 20)
Global $inputDisk1 = GUICtrlCreateInput("", 150, 130, 320, 20)
Global $btnDisk1 = GUICtrlCreateButton("Durchsuchen", 480, 130, 100, 20)
; Festplatte 2 (optional)
GUICtrlCreateLabel("Festplatte 2 (optional):", 10, 160, 130, 20)
Global $inputDisk2 = GUICtrlCreateInput("", 150, 160, 320, 20)
Global $btnDisk2 = GUICtrlCreateButton("Durchsuchen", 480, 160, 100, 20)
; VGA Auswahl
GUICtrlCreateLabel("VGA Device:", 10, 190, 130, 20)
Global $comboVGA = GUICtrlCreateCombo("", 150, 190, 320, 20)
GUICtrlSetData($comboVGA, "std|cirrus|none")
; Display Auswahl
GUICtrlCreateLabel("Display:", 10, 220, 130, 20)
Global $comboDisplay = GUICtrlCreateCombo("", 150, 220, 320, 20)
GUICtrlSetData($comboDisplay, "gtk|sdl|none")
; Device Grafik
GUICtrlCreateLabel("Grafik Device:", 10, 250, 130, 20)
Global $comboGraphics = GUICtrlCreateCombo("", 150, 250, 320, 20)
GUICtrlSetData($comboGraphics, "sm501|ati-vga|cirrus-vga|bochs-display|VGA")
; Vollbild-Modus (Fullscreen) an/aus
Global $chkFullscreen = GUICtrlCreateCheckbox("Fullscreen aktivieren", 10, 280, 320, 20)
; Sound Device Auswahl
GUICtrlCreateLabel("Sound Device:", 10, 310, 130, 20)
Global $comboSound = GUICtrlCreateCombo("", 150, 310, 320, 20)
GUICtrlSetData($comboSound, "ac97|sb16|es1370")
; Netzwerk
GUICtrlCreateLabel("Netzwerk:", 10, 340, 130, 20)
Global $comboNetwork = GUICtrlCreateCombo("", 150, 340, 320, 20)
GUICtrlSetData($comboNetwork, "user|tap|bridge|virtio|rtl8139|sungem")
; BIOS Datei (optional, für pegasos2 und amigaone)
GUICtrlCreateLabel("BIOS-Datei (optional):", 10, 370, 130, 20)
Global $inputBios = GUICtrlCreateInput("", 150, 370, 320, 20)
Global $btnBios = GUICtrlCreateButton("Durchsuchen", 480, 370, 100, 20)
; Ordner Freigabe (optional)
GUICtrlCreateLabel("Freigabe Ordner (optional):", 10, 400, 130, 20)
Global $inputFolder = GUICtrlCreateInput("", 150, 400, 320, 20)
Global $btnFolder = GUICtrlCreateButton("Ordner auswählen", 480, 400, 100, 20)
GUICtrlCreateLabel("BBoot: Only Pegasos2", 220, 450, 320, 20)
; Kernel Datei (optional, nur für pegasos2)
GUICtrlCreateLabel("Kernel-Datei (optional):", 10, 480, 130, 20)
Global $inputKernel = GUICtrlCreateInput("", 150, 480, 320, 20)
; Button für Kernel Examples
Global $btnKernelLoader = GUICtrlCreateButton("Examples", 480, 480, 100, 20)
GUICtrlCreateLabel("BBoot: Only AmigaOne", 220, 520, 320, 20)
; Device Loader 1 (optional, nur für amigaone)
GUICtrlCreateLabel("Device Loader 1 (optional):", 10, 550, 130, 20)
Global $inputLoader1 = GUICtrlCreateInput("", 150, 550, 320, 20)
; Device Loader 2 (optional, nur für amigaone)
GUICtrlCreateLabel("Device Loader 2 (optional):", 10, 580, 130, 20)
Global $inputLoader2 = GUICtrlCreateInput("", 150, 580, 320, 20)
; Button für Device Loader Examples
Global $btnExampleLoader = GUICtrlCreateButton("Examples", 480, 565, 100, 20)
; Buttons für Speichern und VM starten
Global $btnStartVM = GUICtrlCreateButton("VM starten", 200, 630, 160, 30)
; GUI anzeigen
GUISetState(@SW_SHOW)
; Automatisches Laden der Konfiguration beim Start
LoadConfig()
; Haupt-Event-Schleife
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
; Speichern der Konfiguration beim Schließen
SaveConfig()
ExitLoop
Case $btnQemuPath
_BrowseForFile($inputQemuPath, "Alle Dateien (*.exe)")
Case $btnISO
_BrowseForFile($inputISO, "ISO Dateien (*.iso)")
Case $btnDisk1
_BrowseForFile($inputDisk1, "Alle Dateien (*.img; *.qcow2)")
Case $btnDisk2
_BrowseForFile($inputDisk2, "Alle Dateien (*.img; *.qcow2)")
Case $btnBios
_BrowseForFile($inputBios, "Alle Dateien (*.rom; *.bin)")
Case $btnFolder
_BrowseFolder($inputFolder)
Case $btnKernelLoader
; Button Kernel Example einfügen
MsgBox($MB_SYSTEMMODAL, "Examples","Kernel: bboot-0.7\bboot -initrd roms\Pegasos2\Kickstart.zip")
Case $btnExampleLoader
; Button Loader Example einfügen
MsgBox($MB_SYSTEMMODAL, "Examples","Loader 1: cpu-num=0,file=bboot-0.7\bboot"&@crlf&"Loader 2: addr=0x600000,file=roms\AmigaOne\Kickstart.zip")
Case $btnStartVM
StartVM()
EndSwitch
WEnd
GUIDelete()
; Hilfsfunktion zur Dateiauswahl
Func _BrowseForFile($inputField, $filter)
Local $file = FileOpenDialog("Datei auswählen", @WorkingDir, $filter, 1)
If Not @error Then
GUICtrlSetData($inputField, $file)
EndIf
EndFunc
; Funktion für Ordnerauswahl
Func _BrowseFolder($inputControl)
Local $folderPath = FileSelectFolder("Ordner auswählen", "", 3)
If @error = 0 Then GUICtrlSetData($inputControl, $folderPath)
EndFunc
; Funktion zum Speichern der Konfiguration in einer INI-Datei
Func SaveConfig()
IniWrite($iniFile, "QEMU", "QemuPath", GUICtrlRead($inputQemuPath))
IniWrite($iniFile, "QEMU", "Maschine", GUICtrlRead($comboMachine))
IniWrite($iniFile, "QEMU", "Memory", GUICtrlRead($inputMemory))
IniWrite($iniFile, "QEMU", "ISO", GUICtrlRead($inputISO))
IniWrite($iniFile, "QEMU", "Disk1", GUICtrlRead($inputDisk1))
IniWrite($iniFile, "QEMU", "Disk2", GUICtrlRead($inputDisk2))
IniWrite($iniFile, "QEMU", "VGA", GUICtrlRead($comboVGA))
IniWrite($iniFile, "QEMU", "Display", GUICtrlRead($comboDisplay))
IniWrite($iniFile, "QEMU", "Graphics", GUICtrlRead($comboGraphics))
IniWrite($iniFile, "QEMU", "Fullscreen", GUICtrlRead($chkFullscreen))
IniWrite($iniFile, "QEMU", "Sound", GUICtrlRead($comboSound))
IniWrite($iniFile, "QEMU", "Network", GUICtrlRead($comboNetwork))
IniWrite($iniFile, "QEMU", "Bios", GUICtrlRead($inputBios))
IniWrite($iniFile, "QEMU", "Folder", GUICtrlRead($inputFolder))
IniWrite($iniFile, "QEMU", "Kernel", GUICtrlRead($inputKernel))
IniWrite($iniFile, "QEMU", "Loader1", GUICtrlRead($inputLoader1))
IniWrite($iniFile, "QEMU", "Loader2", GUICtrlRead($inputLoader2))
EndFunc
; Funktion zum Laden der Konfiguration aus der INI-Datei
Func LoadConfig()
GUICtrlSetData($inputQemuPath, IniRead($iniFile, "QEMU", "QemuPath", ""))
GUICtrlSetData($comboMachine, IniRead($iniFile, "QEMU", "Maschine", "pegasos2"))
GUICtrlSetData($inputMemory, IniRead($iniFile, "QEMU", "Memory", "1024"))
GUICtrlSetData($inputISO, IniRead($iniFile, "QEMU", "ISO", ""))
GUICtrlSetData($inputDisk1, IniRead($iniFile, "QEMU", "Disk1", ""))
GUICtrlSetData($inputDisk2, IniRead($iniFile, "QEMU", "Disk2", ""))
GUICtrlSetData($comboVGA, IniRead($iniFile, "QEMU", "VGA", "none"))
GUICtrlSetData($comboDisplay, IniRead($iniFile, "QEMU", "Display", "gtk"))
GUICtrlSetData($comboGraphics, IniRead($iniFile, "QEMU", "Graphics", "sm501"))
GUICtrlSetState($chkFullscreen, IniRead($iniFile, "QEMU", "Fullscreen", "0"))
GUICtrlSetData($comboSound, IniRead($iniFile, "QEMU", "Sound", "es1370"))
GUICtrlSetData($comboNetwork, IniRead($iniFile, "QEMU", "Network", "rtl8139"))
GUICtrlSetData($inputBios, IniRead($iniFile, "QEMU", "Bios", ""))
GUICtrlSetData($inputFolder, IniRead($iniFile, "QEMU", "Folder", ""))
GUICtrlSetData($inputKernel, IniRead($iniFile, "QEMU", "Kernel", ""))
GUICtrlSetData($inputLoader1, IniRead($iniFile, "QEMU", "Loader1", ""))
GUICtrlSetData($inputLoader2, IniRead($iniFile, "QEMU", "Loader2", ""))
EndFunc
; Funktion zum Starten der VM mit den ausgewählten Optionen
Func StartVM()
Local $cmd = '"' & GUICtrlRead($inputQemuPath) & '" -machine ' & GUICtrlRead($comboMachine) & ' -m ' & GUICtrlRead($inputMemory)
If GUICtrlRead($inputISO) <> "" Then
$cmd &= ' -cdrom "' & GUICtrlRead($inputISO) & '"'
EndIf
If GUICtrlRead($inputDisk1) <> "" Then
$cmd &= ' -drive file="' & GUICtrlRead($inputDisk1) & '",format=raw,index=0,media=disk'
EndIf
If GUICtrlRead($inputDisk2) <> "" Then
$cmd &= ' -drive file="' & GUICtrlRead($inputDisk2) & '",format=raw,index=1,media=disk'
EndIf
$cmd &= ' -vga ' & GUICtrlRead($comboVGA)
$cmd &= ' -display ' & GUICtrlRead($comboDisplay)
$cmd &= ' -device ' & GUICtrlRead($comboGraphics)
If GUICtrlRead($chkFullscreen) = $GUI_CHECKED Then
$cmd &= ' -full-screen'
EndIf
$cmd &= ' -device ' & GUICtrlRead($comboSound)
$cmd &= ' -netdev user,id=network0 -device ' & GUICtrlRead($comboNetwork) & ',netdev=network0'
; Nur für pegasos2 und amigaone: Optionales BIOS
If (GUICtrlRead($comboMachine) = "pegasos2" Or GUICtrlRead($comboMachine) = "amigaone") And GUICtrlRead($inputBios) <> "" Then
$cmd &= ' -bios ' & GUICtrlRead($inputBios) & ''
EndIf
; Nur für pegasos2 und amigaone: Optionaler Folder
If (GUICtrlRead($comboMachine) = "pegasos2" Or GUICtrlRead($comboMachine) = "amigaone") And GUICtrlRead($inputFolder) <> "" Then
$cmd &= ' -drive file=fat:rw:' & GUICtrlRead($inputFolder) & ',id=ufat,format=raw,if=none -device usb-storage,drive=ufat'
EndIf
; Nur für pegasos2: Optionaler Kernel
If GUICtrlRead($comboMachine) = "pegasos2" And GUICtrlRead($inputKernel) <> "" Then
$cmd &= ' -kernel ' & GUICtrlRead($inputKernel) & ''
EndIf
; Nur für amigaone: Device Loader 1 und 2
If GUICtrlRead($comboMachine) = "amigaone" Then
If GUICtrlRead($inputLoader1) <> "" Then
$cmd &= ' -device loader,' & GUICtrlRead($inputLoader1) & ''
EndIf
If GUICtrlRead($inputLoader2) <> "" Then
$cmd &= ' -device loader,' & GUICtrlRead($inputLoader2) & ''
EndIf
EndIf
; Starte die VM
Run($cmd, "", @SW_SHOW)
; Starte die VM - Console nicht schließen
;Run('cmd.exe /K "' & $cmd & '"', "", @SW_SHOW)
EndFunc
Alles anzeigen