Refactor: Support exe, sane arg order

This commit is contained in:
Will Toohey
2019-11-17 20:58:28 +10:00
parent 01e1818047
commit b27039dbe6
33 changed files with 638 additions and 648 deletions
+2 -2
View File
@@ -1,6 +1,6 @@
# BemaniPatcher
A tool to easily apply known hex edits to any DLL, with examples for Bemani games.
A tool to easily apply known hex edits to any binary, with examples for Bemani games.
Should work on most modern browsers.
Live version hosted [on my website](http://mon.im/bemanipatcher/).
Live version hosted [on my website](https://mon.im/bemanipatcher/).
+7 -7
View File
@@ -10,8 +10,8 @@
<script type='text/javascript' src='js/dllpatcher.js'></script>
<script type='text/javascript'>
window.addEventListener('load', function () {
new DllPatcherContainer([
new DllPatcher('bm2dx', [
new PatchContainer([
new Patcher('bm2dx.dll', "2018-09-19", [
{
// discovered by GHYAKIMA
name: 'SSE4.2 Fix',
@@ -191,8 +191,8 @@
tooltip : "Immediately loads into chart after selection.",
patches: [{offset: 0x72775, off: [0xE8, 0x66, 0x00, 0x00, 0x00], on: [0x90, 0x90, 0x90, 0x90, 0x90]}]
},
], "2018-09-19"),
new DllPatcher('bm2dx', [
]),
new Patcher('bm2dx.dll', "2018-07-24", [
{
name: 'Unlock All Songs',
patches: [{offset: 0xB61D2, off: [0x74, 0x10], on: [0x90, 0x90]}]
@@ -215,8 +215,8 @@
tooltip : "Holding Start will pause the song at the beginning until you release it",
patches: [{offset: 0xF5D9A, off: [0x7D, 0x25], on: [0x90, 0x90]}]
},
], "2018-07-24"),
new DllPatcher('bm2dx', [
]),
new Patcher('bm2dx.dll', "2018-06-13", [
{
name: 'Unlock All Songs',
patches: [{offset: 0xB42D2, off: [0x74, 0x10], on: [0x90, 0x90]}]
@@ -239,7 +239,7 @@
tooltip : "Holding Start will pause the song at the beginning until you release it",
patches: [{offset: 0xF296A, off: [0x7D, 0x25], on: [0x90, 0x90]}]
},
], "2018-06-13"),
]),
]);
});
</script>
+3 -3
View File
@@ -10,8 +10,8 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function() {
new DllPatcherContainer([
new DllPatcher("beatstream", [
new PatchContainer([
new Patcher("beatstream.dll", "2015-12-01", [
{
name: "E: drive fix",
tooltip: "Fix crash caused by no E: drive",
@@ -25,7 +25,7 @@
on: [0xBB, 0x00, 0x00, 0x00, 0x00, 0xE9, 0xAE, 0x01, 0x00, 0x00]
}]
},
], "2015-12-01"),
]),
]);
});
</script>
+3 -3
View File
@@ -10,8 +10,8 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function() {
new DllPatcherContainer([
new DllPatcher("beatstream", [
new PatchContainer([
new Patcher("beatstream.dll", "2016-11-14", [
{
name: "E: drive fix",
tooltip: "Fix crash caused by no E: drive",
@@ -33,7 +33,7 @@
on: [0xB0, 0x01, 0xE9, 0xAD, 0x00, 0x00]
}]
},
], "2016-11-14"),
]),
]);
});
</script>
+3 -3
View File
@@ -10,8 +10,8 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function() {
new DllPatcherContainer([
new DllPatcher("bm2dx", [
new PatchContainer([
new Patcher('bm2dx.dll', "2016-08-31", [
{
name : "Timer Freeze",
patches : [{offset : 0x8F98E, off: [0x74], on : [0xEB]}]
@@ -101,7 +101,7 @@
//changes the FPS = %2.4f string to FPS = %2.6f
patches: [{offset: 0x13E429, off: [0x34], on: [0x36]}]
},
], "2016-08-31"),
]),
]);
});
</script>
+1 -1
View File
@@ -10,7 +10,7 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function() {
new DllPatcher("mdxja_", [
new Patcher("mdxja.dll", "", [
{// Created by Renard1911
name : "Premium Free",
tooltip: "Song clears/scores only. Profile progress and custom settings do not save. Reboot game to re-query for scores.",
+7 -7
View File
@@ -10,8 +10,8 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function () {
new DllPatcherContainer([
new DllPatcher("gamemdx", [
new PatchContainer([
new Patcher("gamemdx.dll", "2019-04-22", [
{
name: "Force enable fast/slow",
patches: [{offset: 0x97C60, off: [0x8B, 0x41, 0x44], on: [0x31, 0xC0, 0x40]}]
@@ -83,8 +83,8 @@
{offset: 0x2D0AE, off: [0xE8, 0x3D, 0x0D, 0xFE, 0xFF], on: [0xB8, 0x00, 0x00, 0x00, 0x00]},
]
}
], "2019-04-22"),
new DllPatcher("gamemdx", [
]),
new Patcher("gamemdx.dll", "2018-10-22", [
{
name: "Force enable fast/slow",
patches: [{offset: 0x8CA60, off: [0x8B, 0x41, 0x44], on: [0x31, 0xC0, 0x40]}]
@@ -139,8 +139,8 @@
tooltip: "Song clears/scores only. Profile progress and custom settings do not save. Reboot game to re-query for scores.",
patches: [{offset: 0x1f0a6, off: [0x01], on: [0x00]}]
},
], "2018-10-22"),
new DllPatcher("gamemdx", [
]),
new Patcher("gamemdx.dll", "2018-04-23", [
{
name: "Force enable fast/slow",
patches: [{offset: 0x84EC0, off: [0x8B, 0x41, 0x44], on: [0x31, 0xC0, 0x40]}]
@@ -204,7 +204,7 @@
{offset: 0x8C29, off: [0x74, 0x2E], on: [0xEB, 0x2C]},
]
},
], "2018-04-23"),
]),
]);
});
</script>
+7 -9
View File
@@ -10,16 +10,15 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function () {
new DllPatcherContainer([
new DllPatcher("game", [
new Patcher("game.dll", "", [
{
name: "Force unlock SECRET folder",
patches: [
{offset: 0xC259A, off: [0x74, 0x12, 0x68, 0xC0], on: [0x90, 0x90, 0x68, 0xC0]}
]
}
], true),
new DllPatcher("boot", [
]);
new Patcher("boot.dll", "", [
{
name: "GF's volume fix",
patches: [
@@ -28,8 +27,8 @@
{offset: 0x1BD1, off: [0x02], on: [0x03]},
]
}
], true),
new DllPatcher("libshare-pj", [
]);
new Patcher("libshare-pj.dll", "", [
{
name: "Let the game can access e-amuemu which IP is 192.168.*.*",
tooltip: "It's highly recommended using this just to turn off the e-AMUSEMENT easily,since it's not compatiable with e-amuemu(Cannot register cards but still can get into the game)",
@@ -37,13 +36,12 @@
{offset: 0x17ECA, off: [0x01, 0x5B], on: [0x00, 0x5B]}
]
}
], true),
new DllPatcher("libsytem", [
]);
new Patcher("libsystem.dll", "", [
{
name: "White screen freeze fix",
patches: [{offset: 0x306C, off: [0x53, 0x53], on: [0x33, 0xC0]}]
}
], true)
]);
});
</script>
+5 -7
View File
@@ -10,16 +10,15 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function () {
new DllPatcherContainer([
new DllPatcher("game", [
new Patcher("game.dll", "", [
{
name: "Force unlock SECRET folder",
patches: [
{offset: 0xCC8EA, off: [0x74, 0x12, 0x68, 0x04], on: [0x90, 0x90, 0x68, 0x04]}
]
}
], true),
new DllPatcher("boot", [
]);
new Patcher("boot.dll", "", [
{
name: "GF's volume fix",
patches: [
@@ -28,15 +27,14 @@
{offset: 0x1B71, off: [0x02], on: [0x03]},
]
}
], true),
new DllPatcher("libshare-pj", [
]);
new Patcher("libshare-pj.dll", "", [
{
name: "Let the game can access e-amuemu which IP is 192.168.*.*",
patches: [
{offset: 0x18F3A, off: [0x01, 0x5B], on: [0x00, 0x5B]}
]
}
], true)
]);
});
</script>
+7 -9
View File
@@ -10,16 +10,15 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function () {
new DllPatcherContainer([
new DllPatcher("game", [
new Patcher("game.dll", "", [
{
name: "Force unlock SECRET folder",
patches: [
{offset: 0xBA187, off: [0x74, 0x04, 0xC6, 0x46], on: [0x90, 0x90, 0xC6, 0x46]}
]
}
], true),
new DllPatcher("boot", [
]);
new Patcher("boot.dll", "", [
{
name: "GF's volume fix",
patches: [
@@ -28,21 +27,20 @@
{offset: 0x1A41, off: [0x02], on: [0x03]},
]
}
], true),
new DllPatcher("libshare-pj", [
]);
new Patcher("libshare-pj.dll", "", [
{
name: "Let the game can access e-amuemu which IP is 192.168.*.*",
patches: [
{offset: 0x16B99, off: [0x01, 0x5B], on: [0x00, 0x5B]}
]
}
], true),
new DllPatcher("libsytem", [
]);
new Patcher("libsystem.dll", "", [
{
name: "White screen freeze fix",
patches: [{offset: 0x2DFC, off: [0x53, 0x53, 0xA3, 0xCC], on: [0x33, 0xC0, 0xA3, 0xCC]}]
}
], true)
]);
});
</script>
+2 -4
View File
@@ -10,14 +10,12 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function () {
new DllPatcherContainer([
new DllPatcher("libshare-pj", [
new Patcher("libshare-pj.dll", "", [
{
name: 'Fix "IP CHANGE ERROR"',
patches: [{offset: 0x23305, off: [0x74], on: [0xEB]}]
}
], true)
]);
])
});
</script>
</head>
+3 -5
View File
@@ -10,8 +10,7 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function () {
new DllPatcherContainer([
new DllPatcher("game", [
new Patcher("game.dll", "", [
{
name: "Timer Freeze",
patches: [{offset: 0xBC37, off: [0x0F, 0x85, 0xAA, 0x01, 0x00, 0x00], on: [0xE9, 0xAB, 0x01, 0x00, 0x00, 0x90]}]
@@ -33,13 +32,12 @@
name: "Enable Long Music",
patches: [{offset: 0x163134, off: [0x75, 0x03], on: [0x90, 0x90]}]
}
], true),
new DllPatcher("libshare-pj", [
]);
new Patcher("libshare-pj.dll", "", [
{
name: "Fix IP change error",
patches: [{offset: 0x23375, off: [0x74], on: [0xEB]}]
}
], true)
]);
});
</script>
+1 -1
View File
@@ -10,7 +10,7 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function () {
new DllPatcher("game", [
new Patcher("game.dll", "", [
{
name: "Timer Freeze",
patches: [{offset: 0xBCE7, off: [0x0F, 0x85, 0xAA, 0x01, 0x00, 0x00], on: [0xE9, 0xAB, 0x01, 0x00, 0x00, 0x90]}]
+1 -1
View File
@@ -10,7 +10,7 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function () {
new DllPatcher("game", [
new Patcher("game.dll", "", [
{
name: "Timer Freeze",
patches: [{offset: 0xBC17, off: [0x0F, 0x85, 0xAA, 0x01, 0x00, 0x00], on: [0xE9, 0xAB, 0x01, 0x00, 0x00, 0x90]}]
+1 -1
View File
@@ -10,7 +10,7 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function () {
new DllPatcher("game", [
new Patcher("game.dll", "", [
{
name: "Timer Freeze",
patches: [{offset: 0xBC37, off: [0x0F, 0x85, 0xAA, 0x01, 0x00, 0x00], on: [0xE9, 0xAB, 0x01, 0x00, 0x00, 0x90]}]
+102 -99
View File
@@ -2,22 +2,45 @@
"use strict";
// form labels often need unique IDs - this can be used to generate some
window.DllPatcher_uniqueid = 0;
window.Patcher_uniqueid = 0;
var createID = function() {
window.DllPatcher_uniqueid++;
return "dllpatch_" + window.DllPatcher_uniqueid;
window.Patcher_uniqueid++;
return "dllpatch_" + window.Patcher_uniqueid;
};
var bytesMatch = function(buffer, offset, bytes) {
for(var i = 0; i < bytes.length; i++) {
if(buffer[offset+i] != bytes[i])
return false;
}
return true;
};
var replace = function(buffer, offset, bytes) {
for(var i = 0; i < bytes.length; i++) {
buffer[offset+i] = bytes[i];
}
}
var whichBytesMatch = function(buffer, offset, bytesArray) {
for(var i = 0; i < bytesArray.length; i++) {
if(bytesMatch(buffer, offset, bytesArray[i]))
return i;
}
return -1;
}
// Each unique kind of patch should have createUI, validatePatch, applyPatch,
// updateUI
var StandardPatch = function(options) {
class StandardPatch {
constructor(options) {
this.name = options.name;
this.patches = options.patches;
this.tooltip = options.tooltip;
};
}
StandardPatch.prototype.createUI = function(parent) {
createUI(parent) {
var id = createID();
var label = this.name;
var patch = $('<div>', {'class' : 'patch'});
@@ -28,13 +51,13 @@ StandardPatch.prototype.createUI = function(parent) {
patch.append('<div class="tooltip">' + this.tooltip + '</div>');
}
parent.append(patch);
};
}
StandardPatch.prototype.updateUI = function(file) {
updateUI(file) {
this.checkbox.checked = this.checkPatchBytes(file) === "on";
};
}
StandardPatch.prototype.validatePatch = function(file) {
validatePatch(file) {
var status = this.checkPatchBytes(file);
if(status === "on") {
console.log('"' + this.name + '"', "is enabled!");
@@ -43,20 +66,20 @@ StandardPatch.prototype.validatePatch = function(file) {
} else {
return '"' + this.name + '" is neither on nor off! Have you got the right dll?';
}
};
}
StandardPatch.prototype.applyPatch = function(file) {
applyPatch(file) {
this.replaceAll(file, this.checkbox.checked);
};
}
StandardPatch.prototype.replaceAll = function(file, featureOn) {
replaceAll(file, featureOn) {
for(var i = 0; i < this.patches.length; i++) {
replace(file, this.patches[i].offset,
featureOn? this.patches[i].on : this.patches[i].off);
}
}
}
StandardPatch.prototype.checkPatchBytes = function(file) {
checkPatchBytes(file) {
var patchStatus = "";
for(var i = 0; i < this.patches.length; i++) {
var patch = this.patches[i];
@@ -77,19 +100,21 @@ StandardPatch.prototype.checkPatchBytes = function(file) {
}
}
return patchStatus;
}
}
// Each unique kind of patch should have createUI, validatePatch, applyPatch,
// updateUI
// The DEFAULT state is always the 1st element in the patches array
var UnionPatch = function(options) {
class UnionPatch {
constructor(options) {
this.name = options.name;
this.offset = options.offset;
this.patches = options.patches;
};
}
UnionPatch.prototype.createUI = function(parent) {
createUI(parent) {
this.radios = [];
var radio_id = createID();
@@ -111,9 +136,9 @@ UnionPatch.prototype.createUI = function(parent) {
container.append(patchDiv);
}
parent.append(container);
};
}
UnionPatch.prototype.updateUI = function(file) {
updateUI(file) {
for(var i = 0; i < this.patches.length; i++) {
if(bytesMatch(file, this.offset, this.patches[i].patch)) {
this.radios[i].checked = true;
@@ -122,9 +147,9 @@ UnionPatch.prototype.updateUI = function(file) {
}
// Default fallback
this.radios[0].checked = true;
};
}
UnionPatch.prototype.validatePatch = function(file) {
validatePatch(file) {
for(var i = 0; i < this.patches.length; i++) {
if(bytesMatch(file, this.offset, this.patches[i].patch)) {
console.log(this.name, "has", this.patches[i].name, "enabled");
@@ -132,49 +157,60 @@ UnionPatch.prototype.validatePatch = function(file) {
}
}
return '"' + this.name + '" doesn\'t have a valid patch! Have you got the right dll?';
};
}
UnionPatch.prototype.applyPatch = function(file) {
applyPatch(file) {
var patch = this.getSelected();
replace(file, this.offset, patch.patch);
};
}
UnionPatch.prototype.getSelected = function() {
getSelected() {
for(var i = 0; i < this.patches.length; i++) {
if(this.radios[i].checked) {
return this.patches[i];
}
}
return null;
}
}
var DllPatcherContainer = function (patchers) {
this.patchers = patchers;
this.createUI();
var loadPatch = function(_this, self, patcher) {
patcher.loadPatchUI();
patcher.updatePatchUI();
patcher.container.show();
var successStr = patcher.filename;
if ($.type(_this.description) === "string") {
successStr += "(" + patcher.description + ")";
}
self.successDiv.html(successStr + " loaded successfully!");
};
DllPatcherContainer.prototype.getSupportedDLLs = function () {
class PatchContainer {
constructor(patchers) {
this.patchers = patchers;
this.createUI();
}
getSupportedDLLs() {
var dlls = [];
for (var i = 0; i < this.patchers.length; i++) {
var name = this.patchers[i].filename + ".dll";
var name = this.patchers[i].filename;
if (dlls.indexOf(name) === -1) {
dlls.push(name);
}
}
return dlls;
};
}
DllPatcherContainer.prototype.getSupportedVersions = function () {
getSupportedVersions() {
var descriptions = [];
for (var i = 0; i < this.patchers.length; i++) {
if ($.type(this.patchers[i].description) === "string") {
descriptions.push(this.patchers[i].description);
}
}
return descriptions;
};
}
DllPatcherContainer.prototype.createUI = function () {
createUI() {
var self = this;
var container = $("<div>", {"class": "patchContainer"});
var header = this.getSupportedDLLs().join(", ");
@@ -241,21 +277,9 @@ DllPatcherContainer.prototype.createUI = function () {
container.append(this.successDiv);
container.append(this.errorDiv);
$("body").append(container);
};
// DRY
var loadPatch = function(_this, self, patcher) {
patcher.loadPatchUI();
patcher.updatePatchUI();
patcher.container.show();
var successStr = patcher.filename + ".dll"
if ($.type(_this.description) === "string") {
successStr += "(" + patcher.description + ")";
}
self.successDiv.html(successStr + " loaded successfully!");
}
DllPatcherContainer.prototype.loadFile = function (file) {
loadFile(file) {
var reader = new FileReader();
var self = this;
@@ -305,9 +329,11 @@ DllPatcherContainer.prototype.loadFile = function (file) {
};
reader.readAsArrayBuffer(file);
};
}
}
var DllPatcher = function(fname, args, description) {
class Patcher {
constructor(fname, description, args) {
this.mods = [];
for(var i = 0; i < args.length; i++) {
var mod = args[i];
@@ -330,13 +356,13 @@ var DllPatcher = function(fname, args, description) {
this.createUI();
this.loadPatchUI();
}
};
}
DllPatcher.prototype.createUI = function() {
createUI() {
var self = this;
this.container = $("<div>", {"class": "patchContainer"});
var header = this.filename + '.dll';
if($.type(this.description) === "string") {
var header = this.filename;
if(this.description === "string") {
header += ' (' + this.description + ')';
}
this.container.html('<h3>' + header + '</h3>');
@@ -367,7 +393,7 @@ DllPatcher.prototype.createUI = function() {
var files = e.originalEvent.dataTransfer.files;
if(files && files.length > 0)
self.loadFile(files[0]);
})
});
this.fileInput = $("<input>",
{"class": "fileInput",
@@ -390,14 +416,14 @@ DllPatcher.prototype.createUI = function() {
this.container.append(this.patchDiv);
this.container.append(saveButton);
$("body").append(this.container);
}
}
DllPatcher.prototype.destroyUI = function () {
destroyUI() {
if (this.hasOwnProperty("container"))
this.container.remove();
};
}
DllPatcher.prototype.loadBuffer = function(buffer) {
loadBuffer(buffer) {
this.dllFile = new Uint8Array(buffer);
if(this.validatePatches()) {
this.successDiv.removeClass("hidden");
@@ -407,11 +433,11 @@ DllPatcher.prototype.loadBuffer = function(buffer) {
}
// Update save button regardless
this.saveButton.prop('disabled', false);
this.saveButton.text('Save DLL');
this.saveButton.text('Save Patched File');
this.errorDiv.html(this.errorLog);
}
}
DllPatcher.prototype.loadFile = function(file) {
loadFile(file) {
var reader = new FileReader();
var self = this;
@@ -421,35 +447,33 @@ DllPatcher.prototype.loadFile = function(file) {
};
reader.readAsArrayBuffer(file);
};
}
DllPatcher.prototype.saveDll = function() {
saveDll() {
if(!this.dllFile || !this.mods || !this.filename)
return;
var fname = this.filename;
for(var i = 0; i < this.mods.length; i++) {
this.mods[i].applyPatch(this.dllFile);
}
fname += '.dll';
var blob = new Blob([this.dllFile], {type: "application/octet-stream"});
saveAs(blob, fname);
}
saveAs(blob, this.filename);
}
DllPatcher.prototype.loadPatchUI = function() {
loadPatchUI() {
for(var i = 0; i < this.mods.length; i++) {
this.mods[i].createUI(this.patchDiv);
}
}
}
DllPatcher.prototype.updatePatchUI = function() {
updatePatchUI() {
for(var i = 0; i < this.mods.length; i++) {
this.mods[i].updateUI(this.dllFile);
}
}
}
DllPatcher.prototype.validatePatches = function() {
validatePatches() {
this.errorLog = "";
var success = true;
this.validPatches = 0;
@@ -464,31 +488,10 @@ DllPatcher.prototype.validatePatches = function() {
}
}
return success;
}
var bytesMatch = function(buffer, offset, bytes) {
for(var i = 0; i < bytes.length; i++) {
if(buffer[offset+i] != bytes[i])
return false;
}
return true;
};
var replace = function(buffer, offset, bytes) {
for(var i = 0; i < bytes.length; i++) {
buffer[offset+i] = bytes[i];
}
}
var whichBytesMatch = function(buffer, offset, bytesArray) {
for(var i = 0; i < bytesArray.length; i++) {
if(bytesMatch(buffer, offset, bytesArray[i]))
return i;
}
return -1;
}
window.DllPatcher = DllPatcher;
window.DllPatcherContainer = DllPatcherContainer;
window.Patcher = Patcher;
window.PatchContainer = PatchContainer;
})(window, document);
+7 -8
View File
@@ -10,8 +10,8 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function() {
new DllPatcherContainer([
new DllPatcher("jubeat", [
new PatchContainer([
new Patcher("jubeat.dll", "2018-08-14", [
// Ported by Felix
{
name : "Disable Tutorial",
@@ -55,8 +55,8 @@
}
]
}
], "2018-08-14"),
new DllPatcher("jubeat", [
]),
new Patcher("jubeat.dll", "2018-07-09", [
{
name: "Disable Tutorial",
patches: [{offset: 0xCFFC7, off: [0x75, 0x4A, 0x57, 0x68, 0x00], on: [0xE9, 0x90, 0x00, 0x00, 0x00]}]
@@ -102,14 +102,13 @@
}
]
}
], "2018-07-09"),
new DllPatcher("music_db", [
]),
new Patcher("music_db.dll", "music_db.dll", [
{
name : "Unlock all songs",
patches : [{offset : 0x1B8F, off: [0x74, 0x09], on : [0x90, 0x90]}]
},
], true)
]),
]);
});
</script>
+5 -5
View File
@@ -10,8 +10,8 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function() {
new DllPatcherContainer([
new DllPatcher("jubeat", [
new PatchContainer([
new Patcher("jubeat.dll", "jubeat.dll", [
{
name : "Disable tutorial",
patches : [{offset : 0x81F79, off: [0x0F, 0x85, 0xC7], on : [0xE9, 0xC6, 0x01]}]
@@ -20,14 +20,14 @@
name : "SELECT MUSIC timer lock",
patches : [{offset : 0x16E64D, off : [0x75], on : [0xEB]}]
},
], true),
]),
new DllPatcher("music_db", [
new Patcher("music_db.dll", "music_db.dll", [
{
name : "Unlock all songs",
patches : [{offset : 0x266D, off: [0x02], on : [0x1f]}]
},
], true)
])
]);
});
</script>
+7 -7
View File
@@ -10,8 +10,8 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function() {
new DllPatcherContainer([
new DllPatcher("jubeat", [
new PatchContainer([
new Patcher("jubeat.dll", "2017-06-20", [
{
name : "Disable tutorial",
patches : [{offset : 0xAAC32, off: [0x75, 0x4A, 0x53, 0x68, 0x00], on : [0xE9, 0x90, 0x00, 0x00, 0x00]}]
@@ -20,9 +20,9 @@
name : "SELECT MUSIC timer lock",
patches : [{offset : 0x80576, off : [0x75], on : [0xEB]}]
},
], "2017-06-20"),
]),
new DllPatcher("jubeat", [
new Patcher("jubeat.dll", "2017-04-15", [
{
name : "Disable tutorial",
patches : [{offset : 0xAA462, off: [0x75, 0x4A, 0x53, 0x68, 0x00], on : [0xE9, 0x90, 0x00, 0x00, 0x00]}]
@@ -31,14 +31,14 @@
name : "SELECT MUSIC timer lock",
patches : [{offset : 0x802D0, off : [0x75], on : [0xEB]}]
},
], "2017-04-15"),
]),
new DllPatcher("music_db", [
new Patcher("music_db.dll", "music_db.dll", [
{
name : "Unlock all songs",
patches : [{offset : 0x17DF, off: [0x74, 0x09], on : [0x90, 0x90]}]
},
], true)
])
]);
});
</script>
+1 -3
View File
@@ -10,15 +10,13 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function () {
new DllPatcherContainer([
new DllPatcher("museca", [
new Patcher("museca.dll", "", [
{
//Discovered by Cammy - ported by Zelminar
name: "Song 1 Lock",
tooltip: "Song clears/scores only. Profile progress and custom settings do not save. Reboot game to re-query for scores.",
patches: [{offset: 0x27E0C7, off: [0xFF, 0x83, 0x8C, 0x09, 0x00, 0x00], on: [0x90, 0x90, 0x90, 0x90, 0x90, 0x90]}]
},
], true),
]);
});
</script>
+5 -5
View File
@@ -10,8 +10,8 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function () {
new DllPatcherContainer([
new DllPatcher("museca", [
new PatchContainer([
new Patcher("museca.dll", "2017-06-28 -- 2017-12-25", [
{
name: "Infinite Final Layer", //Created by Akubits & Cammy
patches: [
@@ -42,8 +42,8 @@
}
]
},
], "2017-06-28 -- 2017-12-25"),
new DllPatcher("museca", [
]),
new Patcher("museca.dll", "2018-07-30", [
{
name: "Infinite Final Layer", //Created by Akubits & Cammy
patches: [
@@ -74,7 +74,7 @@
}
]
},
], "2018-07-30"),
]),
]);
});
</script>
+5 -5
View File
@@ -10,8 +10,8 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function() {
new DllPatcherContainer([
new DllPatcher("bm2dx", [
new PatchContainer([
new Patcher('bm2dx.dll', "2014-09-17", [
{
//by nibs
name: "Shorter monitor check",
@@ -25,8 +25,8 @@
//changes the FPS = %2.4f string to FPS = %2.6f
patches: [{offset: 0x14E2AD, off: [0x34], on: [0x36]}]
},
], "2014-09-17"),
new DllPatcher("bm2dx", [
]),
new Patcher('bm2dx.dll', "2015-08-05", [
{
name: "Timer Freeze",
patches: [{offset: 0x9c55e, off: [0x74], on: [0xEB]}]
@@ -75,7 +75,7 @@
//changes the FPS = %2.4f string to FPS = %2.6f
patches: [{offset: 0x16E911, off: [0x34], on: [0x36]}]
},
], "2015-08-05"),
]),
]);
});
</script>
+1 -1
View File
@@ -10,7 +10,7 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function() {
new DllPatcher("popn22", [
new Patcher("popn22.dll", "", [
{
name : "Unlock all the things",
// Auto generated and thus filthy
+1 -1
View File
@@ -10,7 +10,7 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function() {
new DllPatcher("popn22", [
new Patcher("popn22.dll", "", [
{
name : "Song/EX unlock",
patches : [{offset : 0x59508, off: [0xF6, 0xD8, 0x1A, 0xC0, 0x24, 0x02], on : [0xB0, 0x02, 0x90, 0x90, 0x90, 0x90]},
+1 -1
View File
@@ -10,7 +10,7 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function() {
new DllPatcher("popn22", [
new Patcher("popn22.dll", "", [
{
name : "E: drive fix",
tooltip: "Fix crash caused by no E: drive",
+3 -3
View File
@@ -10,8 +10,8 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function () {
new DllPatcherContainer([
new DllPatcher("popn22", [
new PatchContainer([
new Patcher("popn22.dll", "2019-04-23", [
{
name: "E: Drive Fix",
tooltip: "Fix crash caused by no E: drive",
@@ -51,7 +51,7 @@
{ offset: 0x10977E, off: [0x84, 0xC0], on: [0xB0, 0x01] },
],
},
], "2019-04-23"),
]),
]);
});
</script>
+1 -1
View File
@@ -15,7 +15,7 @@
*/
window.addEventListener("load", function() {
new DllPatcher("reflecbeat", [
new Patcher("reflecbeat.dll", "", [
{
name : "E: drive fix",
tooltip: "Fix crash caused by no E: drive",
+11 -11
View File
@@ -10,8 +10,8 @@
<script type='text/javascript' src='js/dllpatcher.js'></script>
<script type='text/javascript'>
window.addEventListener('load', function () {
new DllPatcherContainer([
new DllPatcher('bm2dx', [
new PatchContainer([
new Patcher('bm2dx.dll', "2019-01-23", [
{
name: 'Unlock All Songs',
patches: [{offset: 0x1609C2, off: [0x74, 0x10], on: [0x90, 0x90]}]
@@ -34,8 +34,8 @@
tooltip : "Holding Start will pause the song at the beginning until you release it",
patches: [{offset: 0x33DF5A, off: [0x7D, 0x25], on: [0x90, 0x90]}]
},
], "2019-01-23"),
new DllPatcher('bm2dx', [
]),
new Patcher('bm2dx.dll', "2019-02-20", [
{
name: 'Unlock All Songs',
patches: [{offset: 0x161462, off: [0x74, 0x10], on: [0x90, 0x90]}]
@@ -44,8 +44,8 @@
name: 'Premium Free Timer Freeze',
patches: [{offset: 0x16366D, off: [0xFF, 0xC8], on: [0x90, 0x90]}]
},
], "2019-02-20"),
new DllPatcher('bm2dx', [
]),
new Patcher('bm2dx.dll', "2019-06-03", [
{
name: 'Unlock All Songs',
patches: [{offset: 0x16C412, off: [0x74, 0x10], on: [0x90, 0x90]}]
@@ -54,8 +54,8 @@
name: 'Premium Free Timer Freeze',
patches: [{offset: 0x16E6ED, off: [0xFF, 0xC8], on: [0x90, 0x90]}]
},
], "2019-06-03"),
new DllPatcher('bm2dx', [
]),
new Patcher('bm2dx.dll', "2019-09-02", [
{
name: 'SSE4.2 Fix',
tooltip : "This will allow the game to run on processors which do not support the SSE4.2 instruction set. If you can successfully boot the game, do NOT check this.",
@@ -170,8 +170,8 @@
tooltip: "Reduce time before CPUs fill empty slots in online lobbies from 1m5s to 30s. Only takes effect if you are the host.",
patches: [{offset: 0x37FE54, off: [0x3C, 0x0F], on: [0x08, 0x07]}]
},
], "2019-09-02"),
new DllPatcher('bm2dx', [
]),
new Patcher('bm2dx.dll', "2019-10-07", [
{
name: 'SSE4.2 Fix',
tooltip : "This will allow the game to run on processors which do not support the SSE4.2 instruction set. If you can successfully boot the game, do NOT check this.",
@@ -281,7 +281,7 @@
tooltip: "Runs for 120 frames (2 seconds) instead of 1200 (20 seconds), recommended only if you have a very stable framerate",
patches: [{offset: 0x366E6C, off: [0xB0, 0x04], on: [0x78, 0x00]}]
},
], "2019-10-07"),
]),
]);
});
</script>
+1 -1
View File
@@ -11,7 +11,7 @@
<script type="text/javascript">
window.addEventListener("load", function() {
// all patches made by DJH unless specified otherwise
new DllPatcher("soundvoltex", [
new Patcher("soundvoltex.dll", "", [
{
name : "All songs unlocked",
patches : [{offset : 0x13AF9B, off: [0xE8, 0xF0, 0xE2, 0x01], on : [0xB8, 0x0B, 0x00, 0x00]},
+15 -15
View File
@@ -10,8 +10,8 @@
<script type='text/javascript' src='js/dllpatcher.js'></script>
<script type='text/javascript'>
window.addEventListener('load', function () {
new DllPatcherContainer([
new DllPatcher('soundvoltex', [
new PatchContainer([
new Patcher('soundvoltex.dll', "2019-02-06", [
{
name: 'All songs/difficulties unlocked',
patches: [
@@ -143,8 +143,8 @@
tooltip: 'Automatically skips the screen between song select and gameplay',
patches: [{offset: 0x315600, off: [0x4D], on: [0x4E]}]
},
], "2019-02-06"),
new DllPatcher('soundvoltex', [
]),
new Patcher('soundvoltex.dll', "2018-10-23", [
{
name: 'All songs/difficulties unlocked',
patches: [
@@ -270,8 +270,8 @@
}
]
},
], "2018-10-23"),
new DllPatcher('soundvoltex', [
]),
new Patcher('soundvoltex.dll', "2018-08-21", [
{
name: 'All songs/difficulties unlocked',
patches: [
@@ -397,8 +397,8 @@
}
]
},
], "2018-08-21"),
new DllPatcher('soundvoltex', [
]),
new Patcher('soundvoltex.dll', "2018-06-05", [
{
name: 'All songs/difficulties unlocked',
patches: [
@@ -523,8 +523,8 @@
}
]
},
], "2018-06-05"),
new DllPatcher('soundvoltex', [
]),
new Patcher('soundvoltex.dll', "2018-01-16 with Enhanced Continue", [
{
// Credit to kacklappen23
name: 'All songs/difficulties unlocked',
@@ -638,8 +638,8 @@
}
]
},
], "2018-01-16 with Enhanced Continue"),
new DllPatcher('soundvoltex', [
]),
new Patcher('soundvoltex.dll', "2018-01-16", [
{
name: 'All songs/difficulties unlocked',
patches: [{offset: 0x1531F2, off: [0xE8, 0x09, 0x43, 0x02], on: [0xB8, 0x0D, 0x00, 0x00]},
@@ -732,10 +732,10 @@
}
]
},
], "2018-01-16"),
]),
// all patches ported to IV by Zelminar unless specified otherwise
// all original patches created by DJH unless specified otherwise
new DllPatcher('soundvoltex', [
new Patcher('soundvoltex.dll', "2017-11-28", [
{
name: 'All songs/difficulties unlocked',
patches: [
@@ -869,7 +869,7 @@
}
]
},
], "2017-11-28")
])
]);
});
</script>
+3 -3
View File
@@ -10,8 +10,8 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function() {
new DllPatcherContainer([
new DllPatcher("bm2dx", [
new PatchContainer([
new Patcher('bm2dx.dll', "2017-08-28", [
{
name : "Timer Freeze",
patches : [{offset : 0x9BAEE, off: [0x74], on : [0xEB]}]
@@ -114,7 +114,7 @@
//changes the FPS = %2.4f string to FPS = %2.6f
patches: [{offset: 0x15ADF9, off: [0x34], on: [0x36]}]
},
], "2017-08-28"),
]),
]);
});
</script>
+5 -5
View File
@@ -10,8 +10,8 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function () {
new DllPatcherContainer([
new DllPatcher("bm2dx", [
new PatchContainer([
new Patcher('bm2dx.dll', "2013-10-02", [
{
//by nibs
name: "Shorter monitor check",
@@ -25,8 +25,8 @@
//changes the FPS = %2.4f string to FPS = %2.6f
patches: [{offset: 0x160B05, off: [0x34], on: [0x36]}]
},
], "2013-10-02"),
new DllPatcher("bm2dx", [
]),
new Patcher('bm2dx.dll', "2014-07-16", [
{
name: "Timer Freeze",
patches: [{offset: 0x9150E, off: [0x74], on: [0xEB]}]
@@ -84,7 +84,7 @@
//changes the FPS = %2.4f string to FPS = %2.6f
patches: [{offset: 0x192175, off: [0x34], on: [0x36]}]
},
], "2014-07-16"),
]),
]);
});
</script>
+11 -11
View File
@@ -10,8 +10,8 @@
<script type="text/javascript" src="js/dllpatcher.js"></script>
<script type="text/javascript">
window.addEventListener("load", function () {
new DllPatcherContainer([
new DllPatcher("bm2dx", [
new PatchContainer([
new Patcher('bm2dx.dll', "2012-09-19", [
{
//by nibs
name: "Shorter monitor check",
@@ -25,26 +25,26 @@
//changes the FPS = %2.4f string to FPS = %2.6f
patches: [{offset: 0x143C45, off: [0x34], on: [0x36]}]
},
], "2012-09-19"),
new DllPatcher("bm2dx", [
]),
new Patcher('bm2dx.dll', "2012-10-09", [
{
name: "Premium Free",
patches: [{offset: 0x49CAC, off: [0x75], on: [0xEB]}]
},
], "2012-10-09"),
new DllPatcher("bm2dx", [
]),
new Patcher('bm2dx.dll', "2012-12-07", [
{
name: "Premium Free",
patches: [{offset: 0x4C47C, off: [0x75], on: [0xEB]}]
},
], "2012-12-07"),
new DllPatcher("bm2dx", [
]),
new Patcher('bm2dx.dll', "2013-03-05", [
{
name: "Premium Free",
patches: [{offset: 0x4E6CC, off: [0x75], on: [0xEB]}]
},
], "2013-03-05"),
new DllPatcher("bm2dx", [
]),
new Patcher('bm2dx.dll', "2013-09-09", [
{
name: "Premium Free",
patches: [{offset: 0x4F2DC, off: [0x75], on: [0xEB]}]
@@ -66,7 +66,7 @@
//changes the FPS = %2.4f string to FPS = %2.6f
patches: [{offset: 0x16BDD5, off: [0x34], on: [0x36]}]
},
], "2013-09-09"),
]),
]);
});
</script>