Punkline
Dr. Frankenstack
- Joined
- May 15, 2015
- Messages
- 423
I got non-destructive subaction event inserts to work last night and had some fun with your subaction event
Achilles1515
. I made Unown (pokemon, not the projectile) spawn before every hitbox, and it would pretty easily freeze the game; but sometimes not before the end of the world happened:
I think characters have a hitbox event when they take damage? sometimes? It causes a funny feedback loop that felt a bit like the gray goo scenario. Of course, this is REALLY easy to freeze the game with
Anyway, I think I've just figured out how to make event skips work smartly with this insert code, and have a prototype code you guys can use to play around with Achilles' code really easily @WinterWonter :
I've highlighted the insert event in red, so just use Achilles' specifications in his OP to play around with it. This is kind of a chopped up version of a bigger code I'm working on that will give this programmable logic and the ability to run programmable subroutines. At the moment it uses the input line (highlighted in yellow) to determine what event to search for, how big of an event to insert, and how big of an event to skip.
If you're feeling brave, you can use the specifications from my earlier post without the BB features to explore this a bit, but keep in mind I'm still debugging it and it's not capable of any filtering as it is. Things as simple as non-existent bone IDs in hitbox inserts will cause the game to crash. I'll be making a development thread for it soon, where I'll be adding features that make dealing with such problems very trivial.
You can make edits to this input line mid-game to experiment with different projectile IDs, behaviors when holding/launching, and velocities/offsets for Achilles' projectile subaction by following the branch that the c2 code here makes at 0x800732AC, copying the address you land at, and entering it into the memory panel. From there you can find "F4FF002F" in the hex and just alter it with the "set value" button. I actually prefer using cheat engine's Memory Viewer, because it resembles a hex editor and makes edits a lot faster @Ampers @Tater
Alternatively, you can do this to Crazy Hand edits by following the pointer at player.0x44C during a subaction that you've edited
---
Also, it'd be pretty sweet if we could figure out this projectile hitbox business. I have about ZERO experience with the .dat files, though Achilles was trying to give me a tasty hint in another thread about functions sometimes referencing an area in memory that apparently matches an offset from the PlCo.dat... Feel free to suggest any reading material if you think I could help. I've already got my eye on a few threads I've been meaning to read through.
I think characters have a hitbox event when they take damage? sometimes? It causes a funny feedback loop that felt a bit like the gray goo scenario. Of course, this is REALLY easy to freeze the game with
Anyway, I think I've just figured out how to make event skips work smartly with this insert code, and have a prototype code you guys can use to play around with Achilles' code really easily @WinterWonter :
$SAevent Scheduler v0.0.1 [Punkline]
C20732AC 0000004E
48000004 38000000
48000029 7F0802A6
3B18000C 480000D8
012C0045 F4FF002F
40004010 3F804000
3F804348 03000000
2C000000 40820024
7C000026 3821FFDC
D8010000 D8210008
D8410010 90010018
9061001C 90810020
3821FFF0 92A10000
92C10004 92E10008
9301000C 4E800020
2C000000 82A10000
82C10004 82E10008
8301000C 38210010
40820020 C8010000
C8210008 C8410010
80010018 8061001C
80810020 38210024
4E800020 80040000
3884FFFC 90010000
3821FFFC 3863FFFF
2C030000 4181FFE8
4E800020 80010000
38210004 90040000
38840004 3863FFFF
2C030000 4181FFE8
4E800020 7F17C378
3AA00000 88170000
2C000000 41820158
2C000003 41820158
C01D0000 C0228874
FC000840 88770001
40810014 5460039D
4082000C 3AA00002
48000040 546003DF
5463041A 98770001
4182000C 3AA00001
48000028 88170000
2C000002 4182FFD8
809D0008 88840000
5484063A 88770001
7C032000 4082FFC0
3AC00004 2C150002
7EC3B378 82D70000
7EE3BA14 418200CC
56C3E73F 4182009C
809D0008 3884FFFC
4BFFFF1D 38840004
7C350B78 7EE1BB78
56C3E73E 4BFFFF29
7EA1AB78 3821FFFC
56C3F6BA 7C832050
909D0008 88840000
5484F6BE 2C04000A
5484103E 4080001C
3C60803C 606367C0
7C632214 7C6803A6
7FA3EB78 4800001C
3804FFD8 7C7F0214
80630000 7C6803A6
7FA4EB78 387DFBBC
4E800021 38210008
56C3F6BA 809D0008
7C832050 5463F03E
4BFFFEB5 3821FFFC
56C316BB 41820024
809D0008 7C832214
909D0008 88840000
5484063A 56C3863A
7C032000 4182FEA8
56C3F6BA 7EE3BA14
4BFFFEA0 3AF70004
4BFFFE98 38000000
4BFFFE11 7C0FF120
801D0008 00000000
C20732AC 0000004E
48000004 38000000
48000029 7F0802A6
3B18000C 480000D8
012C0045 F4FF002F
40004010 3F804000
3F804348 03000000
2C000000 40820024
7C000026 3821FFDC
D8010000 D8210008
D8410010 90010018
9061001C 90810020
3821FFF0 92A10000
92C10004 92E10008
9301000C 4E800020
2C000000 82A10000
82C10004 82E10008
8301000C 38210010
40820020 C8010000
C8210008 C8410010
80010018 8061001C
80810020 38210024
4E800020 80040000
3884FFFC 90010000
3821FFFC 3863FFFF
2C030000 4181FFE8
4E800020 80010000
38210004 90040000
38840004 3863FFFF
2C030000 4181FFE8
4E800020 7F17C378
3AA00000 88170000
2C000000 41820158
2C000003 41820158
C01D0000 C0228874
FC000840 88770001
40810014 5460039D
4082000C 3AA00002
48000040 546003DF
5463041A 98770001
4182000C 3AA00001
48000028 88170000
2C000002 4182FFD8
809D0008 88840000
5484063A 88770001
7C032000 4082FFC0
3AC00004 2C150002
7EC3B378 82D70000
7EE3BA14 418200CC
56C3E73F 4182009C
809D0008 3884FFFC
4BFFFF1D 38840004
7C350B78 7EE1BB78
56C3E73E 4BFFFF29
7EA1AB78 3821FFFC
56C3F6BA 7C832050
909D0008 88840000
5484F6BE 2C04000A
5484103E 4080001C
3C60803C 606367C0
7C632214 7C6803A6
7FA3EB78 4800001C
3804FFD8 7C7F0214
80630000 7C6803A6
7FA4EB78 387DFBBC
4E800021 38210008
56C3F6BA 809D0008
7C832050 5463F03E
4BFFFEB5 3821FFFC
56C316BB 41820024
809D0008 7C832214
909D0008 88840000
5484063A 56C3863A
7C032000 4182FEA8
56C3F6BA 7EE3BA14
4BFFFEA0 3AF70004
4BFFFE98 38000000
4BFFFE11 7C0FF120
801D0008 00000000
I've highlighted the insert event in red, so just use Achilles' specifications in his OP to play around with it. This is kind of a chopped up version of a bigger code I'm working on that will give this programmable logic and the ability to run programmable subroutines. At the moment it uses the input line (highlighted in yellow) to determine what event to search for, how big of an event to insert, and how big of an event to skip.
If you're feeling brave, you can use the specifications from my earlier post without the BB features to explore this a bit, but keep in mind I'm still debugging it and it's not capable of any filtering as it is. Things as simple as non-existent bone IDs in hitbox inserts will cause the game to crash. I'll be making a development thread for it soon, where I'll be adding features that make dealing with such problems very trivial.
You can make edits to this input line mid-game to experiment with different projectile IDs, behaviors when holding/launching, and velocities/offsets for Achilles' projectile subaction by following the branch that the c2 code here makes at 0x800732AC, copying the address you land at, and entering it into the memory panel. From there you can find "F4FF002F" in the hex and just alter it with the "set value" button. I actually prefer using cheat engine's Memory Viewer, because it resembles a hex editor and makes edits a lot faster @Ampers @Tater
Alternatively, you can do this to Crazy Hand edits by following the pointer at player.0x44C during a subaction that you've edited
---
Also, it'd be pretty sweet if we could figure out this projectile hitbox business. I have about ZERO experience with the .dat files, though Achilles was trying to give me a tasty hint in another thread about functions sometimes referencing an area in memory that apparently matches an offset from the PlCo.dat... Feel free to suggest any reading material if you think I could help. I've already got my eye on a few threads I've been meaning to read through.
Last edited: