Pages: « 12345678 »
Death by cuteness

Karma: 6564
Posts: 402/598
Since: 05-01-13
 ray,  Freeze I noticed an oversight in the documentation:
_in the Data-Node section you said:
"0E02 DOES NOT BELONG TO THE POINTER WHEN CALCULATING IT."
but actually it does belong, and rightfully so.

If for example I wanted to put the path-data in your example at offset 0×19C0 in the arm9, I would need to replace 08 5C 0E 02 with C0 19 00 02.

To calculate the pointer you need the RAM offset of the overlay (or arm9) you're using.
For arm9, the RAM offset is 0×2000000.
In the case of overlay 8, the RAM offset is 0×20CC2E0 (US version, for EU it is 0×20DE360).

Now look at this: 08 5C 0E 02, if you read it in reverse instead, you'll read it as 02 0E 5C 08.
This looks like an offset.
Since the path-data is located in overlay 8, subtract the RAM offset of overlay 8 to 20E5C08.
0×20E5C08 - 0×20CC2E0 = 0×19928
In an hex editor, if you look at offset 0×19928 in overlay 8, you'll indeed see the path-data corresponding to the pointer.

Now let's say I want to move the path-data located there to offset 0×19C0 in the arm9 (either to copy it as-is or to add more paths).
To calculate what will be the new pointer, add the RAM offset of arm9 to 19C0.
0×19C0 + 0×2000000 = 0×20019C0
First things first, the result must be 8 hex numbers long, thus you must add as many non significant zeros as needed, 20019C0 must be written as 020019C0.
Second, the result must be written in little-endian, thus 02 00 19 C0 (big-endian) must be written as C0 19 00 02 (little-endian).
Now you can replace the old pointer (085C0E02) with the new one (C0190002).



This will also clear a misunderstanding, technically all nodes are capable of holding a Path-Data size of 20 bytes (4 paths + End data) without having to sacrifice an already existing path-data.
The only problem would be to repoint the Path-Data to a place in the RAM that goes unused.
Such a place fortunately exists in NSMB, if you decompress the arm9, you can stuff a lot of things between offset 0×19C0 and offset 0×2FFF inclusive.
If this place was theoretically to be filled exclusively with path-data, you would be able to define the path-data for up to 284 nodes, which would average 35 nodes per world, which is more than enough!
Posted on 06-18-16, 04:53 pm in Misc. patches thread
Death by cuteness

Karma: 6564
Posts: 412/598
Since: 05-01-13
Not content with my latest code, I decided to upgrade the mod so that you no longer have to use Sprite 231 (Water):


Wavy backgrounds:
repl_020B181C_ov_00: MOV R10, #0 @Assigns a value of 0 to R10 BX LR @Returns repl_0215E9E8_ov_36: STMFD SP!,{R1-R3,R12,LR} @Pushs R1, R2, R3, R12 and R14 in the stack STR R0, [R4] @Stores the Level Actor BL 0x20B163C @Calls the function that allows the backgrounds to move in a wavy fashion LDMFD SP!,{R1-R3,R12,PC} @Pops R1, R2, R3, R12 and R15 from the stack


For those who are not familiar with the ASM-Template:
_In Notepad++, create a new file
_Copy/paste the code above
_Save the file with an extension .s (for example wavebg.s)
_The file must be located in the Source folder of the ASM-template
_In NSMBe, click 'Run make and insert'

You can also read this thread that explain what is the ASM-template and how to use it:
http://nsmbhd.net/thread/1281-how-asm-hacks-are-setup-tutorial/


If someone wants the code without having to use the ASM-Template, I can post it too.
Posted on 06-21-16, 11:08 pm in No freezing during power-up/-down animation hack (rev. 10 by  MeroMero on 07-31-16, 12:42 pm)
Death by cuteness

Karma: 6564
Posts: 415/598
Since: 05-01-13
repl_0209DC30_ov_00: BX LR @Prevent almost all Actors from freezing upon level completion repl_0218EAB8_ov_76: BX LR @Prevent Actor 210 (Carry-through-wall platform) from pausing the remaining actors repl_0218E6F8_ov_76: LDR R1, =0x20CA880 MOV R2, #0 STRB R2, [R1, #0x18] @Prevent the timer from pausing when Actor 210 is acting ADD R1, R4, #0x500 BX LR repl_0211FDDC_ov_0A: MOV R1, #1 STRB R1, [R0] @Prevent particles from being frozen on power-change (on load) MOV R1, #0x28 BX LR repl_021207F4_ov_0A: MOV R1, #1 STRB R1, [R0] @Prevent particles from being frozen on death ADD SP, SP, #4 BX LR repl_0211F904_ov_0A: STMFD SP!, {LR} BL .CheckLevelClear LDMEQFD SP!, {PC} @If the level is cleared this patch will prevent a glitch when Mega LDR R4, =0x203A784 LDR R4, [R4] LDR R4, [R4, #0x2F8] ADD R4, R4, #0x760 LDR R1, [R4, #0x4C] CMP R1, #0 @Check if a power change is happening ADDEQ PC, PC, #0x1C @If not return LDR R1, [R4, #8] CMP R1, #0x2000 @Check if Mario is above his Super height (Mega) MOVGT R1, #0x2000 STRGT R1, [R4, #8] @If he is make him 'Super Mario' height instantly MOVGT R1, #0 STRGT R1, [R4, #0x4C] @Prevent flagpole-stalling when Mega-Mario powers down (this one may be not needed) ADDGT R4, R4, #0x400 STRGTB R1, [R4, #0x57] @Prevent flagpole-stalling when Mega-Mario powers down (this one is a must) LDMFD SP!, {PC} repl_0211F974_ov_0A: STMFD SP!, {LR} LDR R0, =0x203CF80 MOV R4, #1 STRB R4, [R0] @Prevent particles from being paused on power-change (afterwards) BL .CheckLevelClear LDMEQFD SP!, {PC} LDR R4, =0x203A784 LDR R4, [R4] LDR R4, [R4, #0x2F8] ADD R4, R4, #0x760 MOV R1, #0 STR R1, [R4, #0x4C] @Drop power-change 2nd phase remaining frames to 0 ADD R4, R4, #0x400 STRB R1, [R4, #0x57] @Drop power-change 1st phase remaining frames to 0 LDMFD SP!, {PC} repl_0211F92C_ov_0A: repl_021207B8_ov_0A: MOV R0, #0 BX LR repl_0212C13C_ov_0B: MOV R1, #0 BX LR .CheckLevelClear: STMFD SP!, {LR} LDR R0, [R0] LDR R4, =0x20CA2C0 LDR R4, [R4] CMP R4, #0 @Check if level is not cleared (flag is 0x100 when the level is completed) MOVEQ R0, #0 @If true then apply the no-freeze patch LDMFD SP!, {PC}

Posted on 06-24-16, 08:12 pm in Misc. patches thread (rev. 2 by  MeroMero on 06-27-16, 10:49 am)
Death by cuteness

Karma: 6564
Posts: 426/598
Since: 05-01-13
Pipe fix for ASM-Template:
nsub_021175B0_ov_0A: MOV R12, LR @Center Mario upon entering a vertical pipe MOV R2, R12 CMP R3, R12 BLT 0x21175C0 B 0x21175E4 repl_0211D0A4_ov_0A: STMFD SP!, {R0,LR} ADD R1, PC, #0x30 ADD LR, PC, #0 BX R1 LDR R1, [R5, #0x64] ADD R1, R1, R0 @Begin level from pipe at Start or Midway STR R1, [R5, #0x64] LDMFD SP!, {R0,PC} repl_021189F8_ov_0A: STMFD SP!, {LR} ADD R1, PC, #0x10 ADD LR, PC, #0 BX R1 LDR R1, [SP, #0x10] ADD R1, R1, R0 @Load new area from pipe entrance LDMFD SP!, {PC} @relative function: STMFD SP!, {LR} LDR R0, =0x20CA8FE LDRB R1, [R0] @Load current entrance (not always equal to Entrance ID) from placeholder entrance MOV R0, #0x14 MUL R1, R0, R1 LDR R0, =0x208B144 LDR R0, [R0, #0x38] ADD R0, R0, R1 LDRB R1, [R0, #0xE] MOV R0, #0 CMP R1, #5 @Check if entrance is from left pipe ADDEQ PC, PC, #0x20 CMP R1, #6 @Check if entrance is from right pipe ADDEQ PC, PC, #0x18 CMP R1, #0x12 @Check if entrance is from left mini-pipe ADDEQ PC, PC, #0x10 CMP R1, #0x13 @Check if entrance is from right mini-pipe ADDEQ PC, PC, #8 CMP R1, #0x18 @Check if entrance is from left connected mini-pipe ADDEQ PC, PC, #0 CMP R1, #0x19 @Check if entrance is from right connected mini-pipe MOVEQ R0, #0x2000 @If one of the 6 conditions is true, elevate Mario by 1/8th of a tile LDMFD SP!, {PC} repl_0215E8E0_ov_36: LDRB R1, [R0, #8] LDR R2, =0x2085A30 LDRB R2, [R2] CMP R2, #0xFF @Check if midway is set LDRNEB R1, [R0, #9] @If yes then later overwrite Start entrance with Midway entrance BX LR repl_0201E998: LDR R12, =0x208B090 LDRB R9, [R4, #0xF] TST R9, #8 @Check if Connected Pipe flag is set LDRNEB R9, [R4, #0xA] @If true then load Connected Pipe ID for this entrance MOVEQ R9, #0 @Else force Connected Pipe ID checker to 0 STR R9, [R12] @Write Connected Pipe ID for easier Pipe ID checking (Mostly to write a Pipe ID of 0) LDR R12, =0x20CA8FE STRB R3, [R12] @Set placeholder entrance for easier entrance checking upon entry LDRH R9, [R4] BX LR repl_0201E668: LDR R3, =0x20CA8FE STRB R2, [R3] @Set placeholder entrance for easier entrance checking upon exit MOV R2, #0 BX LR repl_02117308_ov_0A: STMFD SP!, {R0,LR} LDRH R0, [R7, #0xE] AND R0, R0, #1 CMP R0, #1 @Check if the connected pipe exit is facing right or left MOVEQ R0, #0x2000 @If true elevate Mario by 1/8th of a tile ADDEQ R3, R3, R0 STR R3, [R6, #0x64] CMP R4, #1 LDMFD SP!, {R0,PC} nsub_0211761C_ov_0A: ADD R2, R0, #0x700 LDRB R3, [R2, #0xB2] CMP R3, #2 @Check if Mario goes inside a Pipe Cannon or World-Cannon ADDEQ PC, PC, #0x64 @If true return ADD R2, R2, #0x400 LDRB R2, [R2, #0xAD] CMP R2, #1 @Check if Mario is not (completely) inside a pipe ADDEQ PC, PC, #0xC @If true jump to main calculation LDR R2, =0x208B090 LDRB R2, [R2] CMP R2, #0 @Check if Connected Pipe ID is set ADDNE PC, PC, #0x44 @If true return LDR R2, =0x20CA8FE LDRB R3, [R2] @Load current entrance from placeholder entrance MOV R2, #0x14 MUL R3, R2, R3 LDR R2, =0x208B144 LDR R2, [R2, #0x38] ADD R2, R2, R3 LDRB R3, [R2, #0xE] LDRH R2, [R2, #2] @Get entrance vertical coordinate CMP R3, #0x10 @Check if Mario is gunning for a Mini-Pipe MOVGE R3, #0x10 @If true then add 16 to get bottom position MOVLT R3, #0x20 @Else add 32 ADD R2, R2, R3 @Calculate Mario bottom vertical position MOV R2, R2, LSL #0xC @Change the vertical value to the right format RSB R2, R2, #0 @" STR R2, [R0, #0x64] @Store Mario vertical position MOV R3, #0x2000 STRH R3, [R0, #0x64] @Elevate further Mario by 1/8th of a tile LDR R3, [R0, #0x930] B 0x2117620

Posted on 06-26-16, 05:45 pm in Misc. patches thread (rev. 3 by  MeroMero on 06-26-16, 08:24 pm)
Death by cuteness

Karma: 6564
Posts: 431/598
Since: 05-01-13
Swooper fix for ASM-Template:
repl_0213C380_ov_1B: LDR R0, [R4, #8] LDR R12, [R4, #0x60] TST R0, #0x100 @Check if Shifting flag is set SUBEQ R12, R12, #0x8000 @If yes then shift Swooper 1/2 tile to the right STR R12, [R4, #0x60] STR R12, [R4, #0x70] BX LR repl_0213C39C_ov_1B: MOV R1, #0x10000 @Dynamically change hitbox data for Big Swooper STR R1, [R2, #8] STR R1, [R2, #0xC] MOV R1, #0 STR R1, [R2, #4] MOV R1, R4 BX LR repl_0213C1DC_ov_1B: LDR R3, [SP, #0xC] TST R4, #1 @Check if Big flag is set ADDEQ PC, PC, #0x64 @If not R4=0 then return LDRH R4, [R5, #0xC4] CMP R4, #0x100 @Check if Swooper began its 2nd phase ADDNE PC, PC, #0x58 @If not R4=0 then return LDR R4, [R5, #0xD4] ADD R4, R4, #0x1000 CMP R4, #0x1000 @Check if current Swooper frame is one of the 16 allowed frames ADDCS PC, PC, #0x48 @If greater than or equal (unsigned) then R4=0 and return LDR R4, [R5, #0xD0] CMP R4, #0 @Check if Swooper goes right or left LDR R4, [R5, #0x134] @Load Hitbox Horizontal Shifting value SUBLT R4, R4, #0x800 @If it goes left subtract 2048 ADDGT R4, R4, #0x800 @If it goes right add 2048 ADDGE PC, PC, #0x10 RSB R4, R4, #0 CMP R4, #0x8000 @Check if H.H.S. is less than -32768 MOVGE R4, #0x8000 @If true cap at -32768 RSB R4, R4, #0 ADD PC, PC, #4 CMP R4, #0x8000 @Check if H.H.S. is more than 32768 MOVGE R4, #0x8000 @If true cap at 32768 STR R4, [R5, #0x134] @Store H.H.S. LDR R4, [R5, #0x138] @Load Hitbox Vertical Shifting value ADD R4, R4, #0x1000 @Add 4096 CMP R4, #0x10000 @Check if H.V.S. is more than 65536 MOVGE R4, #0x10000 @If true cap at 65536 STR R4, [R5, #0x138] @Store H.V.S. MOV R4, #0 BX LR @Return


Actor data:
Nybble 9 (NEW): Shift 1/2 tile to the right if value is odd.
Nybble 11: Double Swooper length, height and width if value is 1.

1. Giant Springboard Pickup CLEAR

2. Regular switch w/Bowser Battle

3. Pipe-enter-off-moving-sprite CLEAR

4. Snow effect restart in the same area CLEAR

5. Balloon Boo "Normal Boo" mode hitbox

6. Giant Swooper's Disappearing Hitbox CLEAR

7. Shell Mario Roll on D-Pad Down only CLEAR

8. Mini Mario behaves correctly under low gravity CLEAR
Posted on 07-01-16, 05:22 pm in asm Title logo with 256 colors (rev. 4 by  MeroMero on 07-01-16, 07:54 pm)
Death by cuteness

Karma: 6564
Posts: 443/598
Since: 05-01-13
Posted by skawo
This is rather neat. Too bad it removes the copyright, though :l


Code updated.
Now you have enough tiles to cover the whole screen!
Posted on 07-07-16, 11:51 am in Misc. patches thread (rev. 2 by  MeroMero on 07-15-16, 10:04 am)
Death by cuteness

Karma: 6564
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)
Posted on 07-09-16, 12:37 pm in asm NSMBWii Jyotyu for "enemy" folder (rev. 5 by  MeroMero on 07-28-16, 09:47 pm)
Death by cuteness

Karma: 6564
Posts: 459/598
Since: 05-01-13
Remember this: http://nsmbhd.net/post/49223/ ?
Plot twist: this was only the first part of the update!



Now here is the second and final part of the update, which required ASM, hence why I didn't include it all in one go!

Also the Blockhopper camouflage ASM Hack was merged with this one.

The code also handles the Bouncing Bricks.

Due to some files needing to be modified, just download the patch in this post, which includes this thread ASM-Hack!


Enemy folder Jyotyu tiles:
repl_0215B658_ov_36: @Used Block repl_0215D0FC_ov_36: repl_02185E04_ov_62: repl_02186F0C_ov_62: MOV R2, #0 LDR R1, =0x208B170 LDR R1, [R1] CMP R1, #0 BXEQ LR LDRB R1, [R1, #2] CMP R1, #0x4B MOVHI R1, #0 LDR R3, =0x20C93B8 LDRB R3, [R3, R1] MOV R3, R3, LSL #5 LDR R1, =0x2129368 LDRH R1, [R1] ADD R1, R1, R3 ADD R3, R0, #0x160 STRH R1, [R3] BX LR repl_0215B620_ov_36: @Flying Block repl_0215B6C8_ov_36: repl_02185DD4_ov_62: @Hanging Bouncing Block repl_0218641C_ov_62: repl_02186EDC_ov_62: @Hanging Block repl_02187794_ov_62: STMFD SP!, {R1-R2, LR} LDR R0, =0x1052 @File ID 4309 BL .Hatena LDMFD SP!, {R1-R2, PC} repl_0215B5E0_ov_36: @Flying Block repl_0215B6A4_ov_36: repl_0215D04C_ov_36: @Red Flying Block repl_0215D150_ov_36: STMFD SP!, {R1-R2, LR} LDR R0, =0x1056 @File ID 4313 BL .Hatena LDMFD SP!, {R1-R2, PC} repl_021856F0_ov_63: @Bouncing Bricks repl_02185C74_ov_63: STMFD SP!, {R1-R2, LR} LDR R0, =0x105A BL .Hatena LDMFD SP!, {R1-R2, PC} .Hatena: STMFD SP!, {LR} LDR R1, =0x208B170 LDR R1, [R1] CMP R1, #0 LDMEQFD SP!, {PC} LDRB R1, [R1, #2] CMP R1, #0x4B MOVHI R1, #0 LDR R2, =0x20C93B8 LDRB R2, [R2, R1] ADD R0, R0, R2 LDMFD SP!, {PC} repl_020BAA54_ov_00: @Blockhopper STMFD SP!, {R1-R4} LDR R2, =0x50E BL .Camouflage LDR R2, =0x511 BL .Camouflage LDMFD SP!, {R1-R4, PC} .Camouflage: STMFD SP!, {LR} LDR R1, =0x2087620 MOV R3, #0 .LoopCamouflage1: LDRH R4, [R1] CMP R4, R2 BEQ .SuccessLoopCamouflage1 SUB R1, R1, #0x18 ADD R3, R3, #1 CMP R3, #0x100 BCC .LoopCamouflage1 LDMFD SP!, {PC} .SuccessLoopCamouflage1: LDR R4, [R1, #0xC] ADD R4, R4, #0x8A MOV R1, R0, LSL #1 MOV R3, #0 .LoopCamouflage2: AND R2, R3, #1 ADD R2, R2, R1 ADD R2, R2, #0x31 STRB R2, [R4], #0x10 ADD R3, R3, #1 CMP R3, #4 BCC .LoopCamouflage2 LDMFD SP!, {PC}

Posted on 07-15-16, 09:55 pm in Misc. patches thread (rev. 4 by  MeroMero on 08-02-16, 02:29 pm)
Death by cuteness

Karma: 6564
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

Were also modified A_block_ncg.bin as well as the jyotyu tileset.

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.
Posted on 07-22-16, 07:28 pm in Level Previews (rev. 2 by  MeroMero on 07-22-16, 07:32 pm)
Death by cuteness

Karma: 6564
Posts: 481/598
Since: 05-01-13
Awesome sauce, this is where you realize that Nintendo could have made an even better game if they bothered to put an additional effort, though I won't deny that for its time it was enjoyable.
Posted on 08-01-16, 02:55 pm in Misc. patches thread (rev. 1 by  MeroMero on 08-01-16, 02:59 pm)
Death by cuteness

Karma: 6564
Posts: 509/598
Since: 05-01-13
I hope you don't mind me improving the Red Ring code,  skawo.

This incarnation doesn't need to add nor replace a file.
It instead reads directly the value in nybble 11, multiplied by 4 and then the result is added to offset 0x7C from obj_e3_ring.nsbtp to get the right palette.

Improved Red Ring colors (updated from Skawo's code):
repl_02153110_ov_36: LDRH R0, [R4, #0xC] CMP R0, #0x97 BNE .Return LDR R0, [R4, #8] AND R0, R0, #3 ADD R0, R0, #1 LDR R1, =RedRingStack STRB R0, [R1] .Return: ADD R0, R4, #0x3F4 BX LR repl_02153124_ov_36: MOV R0, #0 LDR R1, =RedRingStack STRB R0, [R1] LDR R1, =0x20391F8 BX LR repl_0205A6E0: LDR R4, =RedRingStack LDRB R5, [R4] CMP R5, #0 BEQ .Return2 SUB R2, R5, #1 MOV R5, #0 STRB R5, [R4] .Return2: ADD R0, R3, R2, LSL #2 BX LR .data .balign 1 RedRingStack: .byte 0x0


How to use?
Nybble 11:
_0: blue, white & purple
_1: red
_2: green
_3: red & green
modulo 4
Posted on 08-22-16, 03:47 pm in New Actor discoveries (and extra info on old ones) (rev. 1 by  MeroMero on 08-22-16, 03:49 pm)
Death by cuteness

Karma: 6564
Posts: 550/598
Since: 05-01-13
Thanks to the nsmb ida database, I compiled the list of all Actors with their corresponding overlays, and thus by proxy their corresponding SpriteSet(s).

For the curious ones, this table is located at offset 0x3997C in the arm9.

This was done to get the remaining actors ID that could be useful.











Actor ID Friendly Name Overlay Actor Set Overlay 2 Actor Set 2
0 Boot Scene 1 Boot    
1   arm9      
2   2      
3   0 Miscellaneous    
4   9 Titlescreen    
5   52 MvsL menu    
6   52 MvsL menu    
7   8 Worldmap    
8   8 Worldmap    
9   8 Worldmap    
10   52 MvsL menu    
11   5      
12 Stage Intro Scene 8 Worldmap    
13   54 Level2    
14   4      
15 MvsL Stage Intro Scene 52 MvsL menu    
16   6      
17   7      
18   10 Level    
19   10 Level    
20   54 Level2    
21 Player 10 Level    
22   10 Level    
23 Pipe Piranha Plant (up) 32 2-1    
24 Pipe Piranha Plant (down) 32 2-1    
25 Pipe Piranha Plant (right) 32 2-1    
26 Pipe Piranha Plant (left) 32 2-1    
27 Bullet Bill 42 5-1    
28 Cheep Cheep 25 1-4    
29 Giant Cheep Cheep 67 4-2    
30 Coin Trail Cheep Cheep 25 1-4    
31 Item handler 10 Level    
32 Toad House Jumping 1-Up 10 Level    
33 MvsL Battle Star 20 16-9    
34 MvsL Battle Star 20 16-9    
35 Bob-Omb 42 5-1    
36 Goal Pole Flag 12 16-1    
37 Thwomp 24 1-3    
38 Giant Thwomp 24 1-3    
39 Lakitu 66 4-1    
40 Spiny 42 5-1    
41 Boo 71 4-6    
42 Balloon Boo 71 4-6    
43 Monty Tank 19 16-8    
44 Chain Chomp Log 57 3-2    
45 Chain Chomp 57 3-2    
46 Fire Snake (dup.) 23 1-2    
47 Flip Fence 100 8-5    
48 Flip Large Fence 100 8-5    
49 Zoom 10 Level    
50 Pipe Bubbles (up) 87 7-2    
51 Pipe Bubbles (down) 87 7-2    
52 Pipe Bubbles (right) 87 7-2    
53 Pipe Bubbles (left) 87 7-2    
54 Buzzy Beetle 68 4-3    
55 Dry Bones 24 1-3    
56 Giant Dry Bones 24 1-3    
57 Podoboo 48 5-7    
58 27 spawner 42 5-1    
59 39 spawner 66 4-1    
60 28 spawner 25 1-4    
61 74 spawner 78 6-3    
62 Mega Pound actor spawner 54 Level2    
63 117 spawner 80 6-5    
64 Enemy-in-pipe spawner 22 1-1    
65 Firebar 24 1-3    
66 Coin in Bubble 10 Level    
67 Star Coin 54 Level2    
68 Hammer Brother 56 3-1    
69 Hammer Brother from map 54 Level2    
70 Sledge Brother 56 3-1    
71 Falling Donut Lift 54 Level2    
72 Falling Log Platform 54 Level2    
73 Whomp 34 2-3    
74 Sushi 78 6-3    
75 Unagi 79 6-4    
76 Giant Unagi 79 6-4    
77 Arrow Panel 12 16-1    
78 Bowser Fireball 13 16-2    
79 Dorrie 47 5-6    
80 Red Coin 54 Level2    
81 Skeeter 35 2-4    
82 Expandable Block 111 9-6    
83 Goomba 10 Level    
84 Paragoomba 10 Level    
85 Mini Goomba 10 Level    
86 Event Block 54 Level2    
87 Warp 54 Level2    
88 Fire Brother 56 3-1    
89 Boomerang Brother 56 3-1    
90 Swooper 27 1-6    
91 Snailicorn 36 2-5    
92 Falling Coin 54 Level2    
93 Boss Key 40 2-9    
94 Koopa Troopa 10 Level    
95 Koopa Paratroopa 10 Level    
96 Koopa Troopa on Fence 36 2-5    
97 Thunder 17 16-6    
98 Pokey 23 1-2    
99 Piranha Plant 81 6-6    
100 Giant Piranha Plant 81 6-6    
101 Fire Piranha Plant 81 6-6    
102 Giant Fire Piranha Plant 81 6-6    
103 Spiked Ball 121 10-6    
104 Spiked Ball Activator 121 10-6    
105 Slow Purple Tilting Mushroom 90 7-5    
106 Fire Snake 23 1-2    
107 108 spawner 70 4-5    
108 Flame Chomp 70 4-5    
109 Flame 70 4-5    
110 Amp 68 4-3    
111 Wiggler 33 2-2    
112 Cheep Chomp 46 5-5    
113 Bowser Jr. 28 1-7    
114 Boss Activator 40 2-9    
115 Princess Peach 40 2-9    
116 Final Boss 43 5-2    
117 Scuttlebug 80 6-5    
118 Money Bag 80 6-5    
119 Petey Piranha 15 16-4    
120 Broozer 108 9-3    
121 Volcanic Debris 54 Level2    
122 Skeeter Bomb 35 2-4    
123 Roof Spiny 42 5-1    
124 Underwater Bounce Ball 110 9-5    
125 Arrow 117 10-2    
126 Squiggler 77 6-2    
127 Splunkin 71 4-6    
128 MummiPokey 16 16-5    
129 Lakithunder 17 16-6    
130 Ball 'N' Chain 101 8-6    
131 Bowser 13 16-2    
132 Dry Bowser 13 16-2    
133 Big Bowser 13 16-2    
134 Toadsworth 123 10-8    
135 Cheepskipper 18 16-7    
136 Jumping Cheep Cheep 50 5-9    
137 Flag controller - "And" (If X AND Y, do Z) 54 Level2    
138 Flag controller - "Or" (If X OR Y, do Z) 54 Level2    
139 Flag controller - "Random" (If X, do Y OR Z) 54 Level2    
140 Flag controller - "Chainer" (If X, do Y) 54 Level2    
141 Flag controller - "If" (uses zones) 54 Level2    
142 Flag controller - Multi-chainer (If X, do Y THROUGH Z) 54 Level2    
143 Blooper 25 1-4    
144 Blooper Nanny (Actor 144) 25 1-4    
145 Blooper Nanny + Baby Bloopers 25 1-4    
146 Baby Blooper 25 1-4    
147 Spike Top 68 4-3    
148 Crowber 38 2-7    
149 Kab-omb 26 1-5    
150 Spike Bass 58 3-3    
151 Red Coin Ring 54 Level2    
152 Phantom Hand 71 4-6    
153 Invisible Podoboo 71 4-6    
154 148 spawner 38 2-7    
155 Snow Spike 82 6-7    
156 Snow Spike Snowball 82 6-7    
157 150 spawner 58 3-3    
158 Vertical Midway point 54 Level2    
159 Horizontal Midway point 54 Level2    
160 Exists but unknown ? 54 Level2    
161 Vertically Moving Platform 10 Level    
162 Horizontally Moving Platform 10 Level    
163 Horizontally Moving Platform (Unused? Actor 163) 10 Level    
164 Spinning Log (Unused) 100 8-5    
165 Vertical moving stone block 10 Level    
166 Horizontal Moving Block 10 Level    
167 Horizontally Moving Block (Unused? Actor 167) 10 Level    
168 Moving Block Platform 20 16-9    
169 Hanging Metal Platform 48 5-7    
170 Wobble Rock 48 5-7    
171 See-saw Platform 89 7-4    
172 Scale Platform 106 9-1    
173 Fall-when-touched platform 89 7-4    
174 One-way moving platform 88 7-3    
175 Rotating Wheel Platform (stays in place) 86 7-1    
176 Static Platform 10 Level    
177 178 spawner 20 16-9    
178 Platform 20 16-9    
179 Rotating Rectangle Platform 100 8-5    
180 Rotating Triangle Platform 100 8-5    
181 Rotating Square Platform 100 8-5    
182 Line-controlled Moving Platform 12 16-1    
183 Four-platform Waterwheel 96 8-1    
184 Line-controlled(able) Swinging Pole 97 8-2    
185 Big Spiked Ball 121 10-6    
186 Giant four platform spinner (stays in place) 88 7-3    
187 Ground-Pound Panel 98 8-3    
188 Bump Platform 97 8-2    
189 Mushroom Platform 90 7-5    
190 Purple Tilt Mushroom 90 7-5    
191 Rising/Lowering Mushroom Platform 90 7-5    
192 Rising/Lowering Metal Platform 49 5-8    
193 Streching Mushroom 90 7-5    
194 Bouncy Mushroom 90 7-5    
195 Moving Mushroom 90 7-5    
196 Rope 107 9-2    
197 Swinging Vine 107 9-2 96 8-1
198 Manual Control Platform 88 7-3    
199 Groundpound-able Goo 118 10-3    
200 Sinking Snow 116 10-1    
201 Soft Cloud Platform 60 3-5    
202 Pipe Cannon 10 Level    
203 Swelling Pipe Pump 59 3-4    
204 Swelling Pipe and Pump 59 3-4    
205 Swelling Pipe Cork 59 3-4    
206 Tile Creator/Destroyer 54 Level2    
207 Ghost House Goo 91 7-6    
208 Small Barrel 96 8-1    
209 Line-Controlled Wall-Jump Platform 88 7-3    
210 Rotating carry-through-wall platform 118 10-3    
211 Smashed pipe sprite 10 Level    
212 Snowy Branch 116 10-1    
213 One-Way Door 117 10-2    
214 Snake Blocks 109 9-4    
215 Ghost House Elevator 118 10-3    
216 Spike Pillar - Down 120 10-5    
217 Spike Pillar - Up 120 10-5    
218 Spike Pillar - Left 120 10-5    
219 Spike Pillar - Right 120 10-5    
220 Fast Spike Pillar - Down 120 10-5    
221 Fast Spike Pillar - Up 120 10-5    
222 Fast Spike Pillar - Left 120 10-5    
223 Fast Spike Pillar - Right 120 10-5    
224 Giant Wiggler 119 10-4    
225 Tornado / Tweester 86 7-1    
226 Whirlpool 87 7-2    
227 Giant pink floating log 87 7-2    
228 Pendulum Platform 88 7-3    
229 ? 99 8-4    
230 Drawbridge 88 7-3    
231 Swelling ground 97 8-2    
232 Tightrope 98 8-3    
233 Unused Wobbly Bricks 99 8-4    
234 Flamethrower (Small) 101 8-6    
235 Flamethrower 101 8-6    
236 End-of-Level Castle Flag 12 16-1    
237 Springboard 54 Level2    
238 Banzai Bill 42 5-1    
239 Mega Goomba 14 16-3    
240 Self-activating brick/block 10 Level    
241 Block shards 10 Level    
242 Event Controller - "?" Switch (Orange) 54 Level2    
243 Brick with Event Controller (? Switch) 54 Level2    
244 Event Controller - "P" Switch (Blue) 54 Level2    
245 Brick with P-Switch 54 Level2    
246 Event Controller - "!" Switch (Red) 54 Level2    
247 Brick block with red ! switch 54 Level2    
248 Bullet Bill launcher 42 5-1    
249 Banzai Bill launcher 42 5-1    
250 Hanging bouncing ? block 98 8-3    
251 Rotating spiked ? block (unused duplicate) 54 Level2    
252 Rotating spiked ? block 54 Level2    
253 Rotating spiked ? block (unused duplicate) 54 Level2    
254 Spin Block 10 Level    
255 Spin Block 10 Level    
256 Spin Block 10 Level    
257 Roulette Block 54 Level2    
258 Hanging ? Block 98 8-3    
259 Blockhopper 69 4-4    
260 Winged Block 54 Level2    
261 Red Winged Block 54 Level2    
262 Rotating Bullet Bill cannon 42 5-1    
263 Flag Triggered Door 118 10-3    
264 Toad House Block 123 10-8    
265 Bowser battle switch 13 16-2    
266 Boss battle key location 40 2-9    
267 Some kind of pipe 10 Level    
268 Invisible Coin Block 10 Level    
269 Warp Cannon 89 7-4    
270 In air scroll up the camera 10 Level    
271 Scroll up the camera 10 Level    
272 0 Stick to bottom length activator left 10 Level    
273 0 Stick to bottom length activator right 10 Level    
274 In air vertical scroll stop left 10 Level    
275 In air vertical scroll stop right 10 Level    
276 Auto-scrolling Controller 10 Level    
277 Scroll and Mario stop sideways 10 Level    
278 Water 54 Level2    
279 Lava 54 Level2    
280 Jungle FG Effect (Unused) 54 Level2    
281 Poison Water 54 Level2    
282 Horizontal camera offset 10 Level    
283 Touching ground vertical scroll stop left 10 Level    
284 Touching ground vertical scroll stop right 10 Level    
285 Final Castle Create Loop 54 Level2    
286 Final Castle Wrong Path 54 Level2    
287 Fog FG effect 10 Level    
288 Cloud FG effect 10 Level    
289 Water FG effect 1 10 Level    
290 Water FG effect 2 10 Level    
291 Snow FG effect 1 10 Level    
292 Snow FG effect 2 10 Level    
293 Snow FG effect 3 10 Level    
294 Fire FG effect 1 10 Level    
295 Fire FG effect 2 10 Level    
296 Fire FG effect 3 10 Level    
297 Light FG Effect 1 10 Level    
298 Light FG Effect 2 10 Level    
299 Grassland Clouds FG effect 10 Level    
300 Small Grassland Clouds FG effect 10 Level    
301 Seaweed 25 1-4    
302 ? Unknown Actor 302 54 Level2    
303 ? Behind-the-scenes Actor 303 0 Miscellaneous    
304 ? MvsL Actor 304 52 MvsL menu    
305 ? Menu Actor 305 9 Titlescreen    
306 ? Menu Actor 306 9 Titlescreen    
307 ? Menu Actor 307 9 Titlescreen    
308 ? Menu Actor 308 9 Titlescreen    
309 ? Menu Actor 309 9 Titlescreen    
310 ? Menu Actor 310 9 Titlescreen    
311 ? Menu Actor 311 9 Titlescreen    
312 ? Menu Actor 312 9 Titlescreen    
313 ? Menu Actor 313 9 Titlescreen    
314 ? Behind-the-scenes Actor 314 8 Worldmap    
315 ? Unknown Actor 315 4      
316 ? Unknown Actor 316 10 Level    
317 ? Unknown Actor 317 8 Worldmap    
318 ? Unknown Actor 318 8 Worldmap    
319 ? Unknown Actor 319 8 Worldmap    
320 ? Unknown Actor 320 8 Worldmap    
321 ? Unknown Actor 321 8 Worldmap    
322 ? Unknown Actor 322 8 Worldmap    
323 ? Unknown Actor 323 9 Titlescreen    
324 ? 'StageIntroScene' Actor 324 8 Worldmap    
325 Nothing 10 Level    


Posted on 08-30-16, 03:37 pm in Misc. patches thread
Death by cuteness

Karma: 6564
Posts: 568/598
Since: 05-01-13
Choose which Actors to spare on Level completion:
repl_0209DF5C_ov_00: STMFD SP!, {R0-R1, R5, LR} STRB R3, [R4, #0x3E7] MOV R0, R7, LSR #3 MOV R1, R0, LSL #3 SUB R1, R7, R1 MOV R5, #1 .Division: CMP R1, #0 BEQ .ResultDivision MOV R5, R5, LSL #1 SUB R1, R1, #1 B .Division .ResultDivision: LDR R1, =ActorSpare LDRB R1, [R1, R0] TST R1, R5 BEQ .Return MOV R2, #1 .Return: LDMFD SP!, {R0-R1, R5, PC} .data .balign 1 ActorSpare: .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00100000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000 .byte 0b00000000


This ASM hack is read before the special cases, so Actors that weren't destroyed to begin with won't get destroyed regardless of their bit value.
Apart from that, you can choose which Actor you want to spare.

If you copy the ASM Hack on Notepad++, you'll see that the first .byte will be located on line 26.
To know which bit matches which Actor, you'll have to use a simple Euclidean division:
Actor Number / 8, which will net you the quotient and the remainder.
To get the line where will be located the bit you want to change, simply add 26 to the quotient.
Now if you look at the data, you'll see that they are in binary format, thus you only have to take into account the part after 0b.
To get the bit you want to set (bit=1), you have to count (beginning from 0) from right to left until you find the bit number that matches the remainder (which should be a number between 0 and 7 inclusive).

For example let's say Actor 77 (Signboards) mustn't be destroyed upon level completion.
Calculation:
77 / 8 = 9 with a remainder of 5.
Then 26 + 9 = 35, so go to line 35.
Since the remainder is 5, change bit 5 of line 35 to 1.
so 0b00000000 becomes 0b00100000 on line 35.

Notice that Actor 77 is already set to 1 in this ASM Hack, this is because it will be needed for the next ASM Hack of mine, which is already done, thus I only need to post the thread.
Posted on 09-04-16, 02:19 pm in New NSMB Editor Builds!
Death by cuteness

Karma: 6564
Posts: 576/598
Since: 05-01-13
Uploading those 3 files as a fail-safe, just in case:

SpriteData.cs
SpriteEditor.cs
spritedata.xml

I made the level editor read the Actor's graphics AND data associated to each of the 326 sprites, the 3 files above are what I modified to achieve that.

Now the only thing I have to do is make the Level Editor read the Actor Data as bits.
Posted on 09-05-16, 06:26 pm in New NSMB Editor Builds!
Death by cuteness

Karma: 6564
Posts: 579/598
Since: 05-01-13
Posted by MarioKart7z
I mean, the NSMBe mod that MeroMero included with the signboard ASM hack

No, it doesn't… but I was savvy enough to keep the needed lines of code (albeit commented out) just in case.

Posted by Hiccup
actor sets

Uh oh… you know, turns out the thing might really well be Sprite Sets afterall…
remember this:
Posted by MeroMero
at offset 0x2C9EA replace 0F 01 into 00 00.

Well the 0F 01 is actually the Sprite Set settings for Sprite 93, the first byte is a number between 0 and F inclusive (for a total of 16 Sets) and the second number is the sub-set.
If the sub-set is 0, then the code will consider the Sprite Set check as a success regardless of the Sprite Set settings.
The basic idea is that I needed to set Sprite 93 sub-set to 0, and this is because otherwise Actor 77 just wouldn't load after I ported it to arm9 unless the corresponding overlay was also loaded.

tl;dr the Sprite Set needs to match both the Sprite and its associated Actor, else the Actor will fail to load.






Also, forgot to say that the pull request on github was obviously updated.
Posted on 09-14-16, 02:07 pm in Misc. patches thread (rev. 2 by  MeroMero on 09-14-16, 06:53 pm)
Death by cuteness

Karma: 6564
Posts: 582/598
Since: 05-01-13
Water, Lava and Poison Water fix for ASM-Template:
Shift up Y-position on start:
Horizontal scrolling added for Junglekusa:

repl_021657A4_ov_36: CMP R7, #0x118 LDREQ R12, [R5, #0x60] STREQ R12, [R5, #0x444] LDR R12, [R2] BX LR repl_02165888_ov_36: CMP R7, #0x118 MOVNE R0, R0, LSL #8 BXNE LR ANDS R1, R0, #0x8000 EORNE R0, R0, #0x8000 RSBNE R0, R0, #0 BX LR nsub_0216479C_ov_36: STMFD SP!, {R1} LDRH R1, [R0, #0xC] CMP R1, #0x118 BEQ .Return ANDS R4, R4, #0x2000 MOVEQ R1, #0 STREQ R1, [R0, #0x444] .Return: ANDS R4, R4, #0x2000 LDMFD SP!, {R1} B 0x21647A0 nsub_02164810_ov_36: STRLT R2, [R0, #0x60] LDRH R4, [R0, #0xC] CMP R4, #0x118 STREQ R5, [R0, #0x60] B 0x2164814 nsub_02164934_ov_36: LDRH R1, [R5, #0xC] CMP R1, #0x118 BEQ 0x2164940 CMP R0, #0 B 0x2164938 nsub_0216494C_ov_36: LDRH R4, [R5, #0xC] CMP R4, #0x118 LDREQ R2, [R5, #0x458] SUBNE R1, R1, R3 ADD R1, R2, R1 STREQ R1, [R5, #0x45C] STRNE R1, [R0, #0xC74] B 0x2164958 nsub_0216511C_ov_36: LDRH R1, [R0, #0xC] CMP R1, #0x118 LDREQ R3, [R0, #0x60] LDREQ R2, [R0, #0x45C] ADDEQ R2, R3, R2 STREQ R2, [R0, #0x444] LDR R3, [R0, #0x64] B 0x2165120 @Water, Lava and Poison Water fix when going down: repl_02165024_ov_36: LDR R0, [R4, #8] ANDS R0, R0, #0x80 @Check Liquid direction ADDEQ R1, R1, R2 @If up add R2 to get final position SUBNE R1, R1, R2 @If down subtract R2 to get final position MOV R0, #0x1000 ADD LR, LR, #4 BX LR @Shift up Liquid vertical position on start: repl_02165798_ov_36: MOV R6, R4, LSL #8 MOV R6, R6, LSR #0x1D @Keep only the 3 first bits of nybble 7 MOV R6, R6, LSL #0xD @Multiply by 8192 ADD R12, R12, R6 @Add to Sprite position to get the final vertical position on start STR R12, [R5, #0x64] LDR R6, =0x20CAE0C BX LR

Affects nybbles 9 and 10:
X-Speed:
_from 0 (0x00) to 127 (0x7F)
X-Scrolling:
_leave X-Speed as-is to make Junglekusa scroll to the left (default)
_add +128 (+0x80) to X-Speed to make Junglekusa scroll to the Right

As you can see nybbles 9 and 10 mimic nybbles 11 and 12 (save for the axis).

As for the Y-position on start:
nybbles 7-8 for all 4 Actors:
_leave those nybbles as-is to leave the Y-position on start as-is (default)
_add 32 (0x20) to those nybbles to increase the Y-position on start up to 1/8 block
_add 64 (0x40) to those nybbles to increase the Y-position on start up to 1/4 block
_add 96 (0x60) to those nybbles to increase the Y-position on start up to 3/8 block
_add 128 (0x80) to those nybbles to increase the Y-position on start up to 1/2 block
_add 160 (0xA0) to those nybbles to increase the Y-position on start up to 5/8 block
_add 192 (0xC0) to those nybbles to increase the Y-position on start up to 3/4 block
_add 224 (0xE0) to those nybbles to increase the Y-position on start up to 7/8 block


Works on a NDS.

Posted by MarioKart7z
Overlay 0

I meant arm9, I edited the post.
Posted on 07-21-18, 12:03 pm in devkitPro Error.
Death by cuteness

Karma: 6564
Posts: 598/598
Since: 05-01-13
Didn't think I would post in nsmbhd again but… I got hit with this issue too and I found how to fix it.

At line 69 in the Makefile, you should see
ASFLAGS := -g $(ARCH)


Then replace
$(ARCH)

with
-march=armv5te -mtune=arm946e-s

and BLX instructions will be taken into account again.
Posted on 05-20-13, 04:32 pm in 24 levels (beta 4) New Super Mario Bros For Super Players
Death by cuteness

Karma: 6564
Posts: 14/598
Since: 05-01-13
Small update :
I managed to restore the lost stalagmite bottom bg in slot 36 without breaking the bottom bg in slot 35 (probably was done before ?), so this is how the fg 36 and bg 36 look when mixed together.



I wonder why Nintendo staff (purposedly or not) made it so the slot 36 use the d_2d_I_M_back_chika3_ncg and not the d_2d_I_M_back_chika2_ncg like it supposedly should ?
Death by cuteness

Karma: 6564
Posts: 16/598
Since: 05-01-13
Nice stuff here

Though Nintendo did fail on this one.
Let me explain, there's a way to break completely the HDMA (as in it won't work anymore until the next hardware boot).

How to do ?
_First you should have 2 DSes;
_then you should play MvsL mode;
_you should select at least one course;
_once the course is loaded you can quit and come back to the menu screen;
_now go back in single player mode and select a course which have an animated background;

and you'll see that the background is not animated anymore !
And, depending on the background, it will break the scrolling too, making said background completely static to the camera !
Posted on 08-29-13, 07:56 pm in 24 levels (beta 4) New Super Mario Bros For Super Players (rev. 1 by  MeroMero on 08-29-13, 07:59 pm)
Death by cuteness

Karma: 6564
Posts: 24/598
Since: 05-01-13
A little update
5-1 and 5-B are done, increasing the total of complete levels to 24 out of 80.



A bonus, all major bosses will have their difficulty increased by a fair amount (except Dry Bowser, I couldn't think of something smart that doesn't seem like a recycled idea).
Pages: « 12345678 »