Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
110720c
chore: Ignore vscode directory
1nf3rna Oct 8, 2025
74152bb
Merge branch 'autosplitter' of github.com:1nf3rna/OpenSplit into auto…
1nf3rna Oct 17, 2025
37527fd
- merged upstream; ported NWA and QUSB2SNES autosplitters
1nf3rna Oct 17, 2025
6472ef3
removed example files
1nf3rna Oct 20, 2025
09e3575
changed SNESSummary struct members to bools
1nf3rna Oct 20, 2025
7c09829
Service file for autosplitters
1nf3rna Oct 22, 2025
40e17e9
- removed unneeded types, structs, and interfaces
1nf3rna Oct 22, 2025
856496f
- imports updated
1nf3rna Oct 22, 2025
ff8dcfd
- autosplitter import added
1nf3rna Oct 22, 2025
2f7533a
updated the client name
1nf3rna Oct 22, 2025
11e40a4
added comments
1nf3rna Oct 22, 2025
6f058eb
added file format example
1nf3rna Oct 22, 2025
88ce8ba
Merge branch 'ZellyDev-Games:main' into autosplitter
1nf3rna Nov 24, 2025
8e5d349
removed autosplitter test code
1nf3rna Nov 24, 2025
d154002
added todo list
1nf3rna Nov 24, 2025
20f78c9
commented out sendData function
1nf3rna Nov 24, 2025
b10556d
removed file format example
1nf3rna Nov 24, 2025
debe48d
made Client public
1nf3rna Nov 24, 2025
1f41633
removed mutex stuff
1nf3rna Nov 24, 2025
9659b45
added example NWA autosplitter files
1nf3rna Nov 24, 2025
c02b261
removed debug line
1nf3rna Nov 28, 2025
461026e
Merge branch 'ZellyDev-Games:main' into autosplitter
1nf3rna Dec 4, 2025
a4ac80d
Added comment and object variable
1nf3rna Dec 26, 2025
7beac74
added processex for generic process memory inspection
1nf3rna Dec 26, 2025
39181fb
added ResetGameOnTimerReset variable, set sleep timers to 1ms, enable…
1nf3rna Dec 26, 2025
d15fac8
removed unused code, added func pointer, renamed memory struct, rewro…
1nf3rna Dec 26, 2025
a282943
example autosplitter files in new format
1nf3rna Dec 26, 2025
a769fc1
removed unneeded space entry and imports, fixed space entry in USB2Sn…
1nf3rna Dec 26, 2025
7253acf
implements, fixed, and rewrote entire class to enable QUSB splitting …
1nf3rna Dec 26, 2025
23b5a62
new function added
1nf3rna Dec 26, 2025
d1169bb
added qusb2snes service config example
1nf3rna Dec 28, 2025
67e092c
added server and port config to qusb
1nf3rna Dec 28, 2025
555eaa0
added bitwise operators
1nf3rna Dec 28, 2025
bd21600
swapped and fixed NWA test data
1nf3rna Dec 28, 2025
bea9341
fixed start and reset state variable location; removed unneeded strin…
1nf3rna Dec 28, 2025
607b66b
example NWA files
1nf3rna Dec 28, 2025
7b4735a
removed unneeded string trims
1nf3rna Dec 28, 2025
f6a14f4
fmt
1nf3rna Dec 28, 2025
9cc4cbb
Lint and ignoring unused return values
1nf3rna Dec 28, 2025
e395211
removed comment
1nf3rna Dec 28, 2025
e4ebb76
fixed folder name
1nf3rna Dec 28, 2025
e897dde
fixed reseting in levels
1nf3rna Dec 30, 2025
26d5137
Merge branch 'ZellyDev-Games:main' into autosplitter
1nf3rna Jan 1, 2026
2bbc3cb
added support for checking set and unset bits; removed u
1nf3rna Jan 1, 2026
64c1030
fixed Home Improvement 2-5 addresses
1nf3rna Jan 2, 2026
3dc89cc
removed used code
1nf3rna Jan 2, 2026
b0f30ac
Merge remote-tracking branch 'origin/main' into autosplitter
1nf3rna Jan 3, 2026
e90a025
wails version fix
1nf3rna Jan 4, 2026
2845472
corrected console reset function
1nf3rna Jan 4, 2026
3f8f0a6
fixed crashing
1nf3rna Jan 4, 2026
5ea32be
added return if client response is 0 length
1nf3rna Jan 5, 2026
1f4ccf1
500 Hz should be plenty for any game
1nf3rna Jan 6, 2026
7cf139f
corrected check for incomplete data
1nf3rna Jan 7, 2026
ec089a2
removed unneeded structs
1nf3rna Jan 10, 2026
7043252
switched to NWA
1nf3rna Jan 11, 2026
e6f7fc5
fixed 2nd and 3rd boss tracking
1nf3rna Jan 11, 2026
59e7212
BT queen split added
1nf3rna Jan 11, 2026
b819e86
Merge remote-tracking branch 'origin/main' into autosplitter
1nf3rna Jan 17, 2026
192a9d0
Merge remote-tracking branch 'origin/main' into autosplitter
1nf3rna Jan 17, 2026
0b30917
Merge remote-tracking branch 'origin/main' into autosplitter
1nf3rna Jan 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ frontend/package-lock*
frontend/package.json.md5
cover.out
.DS_Store
.vscode/*
coverage.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
ResetTimerOnGameReset = true
ResetGameOnTimerReset = false
IP = 0.0.0.0
Port = 48879

#memory (Do not combine memory or it will treated as 1 giant value)
level,RAM,$0010,1

#start
start:level,prior=0x0 && level,current=0x1

#reset (some games might have multiple reset conditions) (expectedValue is optional) (values MUST always be last)
reset:level,current=0x0 && level,prior≠0x0

#split (some games might have multiple split conditions) (expectedValue is optional) (values MUST always be last)
#= ≠ < > & ~
level2:level,prior=0xFF && level,current=0x2
level3:level,prior=0xFF && level,current=0x3
level4:level,prior=0xFF && level,current=0x4
level5:level,prior=0xFF && level,current=0x5
level6:level,prior=0xFF && level,current=0x6
level7:level,prior=0xFF && level,current=0x7
level8:level,prior=0xFF && level,current=0x8
level9:level,prior=0xFF && level,current=0x9
level10:level,prior=0xFF && level,current=0xA
level11:level,prior=0xFF && level,current=0xB
level12:level,prior=0xFF && level,current=0xC
level13:level,prior=0xFF && level,current=0xD
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
ResetTimerOnGameReset = true
ResetGameOnTimerReset = false
IP = 0.0.0.0
Port = 48879

#memory (Do not combine memory or it will treated as 1 giant value)
level,RAM,$0010,1

#start
start:level,prior=0x0 && level,current=0x1

#reset (some games might have multiple reset conditions) (expectedValue is optional) (values MUST always be last)
reset:level,current=0x0 && level,prior≠0x0

#split (some games might have multiple split conditions) (expectedValue is optional) (values MUST always be last)
#= ≠ < > & ~
level2:level,prior=0xFF && level,current=0x2
level3:level,prior=0xFF && level,current=0x3
level4:level,prior=0xFF && level,current=0x4
level5:level,prior=0xFF && level,current=0x5
level6:level,prior=0xFF && level,current=0x6
level7:level,prior=0xFF && level,current=0x7
level8:level,prior=0xFF && level,current=0x8
level9:level,prior=0xFF && level,current=0x9
level10:level,prior=0xFF && level,current=0xA
level11:level,prior=0xFF && level,current=0xB
level12:level,prior=0xFF && level,current=0xC
level13:level,prior=0xFF && level,current=0xD
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
ResetTimerOnGameReset = true
ResetGameOnTimerReset = false
IP = 0.0.0.0
Port = 48879

#memory (Do not combine memory or it will treated as 1 giant value)
level,RAM,$0010,1
qdead,RAM,$0005,1

#start
start:level,prior=0x0 && level,current=0x1

#reset (some games might have multiple reset conditions) (expectedValue is optional) (values MUST always be last)
reset:level,current=0x0 && level,prior≠0x0

#split (some games might have multiple split conditions) (expectedValue is optional) (values MUST always be last)
#= ≠ < > & ~
#level2:level,prior=0xFF && level,current=0x2
level3:level,prior=0xFF && level,current=0x3
level4:level,prior=0xFF && level,current=0x4
#level5:level,prior=0xFF && level,current=0x5
level6:level,prior=0xFF && level,current=0x6
#level7:level,prior=0xFF && level,current=0x7
level8:level,prior=0xFF && level,current=0x8
level9:level,prior=0xFF && level,current=0x9
level10:level,prior=0xFF && level,current=0xA
level11:level,prior=0xFF && level,current=0xB
level12:level,prior=0xFF && level,current=0xC
level13:level,prior=0xFF && level,current=0xD
queen:level,current=0xD && qdead,prior=0x0 && qdead,current=0x5
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
ResetTimerOnGameReset = true
ResetGameOnTimerReset = false
IP = 0.0.0.0
Port = 48879

#memory (Do not combine memory or it will treated as 1 giant value)
level,RAM,$0010,1

#start
start:level,prior=0x0 && level,current=0x1

#reset (some games might have multiple reset conditions) (expectedValue is optional) (values MUST always be last)
reset:level,current=0x0 && level,prior≠0x0

#split (some games might have multiple split conditions) (expectedValue is optional) (values MUST always be last)
#= ≠ < > & ~
#level2:level,prior=0xFF && level,current=0x2
level3:level,prior=0xFF && level,current=0x3
level4:level,prior=0xFF && level,current=0x4
#level5:level,prior=0xFF && level,current=0x5
level6:level,prior=0xFF && level,current=0x6
#level7:level,prior=0xFF && level,current=0x7
level8:level,prior=0xFF && level,current=0x8
level9:level,prior=0xFF && level,current=0x9
level10:level,prior=0xFF && level,current=0xA
level11:level,prior=0xFF && level,current=0xB
level12:level,prior=0xFF && level,current=0xC
level13:level,prior=0xFF && level,current=0xD
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
ResetTimerOnGameReset = true
ResetGameOnTimerReset = false
IP = 0.0.0.0
Port = 48879

#memory (Do not combine memory or it will treated as 1 combined value)
stage,WRAM,$000AE1,1 #0-3
substage,WRAM,$000AE3,1 #0-4
crates,WRAM,$001A8A,1 #5,6,7,8
invul,WRAM,$001C05,1 #02
play_state,WRAM,$0003B1,1 #00 - dead/complete, 01 - alive/playable
scene2,WRAM,$000886,1 #03 - tool scene, 04 - win screen
scene,WRAM,$00161F,1
gameplay,WRAM,$00AE5,1 #11 - menus/loading, 13 - gameplay
state,WRAM,$001400,1 #d8 - bonus countdown active, d0 - between act cutscene
BossHP,WRAM,$001491,1 #63
W2P1HP,WRAM,$001493,1 #14
W2P2HP,WRAM,$001499,1 #
FBossHP,WRAM,$00149D,1 #Starts at 64, Dies at 1, switches to FF after explosion
power_up,WRAM,$0003AF,1
weapon,WRAM,$0003CD,1

#start (some games might have multiple start conditions) (expectedValue is optional)
start:state,prior=0xC0 && state,current=0x0 && stage,current=0x0 && substage,current=0x0 && gameplay,current=0x11 && play_state,current=0x0
start:state,prior=0xD0 && state,current=0x0 && stage,current=0x0 && substage,current=0x0 && gameplay,current=0x11 && play_state,current=0x0

#reset (some games might have multiple reset conditions) (expectedValue is optional)
cutscene_reset:state,current=0x0 && state,prior=0xD0 && gameplay,prior=0x11 && gameplay,current=0x0
tool_reset:gameplay,prior=0x11 && gameplay,current=0x0 && scene,prior=0x4 && scene,current=0x0 && scene2,prior=0x3 && scene2,current=0x0
level_reset:gameplay,prior=0x13 && gameplay,current=0x0 && crates,current=0x0 && substage,current=0x0 && stage,current=0x0 && scene2,current=0x0

#split (some games might have multiple split conditions) (expectedValue is optional)
#= ≠ < > & ~
1-1:state,prior=0xC8 && state,current=0x0 && stage,current=0x0 && substage,current=0x1 && gameplay,current=0x13
1-2:state,prior=0xC8 && state,current=0x0 && stage,current=0x0 && substage,current=0x2 && gameplay,current=0x13
1-3:state,prior=0xC8 && state,current=0x0 && stage,current=0x0 && substage,current=0x3 && gameplay,current=0x13
1-4:state,prior=0xC8 && state,current=0x0 && stage,current=0x0 && substage,current=0x4 && gameplay,current=0x13
1-5:state,prior=0xC8 && state,current=0x0 && stage,current=0x0 && substage,current=0x4 && gameplay,current=0x13 && BossHP,current=0x0
2-1:state,prior=0xC8 && state,current=0x0 && stage,current=0x1 && substage,current=0x1 && gameplay,current=0x13
2-2:state,prior=0xC8 && state,current=0x0 && stage,current=0x1 && substage,current=0x2 && gameplay,current=0x13
2-3:state,prior=0xC8 && state,current=0x0 && stage,current=0x1 && substage,current=0x3 && gameplay,current=0x13
2-4:state,prior=0xC8 && state,current=0x0 && stage,current=0x1 && substage,current=0x4 && gameplay,current=0x13
2-5:state,prior=0xC8 && state,current=0x0 && stage,current=0x1 && substage,current=0x4 && gameplay,current=0x13 && W2P1HP,current=0x0
3-1:state,prior=0xC8 && state,current=0x0 && stage,current=0x2 && substage,current=0x1 && gameplay,current=0x13
3-2:state,prior=0xC8 && state,current=0x0 && stage,current=0x2 && substage,current=0x2 && gameplay,current=0x13
3-3:state,prior=0xC8 && state,current=0x0 && stage,current=0x2 && substage,current=0x3 && gameplay,current=0x13
3-4:state,prior=0xC8 && state,current=0x0 && stage,current=0x2 && substage,current=0x4 && gameplay,current=0x13
3-5:state,prior=0xC8 && state,current=0x0 && stage,current=0x2 && substage,current=0x4 && gameplay,current=0x13 && crates,current=0x7
4-1:state,prior=0xC8 && state,current=0x0 && stage,current=0x3 && substage,current=0x1 && gameplay,current=0x13
4-2:state,prior=0xC8 && state,current=0x0 && stage,current=0x3 && substage,current=0x2 && gameplay,current=0x13
4-3:state,prior=0xC8 && state,current=0x0 && stage,current=0x3 && substage,current=0x3 && gameplay,current=0x13
4-4:state,prior=0xC8 && state,current=0x0 && stage,current=0x3 && substage,current=0x4 && gameplay,current=0x13
4-5:state,prior=0xC8 && state,current=0x0 && stage,current=0x3 && substage,current=0x4 && gameplay,current=0x13 && FBossHP,current=0xFF
Loading