Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/hakchi2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2017-03-15 02:12:12 +0300
committerAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2017-03-15 02:12:12 +0300
commit01e4785587400ebfe86bcc8f52bd8aa22592e5c5 (patch)
tree6f9cf4b85a6c72ce37b08cfa9be1b6701cfd016c /clovercon
parentb2d6cff7ced8cbf1d284b213652bf0c8c2ad88f5 (diff)
Turbo X/Y
Diffstat (limited to 'clovercon')
-rw-r--r--clovercon/Makefile14
-rw-r--r--clovercon/clovercon.c25
-rw-r--r--clovercon/mod/etc/preinit.d/pc000_clovercon29
-rw-r--r--clovercon/mod/install6
-rw-r--r--clovercon/mod/readme.txt7
5 files changed, 71 insertions, 10 deletions
diff --git a/clovercon/Makefile b/clovercon/Makefile
index ad69f539..5f584955 100644
--- a/clovercon/Makefile
+++ b/clovercon/Makefile
@@ -1,26 +1,28 @@
CURRENT = $(shell uname -r)
+HMOD = ../mods/hmods/clovercon.hmod
+TARGET = clovercon
+TARGET_PATH = mod/lib/modules/3.4.112/extra
TARGET = clovercon
OBJS = clovercon.o
-KDIR = linux-nesmini
-#KDIR = ~/linux
+KDIR = ~/nesmini-linux
PWD = $(shell pwd)
DEST = .
obj-m := $(TARGET).o
-default:
+all:
make -C $(KDIR) SUBDIRS=$(PWD) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
modinfo $(TARGET).ko
arm-linux-gnueabihf-strip --strip-unneeded $(TARGET).ko
+ cp -f $(TARGET).ko $(TARGET_PATH)/$(TARGET).ko
+ cd mod && tar -czvf ../$(HMOD) *
$(TARGET).o: $(OBJS)
$(LD) $(LD_RFLAG) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -r -o $@ $(OBJS)
-install:
- su -c "cp -v $(TARGET).ko $(DEST) && /sbin/depmod -a"
-
clean:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean
+ rm -f $(TARGET_PATH)/$(TARGET).ko $(HMOD)
.PHONY: modules clean
diff --git a/clovercon/clovercon.c b/clovercon/clovercon.c
index bebd2fb5..e0625f8c 100644
--- a/clovercon/clovercon.c
+++ b/clovercon/clovercon.c
@@ -41,7 +41,7 @@ static char autofire_xy = 0;
static unsigned char autofire_interval = 8;
static char fc_start = 0;
-MODULE_AUTHOR("Christophe Aguettaz <christophe.aguettaz@nerd.nintendo.com>");
+MODULE_AUTHOR("Christophe Aguettaz <christophe.aguettaz@nerd.nintendo.com>, mod by Cluster <clusterrr@clusterrr.com");
MODULE_DESCRIPTION("Nintendo Clover/Wii Classic/Wii Pro controllers on I2C");
MODULE_LICENSE("GPL");
@@ -173,8 +173,12 @@ struct clovercon_info {
int autofire_timer;
int autofire_counter_a;
int autofire_counter_b;
+ int autofire_counter_x;
+ int autofire_counter_y;
bool autofire_a;
bool autofire_b;
+ bool autofire_x;
+ bool autofire_y;
int start_counter;
};
@@ -487,23 +491,36 @@ static void clovercon_poll(struct input_polled_dev *polled_dev) {
turbo = info->autofire_timer / autofire_interval;
if (autofire)
{
- if (a && select && !b && !start && !up && !down && !left && !right)
+ if (select && a && !b && !x && !y && !start && !up && !down && !left && !right)
info->autofire_counter_a++;
else
info->autofire_counter_a = 0;
- if (!a && select && b && !start && !up && !down && !left && !right)
+ if (select && !a && b && !x && !y && !start && !up && !down && !left && !right)
info->autofire_counter_b++;
else
info->autofire_counter_b = 0;
+ if (select && !a && !b && x && !y && !start && !up && !down && !left && !right)
+ info->autofire_counter_x++;
+ else
+ info->autofire_counter_x = 0;
+ if (select && !a && !b && !x && y && !start && !up && !down && !left && !right)
+ info->autofire_counter_y++;
+ else
+ info->autofire_counter_y = 0;
if (info->autofire_counter_a == AUTOFIRE_COMBINATION_THRESHOLD)
info->autofire_a = !info->autofire_a;
if (info->autofire_counter_b == AUTOFIRE_COMBINATION_THRESHOLD)
info->autofire_b = !info->autofire_b;
+ if (info->autofire_counter_a == AUTOFIRE_COMBINATION_THRESHOLD)
+ info->autofire_x = !info->autofire_x;
+ if (info->autofire_counter_b == AUTOFIRE_COMBINATION_THRESHOLD)
+ info->autofire_y = !info->autofire_y;
if (info->autofire_a && !turbo) a = 0;
if (info->autofire_b && !turbo) b = 0;
-
+ if (info->autofire_x && !turbo) x = 0;
+ if (info->autofire_y && !turbo) y = 0;
}
if (autofire_xy)
{
diff --git a/clovercon/mod/etc/preinit.d/pc000_clovercon b/clovercon/mod/etc/preinit.d/pc000_clovercon
new file mode 100644
index 00000000..e5efc915
--- /dev/null
+++ b/clovercon/mod/etc/preinit.d/pc000_clovercon
@@ -0,0 +1,29 @@
+if [ $cfg_clovercon_enabled == "y" ]; then
+CLOVER_BOARD_NAME=$(cat $mountpoint/etc/clover/boardtype)
+
+echo "clovercon_hack: starting driver"
+echo "home button combination: $cfg_clovercon_home_combination"
+echo "autofire: $cfg_clovercon_autofire"
+echo "autofire XY: $cfg_clovercon_autofire_xy"
+echo "autofire interval: $cfg_clovercon_autofire_interval"
+echo "famicom 2nd start workaround: $cfg_clovercon_fc_start"
+
+case "${CLOVER_BOARD_NAME}" in
+ fp)
+ module_params=2,195,1,194
+ ;;
+ ep)
+ module_params=1,195,2,194
+ ;;
+ dp-hvc)
+ module_params=1,-1,2,-1
+ ;;
+ dp-nes)
+ module_params=1,195,2,194
+ ;;
+esac
+
+overmount /lib/modules/$(uname -r)/extra/clovercon.ko
+insmod $mountpoint/lib/modules/$(uname -r)/extra/clovercon.ko module_params=$module_params home_combination=$cfg_clovercon_home_combination autofire=$cfg_clovercon_autofire autofire_xy=$cfg_clovercon_autofire_xy autofire_interval=$cfg_clovercon_autofire_interval fc_start=$cfg_clovercon_fc_start
+
+fi
diff --git a/clovercon/mod/install b/clovercon/mod/install
new file mode 100644
index 00000000..5d9bf850
--- /dev/null
+++ b/clovercon/mod/install
@@ -0,0 +1,6 @@
+cfg_clovercon_enabled='y'
+cfg_clovercon_home_combination='0x24'
+cfg_clovercon_autofire='1'
+cfg_clovercon_autofire_xy='0'
+cfg_clovercon_autofire_interval='8'
+cfg_clovercon_fc_start='0'
diff --git a/clovercon/mod/readme.txt b/clovercon/mod/readme.txt
new file mode 100644
index 00000000..ce810620
--- /dev/null
+++ b/clovercon/mod/readme.txt
@@ -0,0 +1,7 @@
+=== Clovercon Hack ===
+
+This module installs custom clovercon gamepad driver.
+Features:
+* It allowes to use button combination to open menu
+* Autofire
+* Start button simulation on second controller (for Famicom Mini)