Welcome to the Gamebase 64 forums.                 An attempt to document ALL Commodore 64 gameware before it's too late!

Did anyone ever fix the script for Vice 2.4?

Discuss the Commodore VIC20 database that uses the GameBase Frontend.

Moderator: Jimbo

macguyver
New Member
Posts: 15
Joined: Wed Oct 13, 2004 9:33 pm

Wed Jan 06, 2016 3:18 pm

Hi Mayhem, I just tried disabling short filenames (Thanks for the tip), and unfortunately I still get the same error.
User avatar
.mad.
Honoured Member
Honoured Member
Location: Lancashire
Posts: 2304
Joined: Sun Jun 19, 2005 3:30 pm

Wed Jan 06, 2016 4:09 pm

macguyver wrote:Hi Mayhem, I just tried disabling short filenames (Thanks for the tip), and unfortunately I still get the same error.
you need to ENABLE short-filenames not disable them.
example emulators.ini

[Emulators]
1=WinVICE 2.4-x86
[File Types]
SupportTypes=D64;T64;G64;G41;TAP;CRT;P00;PRG
[WinVICE 2.4-x86]
UseShortFilenames=1
SupportedTypes=D64;T64;G64;G41;TAP;CRT;P00;PRG;ROM
EmulatorPathFile=C:\GameBase\Vic20\WinVICE-2.4-x86\xvic.exe
ScriptFile=WinVICE.txt
1=C:\GameBase\Vic20\WinVICE-2.4-x86\vice.ini
macguyver
New Member
Posts: 15
Joined: Wed Oct 13, 2004 9:33 pm

Wed Jan 06, 2016 5:04 pm

I've changed it back to enabling short filenames which is what I had before, thanks .mad. (Also possible by clicking the "use short (8.3) filenames" checkbox in the GEMUS menu in Gamebase)

This is back to what I had before and is not effecting the outcome of this error.

The writeup on the dink mod of VICE is located below, in case that provides any info on why this version of VICE wouldn't work with the 2012 GEMUS script, above. It's a fantastic version of VICE, I just am trying to figure out how to implement it in Gamebase.

(Actually I'm not permitted to post URLs for some reason)

Thanks for any insight!


:)
User avatar
.mad.
Honoured Member
Honoured Member
Location: Lancashire
Posts: 2304
Joined: Sun Jun 19, 2005 3:30 pm

Wed Jan 06, 2016 7:25 pm

edit:

that x64 emulator is nearly all command line now.
none of the SET INI commands in the script will work.

i will try and make something.
macguyver
New Member
Posts: 15
Joined: Wed Oct 13, 2004 9:33 pm

Wed Jan 06, 2016 9:33 pm

Thanks for the ideas, .mad. I'm at work now, so I'll check your notes tonight. But in the meantime...

I got it working another way! :D I was able to make this work by trying an earlier, offically sanctioned version of the dink mod VICE package which is Version 2.4.8 (it's not an x64 version either, that might be an issue as well) I realize now that it was risky and/or foolish of me to be using a nightly build, even though it was a newer version. So I swapped out my xvice.exe file with the v2.4.8 version, and now I have the dink mod version of VICE working fine in Gamebase Vic20. I am curious though what GEMUS script you would recommend for v 2.4.8 of VICE. Would the version in this thread work, in your opinion?

For anyone reading this who is interested in getting a wired or wireless controller working with VICE, the dink mod version is invaluable. I am playing my favorite Vic20 games from the comfort of my couch, controlling games with a wireless Xbox 360 controller and the visuals on my HDTV. With the ease of the well curated Gamebase Vic20, it's a dream come true!

Thanks again for your suggestions, .mad! I'm off to try all these games :D

Here is the link where I downloaded the version of the dink mod VICE that works with Gamebase:
http://www.lemon64.com/forum/viewtopic.php?t=42474
User avatar
.mad.
Honoured Member
Honoured Member
Location: Lancashire
Posts: 2304
Joined: Sun Jun 19, 2005 3:30 pm

Thu Jan 07, 2016 11:13 am

Managed to get a cart to load in x64.
but you have to rename the multi-cart files.
not sure if the mod is broken or it's a x64 thing.

it's a bit dodgey but it works.

Code: Select all

;*****************************
;* WinVICE 2.4r GEMUS Script *
;*     (c) The GB Team       *
;*    X64 Dink MOD Test      *
;*****************************

;--------------------------------------------------------------------
; Start of script.
;--------------------------------------------------------------------

   ;do we want a PAL or NTSC setup?
   If PalNTSC = NTSC
      Add_CLP( -ntsc)
   Else
      Add_CLP( -pal)
   End If

;joystick (this is set for numpad as joystick#1)
; WinVICE did not boot when joystick was set without one attached.

;Set Control port device (0: None), 1: Joystick, 2: Paddles, 3: Mouse (1351), 4: Mouse (NEOS), 5: Mouse (Amiga), 6: Mouse (CX-22), 7: Mouse (Atari ST), 8: Mouse (SmartMouse), 9: Mouse (Micromys), 10: KoalaPad, 11: Light Pen (up trigger), 12: Light Pen (left trigger), 13: Datel Light Pen, 14: Magnum Light Phaser, 15: Stack Light Rifle, 16: Inkwell Light Pen, 17: Sampler (2bit), 18: Sampler (4bit))
Add_CLP ( -controlport1device 1)

;Set input device for joystick #1 (0: None, 1: Numpad, 2: Keyset 1, 3: Keyset 2, 4: Joystick 1, 5: joystick 2)
Add_CLP ( -joydev1 1)

;clear any other attached controller to avoid conflicts
Add_CLP ( -controlport3device 0)
Add_CLP ( -controlport4device 0)
;--------------------------------------------------------------------
; Memory configuration.

;set through the key||value pair:
; memory=x
; where x is: none,all,3k,8k,16k,24k,"0,1,2,3,5" or "04,20,40,60,A0"

   If Key_memory CONTAINS(*)
      Add_CLP( -memory %memory_value%)
   Else
      Add_CLP( -memory none)
   End If
;--------------------------------------------------------------------

If GameType CONTAINS(prg)
;Set autostart mode for PRG files (0: VirtualFS, 1: Inject, 2: Disk image)
Add_CLP( -autostartprgmode 1)

Add_CLP( -autostart "%gamepathfile%")
run_emulator()
end if

;--------------------------------------------------------------------

;shortfilenames must be enabled to boot carts with long TOSEC file names.
;"Omega Race (1982)(Commodore)-a000.crt"

If GameType CONTAINS(crt)
   Add_CLP( -autostartprgmode 1)

;attach first cart linked as gamebase runnable file.

      If Key_cart CONTAINS(*20*)
         Add_CLP( -cart2 "%gamepathfile%")
      ElseIf Key_cart CONTAINS(*40*)
         Add_CLP( -cart4 "%gamepatfile%")
      ElseIf Key_cart CONTAINS(*60*)
         Add_CLP( -cart6 "%gamepathfile%")
      ElseIf Key_cart CONTAINS(*a0*)
         Add_CLP( -cartA "%gamepathfile%")
      ElseIf Key_cart CONTAINS(*b0*)
         Add_CLP( -cartB "%gamepathfile%")
      End If

;Multicarts do not attach using *widcard* or "%gamepathfile(1)%"
;workround - rename 2nd (highest mem) multicart files in archives as "20.crt","40.crt", "60.crt", "a0.ct", "b0.crt"
;"Donkey Kong (1983)(Atari) (1 of 2)-20.crt" = "20.crt" or leave the same name 
;"Donkey Kong (1983)(Atari) (2 of 2)-a0.crt" = "a0.crt" - must rename this.

; don't forget to Add GEMUS
;cart=20
;cart2=a0

      If Key_cart2 CONTAINS(*20*)
         Add_CLP( -cart2 "%gamepath%\20.crt")
      ElseIf Key_cart2 CONTAINS(*40*)
         Add_CLP( -cart4 "%gamepath%\40.crt")
      ElseIf Key_cart2 CONTAINS(*60*)
         Add_CLP( -cart6 "%gamepath%\60.crt")
      ElseIf Key_cart2 CONTAINS(*a0*)
         Add_CLP( -cartA "%gamepath%\a0.crt")
      ElseIf Key_cart2 CONTAINS(*b0*)
         Add_CLP( -cartB "%gamepath%\b0.crt")
      End If

Run_emulator()
end if

;--------------------------------------------------------------------

If GameType CONTAINS(t64||tap)

   If ImageName CONTAINS (*)
      ; Load the TAPE Image (T64) with Filename stored in GameBase.
      Add_CLP2( -autostart "%gamepathfile%:%c64imagename%")
   End If
   
   If key_load CONTAINS(manual)
    Show_Message(You must load the TAPE manually. Example Load"",1,1)
    ; Attach Tape Image in default Cassette Deck (1) and run emulator. Disable auto loading.
    Clear_CLP()
    Add_CLP2( -1 "%gamepathfile%")
   
    Else
    ; Load the first file on the Tape image.
    ;Default Attach TAPE and load
    Add_CLP2( -autostart "%gamepathfile%")
   End If

Run_emulator()
end if

;--------------------------------------------------------------------

If GameType CONTAINS(d64||g64||g41)

ADD_CLP ( -autostart-handle-tde -device8 1)

   If ImageName CONTAINS (*)
   ;Default setting. Boot disk with ImageName
   Add_CLP2( -autostart "%gamepathfile%:%c64imagename%")

; ***** Boot all other disks with a wildcard, if no internal file can be set on the image (G64) *****
   Else
   Add_CLP2( -autostart "%gamepathfile%")
   End If

Run_emulator()
End If
macguyver wrote: I am curious though what GEMUS script you would recommend for v 2.4.8 of VICE. Would the version in this thread work, in your opinion?
in my opinion,
if it works on x86 in XP. that's the only version i would use.
I like to be near the keyboard as most games need a key press as some point.
Even though it's (Alt+M) most of the time.

Only you can tell me if it doesn't work for your setup.
Then i will try and fix it.
macguyver
New Member
Posts: 15
Joined: Wed Oct 13, 2004 9:33 pm

Fri Jan 08, 2016 8:23 am

Wow. Thanks very much, .mad. for going to the trouble of creating a custom GEMUS script for the x64 version of the VICE dink mod. However I agree with you that it's probably smarter to stick with the x86 version because it works perfectly with Gamebase and all the thousands of games. The idea of renaming all the multi-cart files in order to use the x64 version feels painful.

The last thing I'd love to know from you is what GEMUS script you'd recommend for the x86 V2.4.8 version of VICE with the dink mod.

The most recent GEMUS script I've been able to find is in this thread and it starts with:

;****************************
;* WinVICE 2.4 GEMUS Script *
;* (c) The GB Team *
;* 17 December 2012 *
;****************************
User avatar
.mad.
Honoured Member
Honoured Member
Location: Lancashire
Posts: 2304
Joined: Sun Jun 19, 2005 3:30 pm

Fri Jan 08, 2016 11:13 am

macguyver wrote: what GEMUS script you'd recommend for the x86 V2.4.8 version of VICE with the dink mod.
All the core functions will work ok with it.
The script will need updating for any of the special DINK MODs you want to use.

for each and every game that needs special keys mapped.
you would need to edit GEMUS something like this...

JoyDinkButton0FUNCTION=1
JoyDinkButton3FUNCTION=2
JoyDinkButton4FUNCTION=5
JoyDinkButton5FUNCTION=6
JoyDinkButton6FUNCTION=7
JoyDinkButton7FUNCTION=8
JoyDinkButton13FUNCTION=3
JoyDinkButton16FUNCTION=4

if your pad has enough buttons (PS2). ;)
one idea could be this.

dpad = CURSOR
start = SPACE
select = RETURN
analogue L - joy1
analouge R - joy 2
X = Fire
R = emu WARP on
L = emu WARP off
triangle = F1
SQUARE = N
Circle = Y

maybe a little time consuming, setting all the games that need it.
But the results could be amazing.

a global keyset could be used for a high percentage though.

this could be added as global key set.
AutostartWarpSpeedySL=0

i will experiment and update it when i get some free time.
macguyver
New Member
Posts: 15
Joined: Wed Oct 13, 2004 9:33 pm

Sat Jan 09, 2016 4:37 am

Thanks for the insight and explanation, .mad.

Can't wait to dig into this!!!
User avatar
.mad.
Honoured Member
Honoured Member
Location: Lancashire
Posts: 2304
Joined: Sun Jun 19, 2005 3:30 pm

Sun Jan 10, 2016 5:52 pm

Updated the 2.4.4 script i had for my VIC20 to include Dink buttons.
Some DINK JOYPAD bits are not working as i think they should.
The problem could be my eyes though. :shock:

Code: Select all

;******************************
;* WinVICE 2.4.8 GEMUS Script *
;* -Dink-    VIC-20    -Dink- *
;*            .mad.           *
;*      10th January 2016     *
;******************************

; these are the options for the configurable buttons

;NUM| ACTION
;---|-------------
;5  | DPAD UP
;6  | DPAD RIGHT		
;7  | DPAD DOWN		
;8  | DPAD LEFT		

;1  | WARP MODE (EMULATOR)
;2  | PAUSE (EMULATOR)
;4  | SWAP JOYSTICK PORT
;9  | QUICK SAVE		
;10 | QUICK LOAD		
;11 | QUICK SAVE UNDO	
;15 | SET MILESTONE      
;16 | RETURN MILESTONE   
;99 | QUIT (EMULATOR)	

;3  | SPACE BAR	    
;20 | SHIFT		    
;21 | RETURN	            
;22 | COMMODORE	    
;29 | RUN STOP	    
;30 | LEFT ARROW	    
;41 | F1 
;42 | F2 
;43 | F3 
;44 | F4 
;45 | F5 
;46 | F6 
;47 | F7 
;48 | F8 
;31 | 1
;32 | 2
;33 | 3
;34 | 4
;35 | 5
;36 | 6
;37 | 7
;38 | 8
;39 | 9
;40 | 0
;51 | A  
;52 | B  
;53 | C  
;54 | D  
;55 | E  
;56 | F  
;57 | G  
;58 | H  
;59 | I  
;60 | J  
;61 | K  
;62 | L  
;63 | M  
;64 | N  
;65 | O  
;66 | P  
;67 | Q  
;68 | R  
;69 | S  
;70 | T  
;71 | U  
;72 | V  
;73 | W  
;74 | X  
;75 | Y  
;76 | Z  

;--------------------------------------------------------------------
; Start of script.
;--------------------------------------------------------------------
; Set emulator default values.
Set_INI_Value(1||VIC20||AutostartPrgMode||0)
Set_INI_Value(1||VIC20||AutostartWarp||0)
Set_INI_Value(1||VIC20||VICFilter||0)

; Dink MOD (Speedy SL - boots emu in warp mode)
If key_speedysl CONTAINS (yes||on||1)
Set_INI_Value(1||VIC20||AutostartWarpSpeedySL||1)
Set_INI_Value(1||VIC20||DriveTrueEmulation||1)
Set_INI_Value(1||VIC20||AutostartHandleTrueDriveEmulation||1)
Set_INI_Value(1||VIC20||VirtualDevices||1)
Else
Set_INI_Value(1||VIC20||AutostartWarpSpeedySL||0)
Set_INI_Value(1||VIC20||DriveTrueEmulation||0)
Set_INI_Value(1||VIC20||AutostartHandleTrueDriveEmulation||0)
Set_INI_Value(1||VIC20||VirtualDevices||0)
End If

If Key_drivesound CONTAINS (yes)
;Default is OFF
;Drive Sound stays on playing the first two multi-load games tested Mini Kong & Men Rescue.
Set_INI_Value(1||VIC20||DriveSoundEmulation||1)
Set_INI_Value(1||VIC20||DriveSoundEmulationVolume||4000)
Else
Set_INI_Value(1||VIC20||DriveSoundEmulation||0)
Set_INI_Value(1||VIC20||DriveSoundEmulationVolume||0)
End IF

;enable Joypad - must be attached and driver installed before emulator is run.
;if you plug it in USB once WinVICE is running, you must select it manually from options.

Set_INI_Value(1||VIC20||JoyDevice1||4)
Set_INI_Value(1||VIC20||JoyAutofire1Speed||16)
Set_INI_Value(1||VIC20||JoyAutofire1Axis||0)

;map every joypad buuton as fire
Set_INI_Value(1||VIC20||JoyFire1Button||0)

;---------------------------------------------------------------------------------
; Dink MOD - remap extra Joypad Buttons for custom KEYS.
; You can not map a KEY to D-Pad function, but can map a BUTTON to DPAD direction.
; The code is there to make it work, but i can not?.
;
; Future Update Request.
; JoyDinkUP/DOWN/LEFT/RIGHT/FUNCTION
; This would be very usefull to remap keyboard only games in GEMUS.
; ALL keys if Possible.
; "SHIFT" ";" "." "," "'" "@" "CBM"
;
; Stop Tape Function, for a few Vic20 Tape Games.
; Jogger disables Joystick while play is pressed (datasette motor running).
;
; Please NOTE:
; Every Pad and USB Adapter could use slightly different button numbers.
; Example shows a PS2 Joypad with "Twin USB Vibration Gamepad" adapter.
;---------------------------------------------------------------------------------

if key_Dinkmod CONTAINS (no||0||off)
;Disable Dink MODs
Set_INI_Value(1||VIC20||JoyDinkButton0FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton1FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton2FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton3FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton4FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton5FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton6FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton7FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton8FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton9FUNCTION||0)
;Not used (my pad only has 10 buttons)
Set_INI_Value(1||VIC20||JoyDinkButton10FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton11FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton12FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton13FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton14FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton15FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton16FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton17FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton18FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton19FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton20FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton21FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton22FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton23FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton24FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton25FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton26FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton27FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton28FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton29FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton30FUNCTION||0)
Set_INI_Value(1||VIC20||JoyDinkButton31FUNCTION||0)

Else
;--------------------------------------------------------
;X (Button #3) = Map Fire Button for this button #3 only.
;--------------------------------------------------------
Set_INI_Value(1||VIC20||JoyFire1Button||3)

;-----------------------------------------------------
;Triangle (Button #0) = SHIFT 20 / RUNSTOP 29
;-----------------------------------------------------
If key_Button0 CONTAINS (*)
Set_INI_Value(1||VIC20||JoyDinkButton0FUNCTION||%Button0_Value%)
else
Set_INI_Value(1||VIC20||JoyDinkButton0FUNCTION||20)
End If
;--------------------
;Circle - SPACE
;--------------------
If key_Button1 CONTAINS (*)
Set_INI_Value(1||VIC20||JoyDinkButton1FUNCTION||%Button1_Value%)
else
Set_INI_Value(1||VIC20||JoyDinkButton1FUNCTION||3)
End If
;--------------------
;X - (FIRE)
;--------------------
;If key_Button2 CONTAINS (*)
;Set_INI_Value(1||VIC20||JoyDinkButton2FUNCTION||%Button2_Value%)
;else
;Set_INI_Value(1||VIC20||JoyDinkButton2FUNCTION||0)
;End If
;--------------------
;Square - COMMODORE
;--------------------
If key_Button3 CONTAINS (*)
Set_INI_Value(1||VIC20||JoyDinkButton3FUNCTION||%Button3_Value%)
else
Set_INI_Value(1||VIC20||JoyDinkButton3FUNCTION||22)
End If
;--------------------
;L2 - F7/F8
;--------------------
If key_Button4 CONTAINS (*)
Set_INI_Value(1||VIC20||JoyDinkButton4FUNCTION||%Button4_Value%)
else
Set_INI_Value(1||VIC20||JoyDinkButton4FUNCTION||47)
End If
;--------------------
;R2 - F5/F6
;--------------------
If key_Button5 CONTAINS (*)
Set_INI_Value(1||VIC20||JoyDinkButton5FUNCTION||%Button5_Value%)
else
Set_INI_Value(1||VIC20||JoyDinkButton5FUNCTION||45)
End If
;--------------------
;L1 = F1/F2
;--------------------
If key_Button6 CONTAINS (*)
Set_INI_Value(1||VIC20||JoyDinkButton6FUNCTION||%Button6_Value%)
else
Set_INI_Value(1||VIC20||JoyDinkButton6FUNCTION||41)
End If
;--------------------
;R1 = F3/F4
;--------------------
If key_Button7 CONTAINS (*)
Set_INI_Value(1||VIC20||JoyDinkButton7FUNCTION||%Button7_Value%)
else
Set_INI_Value(1||VIC20||JoyDinkButton7FUNCTION||43)
End If
;--------------------
;SELECT - (PAUSE)
;--------------------
If key_Button8 CONTAINS (*)
Set_INI_Value(1||VIC20||JoyDinkButton8FUNCTION||%Button8_Value%)
else
Set_INI_Value(1||VIC20||JoyDinkButton8FUNCTION||2)
End If
;--------------------
;START - (WARP)
;--------------------
If key_Button8 CONTAINS (*)
Set_INI_Value(1||VIC20||JoyDinkButton9FUNCTION||%Button9_Value%)
else
Set_INI_Value(1||VIC20||JoyDinkButton9FUNCTION||1)
End If
;--------------------------------
;End of DINK MOD
End If
;----------------------------

Set_INI_Value(1||VIC20||InitialTapeDir||"%gamepath%")
Set_INI_Value(1||VIC20||InitialDiskDir||"%gamepath%")
Set_INI_Value(1||VIC20||InitialCartDir||"%gamepath%")

   ;Do we want a PAL or NTSC setup?
   If PalNTSC = NTSC
      Add_CLP( -ntsc)
      ;Set_INI_Value(1||VIC20||MachineVideoStandard||-2)
   Else
      Add_CLP( -pal)
      ;Set_INI_Value(1||VIC20||MachineVideoStandard||-1)
   End If


If Control = Mouse
Set_INI_Value(1||VIC20||Mouse||1)
Set_INI_Value(1||VIC20||MouseSensitivity||40)

ElseIf Control = LightPen
Set_INI_Value(1||VIC20||Lightpen||1)

;0=Pen Button Up, 1=Pen Button Left ,2=Datel Pen ,3=Magnum Light Phaser, 4=Stack Light Rifel
Set_INI_Value(1||VIC20||LightpenType||0)

ElseIf Control = LightGun
Set_INI_Value(1||VIC20||Lightpen||1)
Set_INI_Value(1||VIC20||LightpenType||3)

;Paddles are switched on using Mouse command.
ElseIf Control = PaddlePort2
Set_INI_Value(1||VIC20||Mouse||1)
ElseIf Control = PaddlePort1
Set_INI_Value(1||VIC20||Mouse||1)

Else
Set_INI_Value(1||VIC20||Lightpen||0)
Set_INI_Value(1||VIC20||LightpenType||0)
Set_INI_Value(1||VIC20||Mouse||0)
End If

;Set_INI_Value(1||VIC20||JoyOpposite||0)
;Set_INI_Value(1||VIC20||KeySetEnable||1)

; Keyset A - Customise your own keys
; remap a keyboard only game to joypad.
;Set_INI_Value(1||VIC20||KeymapIndex||1)
;Set_INI_Value(1||VIC20||KeySetEnable||1)

;Cursor numbers
;90 up, 92 left, 93 right, 95 down, 100 R-CTRL

If key_up CONTAINS (*)
Set_INI_Value(1||VIC20||KeySet1North||%up_value%)
End if

If key_down CONTAINS (*)
Set_INI_Value(1||VIC20||KeySet1South||%down_value%)
End if

If key_left CONTAINS (*)
Set_INI_Value(1||VIC20||KeySet1West||%left_value%)
End If

If key_right CONTAINS (*)
Set_INI_Value(1||VIC20||KeySet1East||%right_value%)
End If

If key_fire CONTAINS (*)
Set_INI_Value(1||VIC20||KeySet1Fire||%fire_value%)
End If

;***************************************************************
;VIC20 only has 1 Control port as standard.
;Extra joysticks can only be used by attaching special adapters.
; TankAtak needs OEM joy adapater for 2 players.
;***************************************************************

;Set_INI_Value(1||VIC20||ExtraJoy||0)
;Set_INI_Value(1||VIC20||ExtraJoyType||0)

;Set_INI_Value(1||VIC20||JoyDevice2||0)
;Set_INI_Value(1||VIC20||JoyDevice3||0)
;Set_INI_Value(1||VIC20||JoyDevice4||0)

;Set_INI_Value(1||VIC20||JoyFire1Button||0)
;Set_INI_Value(1||VIC20||JoyFire2Button||0)
;Set_INI_Value(1||VIC20||JoyFire3Button||0)
;Set_INI_Value(1||VIC20||JoyFire4Button||0)

;Set_INI_Value(1||VIC20||JoyAutofire1Speed||16)
;Set_INI_Value(1||VIC20||JoyAutofire1Axis||0)
;Set_INI_Value(1||VIC20||JoyAutofire1Button||0)

;Set_INI_Value(1||VIC20||JoyAutofire2Speed||16)
;Set_INI_Value(1||VIC20||JoyAutofire2Axis||0)
;Set_INI_Value(1||VIC20||JoyAutofire2Button||0)

;Set_INI_Value(1||VIC20||JoyAutofire3Speed||16)
;Set_INI_Value(1||VIC20||JoyAutofire3Axis||0)
;Set_INI_Value(1||VIC20||JoyAutofire3Button||0)

;Set_INI_Value(1||VIC20||JoyAutofire4Speed||16)
;Set_INI_Value(1||VIC20||JoyAutofire4Axis||0)
;Set_INI_Value(1||VIC20||JoyAutofire4Button||0)

;--------------------------------------------------------------------
; Memory configuration.

;Set_INI_Value(1||VIC20||RAMBlock0||0)
;Set_INI_Value(1||VIC20||RAMBlock1||0)
;Set_INI_Value(1||VIC20||RAMBlock2||0)
;Set_INI_Value(1||VIC20||RAMBlock3||0)
;Set_INI_Value(1||VIC20||RAMBlock5||0)

;set through the key=value pair:
; memory=x
; where x is: none,all,3k,8k,16k,24k,"0,1,2,3,5" or "04,20,40,60,A0"

	If Key_memory CONTAINS(*)
		Add_CLP( -memory %memory_value%)
	Else
		Add_CLP( -memory none)
	End If
;--------------------------------------------------------------------

If GameType CONTAINS(prg)
;use prg run mode.
Set_INI_Value(1||VIC20||AutostartPrgMode||1)

If Key_sys CONTAINS(*)
Add_CLP( -autoload "%gamepathfile%")
Run_Emulator_Send_Keys([1]sys%sys_value%{ENTER}||50)
Else
Add_CLP( -autostart "%gamepathfile%")
run_emulator()
end If
End If

;--------------------------------------------------------------------

If GameType CONTAINS(crt||rom)

;1=Generic 2=Mega-Cart 3=Final Expansion 4=Vic Flash Plugin
Set_INI_Value(1||VIC20||CartridgeType||1)

;Reset on Cartridge Change
If Key_cartreset CONTAINS (off)
Set_INI_Value(1||VIC20||CartridgeReset||0)
else
Set_INI_Value(1||VIC20||CartridgeReset||-1)
end if

;Set_INI_Value(1||VIC20||CartridgeFile||)
;Set_INI_Value(1||VIC20||GenericCartridgeFile2000||)
;Set_INI_Value(1||VIC20||GenericCartridgeFile4000||)
;Set_INI_Value(1||VIC20||GenericCartridgeFile6000||"C:\GBGame\0\AE-6000.crt")
;Set_INI_Value(1||VIC20||GenericCartridgeFileA000||"C:\GBGame\0\AE-a000.crt")
;Set_INI_Value(1||VIC20||GenericCartridgeFileB000||)

		If Key_cart CONTAINS(*20*)
			Add_CLP( -cart2 %gamepath%\*%cart_value%*.*)
		ElseIf Key_cart CONTAINS(*40*)
			Add_CLP( -cart4 %gamepath%\*%cart_value%*.*)
		ElseIf Key_cart CONTAINS(*60*)
			Add_CLP( -cart6 %gamepath%\*%cart_value%*.*)
		ElseIf Key_cart CONTAINS(*a0*)
			Add_CLP( -cartA %gamepath%\*%cart_value%*.*)
		ElseIf Key_cart CONTAINS(*b0*)
			Add_CLP( -cartB %gamepath%\*%cart_value%*.*)
		End If

		If Key_cart2 CONTAINS(*20*)
			Add_CLP( -cart2 %gamepath%\*%cart2_value%*.*)
		ElseIf Key_cart2 CONTAINS(*40*)
			Add_CLP( -cart4 %gamepath%\*%cart2_value%*.*)
		ElseIf Key_cart2 CONTAINS(*60*)
			Add_CLP( -cart6 %gamepath%\*%cart2_value%*.*)
		ElseIf Key_cart2 CONTAINS(*a0*)
			Add_CLP( -cartA %gamepath%\*%cart2_value%*.*)
		ElseIf Key_cart2 CONTAINS(*b0*)
			Add_CLP( -cartB %gamepath%\*%cart2_value%*.*)
		End If


; AE Cart boots with corrupt screen with RAM 00 at 0000.
; must use these VICE RAM settings, or enter monitor and type - G A027.

If key_RAM CONTAINS (255)
Set_INI_Value(1||VIC20||RAMInitStartValue||255)
Else
Set_INI_Value(1||VIC20||RAMInitStartValue||0)
End If

; Default is 64, possible settings (0||1||2||4||8||16||32||64||128||256||512||1024)
Set_INI_Value(1||VIC20||RAMInitValueInvert||64)

; Default is 0,  possible settings (0||1||2||4||8||16||32||64||128||256||512||1024)
Set_INI_Value(1||VIC20||RAMInitPatternInvert||0)

;Start Cart with SYS command (Mission Impossible).
;GEMUS sys=32592
If Key_sys CONTAINS(*)
Run_Emulator_Send_Keys([1]sys%sys_value%{ENTER}||50)

Else If key_megacart CONTAINS (yes)
;Set_INI_Value(1||VIC20||CartridgeType||2)
;Set_INI_Value(1||VIC20||CartridgeFile||"C:\GBGame\0\mega-cart.rom")
;Set_INI_Value(1||VIC20||MegaCartNvRAMfilename||"C:\GBGame\0\mega-cart.nv")
;Set_INI_Value(1||VIC20||MegaCartNvRAMWriteBack||1)

Add_CLP ( -cartmega %gamepath%\mega-cart.rom -mcnvramwriteback -mcnvramfile %gamepath%\mega-cart.nv)
Run_Emulator()
Else

Run_Emulator()

End if
End if

;--------------------------------------------------------------------

If GameType CONTAINS(t64||tap)

Set_INI_Value(1||VIC20||DatasetteResetWithCPU||1)

;------------------------------
;Fine-tune Datasette settings.
;------------------------------
If key_delay CONTAINS(1000||2000||5000||10000||20000||50000)
Set_INI_Value(1||VIC20||DatasetteZeroGapDelay||%delay_value%)
else
Set_INI_Value(1||VIC20||DatasetteZeroGapDelay||20000)
End if

;Caves of Annod=1, Shark Attack=2
If Key_cycles CONTAINS(0||1||2||3||4||5||6||7)
Set_INI_Value(1||VIC20||DatasetteSpeedTuning||%cycles_value%)
else
Set_INI_Value(1||VIC20||DatasetteSpeedTuning||1)
end if
;------------------------------


;No commandline options for loading tapes with ,1,1. Only BASIC load available.

 	If ImageName CONTAINS (*)
   	; Load the TAPE Image (T64) with Filename stored in GameBase.
   	Add_CLP2( -autostart "%gamepathfile%:%c64imagename%")
   	End If
	
	If key_load CONTAINS(manual)
	 Show_Message(You must load the TAPE manually. Example Load"",1,1)
	 ; Attach Tape Image in default Cassette Deck (1) and run emulator. Disable auto loading.
	 Clear_CLP()
	 Add_CLP2( -1 "%gamepathfile%")
	 
	 Else
	 ; Load the first file on the Tape image.
	 ;Default Attach TAPE and load
	 Add_CLP2( -autostart "%gamepathfile%")
	End If

if key_tape CONTAINS(detach)
;Jogger controls do not work without a tape at the STOP position.
;If using a T64 file the image needs to be removed.
;Open WinVICE menu and detach T64/Tape file.
Run_Emulator_Send_Keys([4]%{f}h||50)

else
Run_emulator()
end if
End if

;--------------------------------------------------------------------

If GameType CONTAINS(d64||g64||g41)

Set_INI_Value(1||VIC20||DriveTrueEmulation||1)
;Set_INI_Value(1||VIC20||DriveSoundEmulation||0)

;Set_INI_Value(1||VIC20||Drive8Type||1541)
;Set_INI_Value(1||VIC20||AttachDevice8Readonly||0)
;Set_INI_Value(1||VIC20||FileSystemDevice8||1)
;Set_INI_Value(1||VIC20||Drive8ExtendImagePolicy||0)
;Set_INI_Value(1||VIC20||Drive8IdleMethod||0)
;Set_INI_Value(1||VIC20||Drive8RAM2000||0)
;Set_INI_Value(1||VIC20||Drive8RAM4000||0)
;Set_INI_Value(1||VIC20||Drive8RAM6000||0)
;Set_INI_Value(1||VIC20||Drive8RAM8000||0)
;Set_INI_Value(1||VIC20||Drive8RAMA000||0)

Set_INI_Value(1||VIC20||Drive9Type||0)
Set_INI_Value(1||VIC20||Drive10Type||0)
Set_INI_Value(1||VIC20||Drive11Type||0)


      ; -autorun    autoloads prg file, but you will need to type RUN [return] manually.
      ; -autostart  autoloads and runs the file.
      
	If ImageName CONTAINS (*)
	;Default setting. Boot disk with ImageName
	Add_CLP2( -autostart "%gamepathfile%:%c64imagename%")

; ***** Boot all other disks with a wildcard, if no internal file can be set on the image (G64) *****
	Else
	Add_CLP2( -autostart "%gamepathfile%")
	End If
; ***************************************************************************************************	
	
		If Key_load CONTAINS(wildcard)
		; Auto boot disk with LOAD"*",8,1
		Clear_CLP()
		Add_CLP2( -autostart "%gamepathfile%")

		ElseIf Key_load CONTAINS(basic)
		; Auto boot Disk with LOAD"*",8
		Clear_CLP()
		Add_CLP2( -autostart "%gamepathfile%" -basicload)

		ElseIf key_load CONTAINS(manual)
		Show_Message(You must load the game on the disk manually. LOAD"$",8 and type LIST for directory)
		; Just attach disk in default drive 8 and run emulator. Disable auto loading.
		Clear_CLP()
		Add_CLP2( -8 "%gamepathfile%")
		End If
Run_emulator()
End If
macguyver
New Member
Posts: 15
Joined: Wed Oct 13, 2004 9:33 pm

Sun Jan 10, 2016 11:28 pm

Thanks very much .mad. for taking the time to put this together!

I'll play with this script and report back. :)
macguyver
New Member
Posts: 15
Joined: Wed Oct 13, 2004 9:33 pm

Sun Jan 31, 2016 9:21 am

.mad. I'm having great luck getting the controller to work as thanks to your helpful GEMUS script. however, I'm having trouble trying to get Gamebase to exit by pressing the escape key. Any ideas? At first I was modifying the win_sym.vkm file but I've somehow got to fool VICE that pressing "esc" is the same as alt-x. Any suggestions?

- actually I got it to work by adjusting the .vkm file to include the following:

1 -1 -1 0 /* ESC -> No Key */

(To get the escape key functionality, I'm also using GameEx which runs overtop of Gamebase, so it's a little crazy but it all works.)

One other issue I noticed with the GEMUS script above is that I think some of the details are out of sync with the version of VICE that it's meant for (2.4.8 dink mod). For example, I could not get the cartridge version of "Gorf" to work on it any longer. (GORF-a000.prg) So what I did is copy the previous GEMUS script pieces from V2.4 earlier in this thread, and past that section relating to memory addresses and loading in to the new version you provided. Now it works! I wonder what is offside about that section of your newest GEMUS script?

Thanks again for all your insights.
User avatar
.mad.
Honoured Member
Honoured Member
Location: Lancashire
Posts: 2304
Joined: Sun Jun 19, 2005 3:30 pm

Sun Jan 31, 2016 11:52 am

macguyver wrote: I could not get the cartridge version of "Gorf" to work on it any longer. (GORF-a000.prg).
it is working as it should.
GORF-A000.PRG is a CARTRIDGE not a PROGRAM.

i renamed all CRT files with incorrect PRG extension.
you can add PRG to cartridge filetypes, or rename file to GORF-A000.CRT.
macguyver
New Member
Posts: 15
Joined: Wed Oct 13, 2004 9:33 pm

Fri Feb 05, 2016 7:03 am

Thanks for the feedback, .mad.

I do realize that Gorf is a cartridge. I purchased it myself for $64 in 1983 and played it like crazy that summer! I remember the salesperson was telling my mother, "It's four games in 1, so your son is getting quite the deal".

Unfortunately it appears that many of the cartridges in the latest version (V3) of the Vic20 Gamebase are listed with the PRG extension. Thanks for the suggestion of renaming the files, or adding PRG to cartridge filetype. I chose the latter route rather than renaming them all, even though I hope the next version of the database will go with the new naming scheme.

Thanks again for your help. Playing the huge collection of Gamebase Vic20 games with a wireless D-pad is such a blast! :D

Return to “Commodore Vic20 - GameBaseVIC20”

Who is online

Users browsing this forum: No registered users and 0 guests