"3 ways to emulate Atomiswave and Naomi"
Ver. Française:
Emulation
1/
Exécutez sûr l'émulateur RetroArch avec dat ou bin en choisissant core_libRetro reicast
2/
Reste également la possibilité avec un autre émulateur nullDC-Naomi-r150
MEmu := "NullDC"
MEmuV := "r150"
MURL := [""]
MAuthor := ["Ibn"]
MVersion := ""
MCRC := ""
iCRC := ""
MID := ""
MSystem := ["Sega Naomi","Sammy Atomiswave"]
;----------------------------------------------------------------------------
;
;----------------------------------------------------------------------------
StartModule()
BezelGUI()
FadeInStart()
BezelStart()
Run, %emuPath%.\nullDC_Win32_Release-NoTrace.exe
settingsFile := modulePath . "\" . moduleName . ".ini"
nullDCcfg := checkFile(emuPath . "\nullDC.cfg")
rom= %romPath%\%romName%%romExtension%
Sleep, 2000
Send, !{f}
Send, {enter}
Sleep, 2000
Send, %rom% ; sends rompath romfile from exe syntax
Send, {enter}
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
MyPath = C:\Program Files (x86)\iRotate\iRotate.exe
#+!Up::
Run %MyPath% /2:rotate=0
Return
#+!Down::
Run %MyPath% /2:rotate=180
Return
#+!Left::
Run %MyPath% /2:rotate=270
Return
#+!Right::
Run %MyPath% /2:rotate=90
Return
BezelDraw()
FadeInExit()
BezelExit()
Process("WaitClose", executable)
FadeOutExit()
ExitModule()
CloseProcess:
Process, Close, %executable%
FadeOutStart()
Sleep, 300
if winc_presses = 2 ; The key was pressed twice
SendInput {Esc}{Esc}
Return
à condition de posséder les fichiers lst nécessaires au démarrage des
ROMs bin ou dat
| nullDC_Naomi-r150.zip |
| null_DC.png |
exemple LST:
Nom du jeu
"bin-file-name", 0x0000000, <longueur du bin-file-name>
- Regardez la taille du fichier
(Propriétés du clic droit)
copiez le nombre en octets
puis dans la calculatrice windows
dans la vue menu sélectionnez scientifique
collez le nombre
et cliquez dans HEX
puis changez 0x0000000 en l'
exemple de valeur HEX souhaité :
Game123456 "Game123456", 0x0000000, 0x0 "0000000" (Insérez la valeur HEX souhaitée dans le devis)
exemple:
Game123456
"Game123456.bin or dat", 0x0000000, 0x01234567
| Akatsuki Bk Ausf Achse.dat |
| Akatsuki Bk Ausf Achse.lst |
| Animal Basket.bin |
| Animal Basket.lst |
| Atomiswave.dat |
| Azumanga Daioh Puzzle Bobble.dat |
| Azumanga Daioh Puzzle Bobble.lst |
| Bass Fishing Challenge.bin |
| Bass Fishing Challenge.lst |
| Beach Spikers.bin |
| Beach Spikers.lst |
| Border Down (Rev A).dat |
| Border Down (Rev A).lst |
| Capcom vs SNK 2 Millionaire Fighting 2001 (Rev A).dat |
| Capcom vs SNK 2 Millionaire Fighting 2001 (Rev A).lst |
| Capcom vs SNK Millenium Fight 2000 Pro.dat |
| Capcom vs SNK Millenium Fight 2000 Pro.lst |
| Capcom_Vs_SNK_2_Millionaire_Fighting_2001.bin |
| Chaos Field.dat |
| Chaos Field.txt |
| Clay Challenge.bin |
| Clay Challenge.lst |
| Cleopatra Fortune Plus.dat |
| Cleopatra Fortune Plus.lst |
| Confidential Mission.dat |
| Confidential Mission.lst |
| Cosmic Smash.bin |
| Cosmic Smash.lst |
| Crazy Taxi.lst |
| CrazyTaxi.bin |
| Dead Or Alive 2 Millenium.bin |
| Dead Or Alive 2 Millenium.lst |
| Death Crimson OX.dat |
| Death Crimson OX.txt |
| Demolish Fist.bin |
| Demolish Fist.lst |
| Dirty Pigskin.bin |
| Dirty Pigskin.lst |
| Doki Doki Idol Star Seeker.dat |
| Doki Doki Idol Star Seeker.lst |
| Dolphin Blue.bin |
| Dolphin Blue.lst |
| Dynamic Golf (Virtua Golf) (Japan) (Rev A).cue |
| Dynamite Deka Ex.dat |
| Dynamite Deka Ex.lst |
| Faster Than Speed.bin |
| Faster Than Speed.lst |
| Fist of the North Star.bin |
| Fist of the North Star.lst |
| Force Five.bin |
| Force Five.txt |
| Giant_Gram_EPR-21820_PATCHED.bin |
| Giga Wing 2.bin |
| Giga Wing 2.lst |
| Guilty Gear Isuka.bin |
| Guilty Gear Isuka.lst |
| Guilty Gear Isuka.zip |
| Guilty Gear Reload.zip |
| Guilty Gear X 1.5.bin |
| Guilty Gear X 1.5.lst |
| Guilty Gear X 1.5.zip |
| Guilty Gear XX |
| Guilty Gear XX Accent Core.dat |
| Guilty Gear XX Accent Core.lst |
| Guilty Gear XX Accent Core.zip |
| Guilty Gear XX Reload |
| Guilty Gear XX Reload.lst |
| Guilty Gear XX Slash.dat |
| Guilty Gear XX Slash.lst |
| Guilty Gear XX Slash.zip |
| Guilty Gear XX.lst |
| Guilty Gear XX.zip |
| Gun Spike - Cannon Spike.txt |
| Ikaruga.dat |
| Ikaruga.lst |
| Jambo Safari.bin |
| Jambo Safari.lst |
| Jingi Storm - The Arcade.dat |
| Jingi Storm - The Arcade.lst |
| Karous.dat |
| Karous.lst |
| Kidou Senshi Gundam - Renpou vs. Zeon DX (Japan).cue |
| KingOfFightersNewWave.bin |
| Knights of Valour.bin |
| Kuru Kuru Chameleon .dat |
| Kuru Kuru Chameleon.lst |
| La Keyboardxyu.dat |
| La Keyboardxyu.lst |
| Lupin The Third - The Shooting.dat |
| Lupin The Third - The Shooting.lst |
| Lupin The Third - The Typing (Rev A).dat |
| Lupin The Third - The Typing (Rev A).lst |
| Mamonoro.dat |
| Mamonoro.lst |
| Maximum Speed.bin |
| Maximum Speed.lst |
| Maze of the Kings, The.dat |
| Maze of the Kings, The.lst |
| Melty Blood Act Cadenza (Rev C).dat |
| Melty Blood Act Cadenza (Rev C).lst |
| Melty Blood Act Cadenza Ver B (Rev A).lst |
| Melty Blood Act Cadenza Ver B.dat |
| Melty Blood Act Cadenza Ver B.lst |
| Metal Slug 6.bin |
| Metal Slug 6.lst |
| Mobile Suit Gundam - Federation VS Zeon DX.dat |
| Mobile Suit Gundam - Federation VS Zeon DX.lst |
| Mobile Suit Gundam - Federation VS Zeon.dat |
| Mobile Suit Gundam - Federation VS Zeon.lst |
| Moeru Casinyo ~ Burning Casino.dat |
| Moeru Casinyo ~ Burning Casino.lst |
| Monkey Ball.dat |
| Monkey Ball.lst |
| Musapey's Choco Marker (Rev A).lst |
| Musapeys Choco Marker.dat |
| Naomi 2.dat |
| Naomi GD-ROM.dat |
| Neo Geo Battle Colliseum.bin |
| Neo Geo Battle Colliseum.lst |
| Noukone Puzzle Takoron.dat |
| Noukone Puzzle Takoron.lst |
| Power Stone 2.bin |
| Power Stone 2.lst |
| Power Stone.bat |
| Power Stone.bin |
| Power Stone.lst |
| Psyvariar 2 - The Will To Fabricate.dat |
| Psyvariar 2 - The Will To Fabricate.lst |
| Puyo Pop Fever (World).cue |
| Puyo Puyo Fever.dat |
| Puyo Puyo Fever.lst |
| Puzzle Takoron.dat |
| Quiz Ah Megamisama.dat |
| Quiz Ah Megamisama.lst |
| Quiz Ah My Goddess.dat |
| Quiz Keitai Q mode.dat |
| Quiz Keitai Q mode.lst |
| Radilgy Noir.dat |
| Radilgy Noir.lst |
| Radirgy.lst |
| Rival Schools 2 - Project Justice.bin |
| Rival Schools 2 - Project Justice.lst |
| Rumble Fish 2.lst |
| Rumble Fish.bin |
| Rumble Fish.lst |
| Salaryman Kintaro.bin |
| Salaryman Kintaro.lst |
| Salaryman Kintaro.zip |
| Samurai Showdown VI - Samurai Spirits.bin |
| Samurai Showdown VI - Samurai Spirits.lst |
| Sega Strike Fighter (Rev A).dat |
| Sega Strike Fighter (Rev A).lst |
| SegaTetris.bin |
| Senko No Ronde NEW ver. (Rev A).dat |
| Senko No Ronde NEW ver. (Rev A).lst |
| Senko No Ronde NEW ver. (Rev A).zip |
| Senko No Ronde Special.dat |
| Senko No Ronde Special.lst |
| Senko No Ronde Special.zip |
| Senko No Ronde.dat |
| Senko No Ronde.lst |
| Senko No Ronde.zip |
| Shikigami No Shiro II ~ The Castle of Shikigami II.dat |
| Shikigami No Shiro II ~ The Castle of Shikigami II.lst |
| Shooting Love 2007.dat |
| Shooting Love 2007.lst |
| Slashout.bin |
| Slashout.dat |
| Slashout.lst |
| Spikers Battle.dat |
| Spikers Battle.lst |
| SpikersBattle.bin |
| Sports Jam.dat |
| Sports Jam.lst |
| SportsJam.bin |
| Super Shanghai 2005 (Rev A).dat |
| Super Shanghai 2005 (Rev A).lst |
| Super Shanghai 2005.dat |
| Super Shanghai 2005.lst |
| Sushi Bar.bin |
| Sushi Bar.lst |
| Tetris Kiwamemichi.dat |
| Tetris Kiwamemichi.lst |
| The King of Fighters XI (All Fighters).bin |
| The King of Fighters XI (All Fighters).lst |
| The Maze of the Kings.dat |
| The Maze of the Kings.lst |
| Tokyo Bus Tour.bin |
| Tokyo Bus Tour.lst |
| Toy Fighter.dat |
| Toy Fighter.lst |
| ToyFighter.bin |
| Trigger Heart Exelica (Rev A).dat |
| Trigger Heart Exelica (Rev A).lst |
| Trizeal.dat |
| Trizeal.lst |
| UnderDefeat.dat |
| UnderDefeat.lst |
| Usagui - Yamashiro Mahjong Hen.dat |
| Usagui - Yamashiro Mahjong Hen.lst |
| Violent Metal Slug 6.rar |
| Virtua Athletics - Virtua Athlete.dat |
| Virtua Athletics - Virtua Athlete.lst |
| Virtua Golf - Dynamic Golf.dat |
| Virtua Golf - Dynamic Golf.lst |
| Virtua NBA.bin |
| Virtua NBA.dat |
| Virtua NBA.lst |
| Virtua Striker 3 (Japan).cue |
| Virtua Tennis - Power Smash.cue |
| Virtua Tennis - Power Smash.dat |
| Virtua Tennis - Power Smash.lst |
| Virtua Tennis 2 - Power Smash 2 (Rev A).dat |
| Virtua Tennis 2 - Power Smash 2 (Rev A).lst |
| VirtuaStriker2-2000.bin |
| VirtuaTennis.bin |
| VirtuaTennis.lst |
| World Series Baseball - Super Major League.dat |
| World Series Baseball - Super Major League.lst |
| airlbios.zip |
| akatsukibk.bin |
| alpilot.bin |
| alpilot.txt |
| azumanga.bin |
| bdrdown.bin |
| cfield.bin |
| chocomk.bin |
| cleoftp.bin |
| confmiss.bin |
| cvs2gd.bin |
| cvsgd.bin |
| dc.zip |
| dygolf.bin |
| dyndekaex.bin |
| gdrom-ftspeed_v6.bin |
| gdrom_KOFXI_controles_JVS_OK_Video_OK_v4.bin |
| gdrom_sprtshot_v11.bin |
| ggxx.bin |
| ggxxac.bin |
| ggxxrl.bin |
| ggxxsla.bin |
| gundmgd.bin |
| gundmxgd.bin |
| ikaruga.bin |
| jingystm.bin |
| karous.bin |
| keyboard.bin |
| kofnw.lst |
| kurucham.bin |
| lupinsho.bin |
| luptype.bin |
| mamonoro.bin |
| melty_blood_act_cadenza.dat |
| melty_blood_act_cadenza_vb2.dat |
| meltyb.bin |
| meltyba.bin |
| meltybld.bin |
| mie.zip |
| moeru.bin |
| mok.bin |
| monkeyba.bin |
| mvsc2gd.bin |
| ngdup23a.zip |
| ngdup23c.zip |
| psyvar2.bin |
| puyofev.bin |
| quizqgd.bin |
| radilgy.dat |
| radirgy.bin |
| radirgynoa.bin |
| rumblef2.bin |
| rumblef2.lst |
| senko.bin |
| senkoo.bin |
| senkosp.bin |
| settings.dc |
| sfz3ugd.bin |
| sfz3ugd.dat |
| sfz3ugd.lst |
| shaktamb.bin |
| shikgam2.bin |
| shootlove.bin |
| spkrbtl.bin |
| sprtjam.bin |
| ss2005.bin |
| ss2005a.bin |
| starseek.bin |
| takoron.bin |
| tetkiwam.bin |
| trgheart.bin |
| trizeal.bin |
| undefeat.bin |
| usagui.bin |
| vathlete.bin |
| vtennis2.bin |
| vtennisg.bin |
| wsbbgd.bin |
| CAPCOM VS SNK PRO.zip |
| Gundam DX.zip |
| Gundam.zip |
| IkaRuka.zip |
| Jingi Storm.zip |
| Marvel vs. Capcom 2 New Age of Heroes.zip |
| Melty Blood.zip |
| Spikers Battle.zip |
| Sports Jam.zip |
| Super Shangai 2005.zip |
| Virtua Athlete.zip |
| cvs2gd.zip |
NAOMI_3D_BOXES.zip |
| NAOMI_DISCS.zip |
Et enfin ce bon vieux DEMUL
MEmu := "Demul"
MEmuV := "v0.7a 221215"
MURL := ["http://demul.emulation64.com/"]
MAuthor := ["djvj","bleasby"]
MVersion := "2.1.10"
MCRC :=
iCRC :=
MID := "636025126320548084"
MSystem := ["Cave 3rd","Gaelco","Gaelco 3D","Sammy Atomiswave","Sega System SP","Sega Dreamcast","Sega Hikaru","Sega Naomi","Sega Naomi 2"]
;----------------------------------------------------------------------------
; Notes:
; Required - control and nvram files setup for each game/control type
; Required - moduleName ini example can be found on GIT in the Demul module folder
; moduleName ini must be placed in same folder as this module if you use the provided example, just be sure to rename it to just Demul.ini first so it matches the module's name
; GDI images must match mame zip names and be extracted and have a .dat extension
; Rom_Extension should include 7z|zip|gdi|cue|cdi|chd|mds|ccd|nrg
; Module will automatically set your rom path for you on first launch
;
; Make sure the awbios, dc, hikaru, naomi, naomi2, saturn.zip bios archives are in any of your rom paths as they are needed to play all the games.
; Set your Video Plugin to gpuDX11 and set your desired resolution there
; In case your control codes do not match mine, set your desired control type in demul, then open the demul.ini and find section PORTB and look for the device key. Use this number instead of the one I provided
; gpuDX10 and gpuDX11 are the only supported plugins. You can define what plugin you want to use for each game in the module settings in RocketLauncherUI
; Read the tooltip for the Fullscreen module setting in RocketLauncherUI on how to control windowed fullscreen, true fullscreen, or windowed mode
; Windowed fullscreen will take effect the 2nd time you run the emu. It has to calculate your resolution on first run.
;
; Controls:
; Start a game of each control type (look in the RocketLauncherUI's module settings for these types, they all have their own tabs) and configure your controls to play the game. After configuring your controls manually in Demul, open padDemul.ini and Copy/paste the JAMMA0_0 and JAMMA0_1 (for naomi) or the ATOMISWAVE0_0 and ATOMISWAVE0_1 (for atomiswave) into RocketLauncherUI's module settings for each controls tab (standard, sfstyle, etc).
; Each pair of control tabs designates another real arcade control schema for a grouping of games. Demul does not handle this like MAME, so the module does instead.
;
; Gaelco:
; There is no known way to launch the desired Gaelco rom from CLI. You will always be presented with the rom selection window on launch.
; GPUDX11 does not yet support Gaelco in true fullscreen mode. Either use DX10 which does support fullscreen for Gaelco
; or if using DX11, choose fullscreen in the video options and then match the windows resolution to your desktop. This will give a pseudo fullscreen mode.
;
; Sega Hikaru:
; Windowed Fullscreen doesn't seem to work as demul does not allow stretching of its window
;
; Troubleshooting:
; For some reason demul's ini files can get corrupted and ahk can't read/write to them correctly.
; If your ini keys are not being read or not writing to their existing keys in the demul inis, create a new file and copy/paste everything from the old ini into the new one and save.
; If you use Fade_Out, the module will disable it. Demul crashes when Fade tries to draw on top of it in windowed and fullscreen modes.
;
;Bezel:
;If the game has the wrong aspect ratio, go to demul module settings, rom settings, and set the aspect ratio option to stretch. The game will follow the aspect ratio defined by the bezel.
;----------------------------------------------------------------------------
StartModule()
BezelGUI()
ExtraFixedResBezelGUI()
FadeInStart()
primaryExe := new Emulator(emuPath . "\" . executable) ; instantiate emulator executable object
emuPrimaryWindow := new Window(new WindowTitle("","window")) ; instantiate primary emulator window object
emuLCD0Window := new Window(new WindowTitle("LCD 0","LCD 0"))
-run=%2% -rom=%1%
sleep 4000
MouseMove, 1920,1080
; This object controls how the module reacts to different systems. Demul can play a few systems, but needs to know what system you want to run, so this module has to adapt.
mType := Object("Cave 3rd","cave3rd","Gaelco","gaelco","Gaelco 3D","gaelco","Sammy Atomiswave","awave","Sega System SP","naomi","Sega Dreamcast","dc","Sega Hikaru","hikaru","Sega Naomi","naomi","Sega Naomi 2","naomi2","Demul Gun Games","awave")
ident := mType[systemName] ; search object for the systemName identifier Demul uses
If !ident
ScriptError("Your systemName is: " . systemName . "`nIt is not one of the known supported systems for this Demul module: " . moduleName)
DemuleIni := new IniFile(emuPath . "\Demul.ini")
demuleIniEncoding := RLObject.getFileEncoding(DemuleIni.FileFullPath)
If demuleIniEncoding {
If (demuleIniEncoding = "ERROR")
RLLog.Warning("Module - Demul.ini set to Read-only and BOM cannot be changed. Check the DLL log for further details: " . DemuleIni.FileFullPath)
Else {
RLLog.Info("Module - Recreating " . DemuleIni.FileFullPath . " as ANSI because UTF-8 format cannot be read")
If RLObject.removeBOM(DemuleIni.FileFullPath)
RLLog.Info("Module - Successfully converted " . DemuleIni.FileFullPath . " to ANSI")
Else
RLLog.Error("Module - Failed to convert " . DemuleIni.FileFullPath . " to ANSI")
}
}
maxHideTaskbar := moduleIni.Read("Settings", "MaxHideTaskbar", "true",,1)
controllerCode := moduleIni.Read("Settings", "ControllerCode", "16777216",,1)
mouseCode := moduleIni.Read("Settings", "MouseCode", "131072",,1)
keyboardCode := moduleIni.Read("Settings", "KeyboardCode", "1073741824",,1)
lightgunCode := moduleIni.Read("Settings", "LightgunCode", "-2147483648",,1)
hideDemulGUI := moduleIni.Read("Settings", "HideDemulGUI", "true",,1)
PerGameMemoryCards := moduleIni.Read("Settings", "PerGameMemoryCards", "true",,1)
memCardPath := moduleIni.Read("Settings", "MemCardPath", emuPath . "\memsaves",,1)
memCardPath := AbsoluteFromRelative(emuPath, memCardPath)
fullscreen := moduleIni.Read(romName . "|Settings", "Fullscreen", "windowedfullscreen",,1)
plugin := moduleIni.Read(romName . "|Settings", "Plugin", "gpuDX11",,1)
shaderUsePass1 := moduleIni.Read(romName . "|Settings", "ShaderUsePass1", "false",,1)
shaderUsePass2 := moduleIni.Read(romName . "|Settings", "ShaderUsePass2", "false",,1)
shaderNamePass1 := moduleIni.Read(romName . "|Settings", "ShaderNamePass1",,,1)
shaderNamePass2 := moduleIni.Read(romName . "|Settings", "ShaderNamePass2",,,1)
listSorting := moduleIni.Read(romName . "|Settings", "ListSorting", "true",,1)
OpaqueMod := moduleIni.Read(romName . "|Settings", "OModifier", "true",,1)
TransMod := moduleIni.Read(romName . "|Settings", "TModifier", "true",,1)
internalResolutionScale := moduleIni.Read(romName . "|Settings", "InternalResolutionScale", "1",,1)
videomode := moduleIni.Read(romName . "|Settings", "VideoMode", "0",,1)
aspectRatio := moduleIni.Read(romName . "|Settings", "AspectRatio", "1",,1)
MaxLayers := moduleIni.Read(romName . "|Settings", "MaxLayers", "32",,1)
demulShooterEnabled := moduleIni.Read(romName . "|Settings", "DemulShooterEnabled", "false",,1)
showVMU := moduleIni.Read("Settings", "showVMU", "true",,1)
VMU1Pos := moduleIni.Read("Settings", "VMU1Pos", "topLeft",,1) ; topRight, topCenter, topLeft, leftCenter, bottomLeft, bottomCenter, bottomRight, rightCenter
VMU2Pos := moduleIni.Read("Settings", "VMU2Pos", "topRight",,1) ; topRight, topCenter, topLeft, leftCenter, bottomLeft, bottomCenter, bottomRight, rightCenter
VMU3Pos := moduleIni.Read("Settings", "VMU3Pos", "bottomLeft",,1) ; topRight, topCenter, topLeft, leftCenter, bottomLeft, bottomCenter, bottomRight, rightCenter
VMU4Pos := moduleIni.Read("Settings", "VMU4Pos", "bottomRight",,1) ; topRight, topCenter, topLeft, leftCenter, bottomLeft, bottomCenter, bottomRight, rightCenter
VMUHideKey := moduleIni.Read("Settings", "VMUHideKey","F10",,1)
Bios := moduleIni.Read(romName, "Bios",,,1)
LoadDecrypted := moduleIni.Read(romName, "LoadDecrypted",,,1) ; not currently supported
; Read all the control values
controls := moduleIni.Read(romname, "Controls", "standard",,1) ; have to read this first so the below ini reads work
push1_0 := moduleIni.Read(controls . "_JAMMA0_0", "push1",,,1)
push2_0 := moduleIni.Read(controls . "_JAMMA0_0", "push2",,,1)
push3_0 := moduleIni.Read(controls . "_JAMMA0_0", "push3",,,1)
push4_0 := moduleIni.Read(controls . "_JAMMA0_0", "push4",,,1)
push5_0 := moduleIni.Read(controls . "_JAMMA0_0", "push5",,,1)
push6_0 := moduleIni.Read(controls . "_JAMMA0_0", "push6",,,1)
push7_0 := moduleIni.Read(controls . "_JAMMA0_0", "push7",,,1)
push8_0 := moduleIni.Read(controls . "_JAMMA0_0", "push8",,,1)
service_0 := moduleIni.Read(controls . "_JAMMA0_0", "SERVICE",,,1)
start_0 := moduleIni.Read(controls . "_JAMMA0_0", "START",,,1)
coin_0 := moduleIni.Read(controls . "_JAMMA0_0", "COIN",,,1)
digitalup_0 := moduleIni.Read(controls . "_JAMMA0_0", "DIGITALUP",,,1)
digitaldown_0 := moduleIni.Read(controls . "_JAMMA0_0", "DIGITALDOWN",,,1)
digitalleft_0 := moduleIni.Read(controls . "_JAMMA0_0", "DIGITALLEFT",,,1)
digitalright_0 := moduleIni.Read(controls . "_JAMMA0_0", "DIGITALRIGHT",,,1)
analogup_0 := moduleIni.Read(controls . "_JAMMA0_0", "ANALOGUP",,,1)
analogdown_0 := moduleIni.Read(controls . "_JAMMA0_0", "ANALOGDOWN",,,1)
analogleft_0 := moduleIni.Read(controls . "_JAMMA0_0", "ANALOGLEFT",,,1)
analogright_0 := moduleIni.Read(controls . "_JAMMA0_0", "ANALOGRIGHT",,,1)
analogup2_0 := moduleIni.Read(controls . "_JAMMA0_0", "ANALOGUP2",,,1)
analogdown2_0 := moduleIni.Read(controls . "_JAMMA0_0", "ANALOGDOWN2",,,1)
analogleft2_0 := moduleIni.Read(controls . "_JAMMA0_0", "ANALOGLEFT2",,,1)
analogright2_0 := moduleIni.Read(controls . "_JAMMA0_0", "ANALOGRIGHT2",,,1)
push1_1 := moduleIni.Read(controls . "_JAMMA0_1", "push1",,,1)
push2_1 := moduleIni.Read(controls . "_JAMMA0_1", "push2",,,1)
push3_1 := moduleIni.Read(controls . "_JAMMA0_1", "push3",,,1)
push4_1 := moduleIni.Read(controls . "_JAMMA0_1", "push4",,,1)
push5_1 := moduleIni.Read(controls . "_JAMMA0_1", "push5",,,1)
push6_1 := moduleIni.Read(controls . "_JAMMA0_1", "push6",,,1)
push7_1 := moduleIni.Read(controls . "_JAMMA0_1", "push7",,,1)
push8_1 := moduleIni.Read(controls . "_JAMMA0_1", "push8",,,1)
service_1 := moduleIni.Read(controls . "_JAMMA0_1", "SERVICE",,,1)
start_1 := moduleIni.Read(controls . "_JAMMA0_1", "START",,,1)
coin_1 := moduleIni.Read(controls . "_JAMMA0_1", "COIN",,,1)
digitalup_1 := moduleIni.Read(controls . "_JAMMA0_1", "DIGITALUP",,,1)
digitaldown_1 := moduleIni.Read(controls . "_JAMMA0_1", "DIGITALDOWN",,,1)
digitalleft_1 := moduleIni.Read(controls . "_JAMMA0_1", "DIGITALLEFT",,,1)
digitalright_1 := moduleIni.Read(controls . "_JAMMA0_1", "DIGITALRIGHT",,,1)
analogup_1 := moduleIni.Read(controls . "_JAMMA0_1", "ANALOGUP",,,1)
analogdown_1 := moduleIni.Read(controls . "_JAMMA0_1", "ANALOGDOWN",,,1)
analogleft_1 := moduleIni.Read(controls . "_JAMMA0_1", "ANALOGLEFT",,,1)
analogright_1 := moduleIni.Read(controls . "_JAMMA0_1", "ANALOGRIGHT",,,1)
analogup2_1 := moduleIni.Read(controls . "_JAMMA0_1", "ANALOGUP2",,,1)
analogdown2_1 := moduleIni.Read(controls . "_JAMMA0_1", "ANALOGDOWN2",,,1)
analogleft2_1 := moduleIni.Read(controls . "_JAMMA0_1", "ANALOGLEFT2",,,1)
analogright2_1 := moduleIni.Read(controls . "_JAMMA0_1", "ANALOGRIGHT2",,,1)
;Bezel settings
bezelTopOffset := moduleIni.Read(romName . "|Settings", "Bezel_Top_Offset","0",,1)
bezelBottomOffset := moduleIni.Read(romName . "|Settings", "Bezel_Bottom_Offset","0",,1)
bezelRightOffset := moduleIni.Read(romName . "|Settings", "Bezel_Right_Offset", "0",,1)
bezelLeftOffset := moduleIni.Read(romName . "|Settings", "Bezel_Left_Offset", "0",,1)
If (plugin = "gpuDX11ng") ; this is for legacy support. Original demul 0.7 used gpuDX11ng
plugin := "gpuDX11old"
If (InStr(systemName, "Hikaru") && plugin != "gpuDX11")
plugin := "gpuDX11" ; Hikaru does not work with gpuDX10 gpu plugin, setting it dumps an error
; Verify user set desired gpu plugin name correctly
If (plugin != "gpuDX11old" && plugin != "gpuDX11" && plugin != "gpuDX10" && plugin != "")
ScriptError(plugin . " is not a supported gpu plugin.`nLeave the plugin blank to use the default ""gpuDX11"".`nValid options are gpuDX11old, gpuDX11 or gpuDX10.")
; Read and write videomode value for cable type
rvideomode := DemuleIni.Read("main", "videomode")
RLLog.Info("Module - Demul is reading the config with videomode = " . rvideomode)
DemuleIni.Write(videomode, "main", "videomode")
RLLog.Info("Module - Demul is updating the config with videomode = " . videomode)
; Handle Demul's rom paths so the user doesn't have to
romPathCount := DemuleIni.Read("files", "romsPathsCount")
RLLog.Info("Module - Demul is configured with " . romPathCount . " rom path(s). Scanning these for a romPath to this rom.")
Loop % romPathCount
{ demulRomPath := A_Index - 1 ; rompaths in demul start with 0
path%A_Index% := DemuleIni.Read("files", "roms" . demulRomPath)
RLLog.Info("Module - Path" . demulRomPath . ": " . path%A_Index%)
; msgbox % path%A_Index%
If (path%A_Index% = romPath . "\") ; demul tacks on the backslash at the end
{ romPathFound := 1 ; flag that demul has this romPath in its config and no need to add it
RLLog.Info("Module - Stopping search because Demul is already configured with the correct romPath to this rom: " . path%A_Index%)
Break ; stop looking for a correct romPath
}
}
If !romPathFound ; if demul doesn't have the romPath in its ini, add it
{ RLLog.Warning("Module - Demul does not have this romPath in Demul.ini, adding it for you.")
nextPath := romPathCount + 1 ; add 1 to the romPathCount and write that to the ini
DemuleIni.Write(nextPath, "files", "romsPathsCount")
DemuleIni.Write(romPath . "\", "files", "roms" . romPathCount) ; write the rompath to the ini
}
; Force Fade_Out to disabled as it causes demul to not close properly
; fadeOut = false
; RLLog.Warning("Module - Turning off Fade_Out because it doesn't let Demul exit properly.")
GpuIni := new IniFile(emuPath . "\" . plugin . ".ini")
GpuIni.CheckFile("Please run Demul manually first and select the " . plugin . " gpu plugin so it creates this file for you: " . GpuIni.FileFullPath)
demulFileEncoding := RLObject.getFileEncoding(GpuIni.FileFullPath)
If demulFileEncoding {
If (demulFileEncoding = "ERROR")
RLLog.Warning("Module - GPU ini set to Read-only and BOM cannot be changed. Check the DLL log for further details: " . GpuIni.FileFullPath)
Else {
RLLog.Info("Module - Recreating " . GpuIni.FileFullPath . " as ANSI because UTF-8 format cannot be read")
If RLObject.removeBOM(GpuIni.FileFullPath)
RLLog.Info("Module - Successfully converted " . GpuIni.FileFullPath . " to ANSI")
Else
RLLog.Error("Module - Failed to convert " . GpuIni.FileFullPath . " to ANSI")
}
}
BezelStart()
; Setting emu resolution if bezel is enabled
If (BezelPath)
{ If (plugin = "gpuDX11" || plugin = "gpuDX11old") {
GpuIni.Write(bezelScreenWidth, "resolution", "Width")
GpuIni.Write(bezelScreenHeight, "resolution", "Height")
} Else {
GpuIni.Write(bezelScreenWidth, "resolution", "wWidth")
GpuIni.Write(bezelScreenHeight, "resolution", "wHeight")
}
}
; This updates the DX11gpu ini file to turn List Sorting on or off. Depending on the games, turning this on for some games may remedy missing graphics, having it off on other games may fix corrupted graphics. Untill they improve the DX11gpu, this is the best it's gonna get.
If (ListSorting = "true")
GpuIni.Write(0, "main", "AutoSort")
Else
GpuIni.Write(1, "main", "AutoSort")
; This will set the Opaque or Trans modifier for each game
If (OpaqueMod = "true")
GpuIni.Write(0, "main", "OModifier")
Else
GpuIni.Write(1, "main", "OModifier")
If (TransMod = "true")
GpuIni.Write(0, "main", "TModifier")
Else
GpuIni.Write(1, "main", "TModifier")
; This updates the DX10gpu or DX11gpu ini file to the ratio and scale you want to use for this game
GpuIni.Write(aspectRatio, "main", "aspect")
GpuIni.Write(InternalResolutionScale, "main", "scaling")
If (plugin = "gpuDX11" || plugin = "gpuDX11old") {
GpuIni.Write(MaxLayers, "main", "MaxLayers")
}
; This updates the demul.ini with your gpu plugin choice for the selected rom
DemuleIni.Write(plugin . ".dll", "plugins", "gpu")
; This updates the demul.ini with your VMU display choice
VMUscreendisable := If (showVMU = "true") ? "false" : "true"
DemuleIni.Write(VMUscreendisable, "main", "VMUscreendisable")
; Shader Effects
Loop, 2 {
shaderUsePass%A_Index% := If (ShaderUsePass%A_Index% != "" and ShaderUsePass%A_Index% != "ERROR" ? (ShaderUsePass%A_Index%) : (GlobalShaderUsePass%A_Index%)) ; determine what shaderUsePass to use
currentusePass%A_Index% := GpuIni.Read("shaders", "usePass" . A_Index)
If (shaderUsePass%A_Index% = "true")
{
shaderNamePass%A_Index% := If (ShaderNamePass%A_Index% != "" and ShaderNamePass%A_Index% != "ERROR" ? (ShaderNamePass%A_Index%) : (GlobalShaderNamePass%A_Index%)) ; determine what shaderNamePass to use
If !StringUtils.Contains(shaderNamePass%A_Index%,"FXAA|HDR-TV|SCANLINES|CARTOON|RGB DOT\(MICRO\)|RGB DOT\(TINY\)|BLUR")
ScriptError(shaderNamePass%A_Index% . " is not a valid choice for a shader. Your options are FXAA, HDR-TV, SCANLINES, CARTOON, RGB DOT(MICRO), RGB DOT(TINY), or BLUR.")
If (currentusePass%A_Index% = 0)
GpuIni.Write(1, "shaders", "usePass" . A_Index) ; turn shader on in gpuDX11 ini
GpuIni.Write(shaderNamePass%A_Index%, "shaders", "shaderPass" . A_Index) ; update gpuDX11 ini with the shader name to use
}Else If (shaderUsePass%A_Index% != "true" and currentusePass%A_Index% = 1)
GpuIni.Write(0, "shaders", "usePass" . A_Index) ; turn shader off in gpuDX11 ini
}
If (ident = "dc")
{
7z(romPath, romName, romExtension, sevenZExtractPath)
defaultIni := "[main]`r`nimageFileName = `r`nopenDialog = false"
If (romExtension = ".cdi" || romExtension = ".mds" || romExtension = ".ccd" || romExtension = ".nrg" || romExtension = ".gdi" || romExtension = ".cue") {
GdrImageIni := new IniFile(emuPath . "\gdrImage.ini")
If !GdrImageIni.Exist() {
GdrImageIni.Append(defaultIni) ; Create a default gdrImage.ini in your emu folder if one does not exist already.
; GdrImageIni.Delete(gdrImageFile) ; don't know why this was in the old module, no point in deleting the file I just made
}
TimerUtils.Sleep(500)
DemuleIni.Write("gdrImage.dll", "plugins", "gdr")
GdrImageIni.Write("false", "Main", "openDialog")
GdrImageIni.Write(romPath . "\" . romName . romExtension, "Main", "imagefilename")
} Else If (romExtension = ".chd")
{
GdrCHDIni := new IniFile(emuPath . "\gdrCHD.ini")
If !GdrCHDIni.Exist() {
GdrCHDIni.Append(defaultIni) ; Create a default gdrCHD.ini in your emu folder if one does not exist already.
; GdrCHDIni.Delete(gdrCHDFile) ; don't know why this was in the old module, no point in deleting the file I just made
}
TimerUtils.Sleep(500)
GdrCHDIni.Write("false", "Main", "openDialog")
DemuleIni.Write("gdrCHD.dll", "plugins", "gdr")
GdrCHDIni.Write(romPath . "\" . romName . romExtension, "Main", "imagefilename")
} Else
ScriptError(romExtension . " is not a supported file type for this " . moduleName . " module.")
DemuleIni.Write(1, "main", "region") ; Set BIOS to Auto Region
} Else { ; all other systems, Naomi and Atomiswave
; This updates the demul.ini with your Bios choice for the selected rom
If (Bios != "" && Bios != "ERROR") {
Bios := StringUtils.RegExReplace(Bios,"\s.*") ; Cleans off the added text from the key's value so only the number is left
DemuleIni.Write("false", "main", "naomiBiosAuto") ; turning auto bios off so we can use a specific one instead
DemuleIni.Write(Bios, "main", "naomiBios") ; setting specific bios user has set from the moduleName ini
} Else
DemuleIni.Write("true", "main", "naomiBiosAuto") ; turning auto bios on if user did not specify a specific one
}
; This section writes your custom keys to the padDemul.ini. Naomi games had many control panel layouts. The only way we can accomodate these differing controls, is to keep track of them all and write them to the ini at the launch of each game.
; First we check if the last controls used are the same as the game we want to play, so we don't waste time updating the ini if it is not necessary. For example playing 2 sfstyle type games in a row, we wouldn't need to write to the ini.
; This section tells demul what arcade control type should be connected to the game. Options are standard (aka controller), mouse, lightgun, or keyboard
If (controls = "lightgun" || controls = "mouse") {
RLLog.Info("Module - This game uses a Mouse or Lightgun control type.")
DemuleIni.Write(MouseCode, "PORTB", "device")
} Else If (controls = "keyboard") {
RLLog.Info("Module - This game uses a Keyboard control type.")
DemuleIni.Write(KeyboardCode, "PORTB", "device")
} Else { ; accounts for all other control types
RLLog.Info("Module - This game uses a standard (controller) control type.")
DemuleIni.Write(ControllerCode, "PORTB", "device")
}
WriteControls(0,push1_0,push2_0,push3_0,push4_0,push5_0,push6_0,push7_0,push8_0,SERVICE_0,START_0,COIN_0,DIGITALUP_0,DIGITALDOWN_0,DIGITALLEFT_0,DIGITALRIGHT_0,ANALOGUP_0,ANALOGDOWN_0,ANALOGLEFT_0,ANALOGRIGHT_0,ANALOGUP2_0,ANALOGDOWN2_0,ANALOGLEFT2_0,ANALOGRIGHT2_0)
WriteControls(1,push1_1,push2_1,push3_1,push4_1,push5_1,push6_1,push7_1,push8_1,SERVICE_1,START_1,COIN_1,DIGITALUP_1,DIGITALDOWN_1,DIGITALLEFT_1,DIGITALRIGHT_1,ANALOGUP_1,ANALOGDOWN_1,ANALOGLEFT_1,ANALOGRIGHT_1,ANALOGUP2_1,ANALOGDOWN2_1,ANALOGLEFT2_1,ANALOGRIGHT2_1)
RLLog.Info("Module - Wrote " . controls . " controls to padDemul.ini.")
; This will check the save game files and create per game ones if enabled.
If (PerGameMemoryCards = "true")
{
MemCardFolder := new Folder(memCardPath)
DefaultMemCard := new File(memCardPath . "\default_vms.bin") ; defining default blank VMU file
If !DefaultMemCard.Exist("Folder")
DefaultMemCard.CreateDir() ; create memcard folder if it doesn't exist
If defaultMemCard.Exist()
{
RLLog.Info("VMU - Default VMU file location - " . defaultMemCard.FileFullPath)
Loop, 4
{
outerLoop := A_Index
If (A_Index = 1)
contrPort := "A"
Else If (A_Index = 2)
contrPort := "B"
Else If (A_Index = 3)
contrPort := "C"
Else If (A_Index = 4)
contrPort := "D"
controllerPort%contrPort% := DemuleIni.Read("PORT" . contrPort, "device")
RLLog.Info("VMU - Config for controller PORT" . contrPort . " = " . controllerPort%contrPort%)
If (controllerPort%contrPort% = -1)
Continue
Loop, 2
{
SubCount := A_Index - 1
VMUPort%SubCount% := DemuleIni.Read("PORT" . contrPort, "port" . SubCount)
RLLog.Info("VMU - Config Plugin VMUPort" . contrPort . SubCount . " for controller PORT" . contrPort . " = " . VMUPort%SubCount%)
If (VMUPort%SubCount% <> -1)
{
VMUPortFile%SubCount% := DemuleIni.Read("VMS", "VMS" . contrPort . SubCount)
RLLog.Info("VMU - VMUPortFile" . contrPort . SubCount . " controllerVMU" . contrPort . SubCount . " " . "VMS" . contrPort . SubCount . " = " . VMUPortFile%SubCount%)
memCardName := If romTable[1,5] ? romTable[1,4] : romName ; defining rom name for multi disc rom
PerGameVMUBin%A_Index% := new File(memCardPath . "\" . memCardName . "_vms_" . contrPort . SubCount . ".bin")
RLLog.Info("VMU - PerGameVMUBin = " . PerGameVMUBin%A_Index%.FileFullPath)
If PerGameVMUBin%A_Index%.Exist()
{
RLLog.Info("VMU - PerGameVMU file exists at " . PerGameVMUBin%A_Index%.FileFullPath)
} Else {
RLLog.Info("VMU - PerGameVMU file does not exist. So we will create one at " . PerGameVMUBin%A_Index%.FileFullPath)
DefaultMemCard.Copy(PerGameVMUBin%A_Index%.FileFullPath)
}
DemuleIni.Write(PerGameVMUBin%A_Index%.FileFullPath, "VMS", "VMS" . contrPort . SubCount)
RLLog.Info("VMU - PerGameVMU file written to " . DemuleIni.FileFullPath . " at section VMS to variable VMS" . contrPort . SubCount . " as " . PerGameVMUBin%A_Index%.FileFullPath)
} Else {
RLLog.Info("VMU - No VMU Plugged In.")
}
}
}
} Else {
RLLog.Info("VMU - No default VMU file at " . DefaultMemCard.FileFullPath)
}
}
; Setting demul to use true fullscreen if defined in settings.ini, otherwise sets demul to run windowed. This is for gpuDX11 plugin only
If (plugin = "gpuDX11" || plugin = "gpuDX11old")
If (fullscreen = "truefullscreen")
GpuIni.Write(1, "main", "UseFullscreen")
Else
GpuIni.Write(0, "main", "UseFullscreen")
If (fullscreen = "windowedfullscreen")
{
If (plugin = "gpuDX11" || plugin = "gpuDX11old") {
GpuIni.Write(appWidthNew, "resolution", "Width")
GpuIni.Write(appHeightNew, "resolution", "Height")
} Else {
GpuIni.Write(appWidthNew, "resolution", "wWidth")
GpuIni.Write(appHeightNew, "resolution", "wHeight")
}
If (maxHideTaskbar = "true") {
RLLog.Info("Module - Hiding Taskbar and Start Button.")
MiscUtils.TaskBar("off")
}
; Create black background to give the emu the fullscreen look
RLLog.Info("Module - Creating black background to simulate a fullscreen look.")
Gui demulGUI: -Caption +ToolWindow +0x08000000
Gui demulGUI: Color, Black
Gui demulGUI: Show, x0 y0 h%A_ScreenHeight% w%A_ScreenWidth%
}
If (ident != "dc" && demulShooterEnabled = "true") { ; If demulshooter is enabled for this game, launch it with relevant options
DemulShooterExe := New DemulShooter()
DemulShooterExe.Launch("demul07a",romName,"-noresize")
}
TimerUtils.Sleep(250)
; Construct the CLI for demul and send romName if naomi or atomiswave. Dreamcast needs a full path and romName.
If (LoadDecrypted = "true") ; decrypted naomi rom
romCLI := "-customrom=" . """" . romPath . "\" . romName . ".bin"""
Else If (ident = "dc") ; dreamcast game
romCLI := " -image=" . """" . romPath . "\" . romName . romExtension . """"
Else ; standard naomi rom
romCLI := "-rom=" . romName
hideEmuObj := Object(emuLCD0Window,0,emuPrimaryWindow,1)
HideAppStart(hideEmuObj,hideEmu)
primaryExe.Run(" -run=" . ident . " " . romCLI, (If hideDemulGUI = "true" ? "min" : "")) ; launching minimized, then restoring later hides the launch completely
TimerUtils.Sleep(1000) ; Need a second for demul to launch, increase if yours takes longer and the emu is NOT appearing and staying minimized. This is required otherwise bezel backgrounds do not appear
DetectHiddenWindows, On
If (hideDemulGUI = "true")
{
emuPrimaryWindow.Restore()
emuPrimaryWindow.Activate()
}
RLLog.Info("Module - Waiting for Demul to finish loading game.")
winTextSplit := []
Loop { ; looping until demul is done loading rom and gpu starts showing frames
TimerUtils.Sleep(200,0)
winTitle := emuPrimaryWindow.GetTitle(0) ; do not update the wintitle otherwise emu won't close on exit
winTextSplit := StringUtils.Split(winTitle, A_Space)
If (winTextSplit[5] = "gpu:" And winTextSplit[6] != "0" And winTextSplit[6] != "1")
Break
}
RLLog.Info("Module - Demul finished loading game.")
If (StringUtils.Contains(systemName, "Gaelco|Hikaru") && fullscreen = "truefullscreen")
KeyUtils.Send("!{Enter}") ; Automatic fullscreen seems to be broken in the Gaelco driver, must alt+Enter to get fullscreen
; This is where we calculate and maximize demul's window using our pseudo fullscreen code
If (fullscreen = "windowedfullscreen")
{
emuPrimaryWindow.Maximize() ; this will take effect after you run demul once because we cannot stretch demul's screen while it is running.
}
BezelDraw()
If (showVMU = "true"){
ExtraFixedResBezel := new Window(new WindowTitle("ahk_ID " . extraFixedRes_Bezel_hwnd))
SetTimer, CheckforVMU, 5000
}
HideAppEnd(hideEmuObj,hideEmu)
FadeInExit()
primaryExe.Process("WaitClose")
If (fullscreen = "windowedfullscreen")
{ Gui demulGUI: Destroy
RLLog.Info("Module - Destroyed black gui background.")
}
If (ident = "dc")
7zCleanUp()
BezelExit()
ExtraFixedResBezelExit()
FadeOutExit()
If (fullscreen = "windowedfullscreen" && maxHideTaskbar = "true") {
RLLog.Info("Module - Showing Taskbar and Start Button.")
MiscUtils.TaskBar("on")
}
ExitModule()
; Write new controls to padDemul.ini
WriteControls(player,push1,push2,push3,push4,push5,push6,push7,push8,service,start,coin,digitalup,digitaldown,digitalleft,digitalright,analogup,analogdown,analogleft,analogright,analogup2,analogdown2,analogleft2,analogright2) {
Global PadIni
PadIni.Write(push1, "JAMMA0_" . player, "PUSH1")
PadIni.Write(push2, "JAMMA0_" . player, "PUSH2")
PadIni.Write(push3, "JAMMA0_" . player, "PUSH3")
PadIni.Write(push4, "JAMMA0_" . player, "PUSH4")
PadIni.Write(push5, "JAMMA0_" . player, "PUSH5")
PadIni.Write(push6, "JAMMA0_" . player, "PUSH6")
PadIni.Write(push7, "JAMMA0_" . player, "PUSH7")
PadIni.Write(push8, "JAMMA0_" . player, "PUSH8")
PadIni.Write(service, "JAMMA0_" . player, "SERVICE")
PadIni.Write(start, "JAMMA0_" . player, "START")
PadIni.Write(coin, "JAMMA0_" . player, "COIN")
PadIni.Write(digitalup, "JAMMA0_" . player, "DIGITALUP")
PadIni.Write(digitaldown, "JAMMA0_" . player, "DIGITALDOWN")
PadIni.Write(digitalleft, "JAMMA0_" . player, "DIGITALLEFT")
PadIni.Write(digitalright, "JAMMA0_" . player, "DIGITALRIGHT")
PadIni.Write(analogup, "JAMMA0_" . player, "ANALOGUP")
PadIni.Write(analogdown, "JAMMA0_" . player, "ANALOGDOWN")
PadIni.Write(analogleft, "JAMMA0_" . player, "ANALOGLEFT")
PadIni.Write(analogright, "JAMMA0_" . player, "ANALOGRIGHT")
PadIni.Write(analogup2, "JAMMA0_" . player, "ANALOGUP2")
PadIni.Write(analogdown2, "JAMMA0_" . player, "ANALOGDOWN2")
PadIni.Write(analogleft2, "JAMMA0_" . player, "ANALOGLEFT2")
PadIni.Write(analogright2, "JAMMA0_" . player, "ANALOGRIGHT2")
}
HaltEmu:
If (fullscreen = "truefullscreen")
KeyUtils.Send("!{Enter}")
If VMUHideKey
XHotKeywrapper(VMUHideKey,"VMUHide","OFF")
Return
RestoreEmu:
If (fullscreen = "truefullscreen")
KeyUtils.Send("!{Enter}")
If (showVMU = "true") {
Loop, 4
{ VMUWindow%A_Index%.Set("Transparent", 0)
VMUWindow%A_Index%.Activate()
VMUWindow%A_Index%.Set("AlwaysOnTop", "On")
ExtraFixedResBezel.Set("AlwaysOnTop", "On")
If !(VMUHidden)
VMUWindow%A_Index%.Set("Transparent", "off")
}
emuPrimaryWindow.Activate()
}
If VMUHideKey
XHotKeywrapper(VMUHideKey,"VMUHide","ON")
Return
HideGUIWindow:
emuPrimaryWindow.Set("Transparent", "On")
emuPrimaryWindow.Activate() ; once activated, demul starts loading the rom
Return
CheckforVMU:
Loop, 4
{ Transform, letter, Chr, % A_Index + asc("A") - 1 ; transform number to letter
If ((!(VMUWindow%A_Index%)) and (VMUScreenID%A_Index%:=WinExist("PORT " . letter . " VMU 0 ahk_class PORT " . letter . " VMU 0")))
{ VMUWindow%A_Index% := new Window(new WindowTitle("ahk_ID " . VMUScreenID%A_Index%))
VMUWindow%A_Index%.Set("Transparent", 0)
ExtraFixedResBezelDraw(VMUScreenID%A_Index%, "VMU",VMU%A_Index%Pos, 144, 96, 8, 8, 28, 8)
VMUWindow%A_Index%.Activate()
VMUWindow%A_Index%.Set("AlwaysOnTop", "On")
ExtraFixedResBezel.Set("AlwaysOnTop", "On")
VMU%A_Index%Draw := true
If !(VMUHidden)
VMUWindow%A_Index%.Set("Transparent", "off")
If !(VMULoaded){
VMUHideKey := xHotKeyVarEdit(VMUHideKey,"VMUHideKey","~","Add")
xHotKeywrapper(VMUHideKey,"VMUHide")
VMULoaded := true
}
emuPrimaryWindow.Activate()
}
}
If ((VMU1Draw) and (VMU2Draw) and (VMU3Draw) and (VMU4Draw))
SetTimer, CheckforVMU, off
Return
VMUHide:
If VMUHidden {
Loop, 4
VMUWindow%a_index%.Set("Transparent", "off")
UpdateLayeredWindow(extraFixedRes_Bezel_hwnd, extraFixedRes_Bezel_hdc,0,0, A_ScreenWidth, A_ScreenHeight,255)
VMUHidden := false
} Else {
Loop, 4
VMUWindow%a_index%.Set("Transparent", 0)
UpdateLayeredWindow(extraFixedRes_Bezel_hwnd, extraFixedRes_Bezel_hdc,0,0, A_ScreenWidth, A_ScreenHeight,0)
VMUHidden := true
}
Return
CloseProcess:
FadeOutStart()
If (demulShooterEnabled = "true") {
DemulShooterExe.Close()
}
emuPrimaryWindow.PostMessage("0x111", "40085") ; Stop emulation first for a clean exit
TimerUtils.Sleep(5) ; just like to give a little time before closing
emuPrimaryWindow.PostMessage("0x111", "40080") ; Exit
~Escape::
Process, Close, demul.exe
ExitAPP
return
qui a besoin des
ROMs en Zip
| Atoms_v055.zip |
| DEMUL.png |
| demul0582.zip |
| demul07_111117.zip |
| demul07_180428.zip |
| Atomiswave.png |
| anmlbskt.zip |
| awbios.zip |
| basschal.zip |
| blokpong.zip |
| claychal.zip |
| demofist.zip |
| dirtypig.zip |
| dolphin.zip |
| fotns.zip |
| ftspeed.zip |
| ggisuka.zip |
| ggx15.zip |
| kofnw.zip |
| kofxi.zip |
| kov7sprt.zip |
| maxspeed.zip |
| mslug6.zip |
| ngbc.zip |
| rumblef.zip |
| rumblef2.zip |
| salmankt.zip |
| samsptk.zip |
| vfurlong.zip |
| waidrive.zip |
| xtrmhunt.zip |
| 18wheelr.zip |
| 18wheels.zip |
| 18whlrur.zip |
| alienfnt.zip |
| alienfnta.zip |
| alpilota.zip |
| alpiltdx.zip |
| asndynmt.zip |
| aurora.zip |
| ausfache.zip |
| azumanga.zip |
| bdrdown.zip |
| beachspi.zip |
| brickppl.zip |
| capsnk.zip |
| capsnka.zip |
| capsnkb.zip |
| cfield.zip |
| chocomk.zip |
| claychal.zip |
| cleoftp.zip |
| clubkrtd.zip |
| clubkrte.zip |
| confmiss.zip |
| crackndj.zip |
| crakndj2.zip |
| crzytaxi.zip |
| csmash.zip |
| csmasho.zip |
| cspike.zip |
| cvs2gd.zip |
| cvsgd.zip |
| dc.zip |
| deathcox.zip |
| derbyoc.zip |
| derbyoc2.zip |
| dinoki25.zip |
| dinoking.zip |
| dinokior.zip |
| doa2.zip |
| doa2m.zip |
| dybb99.zip |
| dybbnao.zip |
| dygolf.zip |
| f355.zip |
| f355bios.zip |
| f355dlx.zip |
| f355twin.zip |
| f355twn2.zip |
| ggram2.zip |
| ggx.zip |
| ggxx.zip |
| ggxxac.zip |
| ggxxrl.zip |
| ggxxsla.zip |
| gram2000.zip |
| gundmct.zip |
| gundmxgd.zip |
| gunsur2.zip |
| gunsur2e.zip |
| gwing2.zip |
| hikaru.zip |
| hmgeo.zip |
| hopperbd.zip |
| hotd2.zip |
| hotd2o.zip |
| ikaruga.zip |
| illvelo.zip |
| initd.zip |
| initdexp.zip |
| inunoos.zip |
| jambo.zip |
| jingystm.zip |
| karous.zip |
| keyboard.zip |
| kick4csh.zip |
| kingrt66.zip |
| kof11.zip |
| kofnwj.zip |
| kurucham.zip |
| loveber3.zip |
| lovebero.zip |
| lovebery.zip |
| lupinsho.zip |
| luptype.zip |
| marstv.zip |
| mazan.zip |
| mazana.zip |
| meltyb.zip |
| meltyba.zip |
| meltybld.zip |
| mie.zip |
| moeru.zip |
| mok.zip |
| monkeyba.zip |
| mvsc2.zip |
| mvsc2u.zip |
| naomi.zip |
| naomi2.zip |
| naomigd.zip |
| ninjaslt.zip |
| oinori.zip |
| otrigger.zip |
| pjustic.zip |
| pstone.zip |
| pstone2.zip |
| psyvar2.zip |
| puyofev.zip |
| qmegamis.zip |
| quizqgd.zip |
| radirgy.zip |
| radirgya.zip |
| radirgyn.zip |
| ringout.zip |
| samba.zip |
| samba2k.zip |
| sambap.zip |
| segasp.zip |
| senko.zip |
| senkoo.zip |
| senkosp.zip |
| sfz3ugd.zip |
| sgtetris.zip |
| shaktamb.zip |
| shaktmsp.zip |
| shangril.zip |
| shikgam2.zip |
| shootopl.zip |
| shootpl.zip |
| shootplm.zip |
| sl2007.zip |
| slasho.zip |
| slashout.zip |
| smarinef.zip |
| smlg99.zip |
| soulsurf.zip |
| spawn.zip |
| spkrbtl.zip |
| sprtjam.zip |
| ss2005.zip |
| ss2005a.zip |
| sstrkfgt.zip |
| starseek.zip |
| suchie3.zip |
| takoron.zip |
| tduno2.zip |
| tetkiwam.zip |
| totd.zip |
| toyfight.zip |
| trgheart.zip |
| trizeal.zip |
| undefeat.zip |
| usagui.zip |
| vathlete.zip |
| vf4.zip |
| vf4b.zip |
| vf4c.zip |
| vf4evo.zip |
| vf4evoa.zip |
| vf4tuned.zip |
| vf4tuneda.zip |
| vf4tunedd.zip |
| virnba.zip |
| virnbao.zip |
| virnbap.zip |
| vonot.zip |
| vs2_2k.zip |
| vstrik3.zip |
| vstrik3c.zip |
| vtenis2c.zip |
| vtennis.zip |
| vtennis2.zip |
| vtennisg.zip |
| wldkicks.zip |
| wldrider.zip |
| wsbbgd.zip |
| wwfroyal.zip |
| zombrvn.zip |
| zunou.zip |
| naomi.zip |
| vf4b.zip |
| vf4evo.zip |
| vf4evoa.zip |
| vf4tuned.zip |
| vf4tuneda.zip |
| vf4tunedd.zip |
Ver. English:
Emulation
1 /
Run on the RetroArch emulator with dat or bin by choosing core_libRetro reicast
2 /
There is also the possibility with another nullDC-Naomi-r150 emulator provided you have the lst files necessary to start bin or dat ROMs
LST example:
Game name
"bin-file-name", 0x0000000, <length of bin-file-name>
- Look at the file size
(Right click properties)
copy the number in bytes
then in the windows calculator
in the menu view select scientific
paste the number
and click in HEX
then change 0x0000000 to it
example of desired HEX value:
Game123456 "Game123456", 0x0000000, 0x0 "0000000" (Insert the desired HEX value in the quote)
example:
Game123456
"Game123456.bin or dat", 0x0000000, 0x01234567
3 /
And finally this good old DEMUL who needs ROMs in Zip
SEGA
& various BIOS


