MeroMero |
Posted on 06-29-16, 01:14 pm
|
Death by cuteness
Karma: 6589 Posts: 439/598 Since: 05-01-13 |
There's also another problem that can be reproduced in the vanilla versions too:
_the Big Springboard, if thrown in a bottomless pit, seemingly doesn't de-spawn _this is confirmed thanks to the Collision Info Viewer |
skawo |
Posted on 06-29-16, 01:16 pm (rev. 1 by skawo on 06-29-16, 01:16 pm)
|
Karma: 19807 Posts: 401/1100 Since: 04-02-13 |
Is that a major problem? Does the game start to lag if you walk off too far or something?
|
MeroMero |
Posted on 06-29-16, 01:18 pm (rev. 2 by MeroMero on 06-29-16, 09:27 pm)
|
Death by cuteness
Karma: 6589 Posts: 440/598 Since: 05-01-13 |
No lag at all, just that if you need a Big Springboard and get rid of it, it won't respawn until you reload the Area.
More of a level design concern than a hardware one. EDIT: code updated with 2 new bug fixes. |
cros107 |
Posted on 06-30-16, 02:48 am (rev. 1 by cros107 on 06-30-16, 02:48 am)
|
Fuzzy
Will never finish a hack Karma: 1873 Posts: 102/778 Since: 03-25-16 |
I swear MeroMero, all you've been doing for the past 2 weeks is writing ASM :p
And in actual assembly as well! _________________________ hey look, I did a thing |
MeroMero |
Posted on 06-30-16, 03:58 pm
|
Death by cuteness
Karma: 6589 Posts: 441/598 Since: 05-01-13 |
Starman fix for ASM-Template:
nsub_020A08C0_ov_00:
LDRH R3, [R0, #0xC]
CMP R3, #0x1F @Check for Actor 31 (Item from Brick/Block)
ADDNE PC, PC, #0x38 @If the check fails go to the end of the function
LDR R1, [R0, #8]
MOV R3, R1, LSR #0x18
CMP R3, #0x30 @Check if Power-up is thrown sideways
ADDNE PC, PC, #0x28 @If the check fails go to the end of the function
MOV R1, R1, LSL #0x1B @Pseudo-modulo 32
MOV R1, R1, LSR #0x1B @"
CMP R1, #1 @Check if Power-up is Starman
ADDNE PC, PC, #0x18 @If the check fails go to the end of the function
LDR R3, =0x20D38C0
LDRB R1, [R0, #0x1C8]
CMP R1, #0 @Check if hitbox is set
ADDNE PC, PC, #4 @If yes then bypass address change
CMP R2, #0 @Check if Starman relative height is below 0
LDRLT R3, =0x20D3CBC @If yes then change address in R3
STR R3, [R0, #0x53C]
LDR R3, [R0, #0xD4]
LDR R1, [R0, #0xE4]
BX LR This little one will fix a bothersome glitch with the Starman. If you ground-pound a Block/Brick containing a Starman, it will get spawned from below the Container, right? But what happens if there's ground directly underneath the Container, such as there is no space between the ground and the Container? Then the Starman will get thrown sideways, but unlike other power-ups who do the same, you won't be able to collect the Starman! Guess what, this ASM hack fix exactly that, by making Mario able to collect even Starmen spawned that way. Posted by cros107 I swear MeroMero, all you've been doing for the past 2 weeks is writing ASM :p And in actual assembly as well! Almost, almost, but yeah pretty much. |
MeroMero |
Posted on 07-05-16, 05:05 pm (rev. 2 by MeroMero on 07-09-16, 12:46 pm)
|
Death by cuteness
Karma: 6589 Posts: 449/598 Since: 05-01-13 |
Go there to fetch the updated code! While the Blockhopper code is mostly unchanged, the code now takes into account the remaining Jyotyu tiles in the enemy folder. |
skawo |
Posted on 07-05-16, 07:21 pm
|
Karma: 19807 Posts: 412/1100 Since: 04-02-13 |
Going all out on these patches
|
MeroMero |
Posted on 07-05-16, 07:31 pm
|
Death by cuteness
Karma: 6589 Posts: 450/598 Since: 05-01-13 |
Posted by skawo Going all out on these patches All out? I haven't even begun to play Also you would be surprised to hear that NSMB is not even my strongest suit when it comes to ASM Hacking. |
skawo |
Posted on 07-05-16, 10:17 pm (rev. 1 by skawo on 07-05-16, 10:18 pm)
|
Karma: 19807 Posts: 413/1100 Since: 04-02-13 |
Well, here's another thing I thought of: fix the bouncing brick collisions, perhaps?
They glitch if you try to jump on it; especially so if you're mini. |
MeroMero |
Posted on 07-05-16, 10:35 pm
|
Death by cuteness
Karma: 6589 Posts: 452/598 Since: 05-01-13 |
Oh… that thing…
Yeah I already tried that once, but that was when I had no knowledge on where the collision and hitbox data were located. On a related note, have you ever tried to make Mario throw a fireball while getting launched by Bouncing Bricks? If you do so, Mario's momentum will stop sooner. Not even the Bouncing Mushrooms can replicate that. |
TruelyJohn64 |
Posted on 07-05-16, 11:57 pm
|
(Words)
Karma: 755 Posts: 56/265 Since: 01-03-16 |
Posted by Pedroalone Grounded fire piranha plants can't be killed with shells. How about trying to fix this one? You've pretty much covered the entire game at this rate. _________________________ "I strikingly thought you would know how but it clearly seems you have no knowledge of hacking" - MiiU 2017 |
MeroMero |
Posted on 07-07-16, 11:51 am (rev. 2 by MeroMero on 07-15-16, 10:04 am)
|
Death by cuteness
Karma: 6589 Posts: 456/598 Since: 05-01-13 |
Bouncing Bricks fix for ASM-template:
repl_021857E4_ov_63:
MOV R11, #0x180 @Expansion speed coefficient (originally 0x400)
BX LR Posted by TruelyJohn64 Posted by Pedroalone Grounded fire piranha plants can't be killed with shells. How about trying to fix this one? You've pretty much covered the entire game at this rate. Now that the Bouncing Bricks fix was cleared from the queue, I can have a go on this one. Some other things worth looking at: _Mini-Mushroom can go into 1/2 tile wide gaps (already know where to go, just need to put it in ASM format) _Spinies and Buzzybeetles CAN'T go into 1/2 tile wide gaps (not tampered with yet) |
skawo |
Posted on 07-07-16, 05:17 pm (rev. 1 by skawo on 07-07-16, 05:18 pm)
|
Karma: 19807 Posts: 418/1100 Since: 04-02-13 |
Good work. I'm wondering, if however, one more thing can be done; can the player only be launched upwards if he stays on the platform throughout the entire or most of the "bounce"?
|
MeroMero |
Posted on 07-09-16, 12:19 pm (rev. 4 by MeroMero on 07-14-16, 05:00 pm)
|
Death by cuteness
Karma: 6589 Posts: 458/598 Since: 05-01-13 |
Mini-Mushroom goes through 1/2 tile high and/or wide gaps:
repl_020D1628_ov_0A: @From Block
repl_020D3F0C_ov_0A: @From Item Inventory
AND R1, R5, #0x1F
CMP R1, #0x19
LDREQ R3, =BottomCollision
LDREQ R1, =SideCollision
STREQ R1, [SP]
MOV R1, R4
BX LR
.data
.balign 4
BottomCollision:
.word 0x0
.word 0x0
.word 0x8000
.word 0x0
.word 0x0
.word 0x18000
.balign 4
SideCollision:
.word 0x1
.word 0x1000
.word 0x7000
.word 0x4000 Buzzy Beetles and (Roof) Spinies can't pass through 1/2 tile high gaps: repl_0214F62C_ov_2A:
MOV R1, #1
STR R1, [R0]
MOV R1, #0x2000
STR R1, [R0, #4]
MOV R1, #0xA000
STR R1, [R0, #8]
LDR R1, [R0]
BX LR
repl_0214F358_ov_2A:
MOV R2, #0x6000
BX LR
repl_021775B8_ov_44:
LDR R0, =0x594 @Increase heap for Buzzy Beetle
BX LR
repl_02176574_ov_44:
MOV R5, LR
ADD LR, R4, #0x500
ADD LR, LR, #0x84 @Actor Address for Buzzy Beetle Side Collision
STR LR, [SP]
BX R5
repl_021765B8_ov_44:
MOV R12, #0x6000
STR R12, [R4, #0x590]
LDR R12, =0x2178F98
LDR R6, [R12]
STR R6, [R4, #0x584]
LDR R6, [R12, #4]
STR R6, [R4, #0x588]
LDR R12, [R12, #8]
STR R12, [R4, #0x58C]
BX LR
repl_02176594_ov_44:
MOV R6, #1
STR R6, [R12]
MOV R6, #0x3000
STR R6, [R12, #4]
MOV R6, #0xB000
STR R6, [R12, #8]
LDR R6, [R12]
BX LR
repl_02176B5C_ov_44:
LDR R1, [R4, #0x584]
BIC R1, R1, #0x2700000
STR R1, [R4, #0x584]
BX LR
repl_02176B9C_ov_44:
LDR R2, [R4, #0x584]
ORR R2, R2, #0x2700000
STR R2, [R4, #0x584]
BX LR
repl_02176D58_ov_44:
LDR R1, [R4, #0x584]
BIC R1, R1, #0x2700000
STR R1, [R4, #0x584]
ADD R3, R3, #0x14
BX LR
repl_02176E40_ov_44:
LDR R1, [R4, #0x584]
ORR R1, R1, #0x2400000
STR R1, [R4, #0x584]
ADD R3, R3, #0x14
BX LR
repl_02176E90_ov_44:
LDR R1, [R4, #0x584]
ORR R1, R1, #0x2700000
STR R1, [R4, #0x584]
ADD R3, R3, #0x14
ADD R2, R4, #0x500
ADD R2, R2, #0x64
BX LR
repl_020A919C_ov_00:
LDR R4, [R5, #4]
LDRH R4, [R4, #0xC]
CMP R4, #0x28
BEQ .SuccessSpinyCheck
CMP R4, #0x7B
BNE .BuzzyBeetleCheck
.SuccessSpinyCheck:
LDRB R4, [R2, #0x1B]
CMP R4, #0x10
MOVNE R4, #0x2000
MOVEQ R4, #0x5000
STR R4, [R2, #0x3BC]
ORR R4, R0, #0
BX LR
.BuzzyBeetleCheck:
CMP R4, #0x36
BNE .Return
LDRB R4, [R2, #0x1B]
CMP R4, #0x10
MOVNE R4, #0x3000
MOVEQ R4, #0x5000
STR R4, [R2, #0x338]
.Return:
ORR R4, R0, #0
BX LR Posted by skawo Good work. I'm wondering, if however, one more thing can be done; can the player only be launched upwards if he stays on the platform throughout the entire or most of the "bounce"? Let me see if I got that straight, you basically want to force the player to get on the platform before said platform begin its expansion phase for the player to actually get launched upwards? Not only that but the player will get launched only when the expansion reaches its maximal value? And if one of the conditions fails the player must wait a "turn", or in other words for the next expansion phase? Basically you want me to implement a check to see if Mario was standing on the platform before the expansion phase begins and also a check to see if Mario stayed on the platform for the whole duration of the expansion? If both checks succeeded, Mario gets launched, if one of the checks fails, make the platform act as a normal platform for the remaining of the "turn", correct? |
skawo |
Posted on 07-09-16, 02:39 pm (rev. 1 by skawo on 07-09-16, 02:39 pm)
|
Karma: 19807 Posts: 420/1100 Since: 04-02-13 |
Well, essentially, though perhaps some leniency on this:
Force the player to get on the platform before said platform begin its expansion phase for the player to actually get launched upwards? And instead do it so that if he's on through most of the expansion phase, launch him. i.e if Mario was standing on the platform at at least the halfway point of the expansion phase. |
KingYoshi |
Posted on 07-09-16, 08:19 pm
|
Fire Snake
Eugene Karma: 3810 Posts: 858/1156 Since: 11-29-11 |
A hack that makes it possible to set the Snake Blocks to act like they do in NSMB2 (not waiting for Mario to move and repeating the path) would be cool
|
MeroMero |
Posted on 07-15-16, 09:55 pm (rev. 4 by MeroMero on 08-02-16, 02:29 pm)
|
Death by cuteness
Karma: 6589 Posts: 469/598 Since: 05-01-13 |
Posted by KingYoshi A hack that makes it possible to set the Snake Blocks to act like they do in NSMB2 (not waiting for Mario to move and repeating the path) would be cool Posted by hamza62240
I was also wondering, could you do something like make snake blocks slippery? Obligatory upgraded download link on this post! (Ice) Snake Blocks upgrade for ASM-template: repl_0218C560_ov_6D:
LDR R0, =0x5FC @Increase heap for Snake Blocks
BX LR
repl_0218A510_ov_6D:
LDR R3, [R4, #8] @Load Actor Data into R3
ANDS R3, R3, #1 @Check Nybble 11 Bit 0
LDREQ R1, =0x218C600 @If not set then Snake Blocks move on their own
LDMIA R1, {R1, R2}
BX LR
repl_02189A84_ov_6D:
LDR R1, [R4, #8] @Load Actor Data into R1
ANDS R1, R1, #2 @Check Nybble 11 Bit 1
LDRNE R0, =IceSnakeBlocks @If set then load the Ice Snake Blocks graphics
ADD R1, R3, #0x8000
BX LR
repl_02189AF8_ov_6D:
LDR R1, [R6, #8] @Load Actor Data into R1
ANDS R1, R1, #2 @Check Nybble 11 Bit 1
LDRNE R0, =IceSnakeBlocks @If set then load the Ice Snake Blocks graphics
ADD R1, R3, #0x8000
BX LR
repl_02189FE8_ov_6D:
MOV R6, #0xD @Get pointer for Snake Block jyotyu map16
LDR R3, [R4, #8] @Load Actor Data into R3
ANDS R3, R3, #2 @Check Nybble 11 Bit 1
MOVNE R6, #0x85 @If set then get pointer for Ice Snake Block jyotyu map16
BX LR
repl_0218B488_ov_6D:
repl_0218B4DC_ov_6D:
LDR R1, [R4, #8] @Load Actor Data into R1
ANDS R1, R1, #2 @Check Nybble 11 Bit 1
MOVNE R3, #0x85 @If set then get pointer for Ice Snake Block jyotyu map16
MOV R1, R12, LSL #4
BX LR
repl_0218A3B8_ov_6D: @First step to allow looping
AND R2, R1, #7
CMP R2, #5
MOVEQ R2, #0
BX LR
repl_02189CD8_ov_6D: @Second step to allow looping
ADD R2, R2, R3
CMP R1, #1
ADDEQ R12, R2, #1
STREQ R12, [R5, #0x5F4] @Store Snake Block head position on node 1
LDREQB R12, [R5, #0x3F4]
SUBEQ R12, R2, R12
STREQ R12, [R5, #0x5F8] @Store Snake Block tail position on node 1
BX LR
repl_0218B5C8_ov_6D: @Main function for looping
LDR R0, [R5, #8]
MOV R0, R0, LSR #0x1C
AND R0, R0, #7
CMP R0, #5 @Allow looping only if Nybble 4 value is 5 or 13 (0xD)
BNE .Return
LDR R0, [R5, #0x4D0]
LDR R4, [R5, #0x4D4]
CMP R4, R0
LDRHI R4, [R5, #0x5F4]
STRHI R4, [R5, #0x4D4]
LDR R0, [R5, #0x578]
LDR R4, [R5, #0x57C]
CMP R4, R0
LDRHI R4, [R5, #0x5F8]
STRHI R4, [R5, #0x57C]
.Return:
MOV R0, #1
LDMFD SP!, {R4, PC}
nsub_0218A410_ov_6D:
AND R1, R1, #3
CMP R1, #0
MOVEQ R1, #0x1000 @Default speed is still value 0
CMP R1, #1
MOVEQ R1, #0x800 @Half speed is still value 1
CMP R1, #2
MOVEQ R1, #0x400 @NEW: Quarter speed is value 2
CMP R1, #3
MOVEQ R1, #0x2000 @NEW: Double speed is value 3
CMP R1, #0x400 @Error handler: Check if speed has been set
MOVCC R1, #0x1000 @If not set to default speed
B 0x218A418
.data
.balign 4
IceSnakeBlocks:
.word 0x41F820F8
.word 0xFFFF1102 How to use the new parameters? _Nybble 11 = 0 > Normal Snake Blocks + move on their own _Nybble 11 = 1 > Normal Snake Blocks + Mario must trigger them _Nybble 11 = 2 > Ice Snake Blocks + move on their own _Nybble 11 = 3 > Ice Snake Blocks + Mario must trigger them Modulo 4 Also the Ice Snake Blocks are slippery! 2 conditions to use the looping: _First set nybble 4 to 5 or D. _Second when creating the Path for the (Ice) Snake Blocks, the penultimate node must be at the same place than node 0, and the last node must be at the same place than node 1. Nybble 5 (speed) has been improved: _0 > Default speed _1 > Half speed _2 > Quarter speed _3 > Double speed modulo 4 Works on a NDS. |
Hiccup |
Posted on 07-15-16, 09:59 pm
|
Birdo
Karma: 2789 Posts: 1652/2091 Since: 06-26-11 |
Wow! Now I need to think of something useful, but not too outrageous...
|
skawo |
Posted on 07-15-16, 10:16 pm (rev. 1 by skawo on 07-15-16, 10:16 pm)
|
Karma: 19807 Posts: 442/1100 Since: 04-02-13 |
Added everything to first post
|
snake block |
Posted on 07-15-16, 10:51 pm (rev. 4 by snake block on 07-16-16, 02:43 pm)
|
a
Karma: 1589 Posts: 1176/1290 Since: 02-12-13 |
Oh my, thank you so much! I have more freedom with Snake Blocks now.
EDIT: Once the snake block comes to a stop, the edges convert into the map16 normal green snake block tile. Middle stays icy, though. |