RicBent |
Posted on 10-19-13, 02:21 pm in NSMB Titlescreen Editor (rev. 7 by RicBent on 05-08-18, 06:39 pm)
|
Mariomaster
Karma: 8583 Posts: 354/1681 Since: 06-09-12 |
Hi there
Because many members have trouble with titlescreen editing, I have made a small programm in C#, which helps you with the puzzle. The whole programm is self explaining. Have fun ![]() Download v1.2 PS: Since I'm a newbie to C# there could be some bugs. ^ RicBent from 2017 has to stress that ![]() _________________________ GitHub - Kuribo64 - YouTube |
RicBent |
Posted on 11-13-16, 01:13 pm in wip Goombatlas - The NSMB Worldmap Editor (rev. 7 by RicBent on 02-08-19, 07:36 pm)
|
||||||
Mariomaster
Karma: 8583 Posts: 742/1681 Since: 06-09-12 |
Goombatlas
The NSMB Worldmap Editor ![]() ![]() Yup, you see correctly: Another Worldmap Editor. But this time you can finally do stuff! It allows you to have an infinite amount of nodes and paths as well as map objects like mushroom houses and star coin signs. The map editor allows saving maps in an intermediate xml format that allows easy map sharing and makes reading/writing very easy. Then, if you want to put your created map ingame, you can export it to C source code files as well as an file that tells NSMBe to write pointers to our custom stuff. The project is still work-in-progress, but I decided to post it already, since it might already be usefull for some people. The whole project is already on GitHub, if you want to try it: https://github.com/RicBent/Goombatlas To insert the generated maps you need this modded NSMBe version: https://nsmbhd.net/file/zCWOiSoWysMDssha/NSMBeMod2.tar.gz You also need to place the "worldmap.h" file in the source folder and if it asks you to save a file called "replaces.x" save it in the root of the ASMPatchTemplate. Further planned features are:
Remember that this is still wip and might cause some trouble in it current state, since not everything is tested yet. Have fun! Downloads:
Recreations of original maps: World 1 _________________________ GitHub - Kuribo64 - YouTube |
RicBent |
Posted on 03-09-19, 05:20 pm in Super Mario Bros. Next (rev. 7 by RicBent on 06-01-22, 03:17 pm)
|
Mariomaster
Karma: 8583 Posts: 1444/1681 Since: 06-09-12 |
Features:
Screenshots:
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Videos: The Team: Level Design Graphics naknow Music AM4 Danominator Reverse Engineering & Programming RicBent Testing mariomasters1 naknow Special Thanks shibboleet _________________________ GitHub - Kuribo64 - YouTube |
RicBent |
Posted on 09-18-15, 05:49 pm in suggestion Easy Level Creation
|
Mariomaster
Karma: 8583 Posts: 502/1681 Since: 06-09-12 |
At first how that looks like:
What do you think? If you like that I would add slopes, a setup, which allows you to choose which tiles get used for every tileset and commit everything to NSMBe if Also I got this idea from Zementblock on RVLution from this post. _________________________ GitHub - Kuribo64 - YouTube |
RicBent |
Posted on 06-18-15, 04:59 pm in NSMB Worldmap Editor (rev. 17 by RicBent on 06-22-20, 06:36 pm)
|
Mariomaster
Karma: 8583 Posts: 436/1681 Since: 06-09-12 |
This tool is obsolete! Use Goombatlas instead.Because ![]() Currently it is able to edit all visible nodes and each frame of the path animations. At the moment I am working on a feature to add more frames to each path and change the mode of the animation path But best of all: The editor is open source, and I would be pleased if you would help with this project and contribute to it. Here you can download all releases since v1.3.1: GitHub Releases Visit the Git repository: NSMB WMe on Github Changelog: v1.0: Initial release, containing an editor for the visible nodes. v1.1: Added path animations reader, xml updates v1.2: Added path animations frame editor v1.3: Path animations editor 80% finished v1.3.1: W6 Animation path count fix _________________________ GitHub - Kuribo64 - YouTube |
RicBent |
Posted on 02-10-15, 06:04 pm in nsmb2 NSML - New Super Mario Land (rev. 19 by RicBent on 04-08-18, 07:23 pm)
|
Mariomaster
Karma: 8583 Posts: 410/1681 Since: 06-09-12 |
NSML is on hold for an undefined amount of time. Don't ask how long. It might happen. Or not. You will see.
![]() A NSMB 2 Hack Welcome to my NSML-Thread! This project aims to be a sequel to the 2012 released New Super Mario Bros. 2. Most critics about the game were very bad, because it lacked new ideas and concepts and the fact that most of the graphics and music were recycled from NSMBW. I'd like to make something fresh and innovative from the engine by adding new world themes, graphics and music. Currently I'm thinking about which world theme will be the first I'll work on. If you'd like to take part on that decision, vote here: http://strawpoll.me/7133330 I'll add a few screenshots about already existing levels here soon. Old Post about the initial project for the first NSMB _________________________ GitHub - Kuribo64 - YouTube |
RicBent |
Posted on 08-18-16, 03:16 pm in Actor/Particle/SFX Spawner Sprite (rev. 5 by RicBent on 10-04-18, 04:34 pm)
|
Mariomaster
Karma: 8583 Posts: 623/1681 Since: 06-09-12 |
Actor/Particle/SFX Spawer Sprite:
https://www.youtube.com/watch?v=9Mt0wu0wO_U https://www.youtube.com/watch?v=vMJSXnI7Q-Y This hack allows you to spawn any actor, particle and/or SFX (Soundeffect). Since the regular amount of sprtedata nybbles is far to less to store the neccessary information I had to choose a more hacky way. I append all of our custom data to block 14 of the level header (Sprite Sets). This means that we have to use a modded NSMBe. This hack replaces the defunct actor 22 and will be available by default as sprite 20. These are the available nybbles of the sprite: ![]() If you leave "Spawn Delay" at 0 and set a "Triggering ID", the sprite will spawn the actor once if you activate the event. If the event is disabled and activated again, the actor is spawn once more. The first example in the video uses that. If the "Spawn Delay" is greater than 0 the actor will spawn every X frames while the event is active. If you set the "Triggering ID" to 0 the spawning cycle begins imediatly and lasts forever. That can be seen in the Bob-Omb example in the video. "Spawn one time cycle later" is only relevant if "Spawn Delay" is set. If it is enabled and the event get's enabled it takes the specified frame count until the actor spawns the first time. The fireworks example uses that since the particles don't appear right after entering the level. If you want to disable spawning an actor/particles/sfx you can set that by enablig the respective checkbox. As you can see there is another field: "Settings ID". These can be set by opening the "Actor Spawner Settings" dialog in the modded NSMBe. In the toolbar click on the yellow block. You will see this dialog: ![]() ![]() Just select what you want to spawn and remember the ID on the left side and put that into your sprite 20 as "Settings ID". Remember that the selected actor has to be enabled in the sprite sets and the specified sfx has to be available in the used sound set. https://nsmbhd.net/file/VJlLIYigo02gRRjE/ActorSpawner.tar.gz In the compressed folder you find the modded NSMBe and the necessary files for the ASM patch template. Thanks to Thanks to Please post any unknown particle/sfx ids you find here. Have fun! _________________________ GitHub - Kuribo64 - YouTube |
RicBent |
Posted on 04-25-18, 08:09 am in bitch
|
Mariomaster
Karma: 8583 Posts: 1183/1681 Since: 06-09-12 |
RicBent |
Posted on 12-09-12, 01:16 pm in List of Bitmaps wich are using the jyotyu palette (rev. 4 by RicBent on 03-15-20, 09:18 pm)
|
||||||||||||||||||||||||||||||||||||||||||
Mariomaster
Karma: 8583 Posts: 186/1681 Since: 06-09-12 |
I am editing the jyotyu-Palletes and I'd like to know all bitmaps wich are using them.
A short list wich I found:
Are there some bitmaps missing? Please help me and post the missing ones! _________________________ GitHub - Kuribo64 - YouTube |
RicBent |
Posted on 01-05-16, 09:04 am in Create a sunset effect
|
Mariomaster
Karma: 8583 Posts: 524/1681 Since: 06-09-12 |
Yes, this is the first part of all the NSML stuff.
At first two screenshots showing what you will get: ![]() ![]() 1.) Download this pack: http://www.mediafire.com/download/hy9uzslo6w5v8gy/NSML+Sunset+Effect.zip 2.) Replace BG_ncl/d_2d_A_J_jyutyo_R_ncl.bin and obj/I_enemy_R_ncl.bin. You can also replace an other Jyutyo color if you want, but we'll go with red in this case. 3.) Replace polygon_unit/evt_tclod1_a.nsbtx with the one in the pack. 4.) Now go to any level. It has to use an entirely black palette (an example one is also in the pack // Snow (Night).nmt). 5.) The most important part: Place 8 times sprite 324 with the spritedata "00 00 00 B0 00 00". How it works: 2d "things" like tilesets bgs, goombas, etc. can only be affected by one FG Effect. So we place a lot of them in a level with an high opacity, so the BG is only slightly darker while all 3d stuff is black. 6.) Now the tricky part: As you might know the Jyutyo colors are bound to the BG by an table in an overlay. Luckyly there is already a tutorial for that: http://nsmbhd.net/thread/22-changing-which-tileset-0-palette-is-used-for-each-bg-tutorial/ Just set some BG to red. 7.) Select the BG you modified. 8.) Done ![]() The example level in the pack requires an BG in slot 67 which is set to "red" in the overlay. It uses the "Snow (Night)" tileset. Use this wherever you want. Credit would be greatly apprechiated. _________________________ GitHub - Kuribo64 - YouTube |
RicBent |
Posted on 10-26-17, 04:35 pm in ADMINS/MODERATORS ARE STUPID!
|
Mariomaster
Karma: 8583 Posts: 1024/1681 Since: 06-09-12 |
RicBent |
Posted on 06-22-16, 08:57 pm in tileset help
|
Mariomaster
Karma: 8583 Posts: 570/1681 Since: 06-09-12 |
Are you serious
I remember how we all helped each other, also people who were not as experienced as the rest. Also people +1-ing posts like yours should really ask themselves: Were I better when I came here? How would've I reacted if people answered junk like this to my questions? This thread shows exacly to what we have come. Poor. There is nothing wrong at all with this question. Even tho it had a horrible quality and a lot things are missing I'll give you the first tileset I ever made, since I couldn't find the newer version I made: https://www.dropbox.com/s/hio5rhnj2yv5f56/airship.nmt?dl=0 _________________________ GitHub - Kuribo64 - YouTube |
RicBent |
Posted on 08-15-17, 03:58 pm in Quick Testing (rev. 2 by RicBent on 08-15-17, 04:03 pm)
|
Mariomaster
Karma: 8583 Posts: 952/1681 Since: 06-09-12 |
If you are working on a long level or an advanced asm hack it might be annoying to go through the main menu and the worldmap every single time you want to test something.
Let's bring that to an end! This hack instantly loads any level you want! You can also specify to load a different level if a specific button is pressed (Look at the "Conditional Overwrites" section of the code). If you press Start while the game boots or you die the hack will disable itself and you can test whatever else. Be sure to remove "nonintendo.cpp" from your patch template as it might clash with this hack. #include "nsmb.h" #include "keys.h" void QuickLoad() { u32 *lives = (u32*) (0x0208B364); *lives = 99; // Default (1-1, Area 1, Entrance 0) u32 world = 0; u32 level = 0; u32 area = 0; s8 entranceId = 0xFF; // 0xFF = Start Entrance set in Level u32* keysDw = (u32*)(0x02087650); // Conditional Overwrites if (*keysDw & KEY_A) { // If A is pressed go to 8-2, Area 1, Entrance 1 world = 7; level = 1; area = 0; entranceId = 1; } else if (*keysDw & KEY_X) { // If X is pressed go to 1-3, Area 1, Entrance 0 level = 2; } loadLevel(0xD, false, world, level, area, 0, 1, 0, 0, true, entranceId, 1); } bool kill = false; // Instantly load MainMenu void hook_0200089c() { (*(vu32*)0x023FFC20) = 0x100; } // MainMenu -> LoadLevel void hook_020D339C_ov_09() { if (kill) return; u32* keysDw = (u32*)(0x02087650); if (*keysDw & KEY_START) { kill = true; return; } loadSave(0, (void*)(0x02088BDC)); QuickLoad(); } // Worldmap -> LoadLevel void hook_020CF108_ov_08() { if (kill) return; u32* keysDw = (u32*)(0x02087650); if (!(*keysDw & KEY_START)) QuickLoad(); else kill = true; } I know that this is very hacky, but it's only for testing anyways ![]() _________________________ GitHub - Kuribo64 - YouTube |
RicBent |
Posted on 03-09-19, 05:59 pm in New Super Mario Bros. 2!
|
Mariomaster
Karma: 8583 Posts: 1447/1681 Since: 06-09-12 |
Yup, for the first time we add another game to the board: New Super Mario Bros. 2!
The NSMB2 section will have the same forums as NSMBDS: General, Code Mods, Resources, Tutorials and Hacks. In the next few days I will add a few tutorials that get you started with level editing and eventually also code modding. So let's go and transform the worst NSMB game into the best one! _________________________ GitHub - Kuribo64 - YouTube |
RicBent |
Posted on 08-06-15, 05:14 pm in Tileset Animations Hack (rev. 13 by ImageBot on 11-21-16, 03:16 am)
|
Mariomaster
Karma: 8583 Posts: 486/1681 Since: 06-09-12 |
Warning: You shouldn't try this "tutorial" if you don't have some basic ASM hacking/C++ knowledge. This is also very basic and only explains the important parts to make it work. If you have any questions feel free to ask
![]() First of all the code: #include "nsmb.h"
int frame = 1;
u16* charPtr = NULL;
u16* animationFile = NULL;
int *tileset1ID = (int*)(0x020CACBC);
void copy8Tile(int dn, int sn)
{
u16* destPtr = charPtr + dn * (8 * 8 / 2) + (256 * 48 / 2);
u16* srcPtr = animationFile + sn * (8 * 8 / 2);
for(int i = 0; i < 8*8/2; i++)
destPtr[i] = srcPtr[i];
}
void copyTile(int dx, int dy, int sx, int sy)
{
sy += sx / 4;
sx %= 4;
copy8Tile(dx*2 + dy*64, sx*2+sy*32);
copy8Tile(dx*2+1 + dy*64, sx*2+1+sy*32);
copy8Tile(dx*2 + dy*64+32, sx*2+sy*16+8);
copy8Tile(dx*2+1 + dy*64+32, sx*2+1+sy*16+8);
}
void hook_020b8370()
{
frame++;
if(frame == 4*6) frame = 0;
charPtr = G2_GetBG2CharPtr();
if (*tileset1ID == 67) copyTile(0, 0, frame%4, 0);
}
void hook_020AE318()
{
animationFile = (u16*) allocFromCacheTable(28672);
loadFileByExtId_LZ_Dest(179 - 0x83, animationFile); //ExtID 179 -> wrecking_crew.narc
} And now how to use it: 1. Create a LZ compressed ncg that is 64 wide and as many blocks heigh as the count of your wished animated tiles, that contains 4 frames of your animation from left to right. This tool helps you with the creation. Import the generated .bin and LZ compress it. The image should look like this: ![]() 2. Import it into ARCHIVE/wrecking_crew.narc 3. Get the size of the file (in decompressed form!) 4. Go to line 39. You'll see "allocFromCacheTable(28672)". In the braces write the size from step 3. 5. Go to line 34. You'll see "if (*tileset1ID == 67) copyTile(0, 0, frame%4, 0);" That 67 is the tileset ID that'll get animated. Of course you can change it. Now the interesting part: That 0, 0 in the braces are the tile coordinates in your tileset gfx. Top-left tile is 0, 0. ![]() So the waterfall tile is 0, 0. That last 0 in the braces is the row of the animated tile in the animations ncg. Copy and paste that line as often as you wish to. 6. Make and insert the code Of course you can play with the code and do stuff like more frames, animations for different tilesets and much more with it. If someone cares I'll tell you how all this works and what each line does ![]() Of course all credit goes to Edit: Of course you can do Jyotyu animations, too. Just remove that "(256 * 48 / 2)" in line 11. Edit: You can hook 0x020B68CC if yöou want the animations to update more often. (0x020B68CC has something to du with the coin animations) _________________________ GitHub - Kuribo64 - YouTube |
RicBent |
Posted on 06-22-16, 09:22 pm in tileset help
|
Mariomaster
Karma: 8583 Posts: 571/1681 Since: 06-09-12 |
Posted by Kankerkoekjesdief
We just don't take the retarded questions Then please explain me what's wrong with this question. _________________________ GitHub - Kuribo64 - YouTube |
RicBent |
Posted on 06-23-16, 01:01 pm in Mariomaster's custom Tilesets (rev. 3 by ImageBot on 11-21-16, 03:21 am)
|
Mariomaster
Karma: 8583 Posts: 572/1681 Since: 06-09-12 |
Since I kinda moved to NSMB2 hacking I will release a few tilesets I made. They might be unfinished or have some other oddites, but it's kinda too bad to let them just sit unused on my drives.
So use them anywhere in your projects where you want. Credit is apprechiated. Have fun ![]() ![]() woolybeach.nmt ![]() cookieiceland.nmt _________________________ GitHub - Kuribo64 - YouTube |
RicBent |
Posted on 06-27-16, 11:14 pm in Stompable Blocks
|
Mariomaster
Karma: 8583 Posts: 578/1681 Since: 06-09-12 |
I made a small hack some time ago, which allows you to have stompable big boxes. Here the code: #include "nsmb.h"
void changeTileAny(void* ptr, int x, int y, int t)
{
//changeTile uses values from a table instead of actual map16 tile numbers.
//With this hack we can set any tile numbers.
//T is a Map16 tile number.
setTileTable[0] = t;
changeTile(ptr, x, y, 0);
setTileTable[0] = 0;
}
void hook_020FD1D4(MarioActor *athis)
{
// Check if Player is Groundpounding
if ((athis->groundPoundRelated77E & 0x2) != 0)
{
u32 xPos = (athis->xPos>>12) / 16;
u32 yPos = ((-athis->yPos)>>12) / 16;
int tb = getTileBehaviorAtPos2(xPos*16, yPos*16);
int tbN = (tb & 0xF0) >> 4;
// Checks if Power-Up state isn't Mini or small Mario
if (tbN == 0xE && (athis->marioPowerupState == 0 || athis->marioPowerupState == 4))
return;
if (tbN == 0xF || tbN == 0xE)
{
// Groundpounded on Block with correct behavior
u32 sx = xPos;
u32 dx = xPos;
u32 sy = yPos;
u32 dy = yPos;
// Get width and height of block
for (int i=-1;; i--)
{
int ctbN = (getTileBehaviorAtPos2((xPos+i)*16, yPos*16) & 0xF0) >> 4;
if (ctbN == 0xF || ctbN == 0xE) sx--;
else break;
}
for (int i=1;; i++)
{
int ctbN = (getTileBehaviorAtPos2((xPos+i)*16, yPos*16) & 0xF0) >> 4;
if (ctbN == 0xF || ctbN == 0xE) dx++;
else break;
}
for (int i=1;; i++)
{
int ctbN = (getTileBehaviorAtPos2(xPos*16, (yPos+i)*16) & 0xF0) >> 4;
if (ctbN == 0xF || ctbN == 0xE) dy++;
else break;
}
// Destroy the block
for (int x=sx; x<=dx; x++)
{
for (int y=sy; y<=dy; y++)
changeTileAny(ptrToLevelActor, x*16, y*16, 0);
}
}
}
} Add this to symbols.x: ptrToLevelActor = 0x020CAD40;
changeTile = 0x020AF30C;
setTileTable = 0x020C7EAC; Replace the MarioActor struct in nsmb.h with this one: The new tilebehaviors, which are now available are: FY XX XX XX: Stompable box, even stompable with mini or small Mario EY XX XX XX: Stompable box, not stompable with mini or small Mario XX can be anything. So you can even make it icy or smth. For working correctly, the blocks should be at least solid on top. Y will be the particle ID that will be spawned when I update the hack (thanks to Also not all blocks in one "box" have to share the same behavior. The only thing, that matters is, that the first nybble is 0xE or 0xF. I used some code from _________________________ GitHub - Kuribo64 - YouTube |
RicBent |
Posted on 08-12-16, 09:31 pm in Misc. patches thread (rev. 5 by ImageBot on 11-21-16, 03:22 am)
|
Mariomaster
Karma: 8583 Posts: 614/1681 Since: 06-09-12 |
Wobble Rock Remodel Code:
repl_02147BCC_ov_30:
LDRB R0, [R4, #0x8]
CMP R0, #0x0
LDREQ R0, =0x4B2
@Copy from here
CMP R0, #desired nybble value to use in NSMBe
LDREQ R0, =file id of model - 131
@...to here and paste before the "BX LR" to add more models
BX LR
nsub_02147BFC_ov_30:
STMFD SP!, {LR}
SUB SP, SP, #4
LDR R0, =0x4B2
MOV R1, #0
BL loadFileByExtId_3dModel
@Copy from here
LDR R0, =file id of model - 131
MOV R1, #0
BL loadFileByExtId_3dModel
@...to here and paste before the "MOV R0, #1" to add more models
MOV R0, #1
ADD SP, SP, #4
LDMFD SP!, {PC} ![]() Works on nybbles 11-12. Red Spinning Platforms Remodel Code: Remodel code for the Square Spinner: repl_02187344_ov_64:
LDRB R0, [R4, #0x8]
CMP R0, #0x0
LDREQ R0, =0x5D7
@Copy from here
CMP R0, #desired nybble value to use in NSMBe
LDREQ R0, =file id of model - 131
@...to here and paste before the "BX LR" to add more models
BX LR
nsub_0218737C_ov_64:
STMFD SP!, {LR}
SUB SP, SP, #4
LDR R0, =0x5D7
MOV R1, #0
BL loadFileByExtId_3dModel
@Copy from here
LDR R0, =file id of model - 131
MOV R1, #0
BL loadFileByExtId_3dModel
@...to here and paste before the "MOV R0, #1" to add more models
MOV R0, #1
ADD SP, SP, #4
LDMFD SP!, {PC} To remodel the Triangle Spinner use: repl_02187028_ov_64:
nsub_02187060_ov_64: To remodel the Rectangle Spinner use: repl_02186CF8_ov_64:
nsub_02186D38_ov_64: ![]() Works on nybbles 11-12. _________________________ GitHub - Kuribo64 - YouTube |
RicBent | |
Mariomaster
Karma: 8583 Posts: 1174/1681 Since: 06-09-12 |