├── nuvee_ps1_pad - guncon1, mouse ├── ___README.txt ├── ps1_lightgun_list.txt ├── ps1_mouse_list.txt └── src │ ├── WINRES.H │ ├── ___jstookey-arcade-rawinput │ ├── HelloRawInput.c │ ├── ShowMultipleMiceValues.c │ ├── raw_mouse.c │ ├── raw_mouse.h │ └── raw_mouse_test.c │ ├── ___padspecs.txt │ ├── afxres.h │ ├── config-guncon.cpp │ ├── config-justifier.cpp │ ├── config-mouse.cpp │ ├── config.cpp │ ├── dialog.aps │ ├── dialog.rc │ ├── dinput.cpp │ ├── exports.def │ ├── globals.h │ ├── guncon.cpp │ ├── justifier.cpp │ ├── main.cpp │ ├── mouse.cpp │ ├── multitap.cpp │ ├── nuvee_ps2_pad.bat │ ├── nuvee_psx_controller_plugin.dsp │ ├── nuvee_psx_controller_plugin.dsw │ ├── nuvee_psx_controller_plugin.sln │ ├── nuvee_psx_controller_plugin.suo │ ├── nuvee_psx_controller_plugin.vcproj │ ├── raw_mouse.cpp │ ├── raw_mouse.h │ ├── rawinput.cpp │ └── resource.h ├── nuvee_ps2_pad - guncon1 ├── ___README.txt └── ps2_lightgun_list.txt ├── nuvee_ps2_usb - guncon2, keyboard, mouse ├── ___README.txt ├── ps2_keyboard_list.txt ├── ps2_lightgun_list.txt ├── ps2_mouse_list.txt └── src │ ├── USB.cpp │ ├── USB.h │ ├── USB_device.cpp │ ├── USB_device.h │ ├── WINRES.H │ ├── afxres.h │ ├── config-guncon2.cpp │ ├── config-mouse.cpp │ ├── config.cpp │ ├── dialog.aps │ ├── dialog.rc │ ├── dinput.cpp │ ├── exports.def │ ├── globals.h │ ├── guncon2.cpp │ ├── keyboard.cpp │ ├── main.cpp │ ├── mouse.cpp │ ├── nuvee_ps2_usb.dsp │ ├── nuvee_ps2_usb.dsw │ ├── nuvee_ps2_usb.sln │ ├── nuvee_ps2_usb.vcproj │ ├── raw_mouse.cpp │ ├── raw_mouse.h │ ├── rawinput.cpp │ └── resource.h ├── ps1 - gun flash removal ├── notes │ ├── crypt killer - gun flash.txt │ ├── elemental gearbolt - gun flash.txt │ ├── lethal enforcers - gun flash.txt │ ├── maximum force - gun flash.txt │ ├── moorhuhn 2 - gun cursor.txt │ ├── moorhuhn 3 - gun cursor.txt │ ├── moorhuhn x - gun cursor.txt │ ├── point blank 1 - gun flash.txt │ ├── point blank 2 - gun flash.txt │ ├── point blank 3 - gun flash.txt │ ├── project horned owl - gun flash.txt │ ├── rescue shot - gun flash.txt │ ├── rescue shot - mouse wheel.txt │ ├── resident evil survivor - gun flash.txt │ ├── simple 1500 - gun shooting 1.txt │ ├── time crisis 1 - gun flash.txt │ └── time crisis project titan - gun flash.txt └── pec_hacks.txt └── ps1 - guncon conversions ├── Crypt Killer ├── readme.txt └── src │ ├── code │ ├── europe │ │ ├── asm - lethal enforcers.bat │ │ ├── pad-guncon-1.txt │ │ └── pad-guncon-2.txt │ └── usa │ │ ├── asm - crypt killer.bat │ │ └── pad-guncon-1.txt │ ├── notes │ ├── crypt killer - guncon game.txt │ └── crypt killer - guncon menus.txt │ ├── patcher │ ├── europe │ │ ├── cd2dvd.bat │ │ └── patch │ │ │ ├── ___.PAD │ │ │ └── ___patch.txt │ └── usa │ │ ├── cd2dvd.bat │ │ └── patch │ │ ├── ___.PAD │ │ └── ___patch.txt │ └── src │ └── cd2dvd_patcher │ ├── cd2dvd_patcher.dsp │ ├── cd2dvd_patcher.dsw │ └── patcher.cpp ├── Die Hard Trilogy ├── readme.txt └── src │ ├── code │ ├── europe │ │ ├── pad-guncon-1.txt │ │ └── pad-guncon-2.txt │ └── usa - gh │ │ ├── asm - die hard trilogy.bat │ │ ├── pad-guncon-1.txt │ │ └── pad-guncon-2.txt │ ├── notes │ ├── die hard trilogy - europe - guncon.txt │ └── die hard trilogy - usa gh - guncon.txt │ ├── patcher │ ├── europe │ │ ├── cd2dvd.bat │ │ └── patch │ │ │ ├── ___.PAD │ │ │ ├── ___patch_dh2.txt │ │ │ └── ___patch_loader.txt │ └── usa - gh │ │ ├── cd2dvd.bat │ │ └── patch │ │ ├── ___.PAD │ │ ├── ___patch_dh2.txt │ │ └── ___patch_loader.txt │ └── src │ └── cd2dvd_patcher │ ├── cd2dvd_patcher.dsp │ ├── cd2dvd_patcher.dsw │ └── patcher.cpp ├── Lethal Enforcers ├── readme.txt └── src │ ├── code │ ├── europe │ │ ├── asm - lethal enforcers.bat │ │ ├── pad-guncon-1.txt │ │ └── pad-guncon-2.txt │ └── usa │ │ ├── asm - lethal enforcers.bat │ │ ├── pad-guncon-1.txt │ │ └── pad-guncon-2.txt │ ├── notes │ ├── lethal enforcers - guncon - europe.txt │ └── lethal enforcers - guncon - usa.txt │ ├── patcher │ ├── europe │ │ ├── cd2dvd.bat │ │ └── patch │ │ │ ├── ___.PAD │ │ │ └── ___patch.txt │ └── usa │ │ ├── cd2dvd.bat │ │ └── patch │ │ ├── ___.PAD │ │ └── ___patch.txt │ └── src │ └── cd2dvd_patcher │ ├── cd2dvd_patcher.dsp │ ├── cd2dvd_patcher.dsw │ └── patcher.cpp ├── Policenauts ├── readme.txt └── src │ ├── code │ └── japan │ │ ├── asm - policenauts.bat │ │ ├── pad-guncon-1.txt │ │ ├── pad-guncon-1a.txt │ │ ├── pad-guncon-1b.txt │ │ ├── pad-guncon-1c.txt │ │ ├── pad-guncon-2.txt │ │ ├── pad-guncon-2a.txt │ │ ├── pad-guncon-2b.txt │ │ ├── pad-guncon-2c.txt │ │ ├── pad-guncon-2d.txt │ │ ├── pad-guncon-2e.txt │ │ ├── pad-guncon-2f.txt │ │ └── pad-guncon-2g.txt │ ├── notes │ ├── policenauts - guncon - type1.txt │ ├── policenauts - guncon - type1a.txt │ ├── policenauts - guncon - type2.txt │ ├── policenauts - guncon - type2a.txt │ ├── policenauts - guncon - type2b.txt │ ├── policenauts - guncon - type2c.txt │ ├── policenauts - guncon - type2d.txt │ └── policenauts - guncon - type2e.txt │ ├── patcher │ └── japan │ │ ├── cd2dvd.bat │ │ └── patch │ │ ├── ___.PAD │ │ ├── ___patch_bin1.txt │ │ ├── ___patch_bin1a.txt │ │ ├── ___patch_bin2.txt │ │ ├── ___patch_bin2a.txt │ │ ├── ___patch_bin2b.txt │ │ ├── ___patch_bin2c.txt │ │ ├── ___patch_bin2d.txt │ │ ├── ___patch_bin2e.txt │ │ ├── ___patch_bin2f.txt │ │ └── ___patch_slps.txt │ └── src │ └── cd2dvd_patcher │ ├── cd2dvd_patcher.dsp │ ├── cd2dvd_patcher.dsw │ └── patcher.cpp ├── Project Horned Owl ├── readme.txt └── src │ ├── code │ ├── japan │ │ ├── boot-1.txt │ │ └── pad-guncon-1.txt │ └── usa │ │ ├── asm - horned owl.bat │ │ ├── boot-1.txt │ │ └── pad-guncon-1.txt │ ├── notes │ ├── project_horned_owl - boot.txt │ ├── project_horned_owl - guncon.txt │ ├── project_horned_owl - japan - boot.txt │ └── project_horned_owl - japan - guncon.txt │ ├── patcher │ ├── japan │ │ ├── cd2dvd.bat │ │ └── patch │ │ │ ├── ___.PAD │ │ │ └── ___patch.txt │ └── usa │ │ ├── cd2dvd.bat │ │ └── patch │ │ ├── ___.PAD │ │ └── ___patch.txt │ └── src │ └── cd2dvd_patcher │ ├── cd2dvd_patcher.dsp │ ├── cd2dvd_patcher.dsw │ └── patcher.cpp └── Rebel Assault 2 ├── readme.txt └── src ├── code └── usa │ ├── asm - rebel2.bat │ └── pad-guncon-1.txt ├── notes └── rebel assault 2 - guncon.txt ├── patcher └── usa │ ├── cd2dvd.bat │ └── patch │ ├── ___.PAD │ └── ___patch.txt └── src └── cd2dvd_patcher ├── cd2dvd_patcher.dsp ├── cd2dvd_patcher.dsw └── patcher.cpp /nuvee_ps1_pad - guncon1, mouse/___README.txt: -------------------------------------------------------------------------------- 1 | A win32 ps1 / ps2 controller plugin that provides basic emulation 2 | - Dual PSX Mouse (PS1) 3 | - Dual PSX Guncon (PS1) 4 | 5 | - Dual PSX G-Con 45 (PS2) 6 | 7 | 8 | 9 | Devices: 10 | - Dual mice (USB + Serial) 11 | - Dual PC lightgun 12 | 13 | 14 | 15 | 16 | For use with win32 emulators like 17 | - PCSX-reloaded (cmdline = lightgun build only) 18 | 19 | - PCSX-reloaded (any) 20 | - PCSX2 (any) 21 | 22 | 23 | 24 | 25 | News: 26 | - 10-21-11 Fix more stuff (USB mouse poll rate, USB keyboard poll, misc emulation) 27 | - 10-21-11 Fix lots of stuff (alt-tab focus, snap cursor, PC lightgun + mouse, other regressions) 28 | - 10-21-11 Support joystick devices (PPJoy or else) 29 | - 08-09-11 Changed lightgun ps2 custom profile to make Endgame (U) work 30 | - 08-09-11 Added Vampire Night (E), Time Crisis 3/Zone (E) 31 | - 08-07-11 Added several PS2 profiles 32 | - 08-07-11 Added PS2 G-Con 45 support (PCSX2) 33 | - 08-07-11 Made nuvee emu-independent (RawInput changes) 34 | - 08-07-11 Added Moorhuhn 2/3 profiles, fixed Moorhuhn X profile (delete old profiles.ini) 35 | - 07-24-11 Release 1 36 | - 07-24-11 Rewrote Guncon engine, game presets, default file, lots of fixes (huge thanks killervin, paubi) 37 | - 07-05-11 Lots of fixes to PC lightgun support (thanks killervin, paubi) 38 | - 07-01-11 True dual mouse support, fix lightgun trigger holding bug 39 | - 06-30-11 RawInput API by Jake Stookey, True dual lightgun support (custom pcsx-r emu only), GUI sensitivity 40 | - 06-29-11 Guncon - hide cursor, allow 0.000001 sensitivity (edit via ini) 41 | - 05-28-11 Guncon calibration / offscreen shots 42 | - 05-26-11 Add basic guncon support 43 | - 05-25-11 Add basic mouse 43,45,46,47,4c / fix 2x mouse errors / fix mouse1 unplugged error 44 | - 05-25-11 Mouse support (directinput) 45 | 46 | 47 | 48 | 49 | INSTRUCTIONS: 50 | 1- Copy dll to your emu's 'plugins' folder 51 | 2- Set plugin to nuvee 52 | 3- Set nuvee device and configure 53 | 4- Hit acquire. choose game profile 54 | 5- Play game 55 | 56 | 57 | 58 | 59 | NOTES: 60 | 61 | (1) 62 | You can exit the emu, change the profiles settings and continue your game 63 | (tweak aiming values on-the-fly) 64 | 65 | 66 | (2) 67 | Lightguns work best at 640x480 but higher resolutions like 1366x768 work well also 68 | 69 | 70 | (3) 71 | Command-line options available 72 | 73 | ex. 74 | pcsxr-lightgun -controller_plugin1 PadSSSPSX.dll -controller_plugin2 nuvee_psx_controller.dll -nuvee_port2 guncon -nuvee_guncon2_model custom -nuvee_guncon2_profile ghostbusters 75 | 76 | 77 | 78 | 79 | TODO? 80 | - (?) Add justifier support 81 | - (?) Add multitap support 82 | -------------------------------------------------------------------------------- /nuvee_ps1_pad - guncon1, mouse/ps1_lightgun_list.txt: -------------------------------------------------------------------------------- 1 | Main author: paubi 2 | 3 | 4 | Guncon model 5 | - H = homebrew (preferred option) 6 | - C = custom 7 | - U = unlicensed 8 | 9 | ----------GUNCON 10 | ---NAME-------------------- PLAYERS-------TYPE------GUNCON MODEL---AIMING STATUS-----COMENTS 11 | Die Hard 2 --------1(Plugged in port2)----rails---------H-------------OK 12 | Elemental Gearbolt ------------2----------rails---------H-------------OK 13 | Extreme Ghostbusters ----------2----------rails---------H-------------OK--------(START=A+B) 14 | Game Paradise 2 ---1(Plugged in port2)---protect?-------U-------------OK--------Calibrate at pig's nose for perfect 15 | Ghoul Panic -------------------2---------gallery--------H-------------OK 16 | Gunfighter --------------------1----------rails---------H-------------OK 17 | Judge Dredd -------------------2----------rails---------H-------------OK--------Must use gpuBladeSoft for calibration, random PCSX-r freeze buggy 18 | Maximum Force -----------------2----------rails---------H-------------OK 19 | Mighty Hits -------------------2---------gallery--------U-------------OK 20 | Moorhuhn 2 --------------------2---------hunting--------H-------------OK 21 | Moorhuhn 3 --------------------2---------hunting--------H-------------OK 22 | Moorhuhn X --------------------2---------hunting--------H-------------OK 23 | Point Blank 1 -----------------2---------gallery--------H-------------OK 24 | Point Blank 2 -----------------2---------gallery--------H-------------OK 25 | Point Blank 3 -----------------2---------gallery--------H-------------OK 26 | RE Survivor -------------------1-------1st person-------H-------------OK--------Recalibrate gun again in-game 27 | Rescue Shot -------------------2---------protect--------H-------------OK 28 | Simple 1500 gunshooting 1 -----2---------gallery--------H-------------OK 29 | Simple 1500 gunshooting 2 -----2---------gallery--------H-------------OK 30 | Time Crisis -------------------1----------rails---------H-------------OK 31 | Time Crisis Project Titan -----1----------rails---------H-------------OK 32 | 33 | --DONT TESTED 34 | Guntu Western Front June ------1?---------rails-------------? 35 | Serofans ----------------------1?--------gallery------------? 36 | 37 | 38 | 39 | ----------JUSTIFIER 40 | Area 51 -----------------------2-----------rails 41 | Crypt Killer ------------------2-----------rails----------- aka Henry Explorers 42 | Die Hard 1 --------------------1-----------rails----------- hold trigger + aux to fire rockets 43 | Die Hard 2 -------1(Plugged in port2)------rails 44 | Elemental Gearbolt ------------2-----------rails 45 | Judge Dredd -------------------2-----------rails 46 | Lethal Enforcers --------------2-----------rails 47 | Maximum Force -----------------2-----------rails 48 | Project Horned Owl ------------2-----------rails 49 | Rebel Assault 2 --1(Plugged in port2)------rails-----------gun stages only 50 | 51 | -------------------------------------------------------------------------------- /nuvee_ps1_pad - guncon1, mouse/ps1_mouse_list.txt: -------------------------------------------------------------------------------- 1 | (tested) 2 | Area 51 ------------------------------ 2 mice 3 | Die Hard Trilogy --------------------- 1 mice -------------- menus = plug d-pad into port 2 4 | Die Hard Trilogy 2 ------------------- 1 mice -------------- port 2 5 | Elemental Gearbolt ------------------- 2 mice 6 | Lemmings ----------------------------- 1 mice 7 | Music 2000 --------------------------- 1 mice 8 | Policenauts -------------------------- 1 mice 9 | Project Horned Owl ------------------- 2 mice 10 | Quake II ----------------------------- 1 mice -------------- port 2 11 | X-COM: Enemy Unknown ----------------- 1 mice 12 | X-COM: Terror from Deep -------------- 1 mice 13 | 14 | 15 | 16 | (untested) 17 | 3D Lemmings 18 | Alien Resurrection 19 | Atari Anniversary Edition 20 | Atlantis: Lost Tales 21 | Broken Sword 1 & 2 22 | Clock Tower 1 & 2 23 | Command and Conquer: Red Alert 24 | Constructor 25 | Discworld 1-3 26 | Dune 2000 27 | Final Doom 28 | Galaxian 3 29 | Ghoul Panic 30 | Klaymen 31 | Monopoly 32 | Puchi Carat 33 | Railroad Tycoon II 34 | Rescue Shot 35 | Risk 36 | Riven: Sequel to Myst 37 | RPG Maker 38 | Sakura Taisen 1 & 2 39 | Sentinel Returns 40 | SimCity 2000 41 | Syndicate Wars 42 | Warhammer: Dark Omen 43 | Warzone 2100 44 | Z 45 | Wild Arms (options palette?) 46 | ??? 47 | -------------------------------------------------------------------------------- /nuvee_ps1_pad - guncon1, mouse/src/WINRES.H: -------------------------------------------------------------------------------- 1 | // This is a part of the Microsoft Foundation Classes C++ library. 2 | // Copyright (C) 1992-1998 Microsoft Corporation 3 | // All rights reserved. 4 | // 5 | // This source code is only intended as a supplement to the 6 | // Microsoft Foundation Classes Reference and related 7 | // electronic documentation provided with the library. 8 | // See these sources for detailed information regarding the 9 | // Microsoft Foundation Classes product. 10 | 11 | // winres.h - Windows resource definitions 12 | // extracted from WINUSER.H and COMMCTRL.H 13 | 14 | #ifdef _AFX_MINREBUILD 15 | #pragma component(minrebuild, off) 16 | #endif 17 | 18 | #define VS_VERSION_INFO 1 19 | 20 | #ifdef APSTUDIO_INVOKED 21 | #define APSTUDIO_HIDDEN_SYMBOLS // Ignore following symbols 22 | #endif 23 | 24 | #ifndef WINVER 25 | #define WINVER 0x0400 // default to Windows Version 4.0 26 | #endif 27 | 28 | #include 29 | 30 | // operation messages sent to DLGINIT 31 | #define LB_ADDSTRING (WM_USER+1) 32 | #define CB_ADDSTRING (WM_USER+3) 33 | 34 | #ifdef APSTUDIO_INVOKED 35 | #undef APSTUDIO_HIDDEN_SYMBOLS 36 | #endif 37 | 38 | #ifdef IDC_STATIC 39 | #undef IDC_STATIC 40 | #endif 41 | #define IDC_STATIC (-1) 42 | 43 | #ifdef _AFX_MINREBUILD 44 | #pragma component(minrebuild, on) 45 | #endif 46 | -------------------------------------------------------------------------------- /nuvee_ps1_pad - guncon1, mouse/src/___jstookey-arcade-rawinput/HelloRawInput.c: -------------------------------------------------------------------------------- 1 | /********************************************************************************************** 2 | testmouse.c: A demonstration of how to use Rawinput to access multiple mice in Windows XP. 3 | 4 | ------------------ COMPILING WITH GCC ------------------------------ 5 | 6 | This program was compiled using MinGW/GCC 7 | 8 | In order to recreate the compile environment: 9 | 10 | 1) Install the "Win32 compile utilities" (MinGW/GCC) for Mame from http://www.mame.net/downmain.html 11 | 2) From the command line, run "gcc HelloRawInput.c" 12 | 13 | ------------------- COMPILING WITH MS VISUAL C++ -------------------- 14 | 15 | This example can also be compiled with Microsoft Visual C++ version 6, but first you need to download 16 | and install the Microsoft Platform SDK. In order to access the Microsoft Platform SDK from VStudio, 17 | I had to go to tools->options->directories and add the SDK's bin, include, lib, and src folders. 18 | In the same window, I had drag each of the SDK's folders to the top of the respective list 19 | to give those folders priority over the others. 20 | 21 | To create your project for Visual Studio (after you prepare VStudio to work with the MS 22 | Platform SDK), do the following: 23 | 24 | 1) Open Visual C++ and start a new Win32 Application as a "blank project" 25 | (This is necessary because if you simply open the .c file in VStudio 26 | VStudio will assume it's a "console application" and it won't compile properly.) 27 | 2) Copy the .c file into the new project's root folder 28 | 3) In the left pane, click "File View" and left click "Source Files" and select 29 | "add files to folder" from the popup menu, and add your file. 30 | 4) You're all set! Press f5 to build the program. 31 | 32 | **********************************************************************************************/ 33 | #define _WIN32_WINNT 0x0501 // Identify this as a Windows XP application. This is necessary 34 | // so we can access rawinput 35 | #include 36 | #include // Provides getch() 37 | #include // Provides rawinput 38 | 39 | main() 40 | { 41 | UINT nInputDevices; 42 | 43 | // 1st call to GetRawInputDeviceList: Pass NULL to get the size of the list. 44 | if (GetRawInputDeviceList(NULL, &nInputDevices, sizeof(RAWINPUTDEVICELIST)) != 0) return 0; 45 | printf("Number of raw input devices: %i\n\n", nInputDevices); 46 | 47 | printf("Press any key..."); 48 | getch(); 49 | 50 | return 1; 51 | } 52 | -------------------------------------------------------------------------------- /nuvee_ps1_pad - guncon1, mouse/src/___jstookey-arcade-rawinput/raw_mouse.h: -------------------------------------------------------------------------------- 1 | //================================================================= 2 | // 3 | // raw_mouse.h - Windows XP implementation of multi-mouse input 4 | // 5 | //================================================================= 6 | 7 | #ifndef __RAW_MOUSE_H 8 | #define __RAW_MOUSE_H 9 | 10 | //============================================================ 11 | // PROTOTYPES 12 | //============================================================ 13 | // init raw mouse by creating the array of raw mice (include sysmouse, include rawmouse, include individual mice) 14 | 15 | // Number of mice stored in pRawMice array 16 | // NOTE: init_raw_mouse must be called before this can return the actual number of mice 17 | int raw_mouse_count(); 18 | 19 | BOOL init_raw_mouse(BOOL, BOOL, BOOL); 20 | 21 | // Free up the memory allocated for the raw mouse array 22 | void destroy_raw_mouse(void); 23 | 24 | // Every time the WM_INPUT message is received, the lparam must be passed to this function to keep a running tally of 25 | // every mouse move to maintain accurate results for get_raw_mouse_x_delta() & get_raw_mouse_y_delta(). 26 | BOOL add_to_raw_mouse_x_and_y(HANDLE); // device handle, x val, y val 27 | 28 | // Fetch the relative position of the mouse since the last time get_raw_mouse_x_delta() or get_raw_mouse_y_delta 29 | // was called 30 | ULONG get_raw_mouse_x_delta(int); 31 | ULONG get_raw_mouse_y_delta(int); 32 | ULONG get_raw_mouse_z_delta(int); 33 | 34 | // pass the mousenumber, button number, returns 0 if the button is up, 1 if the button is down 35 | BOOL is_raw_mouse_button_pressed(int, int); 36 | char *get_raw_mouse_button_name(int, int); 37 | 38 | // Used to determine if the HID is using absolute mode or relative mode 39 | // The Act Labs PC USB Light Gun is absolute mode (returns screen coordinates) 40 | // and mice are relative mode (returns delta) 41 | // NOTE: this value isn't updated until the device registers a WM_INPUT message 42 | BOOL is_raw_mouse_absolute(int); 43 | 44 | // This indicates if the coordinates are coming from a multi-monitor setup 45 | // NOTE: this value isn't updated until the device registers a WM_INPUT message 46 | BOOL is_raw_mouse_virtual_desktop(int); 47 | 48 | #endif /* ifndef __RAW_MOUSE_H */ 49 | -------------------------------------------------------------------------------- /nuvee_ps1_pad - guncon1, mouse/src/dialog.aps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/nuvee/b710557c5812f6fae6d015827cfc88b194ee9ccb/nuvee_ps1_pad - guncon1, mouse/src/dialog.aps -------------------------------------------------------------------------------- /nuvee_ps1_pad - guncon1, mouse/src/exports.def: -------------------------------------------------------------------------------- 1 | LIBRARY "nuvee_psx_controller" 2 | 3 | EXPORTS 4 | PSEgetLibType 5 | PSEgetLibName 6 | PSEgetLibVersion 7 | 8 | PS2EgetLibType 9 | PS2EgetLibName 10 | PS2EgetLibVersion2 11 | 12 | PADinit 13 | PADshutdown 14 | PADopen 15 | PADclose 16 | PADstartPoll 17 | PADpoll 18 | PADreadPort1 19 | PADreadPort2 20 | PADquery 21 | PADconfigure 22 | PADtest 23 | PADabout 24 | 25 | PADregisterCursor 26 | PADcmdline 27 | 28 | PADkeyEvent 29 | PADupdate 30 | PADfreeze 31 | PADsetSettingsDir 32 | -------------------------------------------------------------------------------- /nuvee_ps1_pad - guncon1, mouse/src/mouse.cpp: -------------------------------------------------------------------------------- 1 | void PADpoll_mouse( int value ) 2 | { 3 | int data_x, data_y, data_z; 4 | int data_buttons[3]; 5 | 6 | 7 | 8 | if( pad_count == 0 ) { 9 | pad_cmd = value; 10 | 11 | 12 | data_x = device_x[ device_hid[ THIS_PAD ] ]; 13 | data_y = device_y[ device_hid[ THIS_PAD ] ]; 14 | data_z = device_z[ device_hid[ THIS_PAD ] ]; 15 | 16 | data_buttons[0] = device_buttons[ device_hid[ THIS_PAD ] ][0]; 17 | data_buttons[1] = device_buttons[ device_hid[ THIS_PAD ] ][1]; 18 | data_buttons[2] = device_buttons[ device_hid[ THIS_PAD ] ][2]; 19 | } 20 | 21 | 22 | switch( pad_cmd ) { 23 | // $42 = poll data 24 | case 0x42: 25 | // already done 26 | if( pad_count > 0 ) break; 27 | 28 | // ================================== 29 | // ================================== 30 | // ================================== 31 | 32 | // reset config mode 33 | if( pad_cmd == 0x42 ) { 34 | pad_config_mode[ THIS_PAD ] = 0; 35 | } 36 | 37 | 38 | // mouse ID 39 | pad_out[0] = 0x12; 40 | pad_out[1] = 0x5a; 41 | 42 | // ================================== 43 | // ================================== 44 | // ================================== 45 | 46 | // mouse buttons (default) 47 | pad_out[2] = 0xff; 48 | pad_out[3] = 0xfc; 49 | 50 | 51 | if( data_buttons[0] ) 52 | pad_out[3] &= ~0x08; 53 | 54 | if( data_buttons[1] ) 55 | pad_out[3] &= ~0x04; 56 | 57 | 58 | 59 | // special 3rd button + mousewheel 60 | if( mouse_usb_converter[ THIS_PAD ] ) { 61 | if( data_buttons[2] ) 62 | pad_out[3] &= ~0x80; 63 | 64 | if( data_z > 0 ) 65 | pad_out[3] &= ~0x40; 66 | 67 | if( data_z < 0 ) 68 | pad_out[3] &= ~0x20; 69 | } 70 | 71 | // ================================== 72 | // ================================== 73 | // ================================== 74 | 75 | data_x = ( data_x * mouse_sensitivity[ THIS_PAD ] ) / 100; 76 | data_y = ( data_y * mouse_sensitivity[ THIS_PAD ] ) / 100; 77 | 78 | 79 | if( data_x < -0x80 ) data_x = -0x80; 80 | if( data_y < -0x80 ) data_y = -0x80; 81 | if( data_x > 0x7f ) data_x = 0x7f; 82 | if( data_y > 0x7f ) data_y = 0x7f; 83 | 84 | 85 | if( data_x > mouse_threshold[ THIS_PAD ] ) 86 | data_x = mouse_threshold[ THIS_PAD ]; 87 | 88 | if( data_y > mouse_threshold[ THIS_PAD ] ) 89 | data_y = mouse_threshold[ THIS_PAD ]; 90 | 91 | if( data_x < -mouse_threshold[ THIS_PAD ] ) 92 | data_x = -mouse_threshold[ THIS_PAD ]; 93 | 94 | if( data_y < -mouse_threshold[ THIS_PAD ] ) 95 | data_y = -mouse_threshold[ THIS_PAD ]; 96 | 97 | 98 | if( data_x >= -mouse_deadzone[ THIS_PAD ] && 99 | data_x <= mouse_deadzone[ THIS_PAD ] ) 100 | data_x = 0; 101 | 102 | if( data_y >= -mouse_deadzone[ THIS_PAD ] && 103 | data_y <= mouse_deadzone[ THIS_PAD ] ) 104 | data_y = 0; 105 | 106 | // ================================== 107 | // ================================== 108 | // ================================== 109 | 110 | // mouse analog 111 | pad_out[4] = (s8) data_x; 112 | pad_out[5] = (s8) data_y; 113 | break; 114 | 115 | 116 | default: 117 | // already done 118 | if( pad_count > 0 ) break; 119 | 120 | 121 | pad_out[0] = 0x12; 122 | pad_out[1] = 0xff; 123 | 124 | // invalid command 125 | pad_out[2] = 0xff; 126 | pad_out[3] = 0xff; 127 | 128 | pad_out[4] = 0xff; 129 | pad_out[5] = 0xff; 130 | break; 131 | } 132 | } 133 | -------------------------------------------------------------------------------- /nuvee_ps1_pad - guncon1, mouse/src/nuvee_ps2_pad.bat: -------------------------------------------------------------------------------- 1 | copy nuvee_psx_pad.dll nuvee_ps2_pad.dll 2 | -------------------------------------------------------------------------------- /nuvee_ps1_pad - guncon1, mouse/src/nuvee_psx_controller_plugin.dsw: -------------------------------------------------------------------------------- 1 | Microsoft Developer Studio Workspace File, Format Version 6.00 2 | # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! 3 | 4 | ############################################################################### 5 | 6 | Project: "nuvee_psx_controller_plugin"=".\nuvee_psx_controller_plugin.dsp" - Package Owner=<4> 7 | 8 | Package=<5> 9 | {{{ 10 | }}} 11 | 12 | Package=<4> 13 | {{{ 14 | }}} 15 | 16 | ############################################################################### 17 | 18 | Global: 19 | 20 | Package=<5> 21 | {{{ 22 | }}} 23 | 24 | Package=<3> 25 | {{{ 26 | }}} 27 | 28 | ############################################################################### 29 | 30 | -------------------------------------------------------------------------------- /nuvee_ps1_pad - guncon1, mouse/src/nuvee_psx_controller_plugin.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 10.00 3 | # Visual C++ Express 2008 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nuvee_psx_controller_plugin", "nuvee_psx_controller_plugin.vcproj", "{83D357C2-A853-4C11-B804-6271089B1F31}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Release|Win32 = Release|Win32 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {83D357C2-A853-4C11-B804-6271089B1F31}.Debug|Win32.ActiveCfg = Debug|Win32 13 | {83D357C2-A853-4C11-B804-6271089B1F31}.Debug|Win32.Build.0 = Debug|Win32 14 | {83D357C2-A853-4C11-B804-6271089B1F31}.Release|Win32.ActiveCfg = Release|Win32 15 | {83D357C2-A853-4C11-B804-6271089B1F31}.Release|Win32.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /nuvee_ps1_pad - guncon1, mouse/src/nuvee_psx_controller_plugin.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/nuvee/b710557c5812f6fae6d015827cfc88b194ee9ccb/nuvee_ps1_pad - guncon1, mouse/src/nuvee_psx_controller_plugin.suo -------------------------------------------------------------------------------- /nuvee_ps1_pad - guncon1, mouse/src/raw_mouse.h: -------------------------------------------------------------------------------- 1 | //================================================================= 2 | // 3 | // raw_mouse.h - Windows XP implementation of multi-mouse input 4 | // 5 | //================================================================= 6 | 7 | #ifndef __RAW_MOUSE_H 8 | #define __RAW_MOUSE_H 9 | 10 | //============================================================ 11 | // PROTOTYPES 12 | //============================================================ 13 | // init raw mouse by creating the array of raw mice (include sysmouse, include rawmouse, include individual mice) 14 | 15 | // Number of mice stored in pRawMice array 16 | // NOTE: init_raw_mouse must be called before this can return the actual number of mice 17 | int raw_mouse_count(); 18 | 19 | BOOL init_raw_mouse(BOOL, BOOL, BOOL); 20 | BOOL register_raw_mouse( HWND hwnd ); 21 | 22 | // Free up the memory allocated for the raw mouse array 23 | void destroy_raw_mouse(void); 24 | BOOL unregister_raw_mouse( HWND hwnd ); 25 | 26 | // Every time the WM_INPUT message is received, the lparam must be passed to this function to keep a running tally of 27 | // every mouse move to maintain accurate results for get_raw_mouse_x_delta() & get_raw_mouse_y_delta(). 28 | BOOL add_to_raw_mouse_x_and_y(HANDLE); // device handle, x val, y val 29 | 30 | // Fetch the relative position of the mouse since the last time get_raw_mouse_x_delta() or get_raw_mouse_y_delta 31 | // was called 32 | ULONG get_raw_mouse_x_delta(int); 33 | ULONG get_raw_mouse_y_delta(int); 34 | ULONG get_raw_mouse_z_delta(int); 35 | 36 | // pass the mousenumber, button number, returns 0 if the button is up, 1 if the button is down 37 | BOOL is_raw_mouse_button_pressed(int, int); 38 | char *get_raw_mouse_button_name(int, int); 39 | 40 | // get GUID name 41 | char *get_raw_mouse_name(int); 42 | 43 | // Used to determine if the HID is using absolute mode or relative mode 44 | // The Act Labs PC USB Light Gun is absolute mode (returns screen coordinates) 45 | // and mice are relative mode (returns delta) 46 | // NOTE: this value isn't updated until the device registers a WM_INPUT message 47 | BOOL is_raw_mouse_absolute(int); 48 | 49 | // This indicates if the coordinates are coming from a multi-monitor setup 50 | // NOTE: this value isn't updated until the device registers a WM_INPUT message 51 | BOOL is_raw_mouse_virtual_desktop(int); 52 | 53 | 54 | void reset_raw_mouse_data(int); 55 | 56 | 57 | #endif /* ifndef __RAW_MOUSE_H */ 58 | -------------------------------------------------------------------------------- /nuvee_ps1_pad - guncon1, mouse/src/rawinput.cpp: -------------------------------------------------------------------------------- 1 | #include "raw_mouse.h" 2 | #include 3 | 4 | 5 | 6 | void Init_RawInput() 7 | { 8 | if( hidmouse_api != HIDMOUSE_API_RAWINPUT ) return; 9 | 10 | 11 | // prevent double hooking 12 | if( rawinput_active == 1 ) { 13 | //MessageBox(NULL, "RawInput already active. Exiting." , "Error!" ,MB_OK); 14 | return; 15 | } 16 | 17 | 18 | if (!init_raw_mouse(1, 0, 1)) { // registers for (sysmouse=yes, terminal services mouse=no, HID_mice=yes) 19 | //MessageBox(NULL, "RawInput not supported by Operating System. Exiting." , "Error!" ,MB_OK); 20 | return; 21 | } 22 | 23 | 24 | 25 | rawinput_active = 1; 26 | } 27 | 28 | 29 | void Add_RawInput( HWND hwnd ) 30 | { 31 | if( rawinput_active == 0 ) return; 32 | if( hidmouse_api != HIDMOUSE_API_RAWINPUT ) return; 33 | 34 | 35 | register_raw_mouse( hwnd ); 36 | 37 | 38 | // setup WM_INPUT hooks 39 | rawinput_count++; 40 | 41 | if( rawinput_count == 1 && pOldWinProc == 0 ) { 42 | pOldWinProc = (WNDPROC)GetWindowLong( hWnd_app, GWL_WNDPROC ); 43 | SetWindowLong( hWnd_app, GWL_WNDPROC, (long) nuvee_key_winproc ); 44 | } 45 | } 46 | 47 | 48 | void Poll_RawInput() 49 | { 50 | #if 0 51 | static FILE *fp_debug = 0; 52 | 53 | 54 | if( fp_debug == 0 ) { 55 | fp_debug = fopen( "debug.txt", "w" ); 56 | } 57 | 58 | fprintf( fp_debug, "%d\n", raw_mouse_count() ); 59 | #endif 60 | 61 | if( rawinput_active == 0 ) return; 62 | if( hidmouse_api != HIDMOUSE_API_RAWINPUT ) return; 63 | 64 | 65 | 66 | for( int lcv = 0; lcv < raw_mouse_count(); lcv++ ) { 67 | device_x[lcv] = get_raw_mouse_x_delta(lcv); 68 | device_y[lcv] = get_raw_mouse_y_delta(lcv); 69 | device_z[lcv] = get_raw_mouse_z_delta(lcv); 70 | 71 | 72 | device_buttons[lcv][0] = is_raw_mouse_button_pressed(lcv, 0); 73 | device_buttons[lcv][1] = is_raw_mouse_button_pressed(lcv, 1); 74 | device_buttons[lcv][2] = is_raw_mouse_button_pressed(lcv, 2); 75 | device_buttons[lcv][3] = is_raw_mouse_button_pressed(lcv, 3); 76 | device_buttons[lcv][4] = is_raw_mouse_button_pressed(lcv, 4); 77 | 78 | 79 | // works after WM_INPUT received 80 | device_absolute[lcv] = is_raw_mouse_absolute(lcv); 81 | } 82 | } 83 | 84 | 85 | void Remove_RawInput( HWND hwnd ) 86 | { 87 | if( rawinput_active == 0 ) return; 88 | if( hidmouse_api != HIDMOUSE_API_RAWINPUT ) return; 89 | 90 | 91 | unregister_raw_mouse( hwnd ); 92 | 93 | 94 | // remove hooks 95 | rawinput_count--; 96 | 97 | if( rawinput_count == 0 && pOldWinProc ) { 98 | SetWindowLong( hWnd_app, GWL_WNDPROC, (long)pOldWinProc ); 99 | pOldWinProc = 0; 100 | } 101 | } 102 | 103 | 104 | void Done_RawInput() 105 | { 106 | } -------------------------------------------------------------------------------- /nuvee_ps2_pad - guncon1/___README.txt: -------------------------------------------------------------------------------- 1 | A win32 ps2 controller plugin that provides basic lightweight emulation 2 | - Dual PSX G-Con 45 (PS2) 3 | 4 | 5 | 6 | Devices: 7 | - Dual mice (USB + Serial) 8 | - Dual PC lightgun 9 | 10 | 11 | 12 | 13 | For use with win32 emulators like 14 | - PCSX2 (any) 15 | 16 | 17 | 18 | 19 | News: 20 | - 08-09-11 Changed lightgun ps2 custom profile to make Endgame (U) work 21 | - 08-09-11 Added Vampire Night (E), Time Crisis 3/Zone (E) 22 | - 08-07-11 Added several PS2 profiles 23 | - 08-07-11 Added PS2 G-Con 45 support (PCSX2) 24 | 25 | 26 | 27 | 28 | INSTRUCTIONS: 29 | 1- Copy dll to your emu's 'plugins' folder 30 | 2- Set plugin to nuvee 31 | 3- Set nuvee device and configure 32 | 4- Hit acquire. choose game profile 33 | 5- Play game 34 | 35 | 36 | 37 | 38 | NOTES: 39 | 40 | (1) 41 | You can exit the emu, change the profiles settings and continue your game 42 | (tweak aiming values on-the-fly) 43 | 44 | 45 | (2) 46 | Lightguns work best at 640x480 but higher resolutions like 1366x768 work well also 47 | -------------------------------------------------------------------------------- /nuvee_ps2_pad - guncon1/ps2_lightgun_list.txt: -------------------------------------------------------------------------------- 1 | (PAD) Guncon 1 (G-Con 45) compatible 2 | 3 | 4 | (tested) 5 | - Endgame (U) --------------------------- 2 guns 6 | - Gunfighter 2: Jesse James (E) --------- 2 guns 7 | - Ninja Assault (E) --------------------- 2 guns -------- calibration broken = set controller to 'none' 8 | - Time Crisis 2 (U) --------------------- 2 guns -------- slim ps2 2.2 bios jap and ticked "enable fast CDVD" (play extra games) 9 | - Time Crisis 3 (E) --------------------- 2 guns 10 | - Time Crisis Zone (E) ------------------ 2 guns 11 | - Vampire Night (U,E) ------------------- 2 guns 12 | 13 | 14 | - Resident Evil Survivor 2 (E) ---------- 1 guns -------- during calibration, don't move gun after trigger until told to move 15 | 16 | FORWARD = hold trigger off-screen 17 | BACKWARD = double-tap + hold trigger off-screen 18 | CHANGE WEAPON = fire offscreen or A+B offscreen 19 | TURN LEFT = B 20 | TURN RIGHT = A 21 | OPTIONS = trigger offscreen + hold A+B immediately 22 | 23 | 24 | 25 | (not working) 26 | - (x) Guncom 2 (e) - not detecting ---------- 2 guns 27 | - (x) Time Crisis 2 (e) - not detecting (??) --- 2 guns 28 | 29 | 30 | 31 | (untested) 32 | - Cocoto: Funfair (E) 33 | - Endgame (E) 34 | - Dino Stalker (E) (+ pad) 35 | - Resident Evil: Dead Aim (E) (+ pad) 36 | - Starsky and Hutch (E) (coop) 37 | 38 | ################################################### 39 | ################################################### 40 | ################################################### 41 | ################################################### 42 | 43 | (PAD) Konami Hyperblaster 44 | - Police 24/7 45 | - Silent Hill 3 46 | -------------------------------------------------------------------------------- /nuvee_ps2_usb - guncon2, keyboard, mouse/___README.txt: -------------------------------------------------------------------------------- 1 | A win32 ps2 controller plugin that provides basic lightweight emulation 2 | - Dual Guncon 2 3 | - Dual Mouse 4 | - Single keyboard 5 | 6 | 7 | 8 | Devices: 9 | - Dual mice (USB + Serial) 10 | - Dual PC lightgun 11 | - Single keyboard 12 | - Dual joysticks (Real + PPJoy, WiiMote) 13 | 14 | 15 | 16 | For use with win32 emulators like 17 | - PCSX2 (special 0.9.8 usb-emu only) 18 | - PCSX2 (SVN) 19 | 20 | 21 | 22 | News: 23 | - 10-21-11 Other misc stuff 24 | - 10-21-11 Upgrade RES2 to working (latest PCSX2 SVN) 25 | - 10-21-11 Create Resident Evil Survivor 2 Guncon2 profile 26 | - 10-21-11 Fix more stuff (USB mouse poll rate, USB keyboard poll, misc emulation) 27 | - 10-21-11 Fix lots of stuff (alt-tab focus, snap cursor, PC lightgun + mouse, other regressions) 28 | - 10-21-11 Support joystick devices (PPJoy or else) 29 | - 10-13-11 Add DirectInput (WiiMote) 30 | - 10-13-11 (PS2) Improve game profile list 31 | - 10-13-11 (PS2) Improve device reset speed (Gunfighter 2 timeout) 32 | - 10-13-11 (PS2) Fix device connection order (not both at same time) 33 | - 10-13-11 (PS2) Improve lightgun swap feature 34 | - 08-21-11 Add mouse, keyboard usb emulation 35 | - 08-19-11 Add C button to keyboard map 36 | - 08-19-11 Fix lightgun swapping 37 | - 08-19-11 Add profile: Endgame 38 | - 08-19-11 Add hotplugging usb devices, hotswapping devices 39 | - 08-18-11 Add profiles: Starsky & Hutch, Gunfighter 2 40 | - 08-18-11 Add profiles: Dead Aim, Dino Stalker, Gunvari Collection 41 | - 08-18-11 Add keyboard d-pad, extra guncon2 buttons, latch guncon2 near VBlank times (fixes trigger) 42 | - 08-17-11 Added PS2 game profiles 43 | - 08-17-11 Added PS2 Guncon 2 support (PCSX2) 44 | - 08-15-11 Added USB OHCI support 45 | 46 | 47 | 48 | INSTRUCTIONS: 49 | 0- Install official PCSX2 0.9.8 first 50 | 1- Copy dll to your emu's 'plugins' folder 51 | 2- Set plugin to nuvee 52 | 3- Set nuvee device and configure 53 | 4- Hit acquire. choose game profile 54 | 5- Play game 55 | 56 | 57 | 58 | 59 | NOTES: 60 | 61 | (1) 62 | You can exit the emu, change the profiles settings and continue your game 63 | (tweak aiming values on-the-fly) 64 | 65 | 66 | (2) 67 | Lightguns work best at 640x480 but higher resolutions like 1366x768 work well also 68 | 69 | 70 | (3) 71 | Real lightguns will work much better than using a mouse 72 | (calibration, Time Crisis Zone submachine gun auto-fire) 73 | 74 | 75 | 76 | (4) 77 | Keyboard D-pad mapping: 78 | W = up 79 | A = Left 80 | S = Down 81 | D = Right 82 | 83 | Q = Start 84 | E = Select 85 | F = Button C 86 | 87 | 88 | Note that using Lilypad or SSSPSX pads can possibly interfere if WASD is 89 | mapped to a joypad. 90 | 91 | 92 | You can use nuvee_ps2_pad and set controllers to 'None'. Except in the 93 | case of Starsky and Hutch (pad1 = driver, usb1 = shooter) 94 | 95 | Or use Lilypad to set controller to 'Unplugged' 96 | 97 | 98 | 99 | (5) 100 | Take note that Lilypad can cause conflicts with USB plugin 101 | - Keyboard = Windows Messaging / DirectInput (best) 102 | - Mouse = None (best) 103 | -------------------------------------------------------------------------------- /nuvee_ps2_usb - guncon2, keyboard, mouse/ps2_keyboard_list.txt: -------------------------------------------------------------------------------- 1 | NOTE: 2 | Real games may support 2 keyboards but 3 | nuvee only uses 1 system device 4 | 5 | 6 | 7 | (tested) 8 | - Dirge of Cerberus - Final Fantasy VII -------- 1 keyboard 9 | - Unreal Tournament ---------------------------- 2 keyboards -------- set in controller options 10 | 11 | 12 | 13 | 14 | 15 | (untested) 16 | Deus Ex 17 | Everquest 18 | Half-Life 19 | Final Fantasy XI 20 | Monster Hunter 21 | RPG Maker II 22 | Red Faction 2 23 | Resident Evil Outbreak (online only?) 24 | Socom 25 | Socom 2 (online only?) 26 | Soldier of Fortune 27 | Star Trek Elite Force 28 | Typing of the Dead: Zombie Panic 29 | -------------------------------------------------------------------------------- /nuvee_ps2_usb - guncon2, keyboard, mouse/ps2_lightgun_list.txt: -------------------------------------------------------------------------------- 1 | (USB) Guncon 2 compatible 2 | 3 | 4 | IMPORTANT README: 5 | - At calibration screen, hold trigger offscreen + press SELECT 6 | 7 | change screen: 480i, 480p, 100 Hz 8 | ('Progressive Scan' is 480p) 9 | 10 | - Progressive scan offers higher precision 11 | 12 | 13 | - Keyboard D-pad mapping: 14 | W = up 15 | A = Left 16 | S = Down 17 | D = Right 18 | 19 | Q = Start 20 | E = Select 21 | F = Button C 22 | 23 | 24 | 25 | (tested) 26 | - Dino Stalker (U) ---------------------------- 1 guns ------ 480p // tick "enable fast CDVD", uses D-pad 27 | - Endgame (U) --------------------------------- 2 guns ------ 480i 28 | - Gunfighter 2: Jesse James (E) --------------- 2 guns ------ 480i 29 | - Gunvari Collection (J) ---------------------- 2 guns ------ 480i, 480p 30 | - Guncom 2 (E) -------------------------------- 2 guns ------ 480i, 480p // aim a little to left of 'X' for calibration 31 | - Ninja Assault (E,U) ------------------------- 2 guns ------ 480i, 480p // aim a little to left of center for calibration 32 | - Resident Evil Survivor 2 (E) ---------------- 1 guns ------ 480p // uses D-pad 33 | - Resident Evil: Dead Aim (U) ----------------- 1 guns ------ 480p // uses D-pad 34 | - Starsky and Hutch (U) ----------------------- 1 guns ------ 480i // options -> controller 2 = g-con 2 (shooting) 35 | - Time Crisis 2 (U) --------------------------- 2 guns ------ 480i, 480p // slim ps2 2.2 bios jap + tick "enable fast CDVD" (extra games only) 36 | - Time Crisis 3 (U) --------------------------- 2 guns ------ 480i, 480p // slim ps2 2.2 bios jap + tick "enable fast CDVD" 37 | - Time Crisis: Crisis Zone (U) ---------------- 2 guns ------ 480i, 480p // (mouse only) autofire gun doesn't work (hazy fog pixel detection) 38 | - Vampire Night (U) --------------------------- 2 guns ------ 480p 39 | - Virtua Cop: Elite Edition (E,J) ------------- 2 guns ------ 480i, 480p // uses D-pad 40 | 41 | 42 | 43 | (untested) 44 | - Cocoto: Funfair 45 | -------------------------------------------------------------------------------- /nuvee_ps2_usb - guncon2, keyboard, mouse/ps2_mouse_list.txt: -------------------------------------------------------------------------------- 1 | (tested) 2 | - Dirge of Cerberus - Final Fantasy VII ------------ 1 mice -------- set mouse options to 'High' 3 | - Silent Scope ------------------------------------- 1 mice 4 | - Silent Scope 3 ----------------------------------- 1 mice 5 | - Unreal Tournament -------------------------------- 2 mice -------- set in controller options 6 | 7 | 8 | 9 | 10 | 11 | (untested) 12 | Age of Empires II 13 | Armored Core 2 14 | Armored Core 3 15 | ATV Quad Power Racing 2 16 | Deus Ex 17 | EverQuest Online Adventures: Frontiers 18 | Final Fantasy XI 19 | Half-Life 20 | Myst III: Exile 21 | Police 24/7 22 | Red Faction 2 23 | Resident Evil 4 24 | Sky Odyssey (decal editor) 25 | Silent Scope 2 26 | Soldier of Fortune 27 | Star Trek: Elite Force 28 | Tokyo Xtreme Racer 3 29 | -------------------------------------------------------------------------------- /nuvee_ps2_usb - guncon2, keyboard, mouse/src/USB_device.h: -------------------------------------------------------------------------------- 1 | /* USBlinuz 2 | * Copyright (C) 2002-2004 USBlinuz Team 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 | */ 18 | 19 | 20 | /* Information taken from usb-ohci.c 21 | * QEMU USB OHCI Interface 22 | * Copyright (c) 2004 Gianni Tedesco 23 | * Copyright (c) 2004-2005 Innotek Systemberatung GmbH 24 | * Author: Gianni Tedesco 25 | */ 26 | 27 | 28 | /* 29 | # _____ ___ ____ ___ ____ 30 | # ____| | ____| | | |____| 31 | # | ___| |____ ___| ____| | \ PS2DEV Open Source Project. 32 | #----------------------------------------------------------------------- 33 | # Copyright 2001-2004, ps2dev - http://www.ps2dev.org 34 | # Licenced under Academic Free License version 2.0 35 | # Review ps2sdk README & LICENSE files for further details. 36 | */ 37 | 38 | 39 | struct usb_device_data { 40 | u8 connected; 41 | u8 lowspeed; 42 | 43 | u8 id; 44 | u8 config; 45 | u8 interface_num; 46 | 47 | u8 req; // request 48 | u8 req_format; // request type 49 | u16 req_arg1; // value 50 | u16 req_arg2; // index 51 | 52 | u8 data_len; 53 | u8 data_index; 54 | u8 data_buf[256]; 55 | 56 | 57 | // special register storage 58 | u16 vars[64]; 59 | }; 60 | 61 | 62 | struct usb_device_list { 63 | // 8 devices * 2 ports 64 | usb_device_data list[8 * 2]; 65 | }; 66 | 67 | 68 | // ====================================== 69 | // ====================================== 70 | // ====================================== 71 | 72 | // data transfer direction 73 | #define REQ_DIR (1 << 7) 74 | #define REQ_DIR_IN (1 << 7) 75 | #define REQ_DIR_OUT (0 << 7) 76 | 77 | // type 78 | #define REQ_TYPE (3 << 5) 79 | #define REQ_TYPE_STANDARD (0 << 5) 80 | #define REQ_TYPE_CLASS (1 << 5) 81 | #define REQ_TYPE_VENDOR (2 << 5) 82 | #define REQ_TYPE_RESERVED (3 << 5) 83 | 84 | // recipient 85 | #define REQ_TARGET (5 << 0) 86 | #define REQ_TARGET_DEVICE (0 << 0) 87 | #define REQ_TARGET_INTERFACE (1 << 0) 88 | #define REQ_TARGET_ENDPOINT (2 << 0) 89 | #define REQ_TARGET_OTHER (3 << 0) 90 | 91 | 92 | // command 93 | #define DEVICE_GET_STATUS 0 94 | #define DEVICE_CLEAR_FEATURE 1 95 | #define DEVICE_SET_FEATURE 3 96 | #define DEVICE_SET_ADDRESS 5 97 | #define DEVICE_GET_DESCRIPTOR 6 98 | #define DEVICE_SET_DESCRIPTOR 7 99 | #define DEVICE_GET_CONFIGURATION 8 100 | #define DEVICE_SET_CONFIGURATION 9 101 | 102 | #define INTERFACE_GET_STATUS 0 103 | #define INTERFACE_CLEAR_FEATURE 1 104 | #define INTERFACE_SET_FEATURE 3 105 | #define INTERFACE_GET_INTERFACE 10 106 | #define INTERFACE_SET_INTERFACE 11 107 | 108 | #define ENDPOINT_GET_STATUS 0 109 | #define ENDPOINT_CLEAR_FEATURE 1 110 | #define ENDPOINT_SET_FEATURE 3 111 | #define ENDPOINT_SYNCH_FRAME 18 112 | -------------------------------------------------------------------------------- /nuvee_ps2_usb - guncon2, keyboard, mouse/src/WINRES.H: -------------------------------------------------------------------------------- 1 | // This is a part of the Microsoft Foundation Classes C++ library. 2 | // Copyright (C) 1992-1998 Microsoft Corporation 3 | // All rights reserved. 4 | // 5 | // This source code is only intended as a supplement to the 6 | // Microsoft Foundation Classes Reference and related 7 | // electronic documentation provided with the library. 8 | // See these sources for detailed information regarding the 9 | // Microsoft Foundation Classes product. 10 | 11 | // winres.h - Windows resource definitions 12 | // extracted from WINUSER.H and COMMCTRL.H 13 | 14 | #ifdef _AFX_MINREBUILD 15 | #pragma component(minrebuild, off) 16 | #endif 17 | 18 | #define VS_VERSION_INFO 1 19 | 20 | #ifdef APSTUDIO_INVOKED 21 | #define APSTUDIO_HIDDEN_SYMBOLS // Ignore following symbols 22 | #endif 23 | 24 | #ifndef WINVER 25 | #define WINVER 0x0400 // default to Windows Version 4.0 26 | #endif 27 | 28 | #include 29 | 30 | // operation messages sent to DLGINIT 31 | #define LB_ADDSTRING (WM_USER+1) 32 | #define CB_ADDSTRING (WM_USER+3) 33 | 34 | #ifdef APSTUDIO_INVOKED 35 | #undef APSTUDIO_HIDDEN_SYMBOLS 36 | #endif 37 | 38 | #ifdef IDC_STATIC 39 | #undef IDC_STATIC 40 | #endif 41 | #define IDC_STATIC (-1) 42 | 43 | #ifdef _AFX_MINREBUILD 44 | #pragma component(minrebuild, on) 45 | #endif 46 | -------------------------------------------------------------------------------- /nuvee_ps2_usb - guncon2, keyboard, mouse/src/dialog.aps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/nuvee/b710557c5812f6fae6d015827cfc88b194ee9ccb/nuvee_ps2_usb - guncon2, keyboard, mouse/src/dialog.aps -------------------------------------------------------------------------------- /nuvee_ps2_usb - guncon2, keyboard, mouse/src/exports.def: -------------------------------------------------------------------------------- 1 | LIBRARY "nuvee_ps2_usb" 2 | DESCRIPTION "nuvee PS2 USB" 3 | 4 | EXPORTS 5 | PS2EgetLibType 6 | PS2EgetLibName 7 | PS2EgetLibVersion2 8 | 9 | USBinit 10 | USBshutdown 11 | USBopen 12 | USBclose 13 | 14 | USBread8 15 | USBread16 16 | USBread32 17 | USBwrite8 18 | USBwrite16 19 | USBwrite32 20 | USBirqCallback 21 | USBirqHandler 22 | USBsetRAM 23 | USBfreeze 24 | 25 | USBconfigure 26 | USBtest 27 | USBabout 28 | 29 | USBregisterCursor 30 | USBcmdline 31 | 32 | USBsetSettingsDir 33 | USBsetLogDir 34 | -------------------------------------------------------------------------------- /nuvee_ps2_usb - guncon2, keyboard, mouse/src/nuvee_ps2_usb.dsw: -------------------------------------------------------------------------------- 1 | Microsoft Developer Studio Workspace File, Format Version 6.00 2 | # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! 3 | 4 | ############################################################################### 5 | 6 | Project: "nuvee_ps2_usb"=".\nuvee_ps2_usb.dsp" - Package Owner=<4> 7 | 8 | Package=<5> 9 | {{{ 10 | }}} 11 | 12 | Package=<4> 13 | {{{ 14 | }}} 15 | 16 | ############################################################################### 17 | 18 | Global: 19 | 20 | Package=<5> 21 | {{{ 22 | }}} 23 | 24 | Package=<3> 25 | {{{ 26 | }}} 27 | 28 | ############################################################################### 29 | 30 | -------------------------------------------------------------------------------- /nuvee_ps2_usb - guncon2, keyboard, mouse/src/nuvee_ps2_usb.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 10.00 3 | # Visual C++ Express 2008 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nuvee_ps2_usb", "nuvee_ps2_usb.vcproj", "{7EA4F39B-5F88-4AD5-A616-8679AFC90D54}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Release|Win32 = Release|Win32 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {7EA4F39B-5F88-4AD5-A616-8679AFC90D54}.Debug|Win32.ActiveCfg = Debug|Win32 13 | {7EA4F39B-5F88-4AD5-A616-8679AFC90D54}.Debug|Win32.Build.0 = Debug|Win32 14 | {7EA4F39B-5F88-4AD5-A616-8679AFC90D54}.Release|Win32.ActiveCfg = Release|Win32 15 | {7EA4F39B-5F88-4AD5-A616-8679AFC90D54}.Release|Win32.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /nuvee_ps2_usb - guncon2, keyboard, mouse/src/raw_mouse.h: -------------------------------------------------------------------------------- 1 | //================================================================= 2 | // 3 | // raw_mouse.h - Windows XP implementation of multi-mouse input 4 | // 5 | //================================================================= 6 | 7 | #ifndef __RAW_MOUSE_H 8 | #define __RAW_MOUSE_H 9 | 10 | //============================================================ 11 | // PROTOTYPES 12 | //============================================================ 13 | // init raw mouse by creating the array of raw mice (include sysmouse, include rawmouse, include individual mice) 14 | 15 | // Number of mice stored in pRawMice array 16 | // NOTE: init_raw_mouse must be called before this can return the actual number of mice 17 | int raw_mouse_count(); 18 | 19 | BOOL init_raw_mouse(BOOL, BOOL, BOOL); 20 | BOOL register_raw_mouse( HWND hwnd ); 21 | 22 | // Free up the memory allocated for the raw mouse array 23 | void destroy_raw_mouse(void); 24 | BOOL unregister_raw_mouse( HWND hwnd ); 25 | 26 | // Every time the WM_INPUT message is received, the lparam must be passed to this function to keep a running tally of 27 | // every mouse move to maintain accurate results for get_raw_mouse_x_delta() & get_raw_mouse_y_delta(). 28 | BOOL add_to_raw_mouse_x_and_y(HANDLE); // device handle, x val, y val 29 | 30 | // Fetch the relative position of the mouse since the last time get_raw_mouse_x_delta() or get_raw_mouse_y_delta 31 | // was called 32 | ULONG get_raw_mouse_x_delta(int); 33 | ULONG get_raw_mouse_y_delta(int); 34 | ULONG get_raw_mouse_z_delta(int); 35 | 36 | // pass the mousenumber, button number, returns 0 if the button is up, 1 if the button is down 37 | BOOL is_raw_mouse_button_pressed(int, int); 38 | char *get_raw_mouse_button_name(int, int); 39 | 40 | // get GUID name 41 | char *get_raw_mouse_name(int); 42 | 43 | // Used to determine if the HID is using absolute mode or relative mode 44 | // The Act Labs PC USB Light Gun is absolute mode (returns screen coordinates) 45 | // and mice are relative mode (returns delta) 46 | // NOTE: this value isn't updated until the device registers a WM_INPUT message 47 | BOOL is_raw_mouse_absolute(int); 48 | 49 | // This indicates if the coordinates are coming from a multi-monitor setup 50 | // NOTE: this value isn't updated until the device registers a WM_INPUT message 51 | BOOL is_raw_mouse_virtual_desktop(int); 52 | 53 | 54 | void reset_raw_mouse_data(int); 55 | 56 | 57 | #endif /* ifndef __RAW_MOUSE_H */ 58 | -------------------------------------------------------------------------------- /nuvee_ps2_usb - guncon2, keyboard, mouse/src/rawinput.cpp: -------------------------------------------------------------------------------- 1 | #include "raw_mouse.h" 2 | #include 3 | 4 | 5 | 6 | void Init_RawInput() 7 | { 8 | if( hidmouse_api != HIDMOUSE_API_RAWINPUT ) return; 9 | 10 | 11 | // prevent double hooking 12 | if( rawinput_active == 1 ) { 13 | //MessageBox(NULL, "RawInput already active. Exiting." , "Error!" ,MB_OK); 14 | return; 15 | } 16 | 17 | 18 | if (!init_raw_mouse(1, 0, 1)) { // registers for (sysmouse=yes, terminal services mouse=no, HID_mice=yes) 19 | //MessageBox(NULL, "RawInput not supported by Operating System. Exiting." , "Error!" ,MB_OK); 20 | return; 21 | } 22 | 23 | 24 | 25 | rawinput_active = 1; 26 | } 27 | 28 | 29 | void Add_RawInput( HWND hwnd ) 30 | { 31 | if( rawinput_active == 0 ) return; 32 | if( hidmouse_api != HIDMOUSE_API_RAWINPUT ) return; 33 | 34 | 35 | register_raw_mouse( hwnd ); 36 | 37 | 38 | // setup WM_INPUT hooks 39 | rawinput_count++; 40 | 41 | if( rawinput_count == 1 && pOldWinProc == 0 ) { 42 | pOldWinProc = (WNDPROC)GetWindowLong( hWnd_app, GWL_WNDPROC ); 43 | SetWindowLong( hWnd_app, GWL_WNDPROC, (long) nuvee_key_winproc ); 44 | } 45 | } 46 | 47 | 48 | void Poll_RawInput() 49 | { 50 | #if 0 51 | static FILE *fp_debug = 0; 52 | 53 | 54 | if( fp_debug == 0 ) { 55 | fp_debug = fopen( "debug.txt", "w" ); 56 | } 57 | 58 | fprintf( fp_debug, "%d\n", raw_mouse_count() ); 59 | #endif 60 | 61 | if( rawinput_active == 0 ) return; 62 | if( hidmouse_api != HIDMOUSE_API_RAWINPUT ) return; 63 | 64 | 65 | 66 | for( int lcv = 0; lcv < raw_mouse_count(); lcv++ ) { 67 | device_x[lcv] = get_raw_mouse_x_delta(lcv); 68 | device_y[lcv] = get_raw_mouse_y_delta(lcv); 69 | device_z[lcv] = get_raw_mouse_z_delta(lcv); 70 | 71 | device_buttons[lcv][0] = is_raw_mouse_button_pressed(lcv, 0); 72 | device_buttons[lcv][1] = is_raw_mouse_button_pressed(lcv, 1); 73 | device_buttons[lcv][2] = is_raw_mouse_button_pressed(lcv, 2); 74 | device_buttons[lcv][3] = is_raw_mouse_button_pressed(lcv, 3); 75 | device_buttons[lcv][4] = is_raw_mouse_button_pressed(lcv, 4); 76 | 77 | 78 | // works after WM_INPUT received 79 | device_absolute[lcv] = is_raw_mouse_absolute(lcv); 80 | } 81 | } 82 | 83 | 84 | void Remove_RawInput( HWND hwnd ) 85 | { 86 | if( rawinput_active == 0 ) return; 87 | if( hidmouse_api != HIDMOUSE_API_RAWINPUT ) return; 88 | 89 | 90 | unregister_raw_mouse( hwnd ); 91 | 92 | 93 | // remove hooks 94 | rawinput_count--; 95 | 96 | if( rawinput_count == 0 && pOldWinProc ) { 97 | SetWindowLong( hWnd_app, GWL_WNDPROC, (long)pOldWinProc ); 98 | pOldWinProc = 0; 99 | } 100 | } 101 | 102 | 103 | void Done_RawInput() 104 | { 105 | } -------------------------------------------------------------------------------- /ps1 - gun flash removal/notes/crypt killer - gun flash.txt: -------------------------------------------------------------------------------- 1 | ; stage select 2 | 8007feec 7d92adf1: D0E58 @ Chain OP 60 - rect [#2] = 62FFFFFF | FF88FF60 00F00140 3 | 8007feec 7da3e861: DAE58 @ Chain OP 60 - rect [#2] = 62FFFFFF | FF88FF60 00F00140 4 | 5 | 6 | 7 | 8 | 8005944c : 02002021 ADDU 00000003 (a0), 800ce1d8 (s0), 00000000 (r0), 9 | 80059450 : 3C058002 LUI ff900000 (a1), 8002 (32770), 10 | 80059454 : 8CA5089C LW 80020000 (a1), 089c (80020000 (a1)) [8002089c] 11 | 12 | ; remove to skip flash (stage select) 13 | 80059458 : 0C020D5B JAL 8008356c, 8005944c (ra), 14 | 8005945c : 34060005 ORI 00800000 (a2), 00000000 (r0), 0005 (5), 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | ; in-game 25 | 26 | 8007feec d8a37898: DAF44 @ Chain OP 60 - rect [#2] = 62FAFAFA | FF88FF60 00F00140 27 | 28 | 29 | 30 | 8005e42c : 90230000 LBU 000000fa (v1), 0000 (800221c1 (at)) [800221c1] 31 | 8005e430 : 3C025000 LUI 000000fa (v0), 5000 (20480), 32 | 8005e434 : 3C01800D LUI 800221c1 (at), 800d (32781), 33 | 8005e438 : AC22E1D8 SW 50000000 (v0), e1d8 (800d0000 (at)) [800ce1d8] 34 | 8005e43c : 3C01800D LUI 800d0000 (at), 800d (32781), 35 | 8005e440 : A023E1E6 SB 000000fa (v1), e1e6 (800d0000 (at)) [800ce1e6] 36 | 37 | ; remove flash 38 | 8005e444 : 0C020D5B JAL 8008356c, 8005e3cc (ra), 39 | 8005e448 : 34060005 ORI 00000003 (a2), 00000000 (r0), 0005 (5), 40 | 41 | 8005e44c : 92E20000 LBU 800daf00 (v0), 0000 (800fc184 (s7)) [800fc184] 42 | 8005e450 : 00000000 NOP 43 | -------------------------------------------------------------------------------- /ps1 - gun flash removal/notes/elemental gearbolt - gun flash.txt: -------------------------------------------------------------------------------- 1 | 80030554 4ec9ac59: F27F0 @ Chain OP 60 - rect [#2] = 60C00000 | 00000000 00EB0100 2 | 3 | 4 | 5 | ; 80024498 = afa20014 6 | 7 | ; - remove to skip 8 | 8002449c : 0C008898 JAL 80022260, 800247b4 (ra), 9 | 800244a0 : 00000000 NOP 10 | 11 | 12 | 80022260 : 27BDFFE8 ADDIU 801ffe80 (sp), 801ffe80 (sp), ffe8 (65512), 13 | 80022264 : AFB00010 SW 00000001 (s0), 0010 (801ffe68 (sp)) [801ffe78] 14 | 80022268 : 3C101F80 LUI 00000001 (s0), 1f80 (8064), 15 | 8002226c : 8E100004 LW 1f800000 (s0), 0004 (1f800000 (s0)) [1f800004] 16 | 80022270 : 8FA20028 LW 00c00000 (v0), 0028 (801ffe68 (sp)) [801ffe90] 17 | 80022274 : 8FA3002C LW 00000003 (v1), 002c (801ffe68 (sp)) [801ffe94] 18 | 80022278 : AFBF0014 SW 800244a4 (ra), 0014 (801ffe68 (sp)) [801ffe7c] 19 | 8002227c : AE020004 SW 00c00000 (v0), 0004 (800f27ec (s0)) [800f27f0] 20 | -------------------------------------------------------------------------------- /ps1 - gun flash removal/notes/lethal enforcers - gun flash.txt: -------------------------------------------------------------------------------- 1 | 80055524 2a586c5b: 78BE0 @ Chain OP 02 - clear screen [#2] = 02ffffff | 00f00000 00f00140 2 | 3 | 4 | 5 | 80037404 : 00022040 SLL 8006fa98 (a0), 00000001 (v0), 01 (1), 6 | 80037408 : 00822021 ADDU 00000002 (a0), 00000002 (a0), 00000001 (v0), 7 | 8003740c : 000420C0 SLL 00000003 (a0), 00000003 (a0), 03 (3), 8 | 80037410 : 00822023 SUBU 00000018 (a0), 00000018 (a0), 00000001 (v0), 9 | 80037414 : 00042080 SLL 00000017 (a0), 00000017 (a0), 02 (2), 10 | 80037418 : 24846D58 ADDIU 0000005c (a0), 0000005c (a0), 6d58 (27992), 11 | 12 | ; remove to skip flash 13 | 8003741c : 0C014F57 JAL 80053d5c, 800373fc (ra), 14 | 80037420 : 02042021 ADDU 00006db4 (a0), 80071df4 (s0), 00006db4 (a0), 15 | -------------------------------------------------------------------------------- /ps1 - gun flash removal/notes/maximum force - gun flash.txt: -------------------------------------------------------------------------------- 1 | 0003b3f8 : 2484560C ADDIU 00050000 (a0), 00050000 (a0), 560c (22028), 2 | 0003b3fc : 3C010005 LUI 00070000 (at), 0005 (5), 3 | 0003b400 : A0225612 SB 000000ff (v0), 5612 (00050000 (at)) [00055612] 4 | 5 | ; skip flash code 6 | 0003b404 : 0C013577 JAL 0004d5dc, 0003b36c (ra), 7 | 0003b408 : 00000000 NOP 8 | 9 | 10 | 11 | 12 | 13 | 14 | 0004edf0 : 8C636518 LW 00050000 (v1), 6518 (00050000 (v1)) [00056518] 15 | 0004edf4 : 3C020400 LUI 0004ede4 (v0), 0400 (1024), 16 | 0004edf8 : AC620000 SW 04000000 (v0), 0000 (1f801814 (v1)) [1f801814] 17 | 18 | ; jmp to skip 19 | 0004edfc : 10A0000A BEQ 00000003 (a1), 00000000 (r0), 0004ee28, 20 | 0004ee00 : 00001021 ADDU 04000000 (v0), 00000000 (r0), 00000000 (r0), 21 | 22 | 0004ee04 : 2405FFFF ADDIU 00000003 (a1), 00000000 (r0), ffff (65535), 23 | 0004ee08 : 8C830000 LW 1f801814 (v1), 0000 (00055610 (a0)) [00055610] 24 | 0004ee0c : 24840004 ADDIU 00055610 (a0), 00055610 (a0), 0004 (4), 25 | 0004ee10 : 3C020005 LUI 00000000 (v0), 0005 (5), 26 | 0004ee14 : 8C426514 LW 00050000 (v0), 6514 (00050000 (v0)) [00056514] 27 | 0004ee18 : 24C6FFFF ADDIU 00000002 (a2), 00000002 (a2), ffff (65535), 28 | 29 | ; gun flash 30 | 0004ee1c : AC430000 SW 60ffffff (v1), 0000 (1f801810 (v0)) [1f801810] 31 | -------------------------------------------------------------------------------- /ps1 - gun flash removal/notes/moorhuhn 2 - gun cursor.txt: -------------------------------------------------------------------------------- 1 | 80035100 4e5142ef: CEAEC @ Chain OP 64 - sprite [#3] = 64808080 | 00780098 46945266 0010000F 2 | 3 | 4 | 800322a4 : AFA00018 SW 00000000 (r0), 0018 (801fff18 (sp)) [801fff30] 5 | 800322a8 : 8C460008 LW 00ffffff (a2), 0008 (800caa34 (v0)) [800caa3c] 6 | 800322ac : 8C67000C LW 00000000 (a3), 000c (800caa34 (v1)) [800caa40] 7 | 800322b0 : 24C6FFF8 ADDIU 000000a0 (a2), 000000a0 (a2), fff8 (65528), 8 | 9 | ; calibration 10 | 800322b4 : 0C005C35 JAL 800170d4, 80032274 (ra), 11 | 800322b8 : 24E7FFF8 ADDIU 00000080 (a3), 00000080 (a3), fff8 (65528), 12 | 13 | 14 | 15 | 8001154c : 8C67000C LW 800caa34 (a3), 000c (800caa34 (v1)) [800caa40] 16 | 8001154c : 8C67000C LW 800caa34 (a3), 000c (800caa34 (v1)) [800caa40] 17 | 80011550 : 24C6FFF8 ADDIU 00000142 (a2), 00000142 (a2), fff8 (65528), 18 | 19 | ; main menu 20 | 80011554 : 0C005C35 JAL 800170d4, 80011500 (ra), 21 | 80011558 : 24E7FFF8 ADDIU 000000e1 (a3), 000000e1 (a3), fff8 (65528), 22 | -------------------------------------------------------------------------------- /ps1 - gun flash removal/notes/point blank 1 - gun flash.txt: -------------------------------------------------------------------------------- 1 | 8005d554 538ebc57: A306C @ Chain OP 02 - clear screen [#2] = 02e0e0e0 | 00f00000 00f00140 2 | 3 | 4 | 5 | 6 | 800234fc : 3C04800A LUI 0000000d (a0), 800a (32778), 7 | 80023500 : 248431D0 ADDIU 800a0000 (a0), 800a0000 (a0), 31d0 (12752), 8 | 80023504 : 240500E0 ADDIU 000ffce8 (a1), 00000000 (r0), 00e0 (224), 9 | 80023508 : 240600E0 ADDIU 00ffffff (a2), 00000000 (r0), 00e0 (224), 10 | 11 | ; remove this to skip flash 12 | 8002350c : 0C016DA2 JAL 8005b688, 800234fc (ra), 13 | 80023510 : 240700E0 ADDIU ff000000 (a3), 00000000 (r0), 00e0 (224), 14 | 15 | =====> 16 | 17 | 8005cf64 : AC23306C SW 02e0e0e0 (v1), 306c (800a0000 (at)) [800a306c] 18 | -------------------------------------------------------------------------------- /ps1 - gun flash removal/notes/point blank 2 - gun flash.txt: -------------------------------------------------------------------------------- 1 | 8006a1a0 4eb06946: F6804 @ Chain OP 02 - clear screen [#2] = 02e0e0e0 | 00000000 00f00140 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 800240fc : 264489B8 ADDIU 0000000d (a0), 800b0000 (s2), 89b8 (35256), 10 | 80024100 : 240500E0 ADDIU 00000020 (a1), 00000000 (r0), 00e0 (224), 11 | 80024104 : 00A03021 ADDU 1f8003fc (a2), 000000e0 (a1), 00000000 (r0), 12 | 13 | ; remove this to skip flash 14 | 80024108 : 0C01A172 JAL 800685c8, 800240fc (ra), 15 | 8002410c : 00A03821 ADDU ff000000 (a3), 000000e0 (a1), 00000000 (r0), 16 | 17 | ===> 18 | 19 | ; flash color 20 | 80069bcc : ACC3000C SW 02e0e0e0 (v1), 000c (800f67f8 (a2)) [800f6804] 21 | -------------------------------------------------------------------------------- /ps1 - gun flash removal/notes/point blank 3 - gun flash.txt: -------------------------------------------------------------------------------- 1 | 800699fc 444af4f4: DDB84 @ Chain OP 02 - clear screen [#2] = 0280b050 | 00070000 00de0140 2 | 3 | 4 | 5 | 800247a4 : 02002021 ADDU 0000000d (a0), 80092e98 (s0), 00000000 (r0), 6 | 800247a8 : 24050050 ADDIU 00000100 (a1), 00000000 (r0), 0050 (80), 7 | 800247ac : 240600B0 ADDIU 00000140 (a2), 00000000 (r0), 00b0 (176), 8 | 9 | ===> remove this to skip flash 10 | 800247b0 : 0C019FA8 JAL 80067ea0, 800247a4 (ra), 11 | 800247b4 : 24070080 ADDIU 00000107 (a3), 00000000 (r0), 0080 (128), 12 | 13 | 14 | 15 | 16 | 80067ea0 : 27BDFFD8 ADDIU 1f8003e0 (sp), 1f8003e0 (sp), ffd8 (65496), 17 | 80067ea4 : AFB3001C SW 80090000 (s3), 001c (1f8003b8 (sp)) [1f8003d4] 18 | 80067ea8 : 00809821 ADDU 80090000 (s3), 80092e98 (a0), 00000000 (r0), 19 | 80067eac : 3C048001 LUI 80092e98 (a0), 8001 (32769), 20 | 80067eb0 : 2484408C ADDIU 80010000 (a0), 80010000 (a0), 408c (16524), 21 | 80067eb4 : AFB20018 SW 80090000 (s2), 0018 (1f8003b8 (sp)) [1f8003d0] 22 | 80067eb8 : 00A09021 ADDU 80090000 (s2), 00000050 (a1), 00000000 (r0), 23 | 80067ebc : 02602821 ADDU 00000050 (a1), 80092e98 (s3), 00000000 (r0), 24 | 80067ec0 : AFB10014 SW 00000001 (s1), 0014 (1f8003b8 (sp)) [1f8003cc] 25 | 80067ec4 : 00C08821 ADDU 00000001 (s1), 000000b0 (a2), 00000000 (r0), 26 | 80067ec8 : AFB00010 SW 80092e98 (s0), 0010 (1f8003b8 (sp)) [1f8003c8] 27 | 80067ecc : AFBF0020 SW 800247b8 (ra), 0020 (1f8003b8 (sp)) [1f8003d8] 28 | 80067ed0 : 0C019F61 JAL 80067d84, 800247b8 (ra), 29 | 80067ed4 : 00E08021 ADDU 80092e98 (s0), 00000080 (a3), 00000000 (r0), 30 | 31 | 32 | 80067ed8 : 02602821 ADDU 80092e98 (a1), 80092e98 (s3), 00000000 (r0), 33 | 80067edc : 321000FF ANDI 00000080 (s0), 00000080 (s0), 00ff (255), 34 | 80067ee0 : 00108400 SLL 00000080 (s0), 00000080 (s0), 10 (16), 35 | 80067ee4 : 323100FF ANDI 000000b0 (s1), 000000b0 (s1), 00ff (255), 36 | 80067ee8 : 00118A00 SLL 000000b0 (s1), 000000b0 (s1), 08 (8), 37 | 80067eec : 02118025 OR 00800000 (s0), 00800000 (s0), 0000b000 (s1), 38 | 80067ef0 : 325200FF ANDI 00000050 (s2), 00000050 (s2), 00ff (255), 39 | 80067ef4 : 3C028009 LUI 00000002 (v0), 8009 (32777), 40 | 80067ef8 : 8C421C60 LW 80090000 (v0), 1c60 (80090000 (v0)) [80091c60] 41 | 80067efc : 24060008 ADDIU 000000b0 (a2), 00000000 (r0), 0008 (8), 42 | 80067f00 : 8C44000C LW 80091c6a (a0), 000c (80091c20 (v0)) [80091c2c] 43 | 80067f04 : 8C420008 LW 80091c20 (v0), 0008 (80091c20 (v0)) [80091c28] 44 | 80067f08 : 00000000 NOP 45 | 80067f0c : 0040F809 JALR 80069a98 (v0), 80067ed8 (ra), 46 | 80067f10 : 02123825 OR 00000080 (a3), 0080b000 (s0), 00000050 (s2) 47 | 48 | ===> 49 | 50 | ; flash color 51 | 800692c0 : AFB20018 SW 0080b050 (s2), 0018 (1f800350 (sp)) [1f800368] 52 | -------------------------------------------------------------------------------- /ps1 - gun flash removal/notes/project horned owl - gun flash.txt: -------------------------------------------------------------------------------- 1 | 80040dc0 5faa8a78: 1D03F8 @ Chain OP 60 - rect [#2] = 60C00000 | 00000000 00EB0100 2 | 80040e04 556815ed: 1E02F8 @ Chain OP 60 - rect [#2] = 60C00000 | 00000000 00EB0100 3 | 80040e04 555f795b: 1D02F8 @ Chain OP 60 - rect [#2] = 60C00000 | 00000000 00EB0100 4 | 5 | 6 | 7 | 8 | 9 | 8001ecac : 27BDFFE0 ADDIU 801fff78 (sp), 801fff78 (sp), ffe0 (65504), 10 | 8001ecb0 : AFB00018 SW ffffffff (s0), 0018 (801fff58 (sp)) [801fff70] 11 | 8001ecb4 : 34100001 ORI ffffffff (s0), 00000000 (r0), 0001 (1), 12 | 8001ecb8 : 3C038009 LUI 01000040 (v1), 8009 (32777), 13 | 8001ecbc : 8063A966 LB 80090000 (v1), a966 (80090000 (v1)) [8008a966] 14 | 8001ecc0 : 34020003 ORI 00800000 (v0), 00000000 (r0), 0003 (3), 15 | 16 | ===> force jmp 17 | 8001ecc4 : 1462000B BNE 00000000 (v1), 00000003 (v0), 8001ecf4, 18 | 8001ecc8 : AFBF001C SW 8001eb98 (ra), 001c (801fff58 (sp)) [801fff74] 19 | 20 | ===============> 21 | ===============> 22 | 23 | ; gun flash here 24 | 8001eccc : 00002021 ADDU 00000000 (a0), 00000000 (r0), 00000000 (r0), 25 | 8001ecd0 : 00002821 ADDU 801fff88 (a1), 00000000 (r0), 00000000 (r0), 26 | 27 | ; draw rectangle flags 28 | 8001ecd4 : 34060100 ORI 00ffffff (a2), 00000000 (r0), 0100 (256), 29 | 8001ecd8 : 340700EB ORI ff000000 (a3), 00000000 (r0), 00eb (235), 30 | 8001ecdc : 3C0200C0 LUI 00000003 (v0), 00c0 (192), 31 | 8001ece0 : AFA20010 SW 00c00000 (v0), 0010 (801fff58 (sp)) [801fff68] 32 | 8001ece4 : 0C00762A JAL 8001d8a8, 8001eb98 (ra), 33 | 8001ece8 : AFA00014 SW 00000000 (r0), 0014 (801fff58 (sp)) [801fff6c] 34 | 35 | 8001ecec : 08007B59 J 8001ed64, 36 | 8001ecf0 : 34040024 ORI 800ad844 (a0), 00000000 (r0), 0024 (36), 37 | 8001ed64 : 0C0074DC JAL 8001d370, 8001ecec (ra), 38 | 8001ed68 : 00002821 ADDU 001e02f4 (a1), 00000000 (r0), 00000000 (r0), 39 | -------------------------------------------------------------------------------- /ps1 - gun flash removal/notes/rescue shot - gun flash.txt: -------------------------------------------------------------------------------- 1 | 0001c780 671e32a9: 33FF0 @ Chain OP 02 - clear screen [#2] = 02ff9f66 | 01000000 01000140 2 | 0001c780 6bd78e39: 33F70 @ Chain OP 02 - clear screen [#2] = 02ff9f66 | 00000000 01000140 3 | 4 | 5 | 6 | 000122ac : 0C004D53 JAL 0001354c, 000122ac (ra), 7 | 000122b0 : 00000000 NOP 8 | 9 | 10 | 11 | 0001354c : 83820E8B LB 000349f4 (v0), 0e8b (00033f38 (gp)) [00034dc3] 12 | 00013550 : 27BDFFE8 ADDIU 001fffd8 (sp), 001fffd8 (sp), ffe8 (65512), 13 | 14 | ; ===> force jmp to skip flash 15 | 00013554 : 18400008 BLEZ ffffffff (v0), 00013578, 16 | 00013558 : AFBF0010 SW 000122b4 (ra), 0010 (001fffc0 (sp)) [001fffd0] 17 | 18 | 19 | ; screen flash 20 | 0001355c : 3C04FF9F LUI 04000000 (a0), ff9f (65439), 21 | 00013560 : A3800E8B SB 00000000 (r0), 0e8b (00033f38 (gp)) [00034dc3] 22 | 00013564 : 0C004D4D JAL 00013534, 000122b4 (ra), 23 | 00013568 : 34846601 ORI ff9f0000 (a0), ff9f0000 (a0), 6601 (26113), 24 | 00013534 : 3C010003 LUI 00030000 (at), 0003 (3), 25 | 00013538 : AC243FD0 SW ff9f6601 (a0), 3fd0 (00030000 (at)) [00033fd0] 26 | 0001353c : 3C010003 LUI 00030000 (at), 0003 (3), 27 | 00013540 : AC243F50 SW ff9f6601 (a0), 3f50 (00030000 (at)) [00033f50] 28 | 00013544 : 03E00008 JR 0001356c (ra), 29 | 00013548 : 00000000 NOP 30 | -------------------------------------------------------------------------------- /ps1 - gun flash removal/notes/rescue shot - mouse wheel.txt: -------------------------------------------------------------------------------- 1 | 350b8 = mouse data 2 | 3 | 0004699c : 00021023 SUBU fffacd80 (v0), 00000000 (r0), fffacd80 (v0), 4 | 5 | 6 | 7 | 8 | 9 | 000166f8 : 3C120001 LUI 00000000 (s2), 0001 (1), 10 | 000166fc : AFB6FFF4 SW 00000000 (s6), fff4 (001fffd8 (sp)) [001fffcc] 11 | 00016700 : 36521AD4 ORI 00010000 (s2), 00010000 (s2), 1ad4 (6868), 12 | 00016704 : AFB7FFF8 SW 00000000 (s7), fff8 (001fffd8 (sp)) [001fffd0] 13 | 00016708 : 27931180 ADDIU 00000000 (s3), 00033f38 (gp), 1180 (4480), 14 | 0001670c : AFBEFFFC SW 001ffff0 (fp), fffc (001fffd8 (sp)) [001fffd4] 15 | 00016710 : 27BDFFDC ADDIU 001fffd8 (sp), 001fffd8 (sp), ffdc (65500), 16 | 00016714 : 0002B402 SRL 00000000 (s6), 00008000 (v0), 10 (16), 17 | 00016718 : 3055FFFF ANDI 00000000 (s5), 00008000 (v0), ffff (65535), 18 | 19 | ; grab id + button data 20 | 0001671c : 8E6B0000 LW ffff4100 (t3), 0000 (000350dc (s3)) [000350dc] 21 | 00016720 : 26730024 ADDIU 000350b8 (s3), 000350b8 (s3), 0024 (36), 22 | 00016724 : 316800FF ANDI bfc02b50 (t0), ffff4100 (t3), 00ff (255), 23 | 00016728 : 15000071 BNE 00000000 (t0), 00000000 (r0), 000168f0, 24 | 0001672c : 000B6302 SRL 66000000 (t4), ffff4100 (t3), 0c (12), 25 | 26 | 00016730 : 9208000A LBU 00000000 (t0), 000a (0003472c (s0)) [00034736] 27 | 28 | ; check id here 29 | 00016734 : 318C000F ANDI 000ffff4 (t4), 000ffff4 (t4), 000f (15), 30 | 00016738 : 110C0002 BEQ 00000001 (t0), 00000001 (t4), 00016744, 31 | 32 | ; grab button data 33 | 0001673c : 000B4C02 SRL 000000a8 (t1), fcff1200 (t3), 10 (16), 34 | (..) 35 | 36 | 00016744 : A20C000A SB 00000001 (t4), 000a (0003472c (s0)) [00034736] 37 | 00016748 : 11800069 BEQ 00000001 (t4), 00000000 (r0), 000168f0, 38 | 0001674c : 2D820008 SLTIU 00008000 (v0), 00000001 (t4), 0008 (8), 39 | 00016750 : 10400067 BEQ 00000001 (v0), 00000000 (r0), 000168f0, 40 | 00016754 : 000CB880 SLL 00000000 (s7), 00000001 (t4), 02 (2), 41 | 00016758 : 0257B821 ADDU 00000004 (s7), 00011ad4 (s2), 00000004 (s7), 42 | 0001675c : 3929FFFF XORI 0000fcff (t1), 0000fcff (t1), ffff (65535), 43 | 44 | ; new buttons 45 | 00016760 : A6090004 SH 00000300 (t1), 0004 (0003472c (s0)) [00034730] 46 | 00016764 : 0C00A2CB JAL 00028b2c, 00012310 (ra), 47 | 00016768 : 00112100 SLL 0002f2f4 (a0), 00000000 (s1), 04 (4), 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 00039e60 : 92300102 LBU 00000001 (s0), 0102 (00034c30 (s1)) [00034d32] 56 | 00039e64 : 00004021 ADDU 00034778 (t0), 00000000 (r0), 00000000 (r0), 57 | 00039e68 : 24090001 ADDIU 00000000 (t1), 00000000 (r0), 0001 (1), 58 | 59 | ; pause button here (!) 60 | 00039e6c : 24070C00 ADDIU 00034d62 (a3), 00000000 (r0), 0c00 (3072), 61 | 62 | 00039e70 : 02203021 ADDU 00034c40 (a2), 00034c30 (s1), 00000000 (r0), 63 | 00039e74 : 24034000 ADDIU 0003474c (v1), 00000000 (r0), 4000 (16384), 64 | 00039e78 : 3C020003 LUI 00000000 (v0), 0003 (3), 65 | 00039e7c : 2444472C ADDIU 00000000 (a0), 00030000 (v0), 472c (18220), 66 | 00039e80 : 32020001 ANDI 00030000 (v0), 00000001 (s0), 0001 (1), 67 | 00039e84 : 10400015 BEQ 00000001 (v0), 00000000 (r0), 00039edc, 68 | 00039e88 : 00000000 NOP 69 | 70 | ; check mouse id 71 | 00039e8c : 9082000A LBU 00000001 (v0), 000a (0003472c (a0)) [00034736] 72 | 00039e90 : 00000000 NOP 73 | 00039e94 : 14490008 BNE 00000004 (v0), 00000001 (t1), 00039eb8, 74 | 00039e98 : 00000000 NOP 75 | 76 | ; check left / right mouse click (together) 77 | 00039e9c : 94820004 LHU 00000001 (v0), 0004 (0003472c (a0)) [00034730] 78 | 00039ea0 : 00000000 NOP 79 | 80 | ; (****) 81 | 00039ea4 : 30420C00 ANDI 00000300 (v0), 00000300 (v0), 0c00 (3072), 82 | 83 | 00039ea8 : 10470007 BEQ 00000000 (v0), 00000c00 (a3), 00039ec8, 84 | 00039eac : 00000000 NOP 85 | 00039eb0 : 0800E7B8 J 00039ee0, 86 | 00039eb4 : 00108043 SRA 00000001 (s0), 00000001 (s0), 01 (1), 87 | 88 | 89 | ; pause = left + right click 90 | 91 | 00039ec8 : 94C20038 LHU 00000c00 (v0), 0038 (00034c30 (a2)) [00034c68] 92 | 00039ecc : 01031804 SLLV 00004000 (v1), 00004000 (v1), 00000000 (t0), 93 | 00039ed0 : 00431025 OR 00000040 (v0), 00000040 (v0), 00004000 (v1), 94 | 00039ed4 : 0800E7BD J 00039ef4, 95 | 00039ed8 : A4C20038 SH 00004040 (v0), 0038 (00034c30 (a2)) [00034c68] 96 | -------------------------------------------------------------------------------- /ps1 - gun flash removal/notes/resident evil survivor - gun flash.txt: -------------------------------------------------------------------------------- 1 | 800370a8 1fbd827f: 6A0BC @ Chain OP 02 - clear screen [#2] = 02585858 | 00000000 00f00140 2 | 3 | 4 | 5 | 80011360 : 3C068006 LUI 000000b4 (a2), 8006 (32774), 6 | 80011364 : 90C62D28 LBU 80060000 (a2), 2d28 (80060000 (a2)) [80062d28] 7 | 80011368 : 3C078006 LUI ffffffff (a3), 8006 (32774), 8 | 8001136c : 90E72D2A LBU 80060000 (a3), 2d2a (80060000 (a3)) [80062d2a] 9 | 80011370 : 000210C0 SLL 00000000 (v0), 00000000 (v0), 03 (3), 10 | 11 | ; zap to skip flash 12 | 80011374 : 0C00D53A JAL 800354e8, 80011348 (ra), 13 | 80011378 : 00442021 ADDU 800637a0 (a0), 00000000 (v0), 800637a0 (a0), 14 | -------------------------------------------------------------------------------- /ps1 - gun flash removal/notes/simple 1500 - gun shooting 1.txt: -------------------------------------------------------------------------------- 1 | 8011fffc 65b8ecf6: CB5FC @ Chain OP 60 - rect [#2] = 62F0A000 | 00000000 00F00140 2 | 3 | 4 | 800ff074 : 8622000A LH 801b0000 (v0), 000a (801abb70 (s1)) [801abb7a] 5 | 800ff078 : 24120002 ADDIU 801abb88 (s2), 00000000 (r0), 0002 (2), 6 | 800ff07c : 14520004 BNE 00000000 (v0), 00000002 (s2), 800ff090, 7 | 800ff080 : 00000000 NOP 8 | 800ff084 : 3C0400F0 LUI 00000002 (a0), 00f0 (240), 9 | 10 | ; remove to skip flash 11 | 800ff088 : 0C03FA3A JAL 800fe8e8, 800ff020 (ra), 12 | 800ff08c : 3484A000 ORI 00f00000 (a0), 00f00000 (a0), a000 (40960), 13 | -------------------------------------------------------------------------------- /ps1 - gun flash removal/notes/time crisis project titan - gun flash.txt: -------------------------------------------------------------------------------- 1 | 80067f78 a41782b7: DB9BC @ Chain OP 02 - clear screen [#2] = 02ff9f66 | 01000000 00f00140 2 | 3 | 4 | 5 | 8001c03c : 3C048007 LUI 8007cf84 (a0), 8007 (32775), 6 | 8001c040 : 24842628 ADDIU 80070000 (a0), 80070000 (a0), 2628 (9768), 7 | 8001c044 : 38420001 XORI 00000001 (v0), 00000001 (v0), 0001 (1), 8 | 8001c048 : 000210C0 SLL 00000000 (v0), 00000000 (v0), 03 (3), 9 | 10 | 11 | ; remove this to stop flash 12 | 8001c04c : 0C019900 JAL 80066400, 8001c020 (ra), 13 | 8001c050 : 00442021 ADDU 80072628 (a0), 00000000 (v0), 80072628 (a0), 14 | 15 | ===> 16 | 17 | 800678c0 : 95020004 LHU 00000000 (v0), 0004 (80072628 (t0)) [8007262c] 18 | 800678c4 : 00000000 NOP 19 | 800678c8 : 3042003F ANDI 00000140 (v0), 00000140 (v0), 003f (63), 20 | 800678cc : 10400037 BEQ 00000000 (v0), 00000000 (r0), 800679ac, 21 | 800678d0 : 3C0205FF LUI 00000000 (v0), 05ff (1535), 22 | 800679ac : 3442FFFF ORI 05ff0000 (v0), 05ff0000 (v0), ffff (65535), 23 | 800679b0 : 3C0300FF LUI 000000f0 (v1), 00ff (255), 24 | 800679b4 : 3463FFFF ORI 00ff0000 (v1), 00ff0000 (v1), ffff (65535), 25 | 800679b8 : 3C06800E LUI 00000008 (a2), 800e (32782), 26 | 800679bc : 24C6B9B0 ADDIU 800e0000 (a2), 800e0000 (a2), b9b0 (47536), 27 | 800679c0 : ACC20000 SW 05ffffff (v0), 0000 (800db9b0 (a2)) [800db9b0] 28 | 800679c4 : 3C02E600 LUI 05ffffff (v0), e600 (58880), 29 | 800679c8 : 01231824 AND 00ffffff (v1), 00ff9f66 (t1), 00ffffff (v1), 30 | 800679cc : 3C050200 LUI 00ff9f66 (a1), 0200 (512), 31 | 800679d0 : ACC20004 SW e6000000 (v0), 0004 (800db9b0 (a2)) [800db9b4] 32 | 800679d4 : 3C028008 LUI e6000000 (v0), 8008 (32776), 33 | 800679d8 : 8C42D020 LW 80080000 (v0), d020 (80080000 (v0)) [8007d020] 34 | 800679dc : 00651825 OR 00ff9f66 (v1), 00ff9f66 (v1), 02000000 (a1), 35 | 800679e0 : 8C440000 LW 000000f0 (a0), 0000 (1f801814 (v0)) [1f801814] 36 | 800679e4 : 000917C2 SRL 1f801814 (v0), 00ff9f66 (t1), 1f (31), 37 | 800679e8 : 00021280 SLL 00000000 (v0), 00000000 (v0), 0a (10), 38 | 800679ec : ACC3000C SW 02ff9f66 (v1), 000c (800db9b0 (a2)) [800db9bc] 39 | -------------------------------------------------------------------------------- /ps1 - gun flash removal/pec_hacks.txt: -------------------------------------------------------------------------------- 1 | Crypt Killer (USA) 2 | 80059458 0000 3 | 8005945a 0000 4 | 5 | 6 | Elemental Gearbolt (USA) 7 | 8002449c 0000 8 | 8002449e 0000 9 | 10 | 11 | Lethal Enforcers (USA) 12 | 8003741c 0000 13 | 8003741e 0000 14 | 15 | 16 | Maximum Force (USA) 17 | 8003b404 0000 18 | 8003b406 0000 19 | 20 | 21 | Point Blank (USA) 22 | 8002350c 0000 23 | 8002350e 0000 24 | 25 | 26 | Point Blank 2 (USA) 27 | 80024108 0000 28 | 8002410a 0000 29 | 30 | 31 | Point Blank 3 (USA) 32 | 800247b0 0000 33 | 800247b2 0000 34 | 35 | 36 | Project Horned Owl (USA) 37 | d001ecc2 3402 38 | d001ecc0 0003 39 | 8001ecc6 1000 40 | 41 | 42 | Rescue Shot (Europe) 43 | d0013550 ffe8 44 | d0013552 27bd 45 | 80013556 1000 46 | 47 | 48 | Resident Evil Survivor (Europe) 49 | 80011374 0000 50 | 80011376 0000 51 | 52 | 53 | Simple 1500 - Gun Shooting 1 (Japan) 54 | 800ff088 0000 55 | 800ff08a 0000 56 | 57 | 58 | Time Crisis (USA) 59 | 800137f6 1000 60 | 61 | 62 | Time Crisis - Project Titan (USA) 63 | 8001c04c 0000 64 | 8001c04e 0000 65 | 66 | 67 | 68 | Moorhuhn X (Europe) 69 | 80037040 0000 70 | 80037042 0000 71 | 80032154 0000 72 | 80032156 0000 73 | 8003b764 0000 74 | 8003b766 0000 75 | 80031bac 0000 76 | 80031bae 0000 77 | 80031cc8 0000 78 | 80031cca 0000 79 | 80 | 80037078 0000 81 | 8003707a 0000 82 | 800321a0 0000 83 | 800321a2 0000 84 | 80031be0 0000 85 | 80031be2 0000 86 | 80031cfc 0000 87 | 80031cfe 0000 88 | .Removes gun cursor 89 | .Note - make sure to set in-game controller sensitivity high 90 | 91 | 92 | Moorhuhn 3 (Europe) 93 | 80033848 0000 94 | 8003384a 0000 95 | 800301a0 0000 96 | 800301a2 0000 97 | 8002aa04 0000 98 | 8002aa06 0000 99 | 8003213c 0000 100 | 8003213e 0000 101 | 80027814 0000 102 | 80027816 0000 103 | 800326cc 0000 104 | 800326ce 0000 105 | 800310cc 0000 106 | 800310ce 0000 107 | 800306e8 0000 108 | 800306ea 0000 109 | 110 | 80022314 0000 111 | 80022316 0000 112 | 80022334 0000 113 | 80022336 0000 114 | 115 | 80028cfc 0000 116 | 80028cfe 0000 117 | 80028d1c 0000 118 | 80028d1e 0000 119 | 120 | 80027494 0000 121 | 80027496 0000 122 | 800274ac 0000 123 | 800274ae 0000 124 | 125 | 80024fb4 0000 126 | 80024fb6 0000 127 | 80024fcc 0000 128 | 80024fce 0000 129 | 130 | 800264b8 0000 131 | 800264ba 0000 132 | 800264d8 0000 133 | 800264da 0000 134 | .Removes gun cursor 135 | .Note - make sure to set in-game controller sensitivity high 136 | 137 | 138 | Moorhuhn 2 (Europe) 139 | 800322b4 0000 140 | 800322b6 0000 141 | 80011554 0000 142 | 80011556 0000 143 | .Removes gun cursor 144 | .Note - make sure to set in-game controller sensitivity high 145 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Crypt Killer/readme.txt: -------------------------------------------------------------------------------- 1 | Crypt Killer / Henry Explorers 2 | 3 | 4 | Works 5 | > (USA) http://redump.org/disc/11085/ 6 | 7 | 8 | Converts justifiers to dual guncon 9 | 10 | 11 | 12 | Instructions: 13 | 1. Rip game cd to bin/cue or ccd/img format 14 | 2. Run bin/ppf-o-matic3 15 | 3. Drag-drop bin or img file 16 | 4. Drag-drop bin/ppf file 17 | 5. Hit patch 18 | 19 | 20 | 21 | Uninstall: 22 | 1. Run bin/ppf-o-matic3 23 | 2. Click 'undo patch' 24 | 3. Drag-drop bin or img file 25 | 4. Drag-drop bin/ppf file 26 | 5. Hit patch 27 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Crypt Killer/src/code/europe/asm - lethal enforcers.bat: -------------------------------------------------------------------------------- 1 | del *.bin 2 | 3 | spasm -b pad-guncon-1.txt pad-guncon-1.bin 4 | spasm -b pad-guncon-2.txt pad-guncon-2.bin 5 | 6 | pause 7 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Crypt Killer/src/code/europe/pad-guncon-1.txt: -------------------------------------------------------------------------------- 1 | ; 6b550-6b770 2 | ; - 6b550-6b6xx = remap buttons, id, cursor data 3 | 4 | 5 | 6 | org $8006b548 7 | 8 | j $8006b550 9 | nop 10 | 11 | 12 | 13 | or at,ra,r0 14 | 15 | 16 | ; player 1 17 | lui v0,$8006 18 | jal REMAP_GUNCON 19 | ori v0,$c758 20 | 21 | ; player 2 22 | lui v0,$8006 23 | jal REMAP_GUNCON 24 | ori v0,$c7ae 25 | 26 | 27 | or ra,at,r0 28 | 29 | 30 | 31 | ; unlatch dead gun - only 1 active at time 32 | lbu v0,$74(gp) 33 | lui v1,$8006+1 34 | 35 | bne v0,r0,DEAD_GUN2 36 | nop 37 | 38 | ; gun 1 active - shut down 2 39 | beq r0,r0,TOTAL_DONE 40 | sb r0,$c7b3(v1) 41 | 42 | ; gun 2 active - shut down 1 43 | DEAD_GUN2: 44 | sb r0,$c75d(v1) 45 | 46 | 47 | 48 | TOTAL_DONE: 49 | 50 | ; OLD code 51 | lw a0,$6c4(gp) 52 | nop 53 | j $80035ffc 54 | nop 55 | 56 | ; ======================================= 57 | ; ======================================= 58 | ; ======================================= 59 | 60 | ; at, s0, a0, v0, v1, (s1) 61 | ; - v0 = guncon data 62 | ; - at = jal return 63 | ; - s0,a0,v1 64 | 65 | REMAP_GUNCON: 66 | 67 | ; remap guncon ID to justifier 68 | ori s0,r0,$31 69 | sb s0,1(v0) 70 | 71 | 72 | 73 | ; force cursor data (guncon x-y) 74 | lh s0,4(v0) 75 | lh v1,6(v0) 76 | ;nop 77 | 78 | 79 | 80 | 81 | ; set valid latch data (1,10 = guncon offscreen normally) 82 | slti a0,s0,2 83 | beq a0,r0,REMAP_XY 84 | ori a0,r0,1 85 | 86 | 87 | ; offscreen shot - force (0,0) 88 | sh r0,4(v0) 89 | sh r0,6(v0) 90 | beq r0,r0,REMAP_GUNCON_BUTTONS 91 | sh r0,8(v0) 92 | 93 | 94 | 95 | 96 | REMAP_XY: 97 | 98 | ; signal on-screen shot 99 | sb a0,5(v0) 100 | 101 | 102 | ; x-axis 103 | 104 | ; 255 guncon (pSX rough center) --> 160 justifier --> 0 center 105 | addi s0,s0,$ffa1 106 | addi s0,s0,$ff60 107 | 108 | 109 | 110 | ; adjustment range (pSX 384 --> 320) 111 | ; - 80 / 96 (384 * 128 / 320) ===> x * (64+16) / 96 112 | sll a0,s0,6 113 | sll s0,s0,4 114 | add s0,s0,a0 115 | 116 | lui a0,0x02aa 117 | ori a0,0xaaaa 118 | mult s0,a0 119 | mfhi s0 120 | 121 | ; 0 center --> 160 justifier 122 | addi s0,s0,$a0 123 | 124 | sh s0,8(v0) 125 | 126 | 127 | 128 | ; y-axis 129 | 130 | ; 136 guncon (pSX rough center) --> 128 justifier --> 0 center 131 | addi v1,v1,$fff8 132 | addi v1,v1,$ff80 133 | 134 | ; adjustment range (pSX 240 --> 256 pal range) 135 | ; - 256 / 240 = 16/15 136 | sll v1,v1,4 137 | 138 | lui a0,0x1111 139 | ori a0,0x1111 140 | mult v1,a0 141 | mfhi v1 142 | 143 | ; 0 center --> 128 justifier 144 | addi v1,v1,$80 145 | 146 | sh v1,6(v0) 147 | 148 | 149 | 150 | 151 | REMAP_GUNCON_BUTTONS: 152 | 153 | ; remap guncon --> justifier buttons 154 | 155 | ; $2000 = trigger --> $8000 = trigger 156 | ; $0008 = A --> $4000 = auxiliary 157 | ; $4000 = B --> $0008 = start 158 | 159 | ; at,a0,ra 160 | 161 | lhu s0,2(v0) 162 | ori a0,r0,$ffff 163 | 164 | 165 | 166 | ; check trigger (low-assert) 167 | andi v1,s0,$2000 168 | bne v1,r0,REMAP_A 169 | nop 170 | 171 | ; set $8000 bit 172 | andi a0,a0,$7fff 173 | 174 | 175 | 176 | REMAP_A: 177 | ; check aux 178 | andi v1,s0,$0008 179 | bne v1,r0,REMAP_B 180 | nop 181 | 182 | ; set $4000 bit 183 | andi a0,a0,$bfff 184 | 185 | 186 | 187 | 188 | REMAP_B: 189 | ; check start 190 | andi v1,s0,$4000 191 | bne v1,r0,REMAP_BUTTONS 192 | nop 193 | 194 | ; lower $0008 bit 195 | andi a0,a0,$fff7 196 | 197 | 198 | 199 | REMAP_BUTTONS: 200 | sh a0,2(v0) 201 | 202 | ; ================================ 203 | ; ================================ 204 | ; ================================ 205 | 206 | DONE: 207 | 208 | jr ra 209 | nop 210 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Crypt Killer/src/code/europe/pad-guncon-2.txt: -------------------------------------------------------------------------------- 1 | org $800176f8 2 | 3 | ; in-game x-math 4 | j $8001771c 5 | or v0,r0,v1 6 | 7 | 8 | ; calibration p1 9 | j $8001a890 10 | or v0,r0,v1 11 | 12 | 13 | ; calibration p2 14 | j $8001aa4c 15 | or v0,r0,v1 16 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Crypt Killer/src/code/usa/asm - crypt killer.bat: -------------------------------------------------------------------------------- 1 | del *.bin 2 | 3 | spasm -b pad-guncon-1.txt pad-guncon-1.bin 4 | 5 | pause 6 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Crypt Killer/src/code/usa/pad-guncon-1.txt: -------------------------------------------------------------------------------- 1 | ; 45720-45b10 2 | ; - 45880-45axx = remap buttons, id, cursor data 3 | 4 | 5 | 6 | org $80045878 7 | 8 | j $80045880 9 | nop 10 | 11 | 12 | 13 | lui v0,$800e 14 | jal REMAP_GUNCON 15 | ori v0,$4c24 16 | 17 | 18 | ; remap latch data 19 | lbu at,5(v0) 20 | lui a0,$8002 21 | sb at,$2160(a0) 22 | 23 | ; remap xy data (game) 24 | lhu at,8(v0) 25 | lui a0,$800e 26 | lhu v1,6(v0) 27 | sh at,$4c08(a0) 28 | sh v1,$4c10(a0) 29 | 30 | ; remap xy data (stage) 31 | lhu at,8(v0) 32 | lui a0,$800b+1 33 | lhu v1,6(v0) 34 | 35 | addi at,at,$ff60 36 | sw at,$9da0(a0) 37 | addi v1,v1,$ff88 38 | sw v1,$9da8(a0) 39 | 40 | 41 | 42 | 43 | 44 | ; player 2 45 | lui v0,$800e 46 | jal REMAP_GUNCON 47 | ori v0,$4c46 48 | 49 | 50 | ; remap latch data 51 | lbu at,5(v0) 52 | lui a0,$8002 53 | sb at,$2161(a0) 54 | 55 | ; remap xy data (game) 56 | lhu at,8(v0) 57 | lui a0,$800e 58 | lhu v1,6(v0) 59 | sh at,$4c0c(a0) 60 | sh v1,$4c14(a0) 61 | 62 | ; remap xy data (stage) 63 | lhu at,8(v0) 64 | lui a0,$800b+1 65 | lhu v1,6(v0) 66 | 67 | addi at,at,$ff60 68 | sw at,$9da4(a0) 69 | addi v1,v1,$ff88 70 | sw v1,$9dac(a0) 71 | 72 | 73 | 74 | 75 | 76 | ; OLD code 77 | lw t1,$18(sp) 78 | nop 79 | j $800517a4 80 | nop 81 | 82 | ; ======================================= 83 | ; ======================================= 84 | ; ======================================= 85 | 86 | ; at, a0, s0, v0, v1 87 | ; - v0 = guncon data 88 | ; - at = temp 89 | ; - s0 = guncon x 90 | ; - v1 = guncon x 91 | 92 | 93 | REMAP_GUNCON: 94 | 95 | ; check guncon ID first 96 | lbu at,1(v0) 97 | ori s0,r0,$63 98 | bne at,s0,DONE 99 | nop 100 | 101 | 102 | 103 | ; remap guncon ID to justifier 104 | ori at,r0,$31 105 | sb at,1(v0) 106 | 107 | 108 | 109 | ; force cursor data (guncon x-y) 110 | lh s0,4(v0) 111 | lh v1,6(v0) 112 | ;nop 113 | 114 | 115 | 116 | 117 | ; set valid latch data (1,10 = guncon offscreen normally) 118 | ; - 0 = onscreen, 1 = offscreen 119 | slti at,s0,2 120 | beq at,r0,REMAP_XY 121 | ori at,r0,1 122 | 123 | 124 | ; offscreen shot - force (0,0) 125 | ;sh r0,4(v0) 126 | 127 | ; 1 = offscreen (Crypt) 128 | sb at,5(v0) 129 | 130 | sh r0,6(v0) 131 | beq r0,r0,REMAP_GUNCON_BUTTONS 132 | sh r0,8(v0) 133 | 134 | 135 | 136 | 137 | REMAP_XY: 138 | 139 | ; signal on-screen shot 140 | ;sb at,5(v0) 141 | 142 | ; 0 = offscreen (Crypt) 143 | sb r0,5(v0) 144 | 145 | 146 | 147 | 148 | ; x-axis 149 | 150 | ; 255 guncon (pSX rough center) --> 160 justifier --> 0 center 151 | addi s0,s0,$ffa1 152 | addi s0,s0,$ff60 153 | 154 | 155 | 156 | ; adjustment range (pSX 384 --> 320) 157 | ; - 80 / 96 (384 * 128 / 320) ===> x * (64+16) / 96 158 | sll at,s0,6 159 | sll s0,s0,4 160 | add s0,s0,at 161 | 162 | lui at,0x02aa 163 | ori at,0xaaaa 164 | mult s0,at 165 | mfhi s0 166 | 167 | ; 0 center --> 158 justifier 168 | addi s0,s0,$9e 169 | 170 | sh s0,8(v0) 171 | 172 | 173 | 174 | ; y-axis 175 | 176 | ; 136 guncon (pSX rough center) --> 120 justifier --> 0 center 177 | addi v1,v1,$fff0 178 | ;addi v1,v1,$ff88 179 | 180 | ; no adjustment range (pSX 240 --> 240 range) 181 | ;lui at,0x7800 182 | ;ori at,0x0000 183 | ;mult s1,at 184 | ;mfhi s1 185 | 186 | ; 0 center --> 120 justifier 187 | ;addi v1,v1,$78 188 | 189 | sh v1,6(v0) 190 | 191 | 192 | 193 | 194 | REMAP_GUNCON_BUTTONS: 195 | 196 | ; remap guncon --> justifier buttons 197 | 198 | ; $2000 = trigger --> $8000 = trigger 199 | ; $0008 = A --> $4000 = auxiliary 200 | ; $4000 = B --> $0008 = start 201 | 202 | ; at,a0,ra 203 | 204 | lhu s0,2(v0) 205 | ori a0,r0,$ffff 206 | 207 | 208 | 209 | ; check trigger (low-assert) 210 | andi v1,s0,$2000 211 | bne v1,r0,REMAP_A 212 | nop 213 | 214 | ; set $8000 bit 215 | andi a0,a0,$7fff 216 | 217 | 218 | 219 | REMAP_A: 220 | ; check aux 221 | andi v1,s0,$0008 222 | bne v1,r0,REMAP_B 223 | nop 224 | 225 | ; set $4000 bit 226 | andi a0,a0,$bfff 227 | 228 | 229 | 230 | 231 | REMAP_B: 232 | ; check start 233 | andi v1,s0,$4000 234 | bne v1,r0,REMAP_BUTTONS 235 | nop 236 | 237 | ; lower $0008 bit 238 | andi a0,a0,$fff7 239 | 240 | 241 | 242 | 243 | REMAP_BUTTONS: 244 | sh a0,2(v0) 245 | 246 | ; ================================ 247 | ; ================================ 248 | ; ================================ 249 | 250 | DONE: 251 | 252 | jr ra 253 | nop 254 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Crypt Killer/src/patcher/europe/cd2dvd.bat: -------------------------------------------------------------------------------- 1 | SET FILE_1=SLES_005.42 2 | SET FILE_2=DATA.BIN 3 | 4 | 5 | cd2dvd_patcher ___patch.txt %FILE_1% 0 6 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Crypt Killer/src/patcher/europe/patch/___.PAD: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Crypt Killer/src/patcher/europe/patch/___patch.txt: -------------------------------------------------------------------------------- 1 | ; ram offset (raw -> ram) 2 | #f800 3 | 4 | 5 | 6 | ; remap guncon --> justifier data 7 | $35ff4 8 | 54AD010800000000 9 | $6b550 10 | 2508E0030680023C67AD010C58C742340680023C67AD010CAEC7423425F82000740082930780033C030040140000000002000010B3C760A05DC760A0C406848F00000000FFD700080000000031001034010050A004005084060043840200042A0500801001000434040040A4060040A416000010080040A4050044A0A1FF102260FF1022802110000081100020800402AA02043CAAAA84341800040210800000A0001022080050A4F8FF632080FF6320001903001111043C11118434180064001018000080006320060043A402005094FFFF0434002003320200601400000000FF7F8430080003320200601400000000FFBF8430004003320200601400000000F7FF8430020044A40800E00300000000 11 | 12 | 13 | 14 | ; justifier latch reset 15 | $5ba4c 16 | 00000000 17 | 18 | 19 | 20 | ; skip x-math 21 | $176f8 22 | C75D000825100300 23 | 24 | 25 | 26 | ; skip calibration math 27 | $1a874 28 | 246A000825100300 29 | $1aa30 30 | 936A000825100300 31 | 32 | 33 | 34 | ; default calibration markers (y-axis) 35 | $6b934 36 | 8000 37 | $6b936 38 | 8000 39 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Crypt Killer/src/patcher/usa/cd2dvd.bat: -------------------------------------------------------------------------------- 1 | SET FILE_1=SLUS_003.35 2 | SET FILE_2=DATA.BIN 3 | 4 | 5 | cd2dvd_patcher ___patch.txt %FILE_1% 0 6 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Crypt Killer/src/patcher/usa/patch/___.PAD: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Crypt Killer/src/patcher/usa/patch/___patch.txt: -------------------------------------------------------------------------------- 1 | ; ram offset (raw -> ram) 2 | #1f800 3 | 4 | 5 | 6 | ; game - remap guncon --> justifier data 7 | $5179c 8 | 2016010800000000 9 | $45880 10 | 0E80023C4816010C244C4234050041900280043C602181A0080041940E80043C06004394084C81A4104C83A4080041940C80043C0600439460FF2120A09D81AC88FF6320A89D83AC0E80023C4816010C464C4234050041900280043C612181A0080041940E80043C060043940C4C81A4144C83A4080041940C80043C0600439460FF2120A49D81AC88FF6320AC9D83AC1800A98F00000000E9450108000000000100419063001034290030140000000031000134010041A004005084060043840200012A0500201001000134050041A0060040A40F000010080040A4050040A0A1FF102260FF1022800910000081100020800102AA02013CAAAA21341800010210800000A0001022080050A4F0FF6320060043A402005094FFFF0434002003320200601400000000FF7F8430080003320200601400000000FFBF8430004003320200601400000000F7FF8430020044A40800E00300000000 11 | 12 | 13 | 14 | ; game - justifier latch reset 15 | $5de1c 16 | 00000000 17 | $511bc 18 | 0000 19 | 20 | 21 | 22 | ; game - justifier ID remap 23 | $5e4f8 24 | 63 25 | 26 | 27 | 28 | ; main menu - justifier ID 29 | $744cc 30 | 63 31 | 32 | 33 | ; options menu - justifier ID 34 | $74df0 35 | 63 36 | $75610 37 | 63 38 | 39 | 40 | ; calibration ID 41 | $75ab4 42 | 63 43 | 44 | 45 | ; stage select - justifier ID 46 | $79c74 47 | 63 48 | 49 | 50 | ; stage select - latch cursor 51 | $79e2c 52 | 00000000 53 | $79e34 54 | 00000000 55 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Crypt Killer/src/src/cd2dvd_patcher/cd2dvd_patcher.dsp: -------------------------------------------------------------------------------- 1 | # Microsoft Developer Studio Project File - Name="cd2dvd_patcher" - Package Owner=<4> 2 | # Microsoft Developer Studio Generated Build File, Format Version 6.00 3 | # ** DO NOT EDIT ** 4 | 5 | # TARGTYPE "Win32 (x86) Console Application" 0x0103 6 | 7 | CFG=cd2dvd_patcher - Win32 Debug 8 | !MESSAGE This is not a valid makefile. To build this project using NMAKE, 9 | !MESSAGE use the Export Makefile command and run 10 | !MESSAGE 11 | !MESSAGE NMAKE /f "cd2dvd_patcher.mak". 12 | !MESSAGE 13 | !MESSAGE You can specify a configuration when running NMAKE 14 | !MESSAGE by defining the macro CFG on the command line. For example: 15 | !MESSAGE 16 | !MESSAGE NMAKE /f "cd2dvd_patcher.mak" CFG="cd2dvd_patcher - Win32 Debug" 17 | !MESSAGE 18 | !MESSAGE Possible choices for configuration are: 19 | !MESSAGE 20 | !MESSAGE "cd2dvd_patcher - Win32 Release" (based on "Win32 (x86) Console Application") 21 | !MESSAGE "cd2dvd_patcher - Win32 Debug" (based on "Win32 (x86) Console Application") 22 | !MESSAGE 23 | 24 | # Begin Project 25 | # PROP AllowPerConfigDependencies 0 26 | # PROP Scc_ProjName "" 27 | # PROP Scc_LocalPath "" 28 | CPP=cl.exe 29 | RSC=rc.exe 30 | 31 | !IF "$(CFG)" == "cd2dvd_patcher - Win32 Release" 32 | 33 | # PROP BASE Use_MFC 0 34 | # PROP BASE Use_Debug_Libraries 0 35 | # PROP BASE Output_Dir "Release" 36 | # PROP BASE Intermediate_Dir "Release" 37 | # PROP BASE Target_Dir "" 38 | # PROP Use_MFC 0 39 | # PROP Use_Debug_Libraries 0 40 | # PROP Output_Dir "Release" 41 | # PROP Intermediate_Dir "Release" 42 | # PROP Ignore_Export_Lib 0 43 | # PROP Target_Dir "" 44 | # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c 45 | # ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c 46 | # ADD BASE RSC /l 0x409 /d "NDEBUG" 47 | # ADD RSC /l 0x409 /d "NDEBUG" 48 | BSC32=bscmake.exe 49 | # ADD BASE BSC32 /nologo 50 | # ADD BSC32 /nologo 51 | LINK32=link.exe 52 | # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 53 | # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"cd2dvd_patcher.exe" 54 | 55 | !ELSEIF "$(CFG)" == "cd2dvd_patcher - Win32 Debug" 56 | 57 | # PROP BASE Use_MFC 0 58 | # PROP BASE Use_Debug_Libraries 1 59 | # PROP BASE Output_Dir "Debug" 60 | # PROP BASE Intermediate_Dir "Debug" 61 | # PROP BASE Target_Dir "" 62 | # PROP Use_MFC 0 63 | # PROP Use_Debug_Libraries 1 64 | # PROP Output_Dir "Debug" 65 | # PROP Intermediate_Dir "Debug" 66 | # PROP Ignore_Export_Lib 0 67 | # PROP Target_Dir "" 68 | # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c 69 | # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c 70 | # ADD BASE RSC /l 0x409 /d "_DEBUG" 71 | # ADD RSC /l 0x409 /d "_DEBUG" 72 | BSC32=bscmake.exe 73 | # ADD BASE BSC32 /nologo 74 | # ADD BSC32 /nologo 75 | LINK32=link.exe 76 | # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept 77 | # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"cd2dvd_patcher.exe" /pdbtype:sept 78 | 79 | !ENDIF 80 | 81 | # Begin Target 82 | 83 | # Name "cd2dvd_patcher - Win32 Release" 84 | # Name "cd2dvd_patcher - Win32 Debug" 85 | # Begin Group "Source Files" 86 | 87 | # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" 88 | # Begin Source File 89 | 90 | SOURCE=.\patcher.cpp 91 | # End Source File 92 | # End Group 93 | # Begin Group "Header Files" 94 | 95 | # PROP Default_Filter "h;hpp;hxx;hm;inl" 96 | # End Group 97 | # Begin Group "Resource Files" 98 | 99 | # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" 100 | # End Group 101 | # End Target 102 | # End Project 103 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Crypt Killer/src/src/cd2dvd_patcher/cd2dvd_patcher.dsw: -------------------------------------------------------------------------------- 1 | Microsoft Developer Studio Workspace File, Format Version 6.00 2 | # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! 3 | 4 | ############################################################################### 5 | 6 | Project: "cd2dvd_patcher"=".\cd2dvd_patcher.dsp" - Package Owner=<4> 7 | 8 | Package=<5> 9 | {{{ 10 | }}} 11 | 12 | Package=<4> 13 | {{{ 14 | }}} 15 | 16 | ############################################################################### 17 | 18 | Global: 19 | 20 | Package=<5> 21 | {{{ 22 | }}} 23 | 24 | Package=<3> 25 | {{{ 26 | }}} 27 | 28 | ############################################################################### 29 | 30 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Die Hard Trilogy/readme.txt: -------------------------------------------------------------------------------- 1 | Die Hard Trilogy 2 | 3 | 4 | Works 5 | > (USA 1.1 - Greatest Hits) http://redump.org/disc/2011/ 6 | > (Europe) http://redump.org/disc/894/ 7 | 8 | 9 | Converts justifiers to dual guncon 10 | 11 | 12 | 13 | Instructions: 14 | 1. Rip game cd to bin/cue or ccd/img format 15 | 2. Run bin/ppf-o-matic3 16 | 3. Drag-drop bin or img file 17 | 4. Drag-drop bin/ppf file 18 | 5. Hit patch 19 | 20 | 21 | 22 | Uninstall: 23 | 1. Run bin/ppf-o-matic3 24 | 2. Click 'undo patch' 25 | 3. Drag-drop bin or img file 26 | 4. Drag-drop bin/ppf file 27 | 5. Hit patch 28 | 29 | 30 | 31 | NOTE: 32 | - Hold Trigger + Aux = fire rockets 33 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Die Hard Trilogy/src/code/europe/pad-guncon-1.txt: -------------------------------------------------------------------------------- 1 | ; 89a40-89ee0 = remap buttons, id, cursor data 2 | 3 | 4 | 5 | org $800756b0 6 | 7 | j $80089a40 8 | nop 9 | 10 | 11 | 12 | ; get player address 13 | lui v1,$8001 14 | ori v1,v1,$2f00 15 | 16 | ; ================================ 17 | ; ================================ 18 | ; ================================ 19 | 20 | ; v1,a1,a3,t0,t8 21 | ; - v1 = guncon data 22 | ; - t8 = temp 23 | ; - a1 = guncon x 24 | ; - a3 = guncon y 25 | 26 | ; remap guncon ID to justifier 27 | ori t8,r0,$31 28 | sb t8,1(v1) 29 | 30 | 31 | 32 | ; force cursor data (guncon x-y) 33 | lh a1,4(v1) 34 | lh a3,6(v1) 35 | ;nop 36 | 37 | 38 | 39 | 40 | ; set valid latch data (1,10 = guncon offscreen normally) 41 | slti t8,a1,2 42 | beq t8,r0,REMAP_XY 43 | ori t8,r0,1 44 | 45 | 46 | ; offscreen shot - force (0,0) 47 | sh r0,4(v1) 48 | sh r0,6(v1) 49 | beq r0,r0,REMAP_GUNCON_BUTTONS 50 | sh r0,8(v1) 51 | 52 | 53 | 54 | 55 | REMAP_XY: 56 | 57 | ; signal on-screen shot 58 | sb t8,5(v1) 59 | 60 | 61 | ; x-axis 62 | 63 | ; 255 guncon (pSX rough center) --> 256 justifier --> 0 center 64 | addi a1,a1,$0001 65 | addi a1,a1,$ff00 66 | 67 | ; note: 512x240 screen 68 | 69 | ; adjustment range (pSX 384 --> 512) 70 | ; - 128 / 96 (384 * 128 / 512) 71 | sll a1,a1,7 72 | 73 | lui t8,0x02aa 74 | ori t8,0xaaaa 75 | mult a1,t8 76 | mfhi a1 77 | 78 | ; 0 center --> 256 justifier 79 | addi a1,a1,$100 80 | 81 | sh a1,8(v1) 82 | 83 | 84 | 85 | ; y-axis 86 | 87 | ; 135 guncon (pSX rough center) --> 128 justifier --> 0 center 88 | addi a3,a3,$ffed 89 | addi a3,a3,$ff80 90 | 91 | ; adjustment range (pSX 240 --> 256 pal range) 92 | ; - 256 / 240 = 16/15 93 | sll a3,a3,4 94 | 95 | lui t8,0x1111 96 | ori t8,0x1111 97 | mult a3,t8 98 | mfhi a3 99 | 100 | ; 0 center --> 128+12 justifier 101 | addi a3,a3,$8c 102 | 103 | sh a3,6(v1) 104 | 105 | 106 | 107 | 108 | REMAP_GUNCON_BUTTONS: 109 | 110 | ; remap guncon --> justifier buttons 111 | 112 | ; $2000 = trigger --> $8000 = trigger 113 | ; $0008 = A --> $4000 = auxiliary 114 | ; $4000 = B --> $0008 = start 115 | 116 | lhu a1,2(v1) 117 | ori a3,r0,$ffff 118 | 119 | 120 | 121 | ; check trigger (low-assert) 122 | andi t8,a1,$2000 123 | bne t8,r0,REMAP_A 124 | nop 125 | 126 | ; set $8000 bit 127 | andi a3,a3,$7fff 128 | 129 | 130 | 131 | REMAP_A: 132 | ; check aux 133 | andi t8,a1,$0008 134 | bne t8,r0,REMAP_B 135 | nop 136 | 137 | ; set $4000 bit 138 | andi a3,a3,$bfff 139 | 140 | 141 | 142 | 143 | REMAP_B: 144 | ; check start 145 | andi t8,a1,$4000 146 | bne t8,r0,REMAP_BUTTONS 147 | nop 148 | 149 | ; lower $0008 bit 150 | andi a3,a3,$fff7 151 | 152 | 153 | 154 | REMAP_BUTTONS: 155 | sh a3,2(v1) 156 | 157 | ; ================================ 158 | ; ================================ 159 | ; ================================ 160 | 161 | DONE: 162 | 163 | ; OLD code 164 | lui v1,$800c 165 | lh v1,$9ca8(v1) 166 | ori v0,r0,3 167 | 168 | j $800756bc 169 | nop 170 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Die Hard Trilogy/src/code/europe/pad-guncon-2.txt: -------------------------------------------------------------------------------- 1 | ; - 42a40-42e40 = remap buttons, id, cursor data 2 | 3 | 4 | 5 | org $80033384 6 | 7 | j $80042a40 8 | nop 9 | 10 | 11 | 12 | ; get player address 13 | lui v1,$8001 14 | ori v1,v1,$2f00 15 | 16 | ; ================================ 17 | ; ================================ 18 | ; ================================ 19 | 20 | ; v1,v0,at,ra 21 | ; - v1 = guncon data 22 | ; - ra = temp 23 | 24 | ; remap guncon ID to justifier 25 | ori a1,r0,$31 26 | sb a1,1(v1) 27 | 28 | 29 | 30 | ; force cursor data (guncon x-y) 31 | lh a1,4(v1) 32 | lh a3,6(v1) 33 | ;nop 34 | 35 | 36 | 37 | ; remap guncon --> justifier buttons 38 | 39 | ; $2000 = trigger --> $8000 = trigger 40 | ; $0008 = A --> $4000 = auxiliary 41 | ; $4000 = B --> $0008 = start 42 | 43 | lhu v0,2(v1) 44 | ori at,r0,$ffff 45 | 46 | 47 | 48 | ; check trigger (low-assert) 49 | andi ra,v0,$2000 50 | bne ra,r0,REMAP_A 51 | nop 52 | 53 | ; set $8000 bit 54 | andi at,at,$7fff 55 | 56 | 57 | 58 | REMAP_A: 59 | ; check aux 60 | andi ra,v0,$0008 61 | bne ra,r0,REMAP_B 62 | nop 63 | 64 | ; set $4000 bit 65 | andi at,at,$bfff 66 | 67 | 68 | 69 | 70 | REMAP_B: 71 | ; check start 72 | andi ra,v0,$4000 73 | bne ra,r0,REMAP_BUTTONS 74 | nop 75 | 76 | ; lower $0008 bit 77 | andi at,at,$fff7 78 | 79 | 80 | 81 | REMAP_BUTTONS: 82 | sh at,2(v1) 83 | 84 | ; ================================ 85 | ; ================================ 86 | ; ================================ 87 | 88 | DONE: 89 | 90 | ; OLD code 91 | lui v1,$8005 92 | lh v1,$57d8(v1) 93 | ori v0,r0,3 94 | 95 | j $80033390 96 | nop 97 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Die Hard Trilogy/src/code/usa - gh/asm - die hard trilogy.bat: -------------------------------------------------------------------------------- 1 | del *.bin 2 | 3 | spasm -b pad-guncon-1.txt pad-guncon-1.bin 4 | spasm -b pad-guncon-2.txt pad-guncon-2.bin 5 | 6 | pause 7 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Die Hard Trilogy/src/code/usa - gh/pad-guncon-1.txt: -------------------------------------------------------------------------------- 1 | ; 88bf0-88e20 + 88e40-892f0 + 89380-89420 2 | 3 | ; - 88e40-88fxx = remap buttons, id, cursor data 4 | 5 | 6 | 7 | org $80074e90 8 | 9 | j $80088e40 10 | nop 11 | 12 | 13 | 14 | ; get player address 15 | lui v1,$8001 16 | ori v1,v1,$2f00 17 | 18 | ; ================================ 19 | ; ================================ 20 | ; ================================ 21 | 22 | ; v1,a1,a3,t0,t8 23 | ; - v1 = guncon data 24 | ; - t8 = temp 25 | ; - a1 = guncon x 26 | ; - a3 = guncon y 27 | 28 | ; remap guncon ID to justifier 29 | ori t8,r0,$31 30 | sb t8,1(v1) 31 | 32 | 33 | 34 | ; force cursor data (guncon x-y) 35 | lh a1,4(v1) 36 | lh a3,6(v1) 37 | ;nop 38 | 39 | 40 | 41 | 42 | ; set valid latch data (1,10 = guncon offscreen normally) 43 | slti t8,a1,2 44 | beq t8,r0,REMAP_XY 45 | ori t8,r0,1 46 | 47 | 48 | ; offscreen shot - force (0,0) 49 | sh r0,4(v1) 50 | sh r0,6(v1) 51 | beq r0,r0,REMAP_GUNCON_BUTTONS 52 | sh r0,8(v1) 53 | 54 | 55 | 56 | 57 | REMAP_XY: 58 | 59 | ; signal on-screen shot 60 | sb t8,5(v1) 61 | 62 | 63 | ; x-axis 64 | 65 | ; 255 guncon (pSX rough center) --> 256 justifier --> 0 center 66 | addi a1,a1,$0001 67 | addi a1,a1,$ff00 68 | 69 | ; note: 512x240 screen 70 | 71 | ; adjustment range (pSX 384 --> 512) 72 | ; - 128 / 96 (384 * 128 / 512) 73 | sll a1,a1,7 74 | 75 | lui t8,0x02aa 76 | ori t8,0xaaaa 77 | mult a1,t8 78 | mfhi a1 79 | 80 | ; 0 center --> 256 justifier 81 | addi a1,a1,$100 82 | 83 | sh a1,8(v1) 84 | 85 | 86 | 87 | ; y-axis 88 | 89 | ; 135 guncon (pSX rough center) --> 116 justifier --> 0 center 90 | addi a3,a3,$ffed 91 | ;addi a3,a3,$ff8c 92 | 93 | ; no adjustment range (pSX 240 --> 240 range) 94 | 95 | ; 0 center --> 116 justifier 96 | ;addi a3,a3,$74 97 | 98 | sh a3,6(v1) 99 | 100 | 101 | 102 | 103 | REMAP_GUNCON_BUTTONS: 104 | 105 | ; remap guncon --> justifier buttons 106 | 107 | ; $2000 = trigger --> $8000 = trigger 108 | ; $0008 = A --> $4000 = auxiliary 109 | ; $4000 = B --> $0008 = start 110 | 111 | lhu a1,2(v1) 112 | ori a3,r0,$ffff 113 | 114 | 115 | 116 | ; check trigger (low-assert) 117 | andi t8,a1,$2000 118 | bne t8,r0,REMAP_A 119 | nop 120 | 121 | ; set $8000 bit 122 | andi a3,a3,$7fff 123 | 124 | 125 | 126 | REMAP_A: 127 | ; check aux 128 | andi t8,a1,$0008 129 | bne t8,r0,REMAP_B 130 | nop 131 | 132 | ; set $4000 bit 133 | andi a3,a3,$bfff 134 | 135 | 136 | 137 | 138 | REMAP_B: 139 | ; check start 140 | andi t8,a1,$4000 141 | bne t8,r0,REMAP_BUTTONS 142 | nop 143 | 144 | ; lower $0008 bit 145 | andi a3,a3,$fff7 146 | 147 | 148 | 149 | REMAP_BUTTONS: 150 | sh a3,2(v1) 151 | 152 | ; ================================ 153 | ; ================================ 154 | ; ================================ 155 | 156 | DONE: 157 | 158 | ; OLD code 159 | lui v1,$800b 160 | lh v1,$73a0(v1) 161 | ori v0,r0,3 162 | 163 | j $80074e9c 164 | nop 165 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Die Hard Trilogy/src/code/usa - gh/pad-guncon-2.txt: -------------------------------------------------------------------------------- 1 | ; - 426e0-42ad0 = remap buttons, id, cursor data 2 | 3 | 4 | 5 | org $800331b8 6 | 7 | j $800426e0 8 | nop 9 | 10 | 11 | 12 | ; get player address 13 | lui v1,$8001 14 | ori v1,v1,$2f00 15 | 16 | ; ================================ 17 | ; ================================ 18 | ; ================================ 19 | 20 | ; v1,v0,at,ra 21 | ; - v1 = guncon data 22 | ; - ra = temp 23 | 24 | ; remap guncon ID to justifier 25 | ori t8,r0,$31 26 | sb t8,1(v1) 27 | 28 | 29 | 30 | ; force cursor data (guncon x-y) 31 | lh a1,4(v1) 32 | lh a3,6(v1) 33 | ;nop 34 | 35 | 36 | 37 | ; remap guncon --> justifier buttons 38 | 39 | ; $2000 = trigger --> $8000 = trigger 40 | ; $0008 = A --> $4000 = auxiliary 41 | ; $4000 = B --> $0008 = start 42 | 43 | lhu v0,2(v1) 44 | ori at,r0,$ffff 45 | 46 | 47 | 48 | ; check trigger (low-assert) 49 | andi ra,v0,$2000 50 | bne ra,r0,REMAP_A 51 | nop 52 | 53 | ; set $8000 bit 54 | andi at,at,$7fff 55 | 56 | 57 | 58 | REMAP_A: 59 | ; check aux 60 | andi ra,v0,$0008 61 | bne ra,r0,REMAP_B 62 | nop 63 | 64 | ; set $4000 bit 65 | andi at,at,$bfff 66 | 67 | 68 | 69 | 70 | REMAP_B: 71 | ; check start 72 | andi ra,v0,$4000 73 | bne ra,r0,REMAP_BUTTONS 74 | nop 75 | 76 | ; lower $0008 bit 77 | andi at,at,$fff7 78 | 79 | 80 | 81 | REMAP_BUTTONS: 82 | sh at,2(v1) 83 | 84 | ; ================================ 85 | ; ================================ 86 | ; ================================ 87 | 88 | DONE: 89 | 90 | ; OLD code 91 | lui v1,$8005 92 | lh v1,$1e88(v1) 93 | ori v0,r0,3 94 | 95 | j $800331c4 96 | nop 97 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Die Hard Trilogy/src/patcher/europe/cd2dvd.bat: -------------------------------------------------------------------------------- 1 | SET FILE_1=DH2.EXE 2 | SET FILE_2=LOADER.EXE 3 | 4 | 5 | cd2dvd_patcher ___patch_dh2.txt %FILE_1% 0 6 | cd2dvd_patcher ___patch_loader.txt %FILE_2% 0 7 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Die Hard Trilogy/src/patcher/europe/patch/___.PAD: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Die Hard Trilogy/src/patcher/europe/patch/___patch_dh2.txt: -------------------------------------------------------------------------------- 1 | ; ram offset (raw -> ram) 2 | #1CD00 3 | 4 | 5 | ; remap guncon --> justifier data 6 | $756b0 7 | 9026020800000000 8 | $89a40 9 | 0180033C002F633431001834010078A004006584060067840200B8280500001301001834040060A4060060A414000010080060A4050078A00100A52000FFA520C0290500AA02183CAAAA18371800B800102800000001A520080065A4EDFFE72080FFE720003907001111183C111118371800F800103800008C00E720060067A402006594FFFF07340020B8300200001700000000FF7FE7300800B8300200001700000000FFBFE7300040B8300200001700000000F7FFE730020067A40C80033CA89C638403000234AFD5010800000000 10 | 11 | 12 | 13 | ; remove latch reset 14 | $1dafc 15 | 00000000 16 | 17 | 18 | 19 | ; remap justifier ID 20 | $756a4 21 | 63 22 | 23 | 24 | 25 | ; remove justifier math 26 | $75808 27 | 0100 28 | $7580c 29 | 0000 30 | $75810 31 | 00180600 32 | $7584c 33 | 0000 34 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Die Hard Trilogy/src/patcher/europe/patch/___patch_loader.txt: -------------------------------------------------------------------------------- 1 | ; ram offset (raw -> ram) 2 | ; - 16674 --> 33374 3 | #1cd00 4 | 5 | 6 | 7 | ; remap justifier ID 8 | $33378 9 | 63 10 | 11 | 12 | 13 | ; remap guncon -> justifier data 14 | $33384 15 | 900A010800000000 16 | $42a40 17 | 0180033C002F633431000534010065A0040065840600678402006294FFFF013400205F300200E01700000000FF7F213008005F300200E01700000000FFBF213000405F300200E01700000000F7FF2130020061A40580033CD857638403000234E4CC000800000000 18 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Die Hard Trilogy/src/patcher/usa - gh/cd2dvd.bat: -------------------------------------------------------------------------------- 1 | SET FILE_1=DH2.EXE 2 | SET FILE_2=LOADER.EXE 3 | 4 | 5 | cd2dvd_patcher ___patch_dh2.txt %FILE_1% 0 6 | cd2dvd_patcher ___patch_loader.txt %FILE_2% 0 7 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Die Hard Trilogy/src/patcher/usa - gh/patch/___.PAD: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Die Hard Trilogy/src/patcher/usa - gh/patch/___patch_dh2.txt: -------------------------------------------------------------------------------- 1 | ; ram offset (raw -> ram) 2 | ; 6c360 -> 89060 3 | #1CD00 4 | 5 | 6 | ; remap guncon --> justifier data 7 | $74e90 8 | 9023020800000000 9 | $88e40 10 | 0180033C002F633431001834010078A004006584060067840200B8280500001301001834040060A4060060A40D000010080060A4050078A00100A52000FFA520C0290500AA02183CAAAA18371800B800102800000001A520080065A4EDFFE720060067A402006594FFFF07340020B8300200001700000000FF7FE7300800B8300200001700000000FFBFE7300040B8300200001700000000F7FFE730020067A40B80033CA073638403000234A7D3010800000000 11 | 12 | 13 | 14 | ; remove latch reset 15 | $1dafc 16 | 00000000 17 | 18 | 19 | 20 | ; remap justifier ID 21 | $74e84 22 | 63 23 | 24 | 25 | 26 | ; remove justifier math 27 | $74ff0 28 | 0100 29 | $74ff4 30 | 0000 31 | $74ff8 32 | 00180600 33 | $75030 34 | 0000 35 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Die Hard Trilogy/src/patcher/usa - gh/patch/___patch_loader.txt: -------------------------------------------------------------------------------- 1 | ; ram offset (raw -> ram) 2 | ; 164c8 -> 331c8 3 | #1CD00 4 | 5 | 6 | 7 | ; remap guncon --> justifier data 8 | $331b8 9 | B809010800000000 10 | $426e0 11 | 0180033C002F633431001834010078A0040065840600678402006294FFFF013400205F300200E01700000000FF7F213008005F300200E01700000000FFBF213000405F300200E01700000000F7FF2130020061A40580033C881E63840300023471CC000800000000 12 | 13 | 14 | 15 | ; remap justifier ID 16 | $331ac 17 | 63 18 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Die Hard Trilogy/src/src/cd2dvd_patcher/cd2dvd_patcher.dsp: -------------------------------------------------------------------------------- 1 | # Microsoft Developer Studio Project File - Name="cd2dvd_patcher" - Package Owner=<4> 2 | # Microsoft Developer Studio Generated Build File, Format Version 6.00 3 | # ** DO NOT EDIT ** 4 | 5 | # TARGTYPE "Win32 (x86) Console Application" 0x0103 6 | 7 | CFG=cd2dvd_patcher - Win32 Debug 8 | !MESSAGE This is not a valid makefile. To build this project using NMAKE, 9 | !MESSAGE use the Export Makefile command and run 10 | !MESSAGE 11 | !MESSAGE NMAKE /f "cd2dvd_patcher.mak". 12 | !MESSAGE 13 | !MESSAGE You can specify a configuration when running NMAKE 14 | !MESSAGE by defining the macro CFG on the command line. For example: 15 | !MESSAGE 16 | !MESSAGE NMAKE /f "cd2dvd_patcher.mak" CFG="cd2dvd_patcher - Win32 Debug" 17 | !MESSAGE 18 | !MESSAGE Possible choices for configuration are: 19 | !MESSAGE 20 | !MESSAGE "cd2dvd_patcher - Win32 Release" (based on "Win32 (x86) Console Application") 21 | !MESSAGE "cd2dvd_patcher - Win32 Debug" (based on "Win32 (x86) Console Application") 22 | !MESSAGE 23 | 24 | # Begin Project 25 | # PROP AllowPerConfigDependencies 0 26 | # PROP Scc_ProjName "" 27 | # PROP Scc_LocalPath "" 28 | CPP=cl.exe 29 | RSC=rc.exe 30 | 31 | !IF "$(CFG)" == "cd2dvd_patcher - Win32 Release" 32 | 33 | # PROP BASE Use_MFC 0 34 | # PROP BASE Use_Debug_Libraries 0 35 | # PROP BASE Output_Dir "Release" 36 | # PROP BASE Intermediate_Dir "Release" 37 | # PROP BASE Target_Dir "" 38 | # PROP Use_MFC 0 39 | # PROP Use_Debug_Libraries 0 40 | # PROP Output_Dir "Release" 41 | # PROP Intermediate_Dir "Release" 42 | # PROP Ignore_Export_Lib 0 43 | # PROP Target_Dir "" 44 | # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c 45 | # ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c 46 | # ADD BASE RSC /l 0x409 /d "NDEBUG" 47 | # ADD RSC /l 0x409 /d "NDEBUG" 48 | BSC32=bscmake.exe 49 | # ADD BASE BSC32 /nologo 50 | # ADD BSC32 /nologo 51 | LINK32=link.exe 52 | # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 53 | # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"cd2dvd_patcher.exe" 54 | 55 | !ELSEIF "$(CFG)" == "cd2dvd_patcher - Win32 Debug" 56 | 57 | # PROP BASE Use_MFC 0 58 | # PROP BASE Use_Debug_Libraries 1 59 | # PROP BASE Output_Dir "Debug" 60 | # PROP BASE Intermediate_Dir "Debug" 61 | # PROP BASE Target_Dir "" 62 | # PROP Use_MFC 0 63 | # PROP Use_Debug_Libraries 1 64 | # PROP Output_Dir "Debug" 65 | # PROP Intermediate_Dir "Debug" 66 | # PROP Ignore_Export_Lib 0 67 | # PROP Target_Dir "" 68 | # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c 69 | # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c 70 | # ADD BASE RSC /l 0x409 /d "_DEBUG" 71 | # ADD RSC /l 0x409 /d "_DEBUG" 72 | BSC32=bscmake.exe 73 | # ADD BASE BSC32 /nologo 74 | # ADD BSC32 /nologo 75 | LINK32=link.exe 76 | # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept 77 | # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"cd2dvd_patcher.exe" /pdbtype:sept 78 | 79 | !ENDIF 80 | 81 | # Begin Target 82 | 83 | # Name "cd2dvd_patcher - Win32 Release" 84 | # Name "cd2dvd_patcher - Win32 Debug" 85 | # Begin Group "Source Files" 86 | 87 | # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" 88 | # Begin Source File 89 | 90 | SOURCE=.\patcher.cpp 91 | # End Source File 92 | # End Group 93 | # Begin Group "Header Files" 94 | 95 | # PROP Default_Filter "h;hpp;hxx;hm;inl" 96 | # End Group 97 | # Begin Group "Resource Files" 98 | 99 | # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" 100 | # End Group 101 | # End Target 102 | # End Project 103 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Die Hard Trilogy/src/src/cd2dvd_patcher/cd2dvd_patcher.dsw: -------------------------------------------------------------------------------- 1 | Microsoft Developer Studio Workspace File, Format Version 6.00 2 | # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! 3 | 4 | ############################################################################### 5 | 6 | Project: "cd2dvd_patcher"=".\cd2dvd_patcher.dsp" - Package Owner=<4> 7 | 8 | Package=<5> 9 | {{{ 10 | }}} 11 | 12 | Package=<4> 13 | {{{ 14 | }}} 15 | 16 | ############################################################################### 17 | 18 | Global: 19 | 20 | Package=<5> 21 | {{{ 22 | }}} 23 | 24 | Package=<3> 25 | {{{ 26 | }}} 27 | 28 | ############################################################################### 29 | 30 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Lethal Enforcers/readme.txt: -------------------------------------------------------------------------------- 1 | Lethal Enforcers I & II 2 | 3 | 4 | Works 5 | > (USA) http://redump.org/disc/16687/ 6 | > (Europe) http://redump.org/disc/15678/ 7 | 8 | 9 | Converts justifiers to dual guncon 10 | 11 | 12 | 13 | Instructions: 14 | 1. Rip game cd to bin/cue or ccd/img format 15 | 2. Run bin/ppf-o-matic3 16 | 3. Drag-drop bin or img file 17 | 4. Drag-drop bin/ppf file 18 | 5. Hit patch 19 | 20 | 21 | 22 | Uninstall: 23 | 1. Run bin/ppf-o-matic3 24 | 2. Click 'undo patch' 25 | 3. Drag-drop bin or img file 26 | 4. Drag-drop bin/ppf file 27 | 5. Hit patch 28 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Lethal Enforcers/src/code/europe/asm - lethal enforcers.bat: -------------------------------------------------------------------------------- 1 | del *.bin 2 | 3 | spasm -b pad-guncon-1.txt pad-guncon-1.bin 4 | spasm -b pad-guncon-2.txt pad-guncon-2.bin 5 | 6 | pause 7 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Lethal Enforcers/src/code/europe/pad-guncon-1.txt: -------------------------------------------------------------------------------- 1 | ; 6b550-6b770 2 | ; - 6b550-6b6xx = remap buttons, id, cursor data 3 | 4 | 5 | 6 | org $8006b548 7 | 8 | j $8006b550 9 | nop 10 | 11 | 12 | 13 | or at,ra,r0 14 | 15 | 16 | ; player 1 17 | lui v0,$8006 18 | jal REMAP_GUNCON 19 | ori v0,$c758 20 | 21 | ; player 2 22 | lui v0,$8006 23 | jal REMAP_GUNCON 24 | ori v0,$c7ae 25 | 26 | 27 | or ra,at,r0 28 | 29 | 30 | 31 | ; unlatch dead gun - only 1 active at time 32 | lbu v0,$74(gp) 33 | lui v1,$8006+1 34 | 35 | bne v0,r0,DEAD_GUN2 36 | nop 37 | 38 | ; gun 1 active - shut down 2 39 | beq r0,r0,TOTAL_DONE 40 | sb r0,$c7b3(v1) 41 | 42 | ; gun 2 active - shut down 1 43 | DEAD_GUN2: 44 | sb r0,$c75d(v1) 45 | 46 | 47 | 48 | TOTAL_DONE: 49 | 50 | ; OLD code 51 | lw a0,$6c4(gp) 52 | nop 53 | j $80035ffc 54 | nop 55 | 56 | ; ======================================= 57 | ; ======================================= 58 | ; ======================================= 59 | 60 | ; at, s0, a0, v0, v1, (s1) 61 | ; - v0 = guncon data 62 | ; - at = jal return 63 | ; - s0,a0,v1 64 | 65 | REMAP_GUNCON: 66 | 67 | ; remap guncon ID to justifier 68 | ori s0,r0,$31 69 | sb s0,1(v0) 70 | 71 | 72 | 73 | ; force cursor data (guncon x-y) 74 | lh s0,4(v0) 75 | lh v1,6(v0) 76 | ;nop 77 | 78 | 79 | 80 | 81 | ; set valid latch data (1,10 = guncon offscreen normally) 82 | slti a0,s0,2 83 | beq a0,r0,REMAP_XY 84 | ori a0,r0,1 85 | 86 | 87 | ; offscreen shot - force (0,0) 88 | sh r0,4(v0) 89 | sh r0,6(v0) 90 | beq r0,r0,REMAP_GUNCON_BUTTONS 91 | sh r0,8(v0) 92 | 93 | 94 | 95 | 96 | REMAP_XY: 97 | 98 | ; signal on-screen shot 99 | sb a0,5(v0) 100 | 101 | 102 | ; x-axis 103 | 104 | ; 255 guncon (pSX rough center) --> 160 justifier --> 0 center 105 | addi s0,s0,$ffa1 106 | addi s0,s0,$ff60 107 | 108 | 109 | 110 | ; adjustment range (pSX 384 --> 320) 111 | ; - 80 / 96 (384 * 128 / 320) ===> x * (64+16) / 96 112 | sll a0,s0,6 113 | sll s0,s0,4 114 | add s0,s0,a0 115 | 116 | lui a0,0x02aa 117 | ori a0,0xaaaa 118 | mult s0,a0 119 | mfhi s0 120 | 121 | ; 0 center --> 160 justifier 122 | addi s0,s0,$a0 123 | 124 | sh s0,8(v0) 125 | 126 | 127 | 128 | ; y-axis 129 | 130 | ; 136 guncon (pSX rough center) --> 128 justifier --> 0 center 131 | addi v1,v1,$fff8 132 | addi v1,v1,$ff80 133 | 134 | ; adjustment range (pSX 240 --> 256 pal range) 135 | ; - 256 / 240 = 16/15 136 | sll v1,v1,4 137 | 138 | lui a0,0x1111 139 | ori a0,0x1111 140 | mult v1,a0 141 | mfhi v1 142 | 143 | ; 0 center --> 128 justifier 144 | addi v1,v1,$80 145 | 146 | sh v1,6(v0) 147 | 148 | 149 | 150 | 151 | REMAP_GUNCON_BUTTONS: 152 | 153 | ; remap guncon --> justifier buttons 154 | 155 | ; $2000 = trigger --> $8000 = trigger 156 | ; $0008 = A --> $4000 = auxiliary 157 | ; $4000 = B --> $0008 = start 158 | 159 | ; at,a0,ra 160 | 161 | lhu s0,2(v0) 162 | ori a0,r0,$ffff 163 | 164 | 165 | 166 | ; check trigger (low-assert) 167 | andi v1,s0,$2000 168 | bne v1,r0,REMAP_A 169 | nop 170 | 171 | ; set $8000 bit 172 | andi a0,a0,$7fff 173 | 174 | 175 | 176 | REMAP_A: 177 | ; check aux 178 | andi v1,s0,$0008 179 | bne v1,r0,REMAP_B 180 | nop 181 | 182 | ; set $4000 bit 183 | andi a0,a0,$bfff 184 | 185 | 186 | 187 | 188 | REMAP_B: 189 | ; check start 190 | andi v1,s0,$4000 191 | bne v1,r0,REMAP_BUTTONS 192 | nop 193 | 194 | ; lower $0008 bit 195 | andi a0,a0,$fff7 196 | 197 | 198 | 199 | REMAP_BUTTONS: 200 | sh a0,2(v0) 201 | 202 | ; ================================ 203 | ; ================================ 204 | ; ================================ 205 | 206 | DONE: 207 | 208 | jr ra 209 | nop 210 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Lethal Enforcers/src/code/europe/pad-guncon-2.txt: -------------------------------------------------------------------------------- 1 | org $800176f8 2 | 3 | ; in-game x-math 4 | j $8001771c 5 | or v0,r0,v1 6 | 7 | 8 | ; calibration p1 9 | j $8001a890 10 | or v0,r0,v1 11 | 12 | 13 | ; calibration p2 14 | j $8001aa4c 15 | or v0,r0,v1 16 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Lethal Enforcers/src/code/usa/asm - lethal enforcers.bat: -------------------------------------------------------------------------------- 1 | del *.bin 2 | 3 | spasm -b pad-guncon-1.txt pad-guncon-1.bin 4 | spasm -b pad-guncon-2.txt pad-guncon-2.bin 5 | 6 | pause 7 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Lethal Enforcers/src/code/usa/pad-guncon-1.txt: -------------------------------------------------------------------------------- 1 | ; 6b6c0-6bcc0 + 6bce0-6be20 + 6be30-6c050 2 | ; - 6be30-6bexx = remap buttons, id, cursor data 3 | 4 | 5 | 6 | org $8006be28 7 | 8 | j $8006be30 9 | nop 10 | 11 | 12 | 13 | or at,ra,r0 14 | 15 | 16 | ; player 1 17 | lui v0,$8006 18 | jal REMAP_GUNCON 19 | ori v0,$d038 20 | 21 | ; player 2 22 | lui v0,$8006 23 | jal REMAP_GUNCON 24 | ori v0,$d08e 25 | 26 | 27 | or ra,at,r0 28 | 29 | 30 | 31 | ; unlatch dead gun - only 1 active at time 32 | lbu v0,$74(gp) 33 | lui v1,$8006+1 34 | 35 | bne v0,r0,DEAD_GUN2 36 | nop 37 | 38 | ; gun 1 active - shut down 2 39 | beq r0,r0,TOTAL_DONE 40 | sb r0,$d093(v1) 41 | 42 | ; gun 2 active - shut down 1 43 | DEAD_GUN2: 44 | sb r0,$d03d(v1) 45 | 46 | 47 | 48 | TOTAL_DONE: 49 | 50 | ; OLD code 51 | lw a0, $6c4(gp) 52 | nop 53 | j $8003694c 54 | nop 55 | 56 | ; ======================================= 57 | ; ======================================= 58 | ; ======================================= 59 | 60 | ; at, s0, a0, v0, v1, (s1) 61 | ; - v0 = guncon data 62 | ; - at = jal return 63 | ; - s0,a0,v1 64 | 65 | REMAP_GUNCON: 66 | 67 | ; remap guncon ID to justifier 68 | ori s0,r0,$31 69 | sb s0,1(v0) 70 | 71 | 72 | 73 | ; force cursor data (guncon x-y) 74 | lh s0,4(v0) 75 | lh v1,6(v0) 76 | ;nop 77 | 78 | 79 | 80 | 81 | ; set valid latch data (1,10 = guncon offscreen normally) 82 | slti a0,s0,2 83 | beq a0,r0,REMAP_XY 84 | ori a0,r0,1 85 | 86 | 87 | ; offscreen shot - force (0,0) 88 | sh r0,4(v0) 89 | sh r0,6(v0) 90 | beq r0,r0,REMAP_GUNCON_BUTTONS 91 | sh r0,8(v0) 92 | 93 | 94 | 95 | 96 | REMAP_XY: 97 | 98 | ; signal on-screen shot 99 | sb a0,5(v0) 100 | 101 | 102 | ; x-axis 103 | 104 | ; 255 guncon (pSX rough center) --> 160 justifier --> 0 center 105 | addi s0,s0,$ffa1 106 | addi s0,s0,$ff60 107 | 108 | 109 | 110 | ; adjustment range (pSX 384 --> 320) 111 | ; - 80 / 96 (384 * 128 / 320) ===> x * (64+16) / 96 112 | sll a0,s0,6 113 | sll s0,s0,4 114 | add s0,s0,a0 115 | 116 | lui a0,0x02aa 117 | ori a0,0xaaaa 118 | mult s0,a0 119 | mfhi s0 120 | 121 | ; 0 center --> 160 justifier 122 | addi s0,s0,$a0 123 | 124 | sh s0,8(v0) 125 | 126 | 127 | 128 | ; y-axis 129 | 130 | ; 136 guncon (pSX rough center) --> 120 justifier --> 0 center 131 | addi v1,v1,$fff0 132 | ;addi v1,v1,$ff88 133 | 134 | ; no adjustment range (pSX 240 --> 240 range) 135 | ;lui at,0x7800 136 | ;ori at,0x0000 137 | ;mult s1,at 138 | ;mfhi s1 139 | 140 | ; 0 center --> 120 justifier 141 | ;addi s1,s1,$78 142 | 143 | sh v1,6(v0) 144 | 145 | 146 | 147 | 148 | REMAP_GUNCON_BUTTONS: 149 | 150 | ; remap guncon --> justifier buttons 151 | 152 | ; $2000 = trigger --> $8000 = trigger 153 | ; $0008 = A --> $4000 = auxiliary 154 | ; $4000 = B --> $0008 = start 155 | 156 | ; at,a0,ra 157 | 158 | lhu s0,2(v0) 159 | ori a0,r0,$ffff 160 | 161 | 162 | 163 | ; check trigger (low-assert) 164 | andi v1,s0,$2000 165 | bne v1,r0,REMAP_A 166 | nop 167 | 168 | ; set $8000 bit 169 | andi a0,a0,$7fff 170 | 171 | 172 | 173 | REMAP_A: 174 | ; check aux 175 | andi v1,s0,$0008 176 | bne v1,r0,REMAP_B 177 | nop 178 | 179 | ; set $4000 bit 180 | andi a0,a0,$bfff 181 | 182 | 183 | 184 | 185 | REMAP_B: 186 | ; check start 187 | andi v1,s0,$4000 188 | bne v1,r0,REMAP_BUTTONS 189 | nop 190 | 191 | ; lower $0008 bit 192 | andi a0,a0,$fff7 193 | 194 | 195 | 196 | REMAP_BUTTONS: 197 | sh a0,2(v0) 198 | 199 | ; ================================ 200 | ; ================================ 201 | ; ================================ 202 | 203 | DONE: 204 | 205 | jr ra 206 | nop 207 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Lethal Enforcers/src/code/usa/pad-guncon-2.txt: -------------------------------------------------------------------------------- 1 | org $800176e4 2 | 3 | ; skip x-math 4 | j $80017708 5 | or v0,r0,v1 6 | 7 | 8 | j $8001ab48 9 | or v0,r0,v1 10 | 11 | 12 | j $8001ad04 13 | or v0,r0,v1 14 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Lethal Enforcers/src/patcher/europe/cd2dvd.bat: -------------------------------------------------------------------------------- 1 | SET FILE_1=SLES_005.42 2 | SET FILE_2=DATA.BIN 3 | 4 | 5 | cd2dvd_patcher ___patch.txt %FILE_1% 0 6 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Lethal Enforcers/src/patcher/europe/patch/___.PAD: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Lethal Enforcers/src/patcher/europe/patch/___patch.txt: -------------------------------------------------------------------------------- 1 | ; ram offset (raw -> ram) 2 | #f800 3 | 4 | 5 | 6 | ; remap guncon --> justifier data 7 | $35ff4 8 | 54AD010800000000 9 | $6b550 10 | 2508E0030680023C67AD010C58C742340680023C67AD010CAEC7423425F82000740082930780033C030040140000000002000010B3C760A05DC760A0C406848F00000000FFD700080000000031001034010050A004005084060043840200042A0500801001000434040040A4060040A416000010080040A4050044A0A1FF102260FF1022802110000081100020800402AA02043CAAAA84341800040210800000A0001022080050A4F8FF632080FF6320001903001111043C11118434180064001018000080006320060043A402005094FFFF0434002003320200601400000000FF7F8430080003320200601400000000FFBF8430004003320200601400000000F7FF8430020044A40800E00300000000 11 | 12 | 13 | 14 | ; justifier latch reset 15 | $5ba4c 16 | 00000000 17 | 18 | 19 | 20 | ; skip x-math 21 | $176f8 22 | C75D000825100300 23 | 24 | 25 | 26 | ; skip calibration math 27 | $1a874 28 | 246A000825100300 29 | $1aa30 30 | 936A000825100300 31 | 32 | 33 | 34 | ; default calibration markers (y-axis) 35 | $6b934 36 | 8000 37 | $6b936 38 | 8000 39 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Lethal Enforcers/src/patcher/usa/cd2dvd.bat: -------------------------------------------------------------------------------- 1 | SET FILE_1=SLUS_002.93 2 | SET FILE_2=DATA.BIN 3 | 4 | 5 | cd2dvd_patcher ___patch.txt %FILE_1% 0 6 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Lethal Enforcers/src/patcher/usa/patch/___.PAD: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Lethal Enforcers/src/patcher/usa/patch/___patch.txt: -------------------------------------------------------------------------------- 1 | ; ram offset (raw -> ram) 2 | #f800 3 | 4 | 5 | 6 | ; remap guncon --> justifier data 7 | $36944 8 | 8CAF010800000000 9 | $6be30 10 | 2508E0030680023C9FAF010C38D042340680023C9FAF010C8ED0423425F82000740082930780033C03004014000000000200001093D060A03DD060A0C406848F0000000053DA00080000000031001034010050A004005084060043840200042A0500801001000434040040A4060040A40F000010080040A4050044A0A1FF102260FF1022802110000081100020800402AA02043CAAAA84341800040210800000A0001022080050A4F0FF6320060043A402005094FFFF0434002003320200601400000000FF7F8430080003320200601400000000FFBF8430004003320200601400000000F7FF8430020044A40800E00300000000 11 | 12 | 13 | 14 | ; justifier latch reset 15 | $5c32c 16 | 00000000 17 | 18 | 19 | 20 | ; skip calibration math 21 | $176e4 22 | C25D000825100300 23 | $1ab2c 24 | D26A000825100300 25 | $1ace8 26 | 416B000825100300 27 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Lethal Enforcers/src/src/cd2dvd_patcher/cd2dvd_patcher.dsp: -------------------------------------------------------------------------------- 1 | # Microsoft Developer Studio Project File - Name="cd2dvd_patcher" - Package Owner=<4> 2 | # Microsoft Developer Studio Generated Build File, Format Version 6.00 3 | # ** DO NOT EDIT ** 4 | 5 | # TARGTYPE "Win32 (x86) Console Application" 0x0103 6 | 7 | CFG=cd2dvd_patcher - Win32 Debug 8 | !MESSAGE This is not a valid makefile. To build this project using NMAKE, 9 | !MESSAGE use the Export Makefile command and run 10 | !MESSAGE 11 | !MESSAGE NMAKE /f "cd2dvd_patcher.mak". 12 | !MESSAGE 13 | !MESSAGE You can specify a configuration when running NMAKE 14 | !MESSAGE by defining the macro CFG on the command line. For example: 15 | !MESSAGE 16 | !MESSAGE NMAKE /f "cd2dvd_patcher.mak" CFG="cd2dvd_patcher - Win32 Debug" 17 | !MESSAGE 18 | !MESSAGE Possible choices for configuration are: 19 | !MESSAGE 20 | !MESSAGE "cd2dvd_patcher - Win32 Release" (based on "Win32 (x86) Console Application") 21 | !MESSAGE "cd2dvd_patcher - Win32 Debug" (based on "Win32 (x86) Console Application") 22 | !MESSAGE 23 | 24 | # Begin Project 25 | # PROP AllowPerConfigDependencies 0 26 | # PROP Scc_ProjName "" 27 | # PROP Scc_LocalPath "" 28 | CPP=cl.exe 29 | RSC=rc.exe 30 | 31 | !IF "$(CFG)" == "cd2dvd_patcher - Win32 Release" 32 | 33 | # PROP BASE Use_MFC 0 34 | # PROP BASE Use_Debug_Libraries 0 35 | # PROP BASE Output_Dir "Release" 36 | # PROP BASE Intermediate_Dir "Release" 37 | # PROP BASE Target_Dir "" 38 | # PROP Use_MFC 0 39 | # PROP Use_Debug_Libraries 0 40 | # PROP Output_Dir "Release" 41 | # PROP Intermediate_Dir "Release" 42 | # PROP Ignore_Export_Lib 0 43 | # PROP Target_Dir "" 44 | # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c 45 | # ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c 46 | # ADD BASE RSC /l 0x409 /d "NDEBUG" 47 | # ADD RSC /l 0x409 /d "NDEBUG" 48 | BSC32=bscmake.exe 49 | # ADD BASE BSC32 /nologo 50 | # ADD BSC32 /nologo 51 | LINK32=link.exe 52 | # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 53 | # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"cd2dvd_patcher.exe" 54 | 55 | !ELSEIF "$(CFG)" == "cd2dvd_patcher - Win32 Debug" 56 | 57 | # PROP BASE Use_MFC 0 58 | # PROP BASE Use_Debug_Libraries 1 59 | # PROP BASE Output_Dir "Debug" 60 | # PROP BASE Intermediate_Dir "Debug" 61 | # PROP BASE Target_Dir "" 62 | # PROP Use_MFC 0 63 | # PROP Use_Debug_Libraries 1 64 | # PROP Output_Dir "Debug" 65 | # PROP Intermediate_Dir "Debug" 66 | # PROP Ignore_Export_Lib 0 67 | # PROP Target_Dir "" 68 | # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c 69 | # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c 70 | # ADD BASE RSC /l 0x409 /d "_DEBUG" 71 | # ADD RSC /l 0x409 /d "_DEBUG" 72 | BSC32=bscmake.exe 73 | # ADD BASE BSC32 /nologo 74 | # ADD BSC32 /nologo 75 | LINK32=link.exe 76 | # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept 77 | # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"cd2dvd_patcher.exe" /pdbtype:sept 78 | 79 | !ENDIF 80 | 81 | # Begin Target 82 | 83 | # Name "cd2dvd_patcher - Win32 Release" 84 | # Name "cd2dvd_patcher - Win32 Debug" 85 | # Begin Group "Source Files" 86 | 87 | # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" 88 | # Begin Source File 89 | 90 | SOURCE=.\patcher.cpp 91 | # End Source File 92 | # End Group 93 | # Begin Group "Header Files" 94 | 95 | # PROP Default_Filter "h;hpp;hxx;hm;inl" 96 | # End Group 97 | # Begin Group "Resource Files" 98 | 99 | # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" 100 | # End Group 101 | # End Target 102 | # End Project 103 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Lethal Enforcers/src/src/cd2dvd_patcher/cd2dvd_patcher.dsw: -------------------------------------------------------------------------------- 1 | Microsoft Developer Studio Workspace File, Format Version 6.00 2 | # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! 3 | 4 | ############################################################################### 5 | 6 | Project: "cd2dvd_patcher"=".\cd2dvd_patcher.dsp" - Package Owner=<4> 7 | 8 | Package=<5> 9 | {{{ 10 | }}} 11 | 12 | Package=<4> 13 | {{{ 14 | }}} 15 | 16 | ############################################################################### 17 | 18 | Global: 19 | 20 | Package=<5> 21 | {{{ 22 | }}} 23 | 24 | Package=<3> 25 | {{{ 26 | }}} 27 | 28 | ############################################################################### 29 | 30 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/readme.txt: -------------------------------------------------------------------------------- 1 | Policenauts 2 | 3 | 4 | Works 5 | > (Japan) redump.org/disc/1666/ (cd1) 6 | > (Japan) redump.org/disc/1668/ (cd2) 7 | 8 | 9 | 10 | Converts shooting segments to use a Guncon (port2) 11 | - Special thanks to Paubi for much testing and feedback! 12 | 13 | 14 | 15 | Instructions: 16 | 0. Rip game cd to bin/cue or ccd/img format 17 | 1. Use official English translation patch 18 | 2. Run bin/ppf-o-matic3 19 | 3. Drag-drop bin or img file 20 | 4. Drag-drop bin/ppf file 21 | 5. Hit patch 22 | 23 | 24 | 25 | Uninstall: 26 | 1. Run bin/ppf-o-matic3 27 | 2. Click 'undo patch' 28 | 3. Drag-drop bin or img file 29 | 4. Drag-drop bin/ppf file 30 | 5. Hit patch 31 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/code/japan/asm - policenauts.bat: -------------------------------------------------------------------------------- 1 | del *.bin 2 | 3 | spasm -b pad-guncon-1.txt pad-guncon-1.bin 4 | spasm -b pad-guncon-1a.txt pad-guncon-1a.bin 5 | spasm -b pad-guncon-1b.txt pad-guncon-1b.bin 6 | spasm -b pad-guncon-1c.txt pad-guncon-1c.bin 7 | spasm -b pad-guncon-2.txt pad-guncon-2.bin 8 | spasm -b pad-guncon-2a.txt pad-guncon-2a.bin 9 | spasm -b pad-guncon-2b.txt pad-guncon-2b.bin 10 | spasm -b pad-guncon-2c.txt pad-guncon-2c.bin 11 | spasm -b pad-guncon-2d.txt pad-guncon-2d.bin 12 | spasm -b pad-guncon-2e.txt pad-guncon-2e.bin 13 | spasm -b pad-guncon-2f.txt pad-guncon-2f.bin 14 | spasm -b pad-guncon-2g.txt pad-guncon-2g.bin 15 | 16 | pause 17 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/code/japan/pad-guncon-1.txt: -------------------------------------------------------------------------------- 1 | ; DEBUG 2 | ; - 102a0-10730 3 | ; - 11220-113d0 4 | ; - 11410-11770 5 | ; - 11DE0-12330 (Disc swap kit = 11DE0-12030) 6 | ; - 12350-12490 7 | ; - 124a0-125c0 8 | 9 | 10 | ; shared mouse input (SLPS) 11 | 12 | org $000044e0 13 | 14 | j $800102b0 15 | nop 16 | 17 | 18 | 19 | ; $102a0 = buttons 20 | ; $102a4 = guncon x 21 | ; $102a8 = guncon y 22 | ; $102ac = unused temp 23 | 24 | 25 | 26 | ; ra,s0,s1,t0,t2 27 | ; ra,a0,t1,t7,t8,a1 28 | 29 | 30 | ; check port2 controller 31 | lui ra,$8001 32 | ori ra,ra,$02a0 33 | 34 | lui a0,$8003 35 | ori a0,a0,$f948 36 | 37 | ; ======================================= 38 | ; ======================================= 39 | ; ======================================= 40 | 41 | ; - ra = guncon target data 42 | ; - a0 = guncon data 43 | 44 | ; - t1 = temp 45 | ; - t7 = guncon x 46 | ; - t8 = guncon y 47 | 48 | 49 | REMAP_GUNCON: 50 | 51 | ; check guncon ID first 52 | lbu t1,1(a0) 53 | ori t7,r0,$63 54 | bne t1,t7,DONE 55 | nop 56 | 57 | 58 | 59 | ; remap guncon ID to mouse 60 | ori t1,r0,$12 61 | sb t1,1(a0) 62 | 63 | 64 | 65 | ; force cursor data (guncon x-y) 66 | lh t7,4(a0) 67 | lh t8,6(a0) 68 | ;nop 69 | 70 | ; - no mouse motion 71 | sh r0,4(a0) 72 | 73 | 74 | 75 | 76 | ; check valid latch data (1,10 = guncon offscreen normally) 77 | slti t1,t7,2 78 | beq t1,r0,REMAP_XY 79 | lui t1,0x3ff 80 | 81 | 82 | ; offscreen shot - force (03ff.0000 = 16.16 fixed-format) 83 | sw t1,4(ra) 84 | beq r0,r0,REMAP_GUNCON_BUTTONS 85 | sw t1,8(ra) 86 | 87 | 88 | 89 | 90 | REMAP_XY: 91 | 92 | ; x-axis 93 | 94 | ; 255 guncon (pSX rough center) --> 160 justifier --> 0 center 95 | addi t7,t7,$ffa1 96 | addi t7,t7,$ff60 97 | 98 | 99 | 100 | ; adjustment range (pSX 384 --> 320) 101 | ; - 80 / 96 (384 * 128 / 320) ===> x * (64+16) / 96 102 | sll t1,t7,6 103 | sll t7,t7,4 104 | add t7,t7,t1 105 | 106 | lui t1,0x02aa 107 | ori t1,0xaaaa 108 | mult t7,t1 109 | mfhi t7 110 | 111 | ; 0 center --> 158 justifier 112 | addi t7,t7,$9e 113 | 114 | sw t7,4(ra) 115 | 116 | 117 | 118 | ; y-axis 119 | 120 | ; 136 guncon (pSX rough center) --> 120 justifier --> 0 center 121 | addi t8,t8,$fff0 122 | ;addi t8,t8,$ff88 123 | 124 | ; no adjustment range (pSX 240 --> 240 range) 125 | ;lui at,0x7800 126 | ;ori at,0x0000 127 | ;mult t1,at 128 | ;mfhi t1 129 | 130 | ; 0 center --> 120 justifier 131 | ;addi t8,t8,$78 132 | 133 | sw t8,8(ra) 134 | 135 | 136 | 137 | 138 | REMAP_GUNCON_BUTTONS: 139 | 140 | ; remap guncon --> mouse buttons (fcff) 141 | 142 | ; $2000 = trigger --> $0800 = left 143 | ; $0008 = A --> $0400 = right 144 | ; $4000 = B --> $0400 = right 145 | 146 | lhu t7,2(a0) 147 | ori t8,r0,$fcff 148 | 149 | 150 | ; flip bits 151 | xori t7,t7,$ffff 152 | 153 | 154 | 155 | ; check trigger (low-assert) 156 | andi t1,t7,$2000 157 | beq t1,r0,REMAP_A 158 | nop 159 | 160 | ; set $0800 bit 161 | andi t8,t8,$f7ff 162 | 163 | 164 | 165 | 166 | REMAP_A: 167 | ; check aux 168 | andi t1,t7,$0008 169 | beq t1,r0,REMAP_B 170 | nop 171 | 172 | ; set $0400 bit 173 | andi t8,t8,$fbff 174 | 175 | 176 | 177 | 178 | REMAP_B: 179 | ; check start 180 | andi t1,t7,$4000 181 | beq t1,r0,REMAP_BUTTONS 182 | nop 183 | 184 | ; set $0400 bit 185 | andi t8,t8,$fbff 186 | 187 | 188 | 189 | 190 | REMAP_BUTTONS: 191 | sh t8,0(ra) 192 | sh t8,2(a0) 193 | 194 | ; ================================ 195 | ; ================================ 196 | ; ================================ 197 | 198 | ; verify port1 = mouse 199 | lui ra,$8003+1 200 | lbu t7,$f939(ra) 201 | ori a0,r0,$12 202 | bne t7,a0,DONE 203 | ;nop 204 | 205 | 206 | ; combine mouse1+guncon2 buttons now (avoid data caching problem) 207 | lbu t8,$f94b(ra) 208 | lbu t7,$f93b(ra) 209 | nop 210 | and t7,t7,t8 211 | sb t7,$f93b(ra) 212 | 213 | ; ================================ 214 | ; ================================ 215 | ; ================================ 216 | 217 | DONE: 218 | 219 | ; OLD code 220 | lui t7,0 221 | lw t7,$74c4(t7) 222 | j $000049e8 223 | nop 224 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/code/japan/pad-guncon-1a.txt: -------------------------------------------------------------------------------- 1 | ; DEBUG 2 | ; - 102a0-10730 3 | ; 102a0-102b0 = guncon data 4 | ; 102b0-103b0 = guncon remap 5 | ; 103b0-104xx = guncon / mouse button shared 6 | 7 | ; - 11220-113d0 8 | ; - 11410-11770 9 | ; - 11DE0-12330 (Disc swap kit = 11DE0-12030) 10 | ; - 12350-12490 11 | ; - 124a0-125c0 12 | 13 | 14 | 15 | org $80023584 16 | 17 | j $800103b0 18 | nop 19 | 20 | 21 | 22 | ; combine mouse buttons to 'super' data 23 | ; - at = current port 24 | ; - v1,t3 = free 25 | 26 | ; ignore port2 data 27 | lui t3,$8003 28 | ori t3,t3,$f939 29 | bne t3,at,DONE 30 | nop 31 | 32 | 33 | sb v0,3(a2) 34 | 35 | ; ========================== 36 | ; ========================== 37 | ; ========================== 38 | 39 | DONE: 40 | lw a0,4(a2) 41 | nop 42 | 43 | j $8002358c 44 | nop 45 | 46 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/code/japan/pad-guncon-1b.txt: -------------------------------------------------------------------------------- 1 | ; DEBUG 2 | ; - 102a0-10730 3 | ; 102a0-102b0 = guncon data 4 | ; 102b0-103b0 = guncon remap 5 | ; 103b0-103e0 = guncon / mouse button shared 6 | ; 103e0-104xx = mouse hooks 7 | 8 | ; - 11220-113d0 9 | ; - 11410-11770 10 | ; - 11DE0-12330 (Disc swap kit = 11DE0-12030) 11 | ; - 12350-12490 12 | ; - 124a0-125c0 13 | 14 | 15 | ; gun shooting (bin.dpk) = 48458-48560 16 | 17 | org $80023520 18 | 19 | j $800103e0 20 | nop 21 | 22 | 23 | 24 | 25 | ; at,v0 = free 26 | 27 | 28 | ; install input driver hook (from BIOS code) 29 | lui at,0 30 | lui v0,$0800 31 | ori v0,v0,$40ac 32 | sw v0,$49e0(at) 33 | sw r0,$49e4(at) 34 | 35 | 36 | 37 | ; install 1-time mouse driver hook (from BIOS code) 38 | lui v0,$0800 39 | ori v0,v0,$4104 40 | sw v0,$49d8(at) 41 | sw r0,$49dc(at) 42 | 43 | ; ======================== 44 | ; ======================== 45 | ; ======================== 46 | 47 | DONE: 48 | lui at,$8004 49 | j $80023528 50 | addiu at,at,$f939 51 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/code/japan/pad-guncon-1c.txt: -------------------------------------------------------------------------------- 1 | ; DEBUG 2 | ; - 102a0-10730 3 | ; 102a0-102b0 = guncon data 4 | ; 102b0-103b0 = guncon remap 5 | ; 103b0-103e0 = guncon / mouse button shared 6 | ; 103e0-10410 = mouse hooks 7 | ; 10410-104xx = mouse hooks 8 | 9 | ; - 11220-113d0 10 | ; - 11410-11770 11 | ; - 11DE0-12330 (Disc swap kit = 11DE0-12030) 12 | ; - 12350-12490 13 | ; - 124a0-125c0 14 | 15 | 16 | ; gun shooting (bin.dpk) = 48458-48560 17 | 18 | org $800049d8 19 | 20 | j $80010410 21 | nop 22 | 23 | 24 | 25 | ; $102a0 = buttons 26 | ; $102a4 = guncon x 27 | ; $102a8 = guncon y 28 | ; $102ac = unused temp ($0a init) 29 | 30 | ; ra,a0 free 31 | 32 | ; check mouse init 33 | lui ra,$8001 34 | lbu a0,$02ac(ra) 35 | nop 36 | beq a0,r0,DONE 37 | ;nop 38 | 39 | 40 | 41 | ; 1-time mouse init 42 | sb r0,$02ac(ra) 43 | 44 | ; mouse ID 45 | lui ra,$8003+1 46 | ori a0,r0,$12 47 | sb a0,$f939(ra) 48 | 49 | ori a0,r0,$fcff 50 | sh a0,$f93a(ra) 51 | sh r0,$f93c(ra) 52 | 53 | ; ======================== 54 | ; ======================== 55 | ; ======================== 56 | 57 | DONE: 58 | jal $4498 59 | addiu a0,r0,1 60 | 61 | j $49e0 62 | nop 63 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/code/japan/pad-guncon-2.txt: -------------------------------------------------------------------------------- 1 | ; DEBUG 2 | ; - 102a0-10730 3 | ; - 11220-113d0 4 | ; - 11410-11770 5 | ; - 11DE0-12330 (Disc swap kit = 11DE0-12030) 6 | ; - 12350-12490 7 | ; - 124a0-125c0 8 | 9 | 10 | ; gun shooting (bin.dpk) = 48458-48560 11 | 12 | org $80048458 13 | 14 | 15 | 16 | ; $102a0 = buttons 17 | ; $102a4 = guncon x 18 | ; $102a8 = guncon y 19 | ; $102ac = unused temp 20 | 21 | ; - a1,a3,at,v0,t0 22 | 23 | lui a1,$8001 24 | lui at,$8006 25 | 26 | ; ========================== 27 | ; ========================== 28 | ; ========================== 29 | 30 | ; update x-y values 31 | lw v0,$02a4(a1) 32 | lw t0,$02a8(a1) 33 | 34 | ; 16.16 fixed-format 35 | sll v0,v0,16 36 | sll t0,t0,16 37 | 38 | sw v0,$2a58(at) 39 | sw t0,$2a5c(at) 40 | 41 | ; ========================== 42 | ; ========================== 43 | ; ========================== 44 | 45 | ; check trigger pull 46 | lbu v0,$02a1(a1) 47 | nop 48 | xori v0,v0,$ffff 49 | andi a1,v0,$0c 50 | 51 | 52 | beq a1,r0,NO_TRIGGER 53 | ori v0,r0,1 54 | 55 | 56 | 57 | ; trigger pull 58 | sw r0,$2a80(at) 59 | sw r0,$2a84(at) 60 | 61 | beq r0,r0,DONE 62 | sb v0,$2a55(at) 63 | 64 | 65 | 66 | NO_TRIGGER: 67 | ori s1,r0,1 68 | 69 | ; ========================== 70 | ; ========================== 71 | ; ========================== 72 | 73 | DONE: 74 | j $8004894c 75 | nop 76 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/code/japan/pad-guncon-2a.txt: -------------------------------------------------------------------------------- 1 | ; DEBUG 2 | ; - 102a0-10730 3 | ; - 11220-113d0 4 | ; - 11410-11770 5 | ; - 11de0-12330 (Disc swap kit = 11DE0-12030) 6 | ; - 12350-12490 7 | ; - 124a0-125c0 8 | 9 | 10 | ; shooting range #2-3 (bin.dpk) = 80087188-800871e0 (parts) 11 | 12 | org $80087188 13 | 14 | 15 | 16 | ; $102a0 = buttons 17 | ; $102a4 = guncon x 18 | ; $102a8 = guncon y 19 | ; $102ac = unused temp 20 | 21 | ; t0 = free 22 | 23 | ; load xy-cursor 24 | lui v0,$8001 25 | lw v1,$02a4(v0) 26 | lw t0,$02a8(v0) 27 | 28 | ; adjust 16.16 format 29 | sll v1,v1,16 30 | sw v1,$1c(s0) 31 | sll v1,t0,16 32 | 33 | 34 | j $800871d8 35 | ori v0,r0,0 36 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/code/japan/pad-guncon-2b.txt: -------------------------------------------------------------------------------- 1 | ; DEBUG 2 | ; - 102a0-10730 3 | ; - 11220-113d0 4 | ; - 11410-11770 5 | ; - 11de0-12330 (Disc swap kit = 11DE0-12030) 6 | ; - 12350-12490 7 | ; - 124a0-125c0 8 | 9 | 10 | ; shooting range #1 (bin.dpk) 11 | 12 | org $80087140 13 | 14 | 15 | 16 | ; $102a0 = buttons 17 | ; $102a4 = guncon x 18 | ; $102a8 = guncon y 19 | ; $102ac = unused temp 20 | 21 | ; t0 = free 22 | 23 | ; load xy-cursor 24 | lui v0,$8001 25 | lw v1,$02a4(v0) 26 | lw t0,$02a8(v0) 27 | 28 | ; adjust 16.16 format 29 | sll v1,v1,16 30 | sw v1,$1c(s0) 31 | sll v1,t0,16 32 | 33 | 34 | j $80087204 35 | sw v1,$20(s0) 36 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/code/japan/pad-guncon-2c.txt: -------------------------------------------------------------------------------- 1 | ; DEBUG 2 | ; - 102a0-10730 3 | ; - 11220-113d0 4 | ; - 11410-11770 5 | ; - 11de0-12330 (Disc swap kit = 11DE0-12030) 6 | ; - 12350-12490 7 | ; - 124a0-125c0 8 | 9 | 10 | ; act2 - highway (bin.dpk) 11 | 12 | org $80079f7c 13 | 14 | 15 | 16 | ; $102a0 = buttons 17 | ; $102a4 = guncon x 18 | ; $102a8 = guncon y 19 | ; $102ac = unused temp 20 | 21 | 22 | 23 | ; load x-cursor 24 | lui v0,$8001 25 | lw v1,$02a4(v0) 26 | nop 27 | 28 | ; adjust 16.16 format 29 | sll v1,v1,16 30 | sw v1,$1c(s0) 31 | 32 | 33 | 34 | ; load y-cursor 35 | lw v1,$02a8(v0) 36 | nop 37 | 38 | j $80079fd4 39 | sll v0,v1,16 40 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/code/japan/pad-guncon-2d.txt: -------------------------------------------------------------------------------- 1 | ; DEBUG 2 | ; - 102a0-10730 3 | ; - 11220-113d0 4 | ; - 11410-11770 5 | ; - 11de0-12330 (Disc swap kit = 11DE0-12030) 6 | ; - 12350-12490 7 | ; - 124a0-125c0 8 | 9 | 10 | ; act5 - mass driver (bin.dpk) 11 | 12 | org $80092284 13 | 14 | 15 | 16 | ; $102a0 = buttons 17 | ; $102a4 = guncon x 18 | ; $102a8 = guncon y 19 | ; $102ac = unused temp 20 | 21 | 22 | 23 | ; load x-cursor 24 | lui v0,$8001 25 | lw v1,$02a4(v0) 26 | nop 27 | 28 | ; adjust 16.16 format 29 | sll v1,v1,16 30 | sw v1,$1c(s0) 31 | 32 | 33 | 34 | ; load y-cursor 35 | lw v1,$02a8(v0) 36 | nop 37 | 38 | j $800922dc 39 | sll v0,v1,16 40 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/code/japan/pad-guncon-2e.txt: -------------------------------------------------------------------------------- 1 | ; DEBUG 2 | ; - 102a0-10730 3 | ; - 11220-113d0 4 | ; - 11410-11770 5 | ; - 11de0-12330 (Disc swap kit = 11DE0-12030) 6 | ; - 12350-12490 7 | ; - 124a0-125c0 8 | 9 | 10 | ; act7 - lobby (bin.dpk) 11 | 12 | org $800922bc 13 | 14 | 15 | 16 | ; $102a0 = buttons 17 | ; $102a4 = guncon x 18 | ; $102a8 = guncon y 19 | ; $102ac = unused temp 20 | 21 | 22 | 23 | ; load x-cursor 24 | lui v0,$8001 25 | lw v1,$02a4(v0) 26 | nop 27 | 28 | ; adjust 16.16 format 29 | sll v1,v1,16 30 | sw v1,$1c(s0) 31 | 32 | 33 | 34 | ; load y-cursor 35 | lw v1,$02a8(v0) 36 | nop 37 | 38 | j $800927ec 39 | sll v0,v1,16 40 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/code/japan/pad-guncon-2f.txt: -------------------------------------------------------------------------------- 1 | ; DEBUG 2 | ; - 102a0-10730 3 | ; - 11220-113d0 4 | ; - 11410-11770 5 | ; - 11de0-12330 (Disc swap kit = 11DE0-12030) 6 | ; - 12350-12490 7 | ; - 124a0-125c0 8 | 9 | 10 | ; act7 - garage (bin.dpk) 11 | 12 | org $80091c98 13 | 14 | 15 | 16 | ; $102a0 = buttons 17 | ; $102a4 = guncon x 18 | ; $102a8 = guncon y 19 | ; $102ac = unused temp 20 | 21 | 22 | 23 | ; load x-cursor 24 | lui v0,$8001 25 | lw v1,$02a4(v0) 26 | nop 27 | 28 | ; adjust 16.16 format 29 | sll v1,v1,16 30 | sw v1,$1c(s0) 31 | 32 | 33 | 34 | ; load y-cursor 35 | lw v1,$02a8(v0) 36 | nop 37 | 38 | j $80091cf0 39 | sll v0,v1,16 40 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/code/japan/pad-guncon-2g.txt: -------------------------------------------------------------------------------- 1 | ; DEBUG 2 | ; - 102a0-10730 3 | ; 102a0-102b0 = guncon data 4 | ; 102b0-103b0 = guncon remap 5 | ; 103b0-103e0 = guncon / mouse button shared 6 | ; 103e0-10410 = mouse hooks 7 | ; 10410-10460 = mouse hooks 8 | ; 10460-104xx = guncon - dpad remap 9 | 10 | ; - 11220-113d0 11 | ; - 11410-11770 12 | ; - 11DE0-12330 (Disc swap kit = 11DE0-12030) 13 | ; - 12350-12490 14 | ; - 124a0-125c0 15 | 16 | 17 | ; gun shooting (bin.dpk) 18 | ; - guncon -> dpad 19 | 20 | org $8004856c 21 | 22 | j $80010460 23 | nop 24 | 25 | 26 | 27 | ; $102a0 = buttons 28 | ; $102a4 = guncon x 29 | ; $102a8 = guncon y 30 | ; $102ac = unused temp 31 | 32 | ; - t0,at,a2,v0 33 | 34 | ; check $3f938 = mouse, then skip 35 | lui a2,$8003+1 36 | lbu at,$f939(a2) 37 | ori v0,r0,$12 38 | beq v0,at,DONE 39 | ;nop 40 | 41 | ; ========================== 42 | ; ========================== 43 | ; ========================== 44 | 45 | lui a2,$8001 46 | lui at,$8006 47 | 48 | 49 | ; update x-y values 50 | lw v0,$02a4(a2) 51 | lw t0,$02a8(a2) 52 | 53 | ; 16.16 fixed-format 54 | sll v0,v0,16 55 | sll t0,t0,16 56 | 57 | sw v0,$2a58(at) 58 | sw t0,$2a5c(at) 59 | 60 | ; ========================== 61 | ; ========================== 62 | ; ========================== 63 | 64 | ; compare changed data 65 | lbu v0,$02a1(a2) 66 | lbu t0,$02a2(a2) 67 | nop 68 | sb v0,$02a2(a2) 69 | xori v0,v0,$ff 70 | xori t0,t0,$ff 71 | xor t0,t0,v0 72 | and t0,t0,v0 73 | 74 | 75 | 76 | ; check trigger pull 77 | andi t0,t0,$0c 78 | beq t0,r0,DONE 79 | ;nop 80 | 81 | 82 | ; signal gunshot 83 | ori t0,r0,$0080 84 | sh t0,$2208(at) 85 | 86 | ; ========================== 87 | ; ========================== 88 | ; ========================== 89 | 90 | DONE: 91 | lui t0,$8006 92 | lhu t0,$2a4e(t0) 93 | 94 | j $80048574 95 | nop 96 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/notes/policenauts - guncon - type2a.txt: -------------------------------------------------------------------------------- 1 | Shooting Range #1 2 | 3 | 4 | ; 1b2254 = x-y cache 5 | 80087140 : 3C02800B LUI 00000000 (v0), 800b (32779), 6 | 80087144 : 8C42B034 LW 800b0000 (v0), b034 (800b0000 (v0)) [800ab034] 7 | 80087148 : 8E03001C LW 00000004 (v1), 001c (801b2238 (s0)) [801b2254] 8 | 8008714c : 00021103 SRA 00000000 (v0), 00000000 (v0), 04 (4), 9 | 80087150 : 00431021 ADDU 00000000 (v0), 00000000 (v0), 00aaa000 (v1), 10 | 80087154 : AE02001C SW 00aaa000 (v0), 001c (801b2238 (s0)) [801b2254] 11 | 12 | 80087158 : 3C02800B LUI 00aaa000 (v0), 800b (32779), 13 | 8008715c : 8C42B038 LW 800b0000 (v0), b038 (800b0000 (v0)) [800ab038] 14 | 80087160 : 8E030020 LW 00aaa000 (v1), 0020 (801b2238 (s0)) [801b2258] 15 | 80087164 : 00021103 SRA 00000000 (v0), 00000000 (v0), 04 (4), 16 | 80087168 : 00431021 ADDU 00000000 (v0), 00000000 (v0), 0058a000 (v1), 17 | 8008716c : 08021C81 J 80087204, 18 | 80087170 : AE020020 SW 0058a000 (v0), 0020 (801b2238 (s0)) [801b2258] 19 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/notes/policenauts - guncon - type2b.txt: -------------------------------------------------------------------------------- 1 | Act2 - Highway 2 | 3 | 4 | ; 1b24f4 = x-y cache 5 | 80079f7c : 8E02001C LW 00000000 (v0), 001c (801b24d8 (s0)) [801b24f4] 6 | 80079f80 : 3C03800B LUI 00000007 (v1), 800b (32779), 7 | 80079f84 : 8C63B034 LW 800b0000 (v1), b034 (800b0000 (v1)) [800ab034] 8 | 80079f88 : 00000000 NOP 9 | 80079f8c : 00431021 ADDU 00f50000 (v0), 00f50000 (v0), 007f0000 (v1), 10 | 80079f90 : AE02001C SW 01740000 (v0), 001c (801b24d8 (s0)) [801b24f4] 11 | 12 | 80079f94 : 8E020020 LW 01740000 (v0), 0020 (801b24d8 (s0)) [801b24f8] 13 | 80079f98 : 3C03800B LUI 007f0000 (v1), 800b (32779), 14 | 80079f9c : 8C63B038 LW 800b0000 (v1), b038 (800b0000 (v1)) [800ab038] 15 | 80079fa0 : 0801E7F5 J 80079fd4, 16 | 80079fa4 : 00431021 ADDU 00980000 (v0), 00980000 (v0), ffd60000 (v1), 17 | (..) 18 | 19 | 80079fd4 : AE020020 SW 006e0000 (v0), 0020 (801b24d8 (s0)) [801b24f8] 20 | 21 | 22 | 23 | 24 | 25 | 26 | ; laser dot x (normal) 27 | 80079a00 : 8E42001C LW fffe0000 (v0), 001c (801b24d8 (s2)) [801b24f4] 28 | 80079a04 : 8C840008 LW 801aa674 (a0), 0008 (801aa674 (a0)) [801aa67c] 29 | 80079a08 : 00431023 SUBU 00000000 (v0), 00000000 (v0), 00018000 (v1), 30 | 80079a0c : AC820010 SW fffe8000 (v0), 0010 (8019827c (a0)) [8019828c] 31 | 32 | 80079a10 : 8E420048 LW fffe8000 (v0), 0048 (801b24d8 (s2)) [801b2520] 33 | 80079a14 : 00000000 NOP 34 | 80079a18 : 8C4300B8 LW 00018000 (v1), 00b8 (800df4a4 (v0)) [800df55c] 35 | 80079a1c : 8C440094 LW 8019827c (a0), 0094 (800df4a4 (v0)) [800df538] 36 | 80079a20 : 8E420020 LW 800df4a4 (v0), 0020 (801b24d8 (s2)) [801b24f8] 37 | 80079a24 : 00031BC0 SLL 00000007 (v1), 00000007 (v1), 0f (15), 38 | 39 | ; laser dot y (normal) 40 | 80079a28 : 8C840008 LW 801aa674 (a0), 0008 (801aa674 (a0)) [801aa67c] 41 | 80079a2c : 00431023 SUBU 00000000 (v0), 00000000 (v0), 00038000 (v1), 42 | 80079a30 : AC820014 SW fffc8000 (v0), 0014 (8019827c (a0)) [80198290] 43 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/patcher/japan/cd2dvd.bat: -------------------------------------------------------------------------------- 1 | SET FILE_1=SLPS_002.15 2 | SET FILE_2=SLPS_002.16 3 | SET FILE_3=BIN.DPK 4 | 5 | 6 | cd2dvd_patcher ___patch_slps.txt %FILE_1% 0 7 | cd2dvd_patcher ___patch_slps.txt %FILE_2% 0 8 | cd2dvd_patcher ___patch_bin1.txt %FILE_3% 0 9 | cd2dvd_patcher ___patch_bin2a.txt %FILE_3% 0 10 | cd2dvd_patcher ___patch_bin2b.txt %FILE_3% 0 11 | cd2dvd_patcher ___patch_bin2c.txt %FILE_3% 0 12 | cd2dvd_patcher ___patch_bin2d.txt %FILE_3% 0 13 | cd2dvd_patcher ___patch_bin2e.txt %FILE_3% 0 14 | cd2dvd_patcher ___patch_bin2f.txt %FILE_3% 0 15 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/patcher/japan/patch/___.PAD: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/patcher/japan/patch/___patch_bin1.txt: -------------------------------------------------------------------------------- 1 | ; ad8c -> 4bb90 2 | #40e04 3 | 4 | 5 | 6 | ; gun code 1 - guncon data 7 | $48458 8 | 0180053C0680013CA402A28CA802A88C0014020000440800582A22AC5C2A28ACA102A29000000000FFFF42380C0045300500A01001000234802A20AC842A20AC02000010552A22A0010011345322010800000000 9 | 10 | 11 | 12 | ; gun code 1 - hide laser dot (normal) 13 | $4bb90 14 | ff03033c 15 | $4bb9c 16 | ff03023c 17 | 18 | 19 | 20 | ; gun code 1 - hide laser dot (shot marker) 21 | $4be98 22 | ff03023c 23 | $4be9c 24 | 140082ac 25 | $4bea4 26 | 180082ac 27 | 28 | 29 | 30 | ; gun code 1 - hide laser dot (reload) 31 | $4bfb8 32 | ff03023c 33 | $4bfc4 34 | ff03033c 35 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/patcher/japan/patch/___patch_bin1a.txt: -------------------------------------------------------------------------------- 1 | ; ad8c -> 4bb90 2 | #40e04 3 | 4 | 5 | 6 | ; gun code 1 - guncon --> d-pad 7 | $4856c 8 | 1841000800000000 9 | 10 | 11 | 12 | ; gun code 1 - d-pad x-adjust 13 | $487a4 14 | 00000000 15 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/patcher/japan/patch/___patch_bin2.txt: -------------------------------------------------------------------------------- 1 | ; bin.dpk 2 | 3 | ; a12a0 -> 87188 4 | #-1A118 5 | 6 | 7 | 8 | ; act1 - shooting range 9 | 10 | ; gun code 2a - guncon data 11 | $87188 12 | 0180023CA402438CA802488C001C03001C0003AE001C0800761C020800000234 13 | 14 | 15 | 16 | ; gun code 2a - hide laser sight (normal) 17 | $85d60 18 | ff03023c 19 | $85d84 20 | ff03023c 21 | 22 | 23 | 24 | ; gun code 2a - hide laser sight (shot, reload) 25 | $85c54 26 | ff03023c 27 | $85c74 28 | ff03023c 29 | 30 | 31 | 32 | ; act1 - shooting range 33 | 34 | ; gun code 2b - game #1 (guncon data) 35 | $87140 36 | 0180023CA402438CA802488C001C03001C0003AE001C0800811C0208200003AE 37 | 38 | 39 | 40 | ; gun code 2c - act2 highway (guncon data) 41 | $79f7c 42 | 0180023CA402438C00000000001C03001C0003AEA802438C00000000F5E7010800140300 43 | 44 | 45 | 46 | ; gun code 2c - hide laser sight (normal) 47 | $79a08 48 | ff03023c 49 | $79a2c 50 | ff03023c 51 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/patcher/japan/patch/___patch_bin2a.txt: -------------------------------------------------------------------------------- 1 | ; bin.dpk 2 | 3 | ; a12a0 -> 87188 4 | #-1A118 5 | 6 | 7 | 8 | ; act1 - shooting range 9 | 10 | ; gun code 2a - guncon data 11 | $87188 12 | 0180023CA402438CA802488C001C03001C0003AE001C0800761C020800000234 13 | 14 | 15 | 16 | ; gun code 2a - hide laser sight (normal) 17 | $85d60 18 | ff03023c 19 | $85d84 20 | ff03023c 21 | 22 | 23 | 24 | ; gun code 2a - hide laser sight (shot, reload) 25 | $85c54 26 | ff03023c 27 | $85c74 28 | ff03023c 29 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/patcher/japan/patch/___patch_bin2b.txt: -------------------------------------------------------------------------------- 1 | ; bin.dpk 2 | 3 | ; a12a0 -> 87188 4 | #-1A118 5 | 6 | 7 | 8 | ; act1 - shooting range 9 | 10 | ; gun code 2b - game #1 (guncon data) 11 | $87140 12 | 0180023CA402438CA802488C001C03001C0003AE001C0800811C0208200003AE 13 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/patcher/japan/patch/___patch_bin2c.txt: -------------------------------------------------------------------------------- 1 | ; bin.dpk 2 | 3 | ; a12a0 -> 87188 4 | #-1A118 5 | 6 | 7 | 8 | ; gun code 2c - act2 highway (guncon data) 9 | $79f7c 10 | 0180023CA402438C00000000001C03001C0003AEA802438C00000000F5E7010800140300 11 | 12 | 13 | 14 | ; gun code 2c - hide laser sight (normal) 15 | $79a08 16 | ff03023c 17 | $79a2c 18 | ff03023c 19 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/patcher/japan/patch/___patch_bin2d.txt: -------------------------------------------------------------------------------- 1 | ; bin.dpk 2 | 3 | 4 | ; f0c70 -> 92284 5 | #-5e9ec 6 | 7 | 8 | ; act5 - mass driver 9 | ; gun code 2d - guncon data 10 | $92284 11 | 0180023CA402438C00000000001C03001C0003AEA802438C00000000B748020800140300 12 | 13 | 14 | 15 | ; gun code 2d - hide laser sight (normal) 16 | $91dcc 17 | ff03023c 18 | $91df0 19 | ff03023c 20 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/patcher/japan/patch/___patch_bin2e.txt: -------------------------------------------------------------------------------- 1 | ; bin.dpk 2 | 3 | 4 | ; d0980 --> 92794 5 | #-3E1EC 6 | 7 | 8 | ; act7 - lobby 9 | 10 | ; gun code 2e- guncon data 11 | $92794 12 | 0180023CA402438C00000000001C03001C0003AEA802438C00000000FB49020800140300 13 | 14 | 15 | 16 | ; gun code 2e - hide laser sight (normal) 17 | $922c4 18 | ff03023c 19 | $922e8 20 | ff03023c 21 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/patcher/japan/patch/___patch_bin2f.txt: -------------------------------------------------------------------------------- 1 | ; bin.dpk 2 | 3 | 4 | ; 105e84 -> 91c98 5 | #-741ec 6 | 7 | 8 | ; act7 - garage 9 | 10 | ; gun code 2f - guncon data 11 | $91c98 12 | 0180023CA402438C00000000001C03001C0003AEA802438C000000003C47020800140300 13 | 14 | 15 | 16 | ; gun code 2f - hide laser sight (normal) 17 | $917cc 18 | ff03023c 19 | $917f0 20 | ff03023c 21 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/patcher/japan/patch/___patch_slps.txt: -------------------------------------------------------------------------------- 1 | ; ab0 -> 102b0 2 | #f800 3 | 4 | 5 | ; checksum verification (remove) 6 | $1ab7a 7 | 0010 8 | 9 | 10 | 11 | ; guncon -> mouse ($49e0 = run-time BIOS code) 12 | ;$49e0 13 | ;AC40000800000000 14 | $102b0 15 | 01801F3CA002FF370380043C48F984340100899063000F3433002F150000000012000934010089A004008F8406009884040080A40200E92904002011FF03093C0400E9AF0E0000100800E9AFA1FFEF2160FFEF2180490F0000790F002078E901AA02093CAAAA29351800E901107800009E00EF210400EFAFF0FF18230800F8AF02008F94FFFC1834FFFFEF390020E9310200201100000000FFF718330800E9310200201100000000FFFB18330040E9310200201100000000FFFB18330000F8A7020098A404801F3C39F9EF93120004340500E4154BF9F8933BF9EF93000000002478F8013BF9EFA300000F3CC474EF8D7A12000800000000 16 | 17 | 18 | 19 | ; ignore guncon buttons (adventure) 20 | $23584 21 | EC40000800000000 22 | $103b0 23 | 03800B3C39F96B3502006115000000000300C2A00400C48C00000000638D000800000000 24 | 25 | 26 | 27 | ; install mouse hooks 28 | $23520 29 | F840000800000000 30 | $103e0 31 | 0000013C0008023CAC404234E04922ACE44920AC0008023C04414234D84922ACDC4920AC0480013C4A8D000839F92124 32 | 33 | 34 | 35 | ; 1-time mouse driver init 36 | ;$49d8 37 | ;0441000800000000 38 | $10410 39 | 01801F3CAC02E4930000000007008010AC02E0A304801F3C1200043439F9E4A3FFFC04343AF9E4A73CF9E0A72611000C010004247812000800000000 40 | 41 | 42 | 43 | ; guncon --> d-pad remap 44 | ;$4856c 45 | ;1841000800000000 46 | $10460 47 | 0480063C39F9C19012000234140041100180063C0680013CA402C28CA802C88C0014020000440800582A22AC5C2A28ACA102C290A202C89000000000A202C2A0FF004238FF00083926400201244002010C0008310200001180000834082228A40680083C4E2A08955D21010800000000 48 | 49 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/src/cd2dvd_patcher/cd2dvd_patcher.dsp: -------------------------------------------------------------------------------- 1 | # Microsoft Developer Studio Project File - Name="cd2dvd_patcher" - Package Owner=<4> 2 | # Microsoft Developer Studio Generated Build File, Format Version 6.00 3 | # ** DO NOT EDIT ** 4 | 5 | # TARGTYPE "Win32 (x86) Console Application" 0x0103 6 | 7 | CFG=cd2dvd_patcher - Win32 Debug 8 | !MESSAGE This is not a valid makefile. To build this project using NMAKE, 9 | !MESSAGE use the Export Makefile command and run 10 | !MESSAGE 11 | !MESSAGE NMAKE /f "cd2dvd_patcher.mak". 12 | !MESSAGE 13 | !MESSAGE You can specify a configuration when running NMAKE 14 | !MESSAGE by defining the macro CFG on the command line. For example: 15 | !MESSAGE 16 | !MESSAGE NMAKE /f "cd2dvd_patcher.mak" CFG="cd2dvd_patcher - Win32 Debug" 17 | !MESSAGE 18 | !MESSAGE Possible choices for configuration are: 19 | !MESSAGE 20 | !MESSAGE "cd2dvd_patcher - Win32 Release" (based on "Win32 (x86) Console Application") 21 | !MESSAGE "cd2dvd_patcher - Win32 Debug" (based on "Win32 (x86) Console Application") 22 | !MESSAGE 23 | 24 | # Begin Project 25 | # PROP AllowPerConfigDependencies 0 26 | # PROP Scc_ProjName "" 27 | # PROP Scc_LocalPath "" 28 | CPP=cl.exe 29 | RSC=rc.exe 30 | 31 | !IF "$(CFG)" == "cd2dvd_patcher - Win32 Release" 32 | 33 | # PROP BASE Use_MFC 0 34 | # PROP BASE Use_Debug_Libraries 0 35 | # PROP BASE Output_Dir "Release" 36 | # PROP BASE Intermediate_Dir "Release" 37 | # PROP BASE Target_Dir "" 38 | # PROP Use_MFC 0 39 | # PROP Use_Debug_Libraries 0 40 | # PROP Output_Dir "Release" 41 | # PROP Intermediate_Dir "Release" 42 | # PROP Ignore_Export_Lib 0 43 | # PROP Target_Dir "" 44 | # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c 45 | # ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c 46 | # ADD BASE RSC /l 0x409 /d "NDEBUG" 47 | # ADD RSC /l 0x409 /d "NDEBUG" 48 | BSC32=bscmake.exe 49 | # ADD BASE BSC32 /nologo 50 | # ADD BSC32 /nologo 51 | LINK32=link.exe 52 | # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 53 | # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"cd2dvd_patcher.exe" 54 | 55 | !ELSEIF "$(CFG)" == "cd2dvd_patcher - Win32 Debug" 56 | 57 | # PROP BASE Use_MFC 0 58 | # PROP BASE Use_Debug_Libraries 1 59 | # PROP BASE Output_Dir "Debug" 60 | # PROP BASE Intermediate_Dir "Debug" 61 | # PROP BASE Target_Dir "" 62 | # PROP Use_MFC 0 63 | # PROP Use_Debug_Libraries 1 64 | # PROP Output_Dir "Debug" 65 | # PROP Intermediate_Dir "Debug" 66 | # PROP Ignore_Export_Lib 0 67 | # PROP Target_Dir "" 68 | # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c 69 | # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c 70 | # ADD BASE RSC /l 0x409 /d "_DEBUG" 71 | # ADD RSC /l 0x409 /d "_DEBUG" 72 | BSC32=bscmake.exe 73 | # ADD BASE BSC32 /nologo 74 | # ADD BSC32 /nologo 75 | LINK32=link.exe 76 | # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept 77 | # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"cd2dvd_patcher.exe" /pdbtype:sept 78 | 79 | !ENDIF 80 | 81 | # Begin Target 82 | 83 | # Name "cd2dvd_patcher - Win32 Release" 84 | # Name "cd2dvd_patcher - Win32 Debug" 85 | # Begin Group "Source Files" 86 | 87 | # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" 88 | # Begin Source File 89 | 90 | SOURCE=.\patcher.cpp 91 | # End Source File 92 | # End Group 93 | # Begin Group "Header Files" 94 | 95 | # PROP Default_Filter "h;hpp;hxx;hm;inl" 96 | # End Group 97 | # Begin Group "Resource Files" 98 | 99 | # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" 100 | # End Group 101 | # End Target 102 | # End Project 103 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Policenauts/src/src/cd2dvd_patcher/cd2dvd_patcher.dsw: -------------------------------------------------------------------------------- 1 | Microsoft Developer Studio Workspace File, Format Version 6.00 2 | # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! 3 | 4 | ############################################################################### 5 | 6 | Project: "cd2dvd_patcher"=".\cd2dvd_patcher.dsp" - Package Owner=<4> 7 | 8 | Package=<5> 9 | {{{ 10 | }}} 11 | 12 | Package=<4> 13 | {{{ 14 | }}} 15 | 16 | ############################################################################### 17 | 18 | Global: 19 | 20 | Package=<5> 21 | {{{ 22 | }}} 23 | 24 | Package=<3> 25 | {{{ 26 | }}} 27 | 28 | ############################################################################### 29 | 30 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Project Horned Owl/readme.txt: -------------------------------------------------------------------------------- 1 | Project Horned Owl 2 | 3 | 4 | Works 5 | > (USA) http://redump.org/disc/3300/ 6 | > (Japan) SCPS-10016 7 | 8 | 9 | 10 | Converts justifiers to dual guncon 11 | 12 | 13 | 14 | Instructions: 15 | 1. Rip game cd to bin/cue or ccd/img format 16 | 2. Run bin/ppf-o-matic3 17 | 3. Drag-drop bin or img file 18 | 4. Drag-drop bin/ppf file 19 | 5. Hit patch 20 | 21 | 22 | 23 | Uninstall: 24 | 1. Run bin/ppf-o-matic3 25 | 2. Click 'undo patch' 26 | 3. Drag-drop bin or img file 27 | 4. Drag-drop bin/ppf file 28 | 5. Hit patch 29 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Project Horned Owl/src/code/japan/boot-1.txt: -------------------------------------------------------------------------------- 1 | ; 100410-100800 2 | ; - 100410-1004xx = write guncon hooks 3 | ; - 100600-100800 = guncon pad code 4 | 5 | 6 | 7 | org $801002b8 8 | 9 | j $80100410 10 | nop 11 | 12 | 13 | 14 | ; copy guncon --> justifier pad code 15 | lui t0,$8010 16 | ori t0,t0,$0600 17 | lui t1,$8002 18 | ori t1,t1,$2a18 19 | 20 | ori t2,r0,$100 21 | 22 | 23 | COPY_CODE1: 24 | lw a0,$0(t0) 25 | addi t2,t2,$fffc 26 | sw a0,$0(t1) 27 | 28 | addiu t0,t0,4 29 | bne t2,r0,COPY_CODE1 30 | addiu t1,t1,4 31 | 32 | 33 | 34 | ; install jmp hooks 35 | lui t0,$8002 36 | 37 | 38 | ; #1 - guncon data 39 | lui t1,$0800 40 | ori t1,t1,$8a86 41 | sw t1,$2c00(t0) 42 | sw r0,$2c04(t0) 43 | 44 | 45 | ; #2 - offscreen shot 46 | ori t1,r0,$1000 47 | sh t1,$2a12(t0) 48 | 49 | 50 | ; #3 - guncon detection 51 | ori t1,r0,$0060 52 | sh t1,$2860(t0) 53 | 54 | ; ================================ 55 | ; ================================ 56 | ; ================================ 57 | 58 | DONE: 59 | 60 | ; OLD code 61 | lw v0,$10(v0) 62 | nop 63 | 64 | j $801002c0 65 | nop 66 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Project Horned Owl/src/code/japan/pad-guncon-1.txt: -------------------------------------------------------------------------------- 1 | ; 22a18-22bxx 2 | ; - 22a18-22bxx = remap buttons, id, cursor data 3 | 4 | 5 | 6 | org $80022c00 7 | 8 | j $80022a18 9 | nop 10 | 11 | 12 | 13 | ; get player address 14 | lw v0,$4fc(gp) 15 | ;nop 16 | 17 | ; ================================ 18 | ; ================================ 19 | ; ================================ 20 | 21 | ; remap guncon ID to justifier 22 | ori s0,r0,$30 23 | sb s0,0(at) 24 | 25 | 26 | 27 | 28 | ;80022ad4 : 3410007F ORI ffffffff (s0), 00000000 (r0), 007f (127), 29 | ;80022ad8 : 341101FF ORI 00000001 (s1), 00000000 (r0), 01ff (511), 30 | 31 | ; force cursor data (guncon x-y) 32 | lh s0,4(v0) 33 | lh s1,6(v0) 34 | ;nop 35 | 36 | 37 | ; x-axis 38 | 39 | ; 256 guncon (pSX rough center) --> 129 justifier --> 0 center 40 | addi s0,s0,$ff80 41 | addi s0,s0,$ff7f 42 | 43 | ; 1.48333333333333 adjustment range (pSX 356 --> 240) 44 | ; - 89 / 60 ===> x * (64-4) / 89 45 | sll at,s0,2 46 | sll s0,s0,6 47 | sub s0,s0,at 48 | 49 | lui at,0x02e0 50 | ori at,0x5c0b 51 | mult s0,at 52 | mfhi s0 53 | 54 | ; 0 center --> 129 justifier 55 | addi s0,s0,$81 56 | 57 | 58 | 59 | ; y-axis 60 | 61 | ; 136 guncon (pSX rough center) --> 120 justifier --> 0 center 62 | addi s1,s1,$fff0 63 | ;addi s1,s1,$ff88 64 | 65 | ; no adjustment range (pSX 240 --> 240 range) 66 | ;lui at,0x7800 67 | ;ori at,0x0000 68 | ;mult s1,at 69 | ;mfhi s1 70 | 71 | ; 0 center --> 120 justifier 72 | ;addi s1,s1,$78 73 | 74 | 75 | 76 | 77 | ; remap guncon --> justifier buttons 78 | 79 | ; $2000 = trigger --> $8000 = trigger 80 | ; $0008 = A --> $4000 = auxiliary 81 | ; $4000 = B --> $0008 = start 82 | 83 | ; at,a0,ra 84 | 85 | lhu at,2(v0) 86 | ori a0,r0,$ffff 87 | 88 | 89 | 90 | ; check trigger (low-assert) 91 | andi v1,at,$2000 92 | bne v1,r0,REMAP_A 93 | nop 94 | 95 | ; set $8000 bit 96 | andi a0,a0,$7fff 97 | 98 | 99 | 100 | REMAP_A: 101 | ; check aux 102 | andi v1,at,$0008 103 | bne v1,r0,REMAP_B 104 | nop 105 | 106 | ; set $4000 bit 107 | andi a0,a0,$bfff 108 | 109 | 110 | 111 | 112 | REMAP_B: 113 | ; check start 114 | andi v1,at,$4000 115 | bne v1,r0,REMAP_BUTTONS 116 | nop 117 | 118 | ; lower $0008 bit 119 | andi a0,a0,$fff7 120 | 121 | 122 | 123 | REMAP_BUTTONS: 124 | sh a0,2(v0) 125 | 126 | ; ================================ 127 | ; ================================ 128 | ; ================================ 129 | 130 | DONE: 131 | 132 | j $80022c08 133 | nop 134 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Project Horned Owl/src/code/usa/asm - horned owl.bat: -------------------------------------------------------------------------------- 1 | del *.bin 2 | 3 | spasm -b pad-guncon-1.txt pad-guncon-1.bin 4 | spasm -b boot-1.txt boot-1.bin 5 | 6 | pause 7 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Project Horned Owl/src/code/usa/boot-1.txt: -------------------------------------------------------------------------------- 1 | ; 100410-100800 2 | ; - 100410-1004xx = write guncon hooks 3 | ; - 100600-100800 = guncon pad code 4 | 5 | 6 | 7 | org $801001f4 8 | 9 | j $80100410 10 | nop 11 | 12 | 13 | 14 | ; copy guncon --> justifier pad code 15 | lui t0,$8010 16 | ori t0,t0,$0600 17 | lui t1,$8002 18 | ori t1,t1,$28ec 19 | 20 | ori t2,r0,$100 21 | 22 | 23 | COPY_CODE1: 24 | lw a0,$0(t0) 25 | addi t2,t2,$fffc 26 | sw a0,$0(t1) 27 | 28 | addiu t0,t0,4 29 | bne t2,r0,COPY_CODE1 30 | addiu t1,t1,4 31 | 32 | 33 | 34 | ; install jmp hooks 35 | lui t0,$8002 36 | 37 | 38 | ; #1 - guncon data 39 | lui t1,$0800 40 | ori t1,t1,$8a3b 41 | sw t1,$2ad4(t0) 42 | sw r0,$2ad8(t0) 43 | 44 | 45 | ; #2 - offscreen shot 46 | ori t1,r0,$1000 47 | sh t1,$28e6(t0) 48 | 49 | 50 | ; #3 - guncon detection 51 | ori t1,r0,$0060 52 | sh t1,$22704(t0) 53 | 54 | ; ================================ 55 | ; ================================ 56 | ; ================================ 57 | 58 | DONE: 59 | 60 | ; OLD code 61 | lw v0,$10(v0) 62 | nop 63 | 64 | j $801001fc 65 | nop 66 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Project Horned Owl/src/code/usa/pad-guncon-1.txt: -------------------------------------------------------------------------------- 1 | ; 228ec-22ac4 2 | ; - 228ec-229xx = remap buttons, id, cursor data 3 | 4 | 5 | 6 | org $80022ad4 7 | 8 | j $800228ec 9 | nop 10 | 11 | 12 | 13 | ; get player address 14 | lw v0,$534(gp) 15 | ;nop 16 | 17 | ; ================================ 18 | ; ================================ 19 | ; ================================ 20 | 21 | ; remap guncon ID to justifier 22 | ori s0,r0,$30 23 | sb s0,0(at) 24 | 25 | 26 | 27 | 28 | ;80022ad4 : 3410007F ORI ffffffff (s0), 00000000 (r0), 007f (127), 29 | ;80022ad8 : 341101FF ORI 00000001 (s1), 00000000 (r0), 01ff (511), 30 | 31 | ; force cursor data (guncon x-y) 32 | lh s0,4(v0) 33 | lh s1,6(v0) 34 | ;nop 35 | 36 | 37 | ; x-axis 38 | 39 | ; 256 guncon (pSX rough center) --> 129 justifier --> 0 center 40 | addi s0,s0,$ff80 41 | addi s0,s0,$ff7f 42 | 43 | ; 256x240 mode 44 | ; 45 | ; 1.48333333333333 adjustment range (pSX 356 --> 240) 46 | ; - 89 / 60 ===> x * (64-4) / 89 47 | sll at,s0,2 48 | sll s0,s0,6 49 | sub s0,s0,at 50 | 51 | lui at,0x02e0 52 | ori at,0x5c0b 53 | mult s0,at 54 | mfhi s0 55 | 56 | ; 0 center --> 129 justifier 57 | addi s0,s0,$81 58 | 59 | 60 | 61 | ; y-axis 62 | 63 | ; 136 guncon (pSX rough center) --> 120 justifier --> 0 center 64 | addi s1,s1,$fff0 65 | ;addi s1,s1,$ff88 66 | 67 | ; no adjustment range (pSX 240 --> 240 range) 68 | ;lui at,0x7800 69 | ;ori at,0x0000 70 | ;mult s1,at 71 | ;mfhi s1 72 | 73 | ; 0 center --> 120 justifier 74 | ;addi s1,s1,$78 75 | 76 | 77 | 78 | 79 | ; remap guncon --> justifier buttons 80 | 81 | ; $2000 = trigger --> $8000 = trigger 82 | ; $0008 = A --> $4000 = auxiliary 83 | ; $4000 = B --> $0008 = start 84 | 85 | ; at,a0,ra 86 | 87 | lhu at,2(v0) 88 | ori a0,r0,$ffff 89 | 90 | 91 | 92 | ; check trigger (low-assert) 93 | andi v1,at,$2000 94 | bne v1,r0,REMAP_A 95 | nop 96 | 97 | ; set $8000 bit 98 | andi a0,a0,$7fff 99 | 100 | 101 | 102 | REMAP_A: 103 | ; check aux 104 | andi v1,at,$0008 105 | bne v1,r0,REMAP_B 106 | nop 107 | 108 | ; set $4000 bit 109 | andi a0,a0,$bfff 110 | 111 | 112 | 113 | 114 | REMAP_B: 115 | ; check start 116 | andi v1,at,$4000 117 | bne v1,r0,REMAP_BUTTONS 118 | nop 119 | 120 | ; lower $0008 bit 121 | andi a0,a0,$fff7 122 | 123 | 124 | 125 | REMAP_BUTTONS: 126 | sh a0,2(v0) 127 | 128 | ; ================================ 129 | ; ================================ 130 | ; ================================ 131 | 132 | DONE: 133 | 134 | j $80022adc 135 | nop 136 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Project Horned Owl/src/notes/project_horned_owl - boot.txt: -------------------------------------------------------------------------------- 1 | 801002b4 : 3C1F8010 LUI 801002b4 (ra), 8010 (32784), 2 | 801002b8 : 8FFF03F0 LW 80100000 (ra), 03f0 (80100000 (ra)) [801003f0] 3 | 801002bc : 00000000 NOP 4 | 801002c0 : 0C040060 JAL 80100180, bfc03d60 (ra), 5 | 801002c4 : 00000000 NOP 6 | (..) 7 | 8010017c : 00000000 NOP 8 | 801001e4 : 0C040085 JAL 80100214, 801001e4 (ra), 9 | 801001e8 : 00000000 NOP 10 | 801001ec : 8F820000 LW 00000000 (v0), 0000 (801003ec (gp)) [801003ec] 11 | 801001f0 : 00000000 NOP 12 | 801001f4 : 8C420010 LW 80010800 (v0), 0010 (80010800 (v0)) [80010810] 13 | 801001f8 : 00000000 NOP 14 | 15 | 16 | ; start compressed exe 17 | 801001fc : 0040F809 JALR 80013430 (v0), 801001ec (ra), 18 | 80100200 : 00000000 NOP 19 | 20 | 21 | 22 | 23 | 80100000-80100800 = code 24 | 80100400-80100800 = code (empty) 25 | ($c00) 26 | 80100800-80100xxx = data (LZ) 27 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Project Horned Owl/src/notes/project_horned_owl - guncon.txt: -------------------------------------------------------------------------------- 1 | ; check controller type (3x = Justifier, 6x = guncon) 2 | 800226dc : 80230000 LB 800b6ae0 (v1), 0000 (8008b264 (at)) [8008b264] 3 | 800226e0 : 34020020 ORI 00000000 (v0), 00000000 (r0), 0020 (32), 4 | 800226e4 : 10620036 BEQ 00000030 (v1), 00000020 (v0), 800227c0, 5 | 800226e8 : 28620021 SLTI 00000020 (v0), 00000030 (v1), 0021 (33), 6 | 7 | 800226ec : 10400005 BEQ 00000000 (v0), 00000000 (r0), 80022704, 8 | 800226f0 : 34020010 ORI 00000000 (v0), 00000000 (r0), 0010 (16), 9 | 10 | ; change this to 60 (justifier -> guncon) 11 | 80022704 : 34020030 ORI 00000010 (v0), 00000000 (r0), 0030 (48), 12 | 80022708 : 1062004B BEQ 00000030 (v1), 00000030 (v0), 80022838, 13 | 8002270c : 34020040 ORI 00000030 (v0), 00000000 (r0), 0040 (64), 14 | 15 | 16 | 17 | 18 | ; force jump to 'offscreen shot data' reload 19 | 800228d8 : 8383053C LB 800b6ae0 (v1), 053c (8008a94c (gp)) [8008ae88] 20 | 800228dc : 00000000 NOP 21 | 800228e0 : 28620003 SLTI 00000000 (v0), 00000000 (v1), 0003 (3), 22 | 800228e4 : 14400078 BNE 00000001 (v0), 00000000 (r0), 80022ac8, 23 | 800228e8 : 00005821 ADDU 00000002 (t3), 00000000 (r0), 00000000 (r0), 24 | 25 | 26 | 27 | NOTE: 28 | 228ec-22ac4 = justifier math (reusable) 29 | 30 | 31 | 32 | 33 | ; manually set guncon data here (x,y) = reload normally 34 | 80022ad4 : 3410007F ORI ffffffff (s0), 00000000 (r0), 007f (127), 35 | 80022ad8 : 341101FF ORI 00000001 (s1), 00000000 (r0), 01ff (511), 36 | 37 | 38 | ; current player address in (gp) 39 | 80022adc : 8F820534 LW 00000001 (v0), 0534 (8008a94c (gp)) [8008ae80] 40 | 41 | 80022ae0 : 3C01800C LUI 8008b264 (at), 800c (32780), 42 | 80022ae4 : 2421BCA6 ADDIU 800c0000 (at), 800c0000 (at), bca6 (48294), 43 | 80022ae8 : 00320821 ADDU 800bbca6 (at), 800bbca6 (at), 00000000 (s2), 44 | 80022aec : A4300000 SH 0000007f (s0), 0000 (800bbca6 (at)) [800bbca6] 45 | 80022af0 : 3C01800C LUI 800bbca6 (at), 800c (32780), 46 | 80022af4 : 2421BCA8 ADDIU 800c0000 (at), 800c0000 (at), bca8 (48296), 47 | 80022af8 : 00320821 ADDU 800bbca8 (at), 800bbca8 (at), 00000000 (s2), 48 | 80022afc : A4310000 SH 000001ff (s1), 0000 (800bbca8 (at)) [800bbca8] 49 | 50 | 51 | 52 | ; justifier --> guncon buttons (remap them here or above) 53 | 80022b00 : 90430002 LBU 00000000 (v1), 0002 (800b65a0 (v0)) [800b65a2] 54 | 80022b04 : 90420003 LBU 800b65a0 (v0), 0003 (800b65a0 (v0)) [800b65a3] 55 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Project Horned Owl/src/notes/project_horned_owl - japan - boot.txt: -------------------------------------------------------------------------------- 1 | 801002b0 : 8F820000 LW 00000000 (v0), 0000 (8010030c (gp)) [8010030c] 2 | 801002b4 : 00000000 NOP 3 | 801002b8 : 8C420010 LW 80010800 (v0), 0010 (80010800 (v0)) [80010810] 4 | 801002bc : 00000000 NOP 5 | 6 | 7 | ; start compressed exe 8 | 801002c0 : 0040F809 JALR 80013e38 (v0), 801002b0 (ra), 9 | 801002c4 : 00000000 NOP 10 | 11 | 12 | 13 | 14 | 80100000-80100800 = code 15 | 80100400-80100800 = code (empty) 16 | ($c00) 17 | 80100800-80100xxx = data (LZ) 18 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Project Horned Owl/src/notes/project_horned_owl - japan - guncon.txt: -------------------------------------------------------------------------------- 1 | ; check controller type (3x = Justifier, 6x = guncon) 2 | 80022838 : 00021E03 SRA 1f801110 (v1), 30000000 (v0), 18 (24), 3 | 8002283c : 34020020 ORI 30000000 (v0), 00000000 (r0), 0020 (32), 4 | 80022840 : 10620036 BEQ 00000030 (v1), 00000020 (v0), 8002291c, 5 | 80022844 : 28620021 SLTI 00000020 (v0), 00000030 (v1), 0021 (33), 6 | 80022848 : 10400005 BEQ 00000000 (v0), 00000000 (r0), 80022860, 7 | 8002284c : 34020010 ORI 00000000 (v0), 00000000 (r0), 0010 (16), 8 | 9 | ; change this to 60 (justifier -> guncon) 10 | 80022860 : 34020030 ORI 00000010 (v0), 00000000 (r0), 0030 (48), 11 | 80022864 : 1062004B BEQ 00000030 (v1), 00000030 (v0), 80022994, 12 | 80022868 : 34020040 ORI 00000030 (v0), 00000000 (r0), 0040 (64), 13 | 14 | 15 | 16 | 17 | 18 | ; force jump to 'offscreen shot data' reload 19 | 80022a04 : 83830504 LB 800b5e24 (v1), 0504 (80086dac (gp)) [800872b0] 20 | 80022a08 : 00000000 NOP 21 | 80022a0c : 28620003 SLTI 00000000 (v0), 00000000 (v1), 0003 (3), 22 | 80022a10 : 14400078 BNE 00000001 (v0), 00000000 (r0), 80022bf4, 23 | 80022a14 : 00005821 ADDU 02820282 (t3), 00000000 (r0), 00000000 (r0), 24 | 25 | 26 | 27 | NOTE: 28 | 22a18-22bxx = justifier math (reusable) 29 | 30 | 31 | 32 | 33 | ; manually set guncon data here (x,y) = reload normally 34 | 80022c00 : 3410007F ORI 800b9f5c (s0), 00000000 (r0), 007f (127), 35 | 80022c04 : 341101FF ORI 00000010 (s1), 00000000 (r0), 01ff (511), 36 | 37 | 38 | 39 | 40 | ; current player address in (gp) 41 | 80022c08 : 8F8304FC LW 00000000 (v1), 04fc (80086dac (gp)) [800872a8] 42 | 43 | 80022c0c : 3C01800C LUI 8008768c (at), 800c (32780), 44 | 80022c10 : 2421AFFA ADDIU 800c0000 (at), 800c0000 (at), affa (45050), 45 | 80022c14 : 00320821 ADDU 800baffa (at), 800baffa (at), 00000000 (s2), 46 | 80022c18 : A4300000 SH 0000007f (s0), 0000 (800baffa (at)) [800baffa] 47 | 80022c1c : 3C01800C LUI 800baffa (at), 800c (32780), 48 | 80022c20 : 2421AFFC ADDIU 800c0000 (at), 800c0000 (at), affc (45052), 49 | 80022c24 : 00320821 ADDU 800baffc (at), 800baffc (at), 00000000 (s2), 50 | 80022c28 : A4310000 SH 000001ff (s1), 0000 (800baffc (at)) [800baffc] 51 | 80022c2c : 08008B0F J 80022c3c, 52 | 80022c30 : 00000000 NOP 53 | (..) 54 | 55 | ; justifier --> guncon buttons (remap them here or above) 56 | 80022c3c : 90620002 LBU 00000001 (v0), 0002 (800b58b4 (v1)) [800b58b6] 57 | 80022c40 : 90630003 LBU 800b58b4 (v1), 0003 (800b58b4 (v1)) [800b58b7] 58 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Project Horned Owl/src/patcher/japan/cd2dvd.bat: -------------------------------------------------------------------------------- 1 | SET FILE_1=PSX.EXE 2 | SET FILE_2=DATA.BIN 3 | 4 | 5 | cd2dvd_patcher ___patch.txt %FILE_1% 0 6 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Project Horned Owl/src/patcher/japan/patch/___.PAD: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Project Horned Owl/src/patcher/japan/patch/___patch.txt: -------------------------------------------------------------------------------- 1 | ; ram offset (raw -> ram) 2 | #FF800 3 | 4 | 5 | 6 | ; exe hooking ($ab8) 7 | $1002b8 8 | 0401040800000000 9 | $100410 10 | 1080083C000608350280093C182A293500010A340000048DFCFF4A21000024AD04000825FBFF4015040029250280083C0008093C868A2935002C09AD042C00AD00100934122A09A560000934602809A51000428C00000000B000040800000000 11 | 12 | 13 | ; guncon code 14 | $100600 15 | FC04828F30001034000030A0040050840600518480FF10227FFF1022800810008081100022800102E002013C0B5C2134180001021080000081001022F0FF312202004194FFFF0434002023300200601400000000FF7F8430080023300200601400000000FFBF8430004023300200601400000000F7FF8430020044A4028B000800000000 16 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Project Horned Owl/src/patcher/usa/cd2dvd.bat: -------------------------------------------------------------------------------- 1 | SET FILE_1=SCUS_944.08 2 | SET FILE_2=DATA.BIN 3 | 4 | 5 | cd2dvd_patcher ___patch.txt %FILE_1% 0 6 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Project Horned Owl/src/patcher/usa/patch/___.PAD: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Project Horned Owl/src/patcher/usa/patch/___patch.txt: -------------------------------------------------------------------------------- 1 | ; ram offset (raw -> ram) 2 | #FF800 3 | 4 | 5 | 6 | ; exe hooking 7 | $1001f4 8 | 0401040800000000 9 | $100410 10 | 1080083C000608350280093CEC28293500010A340000048DFCFF4A21000024AD04000825FBFF4015040029250280083C0008093C3B8A2935D42A09AD00100934E62809A560000934042709A51000428C000000007F00040800000000 11 | 12 | 13 | ; guncon code 14 | $100600 15 | 3405828F30001034000030A0040050840600518480FF10227FFF1022800810008081100022800102E002013C0B5C2134180001021080000081001022F0FF312202004194FFFF0434002023300200601400000000FF7F8430080023300200601400000000FFBF8430004023300200601400000000F7FF8430020044A4B78A000800000000 16 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Project Horned Owl/src/src/cd2dvd_patcher/cd2dvd_patcher.dsp: -------------------------------------------------------------------------------- 1 | # Microsoft Developer Studio Project File - Name="cd2dvd_patcher" - Package Owner=<4> 2 | # Microsoft Developer Studio Generated Build File, Format Version 6.00 3 | # ** DO NOT EDIT ** 4 | 5 | # TARGTYPE "Win32 (x86) Console Application" 0x0103 6 | 7 | CFG=cd2dvd_patcher - Win32 Debug 8 | !MESSAGE This is not a valid makefile. To build this project using NMAKE, 9 | !MESSAGE use the Export Makefile command and run 10 | !MESSAGE 11 | !MESSAGE NMAKE /f "cd2dvd_patcher.mak". 12 | !MESSAGE 13 | !MESSAGE You can specify a configuration when running NMAKE 14 | !MESSAGE by defining the macro CFG on the command line. For example: 15 | !MESSAGE 16 | !MESSAGE NMAKE /f "cd2dvd_patcher.mak" CFG="cd2dvd_patcher - Win32 Debug" 17 | !MESSAGE 18 | !MESSAGE Possible choices for configuration are: 19 | !MESSAGE 20 | !MESSAGE "cd2dvd_patcher - Win32 Release" (based on "Win32 (x86) Console Application") 21 | !MESSAGE "cd2dvd_patcher - Win32 Debug" (based on "Win32 (x86) Console Application") 22 | !MESSAGE 23 | 24 | # Begin Project 25 | # PROP AllowPerConfigDependencies 0 26 | # PROP Scc_ProjName "" 27 | # PROP Scc_LocalPath "" 28 | CPP=cl.exe 29 | RSC=rc.exe 30 | 31 | !IF "$(CFG)" == "cd2dvd_patcher - Win32 Release" 32 | 33 | # PROP BASE Use_MFC 0 34 | # PROP BASE Use_Debug_Libraries 0 35 | # PROP BASE Output_Dir "Release" 36 | # PROP BASE Intermediate_Dir "Release" 37 | # PROP BASE Target_Dir "" 38 | # PROP Use_MFC 0 39 | # PROP Use_Debug_Libraries 0 40 | # PROP Output_Dir "Release" 41 | # PROP Intermediate_Dir "Release" 42 | # PROP Ignore_Export_Lib 0 43 | # PROP Target_Dir "" 44 | # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c 45 | # ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c 46 | # ADD BASE RSC /l 0x409 /d "NDEBUG" 47 | # ADD RSC /l 0x409 /d "NDEBUG" 48 | BSC32=bscmake.exe 49 | # ADD BASE BSC32 /nologo 50 | # ADD BSC32 /nologo 51 | LINK32=link.exe 52 | # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 53 | # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"cd2dvd_patcher.exe" 54 | 55 | !ELSEIF "$(CFG)" == "cd2dvd_patcher - Win32 Debug" 56 | 57 | # PROP BASE Use_MFC 0 58 | # PROP BASE Use_Debug_Libraries 1 59 | # PROP BASE Output_Dir "Debug" 60 | # PROP BASE Intermediate_Dir "Debug" 61 | # PROP BASE Target_Dir "" 62 | # PROP Use_MFC 0 63 | # PROP Use_Debug_Libraries 1 64 | # PROP Output_Dir "Debug" 65 | # PROP Intermediate_Dir "Debug" 66 | # PROP Ignore_Export_Lib 0 67 | # PROP Target_Dir "" 68 | # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c 69 | # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c 70 | # ADD BASE RSC /l 0x409 /d "_DEBUG" 71 | # ADD RSC /l 0x409 /d "_DEBUG" 72 | BSC32=bscmake.exe 73 | # ADD BASE BSC32 /nologo 74 | # ADD BSC32 /nologo 75 | LINK32=link.exe 76 | # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept 77 | # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"cd2dvd_patcher.exe" /pdbtype:sept 78 | 79 | !ENDIF 80 | 81 | # Begin Target 82 | 83 | # Name "cd2dvd_patcher - Win32 Release" 84 | # Name "cd2dvd_patcher - Win32 Debug" 85 | # Begin Group "Source Files" 86 | 87 | # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" 88 | # Begin Source File 89 | 90 | SOURCE=.\patcher.cpp 91 | # End Source File 92 | # End Group 93 | # Begin Group "Header Files" 94 | 95 | # PROP Default_Filter "h;hpp;hxx;hm;inl" 96 | # End Group 97 | # Begin Group "Resource Files" 98 | 99 | # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" 100 | # End Group 101 | # End Target 102 | # End Project 103 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Project Horned Owl/src/src/cd2dvd_patcher/cd2dvd_patcher.dsw: -------------------------------------------------------------------------------- 1 | Microsoft Developer Studio Workspace File, Format Version 6.00 2 | # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! 3 | 4 | ############################################################################### 5 | 6 | Project: "cd2dvd_patcher"=".\cd2dvd_patcher.dsp" - Package Owner=<4> 7 | 8 | Package=<5> 9 | {{{ 10 | }}} 11 | 12 | Package=<4> 13 | {{{ 14 | }}} 15 | 16 | ############################################################################### 17 | 18 | Global: 19 | 20 | Package=<5> 21 | {{{ 22 | }}} 23 | 24 | Package=<3> 25 | {{{ 26 | }}} 27 | 28 | ############################################################################### 29 | 30 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Rebel Assault 2/readme.txt: -------------------------------------------------------------------------------- 1 | Rebel Assault II 2 | 3 | 4 | Works 5 | > (USA) http://redump.org/disc/4817/ 6 | 7 | 8 | Converts justifiers to dual guncon 9 | 10 | 11 | 12 | Instructions: 13 | 1. Rip game cd to bin/cue or ccd/img format 14 | 2. Run bin/ppf-o-matic3 15 | 3. Drag-drop bin or img file 16 | 4. Drag-drop bin/ppf file 17 | 5. Hit patch 18 | 19 | 20 | 21 | Uninstall: 22 | 1. Run bin/ppf-o-matic3 23 | 2. Click 'undo patch' 24 | 3. Drag-drop bin or img file 25 | 4. Drag-drop bin/ppf file 26 | 5. Hit patch 27 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Rebel Assault 2/src/code/usa/asm - rebel2.bat: -------------------------------------------------------------------------------- 1 | del *.bin 2 | 3 | spasm -b pad-guncon-1.txt pad-guncon-1.bin 4 | 5 | pause 6 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Rebel Assault 2/src/code/usa/pad-guncon-1.txt: -------------------------------------------------------------------------------- 1 | ; 2ff80-30320 2 | ; - 30200-30320 = remap buttons, id, cursor data 3 | 4 | 5 | 6 | org $800301f8 7 | 8 | j $80030200 9 | nop 10 | 11 | 12 | 13 | lui v0,$800e 14 | ori v0,$5b56 15 | 16 | ; ======================================= 17 | ; ======================================= 18 | ; ======================================= 19 | 20 | ; at, a0, s2, v0, v1,s3,s4 21 | ; - v0 = guncon data 22 | ; - at = temp 23 | ; - s2 = guncon x 24 | ; - v1 = guncon y 25 | 26 | 27 | REMAP_GUNCON: 28 | 29 | ; remap guncon ID to justifier 30 | ori at,r0,$31 31 | sb at,1(v0) 32 | 33 | 34 | 35 | ; force cursor data (guncon x-y) 36 | lh s2,4(v0) 37 | lh v1,6(v0) 38 | ;nop 39 | 40 | 41 | 42 | 43 | ; set valid latch data (1,10 = guncon offscreen normally) 44 | ; - 0 = onscreen, 1 = offscreen 45 | slti at,s2,2 46 | beq at,r0,REMAP_XY 47 | ori at,r0,1 48 | 49 | 50 | ; offscreen shot - force (0,0) 51 | sh r0,4(v0) 52 | sh r0,6(v0) 53 | beq r0,r0,REMAP_GUNCON_BUTTONS 54 | sh r0,8(v0) 55 | 56 | 57 | 58 | 59 | REMAP_XY: 60 | 61 | ; signal on-screen shot 62 | sb at,5(v0) 63 | 64 | 65 | 66 | 67 | ; x-axis 68 | 69 | ; 255 guncon (pSX rough center) --> 160 justifier --> 0 center 70 | addi s2,s2,$ffa1 71 | ;addi s2,s2,$ff60 72 | addi s2,s2,$ff9d 73 | 74 | 75 | 76 | ; adjustment range (pSX 384 --> 320) 77 | ; - 80 / 96 (384 * 128 / 320) ===> x * (64+16) / 96 78 | sll at,s2,6 79 | sll s2,s2,4 80 | add s2,s2,at 81 | 82 | lui at,0x02aa 83 | ori at,0xaaaa 84 | mult s2,at 85 | mfhi s2 86 | 87 | ; 0 center --> 160+157 justifier 88 | ;addi s2,s2,$13d 89 | addi s2,s2,$100 90 | 91 | sh s2,8(v0) 92 | 93 | 94 | 95 | ; y-axis 96 | 97 | ; 136 guncon (pSX rough center) --> 120 justifier --> 0 center 98 | addi v1,v1,$fff0 99 | addi v1,v1,$ff93 100 | 101 | ; no adjustment range (pSX 240 --> 240 range) 102 | ;lui at,0x7800 103 | ;ori at,0x0000 104 | ;mult s1,at 105 | ;mfhi s1 106 | 107 | ; 0 center --> 120+12 justifier 108 | addi v1,v1,$88 109 | 110 | sh v1,6(v0) 111 | 112 | 113 | 114 | 115 | ; stage 12 special calibration 116 | lui a0,$800b+1 117 | lw a0,$da7c(a0) 118 | lui at,$5032 119 | ori at,at,$316c 120 | 121 | bne a0,at,REMAP_GUNCON_BUTTONS 122 | nop 123 | 124 | 125 | ; change xy centering 126 | addi s2,s2,$04 127 | sh s2,8(v0) 128 | addi v1,v1,$04 129 | sh v1,6(v0) 130 | 131 | 132 | 133 | 134 | REMAP_GUNCON_BUTTONS: 135 | 136 | ; remap guncon --> justifier buttons 137 | 138 | ; $2000 = trigger --> $8000 = trigger 139 | ; $0008 = A --> $4000 = auxiliary 140 | ; $4000 = B --> $0008 = start 141 | 142 | ; at,a0,ra 143 | 144 | lhu s2,2(v0) 145 | ori a0,r0,$ffff 146 | 147 | 148 | 149 | ; check trigger (low-assert) 150 | andi v1,s2,$2000 151 | bne v1,r0,REMAP_A 152 | nop 153 | 154 | ; set $8000 bit 155 | andi a0,a0,$7fff 156 | 157 | 158 | 159 | REMAP_A: 160 | ; check aux 161 | andi v1,s2,$0008 162 | bne v1,r0,REMAP_B 163 | nop 164 | 165 | ; set $4000 bit 166 | andi a0,a0,$bfff 167 | 168 | 169 | 170 | 171 | REMAP_B: 172 | ; check start 173 | andi v1,s2,$4000 174 | bne v1,r0,REMAP_BUTTONS 175 | nop 176 | 177 | ; lower $0008 bit 178 | andi a0,a0,$fff7 179 | 180 | 181 | 182 | 183 | REMAP_BUTTONS: 184 | sh a0,2(v0) 185 | 186 | ; ================================ 187 | ; ================================ 188 | ; ================================ 189 | 190 | DONE: 191 | 192 | ; OLD code 193 | ori v0,r0,4 194 | j $80037c7c 195 | lui at,$800f 196 | 197 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Rebel Assault 2/src/patcher/usa/cd2dvd.bat: -------------------------------------------------------------------------------- 1 | SET FILE_1=SLUS_003.81 2 | SET FILE_2=SLUS_003.86 3 | 4 | 5 | cd2dvd_patcher ___patch.txt %FILE_1% 0 6 | cd2dvd_patcher ___patch.txt %FILE_2% 0 7 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Rebel Assault 2/src/patcher/usa/patch/___.PAD: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Rebel Assault 2/src/patcher/usa/patch/___patch.txt: -------------------------------------------------------------------------------- 1 | ; ram offset (raw -> ram) 2 | #f800 3 | 4 | 5 | 6 | ; remap guncon --> justifier data 7 | $37c74 8 | 80C0000800000000 9 | $30200 10 | 0E80023C565B423431000134010041A004005284060043840200412A0500201001000134040040A4060040A41B000010080040A4050041A0A1FF52229DFF5222800912000091120020904102AA02013CAAAA2134180041021090000002015222080052A4F0FF632093FF632088006320060043A40C80043C7CDA848C3250013C6C312134050081140000000003005222080052A404006320060043A402005294FFFF0434002043320200601400000000FF7F8430080043320200601400000000FFBF8430004043320200601400000000F7FF8430020044A4040002341FDF00080F80013C 11 | 12 | 13 | 14 | ; justifier ID 15 | $37c34 16 | 06 17 | 18 | 19 | ; justifier latch reset 20 | $93d00 21 | 00000000 22 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Rebel Assault 2/src/src/cd2dvd_patcher/cd2dvd_patcher.dsp: -------------------------------------------------------------------------------- 1 | # Microsoft Developer Studio Project File - Name="cd2dvd_patcher" - Package Owner=<4> 2 | # Microsoft Developer Studio Generated Build File, Format Version 6.00 3 | # ** DO NOT EDIT ** 4 | 5 | # TARGTYPE "Win32 (x86) Console Application" 0x0103 6 | 7 | CFG=cd2dvd_patcher - Win32 Debug 8 | !MESSAGE This is not a valid makefile. To build this project using NMAKE, 9 | !MESSAGE use the Export Makefile command and run 10 | !MESSAGE 11 | !MESSAGE NMAKE /f "cd2dvd_patcher.mak". 12 | !MESSAGE 13 | !MESSAGE You can specify a configuration when running NMAKE 14 | !MESSAGE by defining the macro CFG on the command line. For example: 15 | !MESSAGE 16 | !MESSAGE NMAKE /f "cd2dvd_patcher.mak" CFG="cd2dvd_patcher - Win32 Debug" 17 | !MESSAGE 18 | !MESSAGE Possible choices for configuration are: 19 | !MESSAGE 20 | !MESSAGE "cd2dvd_patcher - Win32 Release" (based on "Win32 (x86) Console Application") 21 | !MESSAGE "cd2dvd_patcher - Win32 Debug" (based on "Win32 (x86) Console Application") 22 | !MESSAGE 23 | 24 | # Begin Project 25 | # PROP AllowPerConfigDependencies 0 26 | # PROP Scc_ProjName "" 27 | # PROP Scc_LocalPath "" 28 | CPP=cl.exe 29 | RSC=rc.exe 30 | 31 | !IF "$(CFG)" == "cd2dvd_patcher - Win32 Release" 32 | 33 | # PROP BASE Use_MFC 0 34 | # PROP BASE Use_Debug_Libraries 0 35 | # PROP BASE Output_Dir "Release" 36 | # PROP BASE Intermediate_Dir "Release" 37 | # PROP BASE Target_Dir "" 38 | # PROP Use_MFC 0 39 | # PROP Use_Debug_Libraries 0 40 | # PROP Output_Dir "Release" 41 | # PROP Intermediate_Dir "Release" 42 | # PROP Ignore_Export_Lib 0 43 | # PROP Target_Dir "" 44 | # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c 45 | # ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c 46 | # ADD BASE RSC /l 0x409 /d "NDEBUG" 47 | # ADD RSC /l 0x409 /d "NDEBUG" 48 | BSC32=bscmake.exe 49 | # ADD BASE BSC32 /nologo 50 | # ADD BSC32 /nologo 51 | LINK32=link.exe 52 | # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 53 | # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"cd2dvd_patcher.exe" 54 | 55 | !ELSEIF "$(CFG)" == "cd2dvd_patcher - Win32 Debug" 56 | 57 | # PROP BASE Use_MFC 0 58 | # PROP BASE Use_Debug_Libraries 1 59 | # PROP BASE Output_Dir "Debug" 60 | # PROP BASE Intermediate_Dir "Debug" 61 | # PROP BASE Target_Dir "" 62 | # PROP Use_MFC 0 63 | # PROP Use_Debug_Libraries 1 64 | # PROP Output_Dir "Debug" 65 | # PROP Intermediate_Dir "Debug" 66 | # PROP Ignore_Export_Lib 0 67 | # PROP Target_Dir "" 68 | # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c 69 | # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c 70 | # ADD BASE RSC /l 0x409 /d "_DEBUG" 71 | # ADD RSC /l 0x409 /d "_DEBUG" 72 | BSC32=bscmake.exe 73 | # ADD BASE BSC32 /nologo 74 | # ADD BSC32 /nologo 75 | LINK32=link.exe 76 | # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept 77 | # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"cd2dvd_patcher.exe" /pdbtype:sept 78 | 79 | !ENDIF 80 | 81 | # Begin Target 82 | 83 | # Name "cd2dvd_patcher - Win32 Release" 84 | # Name "cd2dvd_patcher - Win32 Debug" 85 | # Begin Group "Source Files" 86 | 87 | # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" 88 | # Begin Source File 89 | 90 | SOURCE=.\patcher.cpp 91 | # End Source File 92 | # End Group 93 | # Begin Group "Header Files" 94 | 95 | # PROP Default_Filter "h;hpp;hxx;hm;inl" 96 | # End Group 97 | # Begin Group "Resource Files" 98 | 99 | # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" 100 | # End Group 101 | # End Target 102 | # End Project 103 | -------------------------------------------------------------------------------- /ps1 - guncon conversions/Rebel Assault 2/src/src/cd2dvd_patcher/cd2dvd_patcher.dsw: -------------------------------------------------------------------------------- 1 | Microsoft Developer Studio Workspace File, Format Version 6.00 2 | # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! 3 | 4 | ############################################################################### 5 | 6 | Project: "cd2dvd_patcher"=".\cd2dvd_patcher.dsp" - Package Owner=<4> 7 | 8 | Package=<5> 9 | {{{ 10 | }}} 11 | 12 | Package=<4> 13 | {{{ 14 | }}} 15 | 16 | ############################################################################### 17 | 18 | Global: 19 | 20 | Package=<5> 21 | {{{ 22 | }}} 23 | 24 | Package=<3> 25 | {{{ 26 | }}} 27 | 28 | ############################################################################### 29 | 30 | --------------------------------------------------------------------------------