Added the launcher and files.
24
README.md
@@ -1,2 +1,24 @@
|
||||
# ACK-Launcher
|
||||
A clone of the ACK Launcher application in TCL.
|
||||
A clone of the [Adventure Creation Kit](http://mozomedia.com/ack/) Launcher application in TCL.
|
||||
|
||||
## Dependencies
|
||||
* Adventure Creation Kit
|
||||
* Dosbox
|
||||
* Wish 8.5
|
||||
|
||||
## Installation
|
||||
- Copy the "ack_launcher.tcl" file and the "launcher_icons" folder into
|
||||
the parent directory of your ACK installation.
|
||||
- Copy the dosbox.conf file into your ACK folder.
|
||||
- The directory structure must be like this:
|
||||
|
||||
```
|
||||
Parent directory
|
||||
|--- ack_launcher.tcl
|
||||
|--- launcher_icons
|
||||
|--- ACK
|
||||
|--- dosbox.conf
|
||||
```
|
||||
|
||||
## Notes
|
||||
The launcher icons and Adventure Creation Kit are © Chris Hopkins
|
||||
|
229
ack_launcher.tcl
Executable file
@@ -0,0 +1,229 @@
|
||||
#! /usr/bin/env wish
|
||||
|
||||
# Copyright (c) 2015, Miguel Angel Astor Romero
|
||||
# All rights reserved.
|
||||
# See the enclosed LICENSE file for more information.
|
||||
|
||||
frame .banner -relief flat
|
||||
frame .info_f -relief flat
|
||||
frame .buttons -relief flat -pady 5
|
||||
frame .bottom -relief flat -pady 5
|
||||
pack .banner -fill both -expand 1
|
||||
pack .info_f -fill both -expand 1
|
||||
pack .buttons -fill both -expand 1
|
||||
pack .bottom -fill both -expand 1
|
||||
|
||||
image create photo bar1 -format GIF -file "launcher_icons/banner1.gif"
|
||||
image create photo bar2 -format GIF -file "launcher_icons/banner2.gif"
|
||||
image create photo con -format GIF -file "launcher_icons/configure.gif"
|
||||
image create photo cre -format GIF -file "launcher_icons/create.gif"
|
||||
image create photo fon -format GIF -file "launcher_icons/font.gif"
|
||||
image create photo imp -format GIF -file "launcher_icons/import.gif"
|
||||
image create photo mac -format GIF -file "launcher_icons/macros.gif"
|
||||
image create photo map -format GIF -file "launcher_icons/map.gif"
|
||||
image create photo mes -format GIF -file "launcher_icons/messages.gif"
|
||||
image create photo obj -format GIF -file "launcher_icons/object.gif"
|
||||
image create photo pep -format GIF -file "launcher_icons/people.gif"
|
||||
image create photo run -format GIF -file "launcher_icons/run.gif"
|
||||
image create photo til -format GIF -file "launcher_icons/tile.gif"
|
||||
|
||||
label .banner.bimg1 -image bar1
|
||||
label .banner.bimg2 -image bar2
|
||||
label .banner.just -font {-size 9 -weight bold} \
|
||||
-text " Just launch ACK: "
|
||||
checkbutton .banner.mouse_c -text "Enable mouse (experimental)" -onvalue 1 \
|
||||
-offvalue 0 -variable mouse_var
|
||||
label .banner.sclabel -text "Graphic Scaler: "
|
||||
ttk::combobox .banner.scaler -width 10
|
||||
.banner.scaler configure -values [ list none normal2x normal3x advmame2x \
|
||||
advmame3x hq2x hq3x 2xsai super2xsai supereagle advinterp2x \
|
||||
advinterp3x tv2x tv3x rgb2x rgb3x scan2x scan3x ]
|
||||
.banner.scaler configure -state readonly
|
||||
.banner.scaler set "hq3x"
|
||||
label .banner.fslabel -text "ALT + ENTER toggles fullscreen while running ACK"
|
||||
|
||||
label .sep1 \
|
||||
-text "------------------------------------------------------------------------"
|
||||
label .sep2 \
|
||||
-text "------------------------------------------------------------------------"
|
||||
|
||||
label .info1 -font {-size 9 -weight bold} \
|
||||
-text "... or launch multiple ACK editors"
|
||||
label .info2 -font {-size 9 -weight bold} \
|
||||
-text "in separate windows:"
|
||||
label .info3 -text "- Pick adventure with \"Select Adventure\" dropdown"
|
||||
label .info4 -text "- Click buttons below to launch editors"
|
||||
label .info5 -text "- Press TAB to save changes in current editor. Then"
|
||||
label .info6 -text "switch to another editor window and press TAB to"
|
||||
label .info7 -text "update it with the changes made in the previous"
|
||||
label .info8 -text "editor. (You may need to use a selection menu"
|
||||
label .info9 -text "before changes will appear.)"
|
||||
|
||||
label .buttons.butimg1 -image cre
|
||||
label .buttons.butimg2 -image con
|
||||
label .buttons.butimg3 -image til
|
||||
label .buttons.butimg4 -image map
|
||||
label .buttons.butimg5 -image imp
|
||||
label .buttons.butimg6 -image fon
|
||||
label .buttons.butimg7 -image obj
|
||||
label .buttons.butimg8 -image pep
|
||||
label .buttons.butimg9 -image mes
|
||||
label .buttons.butimg10 -image mac
|
||||
label .buttons.butimg11 -image run
|
||||
|
||||
button .banner.b01 -text "Go!" -command "ack_base" -width 10
|
||||
button .buttons.b02 -text "Create Adventure" -command "ackmod -n" -width 15
|
||||
button .buttons.b03 -text "Configure Adventure" \
|
||||
-command "ackmod -c" -width 15
|
||||
button .buttons.b04 -text "Edit Objects" -command "ackmod -o" -width 15
|
||||
button .buttons.b05 -text "Tile Editor" -command "ackmod -g" -width 15
|
||||
button .buttons.b06 -text "Edit People" -command "ackmod -p" -width 15
|
||||
button .buttons.b07 -text "Map Editor" -command "ackmod -m" -width 15
|
||||
button .buttons.b08 -text "Edit Messages" -command "ackmod -t" -width 15
|
||||
button .buttons.b09 -text "Import / Export" -command "ackmod -i" -width 15
|
||||
button .buttons.b10 -text "Edit Macros" -command "ackmod -x" -width 15
|
||||
button .buttons.b11 -text "Edit Font" -command "ackmod -f" -width 15
|
||||
button .buttons.b12 -text "Run Adventure" -command "ackmod -r" -width 15
|
||||
button .bottom.b13 -text "ACK Manual" -command "game_manual" -width 10
|
||||
button .bottom.b14 -text "Open Game Folder" -command "game_dir" -width 15
|
||||
button .bottom.b15 -text "Visit ACK Site" -command "home_page" -width 10
|
||||
button .buttons.b89 -text "Refresh Adventures" -command "refresh" -width 15
|
||||
|
||||
label .buttons.advlbl -text "Select Adventure:"
|
||||
ttk::combobox .buttons.advents
|
||||
.buttons.advents configure -values [ concat ".. " [ exec ls -1 "ACK/GAMES/" ] ]
|
||||
.buttons.advents configure -state readonly
|
||||
.buttons.advents set ".."
|
||||
bind .buttons.advents <<ComboboxSelected>> {
|
||||
if { [.buttons.advents get] == ".." } {
|
||||
disable_buttons
|
||||
} else {
|
||||
enable_buttons
|
||||
}
|
||||
}
|
||||
|
||||
grid .banner -row 0 -column 0
|
||||
grid .banner.bimg1 -row 0 -column 0 -rowspan 5
|
||||
grid .banner.just -row 0 -column 1 -columnspan 2
|
||||
grid .banner.b01 -row 1 -column 1 -columnspan 2
|
||||
grid .banner.bimg2 -row 0 -column 3 -rowspan 5
|
||||
grid .banner.mouse_c -row 3 -column 1 -columnspan 2
|
||||
grid .banner.sclabel -row 5 -column 1
|
||||
grid .banner.scaler -row 5 -column 2
|
||||
grid .banner.fslabel -row 6 -column 0 -columnspan 4
|
||||
|
||||
grid .sep1 -row 1 -column 0
|
||||
grid .info_f -row 2 -column 0
|
||||
pack .info1 -in .info_f
|
||||
pack .info2 -in .info_f
|
||||
pack .info3 -in .info_f -anchor w
|
||||
pack .info4 -in .info_f -anchor w
|
||||
pack .info5 -in .info_f -anchor w
|
||||
pack .info6 -in .info_f -anchor w
|
||||
pack .info7 -in .info_f -anchor w
|
||||
pack .info8 -in .info_f -anchor w
|
||||
pack .info9 -in .info_f -anchor w
|
||||
|
||||
grid .buttons -row 3 -column 0
|
||||
grid .buttons.advlbl -row 0 -column 1 -columnspan 2
|
||||
grid .buttons.advents -row 1 -column 1 -columnspan 2
|
||||
grid .buttons.butimg1 -row 2 -column 0
|
||||
grid .buttons.butimg2 -row 3 -column 0
|
||||
grid .buttons.butimg3 -row 4 -column 0
|
||||
grid .buttons.butimg4 -row 5 -column 0
|
||||
grid .buttons.butimg5 -row 6 -column 0
|
||||
grid .buttons.butimg6 -row 7 -column 0
|
||||
grid .buttons.b02 -row 2 -column 1
|
||||
grid .buttons.b03 -row 3 -column 1
|
||||
grid .buttons.b05 -row 4 -column 1
|
||||
grid .buttons.b07 -row 5 -column 1
|
||||
grid .buttons.b09 -row 6 -column 1
|
||||
grid .buttons.b11 -row 7 -column 1
|
||||
grid .buttons.b89 -row 2 -column 2
|
||||
grid .buttons.b04 -row 3 -column 2
|
||||
grid .buttons.b06 -row 4 -column 2
|
||||
grid .buttons.b08 -row 5 -column 2
|
||||
grid .buttons.b10 -row 6 -column 2
|
||||
grid .buttons.b12 -row 7 -column 2
|
||||
grid .buttons.butimg7 -row 3 -column 3
|
||||
grid .buttons.butimg8 -row 4 -column 3
|
||||
grid .buttons.butimg9 -row 5 -column 3
|
||||
grid .buttons.butimg10 -row 6 -column 3
|
||||
grid .buttons.butimg11 -row 7 -column 3
|
||||
|
||||
grid .sep2 -row 4 -column 0
|
||||
grid .bottom -row 5 -column 0
|
||||
grid .bottom.b13 -row 0 -column 0
|
||||
grid .bottom.b14 -row 0 -column 1
|
||||
grid .bottom.b15 -row 0 -column 2
|
||||
|
||||
proc refresh {} {
|
||||
.buttons.advents configure -values [ concat ".. " [ exec ls -1 "GAMES/" ] ]
|
||||
}
|
||||
|
||||
proc ack_base {} {
|
||||
set scaler [ .banner.scaler get ]
|
||||
exec dosbox -scaler $scaler -conf dosbox.conf -noconsole -c "ack.bat -exit" &
|
||||
}
|
||||
|
||||
proc ackmod module {
|
||||
global mouse_var
|
||||
if { $module == "-r" } then {
|
||||
set scaler [ .banner.scaler get ]
|
||||
} else {
|
||||
set scaler "hq2x"
|
||||
}
|
||||
if { $mouse_var == 1 && $module == "-r" } then {
|
||||
set use_mouse "-mouse"
|
||||
} else {
|
||||
set use_mouse ""
|
||||
}
|
||||
set command [ concat "ackmod $module" [ \
|
||||
concat [ .buttons.advents get ] "$use_mouse" ] ]
|
||||
exec dosbox -scaler $scaler -conf dosbox.conf -noconsole -c $command &
|
||||
}
|
||||
|
||||
proc game_dir {} {
|
||||
if { [.buttons.advents get] != ".." } then {
|
||||
set game [ .buttons.advents get ]
|
||||
exec nautilus "GAMES/$game" &
|
||||
}
|
||||
}
|
||||
|
||||
proc game_manual {} { exec evince "MANUAL.PDF" & }
|
||||
|
||||
proc home_page {} { exec firefox "http://mozomedia.com/ack/" & }
|
||||
|
||||
proc disable_buttons {} {
|
||||
.buttons.b03 configure -state disabled
|
||||
.buttons.b04 configure -state disabled
|
||||
.buttons.b05 configure -state disabled
|
||||
.buttons.b06 configure -state disabled
|
||||
.buttons.b07 configure -state disabled
|
||||
.buttons.b08 configure -state disabled
|
||||
.buttons.b09 configure -state disabled
|
||||
.buttons.b10 configure -state disabled
|
||||
.buttons.b11 configure -state disabled
|
||||
.buttons.b12 configure -state disabled
|
||||
.bottom.b14 configure -state disabled
|
||||
}
|
||||
|
||||
proc enable_buttons {} {
|
||||
.buttons.b03 configure -state normal
|
||||
.buttons.b04 configure -state normal
|
||||
.buttons.b05 configure -state normal
|
||||
.buttons.b06 configure -state normal
|
||||
.buttons.b07 configure -state normal
|
||||
.buttons.b08 configure -state normal
|
||||
.buttons.b09 configure -state normal
|
||||
.buttons.b10 configure -state normal
|
||||
.buttons.b11 configure -state normal
|
||||
.buttons.b12 configure -state normal
|
||||
.bottom.b14 configure -state normal
|
||||
}
|
||||
|
||||
wm resizable . false false
|
||||
wm title . "ACK Launcher"
|
||||
disable_buttons
|
||||
set mouse_var 0
|
||||
cd "ACK"
|
196
dosbox.conf
Normal file
@@ -0,0 +1,196 @@
|
||||
# This is the configurationfile for DOSBox 0.72.
|
||||
# Lines starting with a # are commentlines.
|
||||
# They are used to (briefly) document the effect of each option.
|
||||
|
||||
[sdl]
|
||||
# fullscreen -- Start dosbox directly in fullscreen.
|
||||
# fulldouble -- Use double buffering in fullscreen.
|
||||
# fullresolution -- What resolution to use for fullscreen: original or fixed size (e.g. 1024x768).
|
||||
# windowresolution -- Scale the window to this size IF the output device supports hardware scaling.
|
||||
# output -- What to use for output: surface,overlay,opengl,openglnb,ddraw.
|
||||
# autolock -- Mouse will automatically lock, if you click on the screen.
|
||||
# sensitiviy -- Mouse sensitivity.
|
||||
# waitonerror -- Wait before closing the console if dosbox has an error.
|
||||
# priority -- Priority levels for dosbox: lowest,lower,normal,higher,highest,pause (when not focussed).
|
||||
# Second entry behind the comma is for when dosbox is not focused/minimized.
|
||||
# mapperfile -- File used to load/save the key/event mappings from.
|
||||
# usescancodes -- Avoid usage of symkeys, might not work on all operating systems.
|
||||
|
||||
fullscreen=false
|
||||
fulldouble=true
|
||||
fullresolution=original
|
||||
windowresolution=original
|
||||
output=surface
|
||||
autolock=true
|
||||
sensitivity=100
|
||||
waitonerror=true
|
||||
priority=higher,pause
|
||||
mapperfile=mapper.txt
|
||||
usescancodes=false
|
||||
|
||||
[dosbox]
|
||||
# language -- Select another language file.
|
||||
# memsize -- Amount of memory DOSBox has in megabytes.
|
||||
# machine -- The type of machine tries to emulate:hercules,cga,tandy,pcjr,vga.
|
||||
# captures -- Directory where things like wave,midi,screenshot get captured.
|
||||
|
||||
language=
|
||||
machine=vga
|
||||
captures=capture
|
||||
memsize=16
|
||||
|
||||
[render]
|
||||
# frameskip -- How many frames DOSBox skips before drawing one.
|
||||
# aspect -- Do aspect correction, if your output method doesn't support scaling this can slow things down!.
|
||||
# scaler -- Scaler used to enlarge/enhance low resolution modes.
|
||||
# Supported are none,normal2x,normal3x,advmame2x,advmame3x,hq2x,hq3x,
|
||||
# 2xsai,super2xsai,supereagle,advinterp2x,advinterp3x,
|
||||
# tv2x,tv3x,rgb2x,rgb3x,scan2x,scan3x.
|
||||
# If forced is appended (like scaler=hq2x forced), the scaler will be used
|
||||
# even if the result might not be desired.
|
||||
|
||||
frameskip=0
|
||||
aspect=true
|
||||
scaler=hq3x
|
||||
|
||||
[cpu]
|
||||
# core -- CPU Core used in emulation: normal,simple,dynamic,auto.
|
||||
# auto switches from normal to dynamic if appropriate.
|
||||
# cycles -- Amount of instructions DOSBox tries to emulate each millisecond.
|
||||
# Setting this value too high results in sound dropouts and lags.
|
||||
# You can also let DOSBox guess the correct value by setting it to max.
|
||||
# The default setting (auto) switches to max if appropriate.
|
||||
# cycleup -- Amount of cycles to increase/decrease with keycombo.
|
||||
# cycledown Setting it lower than 100 will be a percentage.
|
||||
|
||||
core=auto
|
||||
cycles=9000
|
||||
cycleup=500
|
||||
cycledown=20
|
||||
|
||||
[mixer]
|
||||
# nosound -- Enable silent mode, sound is still emulated though.
|
||||
# rate -- Mixer sample rate, setting any devices higher than this will
|
||||
# probably lower their sound quality.
|
||||
# blocksize -- Mixer block size, larger blocks might help sound stuttering
|
||||
# but sound will also be more lagged.
|
||||
# prebuffer -- How many milliseconds of data to keep on top of the blocksize.
|
||||
|
||||
nosound=false
|
||||
rate=22050
|
||||
blocksize=1024
|
||||
prebuffer=1000
|
||||
|
||||
[midi]
|
||||
# mpu401 -- Type of MPU-401 to emulate: none, uart or intelligent.
|
||||
# device -- Device that will receive the MIDI data from MPU-401.
|
||||
# This can be default,alsa,oss,win32,coreaudio,none.
|
||||
# config -- Special configuration options for the device. In Windows put
|
||||
# the id of the device you want to use. See README for details.
|
||||
|
||||
mpu401=intelligent
|
||||
device=default
|
||||
config=
|
||||
|
||||
[sblaster]
|
||||
# sbtype -- Type of sblaster to emulate:none,sb1,sb2,sbpro1,sbpro2,sb16.
|
||||
# sbbase,irq,dma,hdma -- The IO/IRQ/DMA/High DMA address of the soundblaster.
|
||||
# mixer -- Allow the soundblaster mixer to modify the DOSBox mixer.
|
||||
# oplmode -- Type of OPL emulation: auto,cms,opl2,dualopl2,opl3.
|
||||
# On auto the mode is determined by sblaster type.
|
||||
# All OPL modes are 'Adlib', except for CMS.
|
||||
# oplrate -- Sample rate of OPL music emulation.
|
||||
|
||||
sbtype=sbpro1
|
||||
sbbase=220
|
||||
irq=5
|
||||
dma=1
|
||||
|
||||
[gus]
|
||||
# gus -- Enable the Gravis Ultrasound emulation.
|
||||
# gusbase,irq1,irq2,dma1,dma2 -- The IO/IRQ/DMA addresses of the
|
||||
# Gravis Ultrasound. (Same IRQ's and DMA's are OK.)
|
||||
# gusrate -- Sample rate of Ultrasound emulation.
|
||||
# ultradir -- Path to Ultrasound directory. In this directory
|
||||
# there should be a MIDI directory that contains
|
||||
# the patch files for GUS playback. Patch sets used
|
||||
# with Timidity should work fine.
|
||||
|
||||
gus=true
|
||||
gusrate=22050
|
||||
gusbase=240
|
||||
irq1=5
|
||||
irq2=5
|
||||
dma1=3
|
||||
dma2=3
|
||||
ultradir=C:\ULTRASND
|
||||
|
||||
[speaker]
|
||||
# pcspeaker -- Enable PC-Speaker emulation.
|
||||
# pcrate -- Sample rate of the PC-Speaker sound generation.
|
||||
# tandy -- Enable Tandy Sound System emulation (off,on,auto).
|
||||
# For auto Tandysound emulation is present only if machine is set to tandy.
|
||||
# tandyrate -- Sample rate of the Tandy 3-Voice generation.
|
||||
# disney -- Enable Disney Sound Source emulation. Covox Voice Master and Speech Thing compatible.
|
||||
|
||||
pcspeaker=true
|
||||
pcrate=22050
|
||||
tandy=auto
|
||||
tandyrate=22050
|
||||
disney=true
|
||||
|
||||
[joystick]
|
||||
# joysticktype -- Type of joystick to emulate: auto (default), none,
|
||||
# 2axis (supports two joysticks,
|
||||
# 4axis (supports one joystick, first joystick used),
|
||||
# 4axis_2 (supports one joystick, second joystick used),
|
||||
# fcs (Thrustmaster), ch (CH Flightstick).
|
||||
# none disables joystick emulation.
|
||||
# auto chooses emulation depending on real joystick(s).
|
||||
# timed -- enable timed intervals for axis. (false is old style behaviour).
|
||||
# autofire -- continuously fires as long as you keep the button pressed.
|
||||
# swap34 -- swap the 3rd and the 4th axis. can be useful for certain joysticks.
|
||||
# buttonwrap -- enable button wrapping at the number of emulated buttons.
|
||||
|
||||
joysticktype=auto
|
||||
timed=true
|
||||
autofire=false
|
||||
swap34=false
|
||||
buttonwrap=true
|
||||
|
||||
[serial]
|
||||
# serial1-4 -- set type of device connected to com port.
|
||||
# Can be disabled, dummy, modem, nullmodem, directserial.
|
||||
# Additional parameters must be in the same line in the form of
|
||||
# parameter:value. Parameter for all types is irq.
|
||||
# for directserial: realport (required), rxdelay (optional).
|
||||
# for modem: listenport (optional).
|
||||
# for nullmodem: server, rxdelay, txdelay, telnet, usedtr,
|
||||
# transparent, port, inhsocket (all optional).
|
||||
# Example: serial1=modem listenport:5000
|
||||
|
||||
serial1=dummy
|
||||
serial2=dummy
|
||||
serial3=disabled
|
||||
serial4=disabled
|
||||
|
||||
[dos]
|
||||
# xms -- Enable XMS support.
|
||||
# ems -- Enable EMS support.
|
||||
# umb -- Enable UMB support.
|
||||
# keyboardlayout -- Language code of the keyboard layout (or none).
|
||||
|
||||
xms=true
|
||||
ems=true
|
||||
umb=true
|
||||
keyboardlayout=none
|
||||
|
||||
[ipx]
|
||||
# ipx -- Enable ipx over UDP/IP emulation.
|
||||
|
||||
ipx=false
|
||||
|
||||
[autoexec]
|
||||
# Lines in this section will be run at startup.
|
||||
mount c ./
|
||||
c:
|
BIN
launcher_icons/banner1.gif
Normal file
After Width: | Height: | Size: 6.2 KiB |
BIN
launcher_icons/banner2.gif
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
launcher_icons/configure.gif
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
launcher_icons/create.gif
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
launcher_icons/font.gif
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
launcher_icons/import.gif
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
launcher_icons/macros.gif
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
launcher_icons/map.gif
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
launcher_icons/messages.gif
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
launcher_icons/object.gif
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
launcher_icons/people.gif
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
launcher_icons/run.gif
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
launcher_icons/tile.gif
Normal file
After Width: | Height: | Size: 1.6 KiB |