From 79592514ba8f826a807da064d0c52e50d7c80370 Mon Sep 17 00:00:00 2001 From: kyoubate-haruka <46010460+kyoubate-haruka@users.noreply.github.com> Date: Fri, 20 Sep 2024 11:14:41 +0200 Subject: [PATCH] fgo: fix printer --- fgohook/dllmain.c | 3 +++ fgohook/fgohook.def | 2 +- hooklib/printer.c | 28 ++++++++++++++++++++-------- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/fgohook/dllmain.c b/fgohook/dllmain.c index dfbbdb5..1604a8d 100644 --- a/fgohook/dllmain.c +++ b/fgohook/dllmain.c @@ -26,6 +26,7 @@ #include "hook/process.h" +#include "hooklib/dll.h" #include "hooklib/dvd.h" #include "hooklib/touch.h" #include "hooklib/printer.h" @@ -65,6 +66,8 @@ static DWORD CALLBACK fgo_pre_startup(void) /* Hook external DLL APIs */ printer_hook_init(&fgo_hook_cfg.printer, 4, fgo_hook_mod); + dll_hook_push(fgo_hook_mod, L"C330Ausb.dll"); + dll_hook_push(fgo_hook_mod, L"C330AFWDLusb.dll"); /* Initialize emulation hooks */ diff --git a/fgohook/fgohook.def b/fgohook/fgohook.def index 4f769fe..3e77ccc 100644 --- a/fgohook/fgohook.def +++ b/fgohook/fgohook.def @@ -44,7 +44,7 @@ EXPORTS chcusb_selectPrinter chcusb_selectPrinterSN chcusb_getPrinterInfo - chcusb_imageformat + chcusb_imageformat=chcusb_imageformat_330 chcusb_setmtf chcusb_makeGamma chcusb_setIcctable diff --git a/hooklib/printer.c b/hooklib/printer.c index 121ee3d..010e75a 100644 --- a/hooklib/printer.c +++ b/hooklib/printer.c @@ -89,13 +89,14 @@ int WINAPI chcusb_listupPrinterSN(uint64_t *rSerialArray); int WINAPI chcusb_selectPrinter(uint8_t printerId, uint16_t *rResult); int WINAPI chcusb_selectPrinterSN(uint64_t printerSN, uint16_t *rResult); int WINAPI chcusb_getPrinterInfo(uint16_t tagNumber, uint8_t *rBuffer, uint32_t *rLen); -int WINAPI chcusb_imageformat( - uint16_t format, - uint16_t ncomp, - uint16_t depth, - uint16_t width, - uint16_t height, - uint16_t *rResult); +int WINAPI chcusb_imageformat(uint16_t format, uint16_t ncomp, uint16_t depth, uint16_t width, uint16_t height, uint8_t * image, uint16_t* rResult); +int WINAPI chcusb_imageformat_330( + uint16_t format, + uint16_t ncomp, + uint16_t depth, + uint16_t width, + uint16_t height, + uint16_t *rResult); int __thiscall chcusb_setmtf(int32_t *mtf); int WINAPI chcusb_makeGamma(uint16_t k, uint8_t *intoneR, uint8_t *intoneG, uint8_t *intoneB); int WINAPI chcusb_setIcctable( @@ -2302,6 +2303,17 @@ int WINAPI chcusb_getPrinterInfo(uint16_t tagNumber, uint8_t *rBuffer, uint32_t } int WINAPI chcusb_imageformat( + uint16_t format, + uint16_t ncomp, + uint16_t depth, + uint16_t width, + uint16_t height, + uint8_t *image, + uint16_t *rResult) { + return chcusb_imageformat_330(format, ncomp, depth, width, height, rResult); +} + +int WINAPI chcusb_imageformat_330( uint16_t format, uint16_t ncomp, uint16_t depth, @@ -2994,7 +3006,7 @@ int CHCUSB_getPrinterToneCurve(const void *handle, uint16_t type, uint16_t numbe int CHCUSB_imageformat(const void *handle, uint16_t format, uint16_t ncomp, uint16_t depth, uint16_t width, uint16_t height, uint8_t *inputImage, uint16_t *rResult) { - return chcusb_imageformat(format, ncomp, depth, width, height, rResult); + return chcusb_imageformat(format, ncomp, depth, width, height, inputImage, rResult); } int CHCUSB_init(LPCSTR dllpath)