diff options
author | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2017-03-15 02:12:12 +0300 |
---|---|---|
committer | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2017-03-15 02:12:12 +0300 |
commit | 01e4785587400ebfe86bcc8f52bd8aa22592e5c5 (patch) | |
tree | 6f9cf4b85a6c72ce37b08cfa9be1b6701cfd016c /clovercon | |
parent | b2d6cff7ced8cbf1d284b213652bf0c8c2ad88f5 (diff) |
Turbo X/Y
Diffstat (limited to 'clovercon')
-rw-r--r-- | clovercon/Makefile | 14 | ||||
-rw-r--r-- | clovercon/clovercon.c | 25 | ||||
-rw-r--r-- | clovercon/mod/etc/preinit.d/pc000_clovercon | 29 | ||||
-rw-r--r-- | clovercon/mod/install | 6 | ||||
-rw-r--r-- | clovercon/mod/readme.txt | 7 |
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)
|